{"version":3,"file":"f2c330a88e55f112242760787b9535908a5688e6-65a8b564b47663181347.js","mappings":"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","sources":["webpack://phmsa-enforcement-data/./node_modules/focus-trap-react/dist/focus-trap-react.js","webpack://phmsa-enforcement-data/./node_modules/focus-trap/dist/focus-trap.esm.js","webpack://phmsa-enforcement-data/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://phmsa-enforcement-data/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://phmsa-enforcement-data/./src/components/contact-us-box.js","webpack://phmsa-enforcement-data/./src/components/sidebar.js","webpack://phmsa-enforcement-data/./src/components/search-form.js","webpack://phmsa-enforcement-data/./src/components/environment-banner.js","webpack://phmsa-enforcement-data/./src/components/header.js","webpack://phmsa-enforcement-data/./src/utils/hooks/useClickOutside.js","webpack://phmsa-enforcement-data/./src/components/footer.js","webpack://phmsa-enforcement-data/./src/components/subheader.js","webpack://phmsa-enforcement-data/./src/components/dot-banner.js","webpack://phmsa-enforcement-data/./src/components/data-currency-footnote-enforcement.js","webpack://phmsa-enforcement-data/./src/components/colophon.js","webpack://phmsa-enforcement-data/./src/components/layout.js","webpack://phmsa-enforcement-data/./src/utils/date-utils.js","webpack://phmsa-enforcement-data/./src/utils/text-utils.js","webpack://phmsa-enforcement-data/./node_modules/tabbable/dist/index.esm.js"],"sourcesContent":["\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar _require = require('focus-trap'),\n createFocusTrap = _require.createFocusTrap;\nvar _require2 = require('tabbable'),\n isFocusable = _require2.isFocusable;\nvar FocusTrap = /*#__PURE__*/function (_React$Component) {\n function FocusTrap(props) {\n var _this;\n _classCallCheck(this, FocusTrap);\n _this = _callSuper(this, FocusTrap, [props]);\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n _defineProperty(_this, \"getNodeForOption\", function (optionName) {\n var _this$internalOptions;\n // use internal options first, falling back to original options\n var optionValue = (_this$internalOptions = this.internalOptions[optionName]) !== null && _this$internalOptions !== void 0 ? _this$internalOptions : this.originalOptions[optionName];\n if (typeof optionValue === 'function') {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n optionValue = optionValue.apply(void 0, params);\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n var _this$getDocument;\n node = (_this$getDocument = this.getDocument()) === null || _this$getDocument === void 0 ? void 0 : _this$getDocument.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n }\n return node;\n });\n _this.handleDeactivate = _this.handleDeactivate.bind(_this);\n _this.handlePostDeactivate = _this.handlePostDeactivate.bind(_this);\n _this.handleClickOutsideDeactivates = _this.handleClickOutsideDeactivates.bind(_this);\n\n // focus-trap options used internally when creating the trap\n _this.internalOptions = {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n returnFocusOnDeactivate: false,\n // the rest of these are also related to deactivation of the trap, and we\n // need to use them and control them as well\n checkCanReturnFocus: null,\n onDeactivate: _this.handleDeactivate,\n onPostDeactivate: _this.handlePostDeactivate,\n // we need to special-case this setting as well so that we can know if we should\n // NOT return focus if the trap gets auto-deactivated as the result of an\n // outside click (otherwise, we'll always think we should return focus because\n // of how we manage that flag internally here)\n clickOutsideDeactivates: _this.handleClickOutsideDeactivates\n };\n\n // original options provided by the consumer\n _this.originalOptions = {\n // because of the above `internalOptions`, we maintain our own flag for\n // this option, and default it to `true` because that's focus-trap's default\n returnFocusOnDeactivate: true,\n // because of the above `internalOptions`, we keep these separate since\n // they're part of the deactivation process which we configure (internally) to\n // be shared between focus-trap and focus-trap-react\n onDeactivate: null,\n onPostDeactivate: null,\n checkCanReturnFocus: null,\n // the user's setting, defaulted to false since focus-trap defaults this to false\n clickOutsideDeactivates: false\n };\n var focusTrapOptions = props.focusTrapOptions;\n for (var optionName in focusTrapOptions) {\n if (!Object.prototype.hasOwnProperty.call(focusTrapOptions, optionName)) {\n continue;\n }\n if (optionName === 'returnFocusOnDeactivate' || optionName === 'onDeactivate' || optionName === 'onPostDeactivate' || optionName === 'checkCanReturnFocus' || optionName === 'clickOutsideDeactivates') {\n _this.originalOptions[optionName] = focusTrapOptions[optionName];\n continue; // exclude from internalOptions\n }\n _this.internalOptions[optionName] = focusTrapOptions[optionName];\n }\n\n // if set, `{ target: Node, allowDeactivation: boolean }` where `target` is the outside\n // node that was clicked, and `allowDeactivation` is the result of the consumer's\n // option (stored in `this.originalOptions.clickOutsideDeactivates`, which may be a\n // function) whether to allow or deny auto-deactivation on click on this outside node\n _this.outsideClick = null;\n\n // elements from which to create the focus trap on mount; if a child is used\n // instead of the `containerElements` prop, we'll get the child's related\n // element when the trap renders and then is declared 'mounted'\n _this.focusTrapElements = props.containerElements || [];\n\n // now we remember what the currently focused element is, not relying on focus-trap\n _this.updatePreviousElement();\n return _this;\n }\n\n /**\n * Gets the configured document.\n * @returns {Document|undefined} Configured document, falling back to the main\n * document, if it exists. During SSR, `undefined` is returned since the\n * document doesn't exist.\n */\n _inherits(FocusTrap, _React$Component);\n return _createClass(FocusTrap, [{\n key: \"getDocument\",\n value: function getDocument() {\n // SSR: careful to check if `document` exists before accessing it as a variable\n return this.props.focusTrapOptions.document || (typeof document !== 'undefined' ? document : undefined);\n }\n }, {\n key: \"getReturnFocusNode\",\n value: function getReturnFocusNode() {\n var node = this.getNodeForOption('setReturnFocus', this.previouslyFocusedElement);\n return node ? node : node === false ? false : this.previouslyFocusedElement;\n }\n\n /** Update the previously focused element with the currently focused element. */\n }, {\n key: \"updatePreviousElement\",\n value: function updatePreviousElement() {\n var currentDocument = this.getDocument();\n if (currentDocument) {\n this.previouslyFocusedElement = currentDocument.activeElement;\n }\n }\n }, {\n key: \"deactivateTrap\",\n value: function deactivateTrap() {\n // NOTE: it's possible the focus trap has already been deactivated without our knowing it,\n // especially if the user set the `clickOutsideDeactivates: true` option on the trap,\n // and the mouse was clicked on some element outside the trap; at that point, focus-trap\n // will initiate its auto-deactivation process, which will call our own\n // handleDeactivate(), which will call into this method\n if (!this.focusTrap || !this.focusTrap.active) {\n return;\n }\n this.focusTrap.deactivate({\n // NOTE: we never let the trap return the focus since we do that ourselves\n returnFocus: false,\n // we'll call this in our own post deactivate handler so make sure the trap doesn't\n // do it prematurely\n checkCanReturnFocus: null,\n // let it call the user's original deactivate handler, if any, instead of\n // our own which calls back into this function\n onDeactivate: this.originalOptions.onDeactivate\n // NOTE: for post deactivate, don't specify anything so that it calls the\n // onPostDeactivate handler specified on `this.internalOptions`\n // which will always be our own `handlePostDeactivate()` handler, which\n // will finish things off by calling the user's provided onPostDeactivate\n // handler, if any, at the right time\n // onPostDeactivate: NOTHING\n });\n }\n }, {\n key: \"handleClickOutsideDeactivates\",\n value: function handleClickOutsideDeactivates(event) {\n // use consumer's option (or call their handler) as the permission or denial\n var allowDeactivation = typeof this.originalOptions.clickOutsideDeactivates === 'function' ? this.originalOptions.clickOutsideDeactivates.call(null, event) // call out of context\n : this.originalOptions.clickOutsideDeactivates; // boolean\n\n if (allowDeactivation) {\n // capture the outside target that was clicked so we can use it in the deactivation\n // process since the consumer allowed it to cause auto-deactivation\n this.outsideClick = {\n target: event.target,\n allowDeactivation: allowDeactivation\n };\n }\n return allowDeactivation;\n }\n }, {\n key: \"handleDeactivate\",\n value: function handleDeactivate() {\n if (this.originalOptions.onDeactivate) {\n this.originalOptions.onDeactivate.call(null); // call user's handler out of context\n }\n this.deactivateTrap();\n }\n }, {\n key: \"handlePostDeactivate\",\n value: function handlePostDeactivate() {\n var _this2 = this;\n var finishDeactivation = function finishDeactivation() {\n var returnFocusNode = _this2.getReturnFocusNode();\n var canReturnFocus = !!(\n // did the consumer allow it?\n\n _this2.originalOptions.returnFocusOnDeactivate && // can we actually focus the node?\n returnFocusNode !== null && returnFocusNode !== void 0 && returnFocusNode.focus && (\n // was there an outside click that allowed deactivation?\n !_this2.outsideClick ||\n // did the consumer allow deactivation when the outside node was clicked?\n _this2.outsideClick.allowDeactivation &&\n // is the outside node NOT focusable (implying that it did NOT receive focus\n // as a result of the click-through) -- in which case do NOT restore focus\n // to `returnFocusNode` because focus should remain on the outside node\n !isFocusable(_this2.outsideClick.target, _this2.internalOptions.tabbableOptions))\n\n // if no, the restore focus to `returnFocusNode` at this point\n );\n var _this2$internalOption = _this2.internalOptions.preventScroll,\n preventScroll = _this2$internalOption === void 0 ? false : _this2$internalOption;\n if (canReturnFocus) {\n // return focus to the element that had focus when the trap was activated\n returnFocusNode.focus({\n preventScroll: preventScroll\n });\n }\n if (_this2.originalOptions.onPostDeactivate) {\n _this2.originalOptions.onPostDeactivate.call(null); // don't call it in context of \"this\"\n }\n _this2.outsideClick = null; // reset: no longer needed\n };\n if (this.originalOptions.checkCanReturnFocus) {\n this.originalOptions.checkCanReturnFocus.call(null, this.getReturnFocusNode()) // call out of context\n .then(finishDeactivation, finishDeactivation);\n } else {\n finishDeactivation();\n }\n }\n }, {\n key: \"setupFocusTrap\",\n value: function setupFocusTrap() {\n if (this.focusTrap) {\n // trap already exists: it's possible we're in StrictMode and we're being remounted,\n // in which case, we will have deactivated the trap when we got unmounted (remember,\n // StrictMode, in development, purposely unmounts and remounts components after\n // mounting them the first time to make sure they have reusable state,\n // @see https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state) so now\n // we need to restore the state of the trap according to our component state\n // NOTE: Strict mode __violates__ assumptions about the `componentWillUnmount()` API\n // which clearly states -- even for React 18 -- that, \"Once a component instance is\n // unmounted, __it will never be mounted again.__\" (emphasis ours). So when we get\n // unmounted, we assume we're gone forever and we deactivate the trap. But then\n // we get remounted and we're supposed to restore state. But if you had paused,\n // we've now deactivated (we don't know we're amount to get remounted again)\n // which means we need to reactivate and then pause. Otherwise, do nothing.\n if (this.props.active && !this.focusTrap.active) {\n this.focusTrap.activate();\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n } else {\n var nodesExist = this.focusTrapElements.some(Boolean);\n if (nodesExist) {\n // eslint-disable-next-line react/prop-types -- _createFocusTrap is an internal prop\n this.focusTrap = this.props._createFocusTrap(this.focusTrapElements, this.internalOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.active) {\n this.setupFocusTrap();\n }\n // else, wait for later activation in case the `focusTrapOptions` will be updated\n // again before the trap is activated (e.g. if waiting to know what the document\n // object will be, so the Trap must be rendered, but the consumer is waiting to\n // activate until they have obtained the document from a ref)\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.focusTrap) {\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrap.updateContainerElements(this.props.containerElements);\n }\n var hasActivated = !prevProps.active && this.props.active;\n var hasDeactivated = prevProps.active && !this.props.active;\n var hasPaused = !prevProps.paused && this.props.paused;\n var hasUnpaused = prevProps.paused && !this.props.paused;\n if (hasActivated) {\n this.updatePreviousElement();\n this.focusTrap.activate();\n }\n if (hasDeactivated) {\n this.deactivateTrap();\n return; // un/pause does nothing on an inactive trap\n }\n if (hasPaused) {\n this.focusTrap.pause();\n }\n if (hasUnpaused) {\n this.focusTrap.unpause();\n }\n } else {\n // NOTE: if we're in `componentDidUpdate` and we don't have a trap yet,\n // it either means it shouldn't be active, or it should be but none of\n // of given `containerElements` were present in the DOM the last time\n // we tried to create the trap\n\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrapElements = this.props.containerElements;\n }\n\n // don't create the trap unless it should be active in case the consumer\n // is still updating `focusTrapOptions`\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n if (this.props.active) {\n this.updatePreviousElement();\n this.setupFocusTrap();\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.deactivateTrap();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var child = this.props.children ? React.Children.only(this.props.children) : undefined;\n if (child) {\n if (child.type && child.type === React.Fragment) {\n throw new Error('A focus-trap cannot use a Fragment as its child container. Try replacing it with a
element.');\n }\n var callbackRef = function callbackRef(element) {\n var containerElements = _this3.props.containerElements;\n if (child) {\n if (typeof child.ref === 'function') {\n child.ref(element);\n } else if (child.ref) {\n child.ref.current = element;\n }\n }\n _this3.focusTrapElements = containerElements ? containerElements : [element];\n };\n var childWithRef = React.cloneElement(child, {\n ref: callbackRef\n });\n return childWithRef;\n }\n return null;\n }\n }]);\n}(React.Component); // support server-side rendering where `Element` will not be defined\nvar ElementType = typeof Element === 'undefined' ? Function : Element;\nFocusTrap.propTypes = {\n active: PropTypes.bool,\n paused: PropTypes.bool,\n focusTrapOptions: PropTypes.shape({\n document: PropTypes.object,\n onActivate: PropTypes.func,\n onPostActivate: PropTypes.func,\n checkCanFocusTrap: PropTypes.func,\n onPause: PropTypes.func,\n onPostPause: PropTypes.func,\n onUnpause: PropTypes.func,\n onPostUnpause: PropTypes.func,\n onDeactivate: PropTypes.func,\n onPostDeactivate: PropTypes.func,\n checkCanReturnFocus: PropTypes.func,\n initialFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n fallbackFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string,\n // NOTE: does not support `false` as value (or return value from function)\n PropTypes.func]),\n escapeDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n clickOutsideDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n returnFocusOnDeactivate: PropTypes.bool,\n setReturnFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n allowOutsideClick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n preventScroll: PropTypes.bool,\n tabbableOptions: PropTypes.shape({\n displayCheck: PropTypes.oneOf(['full', 'legacy-full', 'non-zero-area', 'none']),\n getShadowRoot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func])\n }),\n trapStack: PropTypes.array,\n isKeyForward: PropTypes.func,\n isKeyBackward: PropTypes.func\n }),\n containerElements: PropTypes.arrayOf(PropTypes.instanceOf(ElementType)),\n // DOM element ONLY\n children: PropTypes.oneOfType([PropTypes.element,\n // React element\n PropTypes.instanceOf(ElementType) // DOM element\n ])\n\n // NOTE: _createFocusTrap is internal, for testing purposes only, so we don't\n // specify it here. It's expected to be set to the function returned from\n // require('focus-trap'), or one with a compatible interface.\n};\nFocusTrap.defaultProps = {\n active: true,\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\nmodule.exports = FocusTrap;","/*!\n* focus-trap 7.6.4\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { tabbable, focusable, isTabbable, getTabIndex, isFocusable } from 'tabbable';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (undefined !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : undefined;\n }\n}\n\nvar activeFocusTraps = {\n activateTrap: function activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n var activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap._setPausedState(true);\n }\n }\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n deactivateTrap: function deactivateTrap(trapStack, trap) {\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n if (trapStack.length > 0 && !trapStack[trapStack.length - 1]._isManuallyPaused()) {\n trapStack[trapStack.length - 1]._setPausedState(false);\n }\n }\n};\nvar isSelectableInput = function isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\nvar isEscapeEvent = function isEscapeEvent(e) {\n return (e === null || e === undefined ? undefined : e.key) === 'Escape' || (e === null || e === undefined ? undefined : e.key) === 'Esc' || (e === null || e === undefined ? undefined : e.keyCode) === 27;\n};\nvar isTabEvent = function isTabEvent(e) {\n return (e === null || e === undefined ? undefined : e.key) === 'Tab' || (e === null || e === undefined ? undefined : e.keyCode) === 9;\n};\n\n// checks for TAB by default\nvar isKeyForward = function isKeyForward(e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nvar isKeyBackward = function isKeyBackward(e) {\n return isTabEvent(e) && e.shiftKey;\n};\nvar delay = function delay(fn) {\n return setTimeout(fn, 0);\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nvar valueOrHandler = function valueOrHandler(value) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return typeof value === 'function' ? value.apply(undefined, params) : value;\n};\nvar getActualTarget = function getActualTarget(event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nvar internalTrapStack = [];\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n var doc = (userOptions === null || userOptions === undefined ? undefined : userOptions.document) || document;\n var trapStack = (userOptions === null || userOptions === undefined ? undefined : userOptions.trapStack) || internalTrapStack;\n var config = _objectSpread2({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward: isKeyForward,\n isKeyBackward: isKeyBackward\n }, userOptions);\n var state = {\n // containers given to createFocusTrap()\n // @type {Array}\n containers: [],\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array, // empty if none\n // focusableNodes: Array, // empty if none\n // posTabIndexesFound: boolean,\n // firstTabbableNode: HTMLElement|undefined,\n // lastTabbableNode: HTMLElement|undefined,\n // firstDomTabbableNode: HTMLElement|undefined,\n // lastDomTabbableNode: HTMLElement|undefined,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [],\n // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n manuallyPaused: false,\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined\n };\n var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {\n return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n var findContainerIndex = function findContainerIndex(element, event) {\n var composedPath = typeof (event === null || event === undefined ? undefined : event.composedPath) === 'function' ? event.composedPath() : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(function (_ref) {\n var container = _ref.container,\n tabbableNodes = _ref.tabbableNodes;\n return container.contains(element) || (// fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath === null || composedPath === undefined ? undefined : composedPath.includes(container)) || tabbableNodes.find(function (node) {\n return node === element;\n });\n });\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @param {Object} options\n * @param {boolean} [options.hasFallback] True if the option could be a selector string\n * and the option allows for a fallback scenario in the case where the selector is\n * valid but does not match a node (i.e. the queried node doesn't exist in the DOM).\n * @param {Array} [options.params] Params to pass to the option if it's a function.\n * @returns {undefined | null | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `null` if the option didn't resolve\n * to a node but `options.hasFallback=true`, `false` if the option resolved to `false`\n * (node explicitly not given); otherwise, the resolved DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node, unless the option is a selector string and `options.hasFallback=true`.\n */\n var getNodeForOption = function getNodeForOption(optionName) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$hasFallback = _ref2.hasFallback,\n hasFallback = _ref2$hasFallback === undefined ? false : _ref2$hasFallback,\n _ref2$params = _ref2.params,\n params = _ref2$params === undefined ? [] : _ref2$params;\n var optionValue = config[optionName];\n if (typeof optionValue === 'function') {\n optionValue = optionValue.apply(undefined, _toConsumableArray(params));\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n try {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n } catch (err) {\n throw new Error(\"`\".concat(optionName, \"` appears to be an invalid selector; error=\\\"\").concat(err.message, \"\\\"\"));\n }\n if (!node) {\n if (!hasFallback) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n // else, `node` MUST be `null` because that's what `Document.querySelector()` returns\n // if the selector is valid but doesn't match anything\n }\n }\n return node;\n };\n var getInitialFocusNode = function getInitialFocusNode() {\n var node = getNodeForOption('initialFocus', {\n hasFallback: true\n });\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n if (node === undefined || node && !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n var firstTabbableGroup = state.tabbableGroups[0];\n var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n } else if (node === null) {\n // option is a VALID selector string that doesn't yield a node: use the `fallbackFocus`\n // option instead of the default behavior when the option isn't specified at all\n node = getNodeForOption('fallbackFocus');\n }\n if (!node) {\n throw new Error('Your focus-trap needs to have at least one focusable element');\n }\n return node;\n };\n var updateTabbableNodes = function updateTabbableNodes() {\n state.containerGroups = state.containers.map(function (container) {\n var tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n var focusableNodes = focusable(container, config.tabbableOptions);\n var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined;\n var firstDomTabbableNode = focusableNodes.find(function (node) {\n return isTabbable(node);\n });\n var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) {\n return isTabbable(node);\n });\n var posTabIndexesFound = !!tabbableNodes.find(function (node) {\n return getTabIndex(node) > 0;\n });\n return {\n container: container,\n tabbableNodes: tabbableNodes,\n focusableNodes: focusableNodes,\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound: posTabIndexesFound,\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode: firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode: lastTabbableNode,\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode: firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode: lastDomTabbableNode,\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode: function nextTabbableNode(node) {\n var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) {\n return isTabbable(el);\n });\n }\n return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) {\n return isTabbable(el);\n });\n }\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n }\n };\n });\n state.tabbableGroups = state.containerGroups.filter(function (group) {\n return group.tabbableNodes.length > 0;\n });\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (state.containerGroups.find(function (g) {\n return g.posTabIndexesFound;\n }) && state.containerGroups.length > 1) {\n throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n }\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement} The element that currently has the focus\n **/\n var _getActiveElement = function getActiveElement(el) {\n var activeElement = el.activeElement;\n if (!activeElement) {\n return;\n }\n if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n return _getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n };\n var _tryFocus = function tryFocus(node) {\n if (node === false) {\n return;\n }\n if (node === _getActiveElement(document)) {\n return;\n }\n if (!node || !node.focus) {\n _tryFocus(getInitialFocusNode());\n return;\n }\n node.focus({\n preventScroll: !!config.preventScroll\n });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus', {\n params: [previousActiveElement]\n });\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n var findNextNavNode = function findNextNavNode(_ref3) {\n var target = _ref3.target,\n event = _ref3.event,\n _ref3$isBackward = _ref3.isBackward,\n isBackward = _ref3$isBackward === undefined ? false : _ref3$isBackward;\n target = target || getActualTarget(event);\n updateTabbableNodes();\n var destinationNode = null;\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n var containerIndex = findContainerIndex(target, event);\n var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n var startOfGroupIndex = state.tabbableGroups.findIndex(function (_ref4) {\n var firstTabbableNode = _ref4.firstTabbableNode;\n return target === firstTabbableNode;\n });\n if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n var lastOfGroupIndex = state.tabbableGroups.findIndex(function (_ref5) {\n var lastTabbableNode = _ref5.lastTabbableNode;\n return target === lastTabbableNode;\n });\n if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n var checkPointerDown = function checkPointerDown(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n var checkFocusIn = function checkFocusIn(event) {\n var target = getActualTarget(event);\n var targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n var nextNode; // next node to focus, if we find one\n var navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n var mruTabIdx = tabbableNodes.findIndex(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (!state.containerGroups.some(function (g) {\n return g.tabbableNodes.some(function (n) {\n return getTabIndex(n) > 0;\n });\n })) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent)\n });\n }\n if (nextNode) {\n _tryFocus(nextNode);\n } else {\n _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n var checkKeyNav = function checkKeyNav(event) {\n var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n state.recentNavEvent = event;\n var destinationNode = findNextNavNode({\n event: event,\n isBackward: isBackward\n });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n _tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n var checkTabKey = function checkTabKey(event) {\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates\n var checkEscapeKey = function checkEscapeKey(event) {\n if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n event.preventDefault();\n trap.deactivate();\n }\n };\n var checkClick = function checkClick(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n var addListeners = function addListeners() {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () {\n _tryFocus(getInitialFocusNode());\n }) : _tryFocus(getInitialFocusNode());\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkTabKey, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkEscapeKey);\n return trap;\n };\n var removeListeners = function removeListeners() {\n if (!state.active) {\n return;\n }\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkTabKey, true);\n doc.removeEventListener('keydown', checkEscapeKey);\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n var checkDomRemoval = function checkDomRemoval(mutations) {\n var isFocusedNodeRemoved = mutations.some(function (mutation) {\n var removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n _tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;\n var updateObservedNodes = function updateObservedNodes() {\n if (!mutationObserver) {\n return;\n }\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n get paused() {\n return state.paused;\n },\n activate: function activate(activateOptions) {\n if (state.active) {\n return this;\n }\n var onActivate = getOption(activateOptions, 'onActivate');\n var onPostActivate = getOption(activateOptions, 'onPostActivate');\n var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n onActivate === null || onActivate === undefined || onActivate();\n var finishActivation = function finishActivation() {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate === null || onPostActivate === undefined || onPostActivate();\n };\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n return this;\n }\n finishActivation();\n return this;\n },\n deactivate: function deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n var options = _objectSpread2({\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus\n }, deactivateOptions);\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n activeFocusTraps.deactivateTrap(trapStack, trap);\n var onDeactivate = getOption(options, 'onDeactivate');\n var onPostDeactivate = getOption(options, 'onPostDeactivate');\n var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');\n onDeactivate === null || onDeactivate === undefined || onDeactivate();\n var finishDeactivation = function finishDeactivation() {\n delay(function () {\n if (returnFocus) {\n _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate === null || onPostDeactivate === undefined || onPostDeactivate();\n });\n };\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n return this;\n }\n finishDeactivation();\n return this;\n },\n pause: function pause(pauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = true;\n return this._setPausedState(true, pauseOptions);\n },\n unpause: function unpause(unpauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = false;\n if (trapStack[trapStack.length - 1] !== this) {\n return this;\n }\n return this._setPausedState(false, unpauseOptions);\n },\n updateContainerElements: function updateContainerElements(containerElements) {\n var elementsAsArray = [].concat(containerElements).filter(Boolean);\n state.containers = elementsAsArray.map(function (element) {\n return typeof element === 'string' ? doc.querySelector(element) : element;\n });\n if (state.active) {\n updateTabbableNodes();\n }\n updateObservedNodes();\n return this;\n }\n };\n Object.defineProperties(trap, {\n _isManuallyPaused: {\n value: function value() {\n return state.manuallyPaused;\n }\n },\n _setPausedState: {\n value: function value(paused, options) {\n if (state.paused === paused) {\n return this;\n }\n state.paused = paused;\n if (paused) {\n var onPause = getOption(options, 'onPause');\n var onPostPause = getOption(options, 'onPostPause');\n onPause === null || onPause === undefined || onPause();\n removeListeners();\n updateObservedNodes();\n onPostPause === null || onPostPause === undefined || onPostPause();\n } else {\n var onUnpause = getOption(options, 'onUnpause');\n var onPostUnpause = getOption(options, 'onPostUnpause');\n onUnpause === null || onUnpause === undefined || onUnpause();\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n onPostUnpause === null || onPostUnpause === undefined || onPostUnpause();\n }\n return this;\n }\n }\n });\n\n // initialize container elements\n trap.updateContainerElements(elements);\n return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","/*!\n * Font Awesome Free 6.7.2 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 * Copyright 2024 Fonticons, Inc.\n */\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && _setPrototypeOf(t, e);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _wrapRegExp() {\n _wrapRegExp = function (e, r) {\n return new BabelRegExp(e, void 0, r);\n };\n var e = RegExp.prototype,\n r = new WeakMap();\n function BabelRegExp(e, t, p) {\n var o = RegExp(e, t);\n return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n }\n function buildGroups(e, t) {\n var p = r.get(t);\n return Object.keys(p).reduce(function (r, t) {\n var o = p[t];\n if (\"number\" == typeof o) r[t] = e[o];else {\n for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n r[t] = e[o[i]];\n }\n return r;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n var t = e.exec.call(this, r);\n if (t) {\n t.groups = buildGroups(t, this);\n var p = t.indices;\n p && (p.groups = buildGroups(p, this));\n }\n return t;\n }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n if (\"string\" == typeof p) {\n var o = r.get(this);\n return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n var t = o[r];\n return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n }));\n }\n if (\"function\" == typeof p) {\n var i = this;\n return e[Symbol.replace].call(this, t, function () {\n var e = arguments;\n return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n });\n }\n return e[Symbol.replace].call(this, t, p);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nconst noop = () => {};\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\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) {}\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar p = /fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n g = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar S = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n duotone: {\n fa: \"solid\",\n fad: \"solid\",\n \"fa-solid\": \"solid\",\n \"fa-duotone\": \"solid\",\n fadr: \"regular\",\n \"fa-regular\": \"regular\",\n fadl: \"light\",\n \"fa-light\": \"light\",\n fadt: \"thin\",\n \"fa-thin\": \"thin\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\",\n fasdr: \"regular\",\n \"fa-regular\": \"regular\",\n fasdl: \"light\",\n \"fa-light\": \"light\",\n fasdt: \"thin\",\n \"fa-thin\": \"thin\"\n }\n },\n A = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n P = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar s = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n L = [s, t, r, o];\nvar G = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n duotone: {\n 900: \"fad\",\n 400: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar lt = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\",\n 400: \"fadr\",\n normal: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n normal: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar pt = new Map([[\"classic\", {\n defaultShortPrefixId: \"fas\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp\", {\n defaultShortPrefixId: \"fass\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"duotone\", {\n defaultShortPrefixId: \"fad\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp-duotone\", {\n defaultShortPrefixId: \"fasds\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }]]),\n xt = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n brands: \"fab\"\n },\n duotone: {\n solid: \"fad\",\n regular: \"fadr\",\n light: \"fadl\",\n thin: \"fadt\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\",\n regular: \"fasdr\",\n light: \"fasdl\",\n thin: \"fasdt\"\n }\n };\nvar Ft = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n St = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n },\n At = [\"kit\"];\nvar Ct = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n};\nvar Lt = [\"fak\", \"fakd\"],\n Wt = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n };\nvar Et = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n };\n\nvar t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n r$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar bt$1 = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"];\nvar Yt = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n };\nvar ua = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n duotone: {\n \"fa-regular\": \"fadr\",\n \"fa-light\": \"fadl\",\n \"fa-thin\": \"fadt\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\",\n \"fa-regular\": \"fasdr\",\n \"fa-light\": \"fasdl\",\n \"fa-thin\": \"fasdt\"\n }\n },\n I$1 = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n duotone: [\"fadr\", \"fadl\", \"fadt\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"]\n },\n ga = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n duotone: {\n fadr: \"fa-regular\",\n fadl: \"fa-light\",\n fadt: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\",\n fasdr: \"fa-regular\",\n fasdl: \"fa-light\",\n fasdt: \"fa-thin\"\n }\n },\n x = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\"],\n Ia = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", ...r$1, ...x],\n m$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n c$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n F$1 = c$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n ma = [...Object.keys(I$1), ...m$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(c$1.map(a => \"\".concat(a, \"x\"))).concat(F$1.map(a => \"w-\".concat(a)));\nvar wa = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n };\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[s];\n }\n });\n}\nconst _PREFIX_TO_STYLE = _objectSpread2({}, S);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n 'fa-duotone': 'duotone'\n}), S[s]), St['kit']), St['kit-duotone']);\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = _objectSpread2({}, xt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n duotone: 'fad'\n}), _STYLE_TO_PREFIX[s]), Et['kit']), Et['kit-duotone']);\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = _objectSpread2({}, ga);\n_PREFIX_TO_LONG_STYLE[s] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[s]), Wt['kit']);\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = _objectSpread2({}, ua);\n_LONG_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[s]), Ct['kit']);\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = p; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = g;\nconst _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, G);\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = A;\nconst RESERVED_CLASSES = [...At, ...ma];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\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 if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['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(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nconst _default = {\n styleDefault: 'solid',\n familyDefault: s,\n cssPrefix: DEFAULT_CSS_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\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\nconst _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\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}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-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-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\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 transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\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-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\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: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\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 z-index: var(--fa-stack-z-index, auto);\\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: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\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\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nlet _cssInserted = false;\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nconst 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];\n\nconst functions = [];\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\nlet loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\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/**\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 */\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 if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n}\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\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 ease the upgrade process for our users by automatically defining\n * this as well.\n */\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\".*path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nconst {\n styles,\n shims\n} = namespace;\nconst FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nconst PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n return acc;\n}, {});\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n });\n\n // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getFamilyId(values) {\n let family = s;\n const famProps = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n return acc;\n }, {});\n L.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = s\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n // handles the exception of passing in only a family of 'duotone' with no style\n if (family === t && !styleOrPrefix) {\n return 'fad';\n }\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n let rest = [];\n let iconName = null;\n classNames.forEach(cls => {\n const result = getIconName(config.cssPrefix, cls);\n if (result) {\n iconName = result;\n } else if (cls) {\n rest.push(cls);\n }\n });\n return {\n iconName,\n rest\n };\n}\nfunction sortedUniqueValues(arr) {\n return arr.sort().filter((value, index, arr) => {\n return arr.indexOf(value) === index;\n });\n}\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n let givenPrefix = null;\n const faCombinedClasses = Ia.concat(bt$1);\n const faStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => faCombinedClasses.includes(cls)));\n const nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => !Ia.includes(cls)));\n const faStyles = faStyleOrFamilyClasses.filter(cls => {\n givenPrefix = cls;\n return !P.includes(cls);\n });\n const [styleFromValues = null] = faStyles;\n const family = getFamilyId(faStyleOrFamilyClasses);\n const canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n prefix: getCanonicalPrefix(styleFromValues, {\n family\n })\n });\n return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n values,\n family,\n styles,\n config,\n canonical,\n givenPrefix\n })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n let {\n prefix,\n iconName\n } = canonical;\n if (skipLookups || !prefix || !iconName) {\n return {\n prefix,\n iconName\n };\n }\n const shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n const aliasIconName = byAlias(prefix, iconName);\n iconName = shim.iconName || aliasIconName || iconName;\n prefix = shim.prefix || prefix;\n if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n prefix = 'fas';\n }\n return {\n prefix,\n iconName\n };\n}\nconst newCanonicalFamilies = L.filter(familyId => {\n return familyId !== s || familyId !== t;\n});\nconst newCanonicalStyles = Object.keys(ga).filter(key => key !== s).map(key => Object.keys(ga[key])).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n const {\n values,\n family,\n canonical,\n givenPrefix = '',\n styles = {},\n config: config$$1 = {}\n } = prefixOptions;\n const isDuotoneFamily = family === t;\n const valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n const defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n const canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n canonical.prefix = 'fad';\n }\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n const validPrefix = Object.keys(styles).find(key => newCanonicalStyles.includes(key));\n if (validPrefix || config$$1.autoFetchSvg) {\n const defaultPrefix = pt.get(family).defaultShortPrefixId;\n canonical.prefix = defaultPrefix;\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n }\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = _objectSpread2(_objectSpread2({}, this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]);\n\n // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n const longPrefix = PREFIX_TO_LONG_STYLE[s][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n reset() {\n this.definitions = {};\n }\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n _hooks[hook].push(hooks[hook]);\n });\n }\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id\n }),\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = Lt.includes(prefix);\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c$$1 => extra.classes.indexOf(c$$1) === -1).filter(c$$1 => c$$1 !== '' || !!c$$1).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, 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 const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n const args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n const styles = _objectSpread2({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n const styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").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 return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nconst noop$1 = () => {};\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.7.2\\\"\";\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n return comment;\n}\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1];\n\n // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\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}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.iconName && val.prefix) {\n return val;\n }\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\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 return extraAttributes;\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: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nconst {\n styles: styles$2\n} = namespace;\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\nfunction getKnownPrefixes() {\n return [...Ft, ...Ia];\n}\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const prefixes = config.autoFetchSvg ? getKnownPrefixes() : P.concat(Object.keys(styles$2));\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n let candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {\n // noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask\n }));\n };\n}\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\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 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,\n iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n let nextChild;\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(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.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n };\n },\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n}), lt), wa), Yt);\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c$$1 => c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\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 (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n }\n\n // 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 if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n }));\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = abstract.map(a$$1 => toHtml(a$$1)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\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}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto() {\n disconnect();\n },\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n return abstract;\n}\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n const 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: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n };\n\n // Ring\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, 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 const OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n const dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, 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: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, 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: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\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 = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _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 _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) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\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-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\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}\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\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\nvar _excluded = [\"style\"];\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, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_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}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\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\nvar defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var allProps = _objectSpread2(_objectSpread2({}, defaultProps), props);\n\n var iconArgs = allProps.icon,\n maskArgs = allProps.mask,\n symbol = allProps.symbol,\n className = allProps.className,\n title = allProps.title,\n titleId = allProps.titleId,\n maskId = allProps.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(allProps)), _toConsumableArray((className || '').split(' '))));\n var transform = objectWithKey('transform', typeof allProps.transform === 'string' ? parse.transform(allProps.transform) : allProps.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\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: ref\n };\n Object.keys(allProps).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!defaultProps.hasOwnProperty(key)) {\n extraProps[key] = allProps[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, '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 shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faPhone, faFax, faEnvelope} from '@fortawesome/free-solid-svg-icons';\n\nconst ContactUsBox = () => {\n return (\n
\n

Contact Us

\n
\n

\n Office of Pipeline Safety\n
\n U.S. Department of Transportation\n
\n Pipeline and Hazardous Materials Safety Administration\n
\n 1200 New Jersey Avenue, SE\n
\n Washington, DC 20590\n
\n United States\n

\n\n
\n
Email:
\n
\n \n phmsa.pipelinesafety@dot.gov \n \n
\n
Phone:
\n
\n \n 202-366-4595 \n \n
\n
Fax:
\n
\n \n 202-366-4566 \n \n
\n
Business Hours:
\n
9:00am-5:00pm ET, M-F
\n
\n

\n If you are deaf, hard of hearing, or have a speech disability, please dial 7-1-1 to access telecommunications\n relay services.\n

\n
\n
\n );\n};\n\nexport default ContactUsBox;\n","import {Link} from 'gatsby';\nimport {SideNav} from '@trussworks/react-uswds';\nimport ContactUsBox from './contact-us-box';\n\nconst Sidebar = () => {\n return (\n <>\n \n PHMSA Pipeline Enforcement\n ,\n \n Pipeline Enforcement Data\n ,\n \n Field Operations Overview\n ,\n ]}\n key=\"enforcement-sidenav\"\n />\n
\n

