{"version":3,"sources":["webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_defineProperty","value","_objectSpread","arguments","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","_iterableToArrayLimit","TypeError","_nonIterableRest","noop","_WINDOW","_DOCUMENT","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","e","_ref$userAgent","navigator","userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","oneToTen","indexOf","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","map","n","FontAwesomeConfig","querySelector","_ref","_ref2","attr","val","coerce","element","getAttribute","getAttrConfig","_config","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","config","w","styles","hooks","shims","namespace","functions","doScroll","test","readyState","listener","removeEventListener","fn","asyncTimer","NOOP","isNode","global","process","emit","asyncSetTimer","setImmediate","setTimeout","asyncQueue","asyncFlush","asyncCall","callback","arg","invokeCallback","subscriber","owner","settled","_state","_data","promise","then","reject","handleThenable","resolve","resolved","call","fulfill","reason","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","P","resolver","this","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","catch","all","promises","results","remaining","index","race","meaninglessTransform","size","x","y","rotate","flipX","flipY","insertCss","css","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","nextUniqueId","id","Math","random","htmlEscape","str","replace","joinStyles","reduce","acc","styleName","transformIsMeaningful","transform","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","width","height","fillBlack","abstract","force","attributes","fill","makeInlineSvgAbstract","params","_params$icons","icons","main","mask","prefix","iconName","symbol","title","maskId","titleId","extra","_params$watchable","watchable","found","isUploadedIcon","widthClass","ceil","attrClass","c","classes","join","content","children","role","uploadedIconWidthStyle","tag","args","explicitMaskId","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconMasking","styleString","makeIconStandard","asSymbol","offset","asIcon","noop$1","subject","initialValue","thisContext","result","func","a","b","d","bindInternal4","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","build","lookup","reducer","o","ligatures","ligature","hasRegular","shim","oldName","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","trim","joinAttributes","parseTransformString","transformString","toLowerCase","split","parts","first","rest","slice","parseFloat","isNaN","MissingIcon","error","name","message","stack","Error","create","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","cx","cy","r","values","opacity","asFoundIcon","vectorData","class","drc","fp","rc","s","dPatt","RegExp","customPropPatt","rPatt","ensureCss","_cssInserted","apiObject","abstractCreator","get","container","html","findIconDefinition","iconLookup","_iconLookup$prefix","library","definitions","Library","instance","Constructor","_classCallCheck","protoProps","staticProps","_this","_len","_key","additions","_pullDefinitions","definition","0","_normalized$key","parse","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","type","maybeIconDefinition","cachedSetTimeout","cachedClearTimeout","module","exports","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","nextTick","apply","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","object","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_toConsumableArray","arr2","_arrayWithoutHoles","iter","toString","from","_iterableToArray","_nonIterableSpread","camelize","string","match","chr","substr","styleToObject","pair","prop","startsWith","charAt","PRODUCTION","normalizeIconArgs","objectWithKey","FontAwesomeIcon","forwardedRef","iconArgs","maskArgs","className","_classes","spin","pulse","fixedWidth","inverse","border","listItem","flip","rotation","pull","swapOpacity","classList","renderedIcon","_console","console","log","extraProps","ref","defaultProps","hasOwnProperty","convertCurry","displayName","propTypes","bool","oneOfType","oneOf","convert","mixins","attrs","_extraProps$style","existingStyle","bind","Function","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","close","unref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","self","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","event","data","port2","script","onreadystatechange","removeChild","appendChild","attachEvent","task"],"mappings":"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","file":"ce111ac56a1fd8e39fed952b53a2f9c3816d68ee-fde8b8b3038dfa3e350f.js","sourcesContent":["import \"core-js/modules/es.array.reduce.js\";\n\n/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\n\ntry {\n  if (typeof window !== 'undefined') _WINDOW = window;\n  if (typeof document !== 'undefined') _DOCUMENT = document;\n  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n  if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n    _ref$userAgent = _ref.userAgent,\n    userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\n\nvar PRODUCTION = function () {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e) {\n    return false;\n  }\n}();\n\nvar PREFIX_TO_STYLE = {\n  'fas': 'solid',\n  'far': 'regular',\n  'fal': 'light',\n  'fad': 'duotone',\n  'fab': 'brands',\n  'fak': 'kit',\n  'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n  'solid': 'fas',\n  'regular': 'far',\n  'light': 'fal',\n  'duotone': 'fad',\n  'brands': 'fab',\n  'kit': 'fak'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n  '900': 'fas',\n  '400': 'far',\n  'normal': 'far',\n  '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n  GROUP: 'group',\n  SWAP_OPACITY: 'swap-opacity',\n  PRIMARY: 'primary',\n  SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n  return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n  return \"w-\".concat(n);\n}));\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n  if (element) {\n    return element.getAttribute(attr);\n  }\n}\n\nfunction coerce(val) {\n  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n  // We'll assume that this is an indication that it should be toggled to true\n  // For example <script data-search-pseudo-elements src=\"...\"></script>\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n  attrs.forEach(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        attr = _ref2[0],\n        key = _ref2[1];\n\n    var val = coerce(getAttrConfig(attr));\n\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\n\nvar _default = {\n  familyPrefix: DEFAULT_FAMILY_PREFIX,\n  replacementClass: DEFAULT_REPLACEMENT_CLASS,\n  autoReplaceSvg: true,\n  autoAddCss: true,\n  autoA11y: true,\n  searchPseudoElements: false,\n  observeMutations: true,\n  mutateApproach: 'async',\n  keepOriginalSource: true,\n  measurePerformance: false,\n  showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\nvar functions = [];\n\nvar listener = function listener() {\n  DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n  loaded = 1;\n  functions.map(function (fn) {\n    return fn();\n  });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready(fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n  // run promise callbacks\n  for (var i = 0; i < asyncQueue.length; i++) {\n    asyncQueue[i][0](asyncQueue[i][1]);\n  } // reset async asyncQueue\n\n\n  asyncQueue = [];\n  asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n  asyncQueue.push([callback, arg]);\n\n  if (!asyncTimer) {\n    asyncTimer = true;\n    asyncSetTimer(asyncFlush, 0);\n  }\n}\n\nfunction invokeResolver(resolver, promise) {\n  function resolvePromise(value) {\n    resolve(promise, value);\n  }\n\n  function rejectPromise(reason) {\n    reject(promise, reason);\n  }\n\n  try {\n    resolver(resolvePromise, rejectPromise);\n  } catch (e) {\n    rejectPromise(e);\n  }\n}\n\nfunction invokeCallback(subscriber) {\n  var owner = subscriber.owner;\n  var settled = owner._state;\n  var value = owner._data;\n  var callback = subscriber[settled];\n  var promise = subscriber.then;\n\n  if (typeof callback === 'function') {\n    settled = FULFILLED;\n\n    try {\n      value = callback(value);\n    } catch (e) {\n      reject(promise, e);\n    }\n  }\n\n  if (!handleThenable(promise, value)) {\n    if (settled === FULFILLED) {\n      resolve(promise, value);\n    }\n\n    if (settled === REJECTED) {\n      reject(promise, value);\n    }\n  }\n}\n\nfunction handleThenable(promise, value) {\n  var resolved;\n\n  try {\n    if (promise === value) {\n      throw new TypeError('A promises callback cannot return that same promise.');\n    }\n\n    if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n      // then should be retrieved only once\n      var then = value.then;\n\n      if (typeof then === 'function') {\n        then.call(value, function (val) {\n          if (!resolved) {\n            resolved = true;\n\n            if (value === val) {\n              fulfill(promise, val);\n            } else {\n              resolve(promise, val);\n            }\n          }\n        }, function (reason) {\n          if (!resolved) {\n            resolved = true;\n            reject(promise, reason);\n          }\n        });\n        return true;\n      }\n    }\n  } catch (e) {\n    if (!resolved) {\n      reject(promise, e);\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nfunction resolve(promise, value) {\n  if (promise === value || !handleThenable(promise, value)) {\n    fulfill(promise, value);\n  }\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state === PENDING) {\n    promise._state = SETTLED;\n    promise._data = value;\n    asyncCall(publishFulfillment, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state === PENDING) {\n    promise._state = SETTLED;\n    promise._data = reason;\n    asyncCall(publishRejection, promise);\n  }\n}\n\nfunction publish(promise) {\n  promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n  promise._state = FULFILLED;\n  publish(promise);\n}\n\nfunction publishRejection(promise) {\n  promise._state = REJECTED;\n  publish(promise);\n\n  if (!promise._handled && isNode) {\n    global.process.emit('unhandledRejection', promise._data, promise);\n  }\n}\n\nfunction notifyRejectionHandled(promise) {\n  global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n  }\n\n  if (this instanceof P === false) {\n    throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n  }\n\n  this._then = [];\n  invokeResolver(resolver, this);\n}\n\nP.prototype = {\n  constructor: P,\n  _state: PENDING,\n  _then: null,\n  _data: undefined,\n  _handled: false,\n  then: function then(onFulfillment, onRejection) {\n    var subscriber = {\n      owner: this,\n      then: new this.constructor(NOOP),\n      fulfilled: onFulfillment,\n      rejected: onRejection\n    };\n\n    if ((onRejection || onFulfillment) && !this._handled) {\n      this._handled = true;\n\n      if (this._state === REJECTED && isNode) {\n        asyncCall(notifyRejectionHandled, this);\n      }\n    }\n\n    if (this._state === FULFILLED || this._state === REJECTED) {\n      // already resolved, call callback async\n      asyncCall(invokeCallback, subscriber);\n    } else {\n      // subscribe\n      this._then.push(subscriber);\n    }\n\n    return subscriber.then;\n  },\n  catch: function _catch(onRejection) {\n    return this.then(null, onRejection);\n  }\n};\n\nP.all = function (promises) {\n  if (!Array.isArray(promises)) {\n    throw new TypeError('You must pass an array to Promise.all().');\n  }\n\n  return new P(function (resolve, reject) {\n    var results = [];\n    var remaining = 0;\n\n    function resolver(index) {\n      remaining++;\n      return function (value) {\n        results[index] = value;\n\n        if (! --remaining) {\n          resolve(results);\n        }\n      };\n    }\n\n    for (var i = 0, promise; i < promises.length; i++) {\n      promise = promises[i];\n\n      if (promise && typeof promise.then === 'function') {\n        promise.then(resolver(i), reject);\n      } else {\n        results[i] = promise;\n      }\n    }\n\n    if (!remaining) {\n      resolve(results);\n    }\n  });\n};\n\nP.race = function (promises) {\n  if (!Array.isArray(promises)) {\n    throw new TypeError('You must pass an array to Promise.race().');\n  }\n\n  return new P(function (resolve, reject) {\n    for (var i = 0, promise; i < promises.length; i++) {\n      promise = promises[i];\n\n      if (promise && typeof promise.then === 'function') {\n        promise.then(resolve, reject);\n      } else {\n        resolve(promise);\n      }\n    }\n  });\n};\n\nP.resolve = function (value) {\n  if (value && _typeof(value) === 'object' && value.constructor === P) {\n    return value;\n  }\n\n  return new P(function (resolve) {\n    resolve(value);\n  });\n};\n\nP.reject = function (reason) {\n  return new P(function (resolve, reject) {\n    reject(reason);\n  });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\n\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n\n  var style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  var headChildren = DOCUMENT.head.childNodes;\n  var beforeChild = null;\n\n  for (var i = headChildren.length - 1; i > -1; i--) {\n    var child = headChildren[i];\n    var tagName = (child.tagName || '').toUpperCase();\n\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\n\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\nfunction nextUniqueId() {\n  var size = 12;\n  var id = '';\n\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n\n  return id;\n}\n\nfunction toArray(obj) {\n  var array = [];\n\n  for (var i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n\n  return array;\n}\n\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n      return i;\n    });\n  }\n}\n\nfunction getIconName(familyPrefix, cls) {\n  var parts = cls.split('-');\n  var prefix = parts[0];\n  var iconName = parts.slice(1).join('-');\n\n  if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\n\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\n\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce(function (acc, styleName) {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n  }, '');\n}\n\nfunction transformIsMeaningful(transform) {\n  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\n\nfunction transformForSvg(_ref) {\n  var transform = _ref.transform,\n      containerWidth = _ref.containerWidth,\n      iconWidth = _ref.iconWidth;\n  var outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  var inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  var path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer: outer,\n    inner: inner,\n    path: path\n  };\n}\n\nfunction transformForCss(_ref2) {\n  var transform = _ref2.transform,\n      _ref2$width = _ref2.width,\n      width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n      _ref2$height = _ref2.height,\n      height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n      _ref2$startCentered = _ref2.startCentered,\n      startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n  var val = '';\n\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n  }\n\n  val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n  val += \"rotate(\".concat(transform.rotate, \"deg) \");\n  return val;\n}\n\nvar ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\n\nfunction fillBlack(abstract) {\n  var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n\n  return abstract;\n}\n\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\n\nfunction makeIconMasking(_ref) {\n  var children = _ref.children,\n      attributes = _ref.attributes,\n      main = _ref.main,\n      mask = _ref.mask,\n      explicitMaskId = _ref.maskId,\n      transform = _ref.transform;\n  var mainWidth = main.width,\n      mainPath = main.icon;\n  var maskWidth = mask.width,\n      maskPath = mask.icon;\n  var trans = transformForSvg({\n    transform: transform,\n    containerWidth: maskWidth,\n    iconWidth: mainWidth\n  });\n  var maskRect = {\n    tag: 'rect',\n    attributes: _objectSpread({}, ALL_SPACE, {\n      fill: 'white'\n    })\n  };\n  var maskInnerGroupChildrenMixin = mainPath.children ? {\n    children: mainPath.children.map(fillBlack)\n  } : {};\n  var maskInnerGroup = {\n    tag: 'g',\n    attributes: _objectSpread({}, trans.inner),\n    children: [fillBlack(_objectSpread({\n      tag: mainPath.tag,\n      attributes: _objectSpread({}, mainPath.attributes, trans.path)\n    }, maskInnerGroupChildrenMixin))]\n  };\n  var maskOuterGroup = {\n    tag: 'g',\n    attributes: _objectSpread({}, trans.outer),\n    children: [maskInnerGroup]\n  };\n  var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n  var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n  var maskTag = {\n    tag: 'mask',\n    attributes: _objectSpread({}, ALL_SPACE, {\n      id: maskId,\n      maskUnits: 'userSpaceOnUse',\n      maskContentUnits: 'userSpaceOnUse'\n    }),\n    children: [maskRect, maskOuterGroup]\n  };\n  var defs = {\n    tag: 'defs',\n    children: [{\n      tag: 'clipPath',\n      attributes: {\n        id: clipId\n      },\n      children: deGroup(maskPath)\n    }, maskTag]\n  };\n  children.push(defs, {\n    tag: 'rect',\n    attributes: _objectSpread({\n      fill: 'currentColor',\n      'clip-path': \"url(#\".concat(clipId, \")\"),\n      mask: \"url(#\".concat(maskId, \")\")\n    }, ALL_SPACE)\n  });\n  return {\n    children: children,\n    attributes: attributes\n  };\n}\n\nfunction makeIconStandard(_ref) {\n  var children = _ref.children,\n      attributes = _ref.attributes,\n      main = _ref.main,\n      transform = _ref.transform,\n      styles = _ref.styles;\n  var styleString = joinStyles(styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  if (transformIsMeaningful(transform)) {\n    var trans = transformForSvg({\n      transform: transform,\n      containerWidth: main.width,\n      iconWidth: main.width\n    });\n    children.push({\n      tag: 'g',\n      attributes: _objectSpread({}, trans.outer),\n      children: [{\n        tag: 'g',\n        attributes: _objectSpread({}, trans.inner),\n        children: [{\n          tag: main.icon.tag,\n          children: main.icon.children,\n          attributes: _objectSpread({}, main.icon.attributes, trans.path)\n        }]\n      }]\n    });\n  } else {\n    children.push(main.icon);\n  }\n\n  return {\n    children: children,\n    attributes: attributes\n  };\n}\n\nfunction asIcon(_ref) {\n  var children = _ref.children,\n      main = _ref.main,\n      mask = _ref.mask,\n      attributes = _ref.attributes,\n      styles = _ref.styles,\n      transform = _ref.transform;\n\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    var width = main.width,\n        height = main.height;\n    var offset = {\n      x: width / height / 2,\n      y: 0.5\n    };\n    attributes['style'] = joinStyles(_objectSpread({}, styles, {\n      'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n    }));\n  }\n\n  return [{\n    tag: 'svg',\n    attributes: attributes,\n    children: children\n  }];\n}\n\nfunction asSymbol(_ref) {\n  var prefix = _ref.prefix,\n      iconName = _ref.iconName,\n      children = _ref.children,\n      attributes = _ref.attributes,\n      symbol = _ref.symbol;\n  var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n  return [{\n    tag: 'svg',\n    attributes: {\n      style: 'display: none;'\n    },\n    children: [{\n      tag: 'symbol',\n      attributes: _objectSpread({}, attributes, {\n        id: id\n      }),\n      children: children\n    }]\n  }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n  var _params$icons = params.icons,\n      main = _params$icons.main,\n      mask = _params$icons.mask,\n      prefix = params.prefix,\n      iconName = params.iconName,\n      transform = params.transform,\n      symbol = params.symbol,\n      title = params.title,\n      maskId = params.maskId,\n      titleId = params.titleId,\n      extra = params.extra,\n      _params$watchable = params.watchable,\n      watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n  var _ref = mask.found ? mask : main,\n      width = _ref.width,\n      height = _ref.height;\n\n  var isUploadedIcon = prefix === 'fak';\n  var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n  var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n    return extra.classes.indexOf(c) === -1;\n  }).filter(function (c) {\n    return c !== '' || !!c;\n  }).concat(extra.classes).join(' ');\n  var content = {\n    children: [],\n    attributes: _objectSpread({}, extra.attributes, {\n      'data-prefix': prefix,\n      'data-icon': iconName,\n      'class': attrClass,\n      'role': extra.attributes.role || 'img',\n      'xmlns': 'http://www.w3.org/2000/svg',\n      'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n    })\n  };\n  var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n    width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n  } : {};\n\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\n\n  if (title) content.children.push({\n    tag: 'title',\n    attributes: {\n      id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n    },\n    children: [title]\n  });\n\n  var args = _objectSpread({}, content, {\n    prefix: prefix,\n    iconName: iconName,\n    main: main,\n    mask: mask,\n    maskId: maskId,\n    transform: transform,\n    symbol: symbol,\n    styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n  });\n\n  var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n      children = _ref2.children,\n      attributes = _ref2.attributes;\n\n  args.children = children;\n  args.attributes = attributes;\n\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\n\nfunction makeLayersTextAbstract(params) {\n  var content = params.content,\n      width = params.width,\n      height = params.height,\n      transform = params.transform,\n      title = params.title,\n      extra = params.extra,\n      _params$watchable2 = params.watchable,\n      watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n  var attributes = _objectSpread({}, extra.attributes, title ? {\n    'title': title\n  } : {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n\n  var styles = _objectSpread({}, extra.styles);\n\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform: transform,\n      startCentered: true,\n      width: width,\n      height: height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n\n  var styleString = joinStyles(styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\n\nfunction makeLayersCounterAbstract(params) {\n  var content = params.content,\n      title = params.title,\n      extra = params.extra;\n\n  var attributes = _objectSpread({}, extra.attributes, title ? {\n    'title': title\n  } : {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  var styleString = joinStyles(extra.styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return function () {\n    return end(name);\n  };\n};\n\nvar end = function end(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n  begin: begin,\n  end: end\n};\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n  return function (a, b, c, d) {\n    return func.call(thisContext, a, b, c, d);\n  };\n};\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param  {Object}   subject      The object to reduce over.\n * @param  {Function} fn           The reducer function.\n * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n * @param  {Object}   thisContext  The context for the reducer.\n * @return {mixed}                 The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n  var keys = Object.keys(subject),\n      length = keys.length,\n      iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n      i,\n      key,\n      result;\n\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n\n  return result;\n};\n\nfunction toHex(unicode) {\n  var result = '';\n\n  for (var i = 0; i < unicode.length; i++) {\n    var hex = unicode.charCodeAt(i).toString(16);\n    result += ('000' + hex).slice(-4);\n  }\n\n  return result;\n}\n\nfunction defineIcons(prefix, icons) {\n  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _params$skipHooks = params.skipHooks,\n      skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n  var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n    var icon = icons[iconName];\n    var expanded = !!icon.icon;\n\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n\n    return acc;\n  }, {});\n\n  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n    namespace.hooks.addPack(prefix, normalized);\n  } else {\n    namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n  }\n  /**\n   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n   * for `fas` so we'll easy the upgrade process for our users by automatically defining\n   * this as well.\n   */\n\n\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nvar styles = namespace.styles,\n    shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\n\nvar build = function build() {\n  var lookup = function lookup(reducer) {\n    return reduce(styles, function (o, style, prefix) {\n      o[prefix] = reduce(style, reducer, {});\n      return o;\n    }, {});\n  };\n\n  _byUnicode = lookup(function (acc, icon, iconName) {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n\n    return acc;\n  });\n  _byLigature = lookup(function (acc, icon, iconName) {\n    var ligatures = icon[2];\n    acc[iconName] = iconName;\n    ligatures.forEach(function (ligature) {\n      acc[ligature] = iconName;\n    });\n    return acc;\n  });\n  var hasRegular = ('far' in styles);\n  _byOldName = reduce(shims, function (acc, shim) {\n    var oldName = shim[0];\n    var prefix = shim[1];\n    var iconName = shim[2];\n\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n\n    acc[oldName] = {\n      prefix: prefix,\n      iconName: iconName\n    };\n    return acc;\n  }, {});\n};\n\nbuild();\n\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\n\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\n\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\n\nvar styles$1 = namespace.styles;\n\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\n\nfunction getCanonicalIcon(values) {\n  return values.reduce(function (acc, cls) {\n    var iconName = getIconName(config.familyPrefix, cls);\n\n    if (styles$1[cls]) {\n      acc.prefix = cls;\n    } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n      acc.prefix = cls;\n    } else if (iconName) {\n      var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n      acc.iconName = shim.iconName || iconName;\n      acc.prefix = shim.prefix || acc.prefix;\n    } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n      acc.rest.push(cls);\n    }\n\n    return acc;\n  }, emptyCanonicalIcon());\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix: prefix,\n      iconName: iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n\nfunction toHtml(abstractNodes) {\n  var tag = abstractNodes.tag,\n      _abstractNodes$attrib = abstractNodes.attributes,\n      attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n      _abstractNodes$childr = abstractNodes.children,\n      children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n  var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n\n  var mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\n\nvar mutators = {\n  replace: function replace(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1];\n    var newOuterHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n\n    if (node.parentNode && node.outerHTML) {\n      node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"<!-- \".concat(node.outerHTML, \" Font Awesome fontawesome.com -->\") : '');\n    } else if (node.parentNode) {\n      var newNode = document.createElement('span');\n      node.parentNode.replaceChild(newNode, node);\n      newNode.outerHTML = newOuterHTML;\n    }\n  },\n  nest: function nest(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n\n    var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n    delete abstract[0].attributes.style;\n    delete abstract[0].attributes.id;\n    var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n      if (cls === config.replacementClass || cls.match(forSvg)) {\n        acc.toSvg.push(cls);\n      } else {\n        acc.toNode.push(cls);\n      }\n\n      return acc;\n    }, {\n      toNode: [],\n      toSvg: []\n    });\n    abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n    var newInnerHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n    node.setAttribute('class', splitClasses.toNode.join(' '));\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\n\nfunction performOperationSync(op) {\n  op();\n}\n\nfunction perform(mutations, callback) {\n  var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    var frame = performOperationSync;\n\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n\n    frame(function () {\n      var mutator = getMutator();\n      var mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\n\nvar disabled = false;\n\nfunction disableObservation() {\n  disabled = true;\n}\n\nfunction enableObservation() {\n  disabled = false;\n}\n\nvar mo = null;\n\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n\n  if (!config.observeMutations) {\n    return;\n  }\n\n  var treeCallback = options.treeCallback,\n      nodeCallback = options.nodeCallback,\n      pseudoElementsCallback = options.pseudoElementsCallback,\n      _options$observeMutat = options.observeMutationsRoot,\n      observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n  mo = new MUTATION_OBSERVER(function (objects) {\n    if (disabled) return;\n    toArray(objects).forEach(function (mutationRecord) {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n\n        treeCallback(mutationRecord.target);\n      }\n\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback(mutationRecord.target.parentNode);\n      }\n\n      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n        if (mutationRecord.attributeName === 'class') {\n          var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n              prefix = _getCanonicalIcon.prefix,\n              iconName = _getCanonicalIcon.iconName;\n\n          if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n          if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n        } else {\n          nodeCallback(mutationRecord.target);\n        }\n      }\n    });\n  });\n  if (!IS_DOM) return;\n  mo.observe(observeMutationsRoot, {\n    childList: true,\n    attributes: true,\n    characterData: true,\n    subtree: true\n  });\n}\n\nfunction disconnect() {\n  if (!mo) return;\n  mo.disconnect();\n}\n\nfunction styleParser(node) {\n  var style = node.getAttribute('style');\n  var val = [];\n\n  if (style) {\n    val = style.split(';').reduce(function (acc, style) {\n      var styles = style.split(':');\n      var prop = styles[0];\n      var value = styles.slice(1);\n\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n\n      return acc;\n    }, {});\n  }\n\n  return val;\n}\n\nfunction classParser(node) {\n  var existingPrefix = node.getAttribute('data-prefix');\n  var existingIconName = node.getAttribute('data-icon');\n  var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  var val = getCanonicalIcon(classArray(node));\n\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n\n  if (val.prefix && innerText.length > 1) {\n    val.iconName = byLigature(val.prefix, node.innerText);\n  } else if (val.prefix && innerText.length === 1) {\n    val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n  }\n\n  return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n  var transform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    flipX: false,\n    flipY: false,\n    rotate: 0\n  };\n\n  if (!transformString) {\n    return transform;\n  } else {\n    return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n      var parts = n.toLowerCase().split('-');\n      var first = parts[0];\n      var rest = parts.slice(1).join('-');\n\n      if (first && rest === 'h') {\n        acc.flipX = true;\n        return acc;\n      }\n\n      if (first && rest === 'v') {\n        acc.flipY = true;\n        return acc;\n      }\n\n      rest = parseFloat(rest);\n\n      if (isNaN(rest)) {\n        return acc;\n      }\n\n      switch (first) {\n        case 'grow':\n          acc.size = acc.size + rest;\n          break;\n\n        case 'shrink':\n          acc.size = acc.size - rest;\n          break;\n\n        case 'left':\n          acc.x = acc.x - rest;\n          break;\n\n        case 'right':\n          acc.x = acc.x + rest;\n          break;\n\n        case 'up':\n          acc.y = acc.y - rest;\n          break;\n\n        case 'down':\n          acc.y = acc.y + rest;\n          break;\n\n        case 'rotate':\n          acc.rotate = acc.rotate + rest;\n          break;\n      }\n\n      return acc;\n    }, transform);\n  }\n};\n\nfunction transformParser(node) {\n  return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser(node) {\n  var symbol = node.getAttribute('data-fa-symbol');\n  return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser(node) {\n  var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n\n    return acc;\n  }, {});\n  var title = node.getAttribute('title');\n  var titleId = node.getAttribute('data-fa-title-id');\n\n  if (config.autoA11y) {\n    if (title) {\n      extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n    } else {\n      extraAttributes['aria-hidden'] = 'true';\n      extraAttributes['focusable'] = 'false';\n    }\n  }\n\n  return extraAttributes;\n}\n\nfunction maskParser(node) {\n  var mask = node.getAttribute('data-fa-mask');\n\n  if (!mask) {\n    return emptyCanonicalIcon();\n  } else {\n    return getCanonicalIcon(mask.split(' ').map(function (i) {\n      return i.trim();\n    }));\n  }\n}\n\nfunction blankMeta() {\n  return {\n    iconName: null,\n    title: null,\n    titleId: null,\n    prefix: null,\n    transform: meaninglessTransform,\n    symbol: false,\n    mask: null,\n    maskId: null,\n    extra: {\n      classes: [],\n      styles: {},\n      attributes: {}\n    }\n  };\n}\n\nfunction parseMeta(node) {\n  var _classParser = classParser(node),\n      iconName = _classParser.iconName,\n      prefix = _classParser.prefix,\n      extraClasses = _classParser.rest;\n\n  var extraStyles = styleParser(node);\n  var transform = transformParser(node);\n  var symbol = symbolParser(node);\n  var extraAttributes = attributesParser(node);\n  var mask = maskParser(node);\n  return {\n    iconName: iconName,\n    title: node.getAttribute('title'),\n    titleId: node.getAttribute('data-fa-title-id'),\n    prefix: prefix,\n    transform: transform,\n    symbol: symbol,\n    mask: mask,\n    maskId: node.getAttribute('data-fa-mask-id'),\n    extra: {\n      classes: extraClasses,\n      styles: extraStyles,\n      attributes: extraAttributes\n    }\n  };\n}\n\nfunction MissingIcon(error) {\n  this.name = 'MissingIcon';\n  this.message = error || 'Icon unavailable';\n  this.stack = new Error().stack;\n}\n\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\nvar FILL = {\n  fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n  attributeType: 'XML',\n  repeatCount: 'indefinite',\n  dur: '2s'\n};\nvar RING = {\n  tag: 'path',\n  attributes: _objectSpread({}, FILL, {\n    d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n  })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n  attributeName: 'opacity'\n});\n\nvar DOT = {\n  tag: 'circle',\n  attributes: _objectSpread({}, FILL, {\n    cx: '256',\n    cy: '364',\n    r: '28'\n  }),\n  children: [{\n    tag: 'animate',\n    attributes: _objectSpread({}, ANIMATION_BASE, {\n      attributeName: 'r',\n      values: '28;14;28;28;14;28;'\n    })\n  }, {\n    tag: 'animate',\n    attributes: _objectSpread({}, OPACITY_ANIMATE, {\n      values: '1;0;1;1;0;1;'\n    })\n  }]\n};\nvar QUESTION = {\n  tag: 'path',\n  attributes: _objectSpread({}, FILL, {\n    opacity: '1',\n    d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n  }),\n  children: [{\n    tag: 'animate',\n    attributes: _objectSpread({}, OPACITY_ANIMATE, {\n      values: '1;0;0;0;0;1;'\n    })\n  }]\n};\nvar EXCLAMATION = {\n  tag: 'path',\n  attributes: _objectSpread({}, FILL, {\n    opacity: '0',\n    d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n  }),\n  children: [{\n    tag: 'animate',\n    attributes: _objectSpread({}, OPACITY_ANIMATE, {\n      values: '0;0;1;1;0;0;'\n    })\n  }]\n};\nvar missing = {\n  tag: 'g',\n  children: [RING, DOT, QUESTION, EXCLAMATION]\n};\nvar styles$2 = namespace.styles;\n\nfunction asFoundIcon(icon) {\n  var width = icon[0];\n  var height = icon[1];\n\n  var _icon$slice = icon.slice(4),\n      _icon$slice2 = _slicedToArray(_icon$slice, 1),\n      vectorData = _icon$slice2[0];\n\n  var element = null;\n\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n          fill: 'currentColor',\n          d: vectorData[1]\n        }\n      }]\n    };\n  } else {\n    element = {\n      tag: 'path',\n      attributes: {\n        fill: 'currentColor',\n        d: vectorData\n      }\n    };\n  }\n\n  return {\n    found: true,\n    width: width,\n    height: height,\n    icon: element\n  };\n}\n\nfunction findIcon(iconName, prefix) {\n  return new picked(function (resolve, reject) {\n    var val = {\n      found: false,\n      width: 512,\n      height: 512,\n      icon: missing\n    };\n\n    if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n      var icon = styles$2[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n\n    if (iconName && prefix && !config.showMissingIcons) {\n      reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n    } else {\n      resolve(val);\n    }\n  });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n  var iconName = nodeMeta.iconName,\n      title = nodeMeta.title,\n      titleId = nodeMeta.titleId,\n      prefix = nodeMeta.prefix,\n      transform = nodeMeta.transform,\n      symbol = nodeMeta.symbol,\n      mask = nodeMeta.mask,\n      maskId = nodeMeta.maskId,\n      extra = nodeMeta.extra;\n  return new picked(function (resolve, reject) {\n    picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          main = _ref2[0],\n          mask = _ref2[1];\n\n      resolve([node, makeInlineSvgAbstract({\n        icons: {\n          main: main,\n          mask: mask\n        },\n        prefix: prefix,\n        iconName: iconName,\n        transform: transform,\n        symbol: symbol,\n        mask: mask,\n        maskId: maskId,\n        title: title,\n        titleId: titleId,\n        extra: extra,\n        watchable: true\n      })]);\n    });\n  });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n  var title = nodeMeta.title,\n      transform = nodeMeta.transform,\n      extra = nodeMeta.extra;\n  var width = null;\n  var height = null;\n\n  if (IS_IE) {\n    var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n    var boundingClientRect = node.getBoundingClientRect();\n    width = boundingClientRect.width / computedFontSize;\n    height = boundingClientRect.height / computedFontSize;\n  }\n\n  if (config.autoA11y && !title) {\n    extra.attributes['aria-hidden'] = 'true';\n  }\n\n  return picked.resolve([node, makeLayersTextAbstract({\n    content: node.innerHTML,\n    width: width,\n    height: height,\n    transform: transform,\n    title: title,\n    extra: extra,\n    watchable: true\n  })]);\n}\n\nfunction generateMutation(node) {\n  var nodeMeta = parseMeta(node);\n\n  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n    return generateLayersText(node, nodeMeta);\n  } else {\n    return generateSvgReplacementMutation(node, nodeMeta);\n  }\n}\n\nfunction onTree(root) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return;\n  var htmlClassList = DOCUMENT.documentElement.classList;\n\n  var hclAdd = function hclAdd(suffix) {\n    return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var hclRemove = function hclRemove(suffix) {\n    return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n  var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n    return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n  })).join(', ');\n\n  if (prefixesDomQuery.length === 0) {\n    return;\n  }\n\n  var candidates = [];\n\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e) {// noop\n  }\n\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return;\n  }\n\n  var mark = perf.begin('onTree');\n  var mutations = candidates.reduce(function (acc, node) {\n    try {\n      var mutation = generateMutation(node);\n\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e) {\n      if (!PRODUCTION) {\n        if (e instanceof MissingIcon) {\n          console.error(e);\n        }\n      }\n    }\n\n    return acc;\n  }, []);\n  return new picked(function (resolve, reject) {\n    picked.all(mutations).then(function (resolvedMutations) {\n      perform(resolvedMutations, function () {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(function () {\n      mark();\n      reject();\n    });\n  });\n}\n\nfunction onNode(node) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(function (mutation) {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\n\nfunction replaceForPosition(node, position) {\n  var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new picked(function (resolve, reject) {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n\n    var children = toArray(node.children);\n    var alreadyProcessedPseudoElement = children.filter(function (c) {\n      return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n    })[0];\n    var styles = WINDOW.getComputedStyle(node, position);\n    var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n    var fontWeight = styles.getPropertyValue('font-weight');\n    var content = styles.getPropertyValue('content');\n\n    if (alreadyProcessedPseudoElement && !fontFamily) {\n      // If we've already processed it but the current computed style does not result in a font-family,\n      // that probably means that a class name that was previously present to make the icon has been\n      // removed. So we now should delete the icon.\n      node.removeChild(alreadyProcessedPseudoElement);\n      return resolve();\n    } else if (fontFamily && content !== 'none' && content !== '') {\n      var _content = styles.getPropertyValue('content');\n\n      var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n      var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n      var iconName = byUnicode(prefix, hexValue);\n      var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n      // already done so with the same prefix and iconName\n\n      if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n\n        var meta = blankMeta();\n        var extra = meta.extra;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(function (main) {\n          var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n            icons: {\n              main: main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix: prefix,\n            iconName: iconIdentifier,\n            extra: extra,\n            watchable: true\n          }));\n          var element = DOCUMENT.createElement('svg');\n\n          if (position === ':before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n\n          element.outerHTML = abstract.map(function (a) {\n            return toHtml(a);\n          }).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\n\nfunction replace(node) {\n  return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n  if (!IS_DOM) return;\n  return new picked(function (resolve, reject) {\n    var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n    var end = perf.begin('searchPseudoElements');\n    disableObservation();\n    picked.all(operations).then(function () {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(function () {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n  overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n  display: inline-block;\\n  font-size: inherit;\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n  width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n  width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n  width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n  width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n  width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n  width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n  width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n  width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n  width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n  width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n  width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n  width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n  width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n  width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n  width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n  width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n  width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n  width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n  width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n  margin-right: 0.3em;\\n  width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n  margin-left: 0.3em;\\n  width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n  height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n  width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n  width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  -webkit-transform: translate(-50%, -50%);\\n          transform: translate(-50%, -50%);\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: #ff253a;\\n  border-radius: 1em;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  color: #fff;\\n  height: 1.5em;\\n  line-height: 1;\\n  max-width: 5em;\\n  min-width: 1.5em;\\n  overflow: hidden;\\n  padding: 0.25em;\\n  right: 0;\\n  text-overflow: ellipsis;\\n  top: 0;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: 0;\\n  right: 0;\\n  top: auto;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: bottom right;\\n          transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: 0;\\n  left: 0;\\n  right: auto;\\n  top: auto;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: bottom left;\\n          transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  right: 0;\\n  top: 0;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: 0;\\n  right: auto;\\n  top: 0;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: top left;\\n          transform-origin: top left;\\n}\\n\\n.fa-lg {\\n  font-size: 1.3333333333em;\\n  line-height: 0.75em;\\n  vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n  font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n  font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: 2.5em;\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  left: -2em;\\n  position: absolute;\\n  text-align: center;\\n  width: 2em;\\n  line-height: inherit;\\n}\\n\\n.fa-border {\\n  border: solid 0.08em #eee;\\n  border-radius: 0.1em;\\n  padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n  float: left;\\n}\\n\\n.fa-pull-right {\\n  float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n  margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n  margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n  -webkit-animation: fa-spin 2s infinite linear;\\n          animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n  -webkit-animation: fa-spin 1s infinite steps(8);\\n          animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n  -webkit-transform: rotate(90deg);\\n          transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n  -webkit-transform: rotate(180deg);\\n          transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n  -webkit-transform: rotate(270deg);\\n          transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n  -webkit-transform: scale(-1, 1);\\n          transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n  -webkit-transform: scale(1, -1);\\n          transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n  -webkit-transform: scale(-1, -1);\\n          transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n  -webkit-filter: none;\\n          filter: none;\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  height: 2em;\\n  position: relative;\\n  width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  height: 1em;\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  height: 2em;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: #fff;\\n}\\n\\n.sr-only {\\n  border: 0;\\n  clip: rect(0, 0, 0, 0);\\n  height: 1px;\\n  margin: -1px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n  clip: auto;\\n  height: auto;\\n  margin: 0;\\n  overflow: visible;\\n  position: static;\\n  width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: 1;\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: 0.4;\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: 0.4;\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: 1;\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\\n\\n.fad.fa-inverse {\\n  color: #fff;\\n}\";\n\nfunction css() {\n  var dfp = DEFAULT_FAMILY_PREFIX;\n  var drc = DEFAULT_REPLACEMENT_CLASS;\n  var fp = config.familyPrefix;\n  var rc = config.replacementClass;\n  var s = baseStyles;\n\n  if (fp !== dfp || rc !== drc) {\n    var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n    var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n    var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n\n  return s;\n}\n\nvar Library = /*#__PURE__*/function () {\n  function Library() {\n    _classCallCheck(this, Library);\n\n    this.definitions = {};\n  }\n\n  _createClass(Library, [{\n    key: \"add\",\n    value: function add() {\n      var _this = this;\n\n      for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n        definitions[_key] = arguments[_key];\n      }\n\n      var additions = definitions.reduce(this._pullDefinitions, {});\n      Object.keys(additions).forEach(function (key) {\n        _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n        defineIcons(key, additions[key]);\n        build();\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.definitions = {};\n    }\n  }, {\n    key: \"_pullDefinitions\",\n    value: function _pullDefinitions(additions, definition) {\n      var normalized = definition.prefix && definition.iconName && definition.icon ? {\n        0: definition\n      } : definition;\n      Object.keys(normalized).map(function (key) {\n        var _normalized$key = normalized[key],\n            prefix = _normalized$key.prefix,\n            iconName = _normalized$key.iconName,\n            icon = _normalized$key.icon;\n        if (!additions[prefix]) additions[prefix] = {};\n        additions[prefix][iconName] = icon;\n      });\n      return additions;\n    }\n  }]);\n\n  return Library;\n}();\n\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n    _cssInserted = true;\n  }\n}\n\nfunction apiObject(val, abstractCreator) {\n  Object.defineProperty(val, 'abstract', {\n    get: abstractCreator\n  });\n  Object.defineProperty(val, 'html', {\n    get: function get() {\n      return val.abstract.map(function (a) {\n        return toHtml(a);\n      });\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function get() {\n      if (!IS_DOM) return;\n      var container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n  var _iconLookup$prefix = iconLookup.prefix,\n      prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n      iconName = iconLookup.iconName;\n  if (!iconName) return;\n  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    var mask = params.mask;\n\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n\n    return next(iconDefinition, _objectSpread({}, params, {\n      mask: mask\n    }));\n  };\n}\n\nvar library = new Library();\n\nvar noAuto = function noAuto() {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  disconnect();\n};\n\nvar _cssInserted = false;\nvar dom = {\n  i2svg: function i2svg() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (IS_DOM) {\n      ensureCss();\n      var _params$node = params.node,\n          node = _params$node === void 0 ? DOCUMENT : _params$node,\n          _params$callback = params.callback,\n          callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n\n      return onTree(node, callback);\n    } else {\n      return picked.reject('Operation requires a DOM of some kind.');\n    }\n  },\n  css: css,\n  insertCss: function insertCss$$1() {\n    if (!_cssInserted) {\n      insertCss(css());\n      _cssInserted = true;\n    }\n  },\n  watch: function watch() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n        observeMutationsRoot = params.observeMutationsRoot;\n\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n\n    config.observeMutations = true;\n    domready(function () {\n      autoReplace({\n        autoReplaceSvgRoot: autoReplaceSvgRoot\n      });\n      observe({\n        treeCallback: onTree,\n        nodeCallback: onNode,\n        pseudoElementsCallback: searchPseudoElements,\n        observeMutationsRoot: observeMutationsRoot\n      });\n    });\n  }\n};\nvar parse = {\n  transform: function transform(transformString) {\n    return parseTransformString(transformString);\n  }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform = params.transform,\n      transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n      _params$symbol = params.symbol,\n      symbol = _params$symbol === void 0 ? false : _params$symbol,\n      _params$mask = params.mask,\n      mask = _params$mask === void 0 ? null : _params$mask,\n      _params$maskId = params.maskId,\n      maskId = _params$maskId === void 0 ? null : _params$maskId,\n      _params$title = params.title,\n      title = _params$title === void 0 ? null : _params$title,\n      _params$titleId = params.titleId,\n      titleId = _params$titleId === void 0 ? null : _params$titleId,\n      _params$classes = params.classes,\n      classes = _params$classes === void 0 ? [] : _params$classes,\n      _params$attributes = params.attributes,\n      attributes = _params$attributes === void 0 ? {} : _params$attributes,\n      _params$styles = params.styles,\n      styles = _params$styles === void 0 ? {} : _params$styles;\n  if (!iconDefinition) return;\n  var prefix = iconDefinition.prefix,\n      iconName = iconDefinition.iconName,\n      icon = iconDefinition.icon;\n  return apiObject(_objectSpread({\n    type: 'icon'\n  }, iconDefinition), function () {\n    ensureCss();\n\n    if (config.autoA11y) {\n      if (title) {\n        attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n      } else {\n        attributes['aria-hidden'] = 'true';\n        attributes['focusable'] = 'false';\n      }\n    }\n\n    return makeInlineSvgAbstract({\n      icons: {\n        main: asFoundIcon(icon),\n        mask: mask ? asFoundIcon(mask.icon) : {\n          found: false,\n          width: null,\n          height: null,\n          icon: {}\n        }\n      },\n      prefix: prefix,\n      iconName: iconName,\n      transform: _objectSpread({}, meaninglessTransform, transform),\n      symbol: symbol,\n      title: title,\n      maskId: maskId,\n      titleId: titleId,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: classes\n      }\n    });\n  });\n});\n\nvar text = function text(content) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform2 = params.transform,\n      transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n      _params$title2 = params.title,\n      title = _params$title2 === void 0 ? null : _params$title2,\n      _params$classes2 = params.classes,\n      classes = _params$classes2 === void 0 ? [] : _params$classes2,\n      _params$attributes2 = params.attributes,\n      attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n      _params$styles2 = params.styles,\n      styles = _params$styles2 === void 0 ? {} : _params$styles2;\n  return apiObject({\n    type: 'text',\n    content: content\n  }, function () {\n    ensureCss();\n    return makeLayersTextAbstract({\n      content: content,\n      transform: _objectSpread({}, meaninglessTransform, transform),\n      title: title,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n      }\n    });\n  });\n};\n\nvar counter = function counter(content) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$title3 = params.title,\n      title = _params$title3 === void 0 ? null : _params$title3,\n      _params$classes3 = params.classes,\n      classes = _params$classes3 === void 0 ? [] : _params$classes3,\n      _params$attributes3 = params.attributes,\n      attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n      _params$styles3 = params.styles,\n      styles = _params$styles3 === void 0 ? {} : _params$styles3;\n  return apiObject({\n    type: 'counter',\n    content: content\n  }, function () {\n    ensureCss();\n    return makeLayersCounterAbstract({\n      content: content.toString(),\n      title: title,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n      }\n    });\n  });\n};\n\nvar layer = function layer(assembler) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$classes4 = params.classes,\n      classes = _params$classes4 === void 0 ? [] : _params$classes4;\n  return apiObject({\n    type: 'layer'\n  }, function () {\n    ensureCss();\n    var children = [];\n    assembler(function (args) {\n      Array.isArray(args) ? args.map(function (a) {\n        children = children.concat(a.abstract);\n      }) : children = children.concat(args.abstract);\n    });\n    return [{\n      tag: 'span',\n      attributes: {\n        class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n      },\n      children: children\n    }];\n  });\n};\n\nvar api = {\n  noAuto: noAuto,\n  config: config,\n  dom: dom,\n  library: library,\n  parse: parse,\n  findIconDefinition: findIconDefinition,\n  icon: icon,\n  text: text,\n  counter: counter,\n  layer: layer,\n  toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n      autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n    node: autoReplaceSvgRoot\n  });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };","// shim for using process in browser\nvar process = module.exports = {}; // 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}\n\nfunction defaultClearTimeout() {\n  throw new Error('clearTimeout has not been defined');\n}\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\n  try {\n    if (typeof clearTimeout === 'function') {\n      cachedClearTimeout = clearTimeout;\n    } else {\n      cachedClearTimeout = defaultClearTimeout;\n    }\n  } catch (e) {\n    cachedClearTimeout = defaultClearTimeout;\n  }\n})();\n\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    //normal enviroments in sane situations\n    return setTimeout(fun, 0);\n  } // if setTimeout wasn't available but was latter defined\n\n\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\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\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    //normal enviroments in sane situations\n    return clearTimeout(marker);\n  } // if clearTimeout wasn't available but was latter defined\n\n\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\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\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n\n  draining = false;\n\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n\n  if (queue.length) {\n    drainQueue();\n  }\n}\n\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n\n    queueIndex = -1;\n    len = queue.length;\n  }\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\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n\n  queue.push(new Item(fun, args));\n\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\n\nItem.prototype.run = function () {\n  this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\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) {\n  return [];\n};\n\nprocess.binding = function (name) {\n  throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n  return '/';\n};\n\nprocess.chdir = function (dir) {\n  throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n  return 0;\n};","import \"core-js/modules/es.array.reduce.js\";\nimport { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n} // Get CSS class list from a props object\n\n\nfunction classList(props) {\n  var _classes;\n\n  var spin = props.spin,\n      pulse = props.pulse,\n      fixedWidth = props.fixedWidth,\n      inverse = props.inverse,\n      border = props.border,\n      listItem = props.listItem,\n      flip = props.flip,\n      size = props.size,\n      rotation = props.rotation,\n      pull = props.pull; // map of CSS class names to properties\n\n  var classes = (_classes = {\n    'fa-spin': spin,\n    'fa-pulse': pulse,\n    'fa-fw': fixedWidth,\n    'fa-inverse': inverse,\n    'fa-border': border,\n    'fa-li': listItem,\n    'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n    'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n  }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n  // return an array of the keys where the value for the key is not null\n\n  return Object.keys(classes).map(function (key) {\n    return classes[key] ? key : null;\n  }).filter(function (key) {\n    return key;\n  });\n} // Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\n\n\nfunction _isNumerical(obj) {\n  obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n  return obj === obj;\n}\n\nfunction camelize(string) {\n  if (_isNumerical(string)) {\n    return string;\n  } // eslint-disable-next-line no-useless-escape\n\n\n  string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n    return chr ? chr.toUpperCase() : '';\n  }); // Ensure 1st char is always lowercase\n\n  return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nfunction capitalize(val) {\n  return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n  return style.split(';').map(function (s) {\n    return s.trim();\n  }).filter(function (s) {\n    return s;\n  }).reduce(function (acc, pair) {\n    var i = pair.indexOf(':');\n    var prop = camelize(pair.slice(0, i));\n    var value = pair.slice(i + 1).trim();\n    prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n    return acc;\n  }, {});\n}\n\nfunction convert(createElement, element) {\n  var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (typeof element === 'string') {\n    return element;\n  }\n\n  var children = (element.children || []).map(function (child) {\n    return convert(createElement, child);\n  });\n  /* eslint-disable dot-notation */\n\n  var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n    var val = element.attributes[key];\n\n    switch (key) {\n      case 'class':\n        acc.attrs['className'] = val;\n        delete element.attributes['class'];\n        break;\n\n      case 'style':\n        acc.attrs['style'] = styleToObject(val);\n        break;\n\n      default:\n        if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n          acc.attrs[key.toLowerCase()] = val;\n        } else {\n          acc.attrs[camelize(key)] = val;\n        }\n\n    }\n\n    return acc;\n  }, {\n    attrs: {}\n  });\n\n  var _extraProps$style = extraProps.style,\n      existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n      remaining = _objectWithoutProperties(extraProps, [\"style\"]);\n\n  mixins.attrs['style'] = _objectSpread2({}, mixins.attrs['style'], {}, existingStyle);\n  /* eslint-enable */\n\n  return createElement.apply(void 0, [element.tag, _objectSpread2({}, mixins.attrs, {}, remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n  PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log() {\n  if (!PRODUCTION && console && typeof console.error === 'function') {\n    var _console;\n\n    (_console = console).error.apply(_console, arguments);\n  }\n}\n\nfunction normalizeIconArgs(icon) {\n  // this has everything that it needs to be rendered which means it was probably imported\n  // directly from an icon svg package\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n    return icon;\n  }\n\n  if (parse.icon) {\n    return parse.icon(icon);\n  } // if the icon is null, there's nothing to do\n\n\n  if (icon === null) {\n    return null;\n  } // if the icon is an object and has a prefix and an icon name, return it\n\n\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n    return icon;\n  } // if it's an array with length of two\n\n\n  if (Array.isArray(icon) && icon.length === 2) {\n    // use the first item as prefix, second as icon name\n    return {\n      prefix: icon[0],\n      iconName: icon[1]\n    };\n  } // if it's a string, use it as the icon name\n\n\n  if (typeof icon === 'string') {\n    return {\n      prefix: 'fas',\n      iconName: icon\n    };\n  }\n} // creates an object with a key of key\n// and a value of value\n// if certain conditions are met\n\n\nfunction objectWithKey(key, value) {\n  // if the value is a non-empty array\n  // or it's not an array but it is truthy\n  // then create the object with the key and the value\n  // if not, return an empty array\n  return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nfunction FontAwesomeIcon(_ref) {\n  var forwardedRef = _ref.forwardedRef,\n      props = _objectWithoutProperties(_ref, [\"forwardedRef\"]);\n\n  var iconArgs = props.icon,\n      maskArgs = props.mask,\n      symbol = props.symbol,\n      className = props.className,\n      title = props.title,\n      titleId = props.titleId;\n  var iconLookup = normalizeIconArgs(iconArgs);\n  var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n  var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n  var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n  var renderedIcon = icon(iconLookup, _objectSpread2({}, classes, {}, transform, {}, mask, {\n    symbol: symbol,\n    title: title,\n    titleId: titleId\n  }));\n\n  if (!renderedIcon) {\n    log('Could not find icon', iconLookup);\n    return null;\n  }\n\n  var abstract = renderedIcon.abstract;\n  var extraProps = {\n    ref: forwardedRef\n  };\n  Object.keys(props).forEach(function (key) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n      extraProps[key] = props[key];\n    }\n  });\n  return convertCurry(abstract[0], extraProps);\n}\n\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n  border: PropTypes.bool,\n  className: PropTypes.string,\n  mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  fixedWidth: PropTypes.bool,\n  inverse: PropTypes.bool,\n  flip: PropTypes.oneOf(['horizontal', 'vertical', 'both']),\n  icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  listItem: PropTypes.bool,\n  pull: PropTypes.oneOf(['right', 'left']),\n  pulse: PropTypes.bool,\n  rotation: PropTypes.oneOf([0, 90, 180, 270]),\n  size: PropTypes.oneOf(['lg', 'xs', 'sm', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n  spin: PropTypes.bool,\n  symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  title: PropTypes.string,\n  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n  border: false,\n  className: '',\n  mask: null,\n  fixedWidth: false,\n  inverse: false,\n  flip: null,\n  icon: null,\n  listItem: false,\n  pull: null,\n  pulse: false,\n  rotation: null,\n  size: null,\n  spin: false,\n  symbol: false,\n  title: '',\n  transform: null,\n  swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\nexport { FontAwesomeIcon };","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n  this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n  clearTimeout(item._idleTimeoutId);\n  var msecs = item._idleTimeout;\n\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout) item._onTimeout();\n    }, msecs);\n  }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","(function (global, undefined) {\n  \"use strict\";\n\n  if (global.setImmediate) {\n    return;\n  }\n\n  var nextHandle = 1; // Spec says greater than zero\n\n  var tasksByHandle = {};\n  var currentlyRunningATask = false;\n  var doc = global.document;\n  var registerImmediate;\n\n  function setImmediate(callback) {\n    // Callback can either be a function or a string\n    if (typeof callback !== \"function\") {\n      callback = new Function(\"\" + callback);\n    } // Copy function arguments\n\n\n    var args = new Array(arguments.length - 1);\n\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i + 1];\n    } // Store and register the task\n\n\n    var task = {\n      callback: callback,\n      args: args\n    };\n    tasksByHandle[nextHandle] = task;\n    registerImmediate(nextHandle);\n    return nextHandle++;\n  }\n\n  function clearImmediate(handle) {\n    delete tasksByHandle[handle];\n  }\n\n  function run(task) {\n    var callback = task.callback;\n    var args = task.args;\n\n    switch (args.length) {\n      case 0:\n        callback();\n        break;\n\n      case 1:\n        callback(args[0]);\n        break;\n\n      case 2:\n        callback(args[0], args[1]);\n        break;\n\n      case 3:\n        callback(args[0], args[1], args[2]);\n        break;\n\n      default:\n        callback.apply(undefined, args);\n        break;\n    }\n  }\n\n  function runIfPresent(handle) {\n    // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n    // So if we're currently running a task, we'll need to delay this invocation.\n    if (currentlyRunningATask) {\n      // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n      // \"too much recursion\" error.\n      setTimeout(runIfPresent, 0, handle);\n    } else {\n      var task = tasksByHandle[handle];\n\n      if (task) {\n        currentlyRunningATask = true;\n\n        try {\n          run(task);\n        } finally {\n          clearImmediate(handle);\n          currentlyRunningATask = false;\n        }\n      }\n    }\n  }\n\n  function installNextTickImplementation() {\n    registerImmediate = function registerImmediate(handle) {\n      process.nextTick(function () {\n        runIfPresent(handle);\n      });\n    };\n  }\n\n  function canUsePostMessage() {\n    // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n    // where `global.postMessage` means something completely different and can't be used for this purpose.\n    if (global.postMessage && !global.importScripts) {\n      var postMessageIsAsynchronous = true;\n      var oldOnMessage = global.onmessage;\n\n      global.onmessage = function () {\n        postMessageIsAsynchronous = false;\n      };\n\n      global.postMessage(\"\", \"*\");\n      global.onmessage = oldOnMessage;\n      return postMessageIsAsynchronous;\n    }\n  }\n\n  function installPostMessageImplementation() {\n    // Installs an event handler on `global` for the `message` event: see\n    // * https://developer.mozilla.org/en/DOM/window.postMessage\n    // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n    var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n    var onGlobalMessage = function onGlobalMessage(event) {\n      if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n        runIfPresent(+event.data.slice(messagePrefix.length));\n      }\n    };\n\n    if (global.addEventListener) {\n      global.addEventListener(\"message\", onGlobalMessage, false);\n    } else {\n      global.attachEvent(\"onmessage\", onGlobalMessage);\n    }\n\n    registerImmediate = function registerImmediate(handle) {\n      global.postMessage(messagePrefix + handle, \"*\");\n    };\n  }\n\n  function installMessageChannelImplementation() {\n    var channel = new MessageChannel();\n\n    channel.port1.onmessage = function (event) {\n      var handle = event.data;\n      runIfPresent(handle);\n    };\n\n    registerImmediate = function registerImmediate(handle) {\n      channel.port2.postMessage(handle);\n    };\n  }\n\n  function installReadyStateChangeImplementation() {\n    var html = doc.documentElement;\n\n    registerImmediate = function registerImmediate(handle) {\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n      var script = doc.createElement(\"script\");\n\n      script.onreadystatechange = function () {\n        runIfPresent(handle);\n        script.onreadystatechange = null;\n        html.removeChild(script);\n        script = null;\n      };\n\n      html.appendChild(script);\n    };\n  }\n\n  function installSetTimeoutImplementation() {\n    registerImmediate = function registerImmediate(handle) {\n      setTimeout(runIfPresent, 0, handle);\n    };\n  } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n  var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n  attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n  if ({}.toString.call(global.process) === \"[object process]\") {\n    // For Node.js before 0.9\n    installNextTickImplementation();\n  } else if (canUsePostMessage()) {\n    // For non-IE10 modern browsers\n    installPostMessageImplementation();\n  } else if (global.MessageChannel) {\n    // For web workers, where supported\n    installMessageChannelImplementation();\n  } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n    // For IE 6–8\n    installReadyStateChangeImplementation();\n  } else {\n    // For older browsers\n    installSetTimeoutImplementation();\n  }\n\n  attachTo.setImmediate = setImmediate;\n  attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);"],"sourceRoot":""}