diff --git a/node_modules/dom-serializer/LICENSE b/node_modules/dom-serializer/LICENSE
new file mode 100644
index 0000000..3d241a8
--- /dev/null
+++ b/node_modules/dom-serializer/LICENSE
@@ -0,0 +1,11 @@
+License
+
+(The MIT License)
+
+Copyright (c) 2014 The cheeriojs contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/dom-serializer/README.md b/node_modules/dom-serializer/README.md
new file mode 100644
index 0000000..45fde0c
--- /dev/null
+++ b/node_modules/dom-serializer/README.md
@@ -0,0 +1 @@
+Renders a DOM node or an array of DOM nodes to a string.
diff --git a/node_modules/dom-serializer/foreignNames.json b/node_modules/dom-serializer/foreignNames.json
new file mode 100644
index 0000000..aada7c7
--- /dev/null
+++ b/node_modules/dom-serializer/foreignNames.json
@@ -0,0 +1,102 @@
+{
+  "elementNames" : {
+"altglyph" : "altGlyph",
+"altglyphdef" : "altGlyphDef",
+"altglyphitem" : "altGlyphItem",
+"animatecolor" : "animateColor",
+"animatemotion" : "animateMotion",
+"animatetransform" : "animateTransform",
+"clippath" : "clipPath",
+"feblend" : "feBlend",
+"fecolormatrix" : "feColorMatrix",
+"fecomponenttransfer" : "feComponentTransfer",
+"fecomposite" : "feComposite",
+"feconvolvematrix" : "feConvolveMatrix",
+"fediffuselighting" : "feDiffuseLighting",
+"fedisplacementmap" : "feDisplacementMap",
+"fedistantlight" : "feDistantLight",
+"fedropshadow" : "feDropShadow",
+"feflood" : "feFlood",
+"fefunca" : "feFuncA",
+"fefuncb" : "feFuncB",
+"fefuncg" : "feFuncG",
+"fefuncr" : "feFuncR",
+"fegaussianblur" : "feGaussianBlur",
+"feimage" : "feImage",
+"femerge" : "feMerge",
+"femergenode" : "feMergeNode",
+"femorphology" : "feMorphology",
+"feoffset" : "feOffset",
+"fepointlight" : "fePointLight",
+"fespecularlighting" : "feSpecularLighting",
+"fespotlight" : "feSpotLight",
+"fetile" : "feTile",
+"feturbulence" : "feTurbulence",
+"foreignobject" : "foreignObject",
+"glyphref" : "glyphRef",
+"lineargradient" : "linearGradient",
+"radialgradient" : "radialGradient",
+"textpath" : "textPath"
+  },
+  "attributeNames" : {
+"definitionurl" : "definitionURL",
+"attributename" : "attributeName",
+"attributetype" : "attributeType",
+"basefrequency" : "baseFrequency",
+"baseprofile" : "baseProfile",
+"calcmode" : "calcMode",
+"clippathunits" : "clipPathUnits",
+"diffuseconstant" : "diffuseConstant",
+"edgemode" : "edgeMode",
+"filterunits" : "filterUnits",
+"glyphref" : "glyphRef",
+"gradienttransform" : "gradientTransform",
+"gradientunits" : "gradientUnits",
+"kernelmatrix" : "kernelMatrix",
+"kernelunitlength" : "kernelUnitLength",
+"keypoints" : "keyPoints",
+"keysplines" : "keySplines",
+"keytimes" : "keyTimes",
+"lengthadjust" : "lengthAdjust",
+"limitingconeangle" : "limitingConeAngle",
+"markerheight" : "markerHeight",
+"markerunits" : "markerUnits",
+"markerwidth" : "markerWidth",
+"maskcontentunits" : "maskContentUnits",
+"maskunits" : "maskUnits",
+"numoctaves" : "numOctaves",
+"pathlength" : "pathLength",
+"patterncontentunits" : "patternContentUnits",
+"patterntransform" : "patternTransform",
+"patternunits" : "patternUnits",
+"pointsatx" : "pointsAtX",
+"pointsaty" : "pointsAtY",
+"pointsatz" : "pointsAtZ",
+"preservealpha" : "preserveAlpha",
+"preserveaspectratio" : "preserveAspectRatio",
+"primitiveunits" : "primitiveUnits",
+"refx" : "refX",
+"refy" : "refY",
+"repeatcount" : "repeatCount",
+"repeatdur" : "repeatDur",
+"requiredextensions" : "requiredExtensions",
+"requiredfeatures" : "requiredFeatures",
+"specularconstant" : "specularConstant",
+"specularexponent" : "specularExponent",
+"spreadmethod" : "spreadMethod",
+"startoffset" : "startOffset",
+"stddeviation" : "stdDeviation",
+"stitchtiles" : "stitchTiles",
+"surfacescale" : "surfaceScale",
+"systemlanguage" : "systemLanguage",
+"tablevalues" : "tableValues",
+"targetx" : "targetX",
+"targety" : "targetY",
+"textlength" : "textLength",
+"viewbox" : "viewBox",
+"viewtarget" : "viewTarget",
+"xchannelselector" : "xChannelSelector",
+"ychannelselector" : "yChannelSelector",
+"zoomandpan" : "zoomAndPan"
+  }
+}
diff --git a/node_modules/dom-serializer/index.d.ts b/node_modules/dom-serializer/index.d.ts
new file mode 100644
index 0000000..4499daf
--- /dev/null
+++ b/node_modules/dom-serializer/index.d.ts
@@ -0,0 +1,17 @@
+export interface DomSerializerOptions {
+  xmlMode?: boolean | 'foreign';
+  decodeEntities?: boolean;
+}
+
+/**
+ * Renders a DOM node or an array of DOM nodes to a string.
+ *
+ * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).
+ *
+ * @param nodes Nodes to be rendered.
+ * @param options Changes serialization behavior
+ */
+export default function render(
+  nodes: {} | {}[],
+  options?: DomSerializerOptions
+): string;
diff --git a/node_modules/dom-serializer/index.js b/node_modules/dom-serializer/index.js
new file mode 100644
index 0000000..d79729a
--- /dev/null
+++ b/node_modules/dom-serializer/index.js
@@ -0,0 +1,183 @@
+/*
+  Module dependencies
+*/
+var ElementType = require('domelementtype');
+var entities = require('entities');
+
+/* mixed-case SVG and MathML tags & attributes
+   recognized by the HTML parser, see
+   https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
+*/
+var foreignNames = require('./foreignNames.json');
+foreignNames.elementNames.__proto__ = null; /* use as a simple dictionary */
+foreignNames.attributeNames.__proto__ = null;
+
+var unencodedElements = {
+  __proto__: null,
+  style: true,
+  script: true,
+  xmp: true,
+  iframe: true,
+  noembed: true,
+  noframes: true,
+  plaintext: true,
+  noscript: true
+};
+
+/*
+  Format attributes
+*/
+function formatAttrs(attributes, opts) {
+  if (!attributes) return;
+
+  var output = '';
+  var value;
+
+  // Loop through the attributes
+  for (var key in attributes) {
+    value = attributes[key];
+    if (output) {
+      output += ' ';
+    }
+
+    if (opts.xmlMode === 'foreign') {
+      /* fix up mixed-case attribute names */
+      key = foreignNames.attributeNames[key] || key;
+    }
+    output += key;
+    if ((value !== null && value !== '') || opts.xmlMode) {
+      output +=
+        '="' +
+        (opts.decodeEntities
+          ? entities.encodeXML(value)
+          : value.replace(/\"/g, '&quot;')) +
+        '"';
+    }
+  }
+
+  return output;
+}
+
+/*
+  Self-enclosing tags (stolen from node-htmlparser)
+*/
+var singleTag = {
+  __proto__: null,
+  area: true,
+  base: true,
+  basefont: true,
+  br: true,
+  col: true,
+  command: true,
+  embed: true,
+  frame: true,
+  hr: true,
+  img: true,
+  input: true,
+  isindex: true,
+  keygen: true,
+  link: true,
+  meta: true,
+  param: true,
+  source: true,
+  track: true,
+  wbr: true
+};
+
+var render = (module.exports = function(dom, opts) {
+  if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
+  opts = opts || {};
+
+  var output = '';
+
+  for (var i = 0; i < dom.length; i++) {
+    var elem = dom[i];
+
+    if (elem.type === 'root') output += render(elem.children, opts);
+    else if (ElementType.isTag(elem)) output += renderTag(elem, opts);
+    else if (elem.type === ElementType.Directive)
+      output += renderDirective(elem);
+    else if (elem.type === ElementType.Comment) output += renderComment(elem);
+    else if (elem.type === ElementType.CDATA) output += renderCdata(elem);
+    else output += renderText(elem, opts);
+  }
+
+  return output;
+});
+
+var foreignModeIntegrationPoints = [
+  'mi',
+  'mo',
+  'mn',
+  'ms',
+  'mtext',
+  'annotation-xml',
+  'foreignObject',
+  'desc',
+  'title'
+];
+
+function renderTag(elem, opts) {
+  // Handle SVG / MathML in HTML
+  if (opts.xmlMode === 'foreign') {
+    /* fix up mixed-case element names */
+    elem.name = foreignNames.elementNames[elem.name] || elem.name;
+    /* exit foreign mode at integration points */
+    if (
+      elem.parent &&
+      foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0
+    )
+      opts = Object.assign({}, opts, { xmlMode: false });
+  }
+  if (!opts.xmlMode && ['svg', 'math'].indexOf(elem.name) >= 0) {
+    opts = Object.assign({}, opts, { xmlMode: 'foreign' });
+  }
+
+  var tag = '<' + elem.name;
+  var attribs = formatAttrs(elem.attribs, opts);
+
+  if (attribs) {
+    tag += ' ' + attribs;
+  }
+
+  if (opts.xmlMode && (!elem.children || elem.children.length === 0)) {
+    tag += '/>';
+  } else {
+    tag += '>';
+    if (elem.children) {
+      tag += render(elem.children, opts);
+    }
+
+    if (!singleTag[elem.name] || opts.xmlMode) {
+      tag += '</' + elem.name + '>';
+    }
+  }
+
+  return tag;
+}
+
+function renderDirective(elem) {
+  return '<' + elem.data + '>';
+}
+
+function renderText(elem, opts) {
+  var data = elem.data || '';
+
+  // if entities weren't decoded, no need to encode them back
+  if (
+    opts.decodeEntities &&
+    !(elem.parent && elem.parent.name in unencodedElements)
+  ) {
+    data = entities.encodeXML(data);
+  }
+
+  return data;
+}
+
+function renderCdata(elem) {
+  return '<![CDATA[' + elem.children[0].data + ']]>';
+}
+
+function renderComment(elem) {
+  return '<!--' + elem.data + '-->';
+}
diff --git a/node_modules/dom-serializer/node_modules/domelementtype/LICENSE b/node_modules/dom-serializer/node_modules/domelementtype/LICENSE
new file mode 100644
index 0000000..c464f86
--- /dev/null
+++ b/node_modules/dom-serializer/node_modules/domelementtype/LICENSE
@@ -0,0 +1,11 @@
+Copyright (c) Felix Böhm
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts b/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts
new file mode 100644
index 0000000..281aab3
--- /dev/null
+++ b/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts
@@ -0,0 +1,48 @@
+/** Types of elements found in htmlparser2's DOM */
+export declare const enum ElementType {
+    /** Type for the root element of a document */
+    Root = "root",
+    /** Type for Text */
+    Text = "text",
+    /** Type for <? ... ?> */
+    Directive = "directive",
+    /** Type for <!-- ... --> */
+    Comment = "comment",
+    /** Type for <script> tags */
+    Script = "script",
+    /** Type for <style> tags */
+    Style = "style",
+    /** Type for Any tag */
+    Tag = "tag",
+    /** Type for <![CDATA[ ... ]]> */
+    CDATA = "cdata",
+    /** Type for <!doctype ...> */
+    Doctype = "doctype"
+}
+/**
+ * Tests whether an element is a tag or not.
+ *
+ * @param elem Element to test
+ */
+export declare function isTag(elem: {
+    type: ElementType;
+}): boolean;
+/** Type for the root element of a document */
+export declare const Root = ElementType.Root;
+/** Type for Text */
+export declare const Text = ElementType.Text;
+/** Type for <? ... ?> */
+export declare const Directive = ElementType.Directive;
+/** Type for <!-- ... --> */
+export declare const Comment = ElementType.Comment;
+/** Type for <script> tags */
+export declare const Script = ElementType.Script;
+/** Type for <style> tags */
+export declare const Style = ElementType.Style;
+/** Type for Any tag */
+export declare const Tag = ElementType.Tag;
+/** Type for <![CDATA[ ... ]]> */
+export declare const CDATA = ElementType.CDATA;
+/** Type for <!doctype ...> */
+export declare const Doctype = ElementType.Doctype;
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map b/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map
new file mode 100644
index 0000000..d8a4ab4
--- /dev/null
+++ b/node_modules/dom-serializer/node_modules/domelementtype/lib/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,0BAAkB,WAAW;IACzB,8CAA8C;IAC9C,IAAI,SAAS;IACb,oBAAoB;IACpB,IAAI,SAAS;IACb,yBAAyB;IACzB,SAAS,cAAc;IACvB,4BAA4B;IAC5B,OAAO,YAAY;IACnB,6BAA6B;IAC7B,MAAM,WAAW;IACjB,4BAA4B;IAC5B,KAAK,UAAU;IACf,uBAAuB;IACvB,GAAG,QAAQ;IACX,iCAAiC;IACjC,KAAK,UAAU;IACf,8BAA8B;IAC9B,OAAO,YAAY;CACtB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAM1D;AAGD,8CAA8C;AAC9C,eAAO,MAAM,IAAI,mBAAmB,CAAC;AACrC,oBAAoB;AACpB,eAAO,MAAM,IAAI,mBAAmB,CAAC;AACrC,yBAAyB;AACzB,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,4BAA4B;AAC5B,eAAO,MAAM,OAAO,sBAAsB,CAAC;AAC3C,6BAA6B;AAC7B,eAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,4BAA4B;AAC5B,eAAO,MAAM,KAAK,oBAAoB,CAAC;AACvC,uBAAuB;AACvB,eAAO,MAAM,GAAG,kBAAkB,CAAC;AACnC,iCAAiC;AACjC,eAAO,MAAM,KAAK,oBAAoB,CAAC;AACvC,8BAA8B;AAC9B,eAAO,MAAM,OAAO,sBAAsB,CAAC"}
\ No newline at end of file
diff --git a/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js b/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js
new file mode 100644
index 0000000..bf26d83
--- /dev/null
+++ b/node_modules/dom-serializer/node_modules/domelementtype/lib/index.js
@@ -0,0 +1,33 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = void 0;
+/**
+ * Tests whether an element is a tag or not.
+ *
+ * @param elem Element to test
+ */
+function isTag(elem) {
+    return (elem.type === "tag" /* Tag */ ||
+        elem.type === "script" /* Script */ ||
+        elem.type === "style" /* Style */);
+}
+exports.isTag = isTag;
+// Exports for backwards compatibility
+/** Type for the root element of a document */
+exports.Root = "root" /* Root */;
+/** Type for Text */
+exports.Text = "text" /* Text */;
+/** Type for <? ... ?> */
+exports.Directive = "directive" /* Directive */;
+/** Type for <!-- ... --> */
+exports.Comment = "comment" /* Comment */;
+/** Type for <script> tags */
+exports.Script = "script" /* Script */;
+/** Type for <style> tags */
+exports.Style = "style" /* Style */;
+/** Type for Any tag */
+exports.Tag = "tag" /* Tag */;
+/** Type for <![CDATA[ ... ]]> */
+exports.CDATA = "cdata" /* CDATA */;
+/** Type for <!doctype ...> */
+exports.Doctype = "doctype" /* Doctype */;
diff --git a/node_modules/dom-serializer/node_modules/domelementtype/package.json b/node_modules/dom-serializer/node_modules/domelementtype/package.json
new file mode 100644
index 0000000..5842aa8
--- /dev/null
+++ b/node_modules/dom-serializer/node_modules/domelementtype/package.json
@@ -0,0 +1,77 @@
+{
+  "_from": "domelementtype@^2.0.1",
+  "_id": "domelementtype@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
+  "_location": "/dom-serializer/domelementtype",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "domelementtype@^2.0.1",
+    "name": "domelementtype",
+    "escapedName": "domelementtype",
+    "rawSpec": "^2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.1"
+  },
+  "_requiredBy": [
+    "/dom-serializer"
+  ],
+  "_resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
+  "_shasum": "a851c080a6d1c3d94344aed151d99f669edf585e",
+  "_spec": "domelementtype@^2.0.1",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\dom-serializer",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/domelementtype/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "all the types of nodes in htmlparser2's dom",
+  "devDependencies": {
+    "@typescript-eslint/eslint-plugin": "^4.1.0",
+    "@typescript-eslint/parser": "^4.1.0",
+    "eslint": "^7.9.0",
+    "eslint-config-prettier": "^6.0.0",
+    "prettier": "^2.1.1",
+    "typescript": "^4.0.2"
+  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": [
+    {
+      "type": "github",
+      "url": "https://github.com/sponsors/fb55"
+    }
+  ],
+  "homepage": "https://github.com/fb55/domelementtype#readme",
+  "keywords": [
+    "dom",
+    "htmlparser2"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "domelementtype",
+  "prettier": {
+    "tabWidth": 4
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/fb55/domelementtype.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "format": "prettier --write **/*.{ts,json,md}",
+    "lint": "eslint src",
+    "prepare": "npm run build",
+    "test": "npm run lint && prettier --check **/*.{ts,json,md}"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "2.1.0"
+}
diff --git a/node_modules/dom-serializer/node_modules/domelementtype/readme.md b/node_modules/dom-serializer/node_modules/domelementtype/readme.md
new file mode 100644
index 0000000..4eadc07
--- /dev/null
+++ b/node_modules/dom-serializer/node_modules/domelementtype/readme.md
@@ -0,0 +1 @@
+All the types of nodes in htmlparser2's DOM.
diff --git a/node_modules/dom-serializer/package.json b/node_modules/dom-serializer/package.json
new file mode 100644
index 0000000..c742897
--- /dev/null
+++ b/node_modules/dom-serializer/package.json
@@ -0,0 +1,72 @@
+{
+  "_from": "dom-serializer@0",
+  "_id": "dom-serializer@0.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+  "_location": "/dom-serializer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "dom-serializer@0",
+    "name": "dom-serializer",
+    "escapedName": "dom-serializer",
+    "rawSpec": "0",
+    "saveSpec": null,
+    "fetchSpec": "0"
+  },
+  "_requiredBy": [
+    "/domutils"
+  ],
+  "_resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+  "_shasum": "1afb81f533717175d478655debc5e332d9f9bb51",
+  "_spec": "dom-serializer@0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\domutils",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/cheeriojs/dom-renderer/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "domelementtype": "^2.0.1",
+    "entities": "^2.0.0"
+  },
+  "deprecated": false,
+  "description": "render dom nodes to string",
+  "devDependencies": {
+    "cheerio": "^1.0.0-rc.2",
+    "expect.js": "~0.3.1",
+    "htmlparser2": "^3.10.0",
+    "lodash": "^4.17.11",
+    "mocha": "^6.2.0",
+    "xyz": "^3.0.0"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "foreignNames.json"
+  ],
+  "homepage": "https://github.com/cheeriojs/dom-renderer#readme",
+  "keywords": [
+    "html",
+    "xml",
+    "render"
+  ],
+  "license": "MIT",
+  "main": "./index.js",
+  "name": "dom-serializer",
+  "prettier": {
+    "singleQuote": true
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/cheeriojs/dom-renderer.git"
+  },
+  "scripts": {
+    "test": "mocha test.js"
+  },
+  "version": "0.2.2"
+}