Related Links

\n \n Stakeholder Communications\n ,\n \n Interpretations\n ,\n \n Notices and Advisory Bulletins\n ,\n \n FOIA Electronic Reading Room\n ,\n \n Excavation Enforcement Final Rule\n ,\n \n State Information\n ,\n ]}\n key=\"enforcement-sidenav-related\"\n />\n
\n\n
\n \n
\n \n );\n};\n\nexport default Sidebar;\n","import {useStaticQuery, graphql} from 'gatsby';\nimport {navigate} from '@reach/router';\nimport {Search} from '@trussworks/react-uswds';\n\nconst SearchForm = () => {\n const {site} = useStaticQuery(\n graphql`\n query {\n site {\n pathPrefix\n siteMetadata {\n searchgov {\n affiliate\n endpoint\n inline\n }\n }\n }\n }\n `\n );\n const {affiliate, endpoint, inline} = site.siteMetadata.searchgov;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const query = e.currentTarget.search.value;\n if (inline) {\n navigate(`${site.pathPrefix}/search?query=${query}`);\n } else {\n window.location.replace(`${endpoint}/search?utf8=✓&affiliate=${affiliate}&query=${query}`);\n }\n };\n\n return ;\n};\n\nexport default SearchForm;\n","const env_banner_dict = {\r\n 'phmsa-uat': {text: 'PHMSA-UAT SERVER', bg_color: 'green-cool-50v'},\r\n 'csnw-ci': {text: 'CSNW-CI SERVER', bg_color: 'violet-50'},\r\n 'dev': {text: 'DEVELOPMENT SERVER', bg_color: 'red-60v'},\r\n};\r\n\r\nexport default function EnvironmentBanner() {\r\n const env = process.env.GATSBY_SERVER_ENV;\r\n let env_banner;\r\n if (env) env_banner = env_banner_dict[env];\r\n\r\n return (\r\n <>\r\n {env_banner && (\r\n
\r\n {env_banner.text}\r\n
\r\n )}\r\n \r\n );\r\n}\r\n","import {useState, useRef} from 'react';\r\nimport {\r\n NavMenuButton,\r\n Grid,\r\n GridContainer,\r\n NavDropDownButton,\r\n MegaMenu,\r\n Header,\r\n ExtendedNav,\r\n} from '@trussworks/react-uswds';\r\nimport {useStaticQuery, graphql} from 'gatsby';\r\nimport SearchForm from './search-form';\r\nimport {useClickOutside} from '../utils/hooks/useClickOutside';\r\nimport {nav_dropdowns} from '../utils/text-utils';\r\nimport EnvironmentBanner from './environment-banner';\r\n\r\n// Format the arr to match how React-USWDS likes to receive them\r\n// This also divides the sub-menus to our specified number of rows\r\nconst formatted_arr = nav_dropdowns.map((dropdown) => {\r\n return {\r\n header: dropdown.header,\r\n sub_menus: dropdown.menus.flatMap((menu, menu_idx) => {\r\n let counter = 0;\r\n const menus = [];\r\n\r\n menus.push([\r\n

