@harbour-enterprises/superdoc 0.8.10 → 0.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/chunks/{super-editor.es-CnpejCPC.js → super-editor.es-DIeHC3Si.js} +484 -168
  2. package/dist/chunks/super-editor.es-DIeHC3Si.js.map +1 -0
  3. package/dist/super-editor/chunks/{converter-B5SRaBp5.js → converter-CVSaF15S.js} +28 -27
  4. package/dist/super-editor/chunks/converter-CVSaF15S.js.map +1 -0
  5. package/dist/super-editor/chunks/{docx-zipper-fdMcchlI.js → docx-zipper-BHwY_rz6.js} +2 -2
  6. package/dist/super-editor/chunks/{docx-zipper-fdMcchlI.js.map → docx-zipper-BHwY_rz6.js.map} +1 -1
  7. package/dist/super-editor/chunks/{editor-nlt5JeOJ.js → editor-H6Apbtdi.js} +481 -165
  8. package/dist/super-editor/chunks/editor-H6Apbtdi.js.map +1 -0
  9. package/dist/super-editor/chunks/{toolbar-COfngBDY.js → toolbar-D9ELD8Tt.js} +3 -3
  10. package/dist/super-editor/chunks/{toolbar-COfngBDY.js.map → toolbar-D9ELD8Tt.js.map} +1 -1
  11. package/dist/super-editor/converter.es.js +2 -2
  12. package/dist/super-editor/core/Editor.d.ts +1 -0
  13. package/dist/super-editor/core/Editor.d.ts.map +1 -1
  14. package/dist/super-editor/core/ExtensionService.d.ts.map +1 -1
  15. package/dist/super-editor/core/InputRule.d.ts +11 -0
  16. package/dist/super-editor/core/InputRule.d.ts.map +1 -0
  17. package/dist/super-editor/core/commands/index.d.ts +1 -0
  18. package/dist/super-editor/core/commands/undoInputRule.d.ts +5 -0
  19. package/dist/super-editor/core/commands/undoInputRule.d.ts.map +1 -0
  20. package/dist/super-editor/core/extensions/keymap.d.ts.map +1 -1
  21. package/dist/super-editor/core/helpers/getHTMLFromFragment.d.ts +2 -0
  22. package/dist/super-editor/core/helpers/getHTMLFromFragment.d.ts.map +1 -0
  23. package/dist/super-editor/core/helpers/getTextContentFromNodes.d.ts +2 -0
  24. package/dist/super-editor/core/helpers/getTextContentFromNodes.d.ts.map +1 -0
  25. package/dist/super-editor/core/helpers/isExtentionRulesEnabled.d.ts +2 -0
  26. package/dist/super-editor/core/helpers/isExtentionRulesEnabled.d.ts.map +1 -0
  27. package/dist/super-editor/core/inputRules/wrappingInputRule.d.ts +9 -0
  28. package/dist/super-editor/core/inputRules/wrappingInputRule.d.ts.map +1 -0
  29. package/dist/super-editor/core/utilities/isRegExp.d.ts +2 -0
  30. package/dist/super-editor/core/utilities/isRegExp.d.ts.map +1 -0
  31. package/dist/super-editor/core/utilities/objectIncludes.d.ts.map +1 -1
  32. package/dist/super-editor/docx-zipper.es.js +2 -2
  33. package/dist/super-editor/editor.es.js +3 -3
  34. package/dist/super-editor/extensions/bullet-list/bullet-list.d.ts.map +1 -1
  35. package/dist/super-editor/extensions/ordered-list/ordered-list.d.ts.map +1 -1
  36. package/dist/super-editor/file-zipper.es.js +1 -1
  37. package/dist/super-editor/super-editor.es.js +7 -7
  38. package/dist/super-editor/toolbar.es.js +2 -2
  39. package/dist/super-editor.es.js +1 -1
  40. package/dist/superdoc.es.js +3 -3
  41. package/dist/superdoc.umd.js +495 -179
  42. package/dist/superdoc.umd.js.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunks/super-editor.es-CnpejCPC.js.map +0 -1
  45. package/dist/super-editor/chunks/converter-B5SRaBp5.js.map +0 -1
  46. package/dist/super-editor/chunks/editor-nlt5JeOJ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter-CVSaF15S.js","sources":["../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js","../../../../node_modules/events/events.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/vite-plugin-node-polyfills/shims/process/dist/index.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../node_modules/has-symbols/shams.js","../../../../node_modules/has-tostringtag/shams.js","../../../../node_modules/es-object-atoms/index.js","../../../../node_modules/es-errors/index.js","../../../../node_modules/es-errors/eval.js","../../../../node_modules/es-errors/range.js","../../../../node_modules/es-errors/ref.js","../../../../node_modules/es-errors/syntax.js","../../../../node_modules/es-errors/type.js","../../../../node_modules/es-errors/uri.js","../../../../node_modules/math-intrinsics/abs.js","../../../../node_modules/math-intrinsics/floor.js","../../../../node_modules/math-intrinsics/max.js","../../../../node_modules/math-intrinsics/min.js","../../../../node_modules/math-intrinsics/pow.js","../../../../node_modules/math-intrinsics/round.js","../../../../node_modules/math-intrinsics/isNaN.js","../../../../node_modules/math-intrinsics/sign.js","../../../../node_modules/gopd/gOPD.js","../../../../node_modules/gopd/index.js","../../../../node_modules/es-define-property/index.js","../../../../node_modules/has-symbols/index.js","../../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../../node_modules/function-bind/implementation.js","../../../../node_modules/function-bind/index.js","../../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../../node_modules/call-bind-apply-helpers/index.js","../../../../node_modules/dunder-proto/get.js","../../../../node_modules/get-proto/index.js","../../../../node_modules/hasown/index.js","../../../../node_modules/get-intrinsic/index.js","../../../../node_modules/call-bound/index.js","../../../../node_modules/is-arguments/index.js","../../../../node_modules/is-regex/index.js","../../../../node_modules/safe-regex-test/index.js","../../../../node_modules/is-generator-function/index.js","../../../../node_modules/is-callable/index.js","../../../../node_modules/for-each/index.js","../../../../node_modules/possible-typed-array-names/index.js","../../../../node_modules/available-typed-arrays/index.js","../../../../node_modules/define-data-property/index.js","../../../../node_modules/has-property-descriptors/index.js","../../../../node_modules/set-function-length/index.js","../../../../node_modules/call-bind-apply-helpers/applyBind.js","../../../../node_modules/call-bind/index.js","../../../../node_modules/which-typed-array/index.js","../../../../node_modules/is-typed-array/index.js","../../../../node_modules/util/support/types.js","../../../../node_modules/util/support/isBufferBrowser.js","../../../../node_modules/util/util.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","../../../../node_modules/util-deprecate/browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../../../../node_modules/safe-buffer/index.js","../../../../node_modules/string_decoder/lib/string_decoder.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../../../../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../../node_modules/stream-browserify/index.js","../../../../node_modules/sax/lib/sax.js","../../../../node_modules/xml-js/lib/array-helper.js","../../../../node_modules/xml-js/lib/options-helper.js","../../../../node_modules/xml-js/lib/xml2js.js","../../../../node_modules/xml-js/lib/xml2json.js","../../../../node_modules/xml-js/lib/js2xml.js","../../../../node_modules/xml-js/lib/json2xml.js","../../../../node_modules/xml-js/lib/index.js","../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../node_modules/uuid/dist/esm-browser/regex.js","../../../../node_modules/uuid/dist/esm-browser/validate.js","../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../node_modules/uuid/dist/esm-browser/v4.js","../../../../node_modules/he/he.js","../../../../node_modules/orderedmap/dist/index.js","../../../../node_modules/prosemirror-model/dist/index.js","../../../../node_modules/prosemirror-transform/dist/index.js","../../../../node_modules/prosemirror-state/dist/index.js","../../../../shared/common/key-transform.js","../../../../shared/common/event-types.js","../../../../shared/common/helpers/v-click-outside.js","../../src/core/super-converter/helpers.js","../../src/core/helpers/generateDocxRandomId.js","../../src/core/super-converter/exporter-docx-defs.js","../../src/extensions/track-changes/constants.js","../../src/core/utilities/carbonCopy.js","../../src/core/super-converter/v2/exporter/commentsExporter.js","../../src/core/super-converter/exporter.js","../../src/core/super-converter/v2/docxHelper.js","../../src/core/super-converter/v2/importer/tableImporter.js","../../src/core/super-converter/v2/importer/imageImporter.js","../../src/core/super-converter/v2/importer/markImporter.js","../../src/core/super-converter/v2/importer/importerHelpers.js","../../src/core/super-converter/v2/importer/trackChangesImporter.js","../../src/core/super-converter/v2/importer/hyperlinkImporter.js","../../src/core/super-converter/v2/importer/runNodeImporter.js","../../src/core/super-converter/v2/importer/textNodeImporter.js","../../src/core/utilities/isRegExp.js","../../src/core/utilities/objectIncludes.js","../../src/core/super-converter/v2/importer/mergeTextNodes.js","../../src/core/helpers/ErrorWithDetails.js","../../src/core/super-converter/v2/importer/listImporter.js","../../src/core/super-converter/v2/importer/paragraphNodeImporter.js","../../src/core/super-converter/v2/importer/docPartGalleryImporter.js","../../src/core/super-converter/v2/importer/docPartObjImporter.js","../../src/core/super-converter/v2/importer/annotationImporter.js","../../src/core/super-converter/v2/importer/standardNodeImporter.js","../../src/core/super-converter/v2/importer/lineBreakImporter.js","../../src/core/super-converter/v2/importer/bookmarkNodeImporter.js","../../src/core/super-converter/v2/importer/tabImporter.js","../../src/core/super-converter/v2/importer/documentCommentsImporter.js","../../src/core/super-converter/v2/importer/docxImporter.js","../../src/core/super-converter/SuperConverter.js"],"sourcesContent":["var buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4);\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen;\n\n var i;\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = (tmp >> 16) & 0xFF;\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n );\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n );\n }\n\n return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t const arr = new GlobalUint8Array(1);\n\t const proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t const buf = new GlobalUint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (GlobalArrayBuffer.isView(value)) {\n\t return fromArrayView(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, GlobalArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t (isInstance(value, GlobalSharedArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t const valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t const b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpreted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t const length = byteLength(string, encoding) | 0;\n\t let buf = createBuffer(length);\n\n\t const actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t const buf = createBuffer(length);\n\t for (let i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t if (isInstance(arrayView, GlobalUint8Array)) {\n\t const copy = new GlobalUint8Array(arrayView);\n\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t }\n\t return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t let buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new GlobalUint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new GlobalUint8Array(array, byteOffset);\n\t } else {\n\t buf = new GlobalUint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t const len = checked(obj.length) | 0;\n\t const buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t let x = a.length;\n\t let y = b.length;\n\n\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t let i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t const buffer = Buffer.allocUnsafe(length);\n\t let pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t let buf = list[i];\n\t if (isInstance(buf, GlobalUint8Array)) {\n\t if (pos + buf.length > buffer.length) {\n\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t buf.copy(buffer, pos);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t buffer,\n\t buf,\n\t pos\n\t );\n\t }\n\t } else if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t } else {\n\t buf.copy(buffer, pos);\n\t }\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t const len = string.length;\n\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t let loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t const i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t const len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (let i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t const len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (let i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t const len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (let i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t const length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t let str = '';\n\t const max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return '<Buffer ' + str + '>'\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, GlobalUint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t let x = thisEnd - thisStart;\n\t let y = end - start;\n\t const len = Math.min(x, y);\n\n\t const thisCopy = this.slice(thisStart, thisEnd);\n\t const targetCopy = target.slice(start, end);\n\n\t for (let i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t let indexSize = 1;\n\t let arrLength = arr.length;\n\t let valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t let i;\n\t if (dir) {\n\t let foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t let found = true;\n\t for (let j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t const remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t const strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t const remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t const res = [];\n\n\t let i = start;\n\t while (i < end) {\n\t const firstByte = buf[i];\n\t let codePoint = null;\n\t let bytesPerSequence = (firstByte > 0xEF)\n\t ? 4\n\t : (firstByte > 0xDF)\n\t ? 3\n\t : (firstByte > 0xBF)\n\t ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t const len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t let res = '';\n\t let i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t const len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t let out = '';\n\t for (let i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t const bytes = buf.slice(start, end);\n\t let res = '';\n\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t const len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t const newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t let val = this[offset + --byteLength];\n\t let mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const lo = first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24;\n\n\t const hi = this[++offset] +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t last * 2 ** 24;\n\n\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const hi = first * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t const lo = this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last;\n\n\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let i = byteLength;\n\t let mul = 1;\n\t let val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = this[offset + 4] +\n\t this[offset + 5] * 2 ** 8 +\n\t this[offset + 6] * 2 ** 16 +\n\t (last << 24); // Overflow\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = (first << 24) + // Overflow\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let mul = 1;\n\t let i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset + 7] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 6] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 5] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 4] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset + 3] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 2] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 1] = hi;\n\t hi = hi >> 8;\n\t buf[offset] = hi;\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = 0;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t const len = end - start;\n\n\t if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t const code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t let i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t const bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t const len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t errors[sym] = class NodeError extends Base {\n\t constructor () {\n\t super();\n\n\t Object.defineProperty(this, 'message', {\n\t value: getMessage.apply(this, arguments),\n\t writable: true,\n\t configurable: true\n\t });\n\n\t // Add the error code to the name to include it in the stack trace.\n\t this.name = `${this.name} [${sym}]`;\n\t // Access the stack to generate the error message including the error code\n\t // from the name.\n\t this.stack; // eslint-disable-line no-unused-expressions\n\t // Reset the name to the actual name.\n\t delete this.name;\n\t }\n\n\t get code () {\n\t return sym\n\t }\n\n\t set code (value) {\n\t Object.defineProperty(this, 'code', {\n\t configurable: true,\n\t enumerable: true,\n\t value,\n\t writable: true\n\t });\n\t }\n\n\t toString () {\n\t return `${this.name} [${sym}]: ${this.message}`\n\t }\n\t };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t function (name) {\n\t if (name) {\n\t return `${name} is outside of buffer bounds`\n\t }\n\n\t return 'Attempt to access memory outside buffer bounds'\n\t }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t function (name, actual) {\n\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t function (str, range, input) {\n\t let msg = `The value of \"${str}\" is out of range.`;\n\t let received = input;\n\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t received = addNumericalSeparator(String(input));\n\t } else if (typeof input === 'bigint') {\n\t received = String(input);\n\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t received = addNumericalSeparator(received);\n\t }\n\t received += 'n';\n\t }\n\t msg += ` It must be ${range}. Received ${received}`;\n\t return msg\n\t }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t let res = '';\n\t let i = val.length;\n\t const start = val[0] === '-' ? 1 : 0;\n\t for (; i >= start + 4; i -= 3) {\n\t res = `_${val.slice(i - 3, i)}${res}`;\n\t }\n\t return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t validateNumber(offset, 'offset');\n\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t boundsError(offset, buf.length - (byteLength + 1));\n\t }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t if (value > max || value < min) {\n\t const n = typeof min === 'bigint' ? 'n' : '';\n\t let range;\n\t if (byteLength > 3) {\n\t if (min === 0 || min === BigInt(0)) {\n\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t } else {\n\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t }\n\t } else {\n\t range = `>= ${min}${n} and <= ${max}${n}`;\n\t }\n\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t }\n\t checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t if (typeof value !== 'number') {\n\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t if (Math.floor(value) !== value) {\n\t validateNumber(value, type);\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t }\n\n\t if (length < 0) {\n\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t }\n\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t `>= ${type ? 1 : 0} and <= ${length}`,\n\t value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t let codePoint;\n\t const length = string.length;\n\t let leadSurrogate = null;\n\t const bytes = [];\n\n\t for (let i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t let c, hi, lo;\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t const alphabet = '0123456789abcdef';\n\t const table = new Array(256);\n\t for (let i = 0; i < 16; ++i) {\n\t const i16 = i * 16;\n\t for (let j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nconst Blob = buffer.Blob;\nconst BlobOptions = buffer.BlobOptions;\nconst Buffer$1 = buffer.Buffer;\nconst File = buffer.File;\nconst FileOptions = buffer.FileOptions;\nconst INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nconst SlowBuffer = buffer.SlowBuffer;\nconst TranscodeEncoding = buffer.TranscodeEncoding;\nconst atob = buffer.atob;\nconst btoa = buffer.btoa;\nconst constants = buffer.constants;\nconst isAscii = buffer.isAscii;\nconst isUtf8 = buffer.isUtf8;\nconst kMaxLength = buffer.kMaxLength;\nconst kStringMaxLength = buffer.kStringMaxLength;\nconst resolveObjectURL = buffer.resolveObjectURL;\nconst transcode = buffer.transcode;\nexport { Blob, BlobOptions, Buffer$1 as Buffer, File, FileOptions, INSPECT_MAX_BYTES, SlowBuffer, TranscodeEncoding, atob, btoa, constants, Buffer as default, isAscii, isUtf8, kMaxLength, kStringMaxLength, resolveObjectURL, transcode };\n//# sourceMappingURL=index.js.map\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar browser = {exports: {}};\n\n// shim for using process in browser\nvar process = browser.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ());\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] };\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\nvar browserExports = browser.exports;\nconst process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports);\n\nexport { process$1 as default, process$1 as process };\n//# sourceMappingURL=index.js.map\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\n/** @type {undefined | false | null | GeneratorFunctionConstructor} */\nvar GeneratorFunction;\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t? /** @type {GeneratorFunctionConstructor} */ (getProto(generatorFunc))\n\t\t\t: false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n",";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // &amp and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++ // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\"\n }\n\n sax.ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\",\n 'AElig': 198,\n 'Aacute': 193,\n 'Acirc': 194,\n 'Agrave': 192,\n 'Aring': 197,\n 'Atilde': 195,\n 'Auml': 196,\n 'Ccedil': 199,\n 'ETH': 208,\n 'Eacute': 201,\n 'Ecirc': 202,\n 'Egrave': 200,\n 'Euml': 203,\n 'Iacute': 205,\n 'Icirc': 206,\n 'Igrave': 204,\n 'Iuml': 207,\n 'Ntilde': 209,\n 'Oacute': 211,\n 'Ocirc': 212,\n 'Ograve': 210,\n 'Oslash': 216,\n 'Otilde': 213,\n 'Ouml': 214,\n 'THORN': 222,\n 'Uacute': 218,\n 'Ucirc': 219,\n 'Ugrave': 217,\n 'Uuml': 220,\n 'Yacute': 221,\n 'aacute': 225,\n 'acirc': 226,\n 'aelig': 230,\n 'agrave': 224,\n 'aring': 229,\n 'atilde': 227,\n 'auml': 228,\n 'ccedil': 231,\n 'eacute': 233,\n 'ecirc': 234,\n 'egrave': 232,\n 'eth': 240,\n 'euml': 235,\n 'iacute': 237,\n 'icirc': 238,\n 'igrave': 236,\n 'iuml': 239,\n 'ntilde': 241,\n 'oacute': 243,\n 'ocirc': 244,\n 'ograve': 242,\n 'oslash': 248,\n 'otilde': 245,\n 'ouml': 246,\n 'szlig': 223,\n 'thorn': 254,\n 'uacute': 250,\n 'ucirc': 251,\n 'ugrave': 249,\n 'uuml': 252,\n 'yacute': 253,\n 'yuml': 255,\n 'copy': 169,\n 'reg': 174,\n 'nbsp': 160,\n 'iexcl': 161,\n 'cent': 162,\n 'pound': 163,\n 'curren': 164,\n 'yen': 165,\n 'brvbar': 166,\n 'sect': 167,\n 'uml': 168,\n 'ordf': 170,\n 'laquo': 171,\n 'not': 172,\n 'shy': 173,\n 'macr': 175,\n 'deg': 176,\n 'plusmn': 177,\n 'sup1': 185,\n 'sup2': 178,\n 'sup3': 179,\n 'acute': 180,\n 'micro': 181,\n 'para': 182,\n 'middot': 183,\n 'cedil': 184,\n 'ordm': 186,\n 'raquo': 187,\n 'frac14': 188,\n 'frac12': 189,\n 'frac34': 190,\n 'iquest': 191,\n 'times': 215,\n 'divide': 247,\n 'OElig': 338,\n 'oelig': 339,\n 'Scaron': 352,\n 'scaron': 353,\n 'Yuml': 376,\n 'fnof': 402,\n 'circ': 710,\n 'tilde': 732,\n 'Alpha': 913,\n 'Beta': 914,\n 'Gamma': 915,\n 'Delta': 916,\n 'Epsilon': 917,\n 'Zeta': 918,\n 'Eta': 919,\n 'Theta': 920,\n 'Iota': 921,\n 'Kappa': 922,\n 'Lambda': 923,\n 'Mu': 924,\n 'Nu': 925,\n 'Xi': 926,\n 'Omicron': 927,\n 'Pi': 928,\n 'Rho': 929,\n 'Sigma': 931,\n 'Tau': 932,\n 'Upsilon': 933,\n 'Phi': 934,\n 'Chi': 935,\n 'Psi': 936,\n 'Omega': 937,\n 'alpha': 945,\n 'beta': 946,\n 'gamma': 947,\n 'delta': 948,\n 'epsilon': 949,\n 'zeta': 950,\n 'eta': 951,\n 'theta': 952,\n 'iota': 953,\n 'kappa': 954,\n 'lambda': 955,\n 'mu': 956,\n 'nu': 957,\n 'xi': 958,\n 'omicron': 959,\n 'pi': 960,\n 'rho': 961,\n 'sigmaf': 962,\n 'sigma': 963,\n 'tau': 964,\n 'upsilon': 965,\n 'phi': 966,\n 'chi': 967,\n 'psi': 968,\n 'omega': 969,\n 'thetasym': 977,\n 'upsih': 978,\n 'piv': 982,\n 'ensp': 8194,\n 'emsp': 8195,\n 'thinsp': 8201,\n 'zwnj': 8204,\n 'zwj': 8205,\n 'lrm': 8206,\n 'rlm': 8207,\n 'ndash': 8211,\n 'mdash': 8212,\n 'lsquo': 8216,\n 'rsquo': 8217,\n 'sbquo': 8218,\n 'ldquo': 8220,\n 'rdquo': 8221,\n 'bdquo': 8222,\n 'dagger': 8224,\n 'Dagger': 8225,\n 'bull': 8226,\n 'hellip': 8230,\n 'permil': 8240,\n 'prime': 8242,\n 'Prime': 8243,\n 'lsaquo': 8249,\n 'rsaquo': 8250,\n 'oline': 8254,\n 'frasl': 8260,\n 'euro': 8364,\n 'image': 8465,\n 'weierp': 8472,\n 'real': 8476,\n 'trade': 8482,\n 'alefsym': 8501,\n 'larr': 8592,\n 'uarr': 8593,\n 'rarr': 8594,\n 'darr': 8595,\n 'harr': 8596,\n 'crarr': 8629,\n 'lArr': 8656,\n 'uArr': 8657,\n 'rArr': 8658,\n 'dArr': 8659,\n 'hArr': 8660,\n 'forall': 8704,\n 'part': 8706,\n 'exist': 8707,\n 'empty': 8709,\n 'nabla': 8711,\n 'isin': 8712,\n 'notin': 8713,\n 'ni': 8715,\n 'prod': 8719,\n 'sum': 8721,\n 'minus': 8722,\n 'lowast': 8727,\n 'radic': 8730,\n 'prop': 8733,\n 'infin': 8734,\n 'ang': 8736,\n 'and': 8743,\n 'or': 8744,\n 'cap': 8745,\n 'cup': 8746,\n 'int': 8747,\n 'there4': 8756,\n 'sim': 8764,\n 'cong': 8773,\n 'asymp': 8776,\n 'ne': 8800,\n 'equiv': 8801,\n 'le': 8804,\n 'ge': 8805,\n 'sub': 8834,\n 'sup': 8835,\n 'nsub': 8836,\n 'sube': 8838,\n 'supe': 8839,\n 'oplus': 8853,\n 'otimes': 8855,\n 'perp': 8869,\n 'sdot': 8901,\n 'lceil': 8968,\n 'rceil': 8969,\n 'lfloor': 8970,\n 'rfloor': 8971,\n 'lang': 9001,\n 'rang': 9002,\n 'loz': 9674,\n 'spades': 9824,\n 'clubs': 9827,\n 'hearts': 9829,\n 'diams': 9830\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit (parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += '\\nLine: ' + parser.line +\n '\\nColumn: ' + parser.column +\n '\\nChar: ' + parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end (parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n if ((parser.state !== S.BEGIN) &&\n (parser.state !== S.BEGIN_WHITESPACE) &&\n (parser.state !== S.TEXT)) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname (name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? [ '', name ] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib (parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(parser,\n 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(parser,\n 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p]\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity (parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace (parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt (chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write (chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(parser,\n 'Cannot write after close. Assign an onready handler.')\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue;\n }\n\n if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(parser,\n 'Inappropriately located doctype declaration')\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n } else {\n parser.cdata += c\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n emitNode(parser, 'onprocessinginstruction', {\n name: parser.procInstName,\n body: parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, 'Forward-slash in opening tag not followed by >')\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: ''\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n (function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint)\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xD800\n lowSurrogate = (codePoint % 0x400) + 0xDC00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n }())\n }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n","module.exports = {\r\n\r\n isArray: function(value) {\r\n if (Array.isArray) {\r\n return Array.isArray(value);\r\n }\r\n // fallback for older browsers like IE 8\r\n return Object.prototype.toString.call( value ) === '[object Array]';\r\n }\r\n\r\n};\r\n","var isArray = require('./array-helper').isArray;\r\n\r\nmodule.exports = {\r\n\r\n copyOptions: function (options) {\r\n var key, copy = {};\r\n for (key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n copy[key] = options[key];\r\n }\r\n }\r\n return copy;\r\n },\r\n\r\n ensureFlagExists: function (item, options) {\r\n if (!(item in options) || typeof options[item] !== 'boolean') {\r\n options[item] = false;\r\n }\r\n },\r\n\r\n ensureSpacesExists: function (options) {\r\n if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) {\r\n options.spaces = 0;\r\n }\r\n },\r\n\r\n ensureAlwaysArrayExists: function (options) {\r\n if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) {\r\n options.alwaysArray = false;\r\n }\r\n },\r\n\r\n ensureKeyExists: function (key, options) {\r\n if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') {\r\n options[key + 'Key'] = options.compact ? '_' + key : key;\r\n }\r\n },\r\n\r\n checkFnExists: function (key, options) {\r\n return key + 'Fn' in options;\r\n }\r\n\r\n};\r\n","var sax = require('sax');\r\nvar expat /*= require('node-expat');*/ = { on: function () { }, parse: function () { } };\r\nvar helper = require('./options-helper');\r\nvar isArray = require('./array-helper').isArray;\r\n\r\nvar options;\r\nvar pureJsParser = true;\r\nvar currentElement;\r\n\r\nfunction validateOptions(userOptions) {\r\n options = helper.copyOptions(userOptions);\r\n helper.ensureFlagExists('ignoreDeclaration', options);\r\n helper.ensureFlagExists('ignoreInstruction', options);\r\n helper.ensureFlagExists('ignoreAttributes', options);\r\n helper.ensureFlagExists('ignoreText', options);\r\n helper.ensureFlagExists('ignoreComment', options);\r\n helper.ensureFlagExists('ignoreCdata', options);\r\n helper.ensureFlagExists('ignoreDoctype', options);\r\n helper.ensureFlagExists('compact', options);\r\n helper.ensureFlagExists('alwaysChildren', options);\r\n helper.ensureFlagExists('addParent', options);\r\n helper.ensureFlagExists('trim', options);\r\n helper.ensureFlagExists('nativeType', options);\r\n helper.ensureFlagExists('nativeTypeAttributes', options);\r\n helper.ensureFlagExists('sanitize', options);\r\n helper.ensureFlagExists('instructionHasAttributes', options);\r\n helper.ensureFlagExists('captureSpacesBetweenElements', options);\r\n helper.ensureAlwaysArrayExists(options);\r\n helper.ensureKeyExists('declaration', options);\r\n helper.ensureKeyExists('instruction', options);\r\n helper.ensureKeyExists('attributes', options);\r\n helper.ensureKeyExists('text', options);\r\n helper.ensureKeyExists('comment', options);\r\n helper.ensureKeyExists('cdata', options);\r\n helper.ensureKeyExists('doctype', options);\r\n helper.ensureKeyExists('type', options);\r\n helper.ensureKeyExists('name', options);\r\n helper.ensureKeyExists('elements', options);\r\n helper.ensureKeyExists('parent', options);\r\n helper.checkFnExists('doctype', options);\r\n helper.checkFnExists('instruction', options);\r\n helper.checkFnExists('cdata', options);\r\n helper.checkFnExists('comment', options);\r\n helper.checkFnExists('text', options);\r\n helper.checkFnExists('instructionName', options);\r\n helper.checkFnExists('elementName', options);\r\n helper.checkFnExists('attributeName', options);\r\n helper.checkFnExists('attributeValue', options);\r\n helper.checkFnExists('attributes', options);\r\n return options;\r\n}\r\n\r\nfunction nativeType(value) {\r\n var nValue = Number(value);\r\n if (!isNaN(nValue)) {\r\n return nValue;\r\n }\r\n var bValue = value.toLowerCase();\r\n if (bValue === 'true') {\r\n return true;\r\n } else if (bValue === 'false') {\r\n return false;\r\n }\r\n return value;\r\n}\r\n\r\nfunction addField(type, value) {\r\n var key;\r\n if (options.compact) {\r\n if (\r\n !currentElement[options[type + 'Key']] &&\r\n (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray)\r\n ) {\r\n currentElement[options[type + 'Key']] = [];\r\n }\r\n if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) {\r\n currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]];\r\n }\r\n if (type + 'Fn' in options && typeof value === 'string') {\r\n value = options[type + 'Fn'](value, currentElement);\r\n }\r\n if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) {\r\n for (key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n if ('instructionFn' in options) {\r\n value[key] = options.instructionFn(value[key], key, currentElement);\r\n } else {\r\n var temp = value[key];\r\n delete value[key];\r\n value[options.instructionNameFn(key, temp, currentElement)] = temp;\r\n }\r\n }\r\n }\r\n }\r\n if (isArray(currentElement[options[type + 'Key']])) {\r\n currentElement[options[type + 'Key']].push(value);\r\n } else {\r\n currentElement[options[type + 'Key']] = value;\r\n }\r\n } else {\r\n if (!currentElement[options.elementsKey]) {\r\n currentElement[options.elementsKey] = [];\r\n }\r\n var element = {};\r\n element[options.typeKey] = type;\r\n if (type === 'instruction') {\r\n for (key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n break;\r\n }\r\n }\r\n element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key;\r\n if (options.instructionHasAttributes) {\r\n element[options.attributesKey] = value[key][options.attributesKey];\r\n if ('instructionFn' in options) {\r\n element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement);\r\n }\r\n } else {\r\n if ('instructionFn' in options) {\r\n value[key] = options.instructionFn(value[key], key, currentElement);\r\n }\r\n element[options.instructionKey] = value[key];\r\n }\r\n } else {\r\n if (type + 'Fn' in options) {\r\n value = options[type + 'Fn'](value, currentElement);\r\n }\r\n element[options[type + 'Key']] = value;\r\n }\r\n if (options.addParent) {\r\n element[options.parentKey] = currentElement;\r\n }\r\n currentElement[options.elementsKey].push(element);\r\n }\r\n}\r\n\r\nfunction manipulateAttributes(attributes) {\r\n if ('attributesFn' in options && attributes) {\r\n attributes = options.attributesFn(attributes, currentElement);\r\n }\r\n if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options || options.nativeTypeAttributes) && attributes) {\r\n var key;\r\n for (key in attributes) {\r\n if (attributes.hasOwnProperty(key)) {\r\n if (options.trim) attributes[key] = attributes[key].trim();\r\n if (options.nativeTypeAttributes) {\r\n attributes[key] = nativeType(attributes[key]);\r\n }\r\n if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement);\r\n if ('attributeNameFn' in options) {\r\n var temp = attributes[key];\r\n delete attributes[key];\r\n attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp;\r\n }\r\n }\r\n }\r\n }\r\n return attributes;\r\n}\r\n\r\nfunction onInstruction(instruction) {\r\n var attributes = {};\r\n if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) {\r\n var attrsRegExp = /([\\w:-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\w+))\\s*/g;\r\n var match;\r\n while ((match = attrsRegExp.exec(instruction.body)) !== null) {\r\n attributes[match[1]] = match[2] || match[3] || match[4];\r\n }\r\n attributes = manipulateAttributes(attributes);\r\n }\r\n if (instruction.name.toLowerCase() === 'xml') {\r\n if (options.ignoreDeclaration) {\r\n return;\r\n }\r\n currentElement[options.declarationKey] = {};\r\n if (Object.keys(attributes).length) {\r\n currentElement[options.declarationKey][options.attributesKey] = attributes;\r\n }\r\n if (options.addParent) {\r\n currentElement[options.declarationKey][options.parentKey] = currentElement;\r\n }\r\n } else {\r\n if (options.ignoreInstruction) {\r\n return;\r\n }\r\n if (options.trim) {\r\n instruction.body = instruction.body.trim();\r\n }\r\n var value = {};\r\n if (options.instructionHasAttributes && Object.keys(attributes).length) {\r\n value[instruction.name] = {};\r\n value[instruction.name][options.attributesKey] = attributes;\r\n } else {\r\n value[instruction.name] = instruction.body;\r\n }\r\n addField('instruction', value);\r\n }\r\n}\r\n\r\nfunction onStartElement(name, attributes) {\r\n var element;\r\n if (typeof name === 'object') {\r\n attributes = name.attributes;\r\n name = name.name;\r\n }\r\n attributes = manipulateAttributes(attributes);\r\n if ('elementNameFn' in options) {\r\n name = options.elementNameFn(name, currentElement);\r\n }\r\n if (options.compact) {\r\n element = {};\r\n if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n element[options.attributesKey] = {};\r\n var key;\r\n for (key in attributes) {\r\n if (attributes.hasOwnProperty(key)) {\r\n element[options.attributesKey][key] = attributes[key];\r\n }\r\n }\r\n }\r\n if (\r\n !(name in currentElement) &&\r\n (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray)\r\n ) {\r\n currentElement[name] = [];\r\n }\r\n if (currentElement[name] && !isArray(currentElement[name])) {\r\n currentElement[name] = [currentElement[name]];\r\n }\r\n if (isArray(currentElement[name])) {\r\n currentElement[name].push(element);\r\n } else {\r\n currentElement[name] = element;\r\n }\r\n } else {\r\n if (!currentElement[options.elementsKey]) {\r\n currentElement[options.elementsKey] = [];\r\n }\r\n element = {};\r\n element[options.typeKey] = 'element';\r\n element[options.nameKey] = name;\r\n if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n element[options.attributesKey] = attributes;\r\n }\r\n if (options.alwaysChildren) {\r\n element[options.elementsKey] = [];\r\n }\r\n currentElement[options.elementsKey].push(element);\r\n }\r\n element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent\r\n currentElement = element;\r\n}\r\n\r\nfunction onText(text) {\r\n if (options.ignoreText) {\r\n return;\r\n }\r\n if (!text.trim() && !options.captureSpacesBetweenElements) {\r\n return;\r\n }\r\n if (options.trim) {\r\n text = text.trim();\r\n }\r\n if (options.nativeType) {\r\n text = nativeType(text);\r\n }\r\n if (options.sanitize) {\r\n text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n }\r\n addField('text', text);\r\n}\r\n\r\nfunction onComment(comment) {\r\n if (options.ignoreComment) {\r\n return;\r\n }\r\n if (options.trim) {\r\n comment = comment.trim();\r\n }\r\n addField('comment', comment);\r\n}\r\n\r\nfunction onEndElement(name) {\r\n var parentElement = currentElement[options.parentKey];\r\n if (!options.addParent) {\r\n delete currentElement[options.parentKey];\r\n }\r\n currentElement = parentElement;\r\n}\r\n\r\nfunction onCdata(cdata) {\r\n if (options.ignoreCdata) {\r\n return;\r\n }\r\n if (options.trim) {\r\n cdata = cdata.trim();\r\n }\r\n addField('cdata', cdata);\r\n}\r\n\r\nfunction onDoctype(doctype) {\r\n if (options.ignoreDoctype) {\r\n return;\r\n }\r\n doctype = doctype.replace(/^ /, '');\r\n if (options.trim) {\r\n doctype = doctype.trim();\r\n }\r\n addField('doctype', doctype);\r\n}\r\n\r\nfunction onError(error) {\r\n error.note = error; //console.error(error);\r\n}\r\n\r\nmodule.exports = function (xml, userOptions) {\r\n\r\n var parser = pureJsParser ? sax.parser(true, {}) : parser = new expat.Parser('UTF-8');\r\n var result = {};\r\n currentElement = result;\r\n\r\n options = validateOptions(userOptions);\r\n\r\n if (pureJsParser) {\r\n parser.opt = {strictEntities: true};\r\n parser.onopentag = onStartElement;\r\n parser.ontext = onText;\r\n parser.oncomment = onComment;\r\n parser.onclosetag = onEndElement;\r\n parser.onerror = onError;\r\n parser.oncdata = onCdata;\r\n parser.ondoctype = onDoctype;\r\n parser.onprocessinginstruction = onInstruction;\r\n } else {\r\n parser.on('startElement', onStartElement);\r\n parser.on('text', onText);\r\n parser.on('comment', onComment);\r\n parser.on('endElement', onEndElement);\r\n parser.on('error', onError);\r\n //parser.on('startCdata', onStartCdata);\r\n //parser.on('endCdata', onEndCdata);\r\n //parser.on('entityDecl', onEntityDecl);\r\n }\r\n\r\n if (pureJsParser) {\r\n parser.write(xml).close();\r\n } else {\r\n if (!parser.parse(xml)) {\r\n throw new Error('XML parsing error: ' + parser.getError());\r\n }\r\n }\r\n\r\n if (result[options.elementsKey]) {\r\n var temp = result[options.elementsKey];\r\n delete result[options.elementsKey];\r\n result[options.elementsKey] = temp;\r\n delete result.text;\r\n }\r\n\r\n return result;\r\n\r\n};\r\n","var helper = require('./options-helper');\r\nvar xml2js = require('./xml2js');\r\n\r\nfunction validateOptions (userOptions) {\r\n var options = helper.copyOptions(userOptions);\r\n helper.ensureSpacesExists(options);\r\n return options;\r\n}\r\n\r\nmodule.exports = function(xml, userOptions) {\r\n var options, js, json, parentKey;\r\n options = validateOptions(userOptions);\r\n js = xml2js(xml, options);\r\n parentKey = 'compact' in options && options.compact ? '_parent' : 'parent';\r\n // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this\r\n if ('addParent' in options && options.addParent) {\r\n json = JSON.stringify(js, function (k, v) { return k === parentKey? '_' : v; }, options.spaces);\r\n } else {\r\n json = JSON.stringify(js, null, options.spaces);\r\n }\r\n return json.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\r\n};\r\n","var helper = require('./options-helper');\nvar isArray = require('./array-helper').isArray;\n\nvar currentElement, currentElementName;\n\nfunction validateOptions(userOptions) {\n var options = helper.copyOptions(userOptions);\n helper.ensureFlagExists('ignoreDeclaration', options);\n helper.ensureFlagExists('ignoreInstruction', options);\n helper.ensureFlagExists('ignoreAttributes', options);\n helper.ensureFlagExists('ignoreText', options);\n helper.ensureFlagExists('ignoreComment', options);\n helper.ensureFlagExists('ignoreCdata', options);\n helper.ensureFlagExists('ignoreDoctype', options);\n helper.ensureFlagExists('compact', options);\n helper.ensureFlagExists('indentText', options);\n helper.ensureFlagExists('indentCdata', options);\n helper.ensureFlagExists('indentAttributes', options);\n helper.ensureFlagExists('indentInstruction', options);\n helper.ensureFlagExists('fullTagEmptyElement', options);\n helper.ensureFlagExists('noQuotesForNativeAttributes', options);\n helper.ensureSpacesExists(options);\n if (typeof options.spaces === 'number') {\n options.spaces = Array(options.spaces + 1).join(' ');\n }\n helper.ensureKeyExists('declaration', options);\n helper.ensureKeyExists('instruction', options);\n helper.ensureKeyExists('attributes', options);\n helper.ensureKeyExists('text', options);\n helper.ensureKeyExists('comment', options);\n helper.ensureKeyExists('cdata', options);\n helper.ensureKeyExists('doctype', options);\n helper.ensureKeyExists('type', options);\n helper.ensureKeyExists('name', options);\n helper.ensureKeyExists('elements', options);\n helper.checkFnExists('doctype', options);\n helper.checkFnExists('instruction', options);\n helper.checkFnExists('cdata', options);\n helper.checkFnExists('comment', options);\n helper.checkFnExists('text', options);\n helper.checkFnExists('instructionName', options);\n helper.checkFnExists('elementName', options);\n helper.checkFnExists('attributeName', options);\n helper.checkFnExists('attributeValue', options);\n helper.checkFnExists('attributes', options);\n helper.checkFnExists('fullTagEmptyElement', options);\n return options;\n}\n\nfunction writeIndentation(options, depth, firstLine) {\n return (!firstLine && options.spaces ? '\\n' : '') + Array(depth + 1).join(options.spaces);\n}\n\nfunction writeAttributes(attributes, options, depth) {\n if (options.ignoreAttributes) {\n return '';\n }\n if ('attributesFn' in options) {\n attributes = options.attributesFn(attributes, currentElementName, currentElement);\n }\n var key, attr, attrName, quote, result = [];\n for (key in attributes) {\n if (attributes.hasOwnProperty(key) && attributes[key] !== null && attributes[key] !== undefined) {\n quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '\"';\n attr = '' + attributes[key]; // ensure number and boolean are converted to String\n attr = attr.replace(/\"/g, '&quot;');\n attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key;\n result.push((options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '));\n result.push(attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote);\n }\n }\n if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {\n result.push(writeIndentation(options, depth, false));\n }\n return result.join('');\n}\n\nfunction writeDeclaration(declaration, options, depth) {\n currentElement = declaration;\n currentElementName = 'xml';\n return options.ignoreDeclaration ? '' : '<?' + 'xml' + writeAttributes(declaration[options.attributesKey], options, depth) + '?>';\n}\n\nfunction writeInstruction(instruction, options, depth) {\n if (options.ignoreInstruction) {\n return '';\n }\n var key;\n for (key in instruction) {\n if (instruction.hasOwnProperty(key)) {\n break;\n }\n }\n var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key;\n if (typeof instruction[key] === 'object') {\n currentElement = instruction;\n currentElementName = instructionName;\n return '<?' + instructionName + writeAttributes(instruction[key][options.attributesKey], options, depth) + '?>';\n } else {\n var instructionValue = instruction[key] ? instruction[key] : '';\n if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement);\n return '<?' + instructionName + (instructionValue ? ' ' + instructionValue : '') + '?>';\n }\n}\n\nfunction writeComment(comment, options) {\n return options.ignoreComment ? '' : '<!--' + ('commentFn' in options ? options.commentFn(comment, currentElementName, currentElement) : comment) + '-->';\n}\n\nfunction writeCdata(cdata, options) {\n return options.ignoreCdata ? '' : '<![CDATA[' + ('cdataFn' in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata.replace(']]>', ']]]]><![CDATA[>')) + ']]>';\n}\n\nfunction writeDoctype(doctype, options) {\n return options.ignoreDoctype ? '' : '<!DOCTYPE ' + ('doctypeFn' in options ? options.doctypeFn(doctype, currentElementName, currentElement) : doctype) + '>';\n}\n\nfunction writeText(text, options) {\n if (options.ignoreText) return '';\n text = '' + text; // ensure Number and Boolean are converted to String\n text = text.replace(/&amp;/g, '&'); // desanitize to avoid double sanitization\n text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text;\n}\n\nfunction hasContent(element, options) {\n var i;\n if (element.elements && element.elements.length) {\n for (i = 0; i < element.elements.length; ++i) {\n switch (element.elements[i][options.typeKey]) {\n case 'text':\n if (options.indentText) {\n return true;\n }\n break; // skip to next key\n case 'cdata':\n if (options.indentCdata) {\n return true;\n }\n break; // skip to next key\n case 'instruction':\n if (options.indentInstruction) {\n return true;\n }\n break; // skip to next key\n case 'doctype':\n case 'comment':\n case 'element':\n return true;\n default:\n return true;\n }\n }\n }\n return false;\n}\n\nfunction writeElement(element, options, depth) {\n currentElement = element;\n currentElementName = element.name;\n var xml = [], elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name;\n xml.push('<' + elementName);\n if (element[options.attributesKey]) {\n xml.push(writeAttributes(element[options.attributesKey], options, depth));\n }\n var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n if (!withClosingTag) {\n if ('fullTagEmptyElementFn' in options) {\n withClosingTag = options.fullTagEmptyElementFn(element.name, element);\n } else {\n withClosingTag = options.fullTagEmptyElement;\n }\n }\n if (withClosingTag) {\n xml.push('>');\n if (element[options.elementsKey] && element[options.elementsKey].length) {\n xml.push(writeElements(element[options.elementsKey], options, depth + 1));\n currentElement = element;\n currentElementName = element.name;\n }\n xml.push(options.spaces && hasContent(element, options) ? '\\n' + Array(depth + 1).join(options.spaces) : '');\n xml.push('</' + elementName + '>');\n } else {\n xml.push('/>');\n }\n return xml.join('');\n}\n\nfunction writeElements(elements, options, depth, firstLine) {\n return elements.reduce(function (xml, element) {\n var indent = writeIndentation(options, depth, firstLine && !xml);\n switch (element.type) {\n case 'element': return xml + indent + writeElement(element, options, depth);\n case 'comment': return xml + indent + writeComment(element[options.commentKey], options);\n case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options);\n case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options);\n case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options);\n case 'instruction':\n var instruction = {};\n instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey];\n return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth);\n }\n }, '');\n}\n\nfunction hasContentCompact(element, options, anyContent) {\n var key;\n for (key in element) {\n if (element.hasOwnProperty(key)) {\n switch (key) {\n case options.parentKey:\n case options.attributesKey:\n break; // skip to next key\n case options.textKey:\n if (options.indentText || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.cdataKey:\n if (options.indentCdata || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.instructionKey:\n if (options.indentInstruction || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.doctypeKey:\n case options.commentKey:\n return true;\n default:\n return true;\n }\n }\n }\n return false;\n}\n\nfunction writeElementCompact(element, name, options, depth, indent) {\n currentElement = element;\n currentElementName = name;\n var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name;\n if (typeof element === 'undefined' || element === null || element === '') {\n return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '></' + elementName + '>' : '<' + elementName + '/>';\n }\n var xml = [];\n if (name) {\n xml.push('<' + elementName);\n if (typeof element !== 'object') {\n xml.push('>' + writeText(element,options) + '</' + elementName + '>');\n return xml.join('');\n }\n if (element[options.attributesKey]) {\n xml.push(writeAttributes(element[options.attributesKey], options, depth));\n }\n var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n if (!withClosingTag) {\n if ('fullTagEmptyElementFn' in options) {\n withClosingTag = options.fullTagEmptyElementFn(name, element);\n } else {\n withClosingTag = options.fullTagEmptyElement;\n }\n }\n if (withClosingTag) {\n xml.push('>');\n } else {\n xml.push('/>');\n return xml.join('');\n }\n }\n xml.push(writeElementsCompact(element, options, depth + 1, false));\n currentElement = element;\n currentElementName = name;\n if (name) {\n xml.push((indent ? writeIndentation(options, depth, false) : '') + '</' + elementName + '>');\n }\n return xml.join('');\n}\n\nfunction writeElementsCompact(element, options, depth, firstLine) {\n var i, key, nodes, xml = [];\n for (key in element) {\n if (element.hasOwnProperty(key)) {\n nodes = isArray(element[key]) ? element[key] : [element[key]];\n for (i = 0; i < nodes.length; ++i) {\n switch (key) {\n case options.declarationKey: xml.push(writeDeclaration(nodes[i], options, depth)); break;\n case options.instructionKey: xml.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth)); break;\n case options.attributesKey: case options.parentKey: break; // skip\n case options.textKey: xml.push((options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options)); break;\n case options.cdataKey: xml.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options)); break;\n case options.doctypeKey: xml.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options)); break;\n case options.commentKey: xml.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options)); break;\n default: xml.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)));\n }\n firstLine = firstLine && !xml.length;\n }\n }\n }\n return xml.join('');\n}\n\nmodule.exports = function (js, options) {\n options = validateOptions(options);\n var xml = [];\n currentElement = js;\n currentElementName = '_root_';\n if (options.compact) {\n xml.push(writeElementsCompact(js, options, 0, true));\n } else {\n if (js[options.declarationKey]) {\n xml.push(writeDeclaration(js[options.declarationKey], options, 0));\n }\n if (js[options.elementsKey] && js[options.elementsKey].length) {\n xml.push(writeElements(js[options.elementsKey], options, 0, !xml.length));\n }\n }\n return xml.join('');\n};\n","var js2xml = require('./js2xml.js');\r\n\r\nmodule.exports = function (json, options) {\r\n if (json instanceof Buffer) {\r\n json = json.toString();\r\n }\r\n var js = null;\r\n if (typeof (json) === 'string') {\r\n try {\r\n js = JSON.parse(json);\r\n } catch (e) {\r\n throw new Error('The JSON structure is invalid');\r\n }\r\n } else {\r\n js = json;\r\n }\r\n return js2xml(js, options);\r\n};\r\n","/*jslint node:true */\r\n\r\nvar xml2js = require('./xml2js');\r\nvar xml2json = require('./xml2json');\r\nvar js2xml = require('./js2xml');\r\nvar json2xml = require('./json2xml');\r\n\r\nmodule.exports = {\r\n xml2js: xml2js,\r\n xml2json: xml2json,\r\n js2xml: js2xml,\r\n json2xml: json2xml\r\n};\r\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*! https://mths.be/he v1.2.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// All astral symbols.\n\tvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\t// All ASCII symbols (not just printable ASCII) except those listed in the\n\t// first column of the overrides table.\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides\n\tvar regexAsciiWhitelist = /[\\x01-\\x7F]/g;\n\t// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or\n\t// code points listed in the first column of the overrides table on\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.\n\tvar regexBmpWhitelist = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n\n\tvar regexEncodeNonAscii = /<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '&quot;',\n\t\t'&': '&amp;',\n\t\t'\\'': '&#x27;',\n\t\t'<': '&lt;',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it’s part of a tag or an\n\t\t// unquoted attribute value. We’re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '&gt;',\n\t\t// In Internet Explorer ≤ 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '&#x60;'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.”\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/&gt;\\u20D2/g, '&nvgt;')\n\t\t\t\t\t.replace(/&lt;\\u20D2/g, '&nvlt;')\n\t\t\t\t\t.replace(/&#x66;&#x6A;/g, '&fjlig;');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/&gt;\\u20D2/g, '&nvgt;')\n\t\t\t\t.replace(/&lt;\\u20D2/g, '&nvlt;');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they’re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&amp`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `&#119558;`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `&#x1D306;`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we’re still here, `if ($7)` is implied; it’s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union<Object, OrderedMap>) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n The child nodes in this fragment.\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. @internal\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n let mark = type.create(json.attrs);\n type.checkAttrs(mark.attrs);\n return mark;\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n let cache = resolveCache.get(doc);\n if (cache) {\n for (let i = 0; i < cache.elts.length; i++) {\n let elt = cache.elts[i];\n if (elt.pos == pos)\n return elt;\n }\n }\n else {\n resolveCache.set(doc, cache = new ResolveCache);\n }\n let result = cache.elts[cache.i] = ResolvedPos.resolve(doc, pos);\n cache.i = (cache.i + 1) % resolveCacheSize;\n return result;\n }\n}\nclass ResolveCache {\n constructor() {\n this.elts = [];\n this.i = 0;\n }\n}\nconst resolveCacheSize = 12, resolveCache = new WeakMap();\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The array of this node's child nodes.\n */\n get children() { return this.content.content; }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise an exception when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n this.type.checkAttrs(this.attrs);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++) {\n let mark = this.marks[i];\n mark.type.checkAttrs(mark.attrs);\n copy = mark.addToSet(copy);\n }\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = undefined;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n node.type.checkAttrs(node.attrs);\n return node;\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_​th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.isInGroup(name))\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction checkAttrs(attrs, values, type, name) {\n for (let name in values)\n if (!(name in attrs))\n throw new RangeError(`Unsupported attribute ${name} for ${type} of type ${name}`);\n for (let name in attrs) {\n let attr = attrs[name];\n if (attr.validate)\n attr.validate(values[name]);\n }\n}\nfunction initAttrs(typeName, attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(typeName, name, attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(name, spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n Return true when this node type is part of the given\n [group](https://prosemirror.net/docs/ref/#model.NodeSpec.group).\n */\n isInGroup(group) {\n return this.groups.indexOf(group) > -1;\n }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"node\", this.name);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\nfunction validateType(typeName, attrName, type) {\n let types = type.split(\"|\");\n return (value) => {\n let name = value === null ? \"null\" : typeof value;\n if (types.indexOf(name) < 0)\n throw new RangeError(`Expected value of type ${types} for attribute ${attrName} on type ${typeName}, got ${name}`);\n };\n}\n// Attribute descriptors\nclass Attribute {\n constructor(typeName, attrName, options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n this.validate = typeof options.validate == \"string\" ? validateType(typeName, attrName, options.validate) : options.validate;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(name, spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"mark\", this.name);\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n The [linebreak\n replacement](https://prosemirror.net/docs/ref/#model.NodeSpec.linebreakReplacement) node defined\n in this schema, if any.\n */\n this.linebreakReplacement = null;\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n if (type.spec.linebreakReplacement) {\n if (this.linebreakReplacement)\n throw new RangeError(\"Multiple linebreak nodes defined\");\n if (!type.isInline || !type.isLeaf)\n throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");\n this.linebreakReplacement = type;\n }\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\nfunction isTagRule(rule) { return rule.tag != null; }\nfunction isStyleRule(rule) { return rule.style != null; }\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n let matchedStyles = this.matchedStyles = [];\n rules.forEach(rule => {\n if (isTagRule(rule)) {\n this.tags.push(rule);\n }\n else if (isStyleRule(rule)) {\n let prop = /[^=]*/.exec(rule.style)[0];\n if (matchedStyles.indexOf(prop) < 0)\n matchedStyles.push(prop);\n this.styles.push(rule);\n }\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, Mark.none, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, Mark.none, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, marks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n this.localPreserveWS = false;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom, marks) {\n if (dom.nodeType == 3)\n this.addTextNode(dom, marks);\n else if (dom.nodeType == 1)\n this.addElement(dom, marks);\n }\n addTextNode(dom, marks) {\n let value = dom.nodeValue;\n let top = this.top, preserveWS = (top.options & OPT_PRESERVE_WS_FULL) ? \"full\"\n : this.localPreserveWS || (top.options & OPT_PRESERVE_WS) > 0;\n if (preserveWS === \"full\" ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!preserveWS) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (preserveWS !== \"full\") {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value), marks);\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, marks, matchAfter) {\n let outerWS = this.localPreserveWS, top = this.top;\n if (dom.tagName == \"PRE\" || /pre/.test(dom.style && dom.style.whiteSpace))\n this.localPreserveWS = true;\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n out: if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom, marks);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom, marks);\n break out;\n }\n let innerMarks = rule && rule.skip ? marks : this.readStyles(dom, marks);\n if (innerMarks)\n this.addAll(dom, innerMarks);\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n let innerMarks = this.readStyles(dom, marks);\n if (innerMarks)\n this.addElementByRule(dom, rule, innerMarks, rule.consuming === false ? ruleID : undefined);\n }\n this.localPreserveWS = outerWS;\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom, marks) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"), marks);\n }\n // Called for ignored nodes\n ignoreFallback(dom, marks) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"), marks);\n }\n // Run any style parser associated with the node's styles. Either\n // return an updated array of marks, or null to indicate some of the\n // styles had a rule with `ignore` set.\n readStyles(dom, marks) {\n let styles = dom.style;\n // Because many properties will only show up in 'normalized' form\n // in `style.item` (i.e. text-decoration becomes\n // text-decoration-line, text-decoration-color, etc), we directly\n // query the styles mentioned in our rules instead of iterating\n // over the items.\n if (styles && styles.length)\n for (let i = 0; i < this.parser.matchedStyles.length; i++) {\n let name = this.parser.matchedStyles[i], value = styles.getPropertyValue(name);\n if (value)\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(name, value, this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark)\n marks = marks.filter(m => !rule.clearMark(m));\n else\n marks = marks.concat(this.parser.schema.marks[rule.mark].create(rule.attrs));\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return marks;\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, marks, continueAfter) {\n let sync, nodeType;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n let inner = this.enter(nodeType, rule.attrs || null, marks, rule.preserveWhitespace);\n if (inner) {\n sync = true;\n marks = inner;\n }\n }\n else if (!this.insertNode(nodeType.create(rule.attrs), marks)) {\n this.leafFallback(dom, marks);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n marks = marks.concat(markType.create(rule.attrs));\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, marks, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node, marks));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, marks);\n this.findAround(dom, contentDOM, false);\n }\n if (sync && this.sync(startIn))\n this.open--;\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, marks, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom, marks);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node, marks) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return null;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n marks = this.enterInner(route[i], null, marks, false);\n return marks;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node, marks) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n marks = this.enterInner(block, null, marks);\n }\n let innerMarks = this.findPlace(node, marks);\n if (innerMarks) {\n this.closeExtra();\n let top = this.top;\n if (top.match)\n top.match = top.match.matchType(node.type);\n let nodeMarks = Mark.none;\n for (let m of innerMarks.concat(node.marks))\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, node.type))\n nodeMarks = m.addToSet(nodeMarks);\n top.content.push(node.mark(nodeMarks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, marks, preserveWS) {\n let innerMarks = this.findPlace(type.create(attrs), marks);\n if (innerMarks)\n innerMarks = this.enterInner(type, attrs, marks, true, preserveWS);\n return innerMarks;\n }\n // Open a node of the given type\n enterInner(type, attrs, marks, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n let applyMarks = Mark.none;\n marks = marks.filter(m => {\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, type)) {\n applyMarks = m.addToSet(applyMarks);\n return false;\n }\n return true;\n });\n this.nodes.push(new NodeContext(type, attrs, applyMarks, solid, null, options));\n this.open++;\n return marks;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(!!(this.isOpen || this.options.topOpen));\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--) {\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n else if (this.localPreserveWS) {\n this.nodes[i].options |= OPT_PRESERVE_WS;\n }\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && !next.isInGroup(part)))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = renderSpec(doc(options), this.nodes[node.type.name](node), null, node.attrs);\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && renderSpec(doc(options), toDOM(mark, inline), null, mark.attrs);\n }\n static renderSpec(doc, structure, xmlNS = null, blockArraysIn) {\n return renderSpec(doc, structure, xmlNS, blockArraysIn);\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\nconst suspiciousAttributeCache = new WeakMap();\nfunction suspiciousAttributes(attrs) {\n let value = suspiciousAttributeCache.get(attrs);\n if (value === undefined)\n suspiciousAttributeCache.set(attrs, value = suspiciousAttributesInner(attrs));\n return value;\n}\nfunction suspiciousAttributesInner(attrs) {\n let result = null;\n function scan(value) {\n if (value && typeof value == \"object\") {\n if (Array.isArray(value)) {\n if (typeof value[0] == \"string\") {\n if (!result)\n result = [];\n result.push(value);\n }\n else {\n for (let i = 0; i < value.length; i++)\n scan(value[i]);\n }\n }\n else {\n for (let prop in value)\n scan(value[prop]);\n }\n }\n }\n scan(attrs);\n return result;\n}\nfunction renderSpec(doc, structure, xmlNS, blockArraysIn) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], suspicious;\n if (typeof tagName != \"string\")\n throw new RangeError(\"Invalid array passed to renderSpec\");\n if (blockArraysIn && (suspicious = suspiciousAttributes(blockArraysIn)) &&\n suspicious.indexOf(structure) > -1)\n throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");\n let space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = renderSpec(doc, child, xmlNS, blockArraysIn);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](https://prosemirror.net/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(maps, \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps ? maps.length : 0) {\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n this._maps = maps || [];\n this.ownData = !(maps || mirror);\n }\n /**\n The step maps in this mapping.\n */\n get maps() { return this._maps; }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this._maps, this.mirror, from, to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n if (!this.ownData) {\n this._maps = this._maps.slice();\n this.mirror = this.mirror && this.mirror.slice();\n this.ownData = true;\n }\n this.to = this._maps.push(map);\n if (mirrors != null)\n this.setMirror(this._maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this._maps.length; i < mapping._maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this._maps.length + mapping._maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this._maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this._maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this._maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n let attrsHere = typeof attrs == \"function\" ? attrs(node) : attrs;\n if (node.isTextblock && !node.hasMarkup(type, attrsHere) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n let convertNewlines = null;\n if (type.schema.linebreakReplacement) {\n let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n // Ensure all markup that isn't allowed in the new node type is cleared\n if (convertNewlines === false)\n replaceLinebreaks(tr, node, pos, mapFrom);\n clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));\n if (convertNewlines === true)\n replaceNewlines(tr, node, pos, mapFrom);\n return false;\n }\n });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.isText) {\n let m, newline = /\\r?\\n|\\r/g;\n while (m = newline.exec(child.text)) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n }\n }\n });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.type == child.type.schema.linebreakReplacement) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction canAppendWithSubstitutedLinebreaks(a, b) {\n if (!b.content.size)\n a.type.compatibleContent(b.type);\n let match = a.contentMatchAt(a.childCount);\n let { linebreakReplacement } = a.type.schema;\n for (let i = 0; i < b.childCount; i++) {\n let child = b.child(i);\n let type = child.type == linebreakReplacement ? a.type.schema.nodes.text : child.type;\n match = match.matchType(type);\n if (!match)\n return false;\n if (!a.type.allowsMarks(child.marks))\n return false;\n }\n return match.validEnd;\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && canAppendWithSubstitutedLinebreaks(a, b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let convertNewlines = null;\n let { linebreakReplacement } = tr.doc.type.schema;\n let $before = tr.doc.resolve(pos - depth), beforeType = $before.node().type;\n if (linebreakReplacement && beforeType.inlineContent) {\n let pre = beforeType.whitespace == \"pre\";\n let supportLinebreak = !!beforeType.contentMatch.matchType(linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n let mapFrom = tr.steps.length;\n if (convertNewlines === false) {\n let $after = tr.doc.resolve(pos + depth);\n replaceLinebreaks(tr, $after.node(), $after.before(), mapFrom);\n }\n if (beforeType.inlineContent)\n clearIncompatible(tr, pos + depth - 1, beforeType, $before.node().contentMatchAt($before.index()), convertNewlines == null);\n let mapping = tr.mapping.slice(mapFrom), start = mapping.map(pos - depth);\n tr.step(new ReplaceStep(start, mapping.map(pos + depth, -1), Slice.empty, true));\n if (convertNewlines === true) {\n let $full = tr.doc.resolve(start);\n replaceNewlines(tr, $full.node(), $full.before(), tr.steps.length);\n }\n return tr;\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in <p(\"foo\"), p(\"bar\")>, when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d &&\n $from.start(d - 1) == $to.start(d - 1) && $from.node(d - 1).canReplace($from.index(d - 1), $to.index(d - 1)))\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split (with the outermost nodes coming first).\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n to = to == null ? from : to;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Start a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","export const snakeCase = (str) => str.replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`);\nexport const kebabCase = (str) => str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\nconst camelize = (str) =>\n str\n .toLowerCase()\n .replace(/[-_\\s]+(.)?/g, (_, chr) => (chr ? chr.toUpperCase() : ''))\n .replace(/^([A-Z])/, (match) => match.toLowerCase());\n\nexport const camelizeKeys = (link_comments) => {\n return link_comments.map((comment) =>\n Object.keys(comment).reduce((camelized, key) => {\n camelized[camelize(key)] = comment[key];\n return camelized;\n }, {}),\n );\n};\n\nexport const snakeCaseKeys = (comments) => {\n return comments.map((comment) =>\n Object.keys(comment).reduce((snaked, key) => {\n snaked[snakeCase(key)] = comment[key];\n return snaked;\n }, {}),\n );\n};\n\nexport const toKebabCase = (str) => {\n return kebabCase(str);\n};\n","export const comments_module_events = Object.freeze({\n RESOLVED: 'resolved',\n NEW: 'new',\n ADD: 'add',\n UPDATE: 'update',\n DELETED: 'deleted',\n PENDING: 'pending',\n SELECTED: 'selected',\n\n // Comments list\n COMMENTS_LIST: 'comments-list',\n\n // Tracked changes\n CHANGE_ACCEPTED: 'change-accepted',\n CHANGE_REJECTED: 'change-rejected',\n});\n","export default {\n mounted(el, binding, vnode) {\n const clickOutsideHandler = (event) => {\n if (!el.contains(event.target)) {\n binding.value(event);\n }\n };\n\n document.addEventListener('click', clickOutsideHandler);\n\n el.__clickOutsideHandler = clickOutsideHandler;\n },\n unmounted(el) {\n document.removeEventListener('click', el.__clickOutsideHandler);\n delete el.__clickOutsideHandler;\n },\n};\n","function inchesToTwips(inches) {\n if (inches == null) return;\n if (typeof inches === 'string') inches = parseFloat(inches);\n return Math.round(inches * 1440);\n}\n\nfunction twipsToInches(twips) {\n if (twips == null) return;\n if (typeof twips === 'string') twips = parseInt(twips, 10);\n return Math.round((twips / 1440) * 100) / 100;\n}\n\nfunction twipsToPixels(twips) {\n if (twips == null) return;\n twips = twipsToInches(twips);\n return Math.round(twips * 96);\n}\n\nfunction pixelsToTwips(pixels) {\n if (pixels == null) return;\n pixels = pixels / 96;\n return inchesToTwips(pixels);\n}\n\nfunction twipsToLines(twips) {\n if (twips == null) return;\n return twips / 240;\n}\n\nfunction linesToTwips(lines) {\n if (lines == null) return;\n return lines * 240;\n}\n\nfunction halfPointToPixels(halfPoints) {\n if (halfPoints == null) return;\n return Math.round((halfPoints * 96) / 72);\n}\n\nfunction halfPointToPoints(halfPoints) {\n if (halfPoints == null) return;\n return Math.round(halfPoints / 2);\n}\n\nfunction emuToPixels(emu) {\n if (emu == null) return;\n if (typeof emu === 'string') emu = parseFloat(emu);\n const pixels = (emu * 96) / 914400;\n return Math.round(pixels);\n}\n\nfunction pixelsToEmu(px) {\n if (px == null) return;\n if (typeof px === 'string') px = parseFloat(px);\n return Math.round(px * 9525);\n}\n\nfunction pixelsToHalfPoints(pixels) {\n if (pixels == null) return;\n return Math.round((pixels * 72) / 96);\n}\n\nfunction eigthPointsToPixels(eigthPoints) {\n if (eigthPoints == null) return;\n const points = parseFloat(eigthPoints) / 8;\n const pixels = points * 1.3333;\n return pixels;\n}\n\nfunction pixelsToEightPoints(pixels) {\n if (pixels == null) return;\n return Math.round(pixels * 6);\n}\n\nconst getArrayBufferFromUrl = async (url) => {\n const res = await fetch(url);\n const buffer = await res.arrayBuffer();\n return buffer;\n};\n\nconst getContentTypesFromXml = (contentTypesXml) => {\n const parser = new window.DOMParser();\n const xmlDoc = parser.parseFromString(contentTypesXml, 'text/xml');\n const defaults = xmlDoc.querySelectorAll('Default');\n return Array.from(defaults).map((item) => item.getAttribute('Extension'));\n};\n\nconst getHexColorFromDocxSystem = (docxColor) => {\n const colorMap = new Map([\n ['yellow', '#ffff00'],\n ['green', '#00ff00'],\n ['blue', '#0000FFFF'],\n ['cyan', '#00ffff'],\n ['magenta', '#ff00ff'],\n ['red', '#ff0000'],\n ['darkYellow', '#808000FF'],\n ['darkGreen', '#008000FF'],\n ['darkBlue', '#000080'],\n ['darkCyan', '#008080FF'],\n ['darkMagenta', '#800080FF'],\n ['darkGray', '#808080FF'],\n ['darkRed', '#800000FF'],\n ['lightGray', '#C0C0C0FF'],\n ['black', '#000'],\n ]);\n\n return colorMap.get(docxColor) || null;\n}\n\nfunction isValidHexColor(color) {\n if (!color || typeof color !== 'string') return false;\n\n switch(color.length) {\n case 3: return /^[0-9A-F]{3}$/i.test(color);\n case 6: return /^[0-9A-F]{6}$/i.test(color);\n case 8: return /^[0-9A-F]{8}$/i.test(color);\n default: return false;\n }\n}\n\nconst componentToHex = (val) => {\n const a = Number(val).toString(16);\n return a.length === 1 ? '0' + a : a;\n}\n\nconst rgbToHex = (rgb) => {\n return '#' + rgb\n .match(/\\d+/g)\n .map(componentToHex)\n .join('');\n}\n\nexport {\n inchesToTwips,\n twipsToInches,\n twipsToPixels,\n pixelsToTwips,\n twipsToLines,\n linesToTwips,\n halfPointToPixels,\n emuToPixels,\n pixelsToEmu,\n pixelsToHalfPoints,\n halfPointToPoints,\n eigthPointsToPixels,\n pixelsToEightPoints,\n getArrayBufferFromUrl,\n getContentTypesFromXml,\n getHexColorFromDocxSystem,\n isValidHexColor,\n rgbToHex\n};\n","/**\n * Generate a string ID following docx ID format (see: paraId, rsidR etc.)\n * @returns {string} - 8 character random string\n */\nexport function generateDocxRandomId(length = 8) {\n const characters = '0123456789abcdef';\n\n let id = [];\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.floor(Math.random() * characters.length);\n id.push(characters[randomIndex]);\n }\n\n return id.join('');\n}\n\nexport function generateRandom32BitHex() {\n const val = Math.floor(Math.random() * 0x7FFFFFFF);\n return val.toString(16).toUpperCase().padStart(8, '0');\n};\n","/**\n * @typedef {Object} CommentsXmlDefinitions\n * @property {Object} COMMENTS_XML_DEF - XML definition for the basic comments structure.\n * @property {Object} COMMENTS_EXTENDED_XML_DEF - XML definition for extended comments.\n * @property {Object} COMMENTS_EXTENSIBLE_XML_DEF - XML definition for extensible comments.\n * @property {Object} COMMENTS_IDS_XML_DEF - XML definition for comment identifiers.\n * @property {Object} DOCUMENT_RELS_XML_DEF - XML definition for document relationships.\n * @property {Object} PEOPLE_XML_DEF - XML definition for people-related information.\n * @property {Object} CONTENT_TYPES - XML definition for custom settings.\n */\n\nexport const DEFAULT_DOCX_DEFS = {\n \"xmlns:wpc\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\n \"xmlns:cx\": \"http://schemas.microsoft.com/office/drawing/2014/chartex\",\n \"xmlns:cx1\": \"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\n \"xmlns:cx2\": \"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\n \"xmlns:cx3\": \"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\n \"xmlns:cx4\": \"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\n \"xmlns:cx5\": \"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\n \"xmlns:cx6\": \"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\n \"xmlns:cx7\": \"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\n \"xmlns:cx8\": \"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\n \"xmlns:aink\": \"http://schemas.microsoft.com/office/drawing/2016/ink\",\n \"xmlns:am3d\": \"http://schemas.microsoft.com/office/drawing/2017/model3d\",\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\n \"xmlns:oel\": \"http://schemas.microsoft.com/office/2019/extlst\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n \"xmlns:m\": \"http://schemas.openxmlformats.org/officeDocument/2006/math\",\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\n \"xmlns:wp14\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\n \"xmlns:wp\": \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\n \"xmlns:w16cex\": \"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\n \"xmlns:w16cid\": \"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\n \"xmlns:w16\": \"http://schemas.microsoft.com/office/word/2018/wordml\",\n \"xmlns:w16du\": \"http://schemas.microsoft.com/office/word/2023/wordml/word16du\",\n \"xmlns:w16sdtdh\": \"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\n \"xmlns:w16sdtfl\": \"http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock\",\n \"xmlns:w16se\": \"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\n \"xmlns:wpg\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\n \"xmlns:wpi\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\n \"xmlns:wps\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\n \"mc:Ignorable\": \"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14\"\n};\n\nexport const DEFAULT_CUSTOM_XML = {\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"Properties\",\n \"attributes\": {\n \"xmlns\": \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n \"xmlns:vt\": \"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\"\n },\n \"elements\": []\n }\n ]\n};\n\nexport const SETTINGS_CUSTOM_XML = {\n elements: [{\n type: 'element',\n name: 'w:settings',\n attributes: {\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\n },\n elements: []\n }]\n}\n\nexport const COMMENT_REF = {\n \"type\": \"element\",\n \"name\": \"w:r\",\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w:rPr\",\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w:rStyle\",\n \"attributes\": {\n \"w:val\": \"CommentReference\"\n }\n }\n ]\n },\n {\n \"type\": \"element\",\n \"name\": \"w:annotationRef\"\n }\n ]\n};\n\nexport const DEFAULT_LINKED_STYLES = {\n Normal: {\n type: 'element',\n name: 'w:style',\n attributes: {\n 'w:type': 'paragraph',\n 'w:default': '1',\n 'w:styleId': 'Normal',\n },\n elements: [\n {\n type: 'element',\n name: 'w:name',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:qFormat',\n },\n ],\n },\n Title: {\n type: 'element',\n name: 'w:style',\n attributes: {\n 'w:type': 'paragraph',\n 'w:styleId': 'Title',\n },\n elements: [\n {\n type: 'element',\n name: 'w:name',\n attributes: {\n 'w:val': 'Title',\n },\n },\n {\n type: 'element',\n name: 'w:basedOn',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:next',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:link',\n attributes: {\n 'w:val': 'TitleChar',\n },\n },\n {\n type: 'element',\n name: 'w:uiPriority',\n attributes: {\n 'w:val': '10',\n },\n },\n {\n type: 'element',\n name: 'w:qFormat',\n },\n {\n type: 'element',\n name: 'w:rsid',\n attributes: {\n 'w:val': '00B72667',\n },\n },\n {\n type: 'element',\n name: 'w:pPr',\n elements: [\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:after': '80',\n },\n },\n {\n type: 'element',\n name: 'w:contextualSpacing',\n },\n ],\n },\n {\n type: 'element',\n name: 'w:rPr',\n elements: [\n {\n type: 'element',\n name: 'w:rFonts',\n attributes: {\n 'w:asciiTheme': 'majorHAnsi',\n 'w:eastAsiaTheme': 'majorEastAsia',\n 'w:hAnsiTheme': 'majorHAnsi',\n 'w:cstheme': 'majorBidi',\n },\n },\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:val': '-10',\n },\n },\n {\n type: 'element',\n name: 'w:kern',\n attributes: {\n 'w:val': '28',\n },\n },\n {\n type: 'element',\n name: 'w:sz',\n attributes: {\n 'w:val': '56',\n },\n },\n {\n type: 'element',\n name: 'w:szCs',\n attributes: {\n 'w:val': '56',\n },\n },\n ],\n },\n ],\n },\n Subtitle: {\n type: 'element',\n name: 'w:style',\n attributes: {\n 'w:type': 'paragraph',\n 'w:styleId': 'Subtitle',\n },\n elements: [\n {\n type: 'element',\n name: 'w:name',\n attributes: {\n 'w:val': 'Subtitle',\n },\n },\n {\n type: 'element',\n name: 'w:basedOn',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:next',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:link',\n attributes: {\n 'w:val': 'SubtitleChar',\n },\n },\n {\n type: 'element',\n name: 'w:uiPriority',\n attributes: {\n 'w:val': '11',\n },\n },\n {\n type: 'element',\n name: 'w:qFormat',\n },\n {\n type: 'element',\n name: 'w:rsid',\n attributes: {\n 'w:val': '00B72667',\n },\n },\n {\n type: 'element',\n name: 'w:pPr',\n elements: [\n {\n type: 'element',\n name: 'w:numPr',\n elements: [\n {\n type: 'element',\n name: 'w:ilvl',\n attributes: {\n 'w:val': '1',\n },\n },\n ],\n },\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:after': '160',\n },\n },\n ],\n },\n {\n type: 'element',\n name: 'w:rPr',\n elements: [\n {\n type: 'element',\n name: 'w:rFonts',\n attributes: {\n 'w:asciiTheme': 'minorHAnsi',\n 'w:eastAsiaTheme': 'majorEastAsia',\n 'w:hAnsiTheme': 'minorHAnsi',\n 'w:cstheme': 'majorBidi',\n },\n },\n {\n type: 'element',\n name: 'w:color',\n attributes: {\n 'w:val': '595959',\n 'w:themeColor': 'text1',\n 'w:themeTint': 'A6',\n },\n },\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:val': '15',\n },\n },\n {\n type: 'element',\n name: 'w:sz',\n attributes: {\n 'w:val': '28',\n },\n },\n {\n type: 'element',\n name: 'w:szCs',\n attributes: {\n 'w:val': '28',\n },\n },\n ],\n },\n ],\n },\n Heading1: {\n type: 'element',\n name: 'w:style',\n attributes: {\n 'w:type': 'paragraph',\n 'w:styleId': 'Heading1',\n },\n elements: [\n {\n type: 'element',\n name: 'w:name',\n attributes: {\n 'w:val': 'heading 1',\n },\n },\n {\n type: 'element',\n name: 'w:basedOn',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:next',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:link',\n attributes: {\n 'w:val': 'Heading1Char',\n },\n },\n {\n type: 'element',\n name: 'w:uiPriority',\n attributes: {\n 'w:val': '9',\n },\n },\n {\n type: 'element',\n name: 'w:qFormat',\n },\n {\n type: 'element',\n name: 'w:rsid',\n attributes: {\n 'w:val': '00233D7B',\n },\n },\n {\n type: 'element',\n name: 'w:pPr',\n elements: [\n {\n type: 'element',\n name: 'w:keepNext',\n },\n {\n type: 'element',\n name: 'w:keepLines',\n },\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:before': '360',\n 'w:after': '80',\n },\n },\n {\n type: 'element',\n name: 'w:outlineLvl',\n attributes: {\n 'w:val': '0',\n },\n },\n ],\n },\n {\n type: 'element',\n name: 'w:rPr',\n elements: [\n {\n type: 'element',\n name: 'w:rFonts',\n attributes: {\n 'w:asciiTheme': 'majorHAnsi',\n 'w:eastAsiaTheme': 'majorEastAsia',\n 'w:hAnsiTheme': 'majorHAnsi',\n 'w:cstheme': 'majorBidi',\n },\n },\n {\n type: 'element',\n name: 'w:color',\n attributes: {\n 'w:val': '0F4761',\n 'w:themeColor': 'accent1',\n 'w:themeShade': 'BF',\n },\n },\n {\n type: 'element',\n name: 'w:sz',\n attributes: {\n 'w:val': '40',\n },\n },\n {\n type: 'element',\n name: 'w:szCs',\n attributes: {\n 'w:val': '40',\n },\n },\n ],\n },\n ],\n },\n Heading2: {\n type: 'element',\n name: 'w:style',\n attributes: {\n 'w:type': 'paragraph',\n 'w:styleId': 'Heading2',\n },\n elements: [\n {\n type: 'element',\n name: 'w:name',\n attributes: {\n 'w:val': 'heading 2',\n },\n },\n {\n type: 'element',\n name: 'w:basedOn',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:next',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:link',\n attributes: {\n 'w:val': 'Heading2Char',\n },\n },\n {\n type: 'element',\n name: 'w:uiPriority',\n attributes: {\n 'w:val': '9',\n },\n },\n {\n type: 'element',\n name: 'w:semiHidden',\n },\n {\n type: 'element',\n name: 'w:unhideWhenUsed',\n },\n {\n type: 'element',\n name: 'w:qFormat',\n },\n {\n type: 'element',\n name: 'w:rsid',\n attributes: {\n 'w:val': '00233D7B',\n },\n },\n {\n type: 'element',\n name: 'w:pPr',\n elements: [\n {\n type: 'element',\n name: 'w:keepNext',\n },\n {\n type: 'element',\n name: 'w:keepLines',\n },\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:before': '160',\n 'w:after': '80',\n },\n },\n {\n type: 'element',\n name: 'w:outlineLvl',\n attributes: {\n 'w:val': '1',\n },\n },\n ],\n },\n {\n type: 'element',\n name: 'w:rPr',\n elements: [\n {\n type: 'element',\n name: 'w:rFonts',\n attributes: {\n 'w:asciiTheme': 'majorHAnsi',\n 'w:eastAsiaTheme': 'majorEastAsia',\n 'w:hAnsiTheme': 'majorHAnsi',\n 'w:cstheme': 'majorBidi',\n },\n },\n {\n type: 'element',\n name: 'w:color',\n attributes: {\n 'w:val': '0F4761',\n 'w:themeColor': 'accent1',\n 'w:themeShade': 'BF',\n },\n },\n {\n type: 'element',\n name: 'w:sz',\n attributes: {\n 'w:val': '32',\n },\n },\n {\n type: 'element',\n name: 'w:szCs',\n attributes: {\n 'w:val': '32',\n },\n },\n ],\n },\n ],\n },\n Heading3: {\n type: 'element',\n name: 'w:style',\n attributes: {\n 'w:type': 'paragraph',\n 'w:styleId': 'Heading3',\n },\n elements: [\n {\n type: 'element',\n name: 'w:name',\n attributes: {\n 'w:val': 'heading 3',\n },\n },\n {\n type: 'element',\n name: 'w:basedOn',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:next',\n attributes: {\n 'w:val': 'Normal',\n },\n },\n {\n type: 'element',\n name: 'w:link',\n attributes: {\n 'w:val': 'Heading3Char',\n },\n },\n {\n type: 'element',\n name: 'w:uiPriority',\n attributes: {\n 'w:val': '9',\n },\n },\n {\n type: 'element',\n name: 'w:semiHidden',\n },\n {\n type: 'element',\n name: 'w:unhideWhenUsed',\n },\n {\n type: 'element',\n name: 'w:qFormat',\n },\n {\n type: 'element',\n name: 'w:rsid',\n attributes: {\n 'w:val': '00233D7B',\n },\n },\n {\n type: 'element',\n name: 'w:pPr',\n elements: [\n {\n type: 'element',\n name: 'w:keepNext',\n },\n {\n type: 'element',\n name: 'w:keepLines',\n },\n {\n type: 'element',\n name: 'w:spacing',\n attributes: {\n 'w:before': '160',\n 'w:after': '80',\n },\n },\n {\n type: 'element',\n name: 'w:outlineLvl',\n attributes: {\n 'w:val': '2',\n },\n },\n ],\n },\n {\n type: 'element',\n name: 'w:rPr',\n elements: [\n {\n type: 'element',\n name: 'w:rFonts',\n attributes: {\n 'w:eastAsiaTheme': 'majorEastAsia',\n 'w:cstheme': 'majorBidi',\n },\n },\n {\n type: 'element',\n name: 'w:color',\n attributes: {\n 'w:val': '0F4761',\n 'w:themeColor': 'accent1',\n 'w:themeShade': 'BF',\n },\n },\n {\n type: 'element',\n name: 'w:sz',\n attributes: {\n 'w:val': '28',\n },\n },\n {\n type: 'element',\n name: 'w:szCs',\n attributes: {\n 'w:val': '28',\n },\n },\n ],\n },\n ],\n },\n};\n\nexport const COMMENTS_XML_DEF = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w:comments\",\n \"attributes\": {\n \"xmlns:wpc\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\n \"xmlns:cx\": \"http://schemas.microsoft.com/office/drawing/2014/chartex\",\n \"xmlns:cx1\": \"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\n \"xmlns:cx2\": \"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\n \"xmlns:cx3\": \"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\n \"xmlns:cx4\": \"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\n \"xmlns:cx5\": \"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\n \"xmlns:cx6\": \"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\n \"xmlns:cx7\": \"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\n \"xmlns:cx8\": \"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\n \"xmlns:aink\": \"http://schemas.microsoft.com/office/drawing/2016/ink\",\n \"xmlns:am3d\": \"http://schemas.microsoft.com/office/drawing/2017/model3d\",\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\n \"xmlns:oel\": \"http://schemas.microsoft.com/office/2019/extlst\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n \"xmlns:m\": \"http://schemas.openxmlformats.org/officeDocument/2006/math\",\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\n \"xmlns:wp14\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\n \"xmlns:wp\": \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\n \"xmlns:w16cex\": \"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\n \"xmlns:w16cid\": \"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\n \"xmlns:w16\": \"http://schemas.microsoft.com/office/word/2018/wordml\",\n \"xmlns:w16du\": \"http://schemas.microsoft.com/office/word/2023/wordml/word16du\",\n \"xmlns:w16sdtdh\": \"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\n \"xmlns:w16sdtfl\": \"http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock\",\n \"xmlns:w16se\": \"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\n \"xmlns:wpg\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\n \"xmlns:wpi\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\n \"xmlns:wps\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\n \"mc:Ignorable\": \"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14\"\n },\n \"elements\": []\n }\n ]\n};\n\nexport const COMMENTS_EXTENDED_XML_DEF = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w15:commentsEx\",\n \"attributes\": {\n \"xmlns:wpc\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\n \"xmlns:cx\": \"http://schemas.microsoft.com/office/drawing/2014/chartex\",\n \"xmlns:cx1\": \"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\n \"xmlns:cx2\": \"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\n \"xmlns:cx3\": \"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\n \"xmlns:cx4\": \"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\n \"xmlns:cx5\": \"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\n \"xmlns:cx6\": \"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\n \"xmlns:cx7\": \"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\n \"xmlns:cx8\": \"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\n \"xmlns:aink\": \"http://schemas.microsoft.com/office/drawing/2016/ink\",\n \"xmlns:am3d\": \"http://schemas.microsoft.com/office/drawing/2017/model3d\",\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\n \"xmlns:oel\": \"http://schemas.microsoft.com/office/2019/extlst\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n \"xmlns:m\": \"http://schemas.openxmlformats.org/officeDocument/2006/math\",\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\n \"xmlns:wp14\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\n \"xmlns:wp\": \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\n \"xmlns:w16cex\": \"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\n \"xmlns:w16cid\": \"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\n \"xmlns:w16\": \"http://schemas.microsoft.com/office/word/2018/wordml\",\n \"xmlns:w16du\": \"http://schemas.microsoft.com/office/word/2023/wordml/word16du\",\n \"xmlns:w16sdtdh\": \"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\n \"xmlns:w16sdtfl\": \"http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock\",\n \"xmlns:w16se\": \"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\n \"xmlns:wpg\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\n \"xmlns:wpi\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\n \"xmlns:wps\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\n \"mc:Ignorable\": \"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14\"\n },\n \"elements\": []\n }\n ]\n};\n\nexport const COMMENTS_EXTENSIBLE_XML_DEF = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w16cex:commentsExtensible\",\n \"attributes\": {\n \"xmlns:wpc\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\n \"xmlns:cx\": \"http://schemas.microsoft.com/office/drawing/2014/chartex\",\n \"xmlns:cx1\": \"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\n \"xmlns:cx2\": \"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\n \"xmlns:cx3\": \"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\n \"xmlns:cx4\": \"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\n \"xmlns:cx5\": \"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\n \"xmlns:cx6\": \"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\n \"xmlns:cx7\": \"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\n \"xmlns:cx8\": \"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\n \"xmlns:cr\": \"http://schemas.microsoft.com/office/comments/2020/reactions\",\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\n \"xmlns:aink\": \"http://schemas.microsoft.com/office/drawing/2016/ink\",\n \"xmlns:am3d\": \"http://schemas.microsoft.com/office/drawing/2017/model3d\",\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\n \"xmlns:oel\": \"http://schemas.microsoft.com/office/2019/extlst\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n \"xmlns:m\": \"http://schemas.openxmlformats.org/officeDocument/2006/math\",\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\n \"xmlns:wp14\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\n \"xmlns:wp\": \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\n \"xmlns:w16cex\": \"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\n \"xmlns:w16cid\": \"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\n \"xmlns:w16\": \"http://schemas.microsoft.com/office/word/2018/wordml\",\n \"xmlns:w16du\": \"http://schemas.microsoft.com/office/word/2023/wordml/word16du\",\n \"xmlns:w16sdtdh\": \"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\n \"xmlns:w16sdtfl\": \"http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock\",\n \"xmlns:w16se\": \"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\n \"xmlns:wpg\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\n \"xmlns:wpi\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\n \"xmlns:wps\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\n \"mc:Ignorable\": \"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl cr w16du wp14\"\n },\n \"elements\": []\n }\n ]\n};\n\nexport const COMMENTS_IDS_XML_DEF = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w16cid:commentsIds\",\n \"attributes\": {\n \"xmlns:wpc\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\n \"xmlns:cx\": \"http://schemas.microsoft.com/office/drawing/2014/chartex\",\n \"xmlns:cx1\": \"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\n \"xmlns:cx2\": \"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\n \"xmlns:cx3\": \"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\n \"xmlns:cx4\": \"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\n \"xmlns:cx5\": \"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\n \"xmlns:cx6\": \"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\n \"xmlns:cx7\": \"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\n \"xmlns:cx8\": \"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\n \"xmlns:aink\": \"http://schemas.microsoft.com/office/drawing/2016/ink\",\n \"xmlns:am3d\": \"http://schemas.microsoft.com/office/drawing/2017/model3d\",\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\n \"xmlns:oel\": \"http://schemas.microsoft.com/office/2019/extlst\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n \"xmlns:m\": \"http://schemas.openxmlformats.org/officeDocument/2006/math\",\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\n \"xmlns:wp14\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\n \"xmlns:wp\": \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\n \"xmlns:w16cex\": \"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\n \"xmlns:w16cid\": \"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\n \"xmlns:w16\": \"http://schemas.microsoft.com/office/word/2018/wordml\",\n \"xmlns:w16du\": \"http://schemas.microsoft.com/office/word/2023/wordml/word16du\",\n \"xmlns:w16sdtdh\": \"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\n \"xmlns:w16sdtfl\": \"http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock\",\n \"xmlns:w16se\": \"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\n \"xmlns:wpg\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\n \"xmlns:wpi\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\n \"xmlns:wps\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\n \"mc:Ignorable\": \"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14\"\n },\n \"elements\": []\n }\n ]\n};\n\nexport const DOCUMENT_RELS_XML_DEF = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"Relationships\",\n \"attributes\": {\n \"xmlns\": \"http://schemas.openxmlformats.org/package/2006/relationships\"\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId8\",\n \"Type\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable\",\n \"Target\": \"fontTable.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId3\",\n \"Type\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings\",\n \"Target\": \"webSettings.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId7\",\n \"Type\": \"http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible\",\n \"Target\": \"commentsExtensible.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId2\",\n \"Type\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\",\n \"Target\": \"settings.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId1\",\n \"Type\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n \"Target\": \"styles.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId6\",\n \"Type\": \"http://schemas.microsoft.com/office/2016/09/relationships/commentsIds\",\n \"Target\": \"commentsIds.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId5\",\n \"Type\": \"http://schemas.microsoft.com/office/2011/relationships/commentsExtended\",\n \"Target\": \"commentsExtended.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId10\",\n \"Type\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n \"Target\": \"theme/theme1.xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Relationship\",\n \"attributes\": {\n \"Id\": \"rId4\",\n \"Type\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n \"Target\": \"comments.xml\"\n }\n },\n // {\n // \"type\": \"element\",\n // \"name\": \"Relationship\",\n // \"attributes\": {\n // \"Id\": \"rId9\",\n // \"Type\": \"http://schemas.microsoft.com/office/2011/relationships/people\",\n // \"Target\": \"people.xml\"\n // }\n // }\n ]\n }\n ]\n};\n\nexport const PEOPLE_XML_DEF = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w15:people\",\n \"attributes\": {\n \"xmlns:wpc\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\n \"xmlns:cx\": \"http://schemas.microsoft.com/office/drawing/2014/chartex\",\n \"xmlns:cx1\": \"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\",\n \"xmlns:cx2\": \"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\",\n \"xmlns:cx3\": \"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\",\n \"xmlns:cx4\": \"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\",\n \"xmlns:cx5\": \"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\",\n \"xmlns:cx6\": \"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\",\n \"xmlns:cx7\": \"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\",\n \"xmlns:cx8\": \"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\",\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\n \"xmlns:aink\": \"http://schemas.microsoft.com/office/drawing/2016/ink\",\n \"xmlns:am3d\": \"http://schemas.microsoft.com/office/drawing/2017/model3d\",\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\n \"xmlns:oel\": \"http://schemas.microsoft.com/office/2019/extlst\",\n \"xmlns:r\": \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\n \"xmlns:m\": \"http://schemas.openxmlformats.org/officeDocument/2006/math\",\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\n \"xmlns:wp14\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\n \"xmlns:wp\": \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\n \"xmlns:w16cex\": \"http://schemas.microsoft.com/office/word/2018/wordml/cex\",\n \"xmlns:w16cid\": \"http://schemas.microsoft.com/office/word/2016/wordml/cid\",\n \"xmlns:w16\": \"http://schemas.microsoft.com/office/word/2018/wordml\",\n \"xmlns:w16du\": \"http://schemas.microsoft.com/office/word/2023/wordml/word16du\",\n \"xmlns:w16sdtdh\": \"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\",\n \"xmlns:w16sdtfl\": \"http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock\",\n \"xmlns:w16se\": \"http://schemas.microsoft.com/office/word/2015/wordml/symex\",\n \"xmlns:wpg\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\n \"xmlns:wpi\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\n \"xmlns:wps\": \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\n \"mc:Ignorable\": \"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14\"\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"w15:person\",\n \"attributes\": {\n \"w15:author\": \"Nick Bernal\"\n },\n \"elements\": []\n }\n ]\n }\n ]\n};\n\nexport const CONTENT_TYPES = {\n \"declaration\": {\n \"attributes\": {\n \"version\": \"1.0\",\n \"encoding\": \"UTF-8\",\n \"standalone\": \"yes\"\n }\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"Types\",\n \"attributes\": {\n \"xmlns\": \"http://schemas.openxmlformats.org/package/2006/content-types\"\n },\n \"elements\": [\n {\n \"type\": \"element\",\n \"name\": \"Default\",\n \"attributes\": {\n \"Extension\": \"rels\",\n \"ContentType\": \"application/vnd.openxmlformats-package.relationships+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Default\",\n \"attributes\": {\n \"Extension\": \"xml\",\n \"ContentType\": \"application/xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/document.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/styles.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/settings.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/webSettings.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/comments.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/commentsExtended.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/commentsIds.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/commentsExtensible.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/fontTable.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/people.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/theme/theme1.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.theme+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/docProps/core.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-package.core-properties+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/docProps/app.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.extended-properties+xml\"\n }\n },\n {\n \"type\": \"element\",\n \"name\": \"Override\",\n \"attributes\": {\n \"PartName\": \"/word/numbering.xml\",\n \"ContentType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\"\n }\n }\n ]\n }\n ]\n};\n\n/**\n * @type {CommentsXmlDefinitions}\n */\nexport const COMMENTS_XML_DEFINITIONS = {\n COMMENTS_XML_DEF,\n COMMENTS_EXTENDED_XML_DEF,\n COMMENTS_EXTENSIBLE_XML_DEF,\n COMMENTS_IDS_XML_DEF,\n DOCUMENT_RELS_XML_DEF,\n PEOPLE_XML_DEF,\n CONTENT_TYPES,\n};\n","export const TrackInsertMarkName = 'trackInsert';\nexport const TrackDeleteMarkName = 'trackDelete';\nexport const TrackFormatMarkName = 'trackFormat';\n","/**\n *\n * @template T\n * @param {T} obj\n * @returns {T}\n */\nexport const carbonCopy = (obj) => {\n if (!obj) return undefined;\n try {\n return JSON.parse(JSON.stringify(obj));\n } catch (e) {\n console.error('Error in carbonCopy', obj, e);\n return undefined;\n }\n};\n","import { translateParagraphNode } from '../../exporter.js';\nimport { carbonCopy } from '../../../utilities/carbonCopy.js';\nimport { COMMENT_REF, COMMENTS_XML_DEFINITIONS } from '../../exporter-docx-defs.js';\nimport { generateRandom32BitHex } from '../../../helpers/generateDocxRandomId.js';\n\n/**\n * Generate the end node for a comment\n * \n * @param {Object} params The export params\n * @returns {Object} The translated w:commentRangeEnd node for the comment\n */\nexport function translateCommentNode(params, type) {\n const { node, commentsExportType, exportedCommentDefs = [] } = params;\n\n if (!exportedCommentDefs.length || commentsExportType === 'clean') return;\n \n const nodeId = node.attrs['w:id'];\n\n // Check if the comment is resolved\n const originalComment = params.comments.find((comment) => {\n return comment.commentId == nodeId;\n });\n\n if (!originalComment) return;\n\n const commentIndex = params.comments?.findIndex((comment) => comment.commentId === originalComment.commentId);\n const parentId = originalComment.parentCommentId;\n let parentComment;\n if (parentId) {\n parentComment = params.comments.find((c) => c.commentId === parentId || c.importedId === parentId);\n }\n\n const isInternal = parentComment?.isInternal || originalComment.isInternal;\n if (commentsExportType === 'external' && isInternal) return;\n\n const isResolved = !!originalComment.resolvedTime;\n if (isResolved) return;\n\n let commentSchema = getCommentSchema(type, commentIndex);\n if (type === 'End') {\n const commentReference = {\n name: 'w:r',\n elements: [{ name: 'w:commentReference', attributes: { 'w:id': String(commentIndex) } }]\n };\n commentSchema = [commentSchema, commentReference];\n }\n return commentSchema;\n}\n\n\n/**\n * Generate a w:commentRangeStart or w:commentRangeEnd node\n * \n * @param {string} type Must be 'Start' or 'End'\n * @param {string} commentId The comment ID\n * @returns {Object} The comment node\n */\nconst getCommentSchema = (type, commentId) => {\n return {\n name: `w:commentRange${type}`,\n attributes: {\n 'w:id': String(commentId),\n }\n };\n};\n\n\n/**\n * Insert w15:paraId into the comments\n * \n * @param {Object} comment The comment to update\n * @returns {Object} The updated comment\n */\nexport const prepareCommentParaIds = (comment) => {\n const newComment = {\n ...comment,\n commentParaId: generateRandom32BitHex(),\n };\n return newComment;\n};\n\n\n/**\n * Generate the w:comment node for a comment\n * This is stored in comments.xml\n * \n * @param {Object} comment The comment to export\n * @param {string} commentId The index of the comment\n * @returns {Object} The w:comment node for the comment\n */\nexport const getCommentDefinition = (comment, commentId, allComments) => {\n const translatedText = translateParagraphNode({ node: comment.commentJSON });\n const attributes = {\n 'w:id': String(commentId),\n 'w:author': comment.creatorName || comment.importedAuthor?.name,\n 'w:email': comment.creatorEmail || comment.importedAuthor?.email,\n 'w:date': toIsoNoFractional(comment.createdTime),\n 'w:initials': getInitials(comment.creatorName),\n 'w:done': comment.resolvedTime ? '1' : '0',\n 'w15:paraId': comment.commentParaId,\n 'custom:internalId': comment.commentId || comment.internalId,\n 'custom:trackedChange': comment.trackedChange,\n 'custom:trackedChangeText': comment.trackedChangeText || null,\n 'custom:trackedChangeType': comment.trackedChangeType,\n 'custom:trackedDeletedText': comment.deletedText || null,\n };\n\n // Add the w15:paraIdParent attribute if the comment has a parent\n if (comment?.parentCommentId) {\n const parentComment = allComments.find((c) => c.commentId === comment.parentCommentId);\n attributes['w15:paraIdParent'] = parentComment.commentParaId;\n }\n\n return {\n type: 'element',\n name: 'w:comment',\n attributes,\n elements: [translatedText],\n };\n};\n\n\n/**\n * Get the initials of a name\n * \n * @param {string} name The name to get the initials of\n * @returns {string | null} The initials of the name\n */\nexport const getInitials = (name) => {\n if (!name) return null;\n\n const preparedText = name.replace('(imported)', '').trim();\n const initials = preparedText.split(' ').map((word) => word[0]).join('');\n return initials;\n};\n\n/**\n * Convert a unix date to an ISO string without milliseconds\n * \n * @param {number} unixMillis The date to convert\n * @returns {string} The date as an ISO string without milliseconds\n */\nexport const toIsoNoFractional = (unixMillis) => {\n const date = new Date(unixMillis || Date.now());\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n};\n\n\n/**\n * Updates or creates the `word/comments.xml` entry in a docx file structure.\n *\n * @param {Object[]} commentDefs - An array of comment definition objects.\n * @param {Object} convertedXml - The entire XML object representing the docx file structure.\n * @returns {Object} - The updated portion of the comments XML structure.\n */\nexport const updateCommentsXml = (commentDefs = [], commentsXml) => {\n const newCommentsXml = carbonCopy(commentsXml);\n\n // Re-build the comment definitions\n commentDefs.forEach((commentDef) => {\n const elements = commentDef.elements[0].elements;\n elements.unshift(COMMENT_REF);\n\n const paraId = commentDef.attributes['w15:paraId'];\n commentDef.elements[0].attributes['w14:paraId'] = paraId;\n\n commentDef.attributes = {\n 'w:id': commentDef.attributes['w:id'],\n 'w:author': commentDef.attributes['w:author'],\n 'w:email': commentDef.attributes['w:email'],\n 'w:date': commentDef.attributes['w:date'],\n 'w:initials': commentDef.attributes['w:initials'],\n 'custom:internalId': commentDef.attributes['custom:internalId'],\n 'custom:trackedChange': commentDef.attributes['custom:trackedChange'],\n 'custom:trackedChangeText': commentDef.attributes['custom:trackedChangeText'],\n 'custom:trackedChangeType': commentDef.attributes['custom:trackedChangeType'],\n 'custom:trackedDeletedText': commentDef.attributes['custom:trackedDeletedText'],\n 'xmlns:custom': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\n };\n });\n\n newCommentsXml.elements[0].elements = commentDefs;\n return newCommentsXml;\n};\n\n\n/**\n * This function updates the commentsExtended.xml structure with the comments list.\n * \n * @param {Array[Object]} comments The comments list\n * @param {Object} commentsExtendedXml The commentsExtended.xml structure as JSON\n * @returns {Object} The updated commentsExtended structure\n */\nexport const updateCommentsExtendedXml = (comments = [], commentsExtendedXml) => {\n const xmlCopy = carbonCopy(commentsExtendedXml);\n\n // Re-build the comment definitions\n const commentsEx = comments.map((comment) => {\n const attributes = {\n 'w15:paraId': comment.commentParaId,\n 'w15:done': comment.resolvedTime ? '1' : '0',\n };\n\n const parentId = comment.parentCommentId;\n if (parentId) {\n const parentComment = comments.find((c) => c.commentId === parentId);\n attributes['w15:paraIdParent'] = parentComment.commentParaId;\n }\n\n return {\n type: 'element',\n name: 'w15:commentEx',\n attributes,\n }\n });\n\n xmlCopy.elements[0].elements = commentsEx;\n return xmlCopy;\n};\n\n\n/**\n * Update commentsIds.xml and commentsExtensible.xml together since they have to\n * share the same durableId for each comment.\n * \n * @param {Array[Object]} comments The comments list\n * @param {Object} commentsIds The commentsIds.xml structure as JSON\n * @param {Object} extensible The commentsExtensible.xml structure as JSON\n * @returns {Object} The updated commentsIds and commentsExtensible structures\n */\nexport const updateCommentsIdsAndExtensible = (comments = [], commentsIds, extensible) => {\n const documentIdsUpdated = carbonCopy(commentsIds);\n const extensibleUpdated = carbonCopy(extensible);\n \n documentIdsUpdated.elements[0].elements = [];\n extensibleUpdated.elements[0].elements = [];\n comments.forEach((comment) => {\n\n const newDurableId = generateRandom32BitHex();\n const newCommentIdDef = {\n \"type\": \"element\",\n \"name\": \"w16cid:commentId\",\n \"attributes\": {\n \"w16cid:paraId\": comment.commentParaId,\n \"w16cid:durableId\": newDurableId,\n }\n };\n documentIdsUpdated.elements[0].elements.push(newCommentIdDef);\n\n const newExtensible = {\n \"type\": \"element\",\n \"name\": \"w16cex:commentExtensible\",\n \"attributes\": {\n \"w16cex:durableId\": newDurableId,\n \"w16cex:dateUtc\": toIsoNoFractional()\n }\n };\n extensibleUpdated.elements[0].elements.push(newExtensible);\n });\n \n return {\n documentIdsUpdated,\n extensibleUpdated,\n }\n};\n\n\n/**\n * Generate the ocument.xml.rels definition\n * \n * @returns {Object} The updated document rels XML structure\n */\nexport const updateDocumentRels = () => {\n return COMMENTS_XML_DEFINITIONS.DOCUMENT_RELS_XML_DEF;\n};\n\n\n/**\n * Generate initial comments XML structure with no content\n * \n * @param {Object} convertedXml The converted XML structure of the docx file\n * @returns {Object} The updated XML structure with the comments files\n */\nexport const generateConvertedXmlWithCommentFiles = (convertedXml) => {\n const newXml = carbonCopy(convertedXml);\n newXml['word/comments.xml'] = COMMENTS_XML_DEFINITIONS.COMMENTS_XML_DEF;\n newXml['word/commentsExtended.xml'] = COMMENTS_XML_DEFINITIONS.COMMENTS_EXTENDED_XML_DEF;\n newXml['word/commentsExtensible.xml'] = COMMENTS_XML_DEFINITIONS.COMMENTS_EXTENSIBLE_XML_DEF;\n newXml['word/commentsIds.xml'] = COMMENTS_XML_DEFINITIONS.COMMENTS_IDS_XML_DEF;\n newXml['[Content_Types].xml'] = COMMENTS_XML_DEFINITIONS.CONTENT_TYPES;\n return newXml;\n};\n\n\n/**\n * Get the comments files converted to XML\n * \n * @param {Object} converter The converter instance\n * @returns {Object} The comments files converted to XML\n */\nexport const getCommentsFilesConverted = (converter, convertedXml) => {\n const commentsXml = convertedXml['word/comments.xml'];\n const commentsExtendedXml = convertedXml['word/commentsExtended.xml'];\n const commentsIdsXml = convertedXml['word/commentsExtensible.xml'];\n const commentsExtensibleXml = convertedXml['word/commentsIds.xml'];\n const contentTypes = convertedXml['[Content_Types].xml'];\n\n return {\n ...convertedXml,\n 'word/comments.xml': converter.schemaToXml(commentsXml.elements[0]),\n 'word/commentsExtended.xml': converter.schemaToXml(commentsExtendedXml.elements[0]),\n 'word/commentsIds.xml': converter.schemaToXml(commentsIdsXml.elements[0]),\n 'word/commentsExtensible.xml': converter.schemaToXml(commentsExtensibleXml.elements[0]),\n '[Content_Types].xml': converter.schemaToXml(contentTypes.elements[0]),\n }\n};\n\n/**\n * Remove comments files from the converted XML\n * \n * @param {Object} convertedXml The converted XML structure of the docx file\n * @returns {Object} The updated XML structure with the comments files removed\n */\nexport const removeCommentsFilesFromConvertedXml = (convertedXml) => {\n const updatedXml = carbonCopy(convertedXml);\n\n delete updatedXml['word/comments.xml'];\n delete updatedXml['word/commentsExtended.xml'];\n delete updatedXml['word/commentsExtensible.xml'];\n delete updatedXml['word/commentsIds.xml'];\n\n return updatedXml;\n};\n\n\n/**\n * Generate a relationship for a comments file target\n * \n * @param {String} target The target of the relationship\n * @returns {Object} The generated relationship\n */\nexport const generateRelationship = (target) => {\n const relsDefault = COMMENTS_XML_DEFINITIONS.DOCUMENT_RELS_XML_DEF.elements[0].elements;\n const rel = relsDefault.find((rel) => rel.attributes.Target === target);\n return { ...rel };\n};\n\n\n/**\n * Generate comments files into convertedXml\n * \n * @param {Object} param0 \n * @returns \n */\nexport const prepareCommentsXmlFilesForExport = ({\n convertedXml,\n defs,\n commentsWithParaIds,\n exportType,\n converter,\n}) => {\n const relationships = [];\n\n // If we're exporting clean, simply remove the comments files\n if (exportType === 'clean') {\n const documentXml = removeCommentsFilesFromConvertedXml(convertedXml);\n return { documentXml, relationships };\n }\n \n // Initialize comments files with empty content\n const updatedXml = generateConvertedXmlWithCommentFiles(convertedXml);\n\n // Update comments.xml\n updatedXml['word/comments.xml'] = updateCommentsXml(\n defs,\n updatedXml['word/comments.xml']\n );\n relationships.push(generateRelationship('comments.xml'));\n\n // Uodate commentsExtended.xml\n updatedXml['word/commentsExtended.xml'] = updateCommentsExtendedXml(\n commentsWithParaIds,\n updatedXml['word/commentsExtended.xml']\n );\n relationships.push(generateRelationship('commentsExtended.xml'));\n\n // Generate updates for documentIds.xml and commentsExtensible.xml here\n // We do them at the same time as we need them to generate and share durable IDs between them\n const { documentIdsUpdated, extensibleUpdated } = updateCommentsIdsAndExtensible(\n commentsWithParaIds,\n updatedXml['word/commentsIds.xml'],\n updatedXml['word/commentsExtensible.xml']\n );\n updatedXml['word/commentsIds.xml'] = documentIdsUpdated;\n updatedXml['word/commentsExtensible.xml'] = extensibleUpdated;\n relationships.push(generateRelationship('commentsIds.xml'));\n relationships.push(generateRelationship('commentsExtensible.xml'));\n\n // Generate export-ready files\n return {\n relationships,\n documentXml: updatedXml,\n }\n};\n","import he from 'he';\nimport { DOMParser as PMDOMParser } from 'prosemirror-model';\nimport { EditorState } from 'prosemirror-state';\nimport { SuperConverter } from './SuperConverter.js';\nimport { toKebabCase } from '@harbour-enterprises/common';\nimport {\n emuToPixels,\n inchesToTwips,\n linesToTwips,\n pixelsToEightPoints,\n pixelsToEmu,\n pixelsToTwips,\n rgbToHex\n} from './helpers.js';\nimport { generateDocxRandomId } from '@helpers/generateDocxRandomId.js';\nimport { DEFAULT_DOCX_DEFS } from './exporter-docx-defs.js';\nimport { TrackDeleteMarkName, TrackInsertMarkName, TrackFormatMarkName } from '@extensions/track-changes/constants.js';\nimport { translateCommentNode } from './v2/exporter/commentsExporter.js';\n\n/**\n * @typedef {Object} ExportParams\n * @property {Object} node JSON node to translate (from PM schema)\n * @property {Object} bodyNode The stored body node to restore, if available\n * @property {Object[]} relationships The relationships to add to the document\n */\n\n/**\n * @typedef {Object} SchemaNode\n * @property {string} type The name of this node from the prose mirror schema\n * @property {Array<SchemaNode>} content The child nodes\n * @property {Object} attrs The node attributes\n * /\n\n/**\n * @typedef {Object} XmlReadyNode\n * @property {string} name The XML tag name\n * @property {Array<XmlReadyNode>} elements The child nodes\n * @property {Object} attributes The node attributes\n */\n\n/**\n * @typedef {Object.<string, *>} SchemaAttributes\n * Key value pairs representing the node attributes from prose mirror\n */\n\n/**\n * @typedef {Object.<string, *>} XmlAttributes\n * Key value pairs representing the node attributes to export to XML format\n */\n\n/**\n * @typedef {Object} MarkType\n * @property {string} type The mark type\n * @property {Object} attrs Any attributes for this mark\n */\n\n/**\n * Main export function. It expects the prose mirror data as JSON (ie: a doc node)\n *\n * @param {ExportParams} params - The parameters object, containing a node and possibly a body node\n * @returns {XmlReadyNode} The complete document node in XML-ready format\n */\nexport function exportSchemaToJson(params) {\n const { type } = params.node || {};\n\n // Node handlers for each node type that we can export\n const router = {\n doc: translateDocumentNode,\n body: translateBodyNode,\n paragraph: translateParagraphNode,\n text: translateTextNode,\n bulletList: translateList,\n orderedList: translateList,\n lineBreak: translateLineBreak,\n table: translateTable,\n tableRow: translateTableRow,\n tableCell: translateTableCell,\n bookmarkStart: translateBookmarkStart,\n fieldAnnotation: translateFieldAnnotation,\n tab: translateTab,\n image: translateImageNode,\n hardBreak: translateHardBreak,\n commentRangeStart: () => translateCommentNode(params, 'Start'),\n commentRangeEnd: () => translateCommentNode(params, 'End'),\n commentReference: () => null,\n };\n\n if (!router[type]) {\n console.error('No translation function found for node type:', type);\n return null;\n }\n\n // Call the handler for this node type\n return router[type](params);\n}\n\n/**\n * There is no body node in the prose mirror schema, so it is stored separately\n * and needs to be restored here.\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} JSON of the XML-ready body node\n */\nfunction translateBodyNode(params) {\n const sectPr = params.bodyNode?.elements.find((n) => n.name === 'w:sectPr') || {};\n\n if (params.converter) {\n const newMargins = params.converter.pageStyles.pageMargins;\n const sectPrMargins = sectPr.elements.find((n) => n.name === 'w:pgMar');\n const { attributes } = sectPrMargins;\n Object.entries(newMargins).forEach(([key, value]) => {\n const convertedValue = inchesToTwips(value);\n attributes[`w:${key}`] = convertedValue;\n });\n sectPrMargins.attributes = attributes;\n };\n\n const elements = translateChildNodes(params);\n return {\n name: 'w:body',\n elements: [...elements, sectPr],\n };\n}\n\n/**\n * Translate a paragraph node\n *\n * @param {ExportParams} node A prose mirror paragraph node\n * @returns {XmlReadyNode} JSON of the XML-ready paragraph node\n */\nexport function translateParagraphNode(params) {\n const elements = translateChildNodes(params);\n\n // Replace current paragraph with content of html annotation\n const htmlAnnotationChild = elements.find((element) => element.name === 'htmlAnnotation');\n if (elements.length === 1 && htmlAnnotationChild) {\n return htmlAnnotationChild.elements;\n }\n\n // Insert paragraph properties at the beginning of the elements array\n const pPr = generateParagraphProperties(params.node);\n if (pPr) elements.unshift(pPr);\n\n let attributes = {};\n if (params.node.attrs?.rsidRDefault) {\n attributes['w:rsidRDefault'] = params.node.attrs.rsidRDefault;\n }\n\n return {\n name: 'w:p',\n elements,\n attributes,\n };\n}\n\n/**\n * Generate the w:pPr props for a paragraph node\n *\n * @param {SchemaNode} node\n * @returns {XmlReadyNode} The paragraph properties node\n */\nfunction generateParagraphProperties(node) {\n const { attrs = {} } = node;\n\n const pPrElements = [];\n\n const { styleId } = attrs;\n if (styleId) pPrElements.push({ name: 'w:pStyle', attributes: { 'w:val': styleId } });\n\n const { spacing, indent, textAlign } = attrs;\n if (spacing) {\n const { lineSpaceBefore, lineSpaceAfter, line, lineRule } = spacing;\n\n const attributes = {};\n\n // Zero values have to be considered in export to maintain accurate line height\n if (lineSpaceBefore >= 0) attributes['w:before'] = pixelsToTwips(lineSpaceBefore);\n if (lineSpaceAfter >= 0) attributes['w:after'] = pixelsToTwips(lineSpaceAfter);\n if (line) attributes['w:line'] = linesToTwips(line);\n attributes['w:lineRule'] = lineRule || \"auto\";\n\n const spacingElement = {\n name: 'w:spacing',\n attributes,\n };\n pPrElements.push(spacingElement);\n }\n\n if (indent) {\n const { left, right, firstLine } = indent;\n const attributes = {};\n if (left || left === 0) attributes['w:left'] = pixelsToTwips(left);\n if (right || right === 0) attributes['w:right'] = pixelsToTwips(right);\n if (firstLine || firstLine === 0) attributes['w:firstLine'] = pixelsToTwips(firstLine);\n\n const indentElement = {\n name: 'w:ind',\n attributes,\n };\n pPrElements.push(indentElement);\n }\n\n if (textAlign) {\n const textAlignElement = {\n name: 'w:jc',\n attributes: { 'w:val': textAlign },\n };\n pPrElements.push(textAlignElement);\n }\n \n if (!pPrElements.length) return null;\n \n return {\n name: 'w:pPr',\n elements: pPrElements,\n };\n}\n\n/**\n * Translate a document node\n *\n * @param {ExportParams} params The parameters object\n * @returns {XmlReadyNode} JSON of the XML-ready document node\n */\nfunction translateDocumentNode(params) {\n const bodyNode = {\n type: 'body',\n content: params.node.content,\n };\n\n const translatedBodyNode = exportSchemaToJson({ ...params, node: bodyNode });\n const node = {\n name: 'w:document',\n elements: [translatedBodyNode],\n attributes: DEFAULT_DOCX_DEFS,\n };\n\n return [node, params];\n}\n\n/**\n * The attributes to flatten and prepare for XML\n *\n * @param {SchemaAttributes} attrs\n * @returns {XmlAttributes} The processed attributes\n */\nfunction processAttributes(attrs) {\n let processedAttrs = {};\n if (!attrs) return processedAttrs;\n\n Object.keys(attrs).forEach((key) => {\n const value = attrs[key];\n if (!value) return;\n\n let newAttr = {};\n if (value instanceof Object) newAttr = processAttributes(value);\n else newAttr[toKebabCase(key)] = value;\n processedAttrs = { ...processedAttrs, ...newAttr };\n });\n return processedAttrs;\n}\n\n/**\n * Process child nodes, ignoring any that are not valid\n *\n * @param {SchemaNode[]} nodes The input nodes\n * @returns {XmlReadyNode[]} The processed child nodes\n */\nfunction translateChildNodes(params) {\n const { content: nodes } = params.node;\n if (!nodes) return [];\n\n const translatedNodes = [];\n nodes.forEach((node) => {\n const translatedNode = exportSchemaToJson({ ...params, node });\n if (translatedNode instanceof Array) translatedNodes.push(...translatedNode);\n else translatedNodes.push(translatedNode);\n });\n\n // Filter out any null nodes\n return translatedNodes.filter((n) => n);\n}\n\n/**\n * Helper function to be used for text node translation\n * Also used for transforming text annotations for the final submit\n *\n * @param {String} text Text node's content\n * @param {Object[]} marks The marks to add to the run properties\n * @returns {XmlReadyNode} The translated text node\n */\n\nfunction getTextNodeForExport(text, marks) {\n const hasLeadingOrTrailingSpace = /^\\s|\\s$/.test(text);\n const space = hasLeadingOrTrailingSpace ? 'preserve' : null;\n const nodeAttrs = space ? { 'xml:space': space } : null;\n\n const outputMarks = processOutputMarks(marks);\n const textNode = {\n name: 'w:t',\n elements: [{ text, type: 'text' }],\n attributes: nodeAttrs,\n };\n \n return wrapTextInRun(textNode, outputMarks);\n}\n\n/**\n * Translate a text node or link node.\n * Link nodes look the same as text nodes but with a link attr.\n * Also, tracked changes are text marks so those need to be separated here.\n * We need to check here and re-route as necessary\n *\n * @param {ExportParams} params The text node to translate\n * @param {SchemaNode} params.node The text node from prose mirror\n * @returns {XmlReadyNode} The translated text node\n */\nfunction translateTextNode(params) {\n const { node } = params;\n\n // Separate tracked changes from regular text\n const trackedMarks = [TrackInsertMarkName, TrackDeleteMarkName];\n const isTrackedNode = node.marks?.some((m) => trackedMarks.includes(m.type));\n if (isTrackedNode) return translateTrackedNode(params);\n\n // Separate links from regular text\n const isLinkNode = node.marks?.some((m) => m.type === 'link');\n if (isLinkNode) return translateLinkNode(params);\n\n const { text, marks = [] } = node;\n\n return getTextNodeForExport(text, marks);\n}\n\nfunction createTrackStyleMark(marks) {\n const trackStyleMark = marks.find((mark) => mark.type === TrackFormatMarkName);\n if (trackStyleMark) {\n const markElement = {\n type: 'element',\n name: 'w:rPrChange',\n attributes: {\n 'w:id': trackStyleMark.attrs.id,\n 'w:author': trackStyleMark.attrs.author,\n 'w:authorEmail': trackStyleMark.attrs.authorEmail,\n 'w:date': trackStyleMark.attrs.date,\n },\n elements: trackStyleMark.attrs.before.map((mark) => processOutputMarks([mark])).filter((r) => r !== undefined),\n };\n return markElement;\n }\n return undefined;\n}\n\nfunction translateTrackedNode(params) {\n const { node } = params;\n const marks = node.marks;\n const trackingMarks = [TrackInsertMarkName, TrackDeleteMarkName, TrackFormatMarkName];\n const trackedMark = marks.find((m) => trackingMarks.includes(m.type));\n const isInsert = trackedMark.type === TrackInsertMarkName;\n\n // Remove marks that we aren't exporting and add style mark if present\n const trackStyleMark = createTrackStyleMark(marks);\n node.marks = marks.filter((m) => !trackingMarks.includes(m.type));\n if (trackStyleMark) {\n node.marks.push(trackStyleMark);\n }\n\n const translatedTextNode = exportSchemaToJson({ ...params, node });\n\n // If this is not an insert, we need to change the text node name\n if (!isInsert) {\n const textNode = translatedTextNode.elements.find((n) => n.name === 'w:t');\n textNode.name = 'w:delText';\n }\n\n const trackedNode = {\n name: isInsert ? 'w:ins' : 'w:del',\n type: 'element',\n attributes: {\n 'w:id': trackedMark.attrs.id,\n 'w:author': trackedMark.attrs.author,\n 'w:authorEmail': trackedMark.attrs.authorEmail,\n 'w:date': trackedMark.attrs.date,\n },\n elements: [translatedTextNode],\n };\n\n return trackedNode;\n}\n\n/**\n * Wrap a text node in a run\n *\n * @param {XmlReadyNode} node\n * @returns {XmlReadyNode} The wrapped run node\n */\nfunction wrapTextInRun(node, marks) {\n const elements = [node];\n if (marks && marks.length) elements.unshift(generateRunProps(marks));\n return {\n name: 'w:r',\n elements,\n };\n}\n\n/**\n * Generate a w:rPr node (run properties) from marks\n *\n * @param {Object[]} marks The marks to add to the run properties\n * @returns\n */\nfunction generateRunProps(marks = []) {\n return {\n name: 'w:rPr',\n elements: marks.filter((mark) => !!Object.keys(mark).length),\n };\n}\n\n/**\n * Get all marks as a list of MarkType objects\n *\n * @param {MarkType[]} marks\n * @returns\n */\nfunction processOutputMarks(marks = []) {\n return marks.flatMap((mark) => {\n if (mark.type === 'textStyle') {\n return Object.entries(mark.attrs)\n .filter(([key, value]) => value)\n .map(([key, value]) => {\n const unwrappedMark = { type: key, attrs: mark.attrs };\n return translateMark(unwrappedMark);\n });\n } else {\n return translateMark(mark);\n }\n });\n}\n\n/**\n * Translate link node. This is a special case because it requires adding a new relationship.\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated link node\n */\nfunction translateLinkNode(params) {\n const { node } = params;\n\n const linkMark = node.marks.find((m) => m.type === 'link');\n const link = linkMark.attrs.href;\n let rId = linkMark.attrs.rId;\n if (!rId) {\n rId = addNewLinkRelationship(params, link);\n }\n\n node.marks = node.marks.filter((m) => m.type !== 'link');\n const outputNode = exportSchemaToJson({ ...params, node });\n const newNode = {\n name: 'w:hyperlink',\n type: 'element',\n attributes: {\n 'r:id': rId,\n },\n elements: [outputNode],\n };\n\n return newNode;\n}\n\n/**\n * Create a new link relationship and add it to the relationships array\n *\n * @param {ExportParams} params\n * @param {string} link The URL of this link\n * @returns {string} The new relationship ID\n */\nfunction addNewLinkRelationship(params, link) {\n const newId = 'rId' + generateDocxRandomId();\n\n if (!params.relationships || !Array.isArray(params.relationships)) params.relationships = [];\n params.relationships.push({\n type: 'element',\n name: 'Relationship',\n attributes: {\n Id: newId,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',\n Target: link,\n TargetMode: 'External',\n },\n });\n return newId;\n}\n\n/**\n * Create a new image relationship and add it to the relationships array\n *\n * @param {ExportParams} params\n * @param {string} imagePath The path to the image\n * @returns {string} The new relationship ID\n */\nfunction addNewImageRelationship(params, imagePath) {\n const newId = 'rId' + generateDocxRandomId();\n const newRel = {\n type: 'element',\n name: 'Relationship',\n attributes: {\n Id: newId,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: imagePath,\n },\n };\n params.relationships.push(newRel);\n return newId;\n}\n\n/**\n * Translate a list node\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated list node\n */\nfunction translateList(params) {\n const { content, type } = params.node;\n const flatContent = flattenContent(content);\n\n const listNodes = [];\n flatContent.forEach((listNode) => {\n const { content, level } = listNode;\n content.forEach((contentNode) => {\n // Get paragraph attributes which were attached to list item node\n const paragraphNode = Object.assign({}, contentNode);\n paragraphNode.attrs = {\n ...paragraphNode.attrs,\n ...listNode.attrs\n };\n \n const outputNode = exportSchemaToJson({ ...params, node: paragraphNode });\n if (!outputNode.elements) {\n outputNode.elements = [];\n }\n const propsElementIndex = outputNode.elements.findIndex((e) => e.name === 'w:pPr');\n \n const listProps = getListParagraphProperties(listNode, level, type, propsElementIndex > -1);\n const content = outputNode.elements.filter((e) => e.name !== 'w:pPr');\n \n if (!content.length) {\n // Some empty nodes could have spacing defined\n const spacingProp = outputNode.elements[propsElementIndex]?.elements.find((e) => e.name === 'w:spacing');\n const elements = spacingProp ? [{\n name: 'w:pPr',\n type: 'element',\n elements: [spacingProp],\n }] : [];\n\n const spacer = { \n name: 'w:p',\n type: 'element',\n elements\n };\n return listNodes.push(spacer);\n }\n if (propsElementIndex === -1) {\n outputNode.elements.unshift(listProps);\n } else {\n outputNode.elements[propsElementIndex].elements.push(listProps);\n }\n \n listNodes.push(outputNode);\n });\n });\n \n return listNodes;\n}\n\n/**\n * Get the paragraph properties for a list\n *\n * @param {SchemaNode} node The list node\n * @param {number} level The list level\n * @param {string} type The list type\n * @param {boolean} hasParentProps Does output node already have pPr\n * @returns {XmlReadyNode} The list paragraph properties node\n */\nfunction getListParagraphProperties(node, level, type, hasParentProps) {\n let listType = type === 'bulletList' ? 1 : 2;\n\n // numbering.xml reference\n if (node.attrs.numId) listType = node.attrs.numId;\n \n const numPr = {\n name: 'w:numPr',\n type: 'element',\n elements: [\n {\n name: 'w:ilvl',\n type: 'element',\n attributes: { 'w:val': level },\n },\n {\n name: 'w:numId',\n type: 'element',\n attributes: { 'w:val': listType },\n },\n ],\n };\n \n if (hasParentProps) {\n return numPr;\n }\n \n return {\n name: 'w:pPr',\n type: 'element',\n elements: [numPr],\n };\n}\n\n/**\n * Flatten list nodes for processing.\n *\n * @param {SchemaNode[]} content List of list nodes\n * @returns {SchemaNode[]} The flattened list nodes\n */\nfunction flattenContent(content) {\n const flatContent = [];\n\n function recursiveFlatten(items, level = 0) {\n if (!items || !items.length) return;\n items.forEach((item) => {\n const subList = item.content.filter((c) => c.type === 'bulletList' || c.type === 'orderedList');\n const notLists = item.content.filter((c) => c.type !== 'bulletList' && c.type !== 'orderedList');\n\n const newItem = { ...item, content: notLists };\n newItem.level = level;\n flatContent.push(newItem);\n\n if (subList.length) {\n recursiveFlatten(subList[0].content, level + 1);\n }\n });\n }\n\n recursiveFlatten(content);\n return flatContent;\n}\n\n/**\n * Translate a line break node\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode}\n */\nfunction translateLineBreak(params) {\n const attributes = {};\n\n const { lineBreakType } = params.node?.attrs || {};\n if (lineBreakType) {\n attributes['w:type'] = lineBreakType;\n }\n\n return {\n name: 'w:br',\n attributes,\n };\n}\n\n/**\n * Translate a table node\n *\n * @param {ExportParams} params The table node to translate\n * @returns {XmlReadyNode} The translated table node\n */\nfunction translateTable(params) {\n params.node = preProcessVerticalMergeCells(params.node, params);\n const elements = translateChildNodes(params);\n const tableProperties = generateTableProperties(params.node);\n const gridProperties = generateTableGrid(params.node);\n\n elements.unshift(tableProperties);\n elements.unshift(gridProperties);\n return {\n name: 'w:tbl',\n elements,\n };\n}\n\n/**\n * Restore vertically merged cells from a table\n * @param {ExportParams.node} table The table node\n * @returns {ExportParams.node} The table node with merged cells restored\n */\nfunction preProcessVerticalMergeCells(table, { editorSchema }) {\n const { content } = table;\n for (let rowIndex = 0; rowIndex < content.length; rowIndex++) {\n const row = content[rowIndex];\n if (!row.content) continue;\n for (let cellIndex = 0; cellIndex < row.content?.length; cellIndex++) {\n const cell = row.content[cellIndex];\n if (!cell) {\n console.log('no cell');\n continue;\n }\n const { attrs } = cell;\n if (attrs.rowspan > 1) {\n // const { mergedCells } = attrs;\n const rowsToChange = content.slice(rowIndex + 1, rowIndex + attrs.rowspan);\n const mergedCell = {\n type: cell.type,\n content: [\n // cells must end with a paragraph\n editorSchema.nodes.paragraph.createAndFill().toJSON(),\n ],\n attrs: {\n ...cell.attrs,\n // reset colspan and rowspan\n colspan: null,\n rowspan: null,\n // to add vMerge\n continueMerge: true,\n },\n };\n\n rowsToChange.forEach((rowToChange, mergedIndex) => {\n rowToChange.content.splice(cellIndex, 0, mergedCell);\n });\n }\n }\n }\n return table;\n}\n\nfunction translateTab(params) {\n const attributes = {};\n\n const { marks = [] } = params.node;\n\n const outputMarks = processOutputMarks(marks);\n const tabNode = {\n name: 'w:tab',\n };\n\n return wrapTextInRun(tabNode, outputMarks);\n}\n\n/**\n * Generate w:tblPr properties node for a table\n *\n * @param {SchemaNode} node\n * @returns {XmlReadyNode} The table properties node\n */\nfunction generateTableProperties(node) {\n const elements = [];\n\n const { attrs } = node;\n const { tableWidth, tableWidthType, tableStyleId, borders, tableIndent, tableLayout, tableCellSpacing } = attrs;\n\n if (tableStyleId) {\n const tableStyleElement = {\n name: 'w:tblStyle',\n attributes: { 'w:val': tableStyleId },\n };\n elements.push(tableStyleElement);\n }\n\n if (borders) {\n const borderElement = generateTableBorders(node);\n elements.push(borderElement);\n }\n\n if (tableIndent) {\n const { width, type } = tableIndent;\n const tableIndentElement = {\n name: 'w:tblInd',\n attributes: { 'w:w': pixelsToTwips(width), 'w:type': type },\n };\n elements.push(tableIndentElement);\n }\n\n if (tableLayout) {\n const tableLayoutElement = {\n name: 'w:tblLayout',\n attributes: { 'w:type': tableLayout },\n };\n elements.push(tableLayoutElement);\n }\n\n if (tableWidth && tableWidth.width) {\n const tableWidthElement = {\n name: 'w:tblW',\n attributes: { 'w:w': pixelsToTwips(tableWidth.width), 'w:type': tableWidth.type },\n };\n elements.push(tableWidthElement);\n }\n\n if (tableCellSpacing) {\n elements.push({\n name: 'w:tblCellSpacing',\n attributes: {\n 'w:w': tableCellSpacing.w,\n 'w:type': tableCellSpacing.type,\n },\n });\n }\n\n return {\n name: 'w:tblPr',\n elements,\n };\n}\n\n/**\n * Generate w:tblBorders properties node for a table\n *\n * @param {SchemaNode} node\n * @returns {XmlReadyNode} The table borders properties node\n */\nfunction generateTableBorders(node) {\n const { borders } = node.attrs;\n const elements = [];\n\n if (!borders) return;\n\n const borderTypes = ['top', 'bottom', 'left', 'right', 'insideH', 'insideV'];\n borderTypes.forEach((type) => {\n const border = borders[type];\n if (!border) return;\n \n let attributes = {};\n if (!Object.keys(border).length || !border.size) {\n attributes = {\n 'w:val': 'nil',\n };\n } else {\n attributes = {\n 'w:val': 'single',\n 'w:sz': pixelsToEightPoints(border.size),\n 'w:space': border.space || 0,\n 'w:color': border?.color?.substring(1) || '000000',\n }\n }\n \n const borderElement = {\n name: `w:${type}`,\n attributes\n };\n elements.push(borderElement);\n });\n\n return {\n name: 'w:tblBorders',\n elements,\n };\n}\n\n/**\n * Generate w:tblGrid properties node for a table\n *\n * @param {SchemaNode} node\n * @returns {XmlReadyNode} The table grid properties node\n */\nfunction generateTableGrid(node) {\n const { gridColumnWidths } = node.attrs;\n \n const elements = [];\n gridColumnWidths?.forEach((width) => {\n elements.push({\n name: 'w:gridCol',\n attributes: { 'w:w': inchesToTwips(width) },\n });\n });\n\n return {\n name: 'w:tblGrid',\n elements,\n };\n}\n\n/**\n * Main translation function for a table row\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated table row node\n */\nfunction translateTableRow(params) {\n const elements = translateChildNodes(params);\n const tableRowProperties = generateTableRowProperties(params.node);\n if (tableRowProperties.elements.length) elements.unshift(tableRowProperties);\n\n return {\n name: 'w:tr',\n elements,\n };\n}\n\nfunction generateTableRowProperties(node) {\n const { attrs } = node;\n const elements = [];\n\n const { rowHeight, rowHeightType } = attrs;\n if (rowHeight) {\n const attributes = { 'w:val': pixelsToTwips(rowHeight) };\n if (rowHeightType) attributes['w:hRule'] = rowHeightType;\n\n const rowHeightElement = {\n name: 'w:trHeight',\n attributes,\n };\n elements.push(rowHeightElement);\n }\n\n return {\n name: 'w:trPr',\n elements,\n };\n}\n\n/**\n * Main translation function for a table cell\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated table cell node\n */\nfunction translateTableCell(params) {\n const elements = translateChildNodes({\n ...params,\n tableCell: params.node,\n });\n const cellProps = generateTableCellProperties(params.node);\n \n elements.unshift(cellProps);\n return {\n name: 'w:tc',\n elements,\n };\n}\n\n/**\n * Generate w:tcPr properties node for a table cell\n *\n * @param {SchemaNode} node\n * @returns {XmlReadyNode} The table cell properties node\n */\nfunction generateTableCellProperties(node) {\n const elements = [];\n\n const { attrs } = node;\n const { colwidth = [], cellWidthType = 'dxa', background = {}, colspan, rowspan, widthUnit } = attrs;\n const colwidthSum = colwidth.reduce((acc, curr) => acc + curr, 0);\n\n const cellWidthElement = {\n name: 'w:tcW',\n attributes: { 'w:w': widthUnit === 'px' ? pixelsToTwips(colwidthSum) : inchesToTwips(colwidthSum), 'w:type': cellWidthType },\n };\n elements.push(cellWidthElement);\n\n if (colspan) {\n const gridSpanElement = {\n name: 'w:gridSpan',\n attributes: { 'w:val': `${colspan}` },\n };\n elements.push(gridSpanElement);\n }\n\n const { color } = background || {};\n if (color) {\n const cellBgElement = {\n name: 'w:shd',\n attributes: { 'w:fill': color },\n };\n elements.push(cellBgElement);\n }\n\n const { cellMargins } = attrs;\n if (cellMargins) {\n const cellMarginsElement = {\n name: 'w:tcMar',\n elements: generateCellMargins(cellMargins),\n };\n elements.push(cellMarginsElement);\n }\n\n const { verticalAlign } = attrs;\n if (verticalAlign) {\n const vertAlignElement = {\n name: 'w:vAlign',\n attributes: { 'w:val': verticalAlign },\n };\n elements.push(vertAlignElement);\n }\n \n // const { vMerge } = attrs;\n // if (vMerge) {}\n if (rowspan && rowspan > 1) {\n const vMergeElement = {\n name: 'w:vMerge',\n type: 'element',\n attributes: { 'w:val': 'restart' },\n };\n elements.push(vMergeElement);\n } else if (attrs.continueMerge) {\n const vMergeElement = {\n name: 'w:vMerge',\n type: 'element',\n };\n elements.push(vMergeElement);\n }\n\n const { borders = {} } = attrs;\n if (!!borders && Object.keys(borders).length) {\n const cellBordersElement = {\n name: 'w:tcBorders',\n elements: Object.entries(borders).map(([key, value]) => {\n if (!value.size) {\n return {\n name: `w:${key}`,\n attributes: {\n 'w:val': 'nil',\n }\n };\n }\n return {\n name: `w:${key}`,\n attributes: {\n 'w:val': 'single',\n 'w:color': value.color ? value.color.substring(1) : 'auto',\n 'w:sz': pixelsToEightPoints(value.size),\n 'w:space': value.space || 0,\n },\n };\n }),\n };\n\n elements.push(cellBordersElement);\n }\n\n return {\n name: 'w:tcPr',\n elements,\n };\n}\n\nfunction generateCellMargins(cellMargins) {\n const elements = [];\n const { top, right, bottom, left } = cellMargins;\n if (top != null) elements.push({ name: 'w:top', attributes: { 'w:w': pixelsToTwips(top) } });\n if (right != null) elements.push({ name: 'w:right', attributes: { 'w:w': pixelsToTwips(right) } });\n if (bottom != null) elements.push({ name: 'w:bottom', attributes: { 'w:w': pixelsToTwips(bottom) } });\n if (left != null) elements.push({ name: 'w:left', attributes: { 'w:w': pixelsToTwips(left) } });\n return elements;\n}\n\n/**\n * Translate bookmark start node. We don't maintain an internal 'end' node since its normal\n * to place it right next to the start. We export both here.\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated bookmark node\n */\nfunction translateBookmarkStart(params) {\n const bookmarkStartNode = {\n name: 'w:bookmarkStart',\n attributes: {\n 'w:id': params.node.attrs.id,\n 'w:name': params.node.attrs.name,\n },\n };\n const bookmarkEndNode = {\n name: 'w:bookmarkEnd',\n attributes: {\n 'w:id': params.node.attrs.id,\n },\n };\n return [bookmarkStartNode, bookmarkEndNode];\n}\n\n/**\n * Translate a mark to an XML ready attribute\n *\n * @param {MarkType} mark\n * @returns {Object} The XML ready mark attribute\n */\nfunction translateMark(mark) {\n const xmlMark = SuperConverter.markTypes.find((m) => m.type === mark.type);\n if (!xmlMark) {\n // TODO: Telemetry\n return {};\n }\n\n const markElement = { name: xmlMark.name, attributes: {} };\n\n const { attrs } = mark;\n let value;\n\n switch (mark.type) {\n case 'bold':\n case 'italic':\n delete markElement.attributes;\n markElement.type = 'element';\n break;\n\n case 'underline':\n markElement.type = 'element';\n markElement.attributes['w:val'] = attrs.underlineType;\n break;\n\n // Text style cases\n case 'fontSize':\n value = attrs.fontSize;\n markElement.attributes['w:val'] = value.slice(0, -2) * 2; // Convert to half-points\n break;\n\n case 'fontFamily':\n value = attrs.fontFamily;\n ['w:ascii', 'w:eastAsia', 'w:hAnsi', 'w:cs'].forEach((attr) => {\n markElement.attributes[attr] = value;\n });\n break;\n\n case 'color':\n let processedColor = attrs.color.replace(/^#/, '').replace(/;$/, ''); // Remove `#` and `;` if present\n if (processedColor.startsWith('rgb')) {\n processedColor = rgbToHex(processedColor);\n }\n markElement.attributes['w:val'] = processedColor;\n break;\n\n case 'textAlign':\n markElement.attributes['w:val'] = attrs.textAlign;\n break;\n\n case 'textIndent':\n markElement.attributes['w:firstline'] = inchesToTwips(attrs.textIndent);\n break;\n\n case 'lineHeight':\n markElement.attributes['w:line'] = linesToTwips(attrs.lineHeight);\n break;\n\n case 'highlight':\n markElement.attributes['w:fill'] = attrs.color?.substring(1);\n markElement.attributes['w:color'] = 'auto';\n markElement.attributes['w:val'] = 'clear';\n markElement.name = 'w:shd';\n break;\n\n case 'link':\n break;\n }\n \n return markElement;\n}\n\nfunction getPngDimensions(base64) {\n if (!base64) return {};\n\n const type = base64.split(';')[0].split('/')[1];\n if (!base64 || type !== 'png') {\n return {\n originalWidth: undefined,\n originalHeight: undefined,\n }\n }\n \n let header = base64.split(',')[1].slice(0, 50)\n let uint8 = Uint8Array.from(atob(header), c => c.charCodeAt(0))\n let dataView = new DataView(uint8.buffer, 0, 28)\n\n return {\n originalWidth: dataView.getInt32(16),\n originalHeight: dataView.getInt32(20)\n }\n}\n\nfunction getScaledSize(originalWidth, originalHeight, maxWidth, maxHeight) {\n let scaledWidth = originalWidth;\n let scaledHeight = originalHeight;\n\n // Calculate aspect ratio\n let ratio = Math.min(maxWidth / originalWidth, maxHeight / originalHeight);\n\n // Scale dimensions\n scaledWidth = Math.round(scaledWidth * ratio);\n scaledHeight = Math.round(scaledHeight * ratio);\n\n return { scaledWidth, scaledHeight };\n}\n\nfunction translateImageNode(params, imageSize) {\n const {\n node: { attrs = {}, marks = [] },\n tableCell,\n } = params;\n\n let imageId = attrs.rId;\n \n const src = attrs.src || attrs.imageSrc;\n const { originalWidth, originalHeight } = getPngDimensions(src);\n \n let size = attrs.size\n ? {\n w: pixelsToEmu(attrs.size.width),\n h: pixelsToEmu(attrs.size.height),\n } : imageSize;\n\n if (originalWidth && originalHeight) {\n const boxWidthPx = emuToPixels(size.w);\n const boxHeightPx = emuToPixels(size.h);\n const { scaledWidth, scaledHeight } = getScaledSize(originalWidth, originalHeight, boxWidthPx, boxHeightPx);\n size = {\n w: pixelsToEmu(scaledWidth),\n h: pixelsToEmu(scaledHeight),\n };\n }\n \n if (tableCell) {\n // Image inside tableCell\n const colwidthSum = tableCell.attrs.colwidth.reduce((acc, curr) => acc + curr, 0);\n const leftMargin = tableCell.attrs.cellMargins?.left || 8;\n const rightMargin = tableCell.attrs.cellMargins?.right || 8;\n const maxWidthEmu = pixelsToEmu(colwidthSum - (leftMargin + rightMargin));\n const { width: w, height: h } = resizeKeepAspectRatio(size.w, size.h, maxWidthEmu);\n if (w && h) size = { w, h };\n }\n \n if (params.node.type === 'image' && !imageId) {\n const path = src?.split('word/')[1];\n imageId = addNewImageRelationship(params, path);\n } else if (params.node.type === 'fieldAnnotation' && !imageId) {\n const type = src?.split(';')[0].split('/')[1];\n if (!type) {\n return prepareTextAnnotation(params);\n }\n \n const hash = generateDocxRandomId(4);\n const cleanUrl = attrs.fieldId.replace('-', '_');\n const imageUrl = `media/${cleanUrl}_${hash}.${type}`;\n\n imageId = addNewImageRelationship(params, imageUrl);\n params.media[`${cleanUrl}_${hash}.${type}`] = src;\n }\n\n const inlineAttrs = attrs.originalPadding || {\n distT: 0,\n distB: 0,\n distL: 0,\n distR: 0,\n };\n\n const drawingXmlns = 'http://schemas.openxmlformats.org/drawingml/2006/main';\n const pictureXmlns = 'http://schemas.openxmlformats.org/drawingml/2006/picture';\n return wrapTextInRun(\n {\n name: 'w:drawing',\n elements: [\n {\n name: 'wp:inline',\n attributes: inlineAttrs,\n elements: [\n {\n name: 'wp:extent',\n attributes: {\n cx: size.w,\n cy: size.h,\n },\n },\n {\n name: 'wp:effectExtent',\n attributes: {\n l: 0,\n t: 0,\n r: 0,\n b: 0,\n },\n },\n {\n name: 'wp:docPr',\n attributes: {\n id: 0,\n name: '',\n descr: '',\n },\n },\n {\n name: 'wp:cNvGraphicFramePr',\n elements: [\n {\n name: 'a:graphicFrameLocks',\n attributes: {\n 'xmlns:a': drawingXmlns,\n noChangeAspect: 1,\n },\n },\n ],\n },\n {\n name: 'a:graphic',\n attributes: { 'xmlns:a': drawingXmlns },\n elements: [\n {\n name: 'a:graphicData',\n attributes: { uri: pictureXmlns },\n elements: [\n {\n name: 'pic:pic',\n attributes: { 'xmlns:pic': pictureXmlns },\n elements: [\n {\n name: 'pic:nvPicPr',\n elements: [\n {\n name: 'pic:cNvPr',\n attributes: {\n id: 0,\n name: '',\n desc: '',\n },\n },\n {\n name: 'pic:cNvPicPr',\n elements: [\n {\n name: 'a:picLocks',\n attributes: {\n noChangeAspect: 1,\n noChangeArrowheads: 1,\n },\n },\n ],\n },\n ],\n },\n {\n name: 'pic:blipFill',\n elements: [\n {\n name: 'a:blip',\n attributes: {\n 'r:embed': imageId,\n cstate: 'none',\n },\n },\n {\n name: 'a:srcRect',\n },\n {\n name: 'a:stretch',\n elements: [{ name: 'a:fillRect' }],\n },\n ],\n },\n {\n name: 'pic:spPr',\n attributes: {\n bwMode: 'auto',\n },\n elements: [\n {\n name: 'a:xfrm',\n elements: [\n {\n name: 'a:ext',\n attributes: {\n cx: size.w,\n cy: size.h,\n },\n },\n {\n name: 'a:off',\n attributes: {\n x: 0,\n y: 0,\n },\n },\n ],\n },\n {\n name: 'a:prstGeom',\n attributes: { prst: 'rect' },\n elements: [{ name: 'a:avLst' }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n [],\n );\n}\n\n/**\n * Translates text annotations\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated text node\n */\nfunction prepareTextAnnotation(params) {\n const {\n node: { attrs = {}, marks = [] },\n } = params;\n\n const marksFromAttrs = translateFieldAttrsToMarks(attrs);\n return getTextNodeForExport(attrs.displayLabel, [...marks, ...marksFromAttrs]);\n}\n\n/**\n * Translates checkbox annotations\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated checkbox node\n */\nfunction prepareCheckboxAnnotation(params) {\n const {\n node: { attrs = {}, marks = [] },\n } = params;\n const content = he.decode(attrs.displayLabel);\n return getTextNodeForExport(content, marks);\n}\n\n/**\n * Translates html annotations\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated html node\n */\nfunction prepareHtmlAnnotation(params) {\n const {\n node: { attrs = {} },\n } = params;\n\n const parser = new window.DOMParser();\n const paragraphHtml = parser.parseFromString(attrs.rawHtml, 'text/html');\n\n const state = EditorState.create({\n doc: PMDOMParser.fromSchema(params.editorSchema).parse(paragraphHtml),\n });\n\n const htmlAnnotationNode = state.doc.toJSON();\n return {\n name: 'htmlAnnotation',\n elements: translateChildNodes({\n node: htmlAnnotationNode,\n }),\n };\n}\n\n/**\n * Translates image annotations\n * @param {ExportParams} params\n * @param {Object} imageSize Object contains width and height for image in EMU\n * @returns {XmlReadyNode} The translated image node\n */\nfunction prepareImageAnnotation(params, imageSize) {\n return translateImageNode(params, imageSize);\n}\n\n/**\n * Translates URL annotations\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated URL node\n */\nfunction prepareUrlAnnotation(params) {\n const {\n node: { attrs = {}, marks = [] },\n } = params;\n const newId = addNewLinkRelationship(params, attrs.linkUrl);\n\n const linkTextNode = getTextNodeForExport(attrs.linkUrl, marks);\n\n return {\n name: 'w:hyperlink',\n type: 'element',\n attributes: {\n 'r:id': newId,\n 'w:history': 1,\n },\n elements: [linkTextNode],\n };\n}\n\n/**\n * Returns node handler based on annotation type\n *\n * @param {String} annotationType\n * @returns {Function} handler for provided annotation type\n */\nfunction getTranslationByAnnotationType(annotationType) {\n const imageEmuSize = {\n w: 4286250,\n h: 4286250,\n };\n\n const signatureEmuSize = {\n w: 990000,\n h: 495000,\n };\n\n const dictionary = {\n text: prepareTextAnnotation,\n image: (params) => prepareImageAnnotation(params, imageEmuSize),\n signature: (params) => prepareImageAnnotation(params, signatureEmuSize),\n checkbox: prepareCheckboxAnnotation,\n html: prepareHtmlAnnotation,\n link: prepareUrlAnnotation,\n };\n\n return dictionary[annotationType];\n}\n\nconst translateFieldAttrsToMarks = (attrs = {}) => {\n const {\n fontFamily,\n fontSize,\n bold,\n underline,\n italic,\n } = attrs;\n\n const marks = [];\n if (fontFamily) marks.push({ type: 'fontFamily', attrs: { fontFamily } });\n if (fontSize) marks.push({ type: 'fontSize', attrs: { fontSize } });\n if (bold) marks.push({ type: 'bold', attrs: {} });\n if (underline) marks.push({ type: 'underline', attrs: {} });\n if (italic) marks.push({ type: 'italic', attrs: {} });\n return marks;\n};\n\n/**\n * Translate a field annotation node\n *\n * @param {ExportParams} params\n * @returns {XmlReadyNode} The translated field annotation node\n */\nfunction translateFieldAnnotation(params) {\n const { node, isFinalDoc } = params;\n const { attrs = {} } = node;\n \n const annotationHandler = getTranslationByAnnotationType(attrs.type);\n if (!annotationHandler) return {};\n\n let processedNode;\n let sdtContentElements;\n \n if (isFinalDoc) {\n return annotationHandler(params);\n } else {\n processedNode = annotationHandler(params);\n sdtContentElements = [processedNode];\n\n if (attrs.type === 'html') {\n sdtContentElements = [...processedNode.elements];\n }\n }\n\n const customXmlns = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';\n return {\n name: 'w:sdt',\n elements: [\n {\n name: 'w:sdtPr',\n elements: [\n { name: 'w:tag', attributes: { 'w:val': attrs.fieldId } },\n { name: 'w:alias', attributes: { 'w:val': attrs.displayLabel } },\n {\n name: 'w:fieldType',\n attributes: {\n 'xmlns:w': customXmlns,\n 'w:val': attrs.fieldType,\n },\n },\n {\n name: 'w:fieldTypeShort',\n attributes: {\n 'xmlns:w': customXmlns,\n 'w:val': attrs.type,\n },\n },\n {\n name: 'w:fieldColor',\n attributes: {\n 'xmlns:w': customXmlns,\n 'w:val': attrs.fieldColor,\n },\n },\n {\n name: 'w:fieldMultipleImage',\n attributes: {\n 'xmlns:w': customXmlns,\n 'w:val': attrs.multipleImage,\n },\n },\n ],\n },\n {\n name: 'w:sdtContent',\n elements: sdtContentElements,\n },\n ],\n };\n};\n\nexport function translateHardBreak() {\n return {\n name: 'w:r',\n elements: [{\n name: 'w:br',\n type: 'element',\n attributes: { 'w:type': 'page' }\n }]\n };\n}\n\nexport class DocxExporter {\n constructor(converter) {\n this.converter = converter;\n }\n\n schemaToXml(data, debug = false) {\n console.debug('[SuperConverter] schemaToXml:', data);\n const result = this.#generate_xml_as_list(data, debug);\n return result.join('');\n }\n\n #generate_xml_as_list(data, debug = falase) {\n const json = JSON.parse(JSON.stringify(data));\n const declaration = this.converter.declaration.attributes;\n const xmlTag = `<?xml${Object.entries(declaration)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('')}?>`;\n const result = this.#generateXml(json, debug);\n const final = [xmlTag, ...result];\n return final;\n }\n\n #replaceSpecialCharacters(text) {\n if (!text) return;\n return text.replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n }\n\n #generateXml(node, debug = false) {\n if (!node) return null;\n let { name } = node;\n const { elements, attributes } = node;\n\n let tag = `<${name}`;\n\n for (let attr in attributes) {\n const parsedAttrName = typeof attributes[attr] === 'string' ? this.#replaceSpecialCharacters(attributes[attr]) : attributes[attr];\n tag += ` ${attr}=\"${parsedAttrName}\"`;\n }\n\n const selfClosing = name && (!elements || !elements.length);\n if (selfClosing) tag += ' />';\n else tag += '>';\n let tags = [tag];\n\n if (name === 'w:instrText') {\n tags.push(elements[0].text);\n } else if (name === 'w:t' || name === 'w:delText') {\n const text = this.#replaceSpecialCharacters(elements[0].text);\n tags.push(text);\n } else {\n if (elements) {\n for (let child of elements) {\n const newElements = this.#generateXml(child);\n if (!newElements) continue;\n const removeUndefined = newElements.filter((el) => {\n return el !== '<undefined>' && el !== '</undefined>'\n });\n \n tags.push(...removeUndefined);\n }\n }\n }\n\n if (!selfClosing) tags.push(`</${name}>`);\n return tags;\n }\n}\n\n\nfunction resizeKeepAspectRatio(width, height, maxWidth) {\n if (width > maxWidth) {\n let scale = maxWidth / width;\n let newHeight = Math.round(height * scale);\n return { width: maxWidth, height: newHeight };\n }\n return { width, height };\n}\n","import xmljs from 'xml-js';\n/**\n * @typedef {Object.<string, XmlNode>} ParsedDocx\n * this should have the `media` as a key for image handling\n */\n\n/**\n * Convert docx to our inner representation\n * @param {{name: string, content: string}[]} docxAsXmlFileList\n * @returns {ParsedDocx}\n */\nexport const docxAsXmlFileList2ParsedDocx = (docxAsXmlFileList) => {\n const convertedXml = {};\n docxAsXmlFileList.forEach((file) => {\n convertedXml[file.name] = parseXmlToJson(file.content);\n });\n return convertedXml;\n};\n\nconst defaultInitialXml = `<w:document xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:cx=\"http://schemas.microsoft.com/office/drawing/2014/chartex\" xmlns:cx1=\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\" xmlns:cx2=\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\" xmlns:cx3=\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\" xmlns:cx4=\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\" xmlns:cx5=\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\" xmlns:cx6=\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\" xmlns:cx7=\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\" xmlns:cx8=\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:aink=\"http://schemas.microsoft.com/office/drawing/2016/ink\" xmlns:am3d=\"http://schemas.microsoft.com/office/drawing/2017/model3d\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:oel=\"http://schemas.microsoft.com/office/2019/extlst\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh wp14\"><w:body></w:body></w:document>`;\n\nexport const parseXmlToJson = (xml) => {\n return JSON.parse(xmljs.xml2json(xml, null, 2));\n};\n\n/**\n *\n * @param {ParsedDocx} parsedDocx\n * @param {string} [fallbackXml]\n */\nexport const getInitialJSON = (parsedDocx, fallbackXml = defaultInitialXml) => {\n return parsedDocx['word/document.xml'] || parseXmlToJson(fallbackXml);\n};\n/**\n *\n * @param {ParsedDocx} parsedDocx\n * @returns *\n */\nconst getDeclaration = (parsedDocx) => {\n return getInitialJSON(parsedDocx).declaration;\n};\n\nconst getThemeInfo = (themeName) => {\n themeName = themeName.toLowerCase();\n const theme1 = this.convertedXml['word/theme/theme1.xml'];\n const themeData = theme1.elements.find((el) => el.name === 'a:theme');\n const themeElements = themeData.elements.find((el) => el.name === 'a:themeElements');\n const fontScheme = themeElements.elements.find((el) => el.name === 'a:fontScheme');\n let fonts;\n\n if (themeName.startsWith('major')) {\n fonts = fontScheme.elements.find((el) => el.name === 'a:majorFont').elements[0];\n } else if (themeName.startsWith('minor')) {\n fonts = fontScheme.elements.find((el) => el.name === 'a:minorFont').elements[0];\n }\n\n const { typeface, panose } = fonts.attributes;\n return { typeface, panose };\n};\n\n/**\n *\n * @param {ParsedDocx} parsedDocx\n * @returns {{} | {fontSizePt: number, kern: string, typeface: string, panose: string}}\n */\nconst getDocumentDefaultStyles = (parsedDocx) => {\n const styles = parsedDocx['word/styles.xml'];\n if (!styles) return {};\n\n const defaults = styles.elements[0].elements.find((el) => el.name === 'w:docDefaults');\n\n // TODO: Check if we need this\n // const pDefault = defaults.elements.find((el) => el.name === 'w:pPrDefault');\n\n // Get the run defaults for this document - this will include font, theme etc.\n const rDefault = defaults.elements.find((el) => el.name === 'w:rPrDefault');\n if ('elements' in rDefault) {\n const rElements = rDefault.elements[0].elements;\n const fontThemeName = rElements.find((el) => el.name === 'w:rFonts')?.attributes['w:asciiTheme'];\n let typeface, panose;\n if (fontThemeName) {\n const fontInfo = getThemeInfo(fontThemeName);\n typeface = fontInfo.typeface;\n panose = fontInfo.panose;\n }\n\n const fontSizePt = Number(rElements.find((el) => el.name === 'w:sz')?.attributes['w:val']) / 2;\n const kern = rElements.find((el) => el.name === 'w:kern')?.attributes['w:val'];\n return { fontSizePt, kern, typeface, panose };\n }\n return {};\n};\n","import { eigthPointsToPixels, halfPointToPoints, twipsToInches, twipsToPixels } from '../../helpers.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleAllTableNodes = (params) => {\n const { nodes } = params;\n if (nodes.length === 0) {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n\n switch (node.name) {\n case 'w:tbl':\n return { nodes: [handleTableNode(node, params)], consumed: 1 };\n }\n\n return { nodes: [], consumed: 0 };\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const tableNodeHandlerEntity = {\n handlerName: 'tableNodeHandler',\n handler: handleAllTableNodes,\n};\n\n/**\n *\n * @param {XmlNode} node\n * @param {ParsedDocx} docx\n * @param {NodeListHandler} nodeListHandler\n * @param {boolean} insideTrackChange\n * @returns {{type: string, content: *, attrs: {borders: *, tableWidth: *, tableWidthType: *}}}\n */\nexport function handleTableNode(node, params) {\n const { docx, nodeListHandler } = params;\n // Table styles\n const tblPr = node.elements.find((el) => el.name === 'w:tblPr');\n\n // Table borders can be specified in tblPr or inside a referenced style tag\n const tableBordersElement = tblPr.elements.find((el) => el.name === 'w:tblBorders');\n const tableBorders = tableBordersElement?.elements || [];\n const { borders, rowBorders } = processTableBorders(tableBorders);\n const tblStyleTag = tblPr.elements.find((el) => el.name === 'w:tblStyle');\n const tableStyleId = tblStyleTag?.attributes['w:val'];\n\n const attrs = { tableStyleId };\n\n // Other table properties\n const tableIndent = tblPr?.elements.find((el) => el.name === 'w:tblInd');\n if (tableIndent) {\n const { 'w:w': width, 'w:type': type } = tableIndent.attributes;\n attrs['tableIndent'] = { width: twipsToPixels(width), type };\n }\n\n const tableLayout = tblPr?.elements.find((el) => el.name === 'w:tblLayout');\n if (tableLayout) {\n const { 'w:type': type } = tableLayout.attributes;\n attrs['tableLayout'] = type;\n }\n\n const referencedStyles = getReferencedTableStyles(tblStyleTag, docx, nodeListHandler);\n const tblW = tblPr.elements.find((el) => el.name === 'w:tblW');\n\n if (tblW) {\n attrs['tableWidth'] = {\n width: twipsToPixels(tblW.attributes['w:w']),\n type: tblW.attributes['w:type'],\n };\n }\n\n const tblCellSpacing = tblPr.elements.find((el) => el.name === 'w:tblCellSpacing');\n if (tblCellSpacing) {\n attrs['tableCellSpacing'] = {\n w: tblCellSpacing.attributes['w:w'],\n type: tblCellSpacing.attributes['w:type'],\n };\n attrs['borderCollapse'] = 'separate';\n }\n\n // TODO: What does this do?\n // const tblLook = tblPr.elements.find((el) => el.name === 'w:tblLook');\n\n const rows = node.elements.filter((el) => el.name === 'w:tr');\n\n const borderData = Object.keys(borders)?.length ? borders : referencedStyles?.borders;\n const borderRowData = Object.keys(rowBorders)?.length ? rowBorders : referencedStyles?.rowBorders;\n attrs['borders'] = borderData;\n\n const content = [];\n rows.forEach((row) => {\n const result = handleTableRowNode(row, node, borderRowData, tblStyleTag, params);\n if (result.content?.length) content.push(result);\n });\n\n return {\n type: 'table',\n content,\n attrs,\n };\n}\n\n/**\n *\n * @param node\n * @param {ParsedDocx} docx\n * @param {NodeListHandler} nodeListHandler\n * @param {boolean} insideTrackChange\n * @returns {{type: string, content: (*|*[]), attrs: {}}}\n */\nexport function handleTableCellNode(\n node,\n row,\n table,\n rowBorders,\n columnWidth = null,\n styleTag,\n params,\n) {\n const { docx, nodeListHandler } = params;\n const tcPr = node.elements.find((el) => el.name === 'w:tcPr');\n const borders = tcPr?.elements?.find((el) => el.name === 'w:tcBorders');\n const inlineBorders = processInlineCellBorders(borders, rowBorders);\n\n const gridColumnWidths = getGridColumnWidths(table);\n\n const tcWidth = tcPr?.elements?.find((el) => el.name === 'w:tcW');\n let width = tcWidth ? twipsToPixels(tcWidth.attributes['w:w']) : null;\n const widthType = tcWidth?.attributes['w:type'];\n\n if (!width && columnWidth) width = columnWidth;\n\n const vMerge = getTableCellMergeTag(node);\n const { attributes: vMergeAttrs } = vMerge || {};\n\n // TODO: Do we need other background attrs?\n const backgroundColor = tcPr?.elements?.find((el) => el.name === 'w:shd');\n const background = {\n color: backgroundColor?.attributes['w:fill'],\n };\n\n const colspanTag = tcPr?.elements?.find((el) => el.name === 'w:gridSpan');\n const colspan = colspanTag?.attributes['w:val'];\n\n const marginTag = tcPr?.elements?.find((el) => el.name === 'w:tcMar');\n\n const verticalAlignTag = tcPr?.elements?.find((el) => el.name === 'w:vAlign');\n const verticalAlign = verticalAlignTag?.attributes['w:val'] || 'top';\n\n const attributes = {};\n const referencedStyles = getReferencedTableStyles(styleTag, docx) || {};\n attributes.cellMargins = getTableCellMargins(marginTag, referencedStyles);\n\n const { fontSize, fonts = {} } = referencedStyles;\n const fontFamily = fonts['ascii'];\n\n if (width) {\n attributes['colwidth'] = [width];\n attributes['widthUnit'] = 'px';\n }\n\n if (widthType) attributes['widthType'] = widthType;\n if (colspan) attributes['colspan'] = Number(colspan);\n if (background) attributes['background'] = background;\n if (verticalAlign) attributes['verticalAlign'] = verticalAlign;\n if (fontSize) attributes['fontSize'] = fontSize;\n if (fontFamily) attributes['fontFamily'] = fontFamily['ascii'];\n if (rowBorders) attributes['borders'] = { ...rowBorders };\n if (inlineBorders) attributes['borders'] = Object.assign(attributes['borders'] || {}, inlineBorders);\n\n // Tables can have vertically merged cells, indicated by the vMergeAttrs\n // if (vMerge) attributes['vMerge'] = vMergeAttrs || 'merged';\n if (vMergeAttrs && vMergeAttrs['w:val'] === 'restart') {\n const rows = table.elements.filter((el) => el.name === 'w:tr');\n const currentRowIndex = rows.findIndex((r) => r === row);\n const remainingRows = rows.slice(currentRowIndex + 1);\n\n const cellsInRow = row.elements.filter((el) => el.name === 'w:tc');\n let cellIndex = cellsInRow.findIndex((el) => el === node);\n let rowspan = 1;\n\n // Iterate through all remaining rows after the current cell, and find all cells that need to be merged\n for (let remainingRow of remainingRows) {\n const firstCell = remainingRow.elements.findIndex((el) => el.name === 'w:tc');\n const cellAtIndex = remainingRow.elements[firstCell + cellIndex];\n\n if (!cellAtIndex) break;\n\n const vMerge = getTableCellMergeTag(cellAtIndex);\n const { attributes: currentCellMergeAttrs } = vMerge || {};\n if (\n (!vMerge && !currentCellMergeAttrs) ||\n (currentCellMergeAttrs && currentCellMergeAttrs['w:val'] === 'restart')\n ) {\n // We have reached the end of the vertically merged cells\n break;\n }\n\n // This cell is part of a merged cell, merge it (remove it from its row)\n rowspan++;\n remainingRow.elements.splice(firstCell + cellIndex, 1);\n }\n attributes['rowspan'] = rowspan;\n }\n\n return {\n type: 'tableCell',\n content: nodeListHandler.handler({ ...params, nodes: node.elements }),\n attrs: attributes,\n };\n}\n\nconst getTableCellMergeTag = (node) => {\n const tcPr = node.elements.find((el) => el.name === 'w:tcPr');\n const vMerge = tcPr?.elements?.find((el) => el.name === 'w:vMerge');\n return vMerge;\n};\n\nconst processBorder = (borders, direction, rowBorders = {}) => {\n const borderAttrs = borders?.elements?.find((el) => el.name === `w:${direction}`)?.attributes;\n\n if (borderAttrs && borderAttrs['w:val'] !== 'nil') {\n const border = {};\n const color = borderAttrs['w:color'];\n if (color) border['color'] = color === 'auto' ? '#000000' : `#${color}`;\n const size = borderAttrs['w:sz'];\n if (size) border['size'] = eigthPointsToPixels(size);\n return border;\n }\n if (borderAttrs && borderAttrs['w:val'] === 'nil') {\n const border = Object.assign({}, rowBorders[direction] || {});\n if (!Object.keys(border)) return null;\n border['val'] = 'none';\n return border;\n }\n return null;\n};\n\nconst processInlineCellBorders = (borders, rowBorders) => {\n if (!borders) return null;\n\n const processedBorders = {};\n const inlineBorderBottom = processBorder(borders, 'bottom', rowBorders);\n if (inlineBorderBottom) processedBorders['bottom'] = inlineBorderBottom;\n const inlineBorderTop = processBorder(borders, 'top', rowBorders);\n if (inlineBorderTop) processedBorders['top'] = inlineBorderTop;\n const inlineBorderLeft = processBorder(borders, 'left', rowBorders);\n if (inlineBorderLeft) processedBorders['left'] = inlineBorderLeft;\n const inlineBorderRight = processBorder(borders, 'right', rowBorders);\n if (inlineBorderRight) processedBorders['right'] = inlineBorderRight;\n\n return processedBorders;\n};\n\n/**\n *\n * @param tblStyleTag\n * @param {ParsedDocx} docx\n * @param {NodeListHandler} nodeListHandler\n * @returns {{uiPriotity: *, borders: {}, name: *, rowBorders: {}, basedOn: *}|null}\n */\nfunction getReferencedTableStyles(tblStyleTag, docx, nodeListHandler) {\n if (!tblStyleTag) return null;\n\n const stylesToReturn = {};\n const { attributes = {} } = tblStyleTag;\n const tableStyleReference = attributes['w:val'];\n if (!tableStyleReference) return null;\n\n const styles = docx['word/styles.xml'];\n const { elements } = styles.elements[0];\n const styleElements = elements.filter((el) => el.name === 'w:style');\n const styleTag = styleElements.find((el) => el.attributes['w:styleId'] === tableStyleReference);\n if (!styleTag) return null;\n\n stylesToReturn.name = styleTag.elements.find((el) => el.name === 'w:name');\n\n // TODO: Do we need this?\n const basedOn = styleTag.elements.find((el) => el.name === 'w:basedOn');\n const uiPriotity = styleTag.elements.find((el) => el.name === 'w:uiPriority');\n\n let baseTblPr;\n if (basedOn?.attributes) {\n const baseStyles = styleElements.find((el) => el.attributes['w:styleId'] === basedOn.attributes['w:val']);\n baseTblPr = baseStyles ? baseStyles.elements.find((el) => el.name === 'w:tblPr') : {};\n }\n\n const pPr = styleTag.elements.find((el) => el.name === 'w:pPr');\n if (pPr) {\n const justification = pPr.elements.find((el) => el.name === 'w:jc');\n if (justification?.attributes) stylesToReturn.justification = justification.attributes['w:val'];\n }\n\n const rPr = styleTag?.elements.find((el) => el.name === 'w:rPr');\n if (rPr) {\n const fonts = rPr.elements.find((el) => el.name === 'w:rFonts');\n if (fonts) {\n const { 'w:ascii': ascii, 'w:hAnsi': hAnsi, 'w:cs': cs } = fonts.attributes;\n stylesToReturn.fonts = { ascii, hAnsi, cs };\n }\n\n const fontSize = rPr.elements.find((el) => el.name === 'w:sz');\n if (fontSize?.attributes) stylesToReturn.fontSize = halfPointToPoints(fontSize.attributes['w:val']) + 'pt';\n }\n\n const tblPr = styleTag.elements.find((el) => el.name === 'w:tblPr');\n if (tblPr && tblPr.elements) {\n if (baseTblPr && baseTblPr.elements) {\n tblPr.elements.push(...baseTblPr.elements);\n }\n\n const tableBorders = tblPr?.elements?.find((el) => el.name === 'w:tblBorders');\n const { elements: borderElements = [] } = tableBorders || {};\n const { borders, rowBorders } = processTableBorders(borderElements);\n if (borders) stylesToReturn.borders = borders;\n if (rowBorders) stylesToReturn.rowBorders = rowBorders;\n\n const tableCellMargin = tblPr?.elements.find((el) => el.name === 'w:tblCellMar');\n if (tableCellMargin) {\n const marginLeft = tableCellMargin.elements.find((el) => el.name === 'w:left');\n const marginRight = tableCellMargin.elements.find((el) => el.name === 'w:right');\n const marginTop = tableCellMargin.elements.find((el) => el.name === 'w:top');\n const marginBottom = tableCellMargin.elements.find((el) => el.name === 'w:bottom');\n stylesToReturn.cellMargins = {\n marginLeft: marginLeft?.attributes['w:w'],\n marginRight: marginRight?.attributes['w:w'],\n marginTop: marginTop?.attributes['w:w'],\n marginBottom: marginBottom?.attributes['w:w'],\n };\n }\n }\n\n return stylesToReturn;\n}\n\n/**\n * Process the table borders\n * @param {Object[]} borderElements\n * @returns\n */\nfunction processTableBorders(borderElements) {\n const borders = {};\n const rowBorders = {};\n borderElements.forEach((borderElement) => {\n const { name } = borderElement;\n const borderName = name.split('w:')[1];\n const { attributes } = borderElement;\n\n const attrs = {};\n const color = attributes['w:color'];\n const size = attributes['w:sz'];\n if (color && color !== 'auto') attrs['color'] = color.startsWith('#') ? color : `#${color}`;\n if (size && size !== 'auto') attrs['size'] = eigthPointsToPixels(size);\n\n const rowBorderNames = ['insideH', 'insideV'];\n if (rowBorderNames.includes(borderName)) rowBorders[borderName] = attrs;\n borders[borderName] = attrs;\n });\n\n return {\n borders,\n rowBorders,\n };\n}\n\n/**\n * Process a table row node\n * @param node\n * @param {undefined | null | {insideH?: *, insideV?: *}} rowBorders\n * @param {ParsedDocx} docx\n * @param {NodeListHandler} nodeListHandler\n * @param {boolean} insideTrackChange\n * @returns {*}\n */\nexport function handleTableRowNode(node, table, rowBorders, styleTag, params) {\n const attrs = {};\n\n const tPr = node.elements.find((el) => el.name === 'w:trPr');\n const rowHeightTag = tPr?.elements?.find((el) => el.name === 'w:trHeight');\n const rowHeight = rowHeightTag?.attributes['w:val'];\n const rowHeightRule = rowHeightTag?.attributes['w:hRule'];\n\n const borders = {};\n if (rowBorders?.insideH) borders['bottom'] = rowBorders.insideH;\n if (rowBorders?.insideV) borders['right'] = rowBorders.insideV;\n attrs['borders'] = borders;\n\n if (rowHeight) {\n attrs['rowHeight'] = twipsToPixels(rowHeight);\n }\n\n const gridColumnWidths = getGridColumnWidths(table);\n\n const cellNodes = node.elements.filter((el) => el.name === 'w:tc');\n const content =\n cellNodes?.map((n, index) => {\n const colWidth = cellNodes.length > 1 ? gridColumnWidths[index] : null;\n return handleTableCellNode(n, node, table, borders, colWidth, styleTag, params);\n }) || [];\n\n const newNode = {\n type: 'tableRow',\n content,\n attrs,\n };\n return newNode;\n}\n\n/**\n * Process the margins for a table cell\n * @param {Object} marginTag\n * @param {Object} referencedStyles\n * @returns\n */\nconst getTableCellMargins = (marginTag, referencedStyles) => {\n const inlineMarginLeftTag = marginTag?.elements?.find((el) => el.name === 'w:left');\n const inlineMarginRightTag = marginTag?.elements?.find((el) => el.name === 'w:right');\n const inlineMarginTopTag = marginTag?.elements?.find((el) => el.name === 'w:top');\n const inlineMarginBottomTag = marginTag?.elements?.find((el) => el.name === 'w:bottom');\n\n const inlineMarginLeftValue = inlineMarginLeftTag?.attributes['w:w'];\n const inlineMarginRightValue = inlineMarginRightTag?.attributes['w:w'];\n const inlineMarginTopValue = inlineMarginTopTag?.attributes['w:w'];\n const inlineMarginBottomValue = inlineMarginBottomTag?.attributes['w:w'];\n\n const { cellMargins = {} } = referencedStyles;\n const {\n marginLeft: marginLeftStyle,\n marginRight: marginRightStyle,\n marginTop: marginTopStyle,\n marginBottom: marginBottomStyle,\n } = cellMargins;\n\n const margins = {\n left: twipsToPixels(inlineMarginLeftValue ?? marginLeftStyle),\n right: twipsToPixels(inlineMarginRightValue ?? marginRightStyle),\n top: twipsToPixels(inlineMarginTopValue ?? marginTopStyle),\n bottom: twipsToPixels(inlineMarginBottomValue ?? marginBottomStyle),\n };\n return margins;\n};\n\nconst getGridColumnWidths = (tableNode) => {\n const tblGrid = tableNode.elements.find((el) => el.name === 'w:tblGrid');\n return (\n tblGrid?.elements?.flatMap((el) => {\n if (el.name !== 'w:gridCol') return [];\n return twipsToPixels(el.attributes['w:w']);\n }) || {}\n );\n};\n","import { emuToPixels } from '../../helpers.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleDrawingNode = (params) => {\n const { nodes, filename } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:drawing') {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n\n let result;\n const { elements } = node;\n\n const currentFileName = filename || null;\n\n // Some images are identified by wp:anchor\n const isAnchor = elements.find((el) => el.name === 'wp:anchor');\n if (isAnchor) result = handleImageImport(elements[0], currentFileName, params);\n\n // Others, wp:inline\n const inlineImage = elements.find((el) => el.name === 'wp:inline');\n if (inlineImage) result = handleImageImport(inlineImage, currentFileName, params);\n return { nodes: result ? [result] : [], consumed: 1 };\n};\n\nexport function handleImageImport(node, currentFileName, params) {\n const { docx } = params;\n const { attributes } = node;\n const padding = {\n top: emuToPixels(attributes['distT']),\n bottom: emuToPixels(attributes['distB']),\n left: emuToPixels(attributes['distL']),\n right: emuToPixels(attributes['distR']),\n };\n\n const extent = node.elements.find((el) => el.name === 'wp:extent');\n const size = {\n width: emuToPixels(extent.attributes?.cx),\n height: emuToPixels(extent.attributes?.cy),\n };\n\n const graphic = node.elements.find((el) => el.name === 'a:graphic');\n const graphicData = graphic.elements.find((el) => el.name === 'a:graphicData');\n\n const picture = graphicData.elements.find((el) => el.name === 'pic:pic');\n if (!picture || !picture.elements) return null;\n\n const blipFill = picture.elements.find((el) => el.name === 'pic:blipFill');\n const blip = blipFill.elements.find((el) => el.name === 'a:blip');\n\n const positionHTag = node.elements.find((el) => el.name === 'wp:positionH');\n const positionH = positionHTag?.elements.find((el) => el.name === 'wp:posOffset');\n const positionHValue = emuToPixels(positionH?.elements[0]?.text);\n\n const positionVTag = node.elements.find((el) => el.name === 'wp:positionV');\n const positionV = positionVTag?.elements.find((el) => el.name === 'wp:posOffset');\n const positionVValue = emuToPixels(positionV?.elements[0]?.text);\n\n const marginOffset = {\n left: positionHValue,\n top: positionVValue,\n };\n\n const { attributes: blipAttributes } = blip;\n const rEmbed = blipAttributes['r:embed'];\n const currentFile = currentFileName || 'document.xml';\n let rels = docx[`word/_rels/${currentFile}.rels`];\n if (!rels) rels = docx[`word/_rels/document.xml.rels`];\n\n const relationships = rels.elements.find((el) => el.name === 'Relationships');\n const { elements } = relationships;\n\n const rel = elements.find((el) => el.attributes['Id'] === rEmbed);\n const { attributes: relAttributes } = rel;\n\n const path = `word/${relAttributes['Target']}`;\n\n return {\n type: 'image',\n attrs: {\n src: path,\n alt: 'Image',\n inline: true,\n padding,\n marginOffset,\n size,\n originalPadding: {\n distT: attributes['distT'],\n distB: attributes['distB'],\n distL: attributes['distL'],\n distR: attributes['distR'],\n },\n rId: relAttributes['Id'],\n },\n };\n}\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const drawingNodeHandlerEntity = {\n handlerName: 'drawingNodeHandler',\n handler: handleDrawingNode,\n};\n","import { SuperConverter } from '../../SuperConverter.js';\nimport { TrackFormatMarkName } from '@extensions/track-changes/constants.js';\nimport { getHexColorFromDocxSystem, isValidHexColor, twipsToInches, twipsToLines } from '../../helpers.js';\n\n/**\n *\n * @param property\n * @returns {PmMarkJson[]}\n */\nexport function parseMarks(property, unknownMarks = [], docx = null) {\n const marks = [];\n const seen = new Set();\n\n property?.elements?.forEach((element) => {\n const marksForType = SuperConverter.markTypes.filter((mark) => mark.name === element.name);\n if (!marksForType.length) {\n const missingMarks = [\n 'w:shd',\n 'w:rStyle',\n 'w:pStyle',\n 'w:numPr',\n 'w:outlineLvl',\n 'w:bdr',\n 'w:pBdr',\n 'w:noProof',\n 'w:contextualSpacing',\n 'w:keepNext',\n 'w:tabs',\n 'w:keepLines',\n ];\n if (missingMarks.includes(element.name)) {\n unknownMarks.push(element.name);\n }\n }\n\n marksForType.forEach((m) => {\n if (!m || seen.has(m.type)) return;\n seen.add(m.type);\n\n const { attributes = {} } = element;\n const newMark = { type: m.type };\n\n if (attributes['w:val'] == '0' || attributes['w:val'] === 'none') {\n return;\n }\n\n // Use the parent mark (ie: textStyle) if present\n if (m.mark) newMark.type = m.mark;\n\n // Marks with attrs: we need to get their values\n if (Object.keys(attributes).length) {\n const value = getMarkValue(m.type, attributes, docx);\n \n // If there is no value for mark it can't be applied\n if (value === null || value === undefined) return;\n \n newMark.attrs = {};\n newMark.attrs[m.property] = value;\n }\n marks.push(newMark);\n });\n });\n return createImportMarks(marks);\n}\n\n/**\n *\n * @param {XmlNode} rPr\n * @param {PmMarkJson[]} currentMarks\n * @returns {PmMarkJson[]} a trackMarksMark, or an empty array\n */\nexport function handleStyleChangeMarks(rPr, currentMarks) {\n const styleChangeMark = rPr.elements?.find((el) => el.name === 'w:rPrChange');\n if (!styleChangeMark) {\n return [];\n }\n\n const { attributes } = styleChangeMark;\n const mappedAttributes = {\n id: attributes['w:id'],\n date: attributes['w:date'],\n author: attributes['w:author'],\n authorEmail: attributes['w:authorEmail'],\n };\n const submarks = parseMarks(styleChangeMark);\n return [{ type: TrackFormatMarkName, attrs: { ...mappedAttributes, before: submarks, after: [...currentMarks] } }];\n}\n\n/**\n *\n * @param {PmMarkJson[]} marks\n * @returns {PmMarkJson[]}\n */\nexport function createImportMarks(marks) {\n const textStyleMarksToCombine = marks.filter((mark) => mark.type === 'textStyle');\n const remainingMarks = marks.filter((mark) => mark.type !== 'textStyle');\n\n // Combine text style marks\n const combinedTextAttrs = {};\n if (textStyleMarksToCombine.length) {\n textStyleMarksToCombine.forEach((mark) => {\n const { attrs = {} } = mark;\n\n Object.keys(attrs).forEach((attr) => {\n combinedTextAttrs[attr] = attrs[attr];\n });\n });\n }\n\n const result = [...remainingMarks, { type: 'textStyle', attrs: combinedTextAttrs }];\n return result;\n}\n\n/**\n *\n * @param {string} markType\n * @param attributes\n * @returns {*}\n */\nfunction getMarkValue(markType, attributes, docx) {\n if (markType === 'tabs') markType = 'textIndent';\n\n const markValueMapper = {\n color: () => `#${attributes['w:val']}`,\n fontSize: () => `${attributes['w:val'] / 2}pt`,\n textIndent: () => getIndentValue(attributes),\n fontFamily: () => getFontFamilyValue(attributes, docx),\n lineHeight: () => getLineHeightValue(attributes),\n textAlign: () => attributes['w:val'],\n link: () => attributes['href'],\n underline: () => attributes['w:val'],\n bold: () => attributes?.['w:val'] || null,\n italic: () => attributes?.['w:val'] || null,\n highlight: () => getHighLightValue(attributes),\n };\n\n if (!(markType in markValueMapper)) {\n console.debug('❗️❗️ No value mapper for:', markType, 'Attributes:', attributes);\n }\n\n // Returned the mapped mark value\n if (markType in markValueMapper) {\n const f = markValueMapper[markType];\n return markValueMapper[markType]();\n }\n}\n\nfunction getFontFamilyValue(attributes, docx) {\n const ascii = attributes['w:ascii'];\n const themeAscii = attributes['w:asciiTheme'];\n\n if (!docx || !themeAscii) return ascii;\n const theme = docx['word/theme/theme1.xml'];\n if (!theme) return ascii;\n\n const { elements: topElements } = theme;\n const { elements } = topElements[0];\n const themeElements = elements.find((el) => el.name === 'a:themeElements');\n const fontScheme = themeElements.elements.find((el) => el.name === 'a:fontScheme');\n const majorFont = fontScheme.elements.find((el) => el.name === 'a:majorFont');\n\n const latin = majorFont.elements.find((el) => el.name === 'a:latin');\n const typeface = latin.attributes['typeface'];\n return typeface;\n\n}\n\nfunction getIndentValue(attributes) {\n let value = attributes['w:left'];\n if (!value) value = attributes['w:firstLine'];\n return `${twipsToInches(value)}in`;\n}\n\nfunction getLineHeightValue(attributes) {\n let value = attributes['w:line'];\n\n // TODO: Figure out handling of additional line height attributes from docx\n // if (!value) value = attributes['w:lineRule'];\n // if (!value) value = attributes['w:after'];\n // if (!value) value = attributes['w:before'];\n if (!value || value === '0') return null;\n return `${twipsToLines(value)}`;\n}\n\nfunction getHighLightValue(attributes) {\n if (attributes['w:fill']) return `#${attributes['w:fill']}`;\n if (isValidHexColor(attributes?.['w:val'])) return `#${attributes['w:val']}`;\n return getHexColorFromDocxSystem(attributes?.['w:val']) || null;\n}\n","import { handleStyleChangeMarks, parseMarks } from './markImporter.js';\nimport { SuperConverter } from '../../SuperConverter.js';\n\n/**\n *\n * @param {XmlNode} node\n * @returns {{elements: *, attributes: {}, marks: *}}\n *\n */\nexport function parseProperties(node, docx) {\n /**\n * What does it mean for a node to have a properties element?\n * It would have a child element that is: w:pPr, w:rPr, w:sectPr\n */\n const marks = [];\n const unknownMarks = [];\n const { attributes = {}, elements = [] } = node;\n const { nodes, paragraphProperties = {}, runProperties = {} } = splitElementsAndProperties(elements);\n paragraphProperties.elements = paragraphProperties?.elements?.filter((el) => el.name !== 'w:rPr');\n\n // Get the marks from the run properties\n if (runProperties && runProperties?.elements?.length) {\n marks.push(...parseMarks(runProperties, unknownMarks));\n }\n\n if (paragraphProperties && paragraphProperties.elements?.length) {\n marks.push(...parseMarks(paragraphProperties, unknownMarks));\n }\n //add style change marks\n marks.push(...handleStyleChangeMarks(runProperties, marks));\n\n // Maintain any extra properties\n if (paragraphProperties && paragraphProperties.elements?.length) {\n attributes['paragraphProperties'] = paragraphProperties;\n }\n\n // If this is a paragraph, don't apply marks but apply attributes directly\n if (marks && node.name === 'w:p') {\n marks.forEach((mark) => {\n const attrValue = Object.keys(mark.attrs ?? {})[0];\n if (attrValue) {\n const value = mark.attrs[attrValue];\n attributes[attrValue] = value;\n }\n });\n }\n\n return { elements: nodes, attributes, marks, unknownMarks };\n}\n\n/**\n *\n * @param {XmlNode[]} elements\n * @returns {{nodes: *, runProperties: *, sectionProperties: *, paragraphProperties: *}}\n */\nfunction splitElementsAndProperties(elements) {\n const pPr = elements.find((el) => el.name === 'w:pPr');\n const rPr = elements.find((el) => el.name === 'w:rPr');\n const sectPr = elements.find((el) => el.name === 'w:sectPr');\n const els = elements.filter((el) => el.name !== 'w:pPr' && el.name !== 'w:rPr' && el.name !== 'w:sectPr');\n\n return {\n nodes: els,\n paragraphProperties: pPr,\n runProperties: rPr,\n sectionProperties: sectPr,\n };\n}\n\n/**\n *\n * @param {XmlNode} element\n * @returns {*}\n */\nexport function getElementName(element) {\n return SuperConverter.allowedElements[element.name || element.type];\n}\n\nexport const isPropertiesElement = (element) => {\n return !!SuperConverter.propertyTypes[element.name || element.type];\n}\n\n/**\n *\n * @param {XmlNode[]} elements\n * @returns {*}\n */\nexport function hasTextNode(elements) {\n const runs = elements.filter((el) => el.name === 'w:r');\n const runsHaveText = runs.some((run) => run.elements.some((el) => el.name === 'w:t'));\n return runsHaveText;\n}\n","import { TrackDeleteMarkName, TrackInsertMarkName } from '@extensions/track-changes/constants.js';\nimport { parseProperties } from './importerHelpers.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleTrackChangeNode = (params) => {\n const { nodes, nodeListHandler } = params;\n if (nodes.length === 0 || !(nodes[0].name === 'w:del' || nodes[0].name === 'w:ins')) {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n const { name } = node;\n const { attributes, elements } = parseProperties(node);\n\n const subs = nodeListHandler.handler({ ...params, insideTrackChange: true, nodes: elements });\n const changeType = name === 'w:del' ? TrackDeleteMarkName : TrackInsertMarkName;\n\n const mappedAttributes = {\n id: attributes['w:id'],\n date: attributes['w:date'],\n author: attributes['w:author'],\n authorEmail: attributes['w:authorEmail'],\n };\n\n subs.forEach((subElement) => {\n if (subElement.marks === undefined) subElement.marks = [];\n subElement.marks.push({ type: changeType, attrs: mappedAttributes });\n });\n\n return { nodes: subs, consumed: 1 };\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const trackChangeNodeHandlerEntity = {\n handlerName: 'trackChangeNodeHandler',\n handler: handleTrackChangeNode,\n};\n","/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleHyperlinkNode = (params) => {\n const { nodes, docx, nodeListHandler } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:hyperlink') {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n\n const rels = docx['word/_rels/document.xml.rels'];\n const relationships = rels.elements.find((el) => el.name === 'Relationships');\n const { elements } = relationships;\n\n const { attributes } = node;\n const rId = attributes['r:id'];\n const anchor = attributes['w:anchor'];\n\n // TODO: Check if we need this atr\n const history = attributes['w:history'];\n\n const rel = elements.find((el) => el.attributes['Id'] === rId) || {};\n const { attributes: relAttributes = {} } = rel;\n let href = relAttributes['Target'];\n\n if (anchor && !href) href = `#${anchor}`;\n\n // Add marks to the run node and process it\n const runNodes = node.elements.filter((el) => el.name === 'w:r');\n const linkMark = { type: 'link', attrs: { href, rId } };\n\n for (const runNode of runNodes) {\n if (!runNode.marks) runNode.marks = [];\n runNode.marks.push(linkMark);\n\n const rPr = runNode.elements.find((el) => el.name === 'w:rPr');\n if (rPr) {\n const styleRel = rPr.elements.find((el) => el.name === 'w:rStyle');\n if (styleRel) {\n const styles = docx['word/styles.xml'];\n const { elements } = styles.elements[0];\n\n const styleElements = elements.filter((el) => el.name === 'w:style');\n const style = styleElements.find((el) => el.attributes['w:styleId'] === 'Hyperlink');\n const styleRpr = style?.elements?.find((el) => el.name === 'w:rPr');\n if (styleRpr) runNode.elements.unshift(styleRpr);\n }\n }\n }\n\n const updatedNode = nodeListHandler.handler({ ...params, nodes: runNodes });\n return { nodes: updatedNode, consumed: 1 };\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const hyperlinkNodeHandlerEntity = {\n handlerName: 'hyperlinkNodeHandler',\n handler: handleHyperlinkNode,\n};\n","import { parseProperties } from './importerHelpers.js';\nimport { createImportMarks } from './markImporter.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nconst handleRunNode = (params) => {\n const { nodes, nodeListHandler, parentStyleId, docx } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:r') {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n\n const childParams = { ...params, nodes: node.elements };\n let processedRun = nodeListHandler.handler(childParams)?.filter((n) => n) || [];\n const hasRunProperties = node.elements?.some((el) => el.name === 'w:rPr');\n const defaultNodeStyles = getMarksFromStyles(docx, parentStyleId);\n if (hasRunProperties) {\n const { marks = [], attributes = {} } = parseProperties(node);\n \n // Apply fonts from related style definition if there is no marks\n const textStyleMark = marks.find(m => m.type === 'textStyle');\n const hasFontStyle = textStyleMark && Object.keys(textStyleMark.attrs).length > 0;\n if (defaultNodeStyles.marks && !hasFontStyle) {\n marks.push(...defaultNodeStyles.marks);\n }\n \n if (node.marks) marks.push(...node.marks);\n processedRun = processedRun.map((n) => ({ ...n, marks: createImportMarks(marks), attributes }));\n } else if (defaultNodeStyles.marks) {\n processedRun = processedRun.map((n) => ({ ...n, marks: createImportMarks(defaultNodeStyles.marks) }));\n }\n return { nodes: processedRun, consumed: 1 };\n};\n\nconst getMarksFromStyles = (docx, styleId) => {\n const styles = docx?.['word/styles.xml'];\n if (!styles) {\n return {};\n }\n\n const styleTags = styles.elements[0].elements.filter((style) => style.name === 'w:style');\n const style = styleTags.find((tag) => tag.attributes['w:styleId'] === styleId) || {};\n\n if (!style) return {};\n\n return parseProperties(style, docx);\n}\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const runNodeHandlerEntity = {\n handlerName: 'runNodeHandler',\n handler: handleRunNode,\n};\n","import { getElementName, parseProperties } from './importerHelpers.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleTextNode = (params) => {\n const { nodes, insideTrackChange } = params;\n if (nodes.length === 0 || !(nodes[0].name === 'w:t' || (insideTrackChange && nodes[0].name === 'w:delText'))) {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n const { type } = node;\n\n // Parse properties\n const { attributes, elements, marks = [] } = parseProperties(node);\n\n // Text nodes have no children. Only text, and there should only be one child\n let text;\n if (elements.length === 1) text = elements[0].text;\n // Word sometimes will have an empty text node with a space attribute, in that case it should be a space\n else if (!elements.length && 'attributes' in node && node.attributes['xml:space'] === 'preserve') {\n text = ' ';\n }\n\n // Ignore others - can catch other special cases here if necessary\n else return { nodes: [], consumed: 0 };\n\n return {\n nodes: [\n {\n type: getElementName(node),\n text: text,\n attrs: { type, attributes: attributes || {} },\n marks,\n },\n ],\n consumed: 1,\n };\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const textNodeHandlerEntity = {\n handlerName: 'textNodeHandler',\n handler: handleTextNode,\n};\n","export const isRegExp = (value) => {\n return Object.prototype.toString.call(value) === '[object RegExp]';\n};\n","import { isRegExp } from './isRegExp.js';\n\n/**\n * Check if obj1 includes obj2\n * @param obj1 Object\n * @param obj2 Object\n */\nexport function objectIncludes(obj1, obj2, options = { strict: true }) {\n const keys = Object.keys(obj2);\n if (!keys.length) return true;\n return keys.every((key) => {\n if (options.strict) return obj2[key] === obj1[key];\n if (isRegExp(obj2[key])) return obj2[key].test(obj1[key]);\n return obj2[key] === obj1[key];\n });\n}\n","import { objectIncludes } from '../../../utilities/objectIncludes.js';\n\nexport const mergeTextNodes = (nodes) => {\n if (!nodes || !Array.isArray(nodes)) {\n return nodes;\n }\n\n let mergedNodes = [];\n let prevTextNode = null;\n\n for (let node of nodes) {\n if (node.type === 'text') {\n if (prevTextNode && canMergeTextNodes(prevTextNode, node)) {\n // Merge text nodes.\n prevTextNode = {\n ...prevTextNode,\n text: (prevTextNode.text += node.text),\n };\n } else {\n // Update prev text node.\n if (prevTextNode) mergedNodes.push(prevTextNode);\n prevTextNode = { ...node };\n }\n } else {\n // Add prev text node if exists and reset.\n if (prevTextNode) {\n mergedNodes.push(prevTextNode);\n prevTextNode = null;\n }\n // Add non-text node.\n mergedNodes.push(node);\n }\n }\n\n // Add last prev text node if exists.\n if (prevTextNode) {\n mergedNodes.push(prevTextNode);\n }\n\n return mergedNodes;\n};\n\nconst canMergeTextNodes = (nodeA, nodeB) => {\n if (!nodeA || !nodeB) return false;\n\n let marksA = nodeA.marks ?? [];\n let marksB = nodeB.marks ?? [];\n\n if (marksA.length !== marksB.length) {\n return false;\n }\n\n for (let i = 0; i < marksA.length; i++) {\n if (marksA[i].type !== marksB[i].type || !areAttrsEqual(marksA[i].attrs, marksB[i].attrs)) {\n return false;\n }\n }\n\n return true;\n};\n\nconst areAttrsEqual = (attrsA = {}, attrsB = {}) => {\n return objectIncludes(attrsA, attrsB);\n};\n","/**\n * Custom error class which allows to pass additional details\n * @param {string} name - Error name\n * @param {string} message - Error message\n * @param {object} details - additional details from the calling context\n */\n\nfunction ErrorWithDetails(name, message, details) {\n this.name = name;\n this.message = message || '';\n this.details = details;\n\n const error = new Error(this.message);\n this.stack = error.stack;\n error.name = this.name;\n}\nErrorWithDetails.prototype = Object.create(Error.prototype);\n\nexport {\n ErrorWithDetails,\n}\n","import { carbonCopy } from '../../../utilities/carbonCopy.js';\nimport { hasTextNode, parseProperties } from './importerHelpers.js';\nimport { preProcessNodesForFldChar, getParagraphSpacing } from './paragraphNodeImporter.js';\nimport { mergeTextNodes } from './mergeTextNodes.js';\nimport { ErrorWithDetails } from '../../../helpers/ErrorWithDetails.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleListNode = (params) => {\n const { nodes } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:p') {\n return { nodes: [], consumed: 0 };\n }\n const node = carbonCopy(nodes[0]);\n\n // We need to pre-process paragraph nodes to combine various possible elements we will find ie: lists, links.\n const processedElements = preProcessNodesForFldChar(node.elements);\n node.elements = processedElements;\n \n const pPr = node.elements.find((el) => el.name === 'w:pPr');\n\n // Check if this paragraph node is a list\n if (testForList(node)) {\n // Get all siblings that are list items and haven't been processed yet.\n const siblings = carbonCopy(nodes);\n const listItems = [];\n\n // Iterate each item until we find the end of the list (a non-list item),\n // then send to the list handler for processing.\n let possibleList = siblings.shift();\n while (possibleList && testForList(possibleList, true)) {\n listItems.push(possibleList);\n possibleList = siblings.shift();\n if (possibleList?.elements && !hasTextNode(possibleList.elements)) {\n listItems.push(possibleList);\n possibleList = siblings.shift();\n }\n }\n\n const listNodes = handleListNodes(listItems, params, 0);\n return {\n nodes: [listNodes],\n consumed: listItems.filter((i) => i.seen).length,\n };\n } else {\n return { nodes: [], consumed: 0 };\n }\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const listHandlerEntity = {\n handlerName: 'listHandler',\n handler: handleListNode,\n};\n\n/**\n * List processing\n *\n * This recursive function takes a list of known list items and combines them into nested lists.\n *\n * It begins with listLevel = 0, and if we find an indented node, we call this function again and increase the level.\n * with the same set of list items (as we do not know the node levels until we process them).\n *\n * @param {Array} listItems - Array of list items to process.\n * @param {ParsedDocx} docx - The parsed docx object.\n * @param {NodeListHandler} nodeListHandler - The node list handler function.\n * @param {boolean} insideTrackChange - Whether we are inside a track change.\n * @param {number} [listLevel=0] - The current indentation level of the list.\n * @returns {Object} The processed list node with structured content.\n */\nfunction handleListNodes(\n listItems,\n params,\n listLevel = 0,\n actualListLevel = 0,\n currentListNumId = null,\n path = '',\n isNested = false,\n) {\n const { docx, nodeListHandler, insideTrackChange } = params;\n const parsedListItems = [];\n let overallListType;\n let listStyleType;\n\n const handleStandardNode = nodeListHandler.handlerEntities.find(\n (e) => e.handlerName === 'standardNodeHandler',\n )?.handler;\n if (!handleStandardNode) {\n console.error('Standard node handler not found');\n return { nodes: [], consumed: 0 };\n }\n\n let listItemIndices = {};\n const initialpPr = listItems[0].elements.find((el) => el.name === 'w:pPr');\n const initialNumPr = initialpPr?.elements?.find((el) => el.name === 'w:numPr');\n const initialNumIdTag = initialNumPr?.elements?.find((el) => el.name === 'w:numId') || {};\n const { attributes: numIdAttrs = {} } = initialNumIdTag;\n currentListNumId = numIdAttrs['w:val'];\n actualListLevel = parseInt(initialNumPr?.elements?.find((el) => el.name === 'w:ilvl')?.attributes['w:val']) || 0;\n let lastNestedListLevel = 0;\n\n for (let [index, item] of listItems.entries()) {\n // Skip items we've already processed\n if (item.seen) continue;\n\n // Sometimes there are paragraph nodes that only have pPr element and no text node - these are\n // Spacers in the XML and need to be appended to the last item.\n if (item.elements && !hasTextNode(item.elements)) {\n const n = handleStandardNode({ ...params, nodes: [item] }).nodes[0];\n if (n) parsedListItems[parsedListItems.length - 1]?.content.push(n); \n item.seen = true;\n continue;\n }\n\n // Get the properties of the node - this is where we will find depth level for the node\n // As well as many other list properties\n const { attributes, elements, marks = [] } = parseProperties(item, docx);\n const textStyle = marks.find((mark) => mark.type === 'textStyle');\n \n const { listType, listOrderingType, ilvl, listrPrs, listpPrs, start, lvlText, lvlJc, numId } =\n getNodeNumberingDefinition(attributes, listLevel, docx);\n listStyleType = listOrderingType;\n const intLevel = parseInt(ilvl);\n\n const isRoot = actualListLevel === intLevel && numId === currentListNumId;\n const isSameListLevelDef = isSameListLevelDefsExceptStart({\n firstListId: numId,\n secondListId: currentListNumId,\n level: intLevel,\n pStyleId: null,\n docx,\n });\n const isDifferentList = numId !== currentListNumId && !isSameListLevelDef;\n const isNested =\n listLevel < intLevel || (listLevel === intLevel && isDifferentList && lastNestedListLevel === listLevel);\n\n // If this node belongs on this list level, add it to the list\n const nodeAttributes = {};\n if (isRoot) {\n overallListType = listType;\n item.seen = true;\n\n const schemaElements = [];\n \n let parNode = {\n type: 'paragraph',\n content: nodeListHandler.handler({ ...params, nodes: [ attributes.paragraphProperties, ...elements ] })?.filter((n) => n),\n };\n\n // Normalize text nodes.\n if (parNode.content) {\n parNode = {\n ...parNode,\n attrs: {\n textAlign: textStyle?.attrs.textAlign || null,\n rsidRDefault: attributes?.['w:rsidRDefault'] || null,\n },\n content: mergeTextNodes(parNode.content),\n };\n }\n\n schemaElements.push(parNode);\n lastNestedListLevel = listLevel;\n\n if (!(intLevel in listItemIndices)) listItemIndices[intLevel] = parseInt(start);\n else listItemIndices[intLevel] += 1;\n\n let thisItemPath = [];\n if (listStyleType !== 'bullet') {\n thisItemPath = [...path, listItemIndices[intLevel]];\n }\n\n if (listpPrs) nodeAttributes['listParagraphProperties'] = listpPrs;\n if (listrPrs) nodeAttributes['listRunProperties'] = listrPrs;\n nodeAttributes['textStyle'] = textStyle;\n nodeAttributes['order'] = start;\n nodeAttributes['lvlText'] = lvlText;\n nodeAttributes['lvlJc'] = textStyle?.attrs.textAlign;\n nodeAttributes['listLevel'] = thisItemPath;\n nodeAttributes['listNumberingType'] = listOrderingType;\n nodeAttributes['attributes'] = {\n parentAttributes: item?.attributes || null,\n };\n nodeAttributes['numId'] = numId;\n \n if (docx) {\n nodeAttributes['spacing'] = getParagraphSpacing(item, docx);\n }\n\n const newListItem = createListItem(schemaElements, nodeAttributes, []);\n parsedListItems.push(newListItem);\n }\n\n // If this item belongs in a deeper list level, we need to process it by calling this function again\n // But going one level deeper.\n else if (isNested) {\n const newPath = [...path, listItemIndices[listLevel]];\n const sublist = handleListNodes(\n listItems.slice(index),\n params,\n listLevel + 1,\n listLevel,\n numId,\n newPath,\n true,\n );\n lastNestedListLevel = sublist.lastNestedListLevel;\n delete sublist.lastNestedListLevel;\n const lastItem = parsedListItems[parsedListItems.length - 1];\n if (!lastItem) {\n parsedListItems.push(createListItem([sublist], nodeAttributes, []));\n } else {\n lastItem.content.push(sublist);\n }\n }\n\n // If this item belongs in a higher list level, we need to break out of the loop and return to higher levels\n else {\n lastNestedListLevel = listLevel;\n break;\n }\n }\n\n const resultingList = {\n type: overallListType || 'bulletList',\n content: parsedListItems,\n attrs: {\n 'list-style-type': listStyleType,\n attributes: {\n parentAttributes: listItems[0]?.attributes || null,\n },\n },\n };\n\n if (isNested) resultingList.lastNestedListLevel = lastNestedListLevel;\n return resultingList;\n}\n\n/**\n *\n * @param {XmlNode} node\n * @param {boolean} isInsideList\n * @returns {boolean|*}\n */\nexport function testForList(node, isInsideList = false) {\n const { elements } = node;\n const pPr = elements?.find((el) => el.name === 'w:pPr');\n if (!pPr) return false;\n\n const paragraphStyle = pPr.elements?.find((el) => el.name === 'w:pStyle');\n const isList = paragraphStyle?.attributes['w:val'] === 'ListParagraph';\n const hasNumPr = pPr.elements?.find((el) => el.name === 'w:numPr');\n return isList || hasNumPr;\n}\n\n/**\n * Creates a list item node with specified content and marks.\n *\n * @param {Array} content - The content of the list item.\n * @param {Array} marks - The marks associated with the list item.\n * @returns {Object} The created list item node.\n */\nfunction createListItem(content, attrs, marks) {\n return {\n type: 'listItem',\n content,\n attrs,\n marks,\n };\n}\n\nconst orderedListTypes = [\n 'decimal', // eg: 1, 2, 3, 4, 5, ...\n 'decimalZero', // eg: 01, 02, 03, 04, 05, ...\n 'lowerRoman', // eg: i, ii, iii, iv, v, ...\n 'upperRoman', // eg: I, II, III, IV, V, ...\n 'lowerLetter', // eg: a, b, c, d, e, ...\n 'upperLetter', // eg: A, B, C, D, E, ...\n 'ordinal', // eg: 1st, 2nd, 3rd, 4th, 5th, ...\n 'cardinalText', // eg: one, two, three, four, five, ...\n 'ordinalText', // eg: first, second, third, fourth, fifth, ...\n 'hex', // eg: 0, 1, 2, ..., 9, A, B, C, ..., F, 10, 11, ...\n 'chicago', // eg: (0, 1, 2, ..., 9, 10, 11, 12, ..., 19, 1A, 1B, 1C, ..., 1Z, 20, 21, ..., 2Z)\n 'none', // No bullet\n];\n\nconst unorderedListTypes = [\n 'bullet', // A standard bullet point (•)\n 'square', // Square bullets (▪)\n 'circle', // Circle bullets (◦)\n 'disc', // Disc bullets (●)\n];\n\n/**\n * Helper to check if all elements in a list def level are the same except\n * the start number value. If so, we can consider these the same list\n * @param {string} firstListId The numId of the first list to compare.\n * @param {string} secondListId The numId of the second list to compare.\n * @param {int} level The ilvl of the list level to compare.\n * @param {Object} docx The docx data\n * @returns {boolean} Whether the list level definitions are the same based on this specific rule.\n */\nconst isSameListLevelDefsExceptStart = ({ firstListId, secondListId, level, pStyleId, docx }) => {\n const { numFmt, lvlText, lvlJc } = getListLevelDefinitionTag(firstListId, level, pStyleId, docx);\n const {\n numFmt: numFmt2,\n lvlText: lvlText2,\n lvlJc: lvlJc2,\n } = getListLevelDefinitionTag(secondListId, level, pStyleId, docx);\n\n const sameNumFmt = numFmt === numFmt2;\n const sameLvlText = lvlText === lvlText2;\n const sameLvlJc = lvlJc === lvlJc2;\n return sameNumFmt && sameLvlText && sameLvlJc;\n};\n\nconst getListNumIdFromStyleRef = (styleId, docx) => {\n const styles = docx['word/styles.xml'];\n if (!styles) return null;\n\n const { elements } = styles;\n const styleTags = elements[0].elements.filter((style) => style.name === 'w:style');\n const style = styleTags.find((tag) => tag.attributes['w:styleId'] === styleId) || {};\n const pPr = style?.elements?.find((style) => style.name === 'w:pPr');\n if (!pPr) return null;\n\n let numPr = pPr?.elements?.find((style) => style.name === 'w:numPr');\n if (!numPr) return null;\n\n let numIdTag = numPr?.elements?.find((style) => style.name === 'w:numId') || {};\n let numId = numIdTag?.attributes?.['w:val'];\n let ilvlTag = numPr?.elements?.find((style) => style.name === 'w:ilvl');\n let ilvl = ilvlTag?.attributes?.['w:val'];\n\n const basedOnTag = style?.elements?.find((style) => style.name === 'w:basedOn');\n const basedOnId = basedOnTag?.attributes?.['w:val'];\n\n // If we don't have a numId, then we need to check the basedOn style\n // Which can in turn be based on some other style and so on.\n let loopCount = 0;\n while (numPr && !numId && loopCount < 10) {\n const basedOnStyle = styleTags.find((tag) => tag.attributes['w:styleId'] === basedOnId) || {};\n const basedOnPPr = basedOnStyle?.elements?.find((style) => style.name === 'w:pPr');\n numPr = basedOnPPr?.elements?.find((style) => style.name === 'w:numPr')\n numIdTag = numPr?.elements?.find((style) => style.name === 'w:numId') || {};\n numId = numIdTag?.attributes?.['w:val'];\n\n if (!ilvlTag) {\n ilvlTag = numPr?.elements?.find((style) => style.name === 'w:ilvl');\n ilvl = ilvlTag?.attributes?.['w:val'];\n }\n\n loopCount++;\n }\n\n return { numId, ilvl };\n};\n\n/**\n * Helper to get the list level definition tag for a specific list level\n * @param {string} numId The numId of the list\n * @param {string} level The level of the list\n * @param {Object} docx The docx data\n * @returns {Object} The list level definition tag start, numFmt, lvlText and lvlJc\n */\nconst getListLevelDefinitionTag = (numId, level, pStyleId, docx) => {\n const def = docx['word/numbering.xml'];\n if (!def) return {};\n\n const { elements } = def;\n const listData = elements[0];\n\n if (pStyleId) {\n const { numId: numIdFromStyles, ilvl: iLvlFromStyles } = getListNumIdFromStyleRef(pStyleId, docx) || {};\n if (numIdFromStyles) numId = numIdFromStyles;\n if (iLvlFromStyles) level = iLvlFromStyles ? parseInt(iLvlFromStyles) : null;\n }\n\n const numberingElements = listData.elements;\n const abstractDefinitions = numberingElements.filter((style) => style.name === 'w:abstractNum');\n const numDefinitions = numberingElements.filter((style) => style.name === 'w:num');\n const numDefinition = numDefinitions.find((style) => style.attributes['w:numId'] === numId);\n\n const abstractNumId = numDefinition?.elements[0].attributes['w:val'];\n const listDefinitionForThisNumId = abstractDefinitions?.find(\n (style) => style.attributes['w:abstractNumId'] === abstractNumId,\n );\n const currentLevel = getDefinitionForLevel(listDefinitionForThisNumId, level);\n\n const numStyleLink = listDefinitionForThisNumId?.elements?.find((style) => style.name === 'w:numStyleLink');\n const numStyleLinkId = numStyleLink?.attributes['w:val'];\n if (numStyleLinkId) {\n const current = getListNumIdFromStyleRef(numStyleLinkId, docx);\n return getListLevelDefinitionTag(current.numId, level, null, docx);\n }\n\n const start = currentLevel?.elements?.find((style) => style.name === 'w:start')?.attributes['w:val'];\n const numFmt = currentLevel?.elements?.find((style) => style.name === 'w:numFmt')?.attributes['w:val'];\n const lvlText = currentLevel?.elements?.find((style) => style.name === 'w:lvlText').attributes['w:val'];\n const lvlJc = currentLevel?.elements?.find((style) => style.name === 'w:lvlJc').attributes['w:val'];\n const pPr = currentLevel?.elements?.find((style) => style.name === 'w:pPr');\n const rPr = currentLevel?.elements?.find((style) => style.name === 'w:rPr');\n return { start, numFmt, lvlText, lvlJc, pPr, rPr };\n};\n\n/**\n * Main function to get list item information from numbering.xml\n *\n * @param {object} attributes\n * @param {int} level\n * @param {ParsedDocx} docx\n * @returns\n */\nexport function getNodeNumberingDefinition(attributes, level, docx) {\n if (!attributes) return;\n\n const { paragraphProperties = {} } = attributes;\n const { elements: listStyles = [] } = paragraphProperties;\n const numPr = listStyles.find((style) => style.name === 'w:numPr');\n if (!numPr) {\n return {};\n }\n\n // Get the indent level\n const ilvlTag = numPr.elements.find((style) => style.name === 'w:ilvl');\n const ilvl = ilvlTag.attributes['w:val'];\n\n // Get the list style id\n const numIdTag = numPr.elements.find((style) => style.name === 'w:numId');\n const numId = numIdTag.attributes['w:val'];\n\n const pStyle = listStyles.find((style) => style.name === 'w:pStyle');\n const pStyleId = pStyle?.attributes['w:val'];\n const {\n start,\n numFmt: listTypeDef,\n lvlText,\n lvlJc,\n pPr,\n rPr,\n } = getListLevelDefinitionTag(numId, level, pStyleId, docx);\n\n // Properties - there can be run properties and paragraph properties\n let listpPrs, listrPrs;\n\n if (pPr) listpPrs = _processListParagraphProperties(pPr);\n if (rPr) listrPrs = _processListRunProperties(rPr);\n\n // Get style for this list level\n let listType;\n if (unorderedListTypes.includes(listTypeDef?.toLowerCase())) listType = 'bulletList';\n else if (orderedListTypes.includes(listTypeDef)) listType = 'orderedList';\n else {\n throw new ErrorWithDetails('ListParsingError', `Unknown list type found during import: ${listTypeDef}`, { \n listOrderingType: listTypeDef, ilvl, numId, listrPrs, listpPrs, start, lvlText, lvlJc \n });\n // throw new Error(`Unknown list type found during import: ${listTypeDef}`);\n }\n\n return { listType, listOrderingType: listTypeDef, ilvl, numId, listrPrs, listpPrs, start, lvlText, lvlJc };\n}\n\nfunction getDefinitionForLevel(data, level) {\n return data?.elements?.find((item) => Number(item.attributes['w:ilvl']) === level);\n}\n\nfunction _processListParagraphProperties(data) {\n const { elements } = data;\n const expectedTypes = ['w:ind', 'w:jc', 'w:tabs'];\n const paragraphProperties = {};\n if (!elements) return paragraphProperties;\n\n elements.forEach((item) => {\n if (!expectedTypes.includes(item.name)) {\n // console.warn(`[numbering.xml] Unexpected list paragraph prop found: ${item.name}`);\n }\n const { attributes = {} } = item;\n Object.keys(attributes).forEach((key) => {\n paragraphProperties[key] = attributes[key];\n });\n });\n return paragraphProperties;\n}\n\nfunction _processListRunProperties(data) {\n const { elements } = data;\n const expectedTypes = [\n 'w:rFonts',\n 'w:b',\n 'w:bCs',\n 'w:i',\n 'w:iCs',\n 'w:strike',\n 'w:dstrike',\n 'w:color',\n 'w:sz',\n 'w:szCs',\n 'w:u',\n 'w:bdr',\n 'w:shd',\n 'w:vertAlign',\n 'w:jc',\n 'w:spacing',\n 'w:w',\n 'w:smallCaps',\n 'w:position',\n 'w:lang',\n ];\n const runProperties = {};\n if (!elements) return runProperties;\n\n elements.forEach((item) => {\n if (!expectedTypes.includes(item.name)) {\n // console.warn(`[numbering.xml] Unexpected list run prop found: ${item.name}`);\n };\n const { attributes = {} } = item;\n Object.keys(attributes).forEach((key) => {\n runProperties[key] = attributes[key];\n });\n });\n return runProperties;\n}\n","import { twipsToInches, twipsToPixels, twipsToLines } from '../../helpers.js';\nimport { testForList } from './listImporter.js';\nimport { carbonCopy } from '../../../utilities/carbonCopy.js';\nimport { mergeTextNodes } from './mergeTextNodes.js';\nimport { parseMarks } from './markImporter.js';\nimport { kebabCase } from '@harbour-enterprises/common';\n\n/**\n * Special cases of w:p based on paragraph properties\n *\n * If we detect a list node, we need to get all nodes that are also lists and process them together\n * in order to combine list item nodes into list nodes.\n *\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleParagraphNode = (params) => {\n const { nodes, docx, nodeListHandler, filename } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:p') {\n return { nodes: [], consumed: 0 };\n }\n\n const node = carbonCopy(nodes[0]);\n\n let schemaNode;\n\n // We need to pre-process paragraph nodes to combine various possible elements we will find ie: lists, links.\n const processedElements = preProcessNodesForFldChar(node.elements);\n node.elements = processedElements;\n\n // Check if this paragraph node is a list\n if (testForList(node)) {\n return { nodes: [], consumed: 0 };\n }\n\n // If it is a standard paragraph node, process normally\n const handleStandardNode = nodeListHandler.handlerEntities.find(\n (e) => e.handlerName === 'standardNodeHandler',\n )?.handler;\n if (!handleStandardNode) {\n console.error('Standard node handler not found');\n return { nodes: [], consumed: 0 };\n }\n\n const updatedParams = {...params, nodes: [node]};\n const result = handleStandardNode(updatedParams);\n if (result.nodes.length === 1) {\n schemaNode = result.nodes[0];\n }\n\n const pPr = node.elements?.find((el) => el.name === 'w:pPr');\n const styleTag = pPr?.elements?.find((el) => el.name === 'w:pStyle');\n if (styleTag) {\n schemaNode.attrs['styleId'] = styleTag.attributes['w:val'];\n }\n\n const indent = pPr?.elements?.find((el) => el.name === 'w:ind');\n if (indent && indent.attributes) {\n const { 'w:left': left, 'w:right': right, 'w:firstLine': firstLine } = indent?.attributes;\n\n if (schemaNode.attrs) {\n if (!schemaNode.attrs.indent) schemaNode.attrs.indent = {};\n if (left) schemaNode.attrs['indent'].left = twipsToPixels(left);\n if (right) schemaNode.attrs['indent'].right = twipsToPixels(right);\n if (firstLine) schemaNode.attrs['indent'].firstLine = twipsToPixels(firstLine);\n }\n\n const textIndentVal = left || firstLine || 0;\n schemaNode.attrs['textIndent'] = `${twipsToInches(textIndentVal)}in`;\n }\n\n const justify = pPr?.elements?.find((el) => el.name === 'w:jc');\n if (justify && justify.attributes) {\n schemaNode.attrs['textAlign'] = justify.attributes['w:val'];\n }\n\n if (docx) {\n const defaultStyleId = node.attributes?.['w:rsidRDefault'];\n schemaNode.attrs['spacing'] = getParagraphSpacing(node, docx);\n schemaNode.attrs['rsidRDefault'] = defaultStyleId;\n }\n\n schemaNode.attrs['filename'] = filename;\n\n // Normalize text nodes.\n if (schemaNode && schemaNode.content) {\n schemaNode = {\n ...schemaNode,\n content: mergeTextNodes(schemaNode.content),\n };\n }\n\n return { nodes: schemaNode ? [schemaNode] : [], consumed: 1 };\n};\n\nexport const getParagraphSpacing = (node, docx) => {\n // Check if we have default paragraph styles to override\n const spacing = {\n lineSpaceAfter: 0,\n lineSpaceBefore: 0,\n line: 0,\n lineRule: null,\n }\n\n const { spacing: pDefaultSpacing = {} } = getDefaultParagraphStyle(docx);\n let lineSpaceAfter, lineSpaceBefore, line, lineRuleStyle;\n\n const pPr = node.elements?.find((el) => el.name === 'w:pPr');\n const inLineSpacingTag = pPr?.elements?.find((el) => el.name === 'w:spacing');\n const inLineSpacing = inLineSpacingTag?.attributes || {};\n\n // These styles are taken in order of precedence\n // 1. Inline spacing\n // 2. Default style spacing\n // 3. Default paragraph spacing\n const lineSpacing = inLineSpacing?.['w:line'] || line || pDefaultSpacing?.['w:line'];\n if (lineSpacing) spacing.line = twipsToLines(lineSpacing);\n\n const beforeSpacing = inLineSpacing?.['w:before'] || lineSpaceBefore || pDefaultSpacing?.['w:before'];\n if (beforeSpacing) spacing.lineSpaceBefore = twipsToPixels(beforeSpacing);\n\n const afterSpacing = inLineSpacing?.['w:after'] || lineSpaceAfter || pDefaultSpacing?.['w:after'];\n if (afterSpacing) spacing.lineSpaceAfter = twipsToPixels(afterSpacing);\n\n const lineRule = inLineSpacing?.['w:lineRule'] || lineRuleStyle || pDefaultSpacing?.['w:lineRule'];\n if (lineRule) spacing.lineRule = lineRule;\n\n return spacing;\n};\n\nconst getDefaultParagraphStyle = (docx) => {\n const styles = docx['word/styles.xml'];\n if (!styles) {\n return {};\n }\n const defaults = styles.elements[0].elements?.find((el) => el.name === 'w:docDefaults');\n const pDefault = defaults.elements.find((el) => el.name === 'w:pPrDefault');\n const pPrDefault = pDefault?.elements?.find((el) => el.name === 'w:pPr');\n const pPrDefaultSpacingTag = pPrDefault?.elements?.find((el) => el.name === 'w:spacing') || {};\n const { attributes: pPrDefaultSpacingAttr } = pPrDefaultSpacingTag;\n\n return {\n spacing: pPrDefaultSpacingAttr,\n }\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const paragraphNodeHandlerEntity = {\n handlerName: 'paragraphNodeHandler',\n handler: handleParagraphNode,\n};\n\n/**\n * @param {string} defaultStyleId\n * @param {ParsedDocx} docx\n */\nexport function getDefaultStyleDefinition(defaultStyleId, docx) {\n const result = { lineSpaceBefore: null, lineSpaceAfter: null };\n if (!defaultStyleId) return result;\n\n const styles = docx['word/styles.xml'];\n if (!styles) return result;\n\n const { elements } = styles.elements[0];\n const elementsWithId = elements.filter((el) => {\n const { attributes } = el;\n return attributes && attributes['w:styleId'] === defaultStyleId;\n });\n\n const firstMatch = elementsWithId[0];\n if (!firstMatch) return result;\n\n const qFormat = elementsWithId.find((el) => {\n const qFormat = el.elements.find((innerEl) => innerEl.name === 'w:qFormat');\n return qFormat;\n });\n\n const name = elementsWithId.find(el =>\n el.elements.some(inner => inner.name === 'w:name')\n )?.elements.find(inner => inner.name === 'w:name')?.attributes['w:val'];\n\n // pPr\n const pPr = firstMatch.elements.find((el) => el.name === 'w:pPr');\n const spacing = pPr?.elements?.find((el) => el.name === 'w:spacing');\n const justify = pPr?.elements?.find((el) => el.name === 'w:jc');\n const indent = pPr?.elements?.find((el) => el.name === 'w:ind');\n\n let lineSpaceBefore, lineSpaceAfter, line;\n if (spacing) {\n lineSpaceBefore = twipsToPixels(spacing?.attributes['w:before']);\n lineSpaceAfter = twipsToPixels(spacing?.attributes['w:after']);\n line = twipsToLines(spacing?.attributes['w:line']);\n };\n\n let textAlign, leftIndent, rightIndent, firstLine;\n if (indent) {\n textAlign = justify?.attributes['w:val'];\n leftIndent = twipsToPixels(indent?.attributes['w:left']);\n rightIndent = twipsToPixels(indent?.attributes['w:right']);\n firstLine = twipsToPixels(indent?.attributes['w:firstLine']);\n };\n\n const keepNext = pPr?.elements?.find((el) => el.name === 'w:keepNext');\n const keepLines = pPr?.elements?.find((el) => el.name === 'w:keepLines');\n\n const outlineLevel = pPr?.elements?.find((el) => el.name === 'w:outlineLvl');\n const outlineLvlValue = outlineLevel?.attributes['w:val'];\n\n const pageBreakBefore = pPr?.elements?.find((el) => el.name === 'w:pageBreakBefore');\n let pageBreakBeforeVal = 0;\n if (pageBreakBefore) {\n if (!pageBreakBefore.attributes?.['w:val']) pageBreakBeforeVal = 1;\n else pageBreakBeforeVal = Number(pageBreakBefore?.attributes?.['w:val'])\n };\n const pageBreakAfter = pPr?.elements?.find((el) => el.name === 'w:pageBreakAfter');\n let pageBreakAfterVal;\n if (pageBreakAfter) {\n if (!pageBreakAfter.attributes?.['w:val']) pageBreakAfterVal = 1;\n else pageBreakAfterVal = Number(pageBreakAfter?.attributes?.['w:val'])\n };\n\n const parsedAttrs = {\n name,\n qFormat: qFormat ? true : false,\n keepNext: keepNext ? true : false,\n keepLines: keepLines ? true : false,\n outlineLevel: outlineLevel ? parseInt(outlineLvlValue) : null,\n pageBreakBefore: pageBreakBeforeVal ? true : false,\n pageBreakAfter: pageBreakAfterVal ? true : false,\n };\n\n // rPr\n const rPr = firstMatch.elements.find((el) => el.name === 'w:rPr');\n const parsedMarks = parseMarks(rPr, [], docx) || {};\n const parsedStyles = {\n spacing: { lineSpaceAfter, lineSpaceBefore, line },\n textAlign,\n indent: { leftIndent, rightIndent, firstLine },\n };\n\n parsedMarks.forEach((mark) => {\n const { type, attrs } = mark;\n if (type === 'textStyle') {\n Object.entries(attrs).forEach(([key, value]) => {\n parsedStyles[kebabCase(key)] = value\n });\n return;\n };\n\n parsedStyles[type] = attrs;\n });\n\n // pPr marks \n return {\n attrs: parsedAttrs,\n styles: parsedStyles,\n };\n}\n\n/**\n * We need to pre-process nodes in a paragraph to combine nodes together where necessary ie: links\n * TODO: Likely will find more w:fldChar to deal with.\n *\n * @param {XmlNode[]} nodes\n * @returns\n */\nexport function preProcessNodesForFldChar(nodes) {\n const processedNodes = [];\n const nodesToCombine = [];\n let isCombiningNodes = false;\n nodes?.forEach((n) => {\n const fldChar = n.elements?.find((el) => el.name === 'w:fldChar');\n if (fldChar) {\n const fldType = fldChar.attributes['w:fldCharType'];\n if (fldType === 'begin') {\n isCombiningNodes = true;\n nodesToCombine.push(n);\n } else if (fldType === 'end') {\n nodesToCombine.push(n);\n isCombiningNodes = false;\n }\n } else {\n processedNodes.push(n);\n }\n\n if (isCombiningNodes) {\n nodesToCombine.push(n);\n } else if (!isCombiningNodes && nodesToCombine.length) {\n // Need to extract all nodes between 'separate' and 'end' fldChar nodes\n const textStart = nodesToCombine.findIndex((n) =>\n n.elements?.some((el) => el.name === 'w:fldChar' && el.attributes['w:fldCharType'] === 'separate'),\n );\n const textEnd = nodesToCombine.findIndex((n) =>\n n.elements?.some((el) => el.name === 'w:fldChar' && el.attributes['w:fldCharType'] === 'end'),\n );\n const textNodes = nodesToCombine.slice(textStart + 1, textEnd);\n const instrText = nodesToCombine.find((n) => n.elements?.some((el) => el.name === 'w:instrText'))?.elements[0]\n ?.elements[0].text;\n const urlMatch = instrText?.match(/HYPERLINK\\s+\"([^\"]+)\"/);\n\n if (!urlMatch || urlMatch?.length < 2) return [];\n const url = urlMatch[1];\n\n const textMarks = [];\n textNodes.forEach((n) => {\n const rPr = n.elements.find((el) => el.name === 'w:rPr');\n if (!rPr) return;\n\n const { elements } = rPr;\n elements.forEach((el) => {\n textMarks.push(el);\n });\n });\n\n // Create a rPr and replace all nodes with the updated node.\n const linkMark = { name: 'link', attributes: { href: url } };\n const rPr = { name: 'w:rPr', type: 'element', elements: [linkMark, ...textMarks] };\n processedNodes.push({\n name: 'w:r',\n type: 'element',\n elements: [rPr, ...textNodes],\n });\n }\n });\n\n return processedNodes;\n}\n","/**\n * Handler for docPartObject: docPartGallery node type of 'Table of contents'\n * @param {*} node\n * @param {*} docx\n * @param {*} nodeListHandler\n * @param {*} insideTrackChange\n * @returns {Array} The processed nodes\n */\nexport const tableOfContentsHandler = (params) => {\n return nodeListHandler.handler({ ...params, nodes: node.elements });\n};\n","import { tableOfContentsHandler } from './docPartGalleryImporter.js';\n\nexport const handleDocPartObj = (params) => {\n const { nodes } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:sdt') {\n return { nodes: [], consumed: 0 };\n }\n\n const node = nodes[0];\n const sdtPr = node.elements.find((el) => el.name === 'w:sdtPr');\n const docPartObj = sdtPr?.elements.find((el) => el.name === 'w:docPartObj');\n const docPartGallery = docPartObj?.elements.find((el) => el.name === 'w:docPartGallery');\n const docPartGalleryType = docPartGallery?.attributes['w:val'];\n\n if (!docPartGalleryType) {\n return { nodes: [], consumed: 0 };\n }\n\n if (!validGalleryTypeMap[docPartGalleryType]) {\n // TODO: Handle catching unkown gallery types\n return { nodes: [], consumed: 0 };\n }\n\n const content = node?.elements.find((el) => el.name === 'w:sdtContent');\n const handler = validGalleryTypeMap[docPartGalleryType];\n const result = handler({ ...params, nodes: [content] });\n\n return {\n nodes: result,\n consumed: 1,\n };\n};\n\nconst validGalleryTypeMap = {\n 'Table of Contents': tableOfContentsHandler,\n};\n","import { handleDocPartObj } from './docPartObjImporter';\nimport { parseMarks } from './markImporter.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleAnnotationNode = (params) => {\n const { nodes, docx, nodeListHandler, insideTrackChange } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:sdt') {\n return { nodes: [], consumed: 0 };\n }\n\n const node = nodes[0];\n const sdtPr = node.elements.find((el) => el.name === 'w:sdtPr');\n const sdtContent = node.elements.find((el) => el.name === 'w:sdtContent');\n const { attrs: marksAsAttrs, marks } = parseAnnotationMarks(sdtContent);\n\n const docPartObj = sdtPr?.elements.find((el) => el.name === 'w:docPartObj');\n if (docPartObj) {\n return handleDocPartObj({ nodes, docx, nodeListHandler, insideTrackChange });\n }\n\n const alias = sdtPr?.elements.find((el) => el.name === 'w:alias');\n const tag = sdtPr?.elements.find((el) => el.name === 'w:tag');\n const fieldType = sdtPr?.elements.find((el) => el.name === 'w:fieldType')?.attributes['w:val'];\n const type = sdtPr?.elements.find((el) => el.name === 'w:fieldTypeShort')?.attributes['w:val'];\n const fieldColor = sdtPr?.elements.find((el) => el.name === 'w:fieldColor')?.attributes['w:val'];\n const isMultipleImage = sdtPr?.elements.find((el) => el.name === 'w:fieldMultipleImage')?.attributes['w:val'];\n\n const attrs = {\n type,\n fieldId: tag?.attributes['w:val'],\n displayLabel: alias?.attributes['w:val'],\n fieldType,\n fieldColor,\n multipleImage: isMultipleImage === 'true',\n };\n\n if (!attrs.fieldId || !attrs.displayLabel) {\n return { nodes: [], consumed: 0 };\n }\n \n let result = {\n type: 'text',\n text: `{{${attrs.displayLabel}}}`,\n attrs: { ...attrs, ...marksAsAttrs },\n marks,\n };\n \n if (params.editor.options.annotations) {\n result = {\n type: 'fieldAnnotation',\n attrs: { ...attrs, ...marksAsAttrs }\n };\n };\n \n return {\n nodes: [result],\n consumed: 1,\n };\n};\n\n/**\n * Marks for annotations need to be converted to attributes\n * @param {Object} content The sdtContent node\n * @returns {Object} The attributes object\n */\nexport const parseAnnotationMarks = (content = {}) => {\n const run = content.elements?.find((el) => el.name === 'w:r');\n const rPr = run?.elements?.find((el) => el.name === 'w:rPr');\n if (!rPr) return {};\n\n // TODO: Telemetry\n const unknownMarks = [];\n const marks = parseMarks(rPr, unknownMarks) || [];\n\n const marksWithFlatFontStyles = [];\n marks.forEach((mark) => {\n const { type } = mark;\n if (type === 'textStyle') {\n const { attrs } = mark;\n Object.keys(attrs).forEach((key) => {\n marksWithFlatFontStyles.push({ type: key, attrs: attrs[key] });\n });\n } else {\n marksWithFlatFontStyles.push(mark);\n }\n });\n\n const attrs = {};\n marksWithFlatFontStyles?.forEach((mark) => {\n const { type } = mark;\n attrs[type] = mark.attrs || true;\n })\n return {\n attrs,\n marks\n };\n}\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const annotationNodeHandlerEntity = {\n handlerName: 'annotationNodeHandler',\n handler: handleAnnotationNode,\n};\n","import { getElementName, parseProperties, isPropertiesElement } from './importerHelpers.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleStandardNode = (params) => {\n const { nodes, docx, nodeListHandler } = params;\n if (!nodes || nodes.length === 0) {\n return { nodes: [], consumed: 0 };\n }\n\n // Parse properties\n const node = nodes[0];\n const { name } = node;\n const { attributes, elements, marks = [] } = parseProperties(node, docx);\n\n if (name === 'w:sdt') {\n return { nodes: [], consumed: 0 };\n }\n \n // Formatting only nodes\n if (isPropertiesElement(node)) {\n return {\n nodes: [{\n type: getElementName(node),\n attrs: { ...attributes },\n marks: [],\n }],\n consumed: 0\n };\n }\n \n // Unhandled nodes\n if (!getElementName(node)) {\n return { \n nodes: [{\n type: name,\n content: elements,\n attrs: { ...attributes },\n marks,\n }], \n consumed: 0,\n unhandled: true,\n };\n }\n\n // Iterate through the children and build the schemaNode content\n // Skip run properties since they are formatting only elements\n const content = [];\n const parentStyleId = getParentStyleId(node);\n if (elements && elements.length) {\n const updatedElements = elements.map((el) => {\n if (!el.marks) el.marks = [];\n el.marks.push(...marks);\n return el;\n });\n \n const childParams = { ...params, nodes: updatedElements, parentStyleId };\n const childContent = nodeListHandler.handler(childParams);\n content.push(...childContent);\n }\n \n const resultNode = {\n type: getElementName(node),\n content,\n attrs: { ...attributes },\n marks: [],\n };\n \n return { nodes: [resultNode], consumed: 1 };\n};\n\nconst getParentStyleId = node => {\n const pPr = node.elements?.find((el) => el.name === 'w:pPr');\n const styleTag = pPr?.elements?.find((el) => el.name === 'w:pStyle');\n return styleTag ? styleTag.attributes['w:val'] : null;\n}\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const standardNodeHandlerEntity = {\n handlerName: 'standardNodeHandler',\n handler: handleStandardNode,\n};\n","/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleLineBreakNode = (params) => {\n const { nodes } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:br') {\n return { nodes: [], consumed: 0 };\n }\n\n const attrs = {};\n\n const lineBreakType = nodes[0].attributes?.['w:type'];\n if (lineBreakType) attrs['lineBreakType'] = lineBreakType;\n\n const breakType = lineBreakType === 'page' ? 'hardBreak' : 'lineBreak';\n return {\n nodes: [{\n type: breakType,\n }], consumed: 1\n };\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const lineBreakNodeHandlerEntity = {\n handlerName: 'lineBreakNodeHandler',\n handler: handleLineBreakNode,\n};\n","/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nexport const handleBookmarkNode = (params) => {\n const { nodes, nodeListHandler } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:bookmarkStart') {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n\n const handleStandardNode = nodeListHandler.handlerEntities.find(\n (e) => e.handlerName === 'standardNodeHandler',\n )?.handler;\n if (!handleStandardNode) {\n console.error('Standard node handler not found');\n return { nodes: [], consumed: 0 };\n };\n\n const updatedParams = {...params, nodes: [node]};\n const result = handleStandardNode(updatedParams);\n if (result.nodes.length === 1) {\n result.nodes[0].attrs.name = node.attributes['w:name'];\n result.nodes[0].attrs.id = node.attributes['w:id'];\n }\n return result;\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const bookmarkNodeHandlerEntity = {\n handlerName: 'bookmarkNodeHandler',\n handler: handleBookmarkNode,\n};\n","import { parseProperties } from './importerHelpers.js';\n\n/**\n * @type {import(\"docxImporter\").NodeHandler}\n */\nconst handleTabNode = (params) => {\n const { nodes } = params;\n if (nodes.length === 0 || nodes[0].name !== 'w:tab') {\n return { nodes: [], consumed: 0 };\n }\n const node = nodes[0];\n const { attributes = {} } = node;\n const processedNode = {\n type: 'tab',\n attrs: {\n tabSize: attributes['w:val'] || 48,\n },\n content: [],\n };\n return { nodes: [processedNode], consumed: 1 };\n};\n\n/**\n * @type {import(\"docxImporter\").NodeHandlerEntry}\n */\nexport const tabNodeEntityHandler = {\n handlerName: 'runNodeHandler',\n handler: handleTabNode,\n};\n","import { v4 as uuidv4 } from 'uuid';\nimport { defaultNodeListHandler } from \"./docxImporter\";\n\n/**\n * Parse comments.xml into SuperDoc-ready comments\n * These will be available in converter.comments\n * \n * @param {Object} param0 \n * @param {ParsedDocx} param0.docx The parsed docx object\n * @param {NodeListHandler} param0.nodeListHandler The node list handler\n * @param {SuperConverter} param0.converter The super converter instance\n * @param {Editor} param0.editor The editor instance\n * @returns {Array} The parsed comments\n */\nexport function importCommentData({ docx }) {\n const nodeListHandler = defaultNodeListHandler();\n const comments = docx['word/comments.xml'];\n if (!comments) return;\n\n const { elements } = comments;\n if (!elements || !elements.length) return;\n\n const { elements: allComments = [] } = elements[0];\n const extractedComments = allComments.map((el) => {\n const { attributes } = el;\n const importedId = attributes['w:id'];\n const authorName = attributes['w:author'];\n const authorEmail = attributes['w:email'];\n const initials = attributes['w:initials'];\n const createdDate = attributes['w:date'];\n const internalId = attributes['custom:internalId'];\n const trackedChange = attributes['custom:trackedChange'] === 'true';\n const trackedChangeType = attributes['custom:trackedChangeType'];\n const trackedChangeText = attributes['custom:trackedChangeText'] !== 'null' \n ? attributes['custom:trackedChangeText'] \n : null;\n const trackedDeletedText = attributes['custom:trackedDeletedText'] !== 'null' \n ? attributes['custom:trackedDeletedText'] \n : null;\n\n const date = new Date(createdDate);\n const unixTimestampMs = date.getTime();\n\n const { elements } = el;\n const commentData = elements[0];\n\n const { elements: commentElements } = commentData;\n const parsedComment = nodeListHandler.handler({\n nodes: el.elements, nodeListHandler, docx\n });\n\n const { attrs } = parsedComment[0];\n const paraId = attrs['w14:paraId'];\n\n return {\n commentId: internalId || uuidv4(),\n importedId,\n creatorName: authorName,\n creatorEmail: authorEmail,\n createdTime: unixTimestampMs,\n textJson: parsedComment[0],\n initials,\n paraId,\n trackedChange,\n trackedChangeText,\n trackedChangeType,\n trackedDeletedText,\n };\n });\n\n const extendedComments = generateCommentsWithExtendedData({ docx, comments: extractedComments });\n return extendedComments;\n}\n\n/**\n * Import the commentsExtended.xml file to get the extended comment details\n * Note: This is where parent/child comment relationships are defined\n * \n * @param {Object} param0 \n * @param {ParsedDocx} param0.docx The parsed docx object\n * @param {Array} param0.comments The comments to be extended\n * @returns {Array} The comments with extended details\n */\nconst generateCommentsWithExtendedData = ({ docx, comments }) => {\n const commentsExtended = docx['word/commentsExtended.xml'];\n if (!commentsExtended) return [];\n\n const { elements: initialElements } = commentsExtended;\n const { elements } = initialElements[0];\n\n const commentEx = elements.filter((el) => el.name === 'w15:commentEx');\n\n return comments.map((comment) => {\n const extendedDef = commentEx.find((ce) => ce.attributes['w15:paraId'] === comment.paraId);\n if (!extendedDef) return { ...comment };\n\n const { isDone, paraIdParent, superdocCommentId } = getExtendedDetails(extendedDef);\n\n let parentComment;\n if (paraIdParent) parentComment = comments.find((c) => c.paraId === paraIdParent);\n\n const newComment = {\n ...comment,\n isDone,\n parentCommentId: parentComment?.commentId,\n };\n return newComment;\n });\n};\n\n/**\n * Extract the details from the commentExtended node\n * \n * @param {Object} commentEx The commentExtended node\n * @returns {Object} Object contianing paraId, isDone and paraIdParent\n */\nconst getExtendedDetails = (commentEx) => {\n const { attributes } = commentEx;\n const paraId = attributes['w15:paraId'];\n const isDone = attributes['w15:done'] === '1' ? true : false;\n const paraIdParent = attributes['w15:paraIdParent'];\n return { paraId, isDone, paraIdParent };\n};\n","import { getInitialJSON } from '../docxHelper.js';\nimport { carbonCopy } from '../../../utilities/carbonCopy.js';\nimport { twipsToInches } from '../../helpers.js';\nimport { DEFAULT_LINKED_STYLES } from '../../exporter-docx-defs.js';\nimport { tableNodeHandlerEntity } from './tableImporter.js';\nimport { drawingNodeHandlerEntity } from './imageImporter.js';\nimport { trackChangeNodeHandlerEntity } from './trackChangesImporter.js';\nimport { hyperlinkNodeHandlerEntity } from './hyperlinkImporter.js';\nimport { runNodeHandlerEntity } from './runNodeImporter.js';\nimport { textNodeHandlerEntity } from './textNodeImporter.js';\nimport { paragraphNodeHandlerEntity } from './paragraphNodeImporter.js';\nimport { annotationNodeHandlerEntity } from './annotationImporter.js';\nimport { standardNodeHandlerEntity } from './standardNodeImporter.js';\nimport { lineBreakNodeHandlerEntity } from './lineBreakImporter.js';\nimport { bookmarkNodeHandlerEntity } from './bookmarkNodeImporter.js';\nimport { tabNodeEntityHandler } from './tabImporter.js';\nimport { listHandlerEntity } from './listImporter.js';\nimport { importCommentData } from './documentCommentsImporter.js';\nimport { getDefaultStyleDefinition } from './paragraphNodeImporter.js';\n\n/**\n * @typedef {import()} XmlNode\n * @typedef {{type: string, content: *, attrs: {}}} PmNodeJson\n * @typedef {{type: string, attrs: {}}} PmMarkJson\n *\n * @typedef {(nodes: XmlNode[], docx: ParsedDocx, insideTrackCahange: boolean) => PmNodeJson[]} NodeListHandlerFn\n * @typedef {{handler: NodeListHandlerFn, handlerEntities: NodeHandlerEntry[]}} NodeListHandler\n *\n * @typedef {(nodes: XmlNode[], docx: ParsedDocx, nodeListHandler: NodeListHandler, insideTrackCahange: boolean) => {nodes: PmNodeJson[], consumed: number}} NodeHandler\n * @typedef {{handlerName: string, handler: NodeHandler}} NodeHandlerEntry\n */\n\n/**\n *\n * @param {ParsedDocx} docx\n * @param {SuperConverter} converter instance.\n * @param {Editor} editor instance.\n * @returns {{pmDoc: PmNodeJson, savedTagsToRestore: XmlNode, pageStyles: *}|null}\n */\nexport const createDocumentJson = (docx, converter, editor) => {\n const json = carbonCopy(getInitialJSON(docx));\n if (!json) return null;\n\n // Track initial document structure\n if (converter?.telemetry) {\n const files = Object.keys(docx).map((filePath) => {\n const parts = filePath.split('/');\n return {\n filePath,\n fileDepth: parts.length,\n fileType: filePath.split('.').pop(),\n };\n });\n\n converter.telemetry.trackFileStructure(\n {\n totalFiles: files.length,\n maxDepth: Math.max(...files.map((f) => f.fileDepth)),\n totalNodes: 0,\n files,\n },\n converter.fileSource,\n converter.documentId,\n converter.documentInternalId,\n );\n }\n\n const nodeListHandler = defaultNodeListHandler();\n const bodyNode = json.elements[0].elements.find((el) => el.name === 'w:body');\n\n if (bodyNode) {\n const node = bodyNode;\n const ignoreNodes = ['w:sectPr'];\n const content = node.elements?.filter((n) => !ignoreNodes.includes(n.name)) ?? [];\n const comments = importCommentData({ docx, nodeListHandler, converter, editor });\n\n const parsedContent = nodeListHandler.handler({\n nodes: content,\n nodeListHandler,\n docx,\n converter,\n editor,\n });\n\n const result = {\n type: 'doc',\n content: parsedContent,\n attrs: {\n attributes: json.elements[0].attributes,\n },\n };\n\n // Not empty document\n if (result.content.length > 1) {\n converter?.telemetry?.trackUsage(\n 'document_import',\n {\n documentType: 'docx',\n timestamp: new Date().toISOString()\n }\n );\n }\n \n return {\n pmDoc: result,\n savedTagsToRestore: node,\n pageStyles: getDocumentStyles(node, docx, converter, editor),\n comments,\n linkedStyles: getStyleDefinitions(docx, converter, editor),\n };\n }\n return null;\n};\n\nexport const defaultNodeListHandler = () => {\n const entities = [\n runNodeHandlerEntity,\n paragraphNodeHandlerEntity,\n listHandlerEntity,\n textNodeHandlerEntity,\n lineBreakNodeHandlerEntity,\n annotationNodeHandlerEntity,\n bookmarkNodeHandlerEntity,\n hyperlinkNodeHandlerEntity,\n drawingNodeHandlerEntity,\n trackChangeNodeHandlerEntity,\n tableNodeHandlerEntity,\n tabNodeEntityHandler,\n standardNodeHandlerEntity, //this should be the last one, bcs this parses everything!!!\n ];\n\n const handler = createNodeListHandler(entities);\n return {\n handler,\n handlerEntities: entities,\n };\n};\n\n/**\n *\n * @param {NodeHandlerEntry[]} nodeHandlers\n */\nconst createNodeListHandler = (nodeHandlers) => {\n /**\n * Gets safe element context even if index is out of bounds\n * @param {Array} elements Array of elements\n * @param {number} index Index to check\n * @param {Object} processedNode result node\n * @param {String} path Occurrence filename\n * @returns {Object} Safe context object\n */\n const getSafeElementContext = (elements, index, processedNode, path) => {\n if (!elements || index < 0 || index >= elements.length) {\n return {\n elementIndex: index,\n error: 'index_out_of_bounds',\n arrayLength: elements?.length\n };\n }\n\n const element = elements[index];\n return {\n elementName: element?.name,\n attributes: processedNode?.attrs,\n marks: processedNode?.marks,\n elementPath: path,\n type: processedNode?.type,\n content: processedNode?.content,\n };\n };\n\n const nodeListHandlerFn = ({ nodes: elements, docx, insideTrackChange, converter, editor, filename, parentStyleId }) => {\n if (!elements || !elements.length) return [];\n \n const processedElements = [];\n \n try {\n for (let index = 0; index < elements.length; index++) {\n try {\n const nodesToHandle = elements.slice(index);\n if (!nodesToHandle || nodesToHandle.length === 0) {\n continue;\n }\n\n const { nodes, consumed, unhandled } = nodeHandlers.reduce(\n (res, handler) => {\n if (res.consumed > 0) return res;\n \n return handler.handler({\n nodes: nodesToHandle,\n docx,\n nodeListHandler: { handler: nodeListHandlerFn, handlerEntities: nodeHandlers },\n insideTrackChange,\n converter,\n editor,\n filename,\n parentStyleId\n });\n },\n { nodes: [], consumed: 0 }\n );\n\n // Only track unhandled nodes that should have been handled\n const context = getSafeElementContext(elements, index, nodes[0], `/word/${filename || 'document.xml'}`);\n if (unhandled) {\n if (!context.elementName) continue;\n\n converter?.telemetry?.trackStatistic('unknown', context);\n continue;\n } else {\n converter?.telemetry?.trackStatistic('node', context);\n \n // Use Telemetry to track list item attributes\n if (context.type === 'orderedList' || context.type === 'bulletList') {\n context.content.forEach((item) => {\n const innerItemContext = getSafeElementContext([item], 0, item, `/word/${filename || 'document.xml'}`);\n converter?.telemetry?.trackStatistic('attributes', innerItemContext);\n })\n }\n \n const hasHighlightMark = nodes[0]?.marks?.find(mark => mark.type === 'highlight');\n if (hasHighlightMark) {\n converter?.docHiglightColors.add(hasHighlightMark.attrs.color.toUpperCase());\n }\n }\n\n if (consumed > 0) { index += consumed - 1; }\n\n // Process and store nodes (no tracking needed for success)\n if (nodes) {\n nodes.forEach((node) => {\n if (node?.type && !['runProperties'].includes(node.type)) {\n if (node.type === 'text' && Array.isArray(node.content) && !node.content.length) {\n return;\n }\n processedElements.push(node);\n }\n });\n }\n } catch (error) {\n console.debug('Import error', error)\n editor?.emit('exception', { error });\n\n converter?.telemetry?.trackStatistic('error', {\n type: 'processing_error',\n message: error.message,\n name: error.name,\n stack: error.stack,\n fileName: `/word/${filename || 'document.xml'}`,\n });\n }\n }\n\n return processedElements;\n } catch (error) {\n console.debug('Error during import', error)\n editor?.emit('exception', { error });\n\n // Track only catastrophic handler failures\n converter?.telemetry?.trackStatistic('error', {\n type: 'fatal_error',\n message: error.message,\n name: error.name,\n stack: error.stack,\n fileName: `/word/${filename || 'document.xml'}`,\n });\n \n throw error;\n }\n };\n return nodeListHandlerFn;\n};\n\n/**\n *\n * @param {XmlNode} node\n * @param {ParsedDocx} docx\n * @param {SuperConverter} converter instance.\n * @param {Editor} editor instance.\n * @returns {Object} The document styles object\n */\nfunction getDocumentStyles(node, docx, converter, editor) {\n const sectPr = node.elements?.find((n) => n.name === 'w:sectPr');\n const styles = {};\n\n sectPr?.elements?.forEach((el) => {\n const { name, attributes } = el;\n switch (name) {\n case 'w:pgSz':\n styles['pageSize'] = {\n width: twipsToInches(attributes['w:w']),\n height: twipsToInches(attributes['w:h']),\n };\n break;\n case 'w:pgMar':\n styles['pageMargins'] = {\n top: twipsToInches(attributes['w:top']),\n right: twipsToInches(attributes['w:right']),\n bottom: twipsToInches(attributes['w:bottom']),\n left: twipsToInches(attributes['w:left']),\n header: twipsToInches(attributes['w:header']),\n footer: twipsToInches(attributes['w:footer']),\n gutter: twipsToInches(attributes['w:gutter']),\n };\n break;\n case 'w:cols':\n styles['columns'] = {\n space: twipsToInches(attributes['w:space']),\n num: attributes['w:num'],\n equalWidth: attributes['w:equalWidth'],\n };\n break;\n case 'w:docGrid':\n styles['docGrid'] = {\n linePitch: twipsToInches(attributes['w:linePitch']),\n type: attributes['w:type'],\n };\n break;\n case 'w:headerReference':\n getHeaderFooter(el, 'header', docx, converter, editor);\n break;\n case 'w:footerReference':\n getHeaderFooter(el, 'footer', docx, converter, editor);\n break;\n case 'w:titlePg':\n converter.headerIds.titlePg = true;\n }\n });\n return styles;\n};\n\n/**\n * Import style definitions from the document\n * \n * @param {Object} docx The parsed docx object\n * @returns {Object[]} The style definitions\n */\nfunction getStyleDefinitions(docx) {\n const styles = docx['word/styles.xml'];\n if (!styles) return [];\n \n const { elements } = styles.elements[0];\n const styleDefinitions = elements.filter((el) => el.name === 'w:style');\n\n // Track latent style exceptions\n const latentStyles = elements.find((el) => el.name === 'w:latentStyles');\n const matchedLatentStyles = [];\n latentStyles?.elements.forEach((el) => {\n const { attributes } = el;\n const match = styleDefinitions.find((style) => style.attributes['w:styleId'] === attributes['w:name']);\n if (match) matchedLatentStyles.push(el);\n });\n\n // Parse all styles\n const allParsedStyles = [];\n styleDefinitions.forEach((style) => {\n const id = style.attributes['w:styleId'];\n const parsedStyle = getDefaultStyleDefinition(id, docx);\n\n const importedStyle = {\n id: style.attributes['w:styleId'],\n type: style.attributes['w:type'],\n definition: parsedStyle,\n attributes: {},\n };\n\n allParsedStyles.push(importedStyle);\n });\n\n return allParsedStyles;\n};\n\n/**\n * Add default styles if missing. Default styles are:\n * \n * Normal, Title, Subtitle, Heading1, Heading2, Heading3\n * \n * Does not mutate the original docx object\n * @param {Object} styles The parsed docx styles [word/styles.xml]\n * @returns {Object | null} The updated styles object with default styles\n */\nexport function addDefaultStylesIfMissing(styles) {\n // Do not mutate the original docx object\n if (!styles) return null;\n const updatedStyles = carbonCopy(styles);\n const { elements } = updatedStyles.elements[0];\n\n Object.keys(DEFAULT_LINKED_STYLES).forEach(styleId => {\n const existsOnDoc = elements.some((el) => el.attributes?.['w:styleId'] === styleId);\n if (!existsOnDoc) {\n const missingStyle = DEFAULT_LINKED_STYLES[styleId];\n updatedStyles.elements[0].elements.push(missingStyle);\n }\n })\n\n return updatedStyles;\n}\n\nfunction getHeaderFooter(el, elementType, docx, converter, editor) {\n const rels = docx['word/_rels/document.xml.rels'];\n const relationships = rels.elements.find((el) => el.name === 'Relationships');\n const { elements } = relationships;\n\n // sectionType as in default, first, odd, even\n const sectionType = el.attributes['w:type'];\n\n const rId = el.attributes['r:id'];\n const rel = elements.find((el) => el.attributes['Id'] === rId);\n const target = rel.attributes['Target'];\n\n // Get the referenced file (ie: header1.xml)\n const referenceFile = docx[`word/${target}`];\n const currentFileName = target;\n\n const nodeListHandler = defaultNodeListHandler();\n const schema = nodeListHandler.handler({\n nodes: referenceFile.elements[0].elements,\n nodeListHandler,\n docx,\n converter,\n editor,\n filename: currentFileName\n });\n\n let storage, storageIds;\n\n if (elementType === 'header') {\n storage = converter.headers;\n storageIds = converter.headerIds;\n } else if (elementType === 'footer') {\n storage = converter.footers;\n storageIds = converter.footerIds;\n }\n\n storage[rId] = { type: 'doc', content: [...schema] };\n storageIds[sectionType] = rId;\n}\n","import xmljs from 'xml-js';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { DocxExporter, exportSchemaToJson } from './exporter';\nimport { createDocumentJson, addDefaultStylesIfMissing } from './v2/importer/docxImporter.js';\nimport { getArrayBufferFromUrl } from './helpers.js';\nimport { DEFAULT_CUSTOM_XML, SETTINGS_CUSTOM_XML } from './exporter-docx-defs.js';\nimport {\n getCommentDefinition,\n prepareCommentParaIds,\n prepareCommentsXmlFilesForExport,\n} from './v2/exporter/commentsExporter.js';\n\nclass SuperConverter {\n static allowedElements = Object.freeze({\n 'w:document': 'doc',\n 'w:body': 'body',\n 'w:p': 'paragraph',\n 'w:r': 'run',\n 'w:t': 'text',\n 'w:delText': 'text',\n 'w:br': 'lineBreak',\n 'w:tbl': 'table',\n 'w:tr': 'tableRow',\n 'w:tc': 'tableCell',\n 'w:drawing': 'drawing',\n 'w:bookmarkStart': 'bookmarkStart',\n // 'w:tab': 'tab',\n\n // Formatting only\n 'w:sectPr': 'sectionProperties',\n 'w:rPr': 'runProperties',\n\n // Comments\n 'w:commentRangeStart': 'commentRangeStart',\n 'w:commentRangeEnd': 'commentRangeEnd',\n 'w:commentReference': 'commentReference',\n });\n\n static markTypes = [\n { name: 'w:b', type: 'bold' },\n { name: 'w:bCs', type: 'bold' },\n { name: 'w:i', type: 'italic' },\n { name: 'w:iCs', type: 'italic' },\n { name: 'w:u', type: 'underline', mark: 'underline', property: 'underlineType' },\n { name: 'w:strike', type: 'strike' },\n { name: 'w:color', type: 'color', mark: 'textStyle', property: 'color' },\n { name: 'w:sz', type: 'fontSize', mark: 'textStyle', property: 'fontSize' },\n { name: 'w:szCs', type: 'fontSize', mark: 'textStyle', property: 'fontSize' },\n { name: 'w:rFonts', type: 'fontFamily', mark: 'textStyle', property: 'fontFamily' },\n { name: 'w:jc', type: 'textAlign', mark: 'textStyle', property: 'textAlign' },\n { name: 'w:ind', type: 'textIndent', mark: 'textStyle', property: 'textIndent' },\n { name: 'w:spacing', type: 'lineHeight', mark: 'textStyle', property: 'lineHeight' },\n { name: 'link', type: 'link', mark: 'link', property: 'href' },\n { name: 'w:highlight', type: 'highlight', mark: 'highlight', property: 'color' },\n // { name: 'w:shd', type: 'highlight', mark: 'highlight', property: 'color'}\n ];\n\n static propertyTypes = Object.freeze({\n 'w:pPr': 'paragraphProperties',\n 'w:rPr': 'runProperties',\n 'w:sectPr': 'sectionProperties',\n 'w:numPr': 'numberingProperties',\n 'w:tcPr': 'tableCellProperties',\n });\n\n static elements = new Set(['w:document', 'w:body', 'w:p', 'w:r', 'w:t', 'w:delText']);\n\n constructor(params = null) {\n // Suppress logging when true\n this.debug = params?.debug || false;\n\n // Important docx pieces\n this.declaration = null;\n this.documentAttributes = null;\n\n // The docx as a list of files\n this.convertedXml = {};\n this.docx = params?.docx || [];\n this.media = params?.media || {};\n\n this.addedMedia = {};\n this.comments = [];\n\n // Store custom highlight colors\n this.docHiglightColors = new Set([]);\n\n // XML inputs\n this.xml = params?.xml;\n this.declaration = null;\n\n // Processed additional content\n this.numbering = null;\n this.pageStyles = null;\n\n // The JSON converted XML before any processing. This is simply the result of xml2json\n this.initialJSON = null;\n\n // Headers and footers\n this.headers = {};\n this.headerIds = { default: null, even: null, odd: null, first: null };\n this.footers = {};\n this.footerIds = { default: null, even: null, odd: null, first: null };\n\n // Linked Styles\n this.linkedStyles = [];\n\n // This is the JSON schema that we will be working with\n this.json = params?.json;\n\n this.tagsNotInSchema = ['w:body'];\n this.savedTagsToRestore = [];\n\n // Initialize telemetry\n this.telemetry = params?.telemetry || null;\n this.documentInternalId = null;\n \n // Uploaded file\n this.fileSource = params?.fileSource || null;\n this.documentId = params?.documentId || null;\n\n // Parse the initial XML, if provided\n if (this.docx.length || this.xml) this.parseFromXml();\n }\n\n parseFromXml() {\n this.docx?.forEach((file) => {\n this.convertedXml[file.name] = this.parseXmlToJson(file.content);\n\n if (file.name === 'word/document.xml') {\n this.documentAttributes = this.convertedXml[file.name].elements[0]?.attributes;\n }\n\n if (file.name === 'word/styles.xml') {\n this.convertedXml[file.name] = addDefaultStylesIfMissing(this.convertedXml[file.name]);\n }\n });\n this.initialJSON = this.convertedXml['word/document.xml'];\n\n if (!this.initialJSON) this.initialJSON = this.parseXmlToJson(this.xml);\n this.declaration = this.initialJSON?.declaration;\n }\n\n parseXmlToJson(xml) {\n return JSON.parse(xmljs.xml2json(xml, null, 2));\n }\n\n static getStoredSuperdocVersion(docx) {\n try {\n const customXml = docx.find((doc) => doc.name === 'docProps/custom.xml');\n if (!customXml) return;\n\n const converter = new SuperConverter();\n const content = customXml.content;\n const contentJson = converter.parseXmlToJson(content);\n const properties = contentJson.elements.find((el) => el.name === 'Properties');\n if (!properties.elements) return;\n\n const superdocVersion = properties.elements.find((el) => el.name === 'property' && el.attributes.name === 'SuperdocVersion');\n if (!superdocVersion) return;\n \n const version = superdocVersion.elements[0].elements[0].text;\n return version;\n } catch (e) {\n console.warn('Error getting Superdoc version', e);\n return;\n };\n }\n\n static updateDocumentVersion(docx = this.convertedXml, version = __APP_VERSION__) {\n const customLocation = 'docProps/custom.xml';\n if (!docx[customLocation]) {\n docx[customLocation] = generateCustomXml(__APP_VERSION__);\n }\n\n const customXml = docx['docProps/custom.xml'];\n if (!customXml) return;\n \n const properties = customXml.elements.find((el) => el.name === 'Properties');\n if (!properties.elements) properties.elements = [];\n\n const superdocVersion = properties.elements.find((el) => el.name === 'property' && el.attributes.name === 'SuperdocVersion');\n if (!superdocVersion) {\n const newCustomXml = generateSuperdocVersion();\n properties.elements.push(newCustomXml);\n } else {\n superdocVersion.elements[0].elements[0].elements[0].text = version;\n }\n\n return docx;\n }\n\n getDocumentDefaultStyles() {\n const styles = this.convertedXml['word/styles.xml'];\n if (!styles) return {};\n\n const defaults = styles.elements[0].elements.find((el) => el.name === 'w:docDefaults');\n\n // const pDefault = defaults.elements.find((el) => el.name === 'w:pPrDefault');\n\n // Get the run defaults for this document - this will include font, theme etc.\n const rDefault = defaults.elements.find((el) => el.name === 'w:rPrDefault');\n const rElements = rDefault.elements[0].elements;\n const rFonts = rElements?.find((el) => el.name === 'w:rFonts');\n if ('elements' in rDefault) {\n const fontThemeName = rElements.find((el) => el.name === 'w:rFonts')?.attributes['w:asciiTheme'];\n let typeface, panose;\n if (fontThemeName) {\n const fontInfo = this.getThemeInfo(fontThemeName);\n typeface = fontInfo.typeface;\n panose = fontInfo.panose;\n } else if (rFonts) {\n typeface = rFonts?.attributes['w:ascii'];\n } else {\n const paragraphDefaults =\n styles.elements[0].elements.filter((el) => {\n return el.name === 'w:style' && el.attributes['w:styleId'] === 'Normal';\n }) || [];\n paragraphDefaults.forEach((el) => {\n const rPr = el.elements.find((el) => el.name === 'w:rPr');\n const fonts = rPr?.elements?.find((el) => el.name === 'w:rFonts');\n typeface = fonts?.attributes['w:ascii'];\n });\n }\n\n const fontSizePt = Number(rElements.find((el) => el.name === 'w:sz')?.attributes['w:val']) / 2 || 12;\n const kern = rElements.find((el) => el.name === 'w:kern')?.attributes['w:val'];\n return { fontSizePt, kern, typeface, panose };\n }\n }\n \n getDocumentInternalId() { \n const settingsLocation = 'word/settings.xml'\n if (!this.convertedXml[settingsLocation]) {\n this.convertedXml[settingsLocation] = SETTINGS_CUSTOM_XML;\n }\n\n const settings = Object.assign({}, this.convertedXml[settingsLocation]);\n if (!settings.elements[0]?.elements?.length) {\n const idElement = this.createDocumentIdElement(settings);\n \n settings.elements[0].elements = [\n idElement\n ];\n if (!settings.elements[0].attributes['xmlns:w15']) {\n settings.elements[0].attributes['xmlns:w15'] = 'http://schemas.microsoft.com/office/word/2012/wordml';\n }\n this.convertedXml[settingsLocation] = settings;\n return;\n }\n\n // New versions of Word will have w15:docId\n // It's possible to have w14:docId as well but Word(2013 and later) will convert it automatically when document opened\n const w15DocId = settings.elements[0].elements.find((el) => el.name === 'w15:docId');\n this.documentInternalId = w15DocId?.attributes['w15:val'];\n }\n\n createDocumentIdElement() {\n const docId = uuidv4().toUpperCase();\n this.documentInternalId = docId;\n \n return {\n type: 'element',\n name: 'w15:docId',\n attributes: {\n 'w15:val': `{${docId}}`\n }\n }\n }\n\n getThemeInfo(themeName) {\n themeName = themeName.toLowerCase();\n const theme1 = this.convertedXml['word/theme/theme1.xml'];\n const themeData = theme1.elements.find((el) => el.name === 'a:theme');\n const themeElements = themeData.elements.find((el) => el.name === 'a:themeElements');\n const fontScheme = themeElements.elements.find((el) => el.name === 'a:fontScheme');\n let fonts;\n\n if (themeName.startsWith('major')) {\n fonts = fontScheme.elements.find((el) => el.name === 'a:majorFont').elements[0];\n } else if (themeName.startsWith('minor')) {\n fonts = fontScheme.elements.find((el) => el.name === 'a:minorFont').elements[0];\n }\n\n const { typeface, panose } = fonts.attributes;\n return { typeface, panose };\n }\n\n getSchema(editor) {\n this.getDocumentInternalId();\n const result = createDocumentJson({...this.convertedXml, media: this.media }, this, editor);\n \n if (result) {\n this.savedTagsToRestore.push({ ...result.savedTagsToRestore });\n this.pageStyles = result.pageStyles;\n this.comments = result.comments;\n this.linkedStyles = result.linkedStyles;\n\n return result.pmDoc;\n } else {\n return null;\n }\n }\n\n schemaToXml(data, debug = false) {\n const exporter = new DocxExporter(this);\n return exporter.schemaToXml(data, debug);\n }\n\n async exportToDocx(\n jsonData,\n editorSchema,\n documentMedia,\n isFinalDoc = false,\n commentsExportType,\n comments = [],\n ) {\n const bodyNode = this.savedTagsToRestore.find((el) => el.name === 'w:body');\n\n const commentsWithParaIds = comments.map((c) => prepareCommentParaIds(c));\n const commentDefinitions = commentsWithParaIds\n .map((c, index) => getCommentDefinition(c, index, commentsWithParaIds));\n\n const [result, params] = exportSchemaToJson({\n node: jsonData,\n bodyNode,\n relationships: [],\n documentMedia: {},\n media: {},\n isFinalDoc,\n editorSchema,\n converter: this,\n pageStyles: this.pageStyles,\n comments,\n commentsExportType,\n exportedCommentDefs: commentDefinitions,\n });\n\n \n const exporter = new DocxExporter(this);\n const xml = exporter.schemaToXml(result);\n\n // Update media\n await this.#exportProcessMediaFiles({\n ...documentMedia,\n ...params.media,\n ...this.media,\n });\n\n // Update content types and comments files as needed\n let updatedXml = { ...this.convertedXml };\n let commentsRels = [];\n if (comments.length) {\n const { documentXml, relationships } = this.#prepareCommentsXmlFilesForExport({\n defs: params.exportedCommentDefs,\n exportType: commentsExportType,\n commentsWithParaIds,\n });\n updatedXml = { ...documentXml };\n commentsRels = relationships;\n }\n\n this.convertedXml = { ...this.convertedXml, ...updatedXml };\n \n // Update the rels table\n this.#exportProcessNewRelationships([...params.relationships, ...commentsRels]);\n\n // Store the SuperDoc version\n storeSuperdocVersion(this.convertedXml);\n \n return xml;\n }\n\n /**\n * Update comments files and relationships depending on export type\n */\n #prepareCommentsXmlFilesForExport({ defs, exportType, commentsWithParaIds }) {\n const { documentXml, relationships } = prepareCommentsXmlFilesForExport({\n exportType,\n convertedXml: this.convertedXml,\n defs,\n commentsWithParaIds,\n converter: this,\n });\n\n return { documentXml, relationships };\n }\n\n #exportProcessNewRelationships(rels = []) {\n const relsData = this.convertedXml['word/_rels/document.xml.rels'];\n const relationships = relsData.elements.find((x) => x.name === 'Relationships');\n const newRels = [];\n \n const regex = /rId|mi/g;\n let largestId = Math.max(...relationships.elements.map((el) => Number(el.attributes.Id.replace(regex, ''))));\n \n rels.forEach((rel) => {\n const existingId = rel.attributes.Id;\n const existingTarget = relationships.elements.find((el) => el.attributes.Target === rel.attributes.Target);\n const isNewMedia = rel.attributes.Target?.startsWith('media/') && existingId.length > 6;\n \n if (existingTarget && !isNewMedia) {\n return;\n }\n \n // Update the target to escape ampersands\n rel.attributes.Target = rel.attributes?.Target?.replace(/&/g, '&amp;');\n\n // Update the ID. If we've assigned a long ID (ie: images) we leave it alone\n rel.attributes.Id = existingId.length > 6 ? existingId : `rId${++largestId}`;\n\n newRels.push(rel);\n });\n\n relationships.elements = [...relationships.elements, ...newRels];\n\n this.convertedXml['word/_rels/document.xml.rels'] = relsData;\n }\n\n async #exportProcessMediaFiles(media) {\n const processedData = {};\n for (const filePath in media) {\n if (typeof media[filePath] !== 'string') return;\n const name = filePath.split('/').pop();\n processedData[name] = await getArrayBufferFromUrl(media[filePath]);\n }\n\n this.convertedXml.media = {\n ...this.convertedXml.media,\n ...processedData,\n };\n this.media = this.convertedXml.media;\n this.addedMedia = processedData;\n }\n\n}\n\nfunction storeSuperdocVersion(docx) {\n const customLocation = 'docProps/custom.xml';\n if (!docx[customLocation]) {\n docx[customLocation] = generateCustomXml();\n };\n\n const customXml = docx[customLocation];\n const properties = customXml.elements.find((el) => el.name === 'Properties');\n if (!properties.elements) properties.elements = [];\n const elements = properties.elements;\n\n const cleanProperties = elements\n .filter((prop) => (typeof prop === 'object' && prop !== null))\n .filter((prop) => {\n const { attributes } = prop;\n return attributes.name !== 'SuperdocVersion';\n });\n\n let pid = 2;\n try {\n pid = cleanProperties.length ? Math.max(...elements.map(el => el.attributes.pid)) + 1 : 2;\n } catch (error) {};\n\n cleanProperties.push(pid, generateSuperdocVersion());\n properties.elements = cleanProperties;\n return docx;\n};\n\nfunction generateCustomXml() {\n return DEFAULT_CUSTOM_XML;\n}\n\nfunction generateSuperdocVersion(pid = 2, version = __APP_VERSION__) {\n return {\n type: \"element\",\n name: \"property\",\n attributes: {\n name: \"SuperdocVersion\",\n fmtid: \"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}\",\n pid,\n },\n elements: [\n {\n type: \"element\",\n name: \"vt:lpwstr\",\n elements: [\n {\n type: \"text\",\n text: version\n }\n ]\n }\n ]\n }\n};\n\nexport { SuperConverter };\n"],"names":["i","buffer","Buffer","SlowBuffer","byteLength","copy","max","found","min","code","range","type","File","atob","ReflectApply","ReflectOwnKeys","NumberIsNaN","eventsModule","events","state","once","keys","inherits_browserModule","browser","e","require$$0","shams","hasSymbols","isNaN","sign","concatty","slicy","bind","Empty","implementation","require$$1","require$$2","require$$3","callBind","gOPD","getProto","undefined","require$$4","require$$5","require$$6","require$$7","abs","require$$8","floor","require$$9","require$$10","require$$11","pow","require$$12","round","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","doEval","require$$23","require$$24","stringToPath","getBaseIntrinsic","callBound","isArguments","isRegex","safeRegexTest","isGeneratorFunction","reflectApply","isCallable","forEachArray","forEachString","forEachObject","isArray","forEach","global","availableTypedArrays","gopd","defineDataProperty","hasPropertyDescriptors","setFunctionLength","actualApply","applyBind","whichTypedArray","isTypedArray","getOwnPropertyDescriptors","x","process","isRegExp","self","join","options","err","NodeError","realHasInstance","get","noop","onlegacyfinish","onfinish","onend","onerror","onclose","onrequest","createReadableStreamAsyncIterator","EElistenerCount","debug","n","Transform","sax","s","uri","close","helper","currentElement","validateOptions","xml2js","xml2json","js2xml","json2xml","object","key","string","he","this","node","dist","joinable","doc","types","nfa","edge","expr","states","name","mark","wrap","space","parent","index","matches","match","TransformError","rel","content","PMDOMParser","nodeListHandler","vMerge","elements","style","handleStandardNode","isNested","qFormat","rPr","attrs","uuidv4","el"],"mappings":"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AU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UA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AAS,QAAO,KAAO,QAAO,KAAO,QAAO,KAAS,UAAS,KAAO,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAO,QAAO,KAAS,UAAS,KAAS,UAAS,KAAO,QAAO,KAAO,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAO,QAAO,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAS,UAAS,KAAS,UAAS,KAAO,SAAQ,KAAO,SAAQ,KAAO,SAAQ,KAAO,SAAQ,KAAO,QAAO,KAAO,QAAO,KAAO,UAAS,KAAO,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAO,SAAQ,KAAO,SAAQ,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,QAAO,MAAe,OAAM,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,KAAS,OAAM,MAAe,QAAO,KAAS,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAS,UAAS,KAAS,UAAS,KAAS,QAAO,KAAS,QAAO,KAAO,UAAS,KAAO,UAAS,KAAS,UAAS,MAAe,OAAM,KAAS,MAAK,MAAe,QAAO,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,KAAS,MAAK,MAAe,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAO,OAAM,KAAO,OAAM,KAAS,MAAK,KAAS,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,QAAO,MAAe,OAAM,MAAe,QAAO,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,SAAQ,KAAO,SAAQ,KAAS,UAAS,KAAS,UAAS,KAAO,QAAO,KAAO,QAAO,KAAS,QAAO,KAAS,QAAO,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,QAAO,KAAS,SAAQ,KAAS,UAAS,KAAS,UAAS,KAAS,SAAQ,MAAK,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,QAAO,KAAS,UAAS,MAAe,OAAM,KAAS,WAAU,MAAe,QAAO,MAAe,QAAO,KAAS,QAAO,KAAS,OAAM,KAAS,QAAO,KAAS,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,UAAS,KAAS,UAAS,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,MAAK,MAAe,QAAO,KAAS,QAAO,KAAS,MAAK,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,SAAQ,KAAO,SAAQ,KAAO,QAAO,KAAO,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,QAAO,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,KAAS,UAAS,KAAS,UAAS,MAAe,OAAM,MAAe,QAAO,KAAS,OAAM,MAAe,QAAO,KAAS,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,KAAS,QAAO,MAAe,QAAO,MAAe,OAAM,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAO,UAAS,KAAO,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,OAAM,KAAS,OAAM,MAAe,QAAO,MAAe,OAAM,KAAS,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAO,QAAO,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,SAAQ,KAAO,SAAQ,KAAO,QAAO,KAAO,QAAO,KAAS,UAAS,KAAS,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,KAAS,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,KAAS,QAAO,KAAS,UAAS,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,KAAS,QAAO,KAAS,MAAK,KAAS,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,MAAK,KAAS,UAAS,KAAS,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAO,SAAQ,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,SAAQ,KAAS,UAAS,KAAS,UAAS,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAO,UAAS,KAAS,UAAS,KAAS,UAAS,KAAO,SAAQ,KAAO,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAO,QAAO,KAAO,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,KAAS,SAAQ,KAAS,SAAQ,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,MAAe,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAO,UAAS,KAAO,UAAS,KAAS,SAAQ,KAAS,SAAQ,KAAO,QAAO,KAAS,QAAO,MAAe,QAAO,MAAe,OAAM,MAAe,QAAO,KAAS,OAAM,KAAS,QAAO,MAAe,QAAO,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,UAAS,KAAS,QAAO,KAAS,QAAO,KAAS,SAAQ,KAAO,SAAQ,KAAO,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,QAAO,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,SAAQ,KAAS,WAAU,KAAS,UAAS,KAAS,UAAS,KAAS,QAAO,KAAS,QAAO,KAAS,OAAM,KAAS,OAAM,KAAS,SAAQ,KAAS,UAAS,KAAS,SAAQ,KAAS,QAAO,KAAS,QAAO,KAAS,SAAQ,KAAS,UAAS,KAAS,SAAQ,KAAS,UAAS,KAAS,UAAS,KAAS,MAAK,KAAO,SAAQ,KAAS,MAAK,KAAS,MAAK,KAAS,MAAK,KAAS,MAAK,KAAS,MAAK,KAAS,WAAU,KAAS,WAAU,KAAS,MAAK,KAAS,OAAM,KAAS,MAAK,KAAS,OAAM,KAAS,QAAO,KAAS,OAAM,KAAS,SAAQ,KAAS,SAAQ,KAAS,UAAS,KAAS,OAAM,KAAS,OAAM,KAAS,QAAO,KAAS,WAAU,KAAS,QAAO,KAAS,OAAM,KAAS,QAAO,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,SAAQ,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,OAAM,KAAS,QAAO,KAAS,QAAO,KAAS,OAAM,KAAS,OAAM,KAAS,QAAO,KAAS,QAAO,KAAS,QAAO,KAAS,QAAO,KAAS,QAAO,KAAS,QAAO,KAAS,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,QAAO,KAAS,OAAM,KAAS,OAAM,KAAS,QAAO,KAAS,QAAO,KAAS,OAAM,KAAS,OAAM,KAAS,SAAQ,KAAS,SAAQ,KAAS,QAAO,KAAS,QAAO,KAAS,OAAM,KAAS,OAAM,KAAS,UAAS,KAAS,UAAS,KAAS,OAAM,KAAS,OAAM,KAAS,QAAO,KAAS,QAAO,KAAS,OAAM,K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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93]}