{"version":3,"file":"pixi-svg.mjs","sources":["../node_modules/d-path-parser/parser.js","../node_modules/tinycolor2/esm/tinycolor.js","../node_modules/svg-arc-to-cubic-bezier/modules/index.js","../src/SVG.ts"],"sourcesContent":["/*!\n * d-path-parser - v1.0.0\n * by Massimo Artizzu (MaxArt2501)\n *\n * https://github.com/MaxArt2501/d-path-parser\n *\n * Licensed under the MIT License\n * See LICENSE for details\n */\n\n(function (root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        // AMD. Register as an anonymous module.\n        define([], factory);\n    } else if (typeof exports === \"object\") {\n        // Node. Does not work with strict CommonJS, but\n        // only CommonJS-like environments that support module.exports,\n        // like Node.\n        module.exports = factory();\n    } else {\n        // Browser globals (root is window)\n        root.dPathParse = factory();\n    }\n})(this, function() {\n\"use strict\";\n\nreturn function parse(d) {\n    var re = {\n        command: /\\s*([achlmqstvz])/gi,\n        number: /\\s*([+-]?\\d*\\.?\\d+(?:e[+-]?\\d+)?)/gi,\n        comma: /\\s*(?:(,)|\\s)/g,\n        flag: /\\s*([01])/g\n    };\n    var matchers = {\n        \"number\": function(must) {\n            return +get(\"number\", must);\n        },\n        \"coordinate pair\": function(must) {\n            var x = get(\"number\", must);\n            if (x === null && !must) return null;\n            get(\"comma\");\n            var y = get(\"number\", true);\n            return { x: +x, y: +y };\n        },\n        \"arc definition\": function(must) {\n            var radii = matchers[\"coordinate pair\"](must);\n            if (!radii && !must) return null;\n            get(\"comma\");\n            var rotation = +get(\"number\", true);\n            get(\"comma\", true);\n            var large = !!+get(\"flag\", true);\n            get(\"comma\");\n            var clockwise = !!+get(\"flag\", true);\n            get(\"comma\");\n            var end = matchers[\"coordinate pair\"](true);\n            return {\n                radii: radii,\n                rotation: rotation,\n                large: large,\n                clockwise: clockwise,\n                end: end\n            };\n        }\n    }\n    var index = 0;\n    var commands = [];\n\n    while (index < d.length) {\n        var cmd = get(\"command\");\n        var upcmd = cmd.toUpperCase();\n        var relative = cmd !== upcmd;\n        var sequence;\n        switch (upcmd) {\n            case \"M\":\n                sequence = getSequence(\"coordinate pair\").map(function(coords, i) {\n                    if (i === 1) cmd = relative ? \"l\" : \"L\";\n                    return makeCommand({ end: coords });\n                });\n                break;\n            case \"L\":\n            case \"T\":\n                sequence = getSequence(\"coordinate pair\").map(function(coords) {\n                    return makeCommand({ end: coords });\n                });\n                break;\n            case \"C\":\n                sequence = getSequence(\"coordinate pair\");\n                if (sequence.length % 3)\n                    throw Error(\"Expected coordinate pair triplet at position \" + index);\n\n                sequence = sequence.reduce(function(seq, coords, i) {\n                    var rest = i % 3;\n                    if (!rest) {\n                        seq.push(makeCommand({ cp1: coords }));\n                    } else {\n                        var last = seq[seq.length - 1];\n                        last[rest === 1 ? \"cp2\" : \"end\"] = coords;\n                    }\n                    return seq;\n                }, []);\n\n                break;\n            case \"Q\":\n            case \"S\":\n                sequence = getSequence(\"coordinate pair\");\n                if (sequence.length & 1)\n                    throw Error(\"Expected coordinate pair couple at position \" + index);\n\n                sequence = sequence.reduce(function(seq, coords, i) {\n                    var odd = i & 1;\n                    if (!odd) {\n                        seq.push(makeCommand({ cp: coords }));\n                    } else {\n                        var last = seq[seq.length - 1];\n                        last.end = coords;\n                    }\n                    return seq;\n                }, []);\n\n                break;\n            case \"H\":\n            case \"V\":\n                sequence = getSequence(\"number\").map(function(value) {\n                    return makeCommand({ value: value });\n                });\n                break;\n            case \"A\":\n                sequence = getSequence(\"arc definition\").map(makeCommand);\n                break;\n            case \"Z\":\n                sequence = [ { code: \"Z\" } ];\n                break;\n        }\n        commands.push.apply(commands, sequence);\n    }\n\n    return commands;\n\n    function makeCommand(obj) {\n        obj.code = cmd;\n        obj.relative = relative;\n\n        return obj;\n    }\n    function get(what, must) {\n        re[what].lastIndex = index;\n        var res = re[what].exec(d);\n        if (!res || res.index !== index) {\n            if (!must) return null;\n            throw Error(\"Expected \" + what + \" at position \" + index);\n        }\n\n        index = re[what].lastIndex;\n\n        return res[1];\n    }\n    function getSequence(what) {\n        var sequence = [];\n        var matched;\n        var must = true;\n        while (matched = matchers[what](must)) {\n            sequence.push(matched);\n            must = !!get(\"comma\");\n        }\n\n        return sequence;\n    }\n};\n});\n","// This file is autogenerated. It's used to publish ESM to npm.\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nconst trimLeft = /^\\s+/;\nconst trimRight = /\\s+$/;\n\nfunction tinycolor(color, opts) {\n  color = color ? color : \"\";\n  opts = opts || {};\n\n  // If input is already a tinycolor, return itself\n  if (color instanceof tinycolor) {\n    return color;\n  }\n  // If we are called as a function, call using new instead\n  if (!(this instanceof tinycolor)) {\n    return new tinycolor(color, opts);\n  }\n\n  var rgb = inputToRGB(color);\n  (this._originalInput = color),\n    (this._r = rgb.r),\n    (this._g = rgb.g),\n    (this._b = rgb.b),\n    (this._a = rgb.a),\n    (this._roundA = Math.round(100 * this._a) / 100),\n    (this._format = opts.format || rgb.format);\n  this._gradientType = opts.gradientType;\n\n  // Don't let the range of [0,255] come back in [0,1].\n  // Potentially lose a little bit of precision here, but will fix issues where\n  // .5 gets interpreted as half of the total, instead of half of 1\n  // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n  if (this._r < 1) this._r = Math.round(this._r);\n  if (this._g < 1) this._g = Math.round(this._g);\n  if (this._b < 1) this._b = Math.round(this._b);\n\n  this._ok = rgb.ok;\n}\n\ntinycolor.prototype = {\n  isDark: function () {\n    return this.getBrightness() < 128;\n  },\n  isLight: function () {\n    return !this.isDark();\n  },\n  isValid: function () {\n    return this._ok;\n  },\n  getOriginalInput: function () {\n    return this._originalInput;\n  },\n  getFormat: function () {\n    return this._format;\n  },\n  getAlpha: function () {\n    return this._a;\n  },\n  getBrightness: function () {\n    //http://www.w3.org/TR/AERT#color-contrast\n    var rgb = this.toRgb();\n    return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n  },\n  getLuminance: function () {\n    //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n    var rgb = this.toRgb();\n    var RsRGB, GsRGB, BsRGB, R, G, B;\n    RsRGB = rgb.r / 255;\n    GsRGB = rgb.g / 255;\n    BsRGB = rgb.b / 255;\n\n    if (RsRGB <= 0.03928) R = RsRGB / 12.92;\n    else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n    if (GsRGB <= 0.03928) G = GsRGB / 12.92;\n    else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n    if (BsRGB <= 0.03928) B = BsRGB / 12.92;\n    else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n    return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n  },\n  setAlpha: function (value) {\n    this._a = boundAlpha(value);\n    this._roundA = Math.round(100 * this._a) / 100;\n    return this;\n  },\n  toHsv: function () {\n    var hsv = rgbToHsv(this._r, this._g, this._b);\n    return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n  },\n  toHsvString: function () {\n    var hsv = rgbToHsv(this._r, this._g, this._b);\n    var h = Math.round(hsv.h * 360),\n      s = Math.round(hsv.s * 100),\n      v = Math.round(hsv.v * 100);\n    return this._a == 1\n      ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\"\n      : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n  },\n  toHsl: function () {\n    var hsl = rgbToHsl(this._r, this._g, this._b);\n    return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n  },\n  toHslString: function () {\n    var hsl = rgbToHsl(this._r, this._g, this._b);\n    var h = Math.round(hsl.h * 360),\n      s = Math.round(hsl.s * 100),\n      l = Math.round(hsl.l * 100);\n    return this._a == 1\n      ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\"\n      : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n  },\n  toHex: function (allow3Char) {\n    return rgbToHex(this._r, this._g, this._b, allow3Char);\n  },\n  toHexString: function (allow3Char) {\n    return \"#\" + this.toHex(allow3Char);\n  },\n  toHex8: function (allow4Char) {\n    return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n  },\n  toHex8String: function (allow4Char) {\n    return \"#\" + this.toHex8(allow4Char);\n  },\n  toRgb: function () {\n    return {\n      r: Math.round(this._r),\n      g: Math.round(this._g),\n      b: Math.round(this._b),\n      a: this._a,\n    };\n  },\n  toRgbString: function () {\n    return this._a == 1\n      ? \"rgb(\" +\n          Math.round(this._r) +\n          \", \" +\n          Math.round(this._g) +\n          \", \" +\n          Math.round(this._b) +\n          \")\"\n      : \"rgba(\" +\n          Math.round(this._r) +\n          \", \" +\n          Math.round(this._g) +\n          \", \" +\n          Math.round(this._b) +\n          \", \" +\n          this._roundA +\n          \")\";\n  },\n  toPercentageRgb: function () {\n    return {\n      r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n      g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n      b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n      a: this._a,\n    };\n  },\n  toPercentageRgbString: function () {\n    return this._a == 1\n      ? \"rgb(\" +\n          Math.round(bound01(this._r, 255) * 100) +\n          \"%, \" +\n          Math.round(bound01(this._g, 255) * 100) +\n          \"%, \" +\n          Math.round(bound01(this._b, 255) * 100) +\n          \"%)\"\n      : \"rgba(\" +\n          Math.round(bound01(this._r, 255) * 100) +\n          \"%, \" +\n          Math.round(bound01(this._g, 255) * 100) +\n          \"%, \" +\n          Math.round(bound01(this._b, 255) * 100) +\n          \"%, \" +\n          this._roundA +\n          \")\";\n  },\n  toName: function () {\n    if (this._a === 0) {\n      return \"transparent\";\n    }\n\n    if (this._a < 1) {\n      return false;\n    }\n\n    return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n  },\n  toFilter: function (secondColor) {\n    var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n    var secondHex8String = hex8String;\n    var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n    if (secondColor) {\n      var s = tinycolor(secondColor);\n      secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n    }\n\n    return (\n      \"progid:DXImageTransform.Microsoft.gradient(\" +\n      gradientType +\n      \"startColorstr=\" +\n      hex8String +\n      \",endColorstr=\" +\n      secondHex8String +\n      \")\"\n    );\n  },\n  toString: function (format) {\n    var formatSet = !!format;\n    format = format || this._format;\n\n    var formattedString = false;\n    var hasAlpha = this._a < 1 && this._a >= 0;\n    var needsAlphaFormat =\n      !formatSet &&\n      hasAlpha &&\n      (format === \"hex\" ||\n        format === \"hex6\" ||\n        format === \"hex3\" ||\n        format === \"hex4\" ||\n        format === \"hex8\" ||\n        format === \"name\");\n\n    if (needsAlphaFormat) {\n      // Special case for \"transparent\", all other non-alpha formats\n      // will return rgba when there is transparency.\n      if (format === \"name\" && this._a === 0) {\n        return this.toName();\n      }\n      return this.toRgbString();\n    }\n    if (format === \"rgb\") {\n      formattedString = this.toRgbString();\n    }\n    if (format === \"prgb\") {\n      formattedString = this.toPercentageRgbString();\n    }\n    if (format === \"hex\" || format === \"hex6\") {\n      formattedString = this.toHexString();\n    }\n    if (format === \"hex3\") {\n      formattedString = this.toHexString(true);\n    }\n    if (format === \"hex4\") {\n      formattedString = this.toHex8String(true);\n    }\n    if (format === \"hex8\") {\n      formattedString = this.toHex8String();\n    }\n    if (format === \"name\") {\n      formattedString = this.toName();\n    }\n    if (format === \"hsl\") {\n      formattedString = this.toHslString();\n    }\n    if (format === \"hsv\") {\n      formattedString = this.toHsvString();\n    }\n\n    return formattedString || this.toHexString();\n  },\n  clone: function () {\n    return tinycolor(this.toString());\n  },\n\n  _applyModification: function (fn, args) {\n    var color = fn.apply(null, [this].concat([].slice.call(args)));\n    this._r = color._r;\n    this._g = color._g;\n    this._b = color._b;\n    this.setAlpha(color._a);\n    return this;\n  },\n  lighten: function () {\n    return this._applyModification(lighten, arguments);\n  },\n  brighten: function () {\n    return this._applyModification(brighten, arguments);\n  },\n  darken: function () {\n    return this._applyModification(darken, arguments);\n  },\n  desaturate: function () {\n    return this._applyModification(desaturate, arguments);\n  },\n  saturate: function () {\n    return this._applyModification(saturate, arguments);\n  },\n  greyscale: function () {\n    return this._applyModification(greyscale, arguments);\n  },\n  spin: function () {\n    return this._applyModification(spin, arguments);\n  },\n\n  _applyCombination: function (fn, args) {\n    return fn.apply(null, [this].concat([].slice.call(args)));\n  },\n  analogous: function () {\n    return this._applyCombination(analogous, arguments);\n  },\n  complement: function () {\n    return this._applyCombination(complement, arguments);\n  },\n  monochromatic: function () {\n    return this._applyCombination(monochromatic, arguments);\n  },\n  splitcomplement: function () {\n    return this._applyCombination(splitcomplement, arguments);\n  },\n  // Disabled until https://github.com/bgrins/TinyColor/issues/254\n  // polyad: function (number) {\n  //   return this._applyCombination(polyad, [number]);\n  // },\n  triad: function () {\n    return this._applyCombination(polyad, [3]);\n  },\n  tetrad: function () {\n    return this._applyCombination(polyad, [4]);\n  },\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n  if (typeof color == \"object\") {\n    var newColor = {};\n    for (var i in color) {\n      if (color.hasOwnProperty(i)) {\n        if (i === \"a\") {\n          newColor[i] = color[i];\n        } else {\n          newColor[i] = convertToPercentage(color[i]);\n        }\n      }\n    }\n    color = newColor;\n  }\n\n  return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n  var rgb = { r: 0, g: 0, b: 0 };\n  var a = 1;\n  var s = null;\n  var v = null;\n  var l = null;\n  var ok = false;\n  var format = false;\n\n  if (typeof color == \"string\") {\n    color = stringInputToObject(color);\n  }\n\n  if (typeof color == \"object\") {\n    if (\n      isValidCSSUnit(color.r) &&\n      isValidCSSUnit(color.g) &&\n      isValidCSSUnit(color.b)\n    ) {\n      rgb = rgbToRgb(color.r, color.g, color.b);\n      ok = true;\n      format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n    } else if (\n      isValidCSSUnit(color.h) &&\n      isValidCSSUnit(color.s) &&\n      isValidCSSUnit(color.v)\n    ) {\n      s = convertToPercentage(color.s);\n      v = convertToPercentage(color.v);\n      rgb = hsvToRgb(color.h, s, v);\n      ok = true;\n      format = \"hsv\";\n    } else if (\n      isValidCSSUnit(color.h) &&\n      isValidCSSUnit(color.s) &&\n      isValidCSSUnit(color.l)\n    ) {\n      s = convertToPercentage(color.s);\n      l = convertToPercentage(color.l);\n      rgb = hslToRgb(color.h, s, l);\n      ok = true;\n      format = \"hsl\";\n    }\n\n    if (color.hasOwnProperty(\"a\")) {\n      a = color.a;\n    }\n  }\n\n  a = boundAlpha(a);\n\n  return {\n    ok: ok,\n    format: color.format || format,\n    r: Math.min(255, Math.max(rgb.r, 0)),\n    g: Math.min(255, Math.max(rgb.g, 0)),\n    b: Math.min(255, Math.max(rgb.b, 0)),\n    a: a,\n  };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: bound01(r, 255) * 255,\n    g: bound01(g, 255) * 255,\n    b: bound01(b, 255) * 255,\n  };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n\n  var max = Math.max(r, g, b),\n    min = Math.min(r, g, b);\n  var h,\n    s,\n    l = (max + min) / 2;\n\n  if (max == min) {\n    h = s = 0; // achromatic\n  } else {\n    var d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n\n    h /= 6;\n  }\n\n  return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n  var r, g, b;\n\n  h = bound01(h, 360);\n  s = bound01(s, 100);\n  l = bound01(l, 100);\n\n  function hue2rgb(p, q, t) {\n    if (t < 0) t += 1;\n    if (t > 1) t -= 1;\n    if (t < 1 / 6) return p + (q - p) * 6 * t;\n    if (t < 1 / 2) return q;\n    if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n    return p;\n  }\n\n  if (s === 0) {\n    r = g = b = l; // achromatic\n  } else {\n    var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    var p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n\n  var max = Math.max(r, g, b),\n    min = Math.min(r, g, b);\n  var h,\n    s,\n    v = max;\n\n  var d = max - min;\n  s = max === 0 ? 0 : d / max;\n\n  if (max == min) {\n    h = 0; // achromatic\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s, 100);\n  v = bound01(v, 100);\n\n  var i = Math.floor(h),\n    f = h - i,\n    p = v * (1 - s),\n    q = v * (1 - f * s),\n    t = v * (1 - (1 - f) * s),\n    mod = i % 6,\n    r = [v, q, p, p, t, v][mod],\n    g = [t, v, v, q, p, p][mod],\n    b = [p, p, t, v, v, q][mod];\n\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n  var hex = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16)),\n  ];\n\n  // Return a 3 character hex if possible\n  if (\n    allow3Char &&\n    hex[0].charAt(0) == hex[0].charAt(1) &&\n    hex[1].charAt(0) == hex[1].charAt(1) &&\n    hex[2].charAt(0) == hex[2].charAt(1)\n  ) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n  }\n\n  return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n  var hex = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16)),\n    pad2(convertDecimalToHex(a)),\n  ];\n\n  // Return a 4 character hex if possible\n  if (\n    allow4Char &&\n    hex[0].charAt(0) == hex[0].charAt(1) &&\n    hex[1].charAt(0) == hex[1].charAt(1) &&\n    hex[2].charAt(0) == hex[2].charAt(1) &&\n    hex[3].charAt(0) == hex[3].charAt(1)\n  ) {\n    return (\n      hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0)\n    );\n  }\n\n  return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n  var hex = [\n    pad2(convertDecimalToHex(a)),\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16)),\n  ];\n\n  return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n  if (!color1 || !color2) return false;\n  return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function () {\n  return tinycolor.fromRatio({\n    r: Math.random(),\n    g: Math.random(),\n    b: Math.random(),\n  });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.s -= amount / 100;\n  hsl.s = clamp01(hsl.s);\n  return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.s += amount / 100;\n  hsl.s = clamp01(hsl.s);\n  return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n  return tinycolor(color).desaturate(100);\n}\n\nfunction lighten(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.l += amount / 100;\n  hsl.l = clamp01(hsl.l);\n  return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var rgb = tinycolor(color).toRgb();\n  rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n  rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n  rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n  return tinycolor(rgb);\n}\n\nfunction darken(color, amount) {\n  amount = amount === 0 ? 0 : amount || 10;\n  var hsl = tinycolor(color).toHsl();\n  hsl.l -= amount / 100;\n  hsl.l = clamp01(hsl.l);\n  return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n  var hsl = tinycolor(color).toHsl();\n  var hue = (hsl.h + amount) % 360;\n  hsl.h = hue < 0 ? 360 + hue : hue;\n  return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n  var hsl = tinycolor(color).toHsl();\n  hsl.h = (hsl.h + 180) % 360;\n  return tinycolor(hsl);\n}\n\nfunction polyad(color, number) {\n  if (isNaN(number) || number <= 0) {\n    throw new Error(\"Argument to polyad must be a positive number\");\n  }\n  var hsl = tinycolor(color).toHsl();\n  var result = [tinycolor(color)];\n  var step = 360 / number;\n  for (var i = 1; i < number; i++) {\n    result.push(tinycolor({ h: (hsl.h + i * step) % 360, s: hsl.s, l: hsl.l }));\n  }\n\n  return result;\n}\n\nfunction splitcomplement(color) {\n  var hsl = tinycolor(color).toHsl();\n  var h = hsl.h;\n  return [\n    tinycolor(color),\n    tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n    tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n  ];\n}\n\nfunction analogous(color, results, slices) {\n  results = results || 6;\n  slices = slices || 30;\n\n  var hsl = tinycolor(color).toHsl();\n  var part = 360 / slices;\n  var ret = [tinycolor(color)];\n\n  for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results; ) {\n    hsl.h = (hsl.h + part) % 360;\n    ret.push(tinycolor(hsl));\n  }\n  return ret;\n}\n\nfunction monochromatic(color, results) {\n  results = results || 6;\n  var hsv = tinycolor(color).toHsv();\n  var h = hsv.h,\n    s = hsv.s,\n    v = hsv.v;\n  var ret = [];\n  var modification = 1 / results;\n\n  while (results--) {\n    ret.push(tinycolor({ h: h, s: s, v: v }));\n    v = (v + modification) % 1;\n  }\n\n  return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n  amount = amount === 0 ? 0 : amount || 50;\n\n  var rgb1 = tinycolor(color1).toRgb();\n  var rgb2 = tinycolor(color2).toRgb();\n\n  var p = amount / 100;\n\n  var rgba = {\n    r: (rgb2.r - rgb1.r) * p + rgb1.r,\n    g: (rgb2.g - rgb1.g) * p + rgb1.g,\n    b: (rgb2.b - rgb1.b) * p + rgb1.b,\n    a: (rgb2.a - rgb1.a) * p + rgb1.a,\n  };\n\n  return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n  var c1 = tinycolor(color1);\n  var c2 = tinycolor(color2);\n  return (\n    (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) /\n    (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05)\n  );\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n  var readability = tinycolor.readability(color1, color2);\n  var wcag2Parms, out;\n\n  out = false;\n\n  wcag2Parms = validateWCAG2Parms(wcag2);\n  switch (wcag2Parms.level + wcag2Parms.size) {\n    case \"AAsmall\":\n    case \"AAAlarge\":\n      out = readability >= 4.5;\n      break;\n    case \"AAlarge\":\n      out = readability >= 3;\n      break;\n    case \"AAAsmall\":\n      out = readability >= 7;\n      break;\n  }\n  return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n  var bestColor = null;\n  var bestScore = 0;\n  var readability;\n  var includeFallbackColors, level, size;\n  args = args || {};\n  includeFallbackColors = args.includeFallbackColors;\n  level = args.level;\n  size = args.size;\n\n  for (var i = 0; i < colorList.length; i++) {\n    readability = tinycolor.readability(baseColor, colorList[i]);\n    if (readability > bestScore) {\n      bestScore = readability;\n      bestColor = tinycolor(colorList[i]);\n    }\n  }\n\n  if (\n    tinycolor.isReadable(baseColor, bestColor, {\n      level: level,\n      size: size,\n    }) ||\n    !includeFallbackColors\n  ) {\n    return bestColor;\n  } else {\n    args.includeFallbackColors = false;\n    return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n  }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = (tinycolor.names = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\",\n});\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = (tinycolor.hexNames = flip(names));\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n  var flipped = {};\n  for (var i in o) {\n    if (o.hasOwnProperty(i)) {\n      flipped[o[i]] = i;\n    }\n  }\n  return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n  a = parseFloat(a);\n\n  if (isNaN(a) || a < 0 || a > 1) {\n    a = 1;\n  }\n\n  return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n  if (isOnePointZero(n)) n = \"100%\";\n\n  var processPercent = isPercentage(n);\n  n = Math.min(max, Math.max(0, parseFloat(n)));\n\n  // Automatically convert percentage into number\n  if (processPercent) {\n    n = parseInt(n * max, 10) / 100;\n  }\n\n  // Handle floating point rounding errors\n  if (Math.abs(n - max) < 0.000001) {\n    return 1;\n  }\n\n  // Convert into [0, 1] range if it isn't already\n  return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n  return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n  return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n  return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n  return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n  if (n <= 1) {\n    n = n * 100 + \"%\";\n  }\n\n  return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n  return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\nvar matchers = (function () {\n  // <http://www.w3.org/TR/css3-values/#integers>\n  var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n  // <http://www.w3.org/TR/css3-values/#number-value>\n  var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n  // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n  var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n  // Actual matching.\n  // Parentheses and commas are optional, but not required.\n  // Whitespace can take the place of commas or opening paren\n  var PERMISSIVE_MATCH3 =\n    \"[\\\\s|\\\\(]+(\" +\n    CSS_UNIT +\n    \")[,|\\\\s]+(\" +\n    CSS_UNIT +\n    \")[,|\\\\s]+(\" +\n    CSS_UNIT +\n    \")\\\\s*\\\\)?\";\n  var PERMISSIVE_MATCH4 =\n    \"[\\\\s|\\\\(]+(\" +\n    CSS_UNIT +\n    \")[,|\\\\s]+(\" +\n    CSS_UNIT +\n    \")[,|\\\\s]+(\" +\n    CSS_UNIT +\n    \")[,|\\\\s]+(\" +\n    CSS_UNIT +\n    \")\\\\s*\\\\)?\";\n\n  return {\n    CSS_UNIT: new RegExp(CSS_UNIT),\n    rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n    rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n    hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n    hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n    hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n    hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n  };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n  return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n  color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n  var named = false;\n  if (names[color]) {\n    color = names[color];\n    named = true;\n  } else if (color == \"transparent\") {\n    return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n  }\n\n  // Try to match string input using regular expressions.\n  // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n  // Just return an object and let the conversion functions handle that.\n  // This way the result will be the same whether the tinycolor is initialized with string or object.\n  var match;\n  if ((match = matchers.rgb.exec(color))) {\n    return { r: match[1], g: match[2], b: match[3] };\n  }\n  if ((match = matchers.rgba.exec(color))) {\n    return { r: match[1], g: match[2], b: match[3], a: match[4] };\n  }\n  if ((match = matchers.hsl.exec(color))) {\n    return { h: match[1], s: match[2], l: match[3] };\n  }\n  if ((match = matchers.hsla.exec(color))) {\n    return { h: match[1], s: match[2], l: match[3], a: match[4] };\n  }\n  if ((match = matchers.hsv.exec(color))) {\n    return { h: match[1], s: match[2], v: match[3] };\n  }\n  if ((match = matchers.hsva.exec(color))) {\n    return { h: match[1], s: match[2], v: match[3], a: match[4] };\n  }\n  if ((match = matchers.hex8.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      a: convertHexToDecimal(match[4]),\n      format: named ? \"name\" : \"hex8\",\n    };\n  }\n  if ((match = matchers.hex6.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      format: named ? \"name\" : \"hex\",\n    };\n  }\n  if ((match = matchers.hex4.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1] + \"\" + match[1]),\n      g: parseIntFromHex(match[2] + \"\" + match[2]),\n      b: parseIntFromHex(match[3] + \"\" + match[3]),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: named ? \"name\" : \"hex8\",\n    };\n  }\n  if ((match = matchers.hex3.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1] + \"\" + match[1]),\n      g: parseIntFromHex(match[2] + \"\" + match[2]),\n      b: parseIntFromHex(match[3] + \"\" + match[3]),\n      format: named ? \"name\" : \"hex\",\n    };\n  }\n\n  return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n  // return valid WCAG2 parms for isReadable.\n  // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n  var level, size;\n  parms = parms || { level: \"AA\", size: \"small\" };\n  level = (parms.level || \"AA\").toUpperCase();\n  size = (parms.size || \"small\").toLowerCase();\n  if (level !== \"AA\" && level !== \"AAA\") {\n    level = \"AA\";\n  }\n  if (size !== \"small\" && size !== \"large\") {\n    size = \"small\";\n  }\n  return { level: level, size: size };\n}\n\nexport { tinycolor as default };\n","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar TAU = Math.PI * 2;\n\nvar mapToEllipse = function mapToEllipse(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n  var x = _ref.x,\n      y = _ref.y;\n\n  x *= rx;\n  y *= ry;\n\n  var xp = cosphi * x - sinphi * y;\n  var yp = sinphi * x + cosphi * y;\n\n  return {\n    x: xp + centerx,\n    y: yp + centery\n  };\n};\n\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n  // If 90 degree circular arc, use a constant\n  // as derived from http://spencermortensen.com/articles/bezier-circle\n  var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n\n  var x1 = Math.cos(ang1);\n  var y1 = Math.sin(ang1);\n  var x2 = Math.cos(ang1 + ang2);\n  var y2 = Math.sin(ang1 + ang2);\n\n  return [{\n    x: x1 - y1 * a,\n    y: y1 + x1 * a\n  }, {\n    x: x2 + y2 * a,\n    y: y2 - x2 * a\n  }, {\n    x: x2,\n    y: y2\n  }];\n};\n\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n  var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n\n  var dot = ux * vx + uy * vy;\n\n  if (dot > 1) {\n    dot = 1;\n  }\n\n  if (dot < -1) {\n    dot = -1;\n  }\n\n  return sign * Math.acos(dot);\n};\n\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n  var rxsq = Math.pow(rx, 2);\n  var rysq = Math.pow(ry, 2);\n  var pxpsq = Math.pow(pxp, 2);\n  var pypsq = Math.pow(pyp, 2);\n\n  var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n\n  if (radicant < 0) {\n    radicant = 0;\n  }\n\n  radicant /= rxsq * pypsq + rysq * pxpsq;\n  radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n\n  var centerxp = radicant * rx / ry * pyp;\n  var centeryp = radicant * -ry / rx * pxp;\n\n  var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n  var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n\n  var vx1 = (pxp - centerxp) / rx;\n  var vy1 = (pyp - centeryp) / ry;\n  var vx2 = (-pxp - centerxp) / rx;\n  var vy2 = (-pyp - centeryp) / ry;\n\n  var ang1 = vectorAngle(1, 0, vx1, vy1);\n  var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n\n  if (sweepFlag === 0 && ang2 > 0) {\n    ang2 -= TAU;\n  }\n\n  if (sweepFlag === 1 && ang2 < 0) {\n    ang2 += TAU;\n  }\n\n  return [centerx, centery, ang1, ang2];\n};\n\nvar arcToBezier = function arcToBezier(_ref2) {\n  var px = _ref2.px,\n      py = _ref2.py,\n      cx = _ref2.cx,\n      cy = _ref2.cy,\n      rx = _ref2.rx,\n      ry = _ref2.ry,\n      _ref2$xAxisRotation = _ref2.xAxisRotation,\n      xAxisRotation = _ref2$xAxisRotation === undefined ? 0 : _ref2$xAxisRotation,\n      _ref2$largeArcFlag = _ref2.largeArcFlag,\n      largeArcFlag = _ref2$largeArcFlag === undefined ? 0 : _ref2$largeArcFlag,\n      _ref2$sweepFlag = _ref2.sweepFlag,\n      sweepFlag = _ref2$sweepFlag === undefined ? 0 : _ref2$sweepFlag;\n\n  var curves = [];\n\n  if (rx === 0 || ry === 0) {\n    return [];\n  }\n\n  var sinphi = Math.sin(xAxisRotation * TAU / 360);\n  var cosphi = Math.cos(xAxisRotation * TAU / 360);\n\n  var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n  var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n\n  if (pxp === 0 && pyp === 0) {\n    return [];\n  }\n\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n\n  var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n\n  if (lambda > 1) {\n    rx *= Math.sqrt(lambda);\n    ry *= Math.sqrt(lambda);\n  }\n\n  var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n      _getArcCenter2 = _slicedToArray(_getArcCenter, 4),\n      centerx = _getArcCenter2[0],\n      centery = _getArcCenter2[1],\n      ang1 = _getArcCenter2[2],\n      ang2 = _getArcCenter2[3];\n\n  // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n  // 1.0000000001. This causes `segments` to be greater than one, which is an\n  // unecessary split, and adds extra points to the bezier curve. To alleviate\n  // this issue, we round to 1.0 when the ratio is close to 1.0.\n\n\n  var ratio = Math.abs(ang2) / (TAU / 4);\n  if (Math.abs(1.0 - ratio) < 0.0000001) {\n    ratio = 1.0;\n  }\n\n  var segments = Math.max(Math.ceil(ratio), 1);\n\n  ang2 /= segments;\n\n  for (var i = 0; i < segments; i++) {\n    curves.push(approxUnitArc(ang1, ang2));\n    ang1 += ang2;\n  }\n\n  return curves.map(function (curve) {\n    var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n        x1 = _mapToEllipse.x,\n        y1 = _mapToEllipse.y;\n\n    var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n        x2 = _mapToEllipse2.x,\n        y2 = _mapToEllipse2.y;\n\n    var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n        x = _mapToEllipse3.x,\n        y = _mapToEllipse3.y;\n\n    return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n  });\n};\n\nexport default arcToBezier;","import { Graphics } from '@pixi/graphics';\nimport dPathParser from 'd-path-parser';\nimport color from 'tinycolor2';\nimport arcToBezier from 'svg-arc-to-cubic-bezier';\n\ninterface SVGStyle\n{\n    fill: string | null;\n    opacity: string | null;\n    stroke: string | null;\n    strokeWidth: string | null;\n    strokeOpacity: string | null;\n    cap: string | null;\n    join: string | null;\n    miterLimit: string | null;\n}\n\n/**\n * Scalable Graphics drawn from SVG image document.\n * @class SVG\n * @extends PIXI.Graphics\n */\nclass SVG extends Graphics\n{\n    /** Fallback line color */\n    private lineColor: string | null = null;\n\n    /**\n     * @param svg - Inline SVGElement `<svg>` or buffer.\n     */\n    constructor(svg?: SVGSVGElement | SVGElement | string)\n    {\n        super();\n\n        if (svg)\n        {\n            this.drawSVG(svg);\n        }\n    }\n\n    /**\n     * Draw an SVG element.\n     * @param svg - Inline SVGElement `<svg>` or buffer.\n     * @return Element suitable for chaining.\n     */\n    drawSVG(svg: SVGSVGElement | SVGElement | string): this\n    {\n        if (typeof svg === 'string')\n        {\n            const div = document.createElement('div');\n\n            div.innerHTML = svg.trim();\n            svg = div.querySelector('svg') as SVGElement;\n        }\n\n        if (!svg)\n        {\n            throw new Error('Missing <svg> element in SVG constructor');\n        }\n\n        this._svgFill(svg);\n        this._svgChildren(svg.children);\n\n        return this;\n    }\n\n    /**\n     * Create a PIXI Graphic from SVG element\n     * @param children - Collection of SVG nodes\n     * @param inherit - Whether to inherit fill settings.\n     */\n    private _svgChildren(children: HTMLCollection, inherit = false): void\n    {\n        for (let i = 0; i < children.length; i++)\n        {\n            const child = children[i] as unknown as SVGElement;\n\n            this._svgFill(child, inherit);\n            switch (child.nodeName.toLowerCase())\n            {\n                case 'path': {\n                    this._svgPath(child as SVGPathElement);\n                    break;\n                }\n                case 'circle':\n                case 'ellipse': {\n                    this._svgCircle(child as SVGCircleElement);\n                    break;\n                }\n                case 'rect': {\n                    this._svgRect(child as SVGRectElement);\n                    break;\n                }\n                case 'polygon': {\n                    this._svgPoly(child as SVGPolygonElement, true);\n                    break;\n                }\n                case 'polyline': {\n                    this._svgPoly(child as SVGPolylineElement);\n                    break;\n                }\n                case 'g': {\n                    break;\n                }\n                default: {\n                    // eslint-disable-next-line no-console\n                    console.info(`[PIXI.SVG] <${child.nodeName}> elements unsupported`);\n                    break;\n                }\n            }\n            this._svgChildren(child.children, true);\n        }\n    }\n\n    /** Convert the Hexidecimal string (e.g., \"#fff\") to uint */\n    private _hexToUint(hex: string): number\n    {\n        if (hex[0] === '#')\n        {\n            // Remove the hash\n            hex = hex.substr(1);\n\n            // Convert shortcolors fc9 to ffcc99\n            if (hex.length === 3)\n            {\n                hex = hex.replace(/([a-f0-9])/ig, '$1$1');\n            }\n\n            return parseInt(hex, 16);\n        }\n\n        const { r, g, b } = color(hex).toRgb();\n\n        return (r << 16) + (g << 8) + b;\n    }\n\n    /**\n     * Render a <ellipse> element or <circle> element\n     * @param node - Circle element\n     */\n    private _svgCircle(node: SVGCircleElement): void\n    {\n        let heightProp = 'r';\n        let widthProp = 'r';\n        const isEllipse = node.nodeName === 'elipse';\n\n        if (isEllipse)\n        {\n            heightProp += 'x';\n            widthProp += 'y';\n        }\n        const width = parseFloat(node.getAttribute(widthProp) as string);\n        const height = parseFloat(node.getAttribute(heightProp) as string);\n        const cx = node.getAttribute('cx');\n        const cy = node.getAttribute('cy');\n        let x = 0;\n        let y = 0;\n\n        if (cx !== null)\n        {\n            x = parseFloat(cx);\n        }\n        if (cy !== null)\n        {\n            y = parseFloat(cy);\n        }\n        if (!isEllipse)\n        {\n            this.drawCircle(x, y, width);\n        }\n        else\n        {\n            this.drawEllipse(x, y, width, height);\n        }\n    }\n\n    /**\n     * Render a <rect> element\n     * @param node - Rectangle element\n     */\n    private _svgRect(node: SVGRectElement): void\n    {\n        const x = parseFloat(node.getAttribute('x') as string);\n        const y = parseFloat(node.getAttribute('y') as string);\n        const width = parseFloat(node.getAttribute('width') as string);\n        const height = parseFloat(node.getAttribute('height') as string);\n        const rx = parseFloat(node.getAttribute('rx') as string);\n\n        if (rx)\n        {\n            this.drawRoundedRect(x, y, width, height, rx);\n        }\n        else\n        {\n            this.drawRect(x, y, width, height);\n        }\n    }\n\n    /**\n     * Convert the SVG style name into usable name.\n     * @param name - Name of style\n     * @return Name used to reference style\n     */\n    private _convertStyleName(name: string): string\n    {\n        return name\n            .trim()\n            .replace('-width', 'Width')\n            .replace(/.*-(line)?/, '');\n    }\n\n    /**\n     * Get the style property and parse options.\n     * @param node - Element with style\n     * @return Style attributes\n     */\n    private _svgStyle(node: SVGElement): SVGStyle\n    {\n        const style = node.getAttribute('style');\n        const baseOpacity = node.getAttribute('opacity');\n        const result: SVGStyle = {\n            fill: node.getAttribute('fill'),\n            opacity: baseOpacity || node.getAttribute('fill-opacity'),\n            stroke: node.getAttribute('stroke'),\n            strokeOpacity: baseOpacity || node.getAttribute('stroke-opacity'),\n            strokeWidth: node.getAttribute('stroke-width'),\n            cap: node.getAttribute('stroke-linecap'),\n            join: node.getAttribute('stroke-linejoin'),\n            miterLimit: node.getAttribute('stroke-miterlimit'),\n        };\n\n        if (style !== null)\n        {\n            style.split(';').forEach((prop) =>\n            {\n                const [name, value] = prop.split(':');\n\n                if (name)\n                {\n                    const convertedName = this._convertStyleName(name) as keyof typeof result;\n\n                    if (!result[convertedName])\n                    {\n                        result[convertedName] = value.trim();\n                    }\n                }\n            });\n        }\n\n        return result;\n    }\n\n    /**\n     * Render a polyline element.\n     * @param node - Polyline element\n     * @param close - Close the path\n     */\n    private _svgPoly(node: SVGPolylineElement, close?: boolean)\n    {\n        const points = (node.getAttribute('points') as string)\n            .split(/[ ,]/g)\n            .map((p) => parseInt(p, 10));\n\n        this.drawPolygon(points);\n\n        if (close)\n        {\n            this.closePath();\n        }\n    }\n\n    /**\n     * Set the fill and stroke style.\n     * @param node - SVG element\n     * @param inherit - Inherit the fill style\n     */\n    private _svgFill(node: SVGElement, inherit?: boolean)\n    {\n        const { fill, opacity, stroke, strokeOpacity, strokeWidth, cap, join, miterLimit } = this._svgStyle(node);\n        const defaultLineWidth = stroke !== null ? 1 : 0;\n        const lineWidth = strokeWidth !== null ? parseFloat(strokeWidth) : defaultLineWidth;\n        const lineColor = stroke !== null ? this._hexToUint(stroke) : this.lineColor;\n\n        if (fill)\n        {\n            if (fill === 'none')\n            {\n                this.beginFill(0, 0);\n            }\n            else\n            {\n                this.beginFill(\n                    this._hexToUint(fill),\n                    opacity !== null ? parseFloat(opacity) : 1,\n                );\n            }\n        }\n        else if (!inherit)\n        {\n            this.beginFill(0);\n        }\n\n        this.lineStyle({\n            width: stroke === null && strokeWidth === null && inherit ? this.line.width : lineWidth,\n            alpha: strokeOpacity === null ? this.line.alpha : parseFloat(strokeOpacity),\n            color: stroke === null && inherit ? this.line.color : lineColor,\n            cap: cap === null && inherit ? this.line.cap : cap,\n            join: join === null && inherit ? this.line.join : join,\n            miterLimit: miterLimit === null && inherit ? this.line.miterLimit : parseFloat(miterLimit as string),\n        } as any);\n\n        if (node.getAttribute('fill-rule'))\n        {\n            // eslint-disable-next-line no-console\n            console.info('[PIXI.SVG] \"fill-rule\" attribute is not supported');\n        }\n    }\n\n    /**\n     * Render a <path> d element\n     * @param node - Path element.\n     */\n    private _svgPath(node: SVGPathElement)\n    {\n        const d = node.getAttribute('d') as string;\n        let x = 0;\n        let y = 0;\n        const commands = dPathParser(d.trim());\n\n        for (let i = 0; i < commands.length; i++)\n        {\n            const command = commands[i];\n\n            switch (command.code)\n            {\n                case 'm': {\n                    this.moveTo(\n                        x += command.end.x,\n                        y += command.end.y,\n                    );\n                    break;\n                }\n                case 'M': {\n                    this.moveTo(\n                        x = command.end.x,\n                        y = command.end.y,\n                    );\n                    break;\n                }\n                case 'H': {\n                    this.lineTo(x = command.value, y);\n                    break;\n                }\n                case 'h': {\n                    this.lineTo(x += command.value, y);\n                    break;\n                }\n                case 'V': {\n                    this.lineTo(x, y = command.value);\n                    break;\n                }\n                case 'v': {\n                    this.lineTo(x, y += command.value);\n                    break;\n                }\n                case 'Z': {\n                    this.closePath();\n                    break;\n                }\n                case 'L': {\n                    this.lineTo(\n                        x = command.end.x,\n                        y = command.end.y,\n                    );\n                    break;\n                }\n                case 'l': {\n                    this.lineTo(\n                        x += command.end.x,\n                        y += command.end.y,\n                    );\n                    break;\n                }\n                case 'C': {\n                    this.bezierCurveTo(\n                        command.cp1.x,\n                        command.cp1.y,\n                        command.cp2.x,\n                        command.cp2.y,\n                        x = command.end.x,\n                        y = command.end.y,\n                    );\n                    break;\n                }\n                case 'c': {\n                    const currX = x;\n                    const currY = y;\n\n                    this.bezierCurveTo(\n                        currX + command.cp1.x,\n                        currY + command.cp1.y,\n                        currX + command.cp2.x,\n                        currY + command.cp2.y,\n                        x += command.end.x,\n                        y += command.end.y,\n                    );\n                    break;\n                }\n                case 's':\n                case 'q': {\n                    const currX = x;\n                    const currY = y;\n\n                    this.quadraticCurveTo(\n                        currX + command.cp.x,\n                        currY + command.cp.y,\n                        x += command.end.x,\n                        y += command.end.y,\n                    );\n                    break;\n                }\n                case 'S':\n                case 'Q': {\n                    this.quadraticCurveTo(\n                        command.cp.x,\n                        command.cp.y,\n                        x = command.end.x,\n                        y = command.end.y,\n                    );\n                    break;\n                }\n                // The arc and arcTo commands are incompatible\n                // with SVG (mostly because elliptical arcs)\n                // so we normalize arcs from SVG into bezier curves\n                case 'a': {\n                    arcToBezier({\n                        px: x,\n                        py: y,\n                        cx: x += command.end.x,\n                        cy: y += command.end.y,\n                        rx: command.radii.x,\n                        ry: command.radii.y,\n                        xAxisRotation: command.rotation,\n                        largeArcFlag: command.large ? 1 : 0,\n                        sweepFlag: command.clockwise ? 1 : 0,\n                    }).forEach(({ x1, y1, x2, y2, x, y }) =>\n                        this.bezierCurveTo(x1, y1, x2, y2, x, y));\n                    break;\n                }\n                case 'A': {\n                    arcToBezier({\n                        px: x,\n                        py: y,\n                        cx: x = command.end.x,\n                        cy: y = command.end.y,\n                        rx: command.radii.x,\n                        ry: command.radii.y,\n                        xAxisRotation: command.rotation,\n                        largeArcFlag: command.large ? 1 : 0,\n                        sweepFlag: command.clockwise ? 1 : 0,\n                    }).forEach(({ x1, y1, x2, y2, x, y }) =>\n                        this.bezierCurveTo(x1, y1, x2, y2, x, y));\n                    break;\n                }\n                default: {\n                    // eslint-disable-next-line no-console\n                    console.info('[PIXI.SVG] Draw command not supported:', command.code, command);\n                    break;\n                }\n            }\n        }\n    }\n}\n\nexport { SVG };\n"],"names":["root","factory","module","this","d","re","matchers","must","get","x","y","radii","rotation","large","clockwise","end","index","commands","cmd","upcmd","relative","sequence","getSequence","coords","i","makeCommand","seq","rest","last","odd","value","obj","what","res","matched","trimLeft","trimRight","tinycolor","color","opts","rgb","inputToRGB","RsRGB","GsRGB","BsRGB","R","G","B","boundAlpha","hsv","rgbToHsv","h","s","v","hsl","rgbToHsl","l","allow3Char","rgbToHex","allow4Char","rgbaToHex","bound01","hexNames","secondColor","hex8String","rgbaToArgbHex","secondHex8String","gradientType","format","formatSet","formattedString","hasAlpha","needsAlphaFormat","fn","args","lighten","brighten","darken","desaturate","saturate","greyscale","spin","analogous","complement","monochromatic","splitcomplement","polyad","newColor","convertToPercentage","a","ok","stringInputToObject","isValidCSSUnit","rgbToRgb","hsvToRgb","hslToRgb","r","g","b","max","min","hue2rgb","p","q","t","f","mod","hex","pad2","convertDecimalToHex","color1","color2","amount","clamp01","hue","number","result","step","results","slices","part","ret","modification","rgb1","rgb2","rgba","c1","c2","wcag2","readability","wcag2Parms","out","validateWCAG2Parms","baseColor","colorList","bestColor","bestScore","includeFallbackColors","level","size","names","flip","o","flipped","n","isOnePointZero","processPercent","isPercentage","val","parseIntFromHex","c","convertHexToDecimal","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","named","match","parms","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_i","_s","err","TAU","mapToEllipse","_ref","rx","ry","cosphi","sinphi","centerx","centery","xp","yp","approxUnitArc","ang1","ang2","x1","y1","x2","y2","vectorAngle","ux","uy","vx","vy","sign","dot","getArcCenter","px","py","cx","cy","largeArcFlag","sweepFlag","pxp","pyp","rxsq","rysq","pxpsq","pypsq","radicant","centerxp","centeryp","vx1","vy1","vx2","vy2","arcToBezier","_ref2","_ref2$xAxisRotation","xAxisRotation","_ref2$largeArcFlag","_ref2$sweepFlag","curves","lambda","_getArcCenter","_getArcCenter2","ratio","segments","curve","_mapToEllipse","_mapToEllipse2","_mapToEllipse3","SVG","Graphics","svg","div","children","inherit","child","node","heightProp","widthProp","isEllipse","width","height","name","style","baseOpacity","prop","convertedName","close","points","fill","opacity","stroke","strokeOpacity","strokeWidth","cap","join","miterLimit","lineWidth","lineColor","dPathParser","command","currX","currY"],"mappings":"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"}