\r\n {menu.sub_header}\r\n

,\r\n ]);\r\n\r\n menu.sub_menus.forEach((sub_menu, sub_menu_idx) => {\r\n const sub_menu_key = menu_idx + '-' + sub_menu_idx;\r\n const max_rows_per_col = 6; // Change this number to specify the numbers of rows in each column\r\n\r\n if (sub_menu_idx != 0 && sub_menu_idx % max_rows_per_col == 0) {\r\n menus.push([\r\n \r\n {sub_menu.name}\r\n ,\r\n ]);\r\n counter++;\r\n } else {\r\n menus[counter].push(\r\n \r\n {sub_menu.name}\r\n \r\n );\r\n }\r\n });\r\n return menus;\r\n }),\r\n };\r\n});\r\n\r\nconst secondary_menu_items = [\r\n \r\n Sign Up for Email Alerts\r\n ,\r\n \r\n Newsroom\r\n ,\r\n];\r\n\r\nconst initial_menu_tracker = new Array(nav_dropdowns.length).fill(false);\r\n\r\nconst SiteHeader = ({isNavMobileExpanded, setIsNavMobileExpanded}) => {\r\n const logo_data = useStaticQuery(graphql`\r\n query LogoWithTitlesQuery {\r\n file(name: {eq: \"phmsa-triskelion-with-titles\"}) {\r\n publicURL\r\n }\r\n }\r\n `);\r\n\r\n const [menuTracker, setMenuTracker] = useState(initial_menu_tracker);\r\n const wrapperRef = useRef(null);\r\n useClickOutside({ref: wrapperRef, onClickOutside: () => setMenuTracker(initial_menu_tracker)});\r\n\r\n const handleMobileNav = () => setIsNavMobileExpanded((prvExpanded) => !prvExpanded);\r\n\r\n const menu_items = nav_dropdowns.map((dropdown, idx) => {\r\n return (\r\n <>\r\n \r\n setMenuTracker((prevIsOpen) => {\r\n const newIsOpen = [...initial_menu_tracker];\r\n newIsOpen[idx] = !prevIsOpen[idx];\r\n return newIsOpen;\r\n })\r\n }\r\n menuId={dropdown.header}\r\n isOpen={menuTracker[idx]}\r\n label={dropdown.header}\r\n isCurrent={menuTracker[idx]}\r\n />\r\n \r\n \r\n );\r\n });\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default SiteHeader;\r\n","import {useEffect} from 'react';\r\n\r\n/**\r\n * This Hook can be used for detecting clicks outside the Opened Menu\r\n */\r\n\r\n// Taken from https://stackoverflow.com/a/63359693\r\nexport function useClickOutside({ref, onClickOutside}) {\r\n useEffect(() => {\r\n function handleClickOutside({target}) {\r\n // https://stackoverflow.com/a/71193834\r\n if (ref.current && !ref.current.contains(target)) {\r\n onClickOutside();\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [ref, onClickOutside]);\r\n}\r\n","import {Footer, SocialLinks, GridContainer, Grid} from '@trussworks/react-uswds';\n// phmsa.dot.gov uses FontAwesome icons for their social media links (rather than USWDS icons)\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faTwitter, faYoutube, faLinkedin} from '@fortawesome/free-brands-svg-icons';\n\nconst social_links = [\n \n \n ,\n \n \n ,\n \n \n ,\n];\n\nconst links_about = [\n {\n key: 'nav-link--about-phmsa-phmsas-mission',\n href: 'https://www.phmsa.dot.gov/about-phmsa/phmsas-mission',\n text: 'About PHMSA',\n },\n {\n key: 'nav-link--regulations-and-compliance',\n href: 'https://www.phmsa.dot.gov/regulations-and-compliance',\n text: 'Regulations and Compliance',\n },\n {\n key: 'nav-link--resources',\n href: 'https://www.phmsa.dot.gov/resources',\n text: 'Resources',\n },\n {\n key: 'nav-link--safety',\n href: 'https://www.phmsa.dot.gov/safety',\n text: 'Safety',\n },\n];\n\nconst links_resources = [\n {\n key: 'nav-link--about-phmsa-offices-office-civil-rights',\n href: 'https://www.phmsa.dot.gov/about-phmsa/offices/office-civil-rights',\n text: 'PHMSA Civil Rights',\n },\n {\n key: 'nav-link--about-phmsa-web-policies',\n href: 'https://www.phmsa.dot.gov/about-phmsa/web-policies',\n text: 'PHMSA Web Policies',\n },\n\n {\n key: 'nav-link--about-phmsa-accessibility',\n href: 'https://www.phmsa.dot.gov/about-phmsa/accessibility',\n text: 'Accessibility',\n },\n {\n key: 'nav-link--careers',\n href: 'https://www.phmsa.dot.gov/careers',\n text: 'Careers',\n },\n];\n\nconst links_policies = [\n {\n key: 'nav-link-https--wwwtransportationgov-about',\n href: 'https://www.transportation.gov/about',\n text: 'About DOT',\n },\n {\n key: 'nav-link-https--wwwtransportationgov-budget-dot-budget-and-performance',\n href: 'https://www.transportation.gov/budget/dot-budget-and-performance',\n text: 'Budget and Performance',\n },\n {\n key: 'nav-link-https--wwwcivilrightsdotgov-',\n href: 'https://www.civilrights.dot.gov',\n text: 'Civil Rights',\n },\n {\n key: 'nav-link--foia',\n href: 'https://www.phmsa.dot.gov/foia',\n text: 'FOIA',\n },\n {\n key: 'nav-link-https--wwwtransportationgov-dot-information-dissemination-quality-guidelines',\n href: 'https://www.transportation.gov/dot-information-dissemination-quality-guidelines',\n text: 'Information Quality',\n },\n {\n key: 'nav-link-https--wwwcivilrightsdotgov-civil-rights-awareness-enforcement-employment-related-affirmative-employment-no-fear-act',\n href: 'https://www.civilrights.dot.gov/civil-rights-awareness-enforcement/employment-related/affirmative-employment/no-fear-act',\n text: 'No FEAR Act',\n },\n {\n key: 'nav-link-https--wwwoigdotgov-',\n href: 'https://www.oig.dot.gov',\n text: 'Office of Inspector General',\n },\n {\n key: 'nav-link-https--wwwusagov-',\n href: 'https://www.usa.gov',\n text: 'USA.gov',\n },\n {\n key: 'nav-link-https--wwwtransportationgov-web-policies',\n href: 'https://www.transportation.gov/web-policies',\n text: 'Web Policies and Notices',\n },\n {\n key: 'nav-link-https--wwwtransportationgov-web-standards',\n href: 'https://www.transportation.gov/web-standards',\n text: 'Web Standards',\n },\n];\n\nconst SiteFooter = () => {\n const primary = (\n \n \n
\n

U.S. DEPARTMENT OF TRANSPORTATION

\n

\n Pipeline and Hazardous Materials Safety Administration\n

\n

1200 NEW JERSEY AVENUE, SE

\n

WASHINGTON, DC 20590

\n

\n \n 202-366-4433\n \n

\n

\n HAZMAT Registration Help Desk: \n \n 202-366-4109\n \n

\n

\n Hazardous Materials Information Center:{' '}\n \n 1-800-467-4922\n \n

\n
\n {/* Top margin to match the address text on the left */}\n
\n \n Subscribe To Email Updates\n \n \n
\n
\n
\n );\n\n const secondary = (\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n );\n\n return