UNPKG

digitalmarketplace-frontend

Version:

Digital Marketplace Frontend contains assets and components used in Digital Marketplace projects

5,494 lines 206 kB
/*
 * This variable is automatically overwritten during builds and releases.
 * It doesn't need to be updated manually.
 */
/**
 * Digital Marketplace Frontend release version
 *
 * {@link https://github.com/Crown-Commercial-Service/ccs-digitalmarketplace-govuk-frontend/releases}
 */
const version = '3.12.0';

const GOOGLE_TAG_MANAGER_ID = 'GTM-WCGFX3GW';
const googleTagManagerInit = (w, d, s, l, i) => {
    w[l] = w[l] || [];
    w[l].push({
        'gtm.start': new Date().getTime(),
        event: 'gtm.js'
    });
    const f = d.getElementsByTagName(s)[0];
    const j = d.createElement(s);
    const dl = '';
    j.async = true;
    j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
    f.parentNode.insertBefore(j, f);
};
const loadGoogleTagManager = () => googleTagManagerInit(window, document, 'script', 'dataLayer', GOOGLE_TAG_MANAGER_ID);

function assign(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i];
    for (var key in source) {
      target[key] = source[key];
    }
  }
  return target;
}
var defaultConverter = {
  read: function read(value) {
    if (value[0] === '"') {
      value = value.slice(1, -1);
    }
    return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
  },
  write: function write(value) {
    return encodeURIComponent(value).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);
  }
};
function init(converter, defaultAttributes) {
  function set(name, value, attributes) {
    if (typeof document === 'undefined') {
      return;
    }
    attributes = assign({}, defaultAttributes, attributes);
    if (typeof attributes.expires === 'number') {
      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
    }
    if (attributes.expires) {
      attributes.expires = attributes.expires.toUTCString();
    }
    name = encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
    var stringifiedAttributes = '';
    for (var attributeName in attributes) {
      if (!attributes[attributeName]) {
        continue;
      }
      stringifiedAttributes += '; ' + attributeName;
      if (attributes[attributeName] === true) {
        continue;
      }
      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
    }
    return document.cookie = name + '=' + converter.write(value, name) + stringifiedAttributes;
  }
  function get(name) {
    if (typeof document === 'undefined' || arguments.length && !name) {
      return;
    }
    var cookies = document.cookie ? document.cookie.split('; ') : [];
    var jar = {};
    for (var i = 0; i < cookies.length; i++) {
      var parts = cookies[i].split('=');
      var value = parts.slice(1).join('=');
      try {
        var found = decodeURIComponent(parts[0]);
        jar[found] = converter.read(value, found);
        if (name === found) {
          break;
        }
      } catch (e) {}
    }
    return name ? jar[name] : jar;
  }
  return Object.create({
    set: set,
    get: get,
    remove: function remove(name, attributes) {
      set(name, '', assign({}, attributes, {
        expires: -1
      }));
    },
    withAttributes: function withAttributes(attributes) {
      return init(this.converter, assign({}, this.attributes, attributes));
    },
    withConverter: function withConverter(converter) {
      return init(assign({}, this.converter, converter), this.attributes);
    }
  }, {
    attributes: {
      value: Object.freeze(defaultAttributes)
    },
    converter: {
      value: Object.freeze(converter)
    }
  });
}
var api = init(defaultConverter, {
  path: '/'
});

var GrantType;
(function (GrantType) {
    GrantType["GRANTED"] = "granted";
    GrantType["NOT_GRANTED"] = "not granted";
})(GrantType || (GrantType = {}));

const getGrantedText = (state) => state ? GrantType.GRANTED : GrantType.NOT_GRANTED;
const updateDataLayer = (cookiePreferences) => {
    window.dataLayer.push({
        event: 'gtm_consent_update',
        usage_consent: getGrantedText(cookiePreferences.usage),
        glassbox_consent: getGrantedText(cookiePreferences.glassbox),
        marketing_consent: GrantType.NOT_GRANTED
    });
};

const cookieUpdateOptions = [
    {
        cookieName: 'usage',
        cookiePrefixes: ['_ga', '_gi']
    },
    {
        cookieName: 'glassbox',
        cookiePrefixes: ['_cls']
    }
];
const DOMAINS = [
    '.marketplace.team',
    '.digitalmarketplace.service.gov.uk',
    'www.applytosupply.digitalmarketplace.service.gov.uk'
];
// When not in production we want to delete cookies in localhost too
const getDomains = () => {
    if (window.location.hostname === 'localhost') {
        return DOMAINS.concat(['localhost']);
    }
    return DOMAINS;
};
const getCookiePreferences = () => {
    const defaultCookieSettings = '{"usage":false,"glassbox":false}';
    return JSON.parse(api.get('cookie_preferences_dmp') ?? defaultCookieSettings);
};
const setCookiePreferences = (usage) => {
    const cookiePreferences = getCookiePreferences();
    cookiePreferences.usage = usage;
    cookiePreferences.settings_viewed = true;
    api.set('cookie_preferences_dmp', JSON.stringify(cookiePreferences), { expires: 365 });
    updateDataLayer(cookiePreferences);
    removeUnwantedCookies();
};
const removeUnwantedCookies = () => {
    const cookieList = Object.keys(api.get());
    const cookiesToRemove = ['digitalmarketplace_cookie_settings_viewed', 'digitalmarketplace_google_analytics_enabled', 'digitalmarketplace_cookie_options_v1', 'dm_cookies_policy'];
    const cookiePreferences = getCookiePreferences();
    const cookiePrefixes = [];
    cookieUpdateOptions.forEach((cookieUpdateOption) => {
        if (!cookiePreferences[cookieUpdateOption.cookieName])
            cookiePrefixes.push(...cookieUpdateOption.cookiePrefixes);
    });
    for (let i = 0; i < cookieList.length; i++) {
        const cookieName = cookieList[i];
        if (cookiePrefixes.some((cookiePrefix) => cookieName.startsWith(cookiePrefix)))
            cookiesToRemove.push(cookieName);
    }
    getDomains().forEach((domain) => {
        cookiesToRemove.forEach((cookieName) => { api.remove(cookieName, { path: '/', domain: domain }); });
    });
};

const initGoogleAnalytics = () => {
    loadGoogleTagManager();
    removeUnwantedCookies();
};

function _arrayLikeToArray(r, a) {
  (null == a || a > r.length) && (a = r.length);
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
  return n;
}
function _construct(t, e, r) {
  if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
  var o = [null];
  o.push.apply(o, e);
  var p = new (t.bind.apply(t, o))();
  return r && _setPrototypeOf(p, r.prototype), p;
}
function _defineProperties(e, r) {
  for (var t = 0; t < r.length; t++) {
    var o = r[t];
    o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
  }
}
function _createClass(e, r, t) {
  return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
    writable: false
  }), e;
}
function _createForOfIteratorHelperLoose(r, e) {
  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
  if (t) return (t = t.call(r)).next.bind(t);
  if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
    t && (r = t);
    var o = 0;
    return function () {
      return o >= r.length ? {
        done: true
      } : {
        done: false,
        value: r[o++]
      };
    };
  }
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _getPrototypeOf(t) {
  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
    return t.__proto__ || Object.getPrototypeOf(t);
  }, _getPrototypeOf(t);
}
function _inheritsLoose(t, o) {
  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
}
function _isNativeFunction(t) {
  try {
    return -1 !== Function.toString.call(t).indexOf("[native code]");
  } catch (n) {
    return "function" == typeof t;
  }
}
function _isNativeReflectConstruct() {
  try {
    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
  } catch (t) {}
  return (_isNativeReflectConstruct = function () {
    return !!t;
  })();
}
function _setPrototypeOf(t, e) {
  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
    return t.__proto__ = e, t;
  }, _setPrototypeOf(t, e);
}
function _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);
    if ("object" != typeof i) return i;
    throw new TypeError("@@toPrimitive must return a primitive value.");
  }
  return (String )(t);
}
function _toPropertyKey(t) {
  var i = _toPrimitive(t, "string");
  return "symbol" == typeof i ? i : i + "";
}
function _unsupportedIterableToArray(r, a) {
  if (r) {
    if ("string" == typeof r) return _arrayLikeToArray(r, a);
    var t = {}.toString.call(r).slice(8, -1);
    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) : void 0;
  }
}
function _wrapNativeSuper(t) {
  var r = "function" == typeof Map ? new Map() : void 0;
  return _wrapNativeSuper = function (t) {
    if (null === t || !_isNativeFunction(t)) return t;
    if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
    if (void 0 !== r) {
      if (r.has(t)) return r.get(t);
      r.set(t, Wrapper);
    }
    function Wrapper() {
      return _construct(t, arguments, _getPrototypeOf(this).constructor);
    }
    return Wrapper.prototype = Object.create(t.prototype, {
      constructor: {
        value: Wrapper,
        enumerable: false,
        writable: true,
        configurable: true
      }
    }), _setPrototypeOf(Wrapper, t);
  }, _wrapNativeSuper(t);
}

function isInitialised($root, moduleName) {
  return $root instanceof HTMLElement && $root.hasAttribute("data-" + moduleName + "-init");
}

/**
 * Checks if GOV.UK Frontend is supported on this page
 *
 * Some browsers will load and run our JavaScript but GOV.UK Frontend
 * won't be supported.
 *
 * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
 * @returns {boolean} Whether GOV.UK Frontend is supported on this page
 */
function isSupported($scope) {
  if ($scope === void 0) {
    $scope = document.body;
  }
  if (!$scope) {
    return false;
  }
  return $scope.classList.contains('govuk-frontend-supported');
}
function isArray(option) {
  return Array.isArray(option);
}
function isObject(option) {
  return !!option && typeof option === 'object' && !isArray(option);
}
function formatErrorMessage(Component, message) {
  return Component.moduleName + ": " + message;
}

var GOVUKFrontendError = function (_Error) {
  function GOVUKFrontendError() {
    var _this;
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
    _this = _Error.call.apply(_Error, [this].concat(args)) || this;
    _this.name = 'GOVUKFrontendError';
    return _this;
  }
  _inheritsLoose(GOVUKFrontendError, _Error);
  return GOVUKFrontendError;
}(_wrapNativeSuper(Error));
var SupportError = function (_GOVUKFrontendError) {
  /**
   * Checks if GOV.UK Frontend is supported on this page
   *
   * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
   */
  function SupportError($scope) {
    var _this2;
    if ($scope === void 0) {
      $scope = document.body;
    }
    var supportMessage = 'noModule' in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet' : 'GOV.UK Frontend is not supported in this browser';
    _this2 = _GOVUKFrontendError.call(this, $scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`') || this;
    _this2.name = 'SupportError';
    return _this2;
  }
  _inheritsLoose(SupportError, _GOVUKFrontendError);
  return SupportError;
}(GOVUKFrontendError);
var ConfigError = function (_GOVUKFrontendError2) {
  function ConfigError() {
    var _this3;
    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
      args[_key2] = arguments[_key2];
    }
    _this3 = _GOVUKFrontendError2.call.apply(_GOVUKFrontendError2, [this].concat(args)) || this;
    _this3.name = 'ConfigError';
    return _this3;
  }
  _inheritsLoose(ConfigError, _GOVUKFrontendError2);
  return ConfigError;
}(GOVUKFrontendError);
var ElementError = function (_GOVUKFrontendError3) {
  function ElementError(messageOrOptions) {
    var _this4;
    var message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
    if (typeof messageOrOptions === 'object') {
      var component = messageOrOptions.component,
        identifier = messageOrOptions.identifier,
        element = messageOrOptions.element,
        expectedType = messageOrOptions.expectedType;
      message = identifier;
      message += element ? " is not of type " + (expectedType != null ? expectedType : 'HTMLElement') : ' not found';
      message = formatErrorMessage(component, message);
    }
    _this4 = _GOVUKFrontendError3.call(this, message) || this;
    _this4.name = 'ElementError';
    return _this4;
  }
  _inheritsLoose(ElementError, _GOVUKFrontendError3);
  return ElementError;
}(GOVUKFrontendError);
var InitError = function (_GOVUKFrontendError4) {
  function InitError(componentOrMessage) {
    var _this5;
    var message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, "Root element (`$root`) already initialised");
    _this5 = _GOVUKFrontendError4.call(this, message) || this;
    _this5.name = 'InitError';
    return _this5;
  }
  _inheritsLoose(InitError, _GOVUKFrontendError4);
  return InitError;
}(GOVUKFrontendError);

var Component = function () {
  function Component($root) {
    this._$root = void 0;
    var childConstructor = this.constructor;
    if (typeof childConstructor.moduleName !== 'string') {
      throw new InitError("`moduleName` not defined in component");
    }
    if (!($root instanceof childConstructor.elementType)) {
      throw new ElementError({
        element: $root,
        component: childConstructor,
        identifier: 'Root element (`$root`)',
        expectedType: childConstructor.elementType.name
      });
    } else {
      this._$root = $root;
    }
    childConstructor.checkSupport();
    this.checkInitialised();
    var moduleName = childConstructor.moduleName;
    this.$root.setAttribute("data-" + moduleName + "-init", '');
  }
  var _proto = Component.prototype;
  _proto.checkInitialised = function checkInitialised() {
    var constructor = this.constructor;
    var moduleName = constructor.moduleName;
    if (moduleName && isInitialised(this.$root, moduleName)) {
      throw new InitError(constructor);
    }
  };
  Component.checkSupport = function checkSupport() {
    if (!isSupported()) {
      throw new SupportError();
    }
  };
  return _createClass(Component, [{
    key: "$root",
    get:
    /**
     * Returns the root element of the component
     *
     * @protected
     * @returns {RootElementType} - the root element of component
     */
    function get() {
      return this._$root;
    }
  }]);
}();
/**
 * @typedef ChildClass
 * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
 */
/**
 * @typedef {typeof Component & ChildClass} ChildClassConstructor
 */
Component.elementType = HTMLElement;

var configOverride = Symbol["for"]('configOverride');
var ConfigurableComponent = function (_Component) {
  function ConfigurableComponent($root, config) {
    var _this;
    _this = _Component.call(this, $root) || this;
    _this._config = void 0;
    var childConstructor = _this.constructor;
    if (!isObject(childConstructor.defaults)) {
      throw new ConfigError(formatErrorMessage(childConstructor, 'Config passed as parameter into constructor but no defaults defined'));
    }
    var datasetConfig = normaliseDataset(childConstructor, _this._$root.dataset);
    _this._config = mergeConfigs(childConstructor.defaults, config != null ? config : {}, _this[configOverride](datasetConfig), datasetConfig);
    return _this;
  }
  _inheritsLoose(ConfigurableComponent, _Component);
  var _proto = ConfigurableComponent.prototype;
  _proto[configOverride] = function (param) {
    return {};
  }

  /**
   * Returns the root element of the component
   *
   * @protected
   * @returns {ConfigurationType} - the root element of component
   */;
  return _createClass(ConfigurableComponent, [{
    key: "config",
    get: function get() {
      return this._config;
    }
  }]);
}(Component);
function normaliseString(value, property) {
  var trimmedValue = value ? value.trim() : '';
  var output;
  var outputType = property == null ? void 0 : property.type;
  if (!outputType) {
    if (['true', 'false'].includes(trimmedValue)) {
      outputType = 'boolean';
    }
    if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
      outputType = 'number';
    }
  }
  switch (outputType) {
    case 'boolean':
      output = trimmedValue === 'true';
      break;
    case 'number':
      output = Number(trimmedValue);
      break;
    default:
      output = value;
  }
  return output;
}
function normaliseDataset(Component, dataset) {
  if (!isObject(Component.schema)) {
    throw new ConfigError(formatErrorMessage(Component, 'Config passed as parameter into constructor but no schema defined'));
  }
  var out = {};
  var entries = Object.entries(Component.schema.properties);
  for (var _i = 0, _entries = entries; _i < _entries.length; _i++) {
    var entry = _entries[_i];
    var namespace = entry[0],
      property = entry[1];
    var field = namespace.toString();
    if (field in dataset) {
      out[field] = normaliseString(dataset[field], property);
    }
    if ((property == null ? void 0 : property.type) === 'object') {
      out[field] = extractConfigByNamespace(Component.schema, dataset, namespace);
    }
  }
  return out;
}
function mergeConfigs() {
  var formattedConfigObject = {};
  for (var _len = arguments.length, configObjects = new Array(_len), _key = 0; _key < _len; _key++) {
    configObjects[_key] = arguments[_key];
  }
  for (var _i2 = 0, _configObjects = configObjects; _i2 < _configObjects.length; _i2++) {
    var configObject = _configObjects[_i2];
    for (var _i3 = 0, _Object$keys = Object.keys(configObject); _i3 < _Object$keys.length; _i3++) {
      var key = _Object$keys[_i3];
      var option = formattedConfigObject[key];
      var override = configObject[key];
      if (isObject(option) && isObject(override)) {
        formattedConfigObject[key] = mergeConfigs(option, override);
      } else {
        formattedConfigObject[key] = override;
      }
    }
  }
  return formattedConfigObject;
}
function extractConfigByNamespace(schema, dataset, namespace) {
  var _newObject;
  var property = schema.properties[namespace];
  if ((property == null ? void 0 : property.type) !== 'object') {
    return;
  }
  var newObject = (_newObject = {}, _newObject[namespace] = {}, _newObject);
  for (var _i5 = 0, _Object$entries2 = Object.entries(dataset); _i5 < _Object$entries2.length; _i5++) {
    var _Object$entries2$_i = _Object$entries2[_i5],
      key = _Object$entries2$_i[0],
      value = _Object$entries2$_i[1];
    var current = newObject;
    var keyParts = key.split('.');
    for (var _iterator2 = _createForOfIteratorHelperLoose(keyParts.entries()), _step2; !(_step2 = _iterator2()).done;) {
      var _step2$value = _step2.value,
        index = _step2$value[0],
        name = _step2$value[1];
      if (isObject(current)) {
        if (index < keyParts.length - 1) {
          if (!isObject(current[name])) {
            current[name] = {};
          }
          current = current[name];
        } else if (key !== namespace) {
          current[name] = normaliseString(value);
        }
      }
    }
  }
  return newObject[namespace];
}

var I18n = function () {
  function I18n(translations, config) {
    if (translations === void 0) {
      translations = {};
    }
    if (config === void 0) {
      config = {};
    }
    var _config$locale;
    this.translations = void 0;
    this.locale = void 0;
    this.translations = translations;
    this.locale = (_config$locale = config.locale) != null ? _config$locale : document.documentElement.lang || 'en';
  }
  var _proto = I18n.prototype;
  _proto.t = function t(lookupKey, options) {
    if (!lookupKey) {
      throw new Error('i18n: lookup key missing');
    }
    var translation = this.translations[lookupKey];
    if (typeof (options == null ? void 0 : options.count) === 'number' && typeof translation === 'object') {
      var translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];
      if (translationPluralForm) {
        translation = translationPluralForm;
      }
    }
    if (typeof translation === 'string') {
      if (translation.match(/%{(.\S+)}/)) {
        if (!options) {
          throw new Error('i18n: cannot replace placeholders in string if no option data provided');
        }
        return this.replacePlaceholders(translation, options);
      }
      return translation;
    }
    return lookupKey;
  };
  _proto.replacePlaceholders = function replacePlaceholders(translationString, options) {
    var formatter = Intl.NumberFormat.supportedLocalesOf(this.locale).length ? new Intl.NumberFormat(this.locale) : undefined;
    return translationString.replace(/%{(.\S+)}/g, function (placeholderWithBraces, placeholderKey) {
      if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {
        var placeholderValue = options[placeholderKey];
        if (placeholderValue === false || typeof placeholderValue !== 'number' && typeof placeholderValue !== 'string') {
          return '';
        }
        if (typeof placeholderValue === 'number') {
          return formatter ? formatter.format(placeholderValue) : "" + placeholderValue;
        }
        return placeholderValue;
      }
      throw new Error("i18n: no data found to replace " + placeholderWithBraces + " placeholder in string");
    });
  };
  _proto.hasIntlPluralRulesSupport = function hasIntlPluralRulesSupport() {
    return Boolean('PluralRules' in window.Intl && Intl.PluralRules.supportedLocalesOf(this.locale).length);
  };
  _proto.getPluralSuffix = function getPluralSuffix(lookupKey, count) {
    count = Number(count);
    if (!isFinite(count)) {
      return 'other';
    }
    var translation = this.translations[lookupKey];
    var preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : this.selectPluralFormUsingFallbackRules(count);
    if (typeof translation === 'object') {
      if (preferredForm in translation) {
        return preferredForm;
      } else if ('other' in translation) {
        console.warn("i18n: Missing plural form \"." + preferredForm + "\" for \"" + this.locale + "\" locale. Falling back to \".other\".");
        return 'other';
      }
    }
    throw new Error("i18n: Plural form \".other\" is required for \"" + this.locale + "\" locale");
  };
  _proto.selectPluralFormUsingFallbackRules = function selectPluralFormUsingFallbackRules(count) {
    count = Math.abs(Math.floor(count));
    var ruleset = this.getPluralRulesForLocale();
    if (ruleset) {
      return I18n.pluralRules[ruleset](count);
    }
    return 'other';
  };
  _proto.getPluralRulesForLocale = function getPluralRulesForLocale() {
    var localeShort = this.locale.split('-')[0];
    for (var pluralRule in I18n.pluralRulesMap) {
      var languages = I18n.pluralRulesMap[pluralRule];
      if (languages.includes(this.locale) || languages.includes(localeShort)) {
        return pluralRule;
      }
    }
  };
  return I18n;
}();
I18n.pluralRulesMap = {
  arabic: ['ar'],
  chinese: ['my', 'zh', 'id', 'ja', 'jv', 'ko', 'ms', 'th', 'vi'],
  french: ['hy', 'bn', 'fr', 'gu', 'hi', 'fa', 'pa', 'zu'],
  german: ['af', 'sq', 'az', 'eu', 'bg', 'ca', 'da', 'nl', 'en', 'et', 'fi', 'ka', 'de', 'el', 'hu', 'lb', 'no', 'so', 'sw', 'sv', 'ta', 'te', 'tr', 'ur'],
  irish: ['ga'],
  russian: ['ru', 'uk'],
  scottish: ['gd'],
  spanish: ['pt-PT', 'it', 'es'],
  welsh: ['cy']
};
I18n.pluralRules = {
  arabic: function arabic(n) {
    if (n === 0) {
      return 'zero';
    }
    if (n === 1) {
      return 'one';
    }
    if (n === 2) {
      return 'two';
    }
    if (n % 100 >= 3 && n % 100 <= 10) {
      return 'few';
    }
    if (n % 100 >= 11 && n % 100 <= 99) {
      return 'many';
    }
    return 'other';
  },
  chinese: function chinese() {
    return 'other';
  },
  french: function french(n) {
    return n === 0 || n === 1 ? 'one' : 'other';
  },
  german: function german(n) {
    return n === 1 ? 'one' : 'other';
  },
  irish: function irish(n) {
    if (n === 1) {
      return 'one';
    }
    if (n === 2) {
      return 'two';
    }
    if (n >= 3 && n <= 6) {
      return 'few';
    }
    if (n >= 7 && n <= 10) {
      return 'many';
    }
    return 'other';
  },
  russian: function russian(n) {
    var lastTwo = n % 100;
    var last = lastTwo % 10;
    if (last === 1 && lastTwo !== 11) {
      return 'one';
    }
    if (last >= 2 && last <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {
      return 'few';
    }
    if (last === 0 || last >= 5 && last <= 9 || lastTwo >= 11 && lastTwo <= 14) {
      return 'many';
    }
    return 'other';
  },
  scottish: function scottish(n) {
    if (n === 1 || n === 11) {
      return 'one';
    }
    if (n === 2 || n === 12) {
      return 'two';
    }
    if (n >= 3 && n <= 10 || n >= 13 && n <= 19) {
      return 'few';
    }
    return 'other';
  },
  spanish: function spanish(n) {
    if (n === 1) {
      return 'one';
    }
    if (n % 1000000 === 0 && n !== 0) {
      return 'many';
    }
    return 'other';
  },
  welsh: function welsh(n) {
    if (n === 0) {
      return 'zero';
    }
    if (n === 1) {
      return 'one';
    }
    if (n === 2) {
      return 'two';
    }
    if (n === 3) {
      return 'few';
    }
    if (n === 6) {
      return 'many';
    }
    return 'other';
  }
};

function closestAttributeValue($element, attributeName) {
  var $closestElementWithAttribute = $element.closest("[" + attributeName + "]");
  return $closestElementWithAttribute ? $closestElementWithAttribute.getAttribute(attributeName) : null;
}

/**
 * File upload component
 *
 * @preserve
 * @augments ConfigurableComponent<FileUploadConfig>
 */
var FileUpload = function (_ConfigurableComponen) {
  /**
   * @param {Element | null} $root - File input element
   * @param {FileUploadConfig} [config] - File Upload config
   */
  function FileUpload($root, config) {
    var _this;
    if (config === void 0) {
      config = {};
    }
    _this = _ConfigurableComponen.call(this, $root, config) || this;
    _this.$input = void 0;
    _this.$button = void 0;
    _this.$status = void 0;
    _this.i18n = void 0;
    _this.id = void 0;
    _this.$announcements = void 0;
    _this.enteredAnotherElement = void 0;
    var $input = _this.$root.querySelector('input');
    if ($input === null) {
      throw new ElementError({
        component: FileUpload,
        identifier: 'File inputs (`<input type="file">`)'
      });
    }
    if ($input.type !== 'file') {
      throw new ElementError(formatErrorMessage(FileUpload, 'File input (`<input type="file">`) attribute (`type`) is not `file`'));
    }
    _this.$input = $input;
    _this.$input.setAttribute('hidden', 'true');
    if (!_this.$input.id) {
      throw new ElementError({
        component: FileUpload,
        identifier: 'File input (`<input type="file">`) attribute (`id`)'
      });
    }
    _this.id = _this.$input.id;
    _this.i18n = new I18n(_this.config.i18n, {
      locale: closestAttributeValue(_this.$root, 'lang')
    });
    var $label = _this.findLabel();
    if (!$label.id) {
      $label.id = _this.id + "-label";
    }
    _this.$input.id = _this.id + "-input";
    var $button = document.createElement('button');
    $button.classList.add('govuk-file-upload-button');
    $button.type = 'button';
    $button.id = _this.id;
    $button.classList.add('govuk-file-upload-button--empty');
    var ariaDescribedBy = _this.$input.getAttribute('aria-describedby');
    if (ariaDescribedBy) {
      $button.setAttribute('aria-describedby', ariaDescribedBy);
    }
    var $status = document.createElement('span');
    $status.className = 'govuk-body govuk-file-upload-button__status';
    $status.setAttribute('aria-live', 'polite');
    $status.innerText = _this.i18n.t('noFileChosen');
    $button.appendChild($status);
    var commaSpan = document.createElement('span');
    commaSpan.className = 'govuk-visually-hidden';
    commaSpan.innerText = ', ';
    commaSpan.id = _this.id + "-comma";
    $button.appendChild(commaSpan);
    var containerSpan = document.createElement('span');
    containerSpan.className = 'govuk-file-upload-button__pseudo-button-container';
    var buttonSpan = document.createElement('span');
    buttonSpan.className = 'govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button';
    buttonSpan.innerText = _this.i18n.t('chooseFilesButton');
    containerSpan.appendChild(buttonSpan);
    containerSpan.insertAdjacentText('beforeend', ' ');
    var instructionSpan = document.createElement('span');
    instructionSpan.className = 'govuk-body govuk-file-upload-button__instruction';
    instructionSpan.innerText = _this.i18n.t('dropInstruction');
    containerSpan.appendChild(instructionSpan);
    $button.appendChild(containerSpan);
    $button.setAttribute('aria-labelledby', $label.id + " " + commaSpan.id + " " + $button.id);
    $button.addEventListener('click', _this.onClick.bind(_this));
    $button.addEventListener('dragover', function (event) {
      event.preventDefault();
    });
    _this.$root.insertAdjacentElement('afterbegin', $button);
    _this.$input.setAttribute('tabindex', '-1');
    _this.$input.setAttribute('aria-hidden', 'true');
    _this.$button = $button;
    _this.$status = $status;
    _this.$input.addEventListener('change', _this.onChange.bind(_this));
    _this.updateDisabledState();
    _this.observeDisabledState();
    _this.$announcements = document.createElement('span');
    _this.$announcements.classList.add('govuk-file-upload-announcements');
    _this.$announcements.classList.add('govuk-visually-hidden');
    _this.$announcements.setAttribute('aria-live', 'assertive');
    _this.$root.insertAdjacentElement('afterend', _this.$announcements);
    _this.$button.addEventListener('drop', _this.onDrop.bind(_this));
    document.addEventListener('dragenter', _this.updateDropzoneVisibility.bind(_this));
    document.addEventListener('dragenter', function () {
      _this.enteredAnotherElement = true;
    });
    document.addEventListener('dragleave', function () {
      if (!_this.enteredAnotherElement && !_this.$button.disabled) {
        _this.hideDraggingState();
        _this.$announcements.innerText = _this.i18n.t('leftDropZone');
      }
      _this.enteredAnotherElement = false;
    });
    return _this;
  }
  _inheritsLoose(FileUpload, _ConfigurableComponen);
  var _proto = FileUpload.prototype;
  _proto.updateDropzoneVisibility = function updateDropzoneVisibility(event) {
    if (this.$button.disabled) return;
    if (event.target instanceof Node) {
      if (this.$root.contains(event.target)) {
        if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {
          if (!this.$button.classList.contains('govuk-file-upload-button--dragging')) {
            this.showDraggingState();
            this.$announcements.innerText = this.i18n.t('enteredDropZone');
          }
        }
      } else {
        if (this.$button.classList.contains('govuk-file-upload-button--dragging')) {
          this.hideDraggingState();
          this.$announcements.innerText = this.i18n.t('leftDropZone');
        }
      }
    }
  };
  _proto.showDraggingState = function showDraggingState() {
    this.$button.classList.add('govuk-file-upload-button--dragging');
  };
  _proto.hideDraggingState = function hideDraggingState() {
    this.$button.classList.remove('govuk-file-upload-button--dragging');
  };
  _proto.onDrop = function onDrop(event) {
    event.preventDefault();
    if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {
      this.$input.files = event.dataTransfer.files;
      this.$input.dispatchEvent(new CustomEvent('change'));
      this.hideDraggingState();
    }
  };
  _proto.onChange = function onChange() {
    var fileCount = this.$input.files.length;
    if (fileCount === 0) {
      this.$status.innerText = this.i18n.t('noFileChosen');
      this.$button.classList.add('govuk-file-upload-button--empty');
    } else {
      if (fileCount === 1) {
        this.$status.innerText = this.$input.files[0].name;
      } else {
        this.$status.innerText = this.i18n.t('multipleFilesChosen', {
          count: fileCount
        });
      }
      this.$button.classList.remove('govuk-file-upload-button--empty');
    }
  };
  _proto.findLabel = function findLabel() {
    var $label = document.querySelector("label[for=\"" + this.$input.id + "\"]");
    if (!$label) {
      throw new ElementError({
        component: FileUpload,
        identifier: "Field label (`<label for=" + this.$input.id + ">`)"
      });
    }
    return $label;
  };
  _proto.onClick = function onClick() {
    this.$input.click();
  };
  _proto.observeDisabledState = function observeDisabledState() {
    var _this2 = this;
    var observer = new MutationObserver(function (mutationList) {
      for (var _iterator = _createForOfIteratorHelperLoose(mutationList), _step; !(_step = _iterator()).done;) {
        var mutation = _step.value;
        if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {
          _this2.updateDisabledState();
        }
      }
    });
    observer.observe(this.$input, {
      attributes: true
    });
  };
  _proto.updateDisabledState = function updateDisabledState() {
    this.$button.disabled = this.$input.disabled;
    this.$root.classList.toggle('govuk-drop-zone--disabled', this.$button.disabled);
  };
  return FileUpload;
}(ConfigurableComponent);
FileUpload.moduleName = 'govuk-file-upload';
FileUpload.defaults = Object.freeze({
  i18n: {
    chooseFilesButton: 'Choose file',
    dropInstruction: 'or drop file',
    noFileChosen: 'No file chosen',
    multipleFilesChosen: {
      one: '%{count} file chosen',
      other: '%{count} files chosen'
    },
    enteredDropZone: 'Entered drop zone',
    leftDropZone: 'Left drop zone'
  }
});
FileUpload.schema = Object.freeze({
  properties: {
    i18n: {
      type: 'object'
    }
  }
});
function isContainingFiles(dataTransfer) {
  var hasNoTypesInfo = dataTransfer.types.length === 0;
  var isDraggingFiles = dataTransfer.types.some(function (type) {
    return type === 'Files';
  });
  return hasNoTypesInfo || isDraggingFiles;
}

class ComplianceCommunicationAttachmentListRowFileInput {
    $dropZone;
    $input;
    $label;
    $hint;
    $button;
    $comma;
    $announcements;
    constructor($row, column) {
        const $column = $row.find(`.govuk-grid-column-one-half:nth-of-type(${column})`);
        this.$dropZone = $column.find('.govuk-drop-zone');
        this.$input = $column.find('input');
        this.$label = $column.find('.govuk-label');
        this.$hint = $column.find('div.govuk-hint');
        this.$button = $column.find('button');
        this.$comma = $column.find('button > span.govuk-visually-hidden');
        this.$announcements = $column.find('span.govuk-file-upload-announcements');
    }
    updateIndex(newIndex) {
        const newName = this.$input.attr('name').replace(/\d+/, newIndex.toString());
        const newId = `input-${newName}`;
        if (this.$button.length) {
            this.$label.attr('for', newId);
            this.$label.attr('id', `${newId}-label`);
            this.$hint.attr('id', `${newId}-hint`);
            this.$input.attr('id', `${newId}-input`);
            this.$input.attr('name', newName);
            this.$input.attr('aria-describedby', `${newId}-hint`);
            this.$button.attr('id', newId);
            this.$button.attr('aria-describedby', `${newId}-hint`);
            this.$button.attr('aria-labelledby', `${newId}-label ${newId}-comma ${newId}`);
            this.$comma.attr('id', `${newId}-comma`);
        }
        else {
            this.$label.attr('for', newId);
            this.$hint.attr('id', `${newId}-hint`);
            this.$input.attr('id', newId);
            this.$input.attr('name', newName);
            this.$input.attr('aria-describedby', `${newId}-hint`);
        }
    }
    makeInteractable() {
        if (!this.$button.length) {
            return new FileUpload(this.$dropZone.get(0));
        }
    }
    resetHtml() {
        this.$label.removeAttr('id');
        this.$dropZone.removeAttr('data-govuk-file-upload-init');
        this.$button.remove();
        const id = this.$input.attr('id');
        this.$input.removeAttr('hidden');
        this.$input.removeAttr('aria-hidden');
        this.$input.attr('id', id.substring(0, id.length - 6));
        this.$announcements.remove();
    }
}
class ComplianceCommunicationAttachmentListRequiredInput {
    $requiredSection;
    $input;
    $label;
    constructor($row) {
        this.$requiredSection = $row.find('.dm-compliance-communication__attachments-item-required');
        this.$input = this.$requiredSection.find('.govuk-checkboxes__item > input');
        this.$label = this.$requiredSection.find('.govuk-checkboxes__item > .govuk-label');
    }
    isChecked() {
        return this.$input.is(':checked');
    }
    updateIndex(newIndex) {
        const newName = this.$input.attr('name').replace(/\d+/, newIndex.toString());
        const newId = `input-${newName}`;
        this.$label.attr('for', newId);
        this.$input.attr('id', newId);
        this.$input.attr('name', newName);
    }
    checkRow() {
        this.$requiredSection.toggleClass('govuk-visually-hidden', true);
        this.$input.prop('checked', true);
        this.$input.attr('tabindex', -1);
        this.$input.attr('tabindex', -1);
    }
}
class ComplianceCommunicationAttachmentListRowRemoveButton {
    attachmentListRow;
    $button;
    $removeButtonCounter;
    constructor(attachmentListRow, $row) {
        this.attachmentListRow = attachmentListRow;
        this.$button = $row.find('.dm-compliance-communication__attachments-item-remove');
        this.$removeButtonCounter = this.$button.find('.dm-compliance-communication__attachments-item-remove-counter');
    }
    init() {
        this.toggleVisibility(true);
        this.$button.on('click', () => {
            this.attachmentListRow.removeRow();
        });
    }
    toggleVisibility(isShown) {
        this.$button.toggleClass('govuk-visually-hidden', !isShown);
        if (isShown) {
            this.$button.removeAttr('tabindex');
        }
        else {
            this.$button.attr('tabindex', -1);
        }
    }
    updateIndex(newIndex) {
        this.$removeButtonCounter.text(newIndex + 1);
    }
}
class ComplianceCommunicationAttachmentListRow {
    $row;
    attachmentList;
    index;
    $legendCounter;
    attachmentListRowFileInput;
    attachmentListRowRequiredInput;
    attachmentListRowRemoveButton;
    constructor(attachmentList, index, $row) {
        this.$row = $row;
        this.attachmentList = attachmentList;
        this.index = index;
        this.$legendCounter = this.$row.find('.dm-compliance-communication__attachments-item-legend-counter');
        this.attachmentListRowFileInput = new ComplianceCommunicationAttachmentListRowFileInput($row, 1);
        this.attachmentListRowRequiredInput = new ComplianceCommunicationAttachmentListRequiredInput($row);
        this.attachmentListRowRemoveButton = new ComplianceCommunicationAttachmentListRowRemoveButton(this, $row);
    }
    init() {
        this.attachmentListRowRemoveButton.init();
        this.attachmentListRowFileInput.makeInteractable();
        this.attachmentListRowRequiredInput.checkRow();
    }
    updateIndex(newIndex) {
        this.index = newIndex;
        this.attachmentListRowFileInput.updateIndex(newIndex);
        this.attachmentListRowRequiredInput.updateIndex(newIndex);
        this.attachmentListRowRemoveButton.updateIndex(newIndex);
        this.$legendCounter.text(newIndex + 1);
    }
    removeRow() {
        this.attachmentList.removeRow(this.index);
        this.deleteRow();
    }
    deleteRow() {
        this.$row.remove();
    }
    toggleRemoveButtonVisibility(isShown) {
        this.attachmentListRowRemoveButton.toggleVisibility(isShown);
    }
    isRowChecked() {
        return this.attachmentListRowRequiredInput.isChecked();
    }
}
class ComplianceCommunicationAttachmentListAddButton {
    attachmentList;
    $button;
    $buttonCounter;
    constructor(attachmentList, $button) {
        this.attachmentList = attachmentList;
        this.$button = $button;
        this.$buttonCounter = $button.find('.dm-compliance-communication__attachments__js-remaining-counter');
    }
    init(numberOfRows) {
        this.$button.on('click', () => {
            this.attachmentList.addRow();
        });
        this.updateButtonText(this.attachmentList.maxNumberOfAttachments - numberOfRows);
    }
    updateButtonText(numberRemaining) {
        this.$buttonCounter.text(numberRemaining);
    }
    toggleVisibility(isShown) {
        this.$button.toggleClass('govuk-visually-hidden', !isShown);
        if (isShown) {
            this.$button.removeAttr('tabindex');
        }
        else {
            this.$button.attr('tabindex', -1);
        }
    }
}
class ComplianceCommunicationAttachments {
    static moduleName = 'dm-compliance-communication-attachments';
    $attachmentList;
    $attachmentListItems;
    attachmentListRows;
    attachmentListTemplateRow;
    attachmentListAddButton;
    maxNumberOfAttachments;
    constructor($attachmentList) {
        this.$attachmentList = $attachmentList;
        this.$attachmentListItems = this.$attachmentList.find('.dm-compliance-communication__attachments-items');
        this.attachmentListRows = this.$attachmentListItems.find('.dm-compliance-communication__attachments-item').get().map((row, index) => new ComplianceCommunicationAttachmentListRow(this, index, $(row)));
        this.attachmentListTemplateRow = new ComplianceCommunicationAttachmentListRow(this, 99, this.$attachmentList.find('.dm-compliance-communication__attachments-item-template > .dm-compliance-communication__attachments-item'));
        this.attachmentListAddButton = new ComplianceCommunicationAttachmentListAddButton(this, this.$attachmentList.find('.dm-compliance-communication__attachments-add'));
        this.maxNumberOfAttachments = this.$attachmentList.data('maxNumberOfAttachments');
    }
    init() {
        const rowsChecked = this.attachmentListRows.map((attachmentListRow) => attachmentListRow.isRowChecked());
        let indexToDeleteFrom;
        if (rowsChecked.every((rowChecked) => !rowChecked)) {
            indexToDeleteFrom = 0;
        }
        else {
            indexToDeleteFrom = rowsChecked.indexOf(false);
        }
        if (indexToDeleteFrom >= 0) {
            this.attachmentListRows.slice(indexToDeleteFrom).forEach((attachmentListRow) => attachmentListRow.deleteRow());
            this.attachmentListRows.splice(indexToDeleteFrom);
        }
        this.attachmentListAddButton.init(this.attachmentListRows.length);
        this.attachmentListRows.forEach((attachmentListRow) => attachmentListRow.init());
        this.attachmentListTemplateRow.attachmentListRowFileInput.resetHtml();
        this.updateIfMinRows();
        this.updateAttachmentButton();
    }
    removeRow(indexToRemove) {
        this.attachmentListRows.splice(indexToRemove, 1);
        this.attachmentListRows.slice(indexToRemove).forEach((attachmentListRow, index) => {
            attachmentListRow.updateIndex(indexToRemove + index);
        });
        this.updateIfMinRows();
        this.updateAttachmentButton();
        if (indexToRemove > 0) {
            this.focusOnRow(indexToRemove);
        }
        else {
            this.attachmentListAddButton.$button.focus();
        }
    }
    addRow() {
        const numberOfRows = this.attachmentListRows.length;
        if (numberOfRows < this.maxNumberOfAttachments) {
            const $newRow = this.attachmentListTemplateRow.$row.clone();
            const attachmentListRow = new ComplianceCommunicationAttachmentListRow(this, numberOfRows, $newRow);
            attachmentListRow.updateIndex(numberOfRows);
            this.attachmentListRows.push(attachmentListRow);
            this.$attachmentListItems.append($newRow);
            this.attachmentListRows[numberOfRows].init();
            this.updateIfMinRows();
            this.updateAttachmentButton();
            this.focusOnRow(numberOfRows);
        }
    }
    updateIfMinRows() {
        if (this.attachmentListRows.length !== 0) {
            this.attachmentListRows[0].toggleRemoveButtonVisibility(true);
        }
    }
    updateAttachmentButton() {
        if (this.attachmentListRows.length === this.maxNumberOfAttachments) {
            this.attachmentListAddButton.toggleVisibility(false);
        }
        else {
            this.attachmentListAddButton.toggleVisibility(true);
            this.attachmentListAddButton.updateButtonText(this.maxNumberOfAttachments - this.attachmentListRows.length);
        }
    }
    focusOnRow(targetIndexToFocus) {
        const numberOfRows = this.attachmentListRows.length;
        let indexToFocus = targetIndexToFocus;
        if (targetIndexToFocus >= numberOfRows) {
            indexToFocus = numberOfRows - 1;
        }
        this.attachmentListRows[indexToFocus].attachmentListRowFileInput.$button.focus();
    }
}

class CookieBanner {
    static moduleName = 'dm-cookie-banner';
    $module;
    $cookieBannerMainContent;
    $cookieBannerConfirmationContent;
    $cookieBannerConfirmationMessage;
    $hideLink;
    $acceptCookiesLink;
    $rejectCookiesLink;
    constructor($module) {
        this.$module = $module;
        this.$cookieBannerMainContent = this.$module.find('.dm-cookie-banner__button--main');
        this.$cookieBannerConfirmationContent = this.$module.find('.dm-cookie-banner--selection-made');
        this.$cookieBannerConfirmationMessage = this.$module.find('.dm-cookie-banner__confirmation-message');
        this.$hideLink = this.$module.find('button[data-hide-cookie-banner]');
        this.$acceptCookiesLink = this.$module.find('button[data-accept-cookies=true]');
        this.$rejectCookiesLink = this.$module.find('button[data-accept-cookies=false]');
    }
    init() {
        this.$hideLink.on('click', (event) => {
            this.hideCookieMessage(event);
        });
        this.$acceptCookiesLink.on('click', () => {
            this.setCookieConsent(true);
        });
        this.$rejectCookiesLink.on('click', () => {
            this.setCookieConsent(false);
        });
        this.showCookieMessage();
    }
    setCookieConsent(analyticsConsent) {
        setCookiePreferences(analyticsConsent);
        this.showConfirmationMessage(analyticsConsent);
        this.$cookieBannerConfirmationContent.trigger('focus');
    }
    showCookieMessage() {
        // Show the cookie banner if policy cookie not set
        const cookiePreferences = getCookiePreferences();
        if (this.$module && !cookiePreferences.settings_viewed) {
            this.$module.css('display', 'block');
        }
    }
    hideCookieMessage(event) {
        this.$module.css('display', 'none');
        if (event.target) {
            event.preventDefault();
        }
    }
    showConfirmationMessage(analyticsConsent) {
        const messagePrefix = analyticsConsent ? 'You’ve accepted analytics cookies.' : 'You told us not to use analytics cookies.';
        this.$cookieBannerMainContent.attr('hidden', 'hidden');
        this.$cookieBannerConfirmationMessage.prepend(messagePrefix);
        this.$cookieBannerConfirmationContent.removeAttr('hidden');
    }
}

class CookieSettings {
    static moduleName = 'dm-cookie-settings';
    $moudle;
    $radioButtonAnalyticsYes;
    $radioButtonAnalyticsNo;
    $confirmationMessage;
    $previousPageLink;
    $errorSummary;
    $formGroup;
    $warningMessage;
    $cookieBanner;
    constructor($module) {
        this.$moudle = $module;
        this.$radioButtonAnalyticsYes = this.$moudle.find('input[name=cookies-analytics][value=On]');
        this.$radioButtonAnalyticsNo = this.$moudle.find('input[name=cookies-analytics][value=Off]');
        this.$confirmationMessage = $('#dm-cookie-settings-confirmation');
        this.$previousPageLink = $('.dm-cookie-settings__prev-page');
        this.$errorSummary = $('#dm-cookie-settings-error');
        this.$formGroup = this.$moudle.find('.govuk-form-group');
        this.$warningMessage = $('#dm-cookie-settings-warning');
        this.$cookieBanner = $('.dm-cookie-banner');
    }
    init() {
        this.$moudle.on('submit', (event) => {
            this.submitSettingsForm(event);
        });
        // Ensure there aren't two forms for setting cookie preferences on the same page
        this.hideCookieBanner();
        this.setInitialFormValues();
    }
    setInitialFormValues() {
        const currentCookiePreferences = getCookiePreferences();
        if (!currentCookiePreferences.settings_viewed)
            return;
        this.hideWarningMessage();
        // Populate the form with the existing choice
        let $radioButton;
        if (currentCookiePreferences.usage) {
            $radioButton = this.$radioButtonAnalyticsYes;
        }
        else {
            $radioButton = this.$radioButtonAnalyticsNo;
        }
        $radioButton.prop('checked', true);
    }
    submitSettingsForm(event) {
        event.preventDefault();
        let usage;
        for (const formDataItem of this.$moudle.serializeArray()) {
            if (formDataItem.name === 'cookies-analytics') {
                usage = formDataItem.value === 'On';
                break;
            }
        }
        // the cookie choice must be set when form is submitted
        if (usage === undefined) {
            this.showError();
            return;
        }
        // Set the analytics cookie preferences
        // If 'Off' option not checked, this function will also delete any existing Google Analytics cookies
        setCookiePreferences(usage);
        this.hideWarningMessage();
        this.hideError();
        this.showConfirmationMessage();
    }
    showConfirmationMessage() {
        const referrer = CookieSettings.getReferrerLink();
        document.body.scrollTop = document.documentElement.scrollTop = 0;
        if (referrer && referrer !== document.location.pathname) {
            this.$previousPageLink.attr('href', referrer);
            this.$previousPageLink.css('display', 'block');
        }
        else {
            this.$previousPageLink.css('display', 'none');
        }
        this.$confirmationMessage.css('display', 'block');
    }
    showError() {
        if (this.$errorSummary.length) {
            this.$errorSummary.css('display', 'block');
            document.body.scrollTop = document.documentElement.scrollTop = 0;
        }
        this.showErrorMessage();
    }
    showErrorMessage() {
        this.$formGroup.addClass('govuk-form-group--error');
        const $errorMessageSpan = $(document.createElement('p'));
        $errorMessageSpan.attr('id', 'dm-cookie-settings-error-message');
        $errorMessageSpan.addClass('govuk-error-message');
        $errorMessageSpan.html('<span class="govuk-visually-hidden">Error:</span> Select yes to accept analytics cookies');
        $errorMessageSpan.insertBefore('#cookie-settings-1, .govuk-radios--inline');
    }
    hideError() {
        this.$errorSummary.css('display', 'none');
        this.hideErrorMessage();
    }
    hideErrorMessage() {
        const $errorMessage = this.$moudle.find('#dm-cookie-settings-error-message');
        $errorMessage.css('display', 'none');
        this.$formGroup.removeClass('govuk-form-group--error');
    }
    hideWarningMessage() {
        this.$warningMessage.css('display', 'none');
    }
    hideCookieBanner() {
        this.$cookieBanner.css('display', 'none');
    }
    static getReferrerLink() {
        return document.referrer ? new URL(document.referrer).pathname : false;
    }
}

class ListInput {
    static moduleName = 'dm-list-input';
    static itemContainerClass = 'dm-list-input__item-container';
    static hiddenItemClass = 'dm-list-input__item--hidden';
    static visibleItemClass = 'dm-list-input__item--visible';
    static itemInputClass = 'dm-list-input__item-input';
    static itemErrorClass = 'dm-list-input__item--error';
    static itemErrorMsgClass = 'dm-list-input-error-message';
    static itemCounterClass = 'dm-list-input__counter';
    static inputErrorClass = 'govuk-input--error';
    static removeButtonClass = 'dm-list-input__item-remove';
    static hiddenRemoveButtonClass = 'dm-list-input__item-remove--hidden';
    static formGroupErrorClass = 'govuk-form-group--error';
    static hiddenAddButtonClass = 'dm-list-input__item-add--hidden';
    static addButtonRemainingClass = 'dm-list-input__js-remaining-counter';
    $module;
    $allVisibleItems;
    $addAnotherButton;
    $allItems;
    constructor($module) {
        this.$module = $module;
        this.$allVisibleItems = this.findVisibleItems();
        this.$addAnotherButton = this.$module.find('.dm-list-input__item-add');
        this.$allItems = this.$module.find('.dm-list-input__item');
    }
    init() {
        this.hideEmptyItems();
        this.updateAllCounters();
        this.addRemoveClickEvent();
        this.toggleAddAnotherButton();
        this.addAddClickEvent();
    }
    findVisibleItems() {
        return this.$module.find('.dm-list-input__item--visible');
    }
    // Hide all items that do not have a value (except for the first one, or the first two if no items have a value)
    hideEmptyItems() {
        let numberOfVisibleEmptyItems = 0;
        let numberOfFilledInItems = 0;
        this.$allItems.each((_index, item) => {
            const $item = $(item);
            const $input = $item.find('.' + ListInput.itemInputClass);
            const $removeButton = $item.find('.' + ListInput.removeButtonClass);
            if (!$input.attr('value')) {
                if (numberOfVisibleEmptyItems === 0) {
                    $removeButton.removeClass(ListInput.hiddenRemoveButtonClass);
                }
                else if (numberOfVisibleEmptyItems === 1 && numberOfFilledInItems === 0) {
                    $removeButton.removeClass(ListInput.hiddenRemoveButtonClass);
                }
                else {
                    $item.addClass(ListInput.hiddenItemClass);
                    $item.removeClass(ListInput.visibleItemClass);
                    $removeButton.addClass(ListInput.hiddenRemoveButtonClass);
                    $input.attr('disabled', 'true');
                }
                numberOfVisibleEmptyItems += 1;
            }
            else {
                $item.removeClass(ListInput.hiddenItemClass);
                $item.addClass(ListInput.visibleItemClass);
                $removeButton.removeClass(ListInput.hiddenRemoveButtonClass);
                numberOfFilledInItems += 1;
            }
        });
        this.$allVisibleItems = this.findVisibleItems();
    }
    // Adds an event listener to module to listen for any
    // click events fired by the items "Remove" button
    addRemoveClickEvent() {
        this.$allItems.each((_index, item) => {
            const $item = $(item);
            const $input = $item.find('.' + ListInput.itemInputClass);
            const $removeButton = $item.find('.' + ListInput.removeButtonClass);
            $removeButton.on('click', () => {
                $input.val('');
                $input.removeAttr('value');
                $input.attr('disabled', 'true');
                $removeButton.addClass(ListInput.hiddenRemoveButtonClass);
                $item.addClass(ListInput.hiddenItemClass);
                $item.removeClass(ListInput.visibleItemClass);
                this.$allVisibleItems = this.findVisibleItems();
                if ($item.hasClass(ListInput.itemErrorClass)) {
                    $item.removeClass(ListInput.itemErrorClass);
                    const $errorFormGroup = $item.find('.' + ListInput.formGroupErrorClass);
                    $errorFormGroup.removeClass(ListInput.formGroupErrorClass);
                    $errorFormGroup.remove('.' + ListInput.itemErrorMsgClass);
                    const $errorInput = $errorFormGroup.find('.' + ListInput.inputErrorClass);
                    const inputId = $errorInput.attr('id');
                    const inputDescribedBy = $errorInput.attr('aria-describedby');
                    $errorInput.attr('aria-describedby', inputDescribedBy.replace(inputId + '-error', ''));
                    $errorInput.removeClass(ListInput.inputErrorClass);
                }
                // Hide Remove buttons if there is only one item left
                if (this.$allVisibleItems.length === 1) {
                    const $removeButtons = this.$module.find('.' + ListInput.removeButtonClass);
                    $removeButtons.each((_index, button) => {
                        $(button).addClass(ListInput.hiddenRemoveButtonClass);
                    });
                    $(this.$allVisibleItems.get(0)).find('input').trigger('focus');
                }
                else {
                    // Set focus to the next input
                    const $nextVisibleItem = ListInput.getSibling('next', $item, '.' + ListInput.visibleItemClass);
                    if ($nextVisibleItem) {
                        $nextVisibleItem.find('input').trigger('focus');
                    }
                    else {
                        const $previousVisibleItem = ListInput.getSibling('previous', $item, '.' + ListInput.visibleItemClass);
                        $previousVisibleItem.find('input').trigger('focus');
                    }
                }
                this.updateAllCounters();
                this.toggleAddAnotherButton();
            });
        });
    }
    // Used to update each item's label and remove button hidden text
    updateCounters() {
        this.$allVisibleItems.each((index, item) => {
            $(item).find('.' + ListInput.itemCounterClass).each((_index, counter) => {
                $(counter).text(index + 1);
            });
        });
    }
    // Used to update "Add another" buttons "Remaining" counter
    // and sets focus to the new additional input
    updateRemainingCounter() {
        const $visibleItems = this.$allVisibleItems;
        const totalItems = this.$allItems.length;
        this.$module.find('.' + ListInput.addButtonRemainingClass).text(totalItems - $visibleItems.length);
    }
    addAddClickEvent() {
        this.$addAnotherButton.on('click', () => {
            const $firstHiddenItem = this.$module.find('.' + ListInput.hiddenItemClass).first();
            const $firstHiddenInput = $firstHiddenItem.find('.' + ListInput.itemInputClass);
            if ($firstHiddenItem.length) {
                $firstHiddenInput.removeAttr('disabled');
                this.$module.find('.' + ListInput.itemContainerClass).append($firstHiddenItem);
                $firstHiddenItem.removeClass(ListInput.hiddenItemClass);
                $firstHiddenItem.addClass(ListInput.visibleItemClass);
                this.$allVisibleItems = this.findVisibleItems();
                this.updateAllCounters();
                $firstHiddenItem.find('.' + ListInput.removeButtonClass).removeClass(ListInput.hiddenRemoveButtonClass);
                $firstHiddenInput.trigger('focus');
                this.toggleAddAnotherButton();
                // Show Remove buttons if there is more one item
                if (this.$allVisibleItems.length > 1) {
                    this.$module.find('.' + ListInput.removeButtonClass).each((_index, button) => {
                        $(button).removeClass(ListInput.hiddenRemoveButtonClass);
                    });
                }
            }
        });
    }
    toggleAddAnotherButton() {
        const $firstHiddenItem = this.$module.find('.' + ListInput.hiddenItemClass);
        if ($firstHiddenItem.length) {
            this.$addAnotherButton.removeClass(ListInput.hiddenAddButtonClass);
        }
        else {
            this.$addAnotherButton.addClass(ListInput.hiddenAddButtonClass);
        }
    }
    updateAllCounters() {
        this.updateCounters();
        this.updateRemainingCounter();
    }
    static getSibling(direction, elem, selector) {
        // Get the next sibling element
        let sibling = (direction === 'next') ? elem.next() : elem.prev();
        // If there's no selector, return the first sibling
        if (!selector)
            return sibling;
        // If the sibling matches our selector, use it
        // If not, jump to the next sibling and continue the loop
        while (sibling.length) {
            if (sibling.is(selector))
                return sibling;
            sibling = (direction === 'next') ? sibling.next() : sibling.prev();
        }
    }
}

var QuestionType;
(function (QuestionType) {
    QuestionType[QuestionType["CONTROLLER"] = 0] = "CONTROLLER";
    QuestionType[QuestionType["CONTROLLER_AND_TARGET"] = 1] = "CONTROLLER_AND_TARGET";
    QuestionType[QuestionType["TARGET"] = 2] = "TARGET";
})(QuestionType || (QuestionType = {}));
class QuestionInput {
    question;
    $input;
    targets;
    constructor(question, $input) {
        this.question = question;
        this.$input = $input;
        const targets = this.$input.attr('data-target');
        this.targets = targets ? targets.split(' ') : [];
    }
    setEventListener() {
        this.$input.on('click', () => {
            this.question.updateTargetQuestionsVisibility();
        });
    }
    isChecked() {
        return this.$input.is(':checked');
    }
}
class QuestionQuestion {
    questionWatcher;
    $question;
    id;
    questionType;
    questionInputs;
    possibleTargetIds;
    targetOf;
    constructor(questionWatcher, $question, questionType) {
        this.questionWatcher = questionWatcher;
        this.$question = $question;
        this.id = this.$question.attr('id');
        this.questionType = questionType;
        if (this.questionType === QuestionType.CONTROLLER) {
            this.enableControllerQuestionMethods();
        }
        else {
            this.enableTargetQuestionMethods();
        }
    }
    enableControllerQuestionMethods() {
        this.questionInputs = this.$question.find('input').get().map((inputElement) => new QuestionInput(this, $(inputElement)));
        this.possibleTargetIds = new Set(this.questionInputs.map((questionInput) => questionInput.targets).flat());
    }
    enableTargetQuestionMethods() {
        this.targetOf = [];
    }
    isVisible() {
        return !this.$question.hasClass('govuk-visually-hidden');
    }
    currentTargetIds() {
        let targets;
        if (this.isVisible() && this.questionInputs) {
            targets = this.questionInputs.filter((questionInput) => questionInput.isChecked()).map((questionInput) => questionInput.targets).flat();
        }
        else {
            targets = [];
        }
        return new Set(targets);
    }
    updateTargetQuestionsVisibility() {
        this.questionWatcher.updateTargetQuestionsVisibility(this.possibleTargetIds);
    }
    appendTargetOf(questionId) {
        if (this.targetOf !== undefined) {
            this.targetOf.push(questionId);
        }
    }
    toggleVisibility(isShown) {
        this.$question.toggleClass('govuk-visually-hidden', !isShown);
        this.$question.attr('aria-hidden', (!isShown).toString());
        if (isShown) {
            this.$question.removeAttr('hidden');
        }
        else {
            this.$question.attr('hidden', '');
        }
    }
}
class Question {
    static moduleName = 'dm-question';
    questions;
    constructor() {
        this.questions = {};
        $(`[data-module="${Question.moduleName}"]`).each((_index, question) => {
            this.push(new QuestionQuestion(this, $(question), QuestionType.CONTROLLER));
        });
        for (const [questionId, question] of Object.entries(this.questions)) {
            for (const questionTargetId of question.possibleTargetIds || []) {
                if (questionTargetId in this.questions) {
                    if (this.questions[questionTargetId].questionType === QuestionType.CONTROLLER) {
                        this.questions[questionTargetId].questionType = QuestionType.CONTROLLER_AND_TARGET;
                        this.questions[questionTargetId].enableTargetQuestionMethods();
                    }
                }
                else {
                    this.push(new QuestionQuestion(this, $(`#${questionTargetId}`), QuestionType.TARGET));
                }
                this.questions[questionTargetId].appendTargetOf(questionId);
            }
        }
    }
    init() {
        for (const question of Object.values(this.questions)) {
            if (question.questionType < QuestionType.TARGET) {
                for (const questionInput of question.questionInputs || []) {
                    questionInput.setEventListener();
                }
                if (question.questionType === QuestionType.CONTROLLER) {
                    this.updateTargetQuestionsVisibility(question.possibleTargetIds);
                }
            }
        }
    }
    push(question) {
        this.questions[question.id] = question;
    }
    updateTargetQuestionsVisibility(possibleTargetIds, isShown) {
        for (const possibleTargetId of possibleTargetIds || []) {
            const targetQuestion = this.questions[possibleTargetId];
            let questionIsShown;
            if (isShown === undefined) {
                const controllerQuestions = targetQuestion.targetOf?.map((questionId) => this.questions[questionId]);
                const targetsToShow = new Set(controllerQuestions?.map((controllerQuestion) => Array.from(controllerQuestion.currentTargetIds())).flat());
                questionIsShown = targetsToShow.has(possibleTargetId);
            }
            else {
                questionIsShown = isShown;
            }
            targetQuestion.toggleVisibility(questionIsShown);
            if (targetQuestion.questionType === QuestionType.CONTROLLER_AND_TARGET) {
                if (questionIsShown) {
                    this.updateTargetQuestionsVisibility(targetQuestion.possibleTargetIds);
                }
                else {
                    this.updateTargetQuestionsVisibility(targetQuestion.possibleTargetIds, false);
                }
            }
        }
    }
}

class QuestionCheckboxTreeSummary {
    $totalSelected;
    $totalSelectedText;
    itemNameSingular;
    itemNamePlural;
    constructor($summary, itemNameSingular, itemNamePlural) {
        this.$totalSelected = $summary.find('.dm-checkbox-tree__summary-total-selected');
        this.$totalSelectedText = $summary.find('.dm-checkbox-tree__summary-total-selected-text');
        this.itemNameSingular = itemNameSingular;
        this.itemNamePlural = itemNamePlural;
    }
    updateSelectedCount = (numberSelected) => {
        this.$totalSelected.text(numberSelected);
        if (numberSelected === 1) {
            this.$totalSelectedText.text(`${this.itemNameSingular} selected.`);
        }
        else {
            this.$totalSelectedText.text(`${this.itemNamePlural} selected.`);
        }
    };
}
class QuestionCheckboxTreeSection {
    checkboxTree;
    $section;
    $summaryTag;
    $summaryTagCount;
    tier;
    checkboxTreeSections;
    checkboxes;
    isParent;
    constructor(checkboxTree, $section, tier) {
        this.checkboxTree = checkboxTree;
        this.$section = $section;
        this.tier = tier;
        this.$summaryTag = this.$section.find('> .dm-checkbox-tree-details__summary .govuk-tag');
        this.$summaryTagCount = this.$summaryTag.find('.dm-checkbox-tree-details__summary-text-count-selected');
        this.checkboxTreeSections = this.$section.find('> .dm-checkbox-tree-details__text > .dm-checkbox-tree-details').get().map((element) => new QuestionCheckboxTreeSection(this.checkboxTree, $(element), tier + 1));
        this.checkboxes = this.$section.find(`${this.$section.prop('tagName') === 'DETAILS' ? '> .dm-checkbox-tree-details__text > .govuk-form-group > .govuk-checkboxes > .govuk-checkboxes__item > ' : ''}.govuk-checkboxes__input`).get().map((element) => $(element));
        this.isParent = this.checkboxTreeSections.length > 0;
    }
    init = () => {
        this.openSectionIfSelected();
        if (this.isParent) {
            this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.init());
        }
        else {
            this.checkboxes.forEach(($checkbox) => {
                $checkbox.on('click', () => {
                    this.checkboxTree.updateTotals($checkbox.val(), $checkbox.is(':checked'));
                });
            });
        }
    };
    selectedItems = () => {
        return this.checkboxes.filter(($checkbox) => $checkbox.is(':checked'));
    };
    openSectionIfSelected = () => {
        if (this.countSelected() > 0 && this.$section.attr('open') !== 'open') {
            this.$section.attr('open', 'open');
        }
    };
    countSelected = () => {
        if (this.isParent) {
            return this.checkboxTreeSections.reduce((total, checkboxTreeSection) => total + checkboxTreeSection.countSelected(), 0);
        }
        else {
            return this.selectedItems().length;
        }
    };
    slectedItemValues = () => {
        if (this.isParent) {
            return this.checkboxTreeSections.map((checkboxTreeSection) => checkboxTreeSection.slectedItemValues()).flat();
        }
        else {
            return this.selectedItems().map(($checkbox) => $checkbox.val());
        }
    };
    updateSelectedCount = () => {
        const numberSelected = this.countSelected();
        if (numberSelected > 0) {
            this.$summaryTagCount.text(numberSelected);
            this.$summaryTag.toggleClass('govuk-visually-hidden', false);
        }
        else {
            this.$summaryTag.toggleClass('govuk-visually-hidden', true);
            this.$summaryTagCount.text('');
        }
        if (this.isParent) {
            this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.updateSelectedCount());
        }
    };
    updateSectionLocks = (fromTier) => {
        if (this.countSelected()) {
            if (this.tier === fromTier) {
                this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.toggleSectionLock(false));
            }
            else {
                this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.updateSectionLocks(fromTier));
            }
        }
        else {
            this.toggleSectionLock(true);
        }
    };
    toggleSectionLock = (isLocked) => {
        if (this.isParent) {
            this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.toggleSectionLock(isLocked));
        }
        else {
            this.checkboxes.forEach((checkbox) => checkbox.prop('disabled', isLocked));
        }
        if (isLocked) {
            this.$section.attr('disabled', 'disabled');
            this.$section.removeAttr('open');
        }
        else {
            this.$section.removeAttr('disabled');
        }
    };
    toggleCheckbox = (value, isChecked) => {
        if (this.isParent) {
            this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.toggleCheckbox(value, isChecked));
        }
        else {
            this.checkboxes.forEach(($checkbox) => {
                if ($checkbox.val() === value) {
                    $checkbox.prop('checked', isChecked);
                }
            });
        }
    };
}
class QuestionCheckboxTree {
    static moduleName = 'dm-question-checkbox-tree';
    $checkboxTree;
    checkboxTreeSummary;
    checkboxTreeSections;
    tierLimit;
    currentCount = 0;
    constructor($checkboxTree) {
        this.$checkboxTree = $checkboxTree;
        this.checkboxTreeSummary = new QuestionCheckboxTreeSummary(this.$checkboxTree.find('.dm-checkbox-tree__summary'), this.$checkboxTree.data('itemNameSingular'), this.$checkboxTree.data('itemNamePlural'));
        this.tierLimit = this.$checkboxTree.data('tierRestriction') || 0;
        const checkboxTreeSections = this.$checkboxTree.find('.dm-checkbox-tree__options > .dm-checkbox-tree-details').get().map((element) => new QuestionCheckboxTreeSection(this, $(element), 1));
        if (checkboxTreeSections.length) {
            this.checkboxTreeSections = checkboxTreeSections;
        }
        else {
            this.checkboxTreeSections = [new QuestionCheckboxTreeSection(this, $('.dm-checkbox-tree__options'), 1)];
        }
    }
    init = () => {
        this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.init());
        this.updateCheckboxTreeSummaryCount();
        this.updateCheckboxTreeSectionSelectedCounts();
        this.updateSectionLocks();
    };
    countSelected = () => {
        return new Set(this.checkboxTreeSections.map((checkboxTreeSection) => checkboxTreeSection.slectedItemValues()).flat()).size;
    };
    updateCheckboxTreeSummaryCount = () => {
        this.currentCount = this.countSelected();
        this.checkboxTreeSummary.updateSelectedCount(this.currentCount);
    };
    updateCheckboxTreeSectionSelectedCounts = () => {
        this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.updateSelectedCount());
    };
    updateSectionLocks = () => {
        if (!this.tierLimit)
            return;
        this.checkboxTreeSections.forEach((checkboxTreeSection) => {
            if (this.currentCount === 0) {
                checkboxTreeSection.toggleSectionLock(false);
            }
            else {
                checkboxTreeSection.updateSectionLocks(this.tierLimit);
            }
        });
    };
    updateTotals = (value, isChecked) => {
        this.checkboxTreeSections.forEach((checkboxTreeSection) => checkboxTreeSection.toggleCheckbox(value, isChecked));
        this.updateCheckboxTreeSummaryCount();
        this.updateCheckboxTreeSectionSelectedCounts();
        this.updateSectionLocks();
    };
}

class QuestionListRowInput {
    $input;
    $label;
    $labelCounter;
    $prefixText;
    constructor($row) {
        this.$input = $row.find('.dm-list__item-input');
        this.$label = $row.find('.govuk-label');
        this.$labelCounter = this.$label.find('.dm-list__item-label-counter');
        this.$prefixText = $row.find('.govuk-input__prefix');
    }
    getValue() {
        return this.$input.val();
    }
    clearValue() {
        this.$input.val('');
        this.$input.attr('value', '');
    }
    updateIndex(newIndex) {
        const newId = `input-${this.$input.attr('name')}-${newIndex}`;
        this.$label.attr('for', newId);
        this.$labelCounter.text(newIndex + 1);
        this.$prefixText.text(`${newIndex + 1}.`);
        this.$input.attr('id', newId);
    }
}
class QuestionListRowRemoveButton {
    answerListRow;
    $button;
    $removeButtonCounter;
    constructor(answerListRow, $row) {
        this.answerListRow = answerListRow;
        this.$button = $row.find('.dm-list__item-remove');
        this.$removeButtonCounter = this.$button.find('.dm-list__item-remove-counter');
    }
    init() {
        this.toggleVisibility(true);
        this.$button.on('click', () => {
            this.answerListRow.removeRow();
        });
    }
    toggleVisibility(isShown) {
        this.$button.toggleClass('govuk-visually-hidden', !isShown);
    }
    updateIndex(newIndex) {
        this.$removeButtonCounter.text(newIndex + 1);
    }
}
class QuestionListRow {
    answerList;
    index;
    $row;
    answerListRowInput;
    answerListRowRemoveButton;
    constructor(answerList, index, $row) {
        this.answerList = answerList;
        this.index = index;
        this.$row = $row;
        this.answerListRowInput = new QuestionListRowInput($row);
        this.answerListRowRemoveButton = new QuestionListRowRemoveButton(this, $row);
    }
    init() {
        this.answerListRowRemoveButton.init();
    }
    updateIndex(newIndex) {
        this.index = newIndex;
        this.answerListRowInput.updateIndex(newIndex);
        this.answerListRowRemoveButton.updateIndex(newIndex);
    }
    removeRow() {
        this.answerList.removeRow(this.index);
        this.deleteRow();
    }
    deleteRow() {
        this.$row.remove();
    }
    toggleRemoveButtonVisibility(isShown) {
        this.answerListRowRemoveButton.toggleVisibility(isShown);
    }
    inputValue() {
        return this.answerListRowInput.getValue();
    }
}
class QuestionListAddButton {
    answerList;
    $button;
    $buttonCounter;
    constructor(answerList, $button) {
        this.answerList = answerList;
        this.$button = $button;
        this.$buttonCounter = $button.find('.dm-list__item-add-counter');
    }
    init(numberOfRows) {
        this.$button.on('click', () => {
            this.answerList.addRow();
        });
        this.updateButtonText(this.answerList.maxNumberOfItems - numberOfRows);
    }
    updateButtonText(numberRemaining) {
        this.$buttonCounter.text(numberRemaining);
    }
    toggleVisibility(isShown) {
        this.$button.toggleClass('govuk-visually-hidden', !isShown);
    }
}
class QuestionList {
    static moduleName = 'dm-question-list';
    $answerList;
    $answerListItems;
    answerListRows;
    answerListAddButton;
    maxNumberOfItems;
    numberOfItemsShownAsDefault;
    constructor($answerList) {
        this.$answerList = $answerList;
        this.maxNumberOfItems = this.$answerList.data('maxNumberOfItems');
        this.numberOfItemsShownAsDefault = this.$answerList.data('numberOfItemsShownAsDefault');
        this.$answerListItems = this.$answerList.find('.dm-list__items');
        this.answerListRows = this.$answerList.find('.dm-list__item').get().map((row, index) => new QuestionListRow(this, index, $(row)));
        this.answerListAddButton = new QuestionListAddButton(this, this.$answerList.find('.dm-list__item-add'));
    }
    init() {
        const rowValues = this.answerListRows.map((answerListRow) => answerListRow.inputValue());
        let indexToDeleteFrom = 1;
        if (rowValues.every((rowValue) => !rowValue)) {
            indexToDeleteFrom = this.numberOfItemsShownAsDefault;
        }
        else {
            rowValues.forEach((rowValue, index) => {
                if (rowValue) {
                    indexToDeleteFrom = index + 1;
                }
            });
        }
        if (indexToDeleteFrom >= 0) {
            this.answerListRows.slice(indexToDeleteFrom).forEach((answerListRow) => answerListRow.deleteRow());
            this.answerListRows.splice(indexToDeleteFrom);
        }
        this.answerListAddButton.init(this.answerListRows.length);
        this.answerListRows.forEach((answerListRow) => answerListRow.init());
        this.updateIfMinRows();
        this.updateAnswerButton();
    }
    removeRow(indexToRemove) {
        this.answerListRows.splice(indexToRemove, 1);
        this.answerListRows.slice(indexToRemove).forEach((answerListRow, index) => {
            answerListRow.updateIndex(indexToRemove + index);
        });
        this.updateIfMinRows();
        this.updateAnswerButton();
        this.focusOnRow(indexToRemove);
    }
    addRow() {
        const numberOfRows = this.answerListRows.length;
        if (numberOfRows < this.maxNumberOfItems) {
            const $newRow = this.answerListRows[0].$row.clone();
            const answerListRow = new QuestionListRow(this, numberOfRows, $newRow);
            answerListRow.updateIndex(numberOfRows);
            answerListRow.answerListRowInput.clearValue();
            this.answerListRows.push(answerListRow);
            this.$answerListItems.append($newRow);
            this.answerListRows[numberOfRows].init();
            this.updateIfMinRows();
            this.updateAnswerButton();
            this.focusOnRow(numberOfRows);
        }
    }
    updateIfMinRows() {
        if (this.answerListRows.length === 1) {
            this.answerListRows[0].toggleRemoveButtonVisibility(false);
        }
        else {
            this.answerListRows[0].toggleRemoveButtonVisibility(true);
        }
    }
    updateAnswerButton() {
        if (this.answerListRows.length === this.maxNumberOfItems) {
            this.answerListAddButton.toggleVisibility(false);
        }
        else {
            this.answerListAddButton.toggleVisibility(true);
            this.answerListAddButton.updateButtonText(this.maxNumberOfItems - this.answerListRows.length);
        }
    }
    focusOnRow(targetIndexToFocus) {
        const numberOfRows = this.answerListRows.length;
        let indexToFocus = targetIndexToFocus;
        if (targetIndexToFocus >= numberOfRows) {
            indexToFocus = numberOfRows - 1;
        }
        this.answerListRows[indexToFocus].answerListRowInput.$input.focus();
    }
}

class QuestionListMultiquestionQuestionInput {
    $question;
    canHideQuestion;
    constructor($question) {
        this.$question = $question;
        this.canHideQuestion = this.$question.hasClass('js-hidden');
    }
    toggleVisibility(isShown) {
        if (isShown) {
            this.showInput();
        }
        else {
            this.hideInput();
            this.hideQuestion();
        }
    }
    hideQuestion() {
        if (this.canHideQuestion) {
            this.$question.toggleClass('govuk-visually-hidden', true);
            this.$question.attr('aria-hidden', 'true');
            this.$question.attr('hidden', '');
        }
    }
}
class QuestionListMultiquestionQuestionInputWithField extends QuestionListMultiquestionQuestionInput {
    $input;
    constructor($question, $input) {
        super($question);
        this.$input = $input;
    }
    hasValue() {
        return !!this.$input.val();
    }
    showInput() {
        this.$input.removeAttr('tabindex');
    }
    hideInput() {
        this.$input.val('');
        this.$input.attr('value', '');
        this.$input.attr('tabindex', -1);
    }
    focusOnInput() {
        this.$input.focus();
    }
}
class QuestionListMultiquestionQuestionInputWithItems extends QuestionListMultiquestionQuestionInput {
    inputs;
    constructor($question, inputs) {
        super($question);
        this.inputs = inputs;
    }
    hasValue() {
        return this.inputs.some($input => $input.is(':checked'));
    }
    showInput() {
        this.inputs.forEach($input => $input.removeAttr('tabindex'));
    }
    hideInput() {
        this.inputs.forEach(($input) => {
            $input.prop('checked', false);
            $input.attr('tabindex', -1);
        });
    }
    focusOnInput() {
        this.inputs[0].focus();
    }
}
class QuestionListMultiquestionQuestionInputFactory {
    static getQuestionListMultiquestionQuestionInput($question) {
        const inputs = $question.find('input').get().map((input) => $(input));
        if (inputs.length == 1) {
            return new QuestionListMultiquestionQuestionInputWithField($question, inputs[0]);
        }
        else {
            return new QuestionListMultiquestionQuestionInputWithItems($question, inputs);
        }
    }
}
class QuestionListMultiquestionRow {
    answerList;
    $row;
    answerListRowInputs;
    constructor(answerList, $row) {
        this.answerList = answerList;
        this.$row = $row;
        this.answerListRowInputs = $row.find('.question').get().map((question) => QuestionListMultiquestionQuestionInputFactory.getQuestionListMultiquestionQuestionInput($(question)));
    }
    toggleVisibility(isShown) {
        this.$row.toggleClass('govuk-visually-hidden', !isShown);
        this.answerListRowInputs.forEach((answerListRowInput) => answerListRowInput.toggleVisibility(isShown));
    }
    isRowVisible() {
        return !this.$row.hasClass('govuk-visually-hidden');
    }
    rowHasValues() {
        return this.answerListRowInputs.some((answerListRowInput) => answerListRowInput.hasValue());
    }
}
class QuestionListMultiquestionButton {
    answerList;
    $button;
    $buttonCounter;
    constructor(answerList, $button, buttonType) {
        this.answerList = answerList;
        this.$button = $button;
        this.$buttonCounter = $button.find(`.dm-list-multiquestion__item-${buttonType}-counter`);
    }
    updateButtonText(numberOfRows) {
        this.$buttonCounter.text(numberOfRows);
    }
    toggleVisibility(isShown) {
        this.$button.toggleClass('govuk-visually-hidden', !isShown);
        if (isShown) {
            this.$button.removeAttr('tabindex');
        }
        else {
            this.$button.attr('tabindex', -1);
        }
    }
}
class QuestionListMultiquestionRemoveButton extends QuestionListMultiquestionButton {
    constructor(answerList, $button) {
        super(answerList, $button, 'remove');
    }
    init(numberOfRows) {
        this.$button.on('click', () => {
            this.answerList.hideRow();
        });
        this.updateButtonText(numberOfRows);
    }
}
class QuestionListMultiquestionAddButton extends QuestionListMultiquestionButton {
    maxNumberOfItems;
    constructor(answerList, $button, maxNumberOfItems) {
        super(answerList, $button, 'add');
        this.maxNumberOfItems = maxNumberOfItems;
    }
    init(numberOfRows) {
        this.$button.on('click', () => {
            this.answerList.addRow();
        });
        this.updateButtonText(this.maxNumberOfItems - numberOfRows);
    }
}
class QuestionListMultiquestionClientSide {
    static moduleName = 'dm-question-list-multiquestion-client-side';
    $answerList;
    maxNumberOfItems;
    answerListRows;
    answerListAddButton;
    answerListRemoveButton;
    constructor($answerList) {
        this.$answerList = $answerList;
        this.maxNumberOfItems = this.$answerList.data('maxNumberOfItems');
        this.answerListRows = this.$answerList.find('.dm-list-multiquestion__item').get().map((row) => new QuestionListMultiquestionRow(this, $(row)));
        this.answerListAddButton = new QuestionListMultiquestionAddButton(this, this.$answerList.find('.dm-list-multiquestion__item-add'), this.maxNumberOfItems);
        this.answerListRemoveButton = new QuestionListMultiquestionRemoveButton(this, this.$answerList.find('.dm-list-multiquestion__item-remove'));
    }
    init() {
        const rowsVisible = this.answerListRows.map((answerListRow) => answerListRow.rowHasValues());
        let indexToHideFrom = -1;
        if (rowsVisible.every((rowVisible) => !rowVisible)) {
            indexToHideFrom = 1;
        }
        else {
            let previousRowVisible = true;
            rowsVisible.forEach((rowVisible, index) => {
                if (previousRowVisible && !rowVisible) {
                    indexToHideFrom = index;
                }
                previousRowVisible = rowVisible;
            });
        }
        if (indexToHideFrom >= 0) {
            this.answerListRows.slice(indexToHideFrom).forEach((answerListRow) => answerListRow.toggleVisibility(false));
        }
        const numberOfRows = this.visibleRowsCount();
        this.answerListAddButton.init(numberOfRows);
        this.answerListRemoveButton.init(numberOfRows);
        this.updateRemoveButton(numberOfRows);
        this.updateAnswerButton(numberOfRows);
    }
    hideRow() {
        const numberOfRows = this.visibleRowsCount();
        if (numberOfRows > 1) {
            this.answerListRows[numberOfRows - 1].toggleVisibility(false);
            this.updateRemoveButton(numberOfRows - 1);
            this.updateAnswerButton(numberOfRows - 1);
            this.focusOnRow(numberOfRows - 1);
        }
    }
    addRow() {
        const numberOfRows = this.visibleRowsCount();
        if (numberOfRows < this.maxNumberOfItems) {
            this.answerListRows[numberOfRows].toggleVisibility(true);
            this.updateRemoveButton(numberOfRows + 1);
            this.updateAnswerButton(numberOfRows + 1);
            this.focusOnRow(numberOfRows + 1);
        }
    }
    visibleRowsCount() {
        return this.answerListRows.reduce((count, answerListRow) => count += answerListRow.isRowVisible() ? 1 : 0, 0);
    }
    updateRemoveButton(numberOfRows) {
        if (numberOfRows === 1) {
            this.answerListRemoveButton.toggleVisibility(false);
        }
        else {
            this.answerListRemoveButton.toggleVisibility(true);
            this.answerListRemoveButton.updateButtonText(numberOfRows);
        }
    }
    updateAnswerButton(numberOfRows) {
        if (numberOfRows === this.maxNumberOfItems) {
            this.answerListAddButton.toggleVisibility(false);
        }
        else {
            this.answerListAddButton.toggleVisibility(true);
            this.answerListAddButton.updateButtonText(this.maxNumberOfItems - numberOfRows);
        }
    }
    focusOnRow(numberOfRows) {
        this.answerListRows[numberOfRows - 1].answerListRowInputs[0].focusOnInput();
    }
}

class OptionSelect {
    static moduleName = 'dm-option-select';
    $optionSelect;
    $options;
    $optionsContainer;
    $optionList;
    $allCheckboxes;
    checkedCheckboxes;
    constructor($module) {
        this.$optionSelect = $module;
        this.$options = this.$optionSelect.find('input[type="checkbox"]');
        this.$optionsContainer = this.$optionSelect.find('.js-options-container');
        this.$optionList = this.$optionsContainer.find('.js-auto-height-inner');
        this.$allCheckboxes = this.$optionsContainer.find('.govuk-checkboxes__item');
        this.checkedCheckboxes = [];
    }
    init() {
        // Attach listener to update checked count
        this.$optionSelect.on('change', (event) => {
            const changedEl = event.target;
            if (changedEl.tagName === 'INPUT' && changedEl.getAttribute('type') === 'checkbox') {
                this.updateCheckedCount();
            }
        });
        // Replace div.container-head with a button
        this.replaceHeadingSpanWithButton();
        // Add js-collapsible class to parent for CSS
        this.$optionSelect.addClass('js-collapsible');
        // Add open/close listeners
        this.$optionSelect.find('.js-container-button').on('click', (event) => {
            this.toggleOptionSelect(event);
        });
        if (this.$optionSelect.data().closedOnLoad) {
            this.close();
        }
        else {
            this.setupHeight();
        }
        const checkedString = this.checkedString();
        if (checkedString) {
            this.attachCheckedCounter(checkedString);
        }
    }
    getAllCheckedCheckboxes() {
        this.checkedCheckboxes = [];
        this.$allCheckboxes.each((_index, checkbox) => {
            if ($(checkbox).find('input[type=checkbox]').is(':checked')) {
                this.checkedCheckboxes.push(checkbox);
            }
        });
    }
    replaceHeadingSpanWithButton() {
        /* Replace the span within the heading with a button element. This is based on feedback from Léonie Watson.
          * The button has all of the accessibility hooks that are used by screen readers and etc.
          * We do this in the JavaScript because if the JavaScript is not active then the button shouldn't
          * be there as there is no JS to handle the click event.
        */
        const $containerHead = this.$optionSelect.find('.js-container-button');
        const jsContainerHeadHTML = $containerHead.html();
        // Create button and replace the preexisting html with the button.
        const $button = document.createElement('button');
        $button.classList.add('js-container-button', 'dm-option-select__title', 'dm-option-select__button');
        // Add type button to override default type submit when this component is used within a form
        $button.setAttribute('type', 'button');
        $button.setAttribute('aria-expanded', 'true');
        $button.setAttribute('id', $containerHead.attr('id'));
        $button.setAttribute('aria-controls', this.$optionsContainer.attr('id'));
        $button.innerHTML = jsContainerHeadHTML;
        $containerHead.after($button.outerHTML);
        $containerHead.remove();
    }
    attachCheckedCounter(checkedString) {
        this.$optionSelect.find('.js-container-button').after(`<div class="dm-option-select__selected-counter js-selected-counter">${checkedString}</div>`);
    }
    updateCheckedCount() {
        const checkedString = this.checkedString();
        const $checkedStringElement = this.$optionSelect.find('.js-selected-counter');
        if (checkedString) {
            if ($checkedStringElement.length) {
                $checkedStringElement.text(checkedString);
            }
            else {
                this.attachCheckedCounter(checkedString);
            }
        }
        else {
            $checkedStringElement.remove();
        }
    }
    checkedString() {
        this.getAllCheckedCheckboxes();
        const count = this.checkedCheckboxes.length;
        let checkedString = '';
        if (count > 0) {
            checkedString = count + ' selected';
        }
        return checkedString;
    }
    toggleOptionSelect(event) {
        if (this.isClosed()) {
            this.open();
        }
        else {
            this.close();
        }
        event.preventDefault();
    }
    open() {
        if (this.isClosed()) {
            this.$optionSelect.find('.js-container-button').attr('aria-expanded', 'true');
            this.$optionSelect.removeClass('js-closed');
            this.$optionSelect.addClass('js-opened');
            if (!this.$optionsContainer.css('height')) {
                this.setupHeight();
            }
        }
    }
    close() {
        this.$optionSelect.removeClass('js-opened');
        this.$optionSelect.addClass('js-closed');
        this.$optionSelect.find('.js-container-button').attr('aria-expanded', 'false');
    }
    isClosed() {
        return this.$optionSelect.hasClass('js-closed');
    }
    setContainerHeight(height) {
        this.$optionsContainer.css('height', height + 'px');
    }
    isCheckboxVisible($checkbox) {
        const initialOptionContainerHeight = this.$optionsContainer.get(0)?.clientHeight;
        const optionListOffsetTop = this.$optionList.get(0).getBoundingClientRect().top + document.body.scrollTop;
        const distanceFromTopOfContainer = ($checkbox.get(0).getBoundingClientRect().top + document.body.scrollTop) - optionListOffsetTop;
        return distanceFromTopOfContainer < initialOptionContainerHeight;
    }
    getVisibleCheckboxes() {
        const visibleCheckboxes = this.$options.get().filter((checkbox) => this.isCheckboxVisible($(checkbox)));
        // add an extra checkbox, if the label of the first is too long it collapses onto itself
        if (visibleCheckboxes.length < this.$options.length) {
            visibleCheckboxes.push(this.$options.get(visibleCheckboxes.length));
        }
        return visibleCheckboxes;
    }
    setupHeight() {
        const optionsContainer = this.$optionsContainer.get(0);
        const optionList = this.$optionList.get(0);
        let initialOptionContainerHeight = optionsContainer.clientHeight;
        let height = optionList.offsetHeight;
        // check whether this is hidden by progressive disclosure,
        // because height calculations won't work
        if (optionsContainer.offsetParent === null) {
            initialOptionContainerHeight = 200;
            height = 200;
        }
        // Resize if the list is only slightly bigger than its container
        if (height < initialOptionContainerHeight + 50) {
            this.setContainerHeight(height + 1);
            return;
        }
        // Resize to cut last item cleanly in half
        const visibleCheckboxes = this.getVisibleCheckboxes();
        const lastVisibleCheckbox = visibleCheckboxes[visibleCheckboxes.length - 1];
        const position = (lastVisibleCheckbox?.parentNode).offsetTop; // parent element is relative
        this.setContainerHeight(position + (parseFloat(window.getComputedStyle(lastVisibleCheckbox, null).height.replace('px', '')) / 1.5));
    }
}

class SearchBox {
    static moduleName = 'dm-search-box';
    $module;
    $toggleTarget;
    constructor($module) {
        this.$module = $module;
        this.$toggleTarget = this.$module.find('.js-class-toggle');
    }
    init() {
        if (!this.inputIsEmpty()) {
            this.addFocusClass();
        }
        this.$toggleTarget.on('focus', this.addFocusClass.bind(this));
        this.$toggleTarget.on('blur', this.removeFocusClassFromEmptyInput.bind(this));
    }
    inputIsEmpty() {
        return this.$toggleTarget.val() === '';
    }
    addFocusClass() {
        this.$toggleTarget.addClass('focus');
    }
    removeFocusClassFromEmptyInput() {
        if (this.inputIsEmpty()) {
            this.$toggleTarget.removeClass('focus');
        }
    }
}

function getDefaultExportFromCjs (x) {
	return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}

var accessibleAutocomplete_min = {exports: {}};

var hasRequiredAccessibleAutocomplete_min;

function requireAccessibleAutocomplete_min () {
	if (hasRequiredAccessibleAutocomplete_min) return accessibleAutocomplete_min.exports;
	hasRequiredAccessibleAutocomplete_min = 1;
	(function (module, exports) {
		!function (t, e) {
		  module.exports = e() ;
		}(self, function () {
		  return function () {

		    var t = {
		        8952: function _(t, e, n) {
		          var r = n(4328),
		            o = n(36),
		            i = TypeError;
		          t.exports = function (t) {
		            if (r(t)) return t;
		            throw new i(o(t) + " is not a function");
		          };
		        },
		        2096: function _(t, e, n) {
		          var r = n(2424),
		            o = String,
		            i = TypeError;
		          t.exports = function (t) {
		            if (r(t)) return t;
		            throw new i("Can't set " + o(t) + " as a prototype");
		          };
		        },
		        4764: function _(t, e, n) {
		          var r = n(9764).charAt;
		          t.exports = function (t, e, n) {
		            return e + (n ? r(t, e).length : 1);
		          };
		        },
		        6100: function _(t, e, n) {
		          var r = n(7e3),
		            o = TypeError;
		          t.exports = function (t, e) {
		            if (r(e, t)) return t;
		            throw new o("Incorrect invocation");
		          };
		        },
		        3951: function _(t, e, n) {
		          var r = n(1632),
		            o = String,
		            i = TypeError;
		          t.exports = function (t) {
		            if (r(t)) return t;
		            throw new i(o(t) + " is not an object");
		          };
		        },
		        2504: function _(t, e, n) {
		          var r = n(4096),
		            o = n(2495),
		            i = n(3556),
		            u = function u(t) {
		              return function (e, n, u) {
		                var a = r(e),
		                  c = i(a);
		                if (0 === c) return !t && -1;
		                var s,
		                  l = o(u, c);
		                if (t && n != n) {
		                  for (; c > l;) if ((s = a[l++]) != s) return true;
		                } else for (; c > l; l++) if ((t || l in a) && a[l] === n) return t || l || 0;
		                return !t && -1;
		              };
		            };
		          t.exports = {
		            includes: u(true),
		            indexOf: u(false)
		          };
		        },
		        3364: function _(t, e, n) {
		          var r = n(8992),
		            o = n(1664),
		            i = n(5712),
		            u = n(4356),
		            a = n(3556),
		            c = n(2568),
		            s = o([].push),
		            l = function l(t) {
		              var e = 1 === t,
		                n = 2 === t,
		                o = 3 === t,
		                l = 4 === t,
		                f = 6 === t,
		                p = 7 === t,
		                d = 5 === t || f;
		              return function (h, v, m, y) {
		                for (var g, b, x = u(h), w = i(x), O = a(w), _ = r(v, m), S = 0, C = y || c, E = e ? C(h, O) : n || p ? C(h, 0) : void 0; O > S; S++) if ((d || S in w) && (b = _(g = w[S], S, x), t)) if (e) E[S] = b;else if (b) switch (t) {
		                  case 3:
		                    return true;
		                  case 5:
		                    return g;
		                  case 6:
		                    return S;
		                  case 2:
		                    s(E, g);
		                } else switch (t) {
		                  case 4:
		                    return false;
		                  case 7:
		                    s(E, g);
		                }
		                return f ? -1 : o || l ? l : E;
		              };
		            };
		          t.exports = {
		            forEach: l(0),
		            map: l(1),
		            filter: l(2),
		            some: l(3),
		            every: l(4),
		            find: l(5),
		            findIndex: l(6),
		            filterReject: l(7)
		          };
		        },
		        953: function _(t, e, n) {
		          var r = n(9957),
		            o = n(9972),
		            i = n(8504),
		            u = o("species");
		          t.exports = function (t) {
		            return i >= 51 || !r(function () {
		              var e = [];
		              return (e.constructor = {})[u] = function () {
		                return {
		                  foo: 1
		                };
		              }, 1 !== e[t](Boolean).foo;
		            });
		          };
		        },
		        1496: function _(t, e, n) {
		          var r = n(9957);
		          t.exports = function (t, e) {
		            var n = [][t];
		            return !!n && r(function () {
		              n.call(null, e || function () {
		                return 1;
		              }, 1);
		            });
		          };
		        },
		        6728: function _(t, e, n) {
		          var r = n(3476),
		            o = n(1432),
		            i = TypeError,
		            u = Object.getOwnPropertyDescriptor,
		            a = r && !function () {
		              if (void 0 !== this) return true;
		              try {
		                Object.defineProperty([], "length", {
		                  writable: !1
		                }).length = 1;
		              } catch (t) {
		                return t instanceof TypeError;
		              }
		            }();
		          t.exports = a ? function (t, e) {
		            if (o(t) && !u(t, "length").writable) throw new i("Cannot set read only .length");
		            return t.length = e;
		          } : function (t, e) {
		            return t.length = e;
		          };
		        },
		        6736: function _(t, e, n) {
		          var r = n(1432),
		            o = n(6072),
		            i = n(1632),
		            u = n(9972)("species"),
		            a = Array;
		          t.exports = function (t) {
		            var e;
		            return r(t) && (e = t.constructor, (o(e) && (e === a || r(e.prototype)) || i(e) && null === (e = e[u])) && (e = void 0)), void 0 === e ? a : e;
		          };
		        },
		        2568: function _(t, e, n) {
		          var r = n(6736);
		          t.exports = function (t, e) {
		            return new (r(t))(0 === e ? 0 : e);
		          };
		        },
		        8696: function _(t, e, n) {
		          var r = n(3951),
		            o = n(3112);
		          t.exports = function (t, e, n, i) {
		            try {
		              return i ? e(r(n)[0], n[1]) : e(n);
		            } catch (u) {
		              o(t, "throw", u);
		            }
		          };
		        },
		        1888: function _(t, e, n) {
		          var r = n(1664),
		            o = r({}.toString),
		            i = r("".slice);
		          t.exports = function (t) {
		            return i(o(t), 8, -1);
		          };
		        },
		        4427: function _(t, e, n) {
		          var r = n(16),
		            o = n(4328),
		            i = n(1888),
		            u = n(9972)("toStringTag"),
		            a = Object,
		            c = "Arguments" === i(function () {
		              return arguments;
		            }());
		          t.exports = r ? i : function (t) {
		            var e, n, r;
		            return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (n = function (t, e) {
		              try {
		                return t[e];
		              } catch (n) {}
		            }(e = a(t), u)) ? n : c ? i(e) : "Object" === (r = i(e)) && o(e.callee) ? "Arguments" : r;
		          };
		        },
		        9968: function _(t, e, n) {
		          var r = n(5152),
		            o = n(9252),
		            i = n(9444),
		            u = n(8352);
		          t.exports = function (t, e, n) {
		            for (var a = o(e), c = u.f, s = i.f, l = 0; l < a.length; l++) {
		              var f = a[l];
		              r(t, f) || n && r(n, f) || c(t, f, s(e, f));
		            }
		          };
		        },
		        2272: function _(t, e, n) {
		          var r = n(9957);
		          t.exports = !r(function () {
		            function t() {}
		            return t.prototype.constructor = null, Object.getPrototypeOf(new t()) !== t.prototype;
		          });
		        },
		        3336: function _(t) {
		          t.exports = function (t, e) {
		            return {
		              value: t,
		              done: e
		            };
		          };
		        },
		        3440: function _(t, e, n) {
		          var r = n(3476),
		            o = n(8352),
		            i = n(9728);
		          t.exports = r ? function (t, e, n) {
		            return o.f(t, e, i(1, n));
		          } : function (t, e, n) {
		            return t[e] = n, t;
		          };
		        },
		        9728: function _(t) {
		          t.exports = function (t, e) {
		            return {
		              enumerable: !(1 & t),
		              configurable: !(2 & t),
		              writable: !(4 & t),
		              value: e
		            };
		          };
		        },
		        92: function _(t, e, n) {
		          var r = n(3476),
		            o = n(8352),
		            i = n(9728);
		          t.exports = function (t, e, n) {
		            r ? o.f(t, e, i(0, n)) : t[e] = n;
		          };
		        },
		        2544: function _(t, e, n) {
		          var r = n(5312),
		            o = n(8352);
		          t.exports = function (t, e, n) {
		            return n.get && r(n.get, e, {
		              getter: true
		            }), n.set && r(n.set, e, {
		              setter: true
		            }), o.f(t, e, n);
		          };
		        },
		        6076: function _(t, e, n) {
		          var r = n(4328),
		            o = n(8352),
		            i = n(5312),
		            u = n(4636);
		          t.exports = function (t, e, n, a) {
		            a || (a = {});
		            var c = a.enumerable,
		              s = void 0 !== a.name ? a.name : e;
		            if (r(n) && i(n, s, a), a.global) c ? t[e] = n : u(e, n);else {
		              try {
		                a.unsafe ? t[e] && (c = !0) : delete t[e];
		              } catch (l) {}
		              c ? t[e] = n : o.f(t, e, {
		                value: n,
		                enumerable: false,
		                configurable: !a.nonConfigurable,
		                writable: !a.nonWritable
		              });
		            }
		            return t;
		          };
		        },
		        4036: function _(t, e, n) {
		          var r = n(6076);
		          t.exports = function (t, e, n) {
		            for (var o in e) r(t, o, e[o], n);
		            return t;
		          };
		        },
		        4636: function _(t, e, n) {
		          var r = n(6420),
		            o = Object.defineProperty;
		          t.exports = function (t, e) {
		            try {
		              o(r, t, {
		                value: e,
		                configurable: !0,
		                writable: !0
		              });
		            } catch (n) {
		              r[t] = e;
		            }
		            return e;
		          };
		        },
		        3476: function _(t, e, n) {
		          var r = n(9957);
		          t.exports = !r(function () {
		            return 7 !== Object.defineProperty({}, 1, {
		              get: function get() {
		                return 7;
		              }
		            })[1];
		          });
		        },
		        8168: function _(t, e, n) {
		          var r = n(6420),
		            o = n(1632),
		            i = r.document,
		            u = o(i) && o(i.createElement);
		          t.exports = function (t) {
		            return u ? i.createElement(t) : {};
		          };
		        },
		        4316: function _(t) {
		          var e = TypeError;
		          t.exports = function (t) {
		            if (t > 9007199254740991) throw e("Maximum allowed index exceeded");
		            return t;
		          };
		        },
		        6064: function _(t) {
		          t.exports = "undefined" != typeof navigator && String(navigator.userAgent) || "";
		        },
		        8504: function _(t, e, n) {
		          var r,
		            o,
		            i = n(6420),
		            u = n(6064),
		            a = i.process,
		            c = i.Deno,
		            s = a && a.versions || c && c.version,
		            l = s && s.v8;
		          l && (o = (r = l.split("."))[0] > 0 && r[0] < 4 ? 1 : +(r[0] + r[1])), !o && u && (!(r = u.match(/Edge\/(\d+)/)) || r[1] >= 74) && (r = u.match(/Chrome\/(\d+)/)) && (o = +r[1]), t.exports = o;
		        },
		        8256: function _(t) {
		          t.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"];
		        },
		        6520: function _(t, e, n) {
		          var r = n(1664),
		            o = Error,
		            i = r("".replace),
		            u = String(new o("zxcasd").stack),
		            a = /\n\s*at [^:]*:[^\n]*/,
		            c = a.test(u);
		          t.exports = function (t, e) {
		            if (c && "string" == typeof t && !o.prepareStackTrace) for (; e--;) t = i(t, a, "");
		            return t;
		          };
		        },
		        3696: function _(t, e, n) {
		          var r = n(3440),
		            o = n(6520),
		            i = n(9184),
		            u = Error.captureStackTrace;
		          t.exports = function (t, e, n, a) {
		            i && (u ? u(t, e) : r(t, "stack", o(n, a)));
		          };
		        },
		        9184: function _(t, e, n) {
		          var r = n(9957),
		            o = n(9728);
		          t.exports = !r(function () {
		            var t = new Error("a");
		            return !("stack" in t) || (Object.defineProperty(t, "stack", o(1, 7)), 7 !== t.stack);
		          });
		        },
		        9160: function _(t, e, n) {
		          var r = n(6420),
		            o = n(9444).f,
		            i = n(3440),
		            u = n(6076),
		            a = n(4636),
		            c = n(9968),
		            s = n(6704);
		          t.exports = function (t, e) {
		            var n,
		              l,
		              f,
		              p,
		              d,
		              h = t.target,
		              v = t.global,
		              m = t.stat;
		            if (n = v ? r : m ? r[h] || a(h, {}) : r[h] && r[h].prototype) for (l in e) {
		              if (p = e[l], f = t.dontCallGetSet ? (d = o(n, l)) && d.value : n[l], !s(v ? l : h + (m ? "." : "#") + l, t.forced) && void 0 !== f) {
		                if (typeof p == typeof f) continue;
		                c(p, f);
		              }
		              (t.sham || f && f.sham) && i(p, "sham", true), u(n, l, p, t);
		            }
		          };
		        },
		        9957: function _(t) {
		          t.exports = function (t) {
		            try {
		              return !!t();
		            } catch (e) {
		              return true;
		            }
		          };
		        },
		        7176: function _(t, e, n) {
		          n(880);
		          var r = n(8448),
		            o = n(6076),
		            i = n(7680),
		            u = n(9957),
		            a = n(9972),
		            c = n(3440),
		            s = a("species"),
		            l = RegExp.prototype;
		          t.exports = function (t, e, n, f) {
		            var p = a(t),
		              d = !u(function () {
		                var e = {};
		                return e[p] = function () {
		                  return 7;
		                }, 7 !== ""[t](e);
		              }),
		              h = d && !u(function () {
		                var e = false,
		                  n = /a/;
		                return "split" === t && ((n = {}).constructor = {}, n.constructor[s] = function () {
		                  return n;
		                }, n.flags = "", n[p] = /./[p]), n.exec = function () {
		                  return e = true, null;
		                }, n[p](""), !e;
		              });
		            if (!d || !h || n) {
		              var v = /./[p],
		                m = e(p, ""[t], function (t, e, n, o, u) {
		                  var a = e.exec;
		                  return a === i || a === l.exec ? d && !u ? {
		                    done: true,
		                    value: r(v, e, n, o)
		                  } : {
		                    done: true,
		                    value: r(t, n, e, o)
		                  } : {
		                    done: false
		                  };
		                });
		              o(String.prototype, t, m[0]), o(l, p, m[1]);
		            }
		            f && c(l[p], "sham", true);
		          };
		        },
		        908: function _(t, e, n) {
		          var r = n(7332),
		            o = Function.prototype,
		            i = o.apply,
		            u = o.call;
		          t.exports = "object" == typeof Reflect && Reflect.apply || (r ? u.bind(i) : function () {
		            return u.apply(i, arguments);
		          });
		        },
		        8992: function _(t, e, n) {
		          var r = n(3180),
		            o = n(8952),
		            i = n(7332),
		            u = r(r.bind);
		          t.exports = function (t, e) {
		            return o(t), void 0 === e ? t : i ? u(t, e) : function () {
		              return t.apply(e, arguments);
		            };
		          };
		        },
		        7332: function _(t, e, n) {
		          var r = n(9957);
		          t.exports = !r(function () {
		            var t = function () {}.bind();
		            return "function" != typeof t || t.hasOwnProperty("prototype");
		          });
		        },
		        8448: function _(t, e, n) {
		          var r = n(7332),
		            o = Function.prototype.call;
		          t.exports = r ? o.bind(o) : function () {
		            return o.apply(o, arguments);
		          };
		        },
		        6208: function _(t, e, n) {
		          var r = n(3476),
		            o = n(5152),
		            i = Function.prototype,
		            u = r && Object.getOwnPropertyDescriptor,
		            a = o(i, "name"),
		            c = a && "something" === function () {}.name,
		            s = a && (!r || r && u(i, "name").configurable);
		          t.exports = {
		            EXISTS: a,
		            PROPER: c,
		            CONFIGURABLE: s
		          };
		        },
		        5288: function _(t, e, n) {
		          var r = n(1664),
		            o = n(8952);
		          t.exports = function (t, e, n) {
		            try {
		              return r(o(Object.getOwnPropertyDescriptor(t, e)[n]));
		            } catch (i) {}
		          };
		        },
		        3180: function _(t, e, n) {
		          var r = n(1888),
		            o = n(1664);
		          t.exports = function (t) {
		            if ("Function" === r(t)) return o(t);
		          };
		        },
		        1664: function _(t, e, n) {
		          var r = n(7332),
		            o = Function.prototype,
		            i = o.call,
		            u = r && o.bind.bind(i, i);
		          t.exports = r ? u : function (t) {
		            return function () {
		              return i.apply(t, arguments);
		            };
		          };
		        },
		        5232: function _(t, e, n) {
		          var r = n(6420),
		            o = n(4328);
		          t.exports = function (t, e) {
		            return arguments.length < 2 ? (n = r[t], o(n) ? n : void 0) : r[t] && r[t][e];
		            var n;
		          };
		        },
		        6752: function _(t) {
		          t.exports = function (t) {
		            return {
		              iterator: t,
		              next: t.next,
		              done: false
		            };
		          };
		        },
		        4504: function _(t, e, n) {
		          var r = n(8952),
		            o = n(9760);
		          t.exports = function (t, e) {
		            var n = t[e];
		            return o(n) ? void 0 : r(n);
		          };
		        },
		        6420: function _(t, e, n) {
		          var r = function r(t) {
		            return t && t.Math === Math && t;
		          };
		          t.exports = r("object" == typeof globalThis && globalThis) || r("object" == typeof window && window) || r("object" == typeof self && self) || r("object" == typeof n.g && n.g) || r("object" == typeof this && this) || function () {
		            return this;
		          }() || Function("return this")();
		        },
		        5152: function _(t, e, n) {
		          var r = n(1664),
		            o = n(4356),
		            i = r({}.hasOwnProperty);
		          t.exports = Object.hasOwn || function (t, e) {
		            return i(o(t), e);
		          };
		        },
		        2560: function _(t) {
		          t.exports = {};
		        },
		        4168: function _(t, e, n) {
		          var r = n(5232);
		          t.exports = r("document", "documentElement");
		        },
		        9888: function _(t, e, n) {
		          var r = n(3476),
		            o = n(9957),
		            i = n(8168);
		          t.exports = !r && !o(function () {
		            return 7 !== Object.defineProperty(i("div"), "a", {
		              get: function get() {
		                return 7;
		              }
		            }).a;
		          });
		        },
		        5712: function _(t, e, n) {
		          var r = n(1664),
		            o = n(9957),
		            i = n(1888),
		            u = Object,
		            a = r("".split);
		          t.exports = o(function () {
		            return !u("z").propertyIsEnumerable(0);
		          }) ? function (t) {
		            return "String" === i(t) ? a(t, "") : u(t);
		          } : u;
		        },
		        7512: function _(t, e, n) {
		          var r = n(4328),
		            o = n(1632),
		            i = n(4024);
		          t.exports = function (t, e, n) {
		            var u, a;
		            return i && r(u = e.constructor) && u !== n && o(a = u.prototype) && a !== n.prototype && i(t, a), t;
		          };
		        },
		        9112: function _(t, e, n) {
		          var r = n(1664),
		            o = n(4328),
		            i = n(3976),
		            u = r(Function.toString);
		          o(i.inspectSource) || (i.inspectSource = function (t) {
		            return u(t);
		          }), t.exports = i.inspectSource;
		        },
		        3480: function _(t, e, n) {
		          var r = n(1632),
		            o = n(3440);
		          t.exports = function (t, e) {
		            r(e) && "cause" in e && o(t, "cause", e.cause);
		          };
		        },
		        9104: function _(t, e, n) {
		          var r,
		            o,
		            i,
		            u = n(4288),
		            a = n(6420),
		            c = n(1632),
		            s = n(3440),
		            l = n(5152),
		            f = n(3976),
		            p = n(6504),
		            d = n(2560),
		            h = "Object already initialized",
		            v = a.TypeError,
		            m = a.WeakMap;
		          if (u || f.state) {
		            var y = f.state || (f.state = new m());
		            y.get = y.get, y.has = y.has, y.set = y.set, r = function r(t, e) {
		              if (y.has(t)) throw new v(h);
		              return e.facade = t, y.set(t, e), e;
		            }, o = function o(t) {
		              return y.get(t) || {};
		            }, i = function i(t) {
		              return y.has(t);
		            };
		          } else {
		            var g = p("state");
		            d[g] = true, r = function r(t, e) {
		              if (l(t, g)) throw new v(h);
		              return e.facade = t, s(t, g, e), e;
		            }, o = function o(t) {
		              return l(t, g) ? t[g] : {};
		            }, i = function i(t) {
		              return l(t, g);
		            };
		          }
		          t.exports = {
		            set: r,
		            get: o,
		            has: i,
		            enforce: function enforce(t) {
		              return i(t) ? o(t) : r(t, {});
		            },
		            getterFor: function getterFor(t) {
		              return function (e) {
		                var n;
		                if (!c(e) || (n = o(e)).type !== t) throw new v("Incompatible receiver, " + t + " required");
		                return n;
		              };
		            }
		          };
		        },
		        1432: function _(t, e, n) {
		          var r = n(1888);
		          t.exports = Array.isArray || function (t) {
		            return "Array" === r(t);
		          };
		        },
		        4328: function _(t) {
		          var e = "object" == typeof document && document.all;
		          t.exports = void 0 === e && void 0 !== e ? function (t) {
		            return "function" == typeof t || t === e;
		          } : function (t) {
		            return "function" == typeof t;
		          };
		        },
		        6072: function _(t, e, n) {
		          var r = n(1664),
		            o = n(9957),
		            i = n(4328),
		            u = n(4427),
		            a = n(5232),
		            c = n(9112),
		            s = function s() {},
		            l = a("Reflect", "construct"),
		            f = /^\s*(?:class|function)\b/,
		            p = r(f.exec),
		            d = !f.test(s),
		            h = function h(t) {
		              if (!i(t)) return false;
		              try {
		                return l(s, [], t), !0;
		              } catch (e) {
		                return false;
		              }
		            },
		            v = function v(t) {
		              if (!i(t)) return false;
		              switch (u(t)) {
		                case "AsyncFunction":
		                case "GeneratorFunction":
		                case "AsyncGeneratorFunction":
		                  return false;
		              }
		              try {
		                return d || !!p(f, c(t));
		              } catch (e) {
		                return true;
		              }
		            };
		          v.sham = true, t.exports = !l || o(function () {
		            var t;
		            return h(h.call) || !h(Object) || !h(function () {
		              t = true;
		            }) || t;
		          }) ? v : h;
		        },
		        6704: function _(t, e, n) {
		          var r = n(9957),
		            o = n(4328),
		            i = /#|\.prototype\./,
		            u = function u(t, e) {
		              var n = c[a(t)];
		              return n === l || n !== s && (o(e) ? r(e) : !!e);
		            },
		            a = u.normalize = function (t) {
		              return String(t).replace(i, ".").toLowerCase();
		            },
		            c = u.data = {},
		            s = u.NATIVE = "N",
		            l = u.POLYFILL = "P";
		          t.exports = u;
		        },
		        9760: function _(t) {
		          t.exports = function (t) {
		            return null == t;
		          };
		        },
		        1632: function _(t, e, n) {
		          var r = n(4328);
		          t.exports = function (t) {
		            return "object" == typeof t ? null !== t : r(t);
		          };
		        },
		        2424: function _(t, e, n) {
		          var r = n(1632);
		          t.exports = function (t) {
		            return r(t) || null === t;
		          };
		        },
		        7048: function _(t) {
		          t.exports = false;
		        },
		        7728: function _(t, e, n) {
		          var r = n(5232),
		            o = n(4328),
		            i = n(7e3),
		            u = n(6536),
		            a = Object;
		          t.exports = u ? function (t) {
		            return "symbol" == typeof t;
		          } : function (t) {
		            var e = r("Symbol");
		            return o(e) && i(e.prototype, a(t));
		          };
		        },
		        3112: function _(t, e, n) {
		          var r = n(8448),
		            o = n(3951),
		            i = n(4504);
		          t.exports = function (t, e, n) {
		            var u, a;
		            o(t);
		            try {
		              if (!(u = i(t, "return"))) {
		                if ("throw" === e) throw n;
		                return n;
		              }
		              u = r(u, t);
		            } catch (c) {
		              a = true, u = c;
		            }
		            if ("throw" === e) throw n;
		            if (a) throw u;
		            return o(u), n;
		          };
		        },
		        9724: function _(t, e, n) {
		          var r = n(8448),
		            o = n(9368),
		            i = n(3440),
		            u = n(4036),
		            a = n(9972),
		            c = n(9104),
		            s = n(4504),
		            l = n(336).IteratorPrototype,
		            f = n(3336),
		            p = n(3112),
		            d = a("toStringTag"),
		            h = "IteratorHelper",
		            v = "WrapForValidIterator",
		            m = c.set,
		            y = function y(t) {
		              var e = c.getterFor(t ? v : h);
		              return u(o(l), {
		                next: function next() {
		                  var n = e(this);
		                  if (t) return n.nextHandler();
		                  try {
		                    var r = n.done ? void 0 : n.nextHandler();
		                    return f(r, n.done);
		                  } catch (o) {
		                    throw n.done = true, o;
		                  }
		                },
		                "return": function _return() {
		                  var n = e(this),
		                    o = n.iterator;
		                  if (n.done = true, t) {
		                    var i = s(o, "return");
		                    return i ? r(i, o) : f(void 0, true);
		                  }
		                  if (n.inner) try {
		                    p(n.inner.iterator, "normal");
		                  } catch (u) {
		                    return p(o, "throw", u);
		                  }
		                  return p(o, "normal"), f(void 0, true);
		                }
		              });
		            },
		            g = y(true),
		            b = y(false);
		          i(b, d, "Iterator Helper"), t.exports = function (t, e) {
		            var n = function n(_n, r) {
		              r ? (r.iterator = _n.iterator, r.next = _n.next) : r = _n, r.type = e ? v : h, r.nextHandler = t, r.counter = 0, r.done = false, m(this, r);
		            };
		            return n.prototype = e ? g : b, n;
		          };
		        },
		        5792: function _(t, e, n) {
		          var r = n(8448),
		            o = n(8952),
		            i = n(3951),
		            u = n(6752),
		            a = n(9724),
		            c = n(8696),
		            s = a(function () {
		              var t = this.iterator,
		                e = i(r(this.next, t));
		              if (!(this.done = !!e.done)) return c(t, this.mapper, [e.value, this.counter++], true);
		            });
		          t.exports = function (t) {
		            return i(this), o(t), new s(u(this), {
		              mapper: t
		            });
		          };
		        },
		        336: function _(t, e, n) {
		          var r,
		            o,
		            i,
		            u = n(9957),
		            a = n(4328),
		            c = n(1632),
		            s = n(9368),
		            l = n(7796),
		            f = n(6076),
		            p = n(9972),
		            d = n(7048),
		            h = p("iterator"),
		            v = false;
		          [].keys && ("next" in (i = [].keys()) ? (o = l(l(i))) !== Object.prototype && (r = o) : v = true), !c(r) || u(function () {
		            var t = {};
		            return r[h].call(t) !== t;
		          }) ? r = {} : d && (r = s(r)), a(r[h]) || f(r, h, function () {
		            return this;
		          }), t.exports = {
		            IteratorPrototype: r,
		            BUGGY_SAFARI_ITERATORS: v
		          };
		        },
		        3556: function _(t, e, n) {
		          var r = n(7584);
		          t.exports = function (t) {
		            return r(t.length);
		          };
		        },
		        5312: function _(t, e, n) {
		          var r = n(1664),
		            o = n(9957),
		            i = n(4328),
		            u = n(5152),
		            a = n(3476),
		            c = n(6208).CONFIGURABLE,
		            s = n(9112),
		            l = n(9104),
		            f = l.enforce,
		            p = l.get,
		            d = String,
		            h = Object.defineProperty,
		            v = r("".slice),
		            m = r("".replace),
		            y = r([].join),
		            g = a && !o(function () {
		              return 8 !== h(function () {}, "length", {
		                value: 8
		              }).length;
		            }),
		            b = String(String).split("String"),
		            x = t.exports = function (t, e, n) {
		              "Symbol(" === v(d(e), 0, 7) && (e = "[" + m(d(e), /^Symbol\(([^)]*)\).*$/, "$1") + "]"), n && n.getter && (e = "get " + e), n && n.setter && (e = "set " + e), (!u(t, "name") || c && t.name !== e) && (a ? h(t, "name", {
		                value: e,
		                configurable: true
		              }) : t.name = e), g && n && u(n, "arity") && t.length !== n.arity && h(t, "length", {
		                value: n.arity
		              });
		              try {
		                n && u(n, "constructor") && n.constructor ? a && h(t, "prototype", {
		                  writable: !1
		                }) : t.prototype && (t.prototype = void 0);
		              } catch (o) {}
		              var r = f(t);
		              return u(r, "source") || (r.source = y(b, "string" == typeof e ? e : "")), t;
		            };
		          Function.prototype.toString = x(function () {
		            return i(this) && p(this).source || s(this);
		          }, "toString");
		        },
		        1748: function _(t) {
		          var e = Math.ceil,
		            n = Math.floor;
		          t.exports = Math.trunc || function (t) {
		            var r = +t;
		            return (r > 0 ? n : e)(r);
		          };
		        },
		        8948: function _(t, e, n) {
		          var r = n(5016);
		          t.exports = function (t, e) {
		            return void 0 === t ? arguments.length < 2 ? "" : e : r(t);
		          };
		        },
		        9292: function _(t, e, n) {
		          var r = n(3476),
		            o = n(1664),
		            i = n(8448),
		            u = n(9957),
		            a = n(1531),
		            c = n(9392),
		            s = n(8912),
		            l = n(4356),
		            f = n(5712),
		            p = Object.assign,
		            d = Object.defineProperty,
		            h = o([].concat);
		          t.exports = !p || u(function () {
		            if (r && 1 !== p({
		              b: 1
		            }, p(d({}, "a", {
		              enumerable: true,
		              get: function get() {
		                d(this, "b", {
		                  value: 3,
		                  enumerable: false
		                });
		              }
		            }), {
		              b: 2
		            })).b) return true;
		            var t = {},
		              e = {},
		              n = Symbol("assign detection"),
		              o = "abcdefghijklmnopqrst";
		            return t[n] = 7, o.split("").forEach(function (t) {
		              e[t] = t;
		            }), 7 !== p({}, t)[n] || a(p({}, e)).join("") !== o;
		          }) ? function (t, e) {
		            for (var n = l(t), o = arguments.length, u = 1, p = c.f, d = s.f; o > u;) for (var v, m = f(arguments[u++]), y = p ? h(a(m), p(m)) : a(m), g = y.length, b = 0; g > b;) v = y[b++], r && !i(d, m, v) || (n[v] = m[v]);
		            return n;
		          } : p;
		        },
		        9368: function _(t, e, n) {
		          var r,
		            o = n(3951),
		            i = n(2056),
		            u = n(8256),
		            a = n(2560),
		            c = n(4168),
		            s = n(8168),
		            l = n(6504),
		            f = "prototype",
		            p = "script",
		            d = l("IE_PROTO"),
		            h = function h() {},
		            v = function v(t) {
		              return "<" + p + ">" + t + "</" + p + ">";
		            },
		            m = function m(t) {
		              t.write(v("")), t.close();
		              var e = t.parentWindow.Object;
		              return t = null, e;
		            },
		            _y = function y() {
		              try {
		                r = new ActiveXObject("htmlfile");
		              } catch (i) {}
		              var t, e, n;
		              _y = "undefined" != typeof document ? document.domain && r ? m(r) : (e = s("iframe"), n = "java" + p + ":", e.style.display = "none", c.appendChild(e), e.src = String(n), (t = e.contentWindow.document).open(), t.write(v("document.F=Object")), t.close(), t.F) : m(r);
		              for (var o = u.length; o--;) delete _y[f][u[o]];
		              return _y();
		            };
		          a[d] = true, t.exports = Object.create || function (t, e) {
		            var n;
		            return null !== t ? (h[f] = o(t), n = new h(), h[f] = null, n[d] = t) : n = _y(), void 0 === e ? n : i.f(n, e);
		          };
		        },
		        2056: function _(t, e, n) {
		          var r = n(3476),
		            o = n(1576),
		            i = n(8352),
		            u = n(3951),
		            a = n(4096),
		            c = n(1531);
		          e.f = r && !o ? Object.defineProperties : function (t, e) {
		            u(t);
		            for (var n, r = a(e), o = c(e), s = o.length, l = 0; s > l;) i.f(t, n = o[l++], r[n]);
		            return t;
		          };
		        },
		        8352: function _(t, e, n) {
		          var r = n(3476),
		            o = n(9888),
		            i = n(1576),
		            u = n(3951),
		            a = n(88),
		            c = TypeError,
		            s = Object.defineProperty,
		            l = Object.getOwnPropertyDescriptor,
		            f = "enumerable",
		            p = "configurable",
		            d = "writable";
		          e.f = r ? i ? function (t, e, n) {
		            if (u(t), e = a(e), u(n), "function" == typeof t && "prototype" === e && "value" in n && d in n && !n[d]) {
		              var r = l(t, e);
		              r && r[d] && (t[e] = n.value, n = {
		                configurable: p in n ? n[p] : r[p],
		                enumerable: f in n ? n[f] : r[f],
		                writable: false
		              });
		            }
		            return s(t, e, n);
		          } : s : function (t, e, n) {
		            if (u(t), e = a(e), u(n), o) try {
		              return s(t, e, n);
		            } catch (r) {}
		            if ("get" in n || "set" in n) throw new c("Accessors not supported");
		            return "value" in n && (t[e] = n.value), t;
		          };
		        },
		        9444: function _(t, e, n) {
		          var r = n(3476),
		            o = n(8448),
		            i = n(8912),
		            u = n(9728),
		            a = n(4096),
		            c = n(88),
		            s = n(5152),
		            l = n(9888),
		            f = Object.getOwnPropertyDescriptor;
		          e.f = r ? f : function (t, e) {
		            if (t = a(t), e = c(e), l) try {
		              return f(t, e);
		            } catch (n) {}
		            if (s(t, e)) return u(!o(i.f, t, e), t[e]);
		          };
		        },
		        5048: function _(t, e, n) {
		          var r = n(9008),
		            o = n(8256).concat("length", "prototype");
		          e.f = Object.getOwnPropertyNames || function (t) {
		            return r(t, o);
		          };
		        },
		        9392: function _(t, e) {
		          e.f = Object.getOwnPropertySymbols;
		        },
		        7796: function _(t, e, n) {
		          var r = n(5152),
		            o = n(4328),
		            i = n(4356),
		            u = n(6504),
		            a = n(2272),
		            c = u("IE_PROTO"),
		            s = Object,
		            l = s.prototype;
		          t.exports = a ? s.getPrototypeOf : function (t) {
		            var e = i(t);
		            if (r(e, c)) return e[c];
		            var n = e.constructor;
		            return o(n) && e instanceof n ? n.prototype : e instanceof s ? l : null;
		          };
		        },
		        7e3: function _(t, e, n) {
		          var r = n(1664);
		          t.exports = r({}.isPrototypeOf);
		        },
		        9008: function _(t, e, n) {
		          var r = n(1664),
		            o = n(5152),
		            i = n(4096),
		            u = n(2504).indexOf,
		            a = n(2560),
		            c = r([].push);
		          t.exports = function (t, e) {
		            var n,
		              r = i(t),
		              s = 0,
		              l = [];
		            for (n in r) !o(a, n) && o(r, n) && c(l, n);
		            for (; e.length > s;) o(r, n = e[s++]) && (~u(l, n) || c(l, n));
		            return l;
		          };
		        },
		        1531: function _(t, e, n) {
		          var r = n(9008),
		            o = n(8256);
		          t.exports = Object.keys || function (t) {
		            return r(t, o);
		          };
		        },
		        8912: function _(t, e) {
		          var n = {}.propertyIsEnumerable,
		            r = Object.getOwnPropertyDescriptor,
		            o = r && !n.call({
		              1: 2
		            }, 1);
		          e.f = o ? function (t) {
		            var e = r(this, t);
		            return !!e && e.enumerable;
		          } : n;
		        },
		        4024: function _(t, e, n) {
		          var r = n(5288),
		            o = n(3951),
		            i = n(2096);
		          t.exports = Object.setPrototypeOf || ("__proto__" in {} ? function () {
		            var t,
		              e = false,
		              n = {};
		            try {
		              (t = r(Object.prototype, "__proto__", "set"))(n, []), e = n instanceof Array;
		            } catch (u) {}
		            return function (n, r) {
		              return o(n), i(r), e ? t(n, r) : n.__proto__ = r, n;
		            };
		          }() : void 0);
		        },
		        7032: function _(t, e, n) {
		          var r = n(16),
		            o = n(4427);
		          t.exports = r ? {}.toString : function () {
		            return "[object " + o(this) + "]";
		          };
		        },
		        2104: function _(t, e, n) {
		          var r = n(8448),
		            o = n(4328),
		            i = n(1632),
		            u = TypeError;
		          t.exports = function (t, e) {
		            var n, a;
		            if ("string" === e && o(n = t.toString) && !i(a = r(n, t))) return a;
		            if (o(n = t.valueOf) && !i(a = r(n, t))) return a;
		            if ("string" !== e && o(n = t.toString) && !i(a = r(n, t))) return a;
		            throw new u("Can't convert object to primitive value");
		          };
		        },
		        9252: function _(t, e, n) {
		          var r = n(5232),
		            o = n(1664),
		            i = n(5048),
		            u = n(9392),
		            a = n(3951),
		            c = o([].concat);
		          t.exports = r("Reflect", "ownKeys") || function (t) {
		            var e = i.f(a(t)),
		              n = u.f;
		            return n ? c(e, n(t)) : e;
		          };
		        },
		        584: function _(t, e, n) {
		          var r = n(8352).f;
		          t.exports = function (t, e, n) {
		            n in t || r(t, n, {
		              configurable: true,
		              get: function get() {
		                return e[n];
		              },
		              set: function set(t) {
		                e[n] = t;
		              }
		            });
		          };
		        },
		        9092: function _(t, e, n) {
		          var r = n(8448),
		            o = n(3951),
		            i = n(4328),
		            u = n(1888),
		            a = n(7680),
		            c = TypeError;
		          t.exports = function (t, e) {
		            var n = t.exec;
		            if (i(n)) {
		              var s = r(n, t, e);
		              return null !== s && o(s), s;
		            }
		            if ("RegExp" === u(t)) return r(a, t, e);
		            throw new c("RegExp#exec called on incompatible receiver");
		          };
		        },
		        7680: function _(t, e, n) {
		          var r,
		            o,
		            i = n(8448),
		            u = n(1664),
		            a = n(5016),
		            c = n(8872),
		            s = n(3548),
		            l = n(4696),
		            f = n(9368),
		            p = n(9104).get,
		            d = n(8e3),
		            h = n(9124),
		            v = l("native-string-replace", String.prototype.replace),
		            m = RegExp.prototype.exec,
		            _y2 = m,
		            g = u("".charAt),
		            b = u("".indexOf),
		            x = u("".replace),
		            w = u("".slice),
		            O = (o = /b*/g, i(m, r = /a/, "a"), i(m, o, "a"), 0 !== r.lastIndex || 0 !== o.lastIndex),
		            _ = s.BROKEN_CARET,
		            S = void 0 !== /()??/.exec("")[1];
		          (O || S || _ || d || h) && (_y2 = function y(t) {
		            var e,
		              n,
		              r,
		              o,
		              u,
		              s,
		              l,
		              d = this,
		              h = p(d),
		              C = a(t),
		              E = h.raw;
		            if (E) return E.lastIndex = d.lastIndex, e = i(_y2, E, C), d.lastIndex = E.lastIndex, e;
		            var I = h.groups,
		              j = _ && d.sticky,
		              A = i(c, d),
		              P = d.source,
		              N = 0,
		              k = C;
		            if (j && (A = x(A, "y", ""), -1 === b(A, "g") && (A += "g"), k = w(C, d.lastIndex), d.lastIndex > 0 && (!d.multiline || d.multiline && "\n" !== g(C, d.lastIndex - 1)) && (P = "(?: " + P + ")", k = " " + k, N++), n = new RegExp("^(?:" + P + ")", A)), S && (n = new RegExp("^" + P + "$(?!\\s)", A)), O && (r = d.lastIndex), o = i(m, j ? n : d, k), j ? o ? (o.input = w(o.input, N), o[0] = w(o[0], N), o.index = d.lastIndex, d.lastIndex += o[0].length) : d.lastIndex = 0 : O && o && (d.lastIndex = d.global ? o.index + o[0].length : r), S && o && o.length > 1 && i(v, o[0], n, function () {
		              for (u = 1; u < arguments.length - 2; u++) void 0 === arguments[u] && (o[u] = void 0);
		            }), o && I) for (o.groups = s = f(null), u = 0; u < I.length; u++) s[(l = I[u])[0]] = o[l[1]];
		            return o;
		          }), t.exports = _y2;
		        },
		        8872: function _(t, e, n) {
		          var r = n(3951);
		          t.exports = function () {
		            var t = r(this),
		              e = "";
		            return t.hasIndices && (e += "d"), t.global && (e += "g"), t.ignoreCase && (e += "i"), t.multiline && (e += "m"), t.dotAll && (e += "s"), t.unicode && (e += "u"), t.unicodeSets && (e += "v"), t.sticky && (e += "y"), e;
		          };
		        },
		        3548: function _(t, e, n) {
		          var r = n(9957),
		            o = n(6420).RegExp,
		            i = r(function () {
		              var t = o("a", "y");
		              return t.lastIndex = 2, null !== t.exec("abcd");
		            }),
		            u = i || r(function () {
		              return !o("a", "y").sticky;
		            }),
		            a = i || r(function () {
		              var t = o("^r", "gy");
		              return t.lastIndex = 2, null !== t.exec("str");
		            });
		          t.exports = {
		            BROKEN_CARET: a,
		            MISSED_STICKY: u,
		            UNSUPPORTED_Y: i
		          };
		        },
		        8e3: function _(t, e, n) {
		          var r = n(9957),
		            o = n(6420).RegExp;
		          t.exports = r(function () {
		            var t = o(".", "s");
		            return !(t.dotAll && t.test("\n") && "s" === t.flags);
		          });
		        },
		        9124: function _(t, e, n) {
		          var r = n(9957),
		            o = n(6420).RegExp;
		          t.exports = r(function () {
		            var t = o("(?<a>b)", "g");
		            return "b" !== t.exec("b").groups.a || "bc" !== "b".replace(t, "$<a>c");
		          });
		        },
		        5436: function _(t, e, n) {
		          var r = n(9760),
		            o = TypeError;
		          t.exports = function (t) {
		            if (r(t)) throw new o("Can't call method on " + t);
		            return t;
		          };
		        },
		        6504: function _(t, e, n) {
		          var r = n(4696),
		            o = n(7776),
		            i = r("keys");
		          t.exports = function (t) {
		            return i[t] || (i[t] = o(t));
		          };
		        },
		        3976: function _(t, e, n) {
		          var r = n(7048),
		            o = n(6420),
		            i = n(4636),
		            u = "__core-js_shared__",
		            a = t.exports = o[u] || i(u, {});
		          (a.versions || (a.versions = [])).push({
		            version: "3.36.0",
		            mode: r ? "pure" : "global",
		            copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)",
		            license: "https://github.com/zloirock/core-js/blob/v3.36.0/LICENSE",
		            source: "https://github.com/zloirock/core-js"
		          });
		        },
		        4696: function _(t, e, n) {
		          var r = n(3976);
		          t.exports = function (t, e) {
		            return r[t] || (r[t] = e || {});
		          };
		        },
		        9764: function _(t, e, n) {
		          var r = n(1664),
		            o = n(6180),
		            i = n(5016),
		            u = n(5436),
		            a = r("".charAt),
		            c = r("".charCodeAt),
		            s = r("".slice),
		            l = function l(t) {
		              return function (e, n) {
		                var r,
		                  l,
		                  f = i(u(e)),
		                  p = o(n),
		                  d = f.length;
		                return p < 0 || p >= d ? t ? "" : void 0 : (r = c(f, p)) < 55296 || r > 56319 || p + 1 === d || (l = c(f, p + 1)) < 56320 || l > 57343 ? t ? a(f, p) : r : t ? s(f, p, p + 2) : l - 56320 + (r - 55296 << 10) + 65536;
		              };
		            };
		          t.exports = {
		            codeAt: l(false),
		            charAt: l(true)
		          };
		        },
		        772: function _(t, e, n) {
		          var r = n(8504),
		            o = n(9957),
		            i = n(6420).String;
		          t.exports = !!Object.getOwnPropertySymbols && !o(function () {
		            var t = Symbol("symbol detection");
		            return !i(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && r && r < 41;
		          });
		        },
		        2495: function _(t, e, n) {
		          var r = n(6180),
		            o = Math.max,
		            i = Math.min;
		          t.exports = function (t, e) {
		            var n = r(t);
		            return n < 0 ? o(n + e, 0) : i(n, e);
		          };
		        },
		        4096: function _(t, e, n) {
		          var r = n(5712),
		            o = n(5436);
		          t.exports = function (t) {
		            return r(o(t));
		          };
		        },
		        6180: function _(t, e, n) {
		          var r = n(1748);
		          t.exports = function (t) {
		            var e = +t;
		            return e != e || 0 === e ? 0 : r(e);
		          };
		        },
		        7584: function _(t, e, n) {
		          var r = n(6180),
		            o = Math.min;
		          t.exports = function (t) {
		            var e = r(t);
		            return e > 0 ? o(e, 9007199254740991) : 0;
		          };
		        },
		        4356: function _(t, e, n) {
		          var r = n(5436),
		            o = Object;
		          t.exports = function (t) {
		            return o(r(t));
		          };
		        },
		        7024: function _(t, e, n) {
		          var r = n(8448),
		            o = n(1632),
		            i = n(7728),
		            u = n(4504),
		            a = n(2104),
		            c = n(9972),
		            s = TypeError,
		            l = c("toPrimitive");
		          t.exports = function (t, e) {
		            if (!o(t) || i(t)) return t;
		            var n,
		              c = u(t, l);
		            if (c) {
		              if (void 0 === e && (e = "default"), n = r(c, t, e), !o(n) || i(n)) return n;
		              throw new s("Can't convert object to primitive value");
		            }
		            return void 0 === e && (e = "number"), a(t, e);
		          };
		        },
		        88: function _(t, e, n) {
		          var r = n(7024),
		            o = n(7728);
		          t.exports = function (t) {
		            var e = r(t, "string");
		            return o(e) ? e : e + "";
		          };
		        },
		        16: function _(t, e, n) {
		          var r = {};
		          r[n(9972)("toStringTag")] = "z", t.exports = "[object z]" === String(r);
		        },
		        5016: function _(t, e, n) {
		          var r = n(4427),
		            o = String;
		          t.exports = function (t) {
		            if ("Symbol" === r(t)) throw new TypeError("Cannot convert a Symbol value to a string");
		            return o(t);
		          };
		        },
		        36: function _(t) {
		          var e = String;
		          t.exports = function (t) {
		            try {
		              return e(t);
		            } catch (n) {
		              return "Object";
		            }
		          };
		        },
		        7776: function _(t, e, n) {
		          var r = n(1664),
		            o = 0,
		            i = Math.random(),
		            u = r(1..toString);
		          t.exports = function (t) {
		            return "Symbol(" + (void 0 === t ? "" : t) + ")_" + u(++o + i, 36);
		          };
		        },
		        6536: function _(t, e, n) {
		          var r = n(772);
		          t.exports = r && !Symbol.sham && "symbol" == typeof Symbol.iterator;
		        },
		        1576: function _(t, e, n) {
		          var r = n(3476),
		            o = n(9957);
		          t.exports = r && o(function () {
		            return 42 !== Object.defineProperty(function () {}, "prototype", {
		              value: 42,
		              writable: false
		            }).prototype;
		          });
		        },
		        4288: function _(t, e, n) {
		          var r = n(6420),
		            o = n(4328),
		            i = r.WeakMap;
		          t.exports = o(i) && /native code/.test(String(i));
		        },
		        9972: function _(t, e, n) {
		          var r = n(6420),
		            o = n(4696),
		            i = n(5152),
		            u = n(7776),
		            a = n(772),
		            c = n(6536),
		            s = r.Symbol,
		            l = o("wks"),
		            f = c ? s["for"] || s : s && s.withoutSetter || u;
		          t.exports = function (t) {
		            return i(l, t) || (l[t] = a && i(s, t) ? s[t] : f("Symbol." + t)), l[t];
		          };
		        },
		        6488: function _(t, e, n) {
		          var r = n(5232),
		            o = n(5152),
		            i = n(3440),
		            u = n(7e3),
		            a = n(4024),
		            c = n(9968),
		            s = n(584),
		            l = n(7512),
		            f = n(8948),
		            p = n(3480),
		            d = n(3696),
		            h = n(3476),
		            v = n(7048);
		          t.exports = function (t, e, n, m) {
		            var y = "stackTraceLimit",
		              g = m ? 2 : 1,
		              b = t.split("."),
		              x = b[b.length - 1],
		              w = r.apply(null, b);
		            if (w) {
		              var O = w.prototype;
		              if (!v && o(O, "cause") && delete O.cause, !n) return w;
		              var _ = r("Error"),
		                S = e(function (t, e) {
		                  var n = f(m ? e : t, void 0),
		                    r = m ? new w(t) : new w();
		                  return void 0 !== n && i(r, "message", n), d(r, S, r.stack, 2), this && u(O, this) && l(r, this, S), arguments.length > g && p(r, arguments[g]), r;
		                });
		              if (S.prototype = O, "Error" !== x ? a ? a(S, _) : c(S, _, {
		                name: true
		              }) : h && y in w && (s(S, w, y), s(S, w, "prepareStackTrace")), c(S, w), !v) try {
		                O.name !== x && i(O, "name", x), O.constructor = S;
		              } catch (C) {}
		              return S;
		            }
		          };
		        },
		        7476: function _(t, e, n) {
		          var r = n(9160),
		            o = n(9957),
		            i = n(1432),
		            u = n(1632),
		            a = n(4356),
		            c = n(3556),
		            s = n(4316),
		            l = n(92),
		            f = n(2568),
		            p = n(953),
		            d = n(9972),
		            h = n(8504),
		            v = d("isConcatSpreadable"),
		            m = h >= 51 || !o(function () {
		              var t = [];
		              return t[v] = false, t.concat()[0] !== t;
		            }),
		            y = function y(t) {
		              if (!u(t)) return false;
		              var e = t[v];
		              return void 0 !== e ? !!e : i(t);
		            };
		          r({
		            target: "Array",
		            proto: true,
		            arity: 1,
		            forced: !m || !p("concat")
		          }, {
		            concat: function concat(t) {
		              var e,
		                n,
		                r,
		                o,
		                i,
		                u = a(this),
		                p = f(u, 0),
		                d = 0;
		              for (e = -1, r = arguments.length; e < r; e++) if (y(i = -1 === e ? u : arguments[e])) for (o = c(i), s(d + o), n = 0; n < o; n++, d++) n in i && l(p, d, i[n]);else s(d + 1), l(p, d++, i);
		              return p.length = d, p;
		            }
		          });
		        },
		        6932: function _(t, e, n) {
		          var r = n(9160),
		            o = n(3364).filter;
		          r({
		            target: "Array",
		            proto: true,
		            forced: !n(953)("filter")
		          }, {
		            filter: function filter(t) {
		              return o(this, t, arguments.length > 1 ? arguments[1] : void 0);
		            }
		          });
		        },
		        700: function _(t, e, n) {
		          var r = n(9160),
		            o = n(1664),
		            i = n(5712),
		            u = n(4096),
		            a = n(1496),
		            c = o([].join);
		          r({
		            target: "Array",
		            proto: true,
		            forced: i !== Object || !a("join", ",")
		          }, {
		            join: function join(t) {
		              return c(u(this), void 0 === t ? "," : t);
		            }
		          });
		        },
		        4456: function _(t, e, n) {
		          var r = n(9160),
		            o = n(3364).map;
		          r({
		            target: "Array",
		            proto: true,
		            forced: !n(953)("map")
		          }, {
		            map: function map(t) {
		              return o(this, t, arguments.length > 1 ? arguments[1] : void 0);
		            }
		          });
		        },
		        4728: function _(t, e, n) {
		          var r = n(9160),
		            o = n(4356),
		            i = n(3556),
		            u = n(6728),
		            a = n(4316);
		          r({
		            target: "Array",
		            proto: true,
		            arity: 1,
		            forced: n(9957)(function () {
		              return 4294967297 !== [].push.call({
		                length: 4294967296
		              }, 1);
		            }) || !function () {
		              try {
		                Object.defineProperty([], "length", {
		                  writable: !1
		                }).push();
		              } catch (t) {
		                return t instanceof TypeError;
		              }
		            }()
		          }, {
		            push: function push(t) {
		              var e = o(this),
		                n = i(e),
		                r = arguments.length;
		              a(n + r);
		              for (var c = 0; c < r; c++) e[n] = arguments[c], n++;
		              return u(e, n), n;
		            }
		          });
		        },
		        8752: function _(t, e, n) {
		          var r = n(9160),
		            o = n(6420),
		            i = n(908),
		            u = n(6488),
		            a = "WebAssembly",
		            c = o[a],
		            s = 7 !== new Error("e", {
		              cause: 7
		            }).cause,
		            l = function l(t, e) {
		              var n = {};
		              n[t] = u(t, e, s), r({
		                global: true,
		                constructor: true,
		                arity: 1,
		                forced: s
		              }, n);
		            },
		            f = function f(t, e) {
		              if (c && c[t]) {
		                var n = {};
		                n[t] = u(a + "." + t, e, s), r({
		                  target: a,
		                  stat: true,
		                  constructor: true,
		                  arity: 1,
		                  forced: s
		                }, n);
		              }
		            };
		          l("Error", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), l("EvalError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), l("RangeError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), l("ReferenceError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), l("SyntaxError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), l("TypeError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), l("URIError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), f("CompileError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), f("LinkError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          }), f("RuntimeError", function (t) {
		            return function (e) {
		              return i(t, this, arguments);
		            };
		          });
		        },
		        508: function _(t, e, n) {
		          var r = n(3476),
		            o = n(6208).EXISTS,
		            i = n(1664),
		            u = n(2544),
		            a = Function.prototype,
		            c = i(a.toString),
		            s = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,
		            l = i(s.exec);
		          r && !o && u(a, "name", {
		            configurable: true,
		            get: function get() {
		              try {
		                return l(s, c(this))[1];
		              } catch (t) {
		                return "";
		              }
		            }
		          });
		        },
		        232: function _(t, e, n) {
		          var r = n(9160),
		            o = n(9292);
		          r({
		            target: "Object",
		            stat: true,
		            arity: 2,
		            forced: Object.assign !== o
		          }, {
		            assign: o
		          });
		        },
		        5443: function _(t, e, n) {
		          var r = n(16),
		            o = n(6076),
		            i = n(7032);
		          r || o(Object.prototype, "toString", i, {
		            unsafe: true
		          });
		        },
		        880: function _(t, e, n) {
		          var r = n(9160),
		            o = n(7680);
		          r({
		            target: "RegExp",
		            proto: true,
		            forced: /./.exec !== o
		          }, {
		            exec: o
		          });
		        },
		        9836: function _(t, e, n) {
		          var r = n(8448),
		            o = n(7176),
		            i = n(3951),
		            u = n(9760),
		            a = n(7584),
		            c = n(5016),
		            s = n(5436),
		            l = n(4504),
		            f = n(4764),
		            p = n(9092);
		          o("match", function (t, e, n) {
		            return [function (e) {
		              var n = s(this),
		                o = u(e) ? void 0 : l(e, t);
		              return o ? r(o, e, n) : new RegExp(e)[t](c(n));
		            }, function (t) {
		              var r = i(this),
		                o = c(t),
		                u = n(e, r, o);
		              if (u.done) return u.value;
		              if (!r.global) return p(r, o);
		              var s = r.unicode;
		              r.lastIndex = 0;
		              for (var l, d = [], h = 0; null !== (l = p(r, o));) {
		                var v = c(l[0]);
		                d[h] = v, "" === v && (r.lastIndex = f(o, a(r.lastIndex), s)), h++;
		              }
		              return 0 === h ? null : d;
		            }];
		          });
		        },
		        3536: function _(t, e, n) {
		          var r = n(9160),
		            o = n(6420),
		            i = n(6100),
		            u = n(3951),
		            a = n(4328),
		            c = n(7796),
		            s = n(2544),
		            l = n(92),
		            f = n(9957),
		            p = n(5152),
		            d = n(9972),
		            h = n(336).IteratorPrototype,
		            v = n(3476),
		            m = n(7048),
		            y = "constructor",
		            g = "Iterator",
		            b = d("toStringTag"),
		            x = TypeError,
		            w = o[g],
		            O = m || !a(w) || w.prototype !== h || !f(function () {
		              w({});
		            }),
		            _ = function _() {
		              if (i(this, h), c(this) === h) throw new x("Abstract class Iterator not directly constructable");
		            },
		            S = function S(t, e) {
		              v ? s(h, t, {
		                configurable: true,
		                get: function get() {
		                  return e;
		                },
		                set: function set(e) {
		                  if (u(this), this === h) throw new x("You can't redefine this property");
		                  p(this, t) ? this[t] = e : l(this, t, e);
		                }
		              }) : h[t] = e;
		            };
		          p(h, b) || S(b, g), !O && p(h, y) && h[y] !== Object || S(y, _), _.prototype = h, r({
		            global: true,
		            constructor: true,
		            forced: O
		          }, {
		            Iterator: _
		          });
		        },
		        2144: function _(t, e, n) {
		          var r = n(9160),
		            o = n(8448),
		            i = n(8952),
		            u = n(3951),
		            a = n(6752),
		            c = n(9724),
		            s = n(8696),
		            l = n(7048),
		            f = c(function () {
		              for (var t, e, n = this.iterator, r = this.predicate, i = this.next;;) {
		                if (t = u(o(i, n)), this.done = !!t.done) return;
		                if (e = t.value, s(n, r, [e, this.counter++], true)) return e;
		              }
		            });
		          r({
		            target: "Iterator",
		            proto: true,
		            real: true,
		            forced: l
		          }, {
		            filter: function filter(t) {
		              return u(this), i(t), new f(a(this), {
		                predicate: t
		              });
		            }
		          });
		        },
		        9080: function _(t, e, n) {
		          var r = n(9160),
		            o = n(5792);
		          r({
		            target: "Iterator",
		            proto: true,
		            real: true,
		            forced: n(7048)
		          }, {
		            map: o
		          });
		        }
		      },
		      e = {};
		    function n(r) {
		      var o = e[r];
		      if (void 0 !== o) return o.exports;
		      var i = e[r] = {
		        exports: {}
		      };
		      return t[r].call(i.exports, i, i.exports, n), i.exports;
		    }
		    n.d = function (t, e) {
		      for (var r in e) n.o(e, r) && !n.o(t, r) && Object.defineProperty(t, r, {
		        enumerable: true,
		        get: e[r]
		      });
		    }, n.g = function () {
		      if ("object" == typeof globalThis) return globalThis;
		      try {
		        return this || new Function("return this")();
		      } catch (t) {
		        if ("object" == typeof window) return window;
		      }
		    }(), n.o = function (t, e) {
		      return Object.prototype.hasOwnProperty.call(t, e);
		    };
		    var r = {};
		    return function () {
		      n.d(r, {
		        "default": function _default() {
		          return Q;
		        }
		      });
		      n(8752), n(6932), n(4456), n(508), n(232), n(5443), n(3536), n(2144), n(9080);
		      var t = function t() {},
		        e = {},
		        o = [],
		        i = [];
		      function u(n, r) {
		        var u,
		          a,
		          c,
		          s,
		          l = i;
		        for (s = arguments.length; s-- > 2;) o.push(arguments[s]);
		        for (r && null != r.children && (o.length || o.push(r.children), delete r.children); o.length;) if ((a = o.pop()) && void 0 !== a.pop) for (s = a.length; s--;) o.push(a[s]);else "boolean" == typeof a && (a = null), (c = "function" != typeof n) && (null == a ? a = "" : "number" == typeof a ? a = String(a) : "string" != typeof a && (c = false)), c && u ? l[l.length - 1] += a : l === i ? l = [a] : l.push(a), u = c;
		        var f = new t();
		        return f.nodeName = n, f.children = l, f.attributes = null == r ? void 0 : r, f.key = null == r ? void 0 : r.key, void 0 !== e.vnode && e.vnode(f), f;
		      }
		      function a(t, e) {
		        for (var n in e) t[n] = e[n];
		        return t;
		      }
		      function c(t, e) {
		        t && ("function" == typeof t ? t(e) : t.current = e);
		      }
		      var s = "function" == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;
		      var l = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,
		        f = [];
		      function p(t) {
		        !t._dirty && (t._dirty = true) && 1 == f.push(t) && (e.debounceRendering || s)(d);
		      }
		      function d() {
		        for (var t; t = f.pop();) t._dirty && T(t);
		      }
		      function h(t, e, n) {
		        return "string" == typeof e || "number" == typeof e ? void 0 !== t.splitText : "string" == typeof e.nodeName ? !t._componentConstructor && v(t, e.nodeName) : n || t._componentConstructor === e.nodeName;
		      }
		      function v(t, e) {
		        return t.normalizedNodeName === e || t.nodeName.toLowerCase() === e.toLowerCase();
		      }
		      function m(t) {
		        var e = a({}, t.attributes);
		        e.children = t.children;
		        var n = t.nodeName.defaultProps;
		        if (void 0 !== n) for (var r in n) void 0 === e[r] && (e[r] = n[r]);
		        return e;
		      }
		      function y(t) {
		        var e = t.parentNode;
		        e && e.removeChild(t);
		      }
		      function g(t, e, n, r, o) {
		        if ("className" === e && (e = "class"), "key" === e) ;else if ("ref" === e) c(n, null), c(r, t);else if ("class" !== e || o) {
		          if ("style" === e) {
		            if (r && "string" != typeof r && "string" != typeof n || (t.style.cssText = r || ""), r && "object" == typeof r) {
		              if ("string" != typeof n) for (var i in n) i in r || (t.style[i] = "");
		              for (var i in r) t.style[i] = "number" == typeof r[i] && false === l.test(i) ? r[i] + "px" : r[i];
		            }
		          } else if ("dangerouslySetInnerHTML" === e) r && (t.innerHTML = r.__html || "");else if ("o" == e[0] && "n" == e[1]) {
		            var u = e !== (e = e.replace(/Capture$/, ""));
		            e = e.toLowerCase().substring(2), r ? n || t.addEventListener(e, b, u) : t.removeEventListener(e, b, u), (t._listeners || (t._listeners = {}))[e] = r;
		          } else if ("list" !== e && "type" !== e && !o && e in t) {
		            try {
		              t[e] = null == r ? "" : r;
		            } catch (s) {}
		            null != r && false !== r || "spellcheck" == e || t.removeAttribute(e);
		          } else {
		            var a = o && e !== (e = e.replace(/^xlink:?/, ""));
		            null == r || false === r ? a ? t.removeAttributeNS("http://www.w3.org/1999/xlink", e.toLowerCase()) : t.removeAttribute(e) : "function" != typeof r && (a ? t.setAttributeNS("http://www.w3.org/1999/xlink", e.toLowerCase(), r) : t.setAttribute(e, r));
		          }
		        } else t.className = r || "";
		      }
		      function b(t) {
		        return this._listeners[t.type](e.event && e.event(t) || t);
		      }
		      var x = [],
		        w = 0,
		        O = false,
		        _ = false;
		      function S() {
		        for (var t; t = x.shift();) e.afterMount && e.afterMount(t), t.componentDidMount && t.componentDidMount();
		      }
		      function C(t, e, n, r, o, i) {
		        w++ || (O = null != o && void 0 !== o.ownerSVGElement, _ = null != t && !("__preactattr_" in t));
		        var u = E(t, e, n, r, i);
		        return o && u.parentNode !== o && o.appendChild(u), --w || (_ = false, i || S()), u;
		      }
		      function E(t, e, n, r, o) {
		        var i = t,
		          u = O;
		        if (null != e && "boolean" != typeof e || (e = ""), "string" == typeof e || "number" == typeof e) return t && void 0 !== t.splitText && t.parentNode && (!t._component || o) ? t.nodeValue != e && (t.nodeValue = e) : (i = document.createTextNode(e), t && (t.parentNode && t.parentNode.replaceChild(i, t), I(t, true))), i.__preactattr_ = true, i;
		        var a,
		          c,
		          s = e.nodeName;
		        if ("function" == typeof s) return function (t, e, n, r) {
		          var o = t && t._component,
		            i = o,
		            u = t,
		            a = o && t._componentConstructor === e.nodeName,
		            c = a,
		            s = m(e);
		          for (; o && !c && (o = o._parentComponent);) c = o.constructor === e.nodeName;
		          o && c && (!r || o._component) ? (k(o, s, 3, n, r), t = o.base) : (i && !a && (R(i), t = u = null), o = P(e.nodeName, s, n), t && !o.nextBase && (o.nextBase = t, u = null), k(o, s, 1, n, r), t = o.base, u && t !== u && (u._component = null, I(u, false)));
		          return t;
		        }(t, e, n, r);
		        if (O = "svg" === s || "foreignObject" !== s && O, s = String(s), (!t || !v(t, s)) && (a = s, (c = O ? document.createElementNS("http://www.w3.org/2000/svg", a) : document.createElement(a)).normalizedNodeName = a, i = c, t)) {
		          for (; t.firstChild;) i.appendChild(t.firstChild);
		          t.parentNode && t.parentNode.replaceChild(i, t), I(t, true);
		        }
		        var l = i.firstChild,
		          f = i.__preactattr_,
		          p = e.children;
		        if (null == f) {
		          f = i.__preactattr_ = {};
		          for (var d = i.attributes, b = d.length; b--;) f[d[b].name] = d[b].value;
		        }
		        return !_ && p && 1 === p.length && "string" == typeof p[0] && null != l && void 0 !== l.splitText && null == l.nextSibling ? l.nodeValue != p[0] && (l.nodeValue = p[0]) : (p && p.length || null != l) && function (t, e, n, r, o) {
		          var i,
		            u,
		            a,
		            c,
		            s,
		            l = t.childNodes,
		            f = [],
		            p = {},
		            d = 0,
		            v = 0,
		            m = l.length,
		            g = 0,
		            b = e ? e.length : 0;
		          if (0 !== m) for (var x = 0; x < m; x++) {
		            var w = l[x],
		              O = w.__preactattr_;
		            null != (_ = b && O ? w._component ? w._component.__key : O.key : null) ? (d++, p[_] = w) : (O || (void 0 !== w.splitText ? !o || w.nodeValue.trim() : o)) && (f[g++] = w);
		          }
		          if (0 !== b) for (x = 0; x < b; x++) {
		            var _;
		            if (s = null, null != (_ = (c = e[x]).key)) d && void 0 !== p[_] && (s = p[_], p[_] = void 0, d--);else if (v < g) for (i = v; i < g; i++) if (void 0 !== f[i] && h(u = f[i], c, o)) {
		              s = u, f[i] = void 0, i === g - 1 && g--, i === v && v++;
		              break;
		            }
		            s = E(s, c, n, r), a = l[x], s && s !== t && s !== a && (null == a ? t.appendChild(s) : s === a.nextSibling ? y(a) : t.insertBefore(s, a));
		          }
		          if (d) for (var x in p) void 0 !== p[x] && I(p[x], false);
		          for (; v <= g;) void 0 !== (s = f[g--]) && I(s, false);
		        }(i, p, n, r, _ || null != f.dangerouslySetInnerHTML), function (t, e, n) {
		          var r;
		          for (r in n) e && null != e[r] || null == n[r] || g(t, r, n[r], n[r] = void 0, O);
		          for (r in e) "children" === r || "innerHTML" === r || r in n && e[r] === ("value" === r || "checked" === r ? t[r] : n[r]) || g(t, r, n[r], n[r] = e[r], O);
		        }(i, e.attributes, f), O = u, i;
		      }
		      function I(t, e) {
		        var n = t._component;
		        n ? R(n) : (null != t.__preactattr_ && c(t.__preactattr_.ref, null), false !== e && null != t.__preactattr_ || y(t), j(t));
		      }
		      function j(t) {
		        for (t = t.lastChild; t;) {
		          var e = t.previousSibling;
		          I(t, true), t = e;
		        }
		      }
		      var A = [];
		      function P(t, e, n) {
		        var r,
		          o = A.length;
		        for (t.prototype && t.prototype.render ? (r = new t(e, n), M.call(r, e, n)) : ((r = new M(e, n)).constructor = t, r.render = N); o--;) if (A[o].constructor === t) return r.nextBase = A[o].nextBase, A.splice(o, 1), r;
		        return r;
		      }
		      function N(t, e, n) {
		        return this.constructor(t, n);
		      }
		      function k(t, n, r, o, i) {
		        t._disable || (t._disable = true, t.__ref = n.ref, t.__key = n.key, delete n.ref, delete n.key, void 0 === t.constructor.getDerivedStateFromProps && (!t.base || i ? t.componentWillMount && t.componentWillMount() : t.componentWillReceiveProps && t.componentWillReceiveProps(n, o)), o && o !== t.context && (t.prevContext || (t.prevContext = t.context), t.context = o), t.prevProps || (t.prevProps = t.props), t.props = n, t._disable = false, 0 !== r && (1 !== r && false === e.syncComponentUpdates && t.base ? p(t) : T(t, 1, i)), c(t.__ref, t));
		      }
		      function T(t, n, r, o) {
		        if (!t._disable) {
		          var i,
		            u,
		            c,
		            s = t.props,
		            l = t.state,
		            f = t.context,
		            p = t.prevProps || s,
		            d = t.prevState || l,
		            h = t.prevContext || f,
		            v = t.base,
		            y = t.nextBase,
		            g = v || y,
		            b = t._component,
		            O = false,
		            _ = h;
		          if (t.constructor.getDerivedStateFromProps && (l = a(a({}, l), t.constructor.getDerivedStateFromProps(s, l)), t.state = l), v && (t.props = p, t.state = d, t.context = h, 2 !== n && t.shouldComponentUpdate && false === t.shouldComponentUpdate(s, l, f) ? O = true : t.componentWillUpdate && t.componentWillUpdate(s, l, f), t.props = s, t.state = l, t.context = f), t.prevProps = t.prevState = t.prevContext = t.nextBase = null, t._dirty = false, !O) {
		            i = t.render(s, l, f), t.getChildContext && (f = a(a({}, f), t.getChildContext())), v && t.getSnapshotBeforeUpdate && (_ = t.getSnapshotBeforeUpdate(p, d));
		            var E,
		              j,
		              A = i && i.nodeName;
		            if ("function" == typeof A) {
		              var N = m(i);
		              (u = b) && u.constructor === A && N.key == u.__key ? k(u, N, 1, f, false) : (E = u, t._component = u = P(A, N, f), u.nextBase = u.nextBase || y, u._parentComponent = t, k(u, N, 0, f, false), T(u, 1, r, true)), j = u.base;
		            } else c = g, (E = b) && (c = t._component = null), (g || 1 === n) && (c && (c._component = null), j = C(c, i, f, r || !v, g && g.parentNode, true));
		            if (g && j !== g && u !== b) {
		              var M = g.parentNode;
		              M && j !== M && (M.replaceChild(j, g), E || (g._component = null, I(g, false)));
		            }
		            if (E && R(E), t.base = j, j && !o) {
		              for (var L = t, D = t; D = D._parentComponent;) (L = D).base = j;
		              j._component = L, j._componentConstructor = L.constructor;
		            }
		          }
		          for (!v || r ? x.push(t) : O || (t.componentDidUpdate && t.componentDidUpdate(p, d, _), e.afterUpdate && e.afterUpdate(t)); t._renderCallbacks.length;) t._renderCallbacks.pop().call(t);
		          w || o || S();
		        }
		      }
		      function R(t) {
		        e.beforeUnmount && e.beforeUnmount(t);
		        var n = t.base;
		        t._disable = true, t.componentWillUnmount && t.componentWillUnmount(), t.base = null;
		        var r = t._component;
		        r ? R(r) : n && (null != n.__preactattr_ && c(n.__preactattr_.ref, null), t.nextBase = n, y(n), A.push(t), j(n)), c(t.__ref, null);
		      }
		      function M(t, e) {
		        this._dirty = true, this.context = e, this.props = t, this.state = this.state || {}, this._renderCallbacks = [];
		      }
		      function L(t, e, n) {
		        return C(n, t, {}, false, e, false);
		      }
		      a(M.prototype, {
		        setState: function setState(t, e) {
		          this.prevState || (this.prevState = this.state), this.state = a(a({}, this.state), "function" == typeof t ? t(this.state, this.props) : t), e && this._renderCallbacks.push(e), p(this);
		        },
		        forceUpdate: function forceUpdate(t) {
		          t && this._renderCallbacks.push(t), T(this, 2);
		        },
		        render: function render() {}
		      });
		      n(700), n(4728), n(880), n(9836), n(7476);
		      function D(t, e) {
		        return D = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
		          return t.__proto__ = e, t;
		        }, D(t, e);
		      }
		      var B = function (t) {
		        var e, n;
		        function r() {
		          for (var e, n = arguments.length, r = new Array(n), o = 0; o < n; o++) r[o] = arguments[o];
		          return (e = t.call.apply(t, [this].concat(r)) || this).state = {
		            bump: false,
		            debounced: false
		          }, e;
		        }
		        n = t, (e = r).prototype = Object.create(n.prototype), e.prototype.constructor = e, D(e, n);
		        var o = r.prototype;
		        return o.componentWillMount = function () {
		          var t,
		            e,
		            r,
		            o = this;
		          this.debounceStatusUpdate = (t = function t() {
		            if (!o.state.debounced) {
		              var t = !o.props.isInFocus || o.props.validChoiceMade;
		              o.setState(function (e) {
		                return {
		                  bump: !e.bump,
		                  debounced: true,
		                  silenced: t
		                };
		              });
		            }
		          }, e = 1400, function () {
		            var o = this,
		              i = arguments;
		            clearTimeout(r), r = setTimeout(function () {
		              r = null, t.apply(o, i);
		            }, e);
		          });
		        }, o.componentWillReceiveProps = function (t) {
		          t.queryLength;
		          this.setState({
		            debounced: false
		          });
		        }, o.render = function () {
		          var t = this.props,
		            e = t.id,
		            n = t.length,
		            r = t.queryLength,
		            o = t.minQueryLength,
		            i = t.selectedOption,
		            a = t.selectedOptionIndex,
		            c = t.tQueryTooShort,
		            s = t.tNoResults,
		            l = t.tSelectedOption,
		            f = t.tResults,
		            p = t.className,
		            d = this.state,
		            h = d.bump,
		            v = d.debounced,
		            m = d.silenced,
		            y = r < o,
		            g = 0 === n,
		            b = i ? l(i, n, a) : "",
		            x = null;
		          return x = y ? c(o) : g ? s() : f(n, b), this.debounceStatusUpdate(), u("div", {
		            className: p,
		            style: {
		              border: "0",
		              clip: "rect(0 0 0 0)",
		              height: "1px",
		              marginBottom: "-1px",
		              marginRight: "-1px",
		              overflow: "hidden",
		              padding: "0",
		              position: "absolute",
		              whiteSpace: "nowrap",
		              width: "1px"
		            }
		          }, u("div", {
		            id: e + "__status--A",
		            role: "status",
		            "aria-atomic": "true",
		            "aria-live": "polite"
		          }, !m && v && h ? x : ""), u("div", {
		            id: e + "__status--B",
		            role: "status",
		            "aria-atomic": "true",
		            "aria-live": "polite"
		          }, m || !v || h ? "" : x));
		        }, r;
		      }(M);
		      B.defaultProps = {
		        tQueryTooShort: function tQueryTooShort(t) {
		          return "Type in " + t + " or more characters for results";
		        },
		        tNoResults: function tNoResults() {
		          return "No search results";
		        },
		        tSelectedOption: function tSelectedOption(t, e, n) {
		          return t + " " + (n + 1) + " of " + e + " is highlighted";
		        },
		        tResults: function tResults(t, e) {
		          return t + " " + (1 === t ? "result" : "results") + " " + (1 === t ? "is" : "are") + " available. " + e;
		        }
		      };
		      var F = function F(t) {
		        return u("svg", {
		          version: "1.1",
		          xmlns: "http://www.w3.org/2000/svg",
		          className: t.className,
		          focusable: "false"
		        }, u("g", {
		          stroke: "none",
		          fill: "none",
		          "fill-rule": "evenodd"
		        }, u("polygon", {
		          fill: "#000000",
		          points: "0 0 22 0 11 17"
		        })));
		      };
		      function U() {
		        return U = Object.assign ? Object.assign.bind() : function (t) {
		          for (var e = 1; e < arguments.length; e++) {
		            var n = arguments[e];
		            for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]);
		          }
		          return t;
		        }, U.apply(this, arguments);
		      }
		      function V(t) {
		        if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
		        return t;
		      }
		      function q(t, e) {
		        return q = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
		          return t.__proto__ = e, t;
		        }, q(t, e);
		      }
		      var W = {
		        13: "enter",
		        27: "escape",
		        32: "space",
		        38: "up",
		        40: "down"
		      };
		      function H() {
		        return "undefined" != typeof navigator && !(!navigator.userAgent.match(/(iPod|iPhone|iPad)/g) || !navigator.userAgent.match(/AppleWebKit/g));
		      }
		      var K = function (t) {
		        var e, n;
		        function r(e) {
		          var n;
		          return (n = t.call(this, e) || this).elementReferences = {}, n.state = {
		            focused: null,
		            hovered: null,
		            menuOpen: false,
		            options: e.defaultValue ? [e.defaultValue] : [],
		            query: e.defaultValue,
		            validChoiceMade: false,
		            selected: null,
		            ariaHint: true
		          }, n.handleComponentBlur = n.handleComponentBlur.bind(V(n)), n.handleKeyDown = n.handleKeyDown.bind(V(n)), n.handleUpArrow = n.handleUpArrow.bind(V(n)), n.handleDownArrow = n.handleDownArrow.bind(V(n)), n.handleEnter = n.handleEnter.bind(V(n)), n.handlePrintableKey = n.handlePrintableKey.bind(V(n)), n.handleListMouseLeave = n.handleListMouseLeave.bind(V(n)), n.handleOptionBlur = n.handleOptionBlur.bind(V(n)), n.handleOptionClick = n.handleOptionClick.bind(V(n)), n.handleOptionFocus = n.handleOptionFocus.bind(V(n)), n.handleOptionMouseDown = n.handleOptionMouseDown.bind(V(n)), n.handleOptionMouseEnter = n.handleOptionMouseEnter.bind(V(n)), n.handleInputBlur = n.handleInputBlur.bind(V(n)), n.handleInputChange = n.handleInputChange.bind(V(n)), n.handleInputClick = n.handleInputClick.bind(V(n)), n.handleInputFocus = n.handleInputFocus.bind(V(n)), n.pollInputElement = n.pollInputElement.bind(V(n)), n.getDirectInputChanges = n.getDirectInputChanges.bind(V(n)), n;
		        }
		        n = t, (e = r).prototype = Object.create(n.prototype), e.prototype.constructor = e, q(e, n);
		        var o = r.prototype;
		        return o.isQueryAnOption = function (t, e) {
		          var n = this;
		          return -1 !== e.map(function (t) {
		            return n.templateInputValue(t).toLowerCase();
		          }).indexOf(t.toLowerCase());
		        }, o.componentDidMount = function () {
		          this.pollInputElement();
		        }, o.componentWillUnmount = function () {
		          clearTimeout(this.$pollInput);
		        }, o.pollInputElement = function () {
		          var t = this;
		          this.getDirectInputChanges(), this.$pollInput = setTimeout(function () {
		            t.pollInputElement();
		          }, 100);
		        }, o.getDirectInputChanges = function () {
		          var t = this.elementReferences[-1];
		          t && t.value !== this.state.query && this.handleInputChange({
		            target: {
		              value: t.value
		            }
		          });
		        }, o.componentDidUpdate = function (t, e) {
		          var n = this.state.focused,
		            r = null === n,
		            o = e.focused !== n;
		          o && !r && this.elementReferences[n].focus();
		          var i = -1 === n,
		            u = o && null === e.focused;
		          if (i && u) {
		            var a = this.elementReferences[n];
		            a.setSelectionRange(0, a.value.length);
		          }
		        }, o.hasAutoselect = function () {
		          return !H() && this.props.autoselect;
		        }, o.templateInputValue = function (t) {
		          var e = this.props.templates && this.props.templates.inputValue;
		          return e ? e(t) : t;
		        }, o.templateSuggestion = function (t) {
		          var e = this.props.templates && this.props.templates.suggestion;
		          return e ? e(t) : t;
		        }, o.handleComponentBlur = function (t) {
		          var e,
		            n = this.state,
		            r = n.options,
		            o = n.query,
		            i = n.selected;
		          this.props.confirmOnBlur ? (e = t.query || o, this.props.onConfirm(r[i])) : e = o, this.setState({
		            focused: null,
		            menuOpen: t.menuOpen || false,
		            query: e,
		            selected: null,
		            validChoiceMade: this.isQueryAnOption(e, r)
		          });
		        }, o.handleListMouseLeave = function (t) {
		          this.setState({
		            hovered: null
		          });
		        }, o.handleOptionBlur = function (t, e) {
		          var n = this.state,
		            r = n.focused,
		            o = n.menuOpen,
		            i = n.options,
		            u = n.selected,
		            a = null === t.relatedTarget,
		            c = t.relatedTarget === this.elementReferences[-1],
		            s = r !== e && -1 !== r;
		          if (!s && a || !(s || c)) {
		            var l = o && H();
		            this.handleComponentBlur({
		              menuOpen: l,
		              query: this.templateInputValue(i[u])
		            });
		          }
		        }, o.handleInputBlur = function (t) {
		          var e = this.state,
		            n = e.focused,
		            r = e.menuOpen,
		            o = e.options,
		            i = e.query,
		            u = e.selected;
		          if (!(-1 !== n)) {
		            var a = r && H(),
		              c = H() ? i : this.templateInputValue(o[u]);
		            this.handleComponentBlur({
		              menuOpen: a,
		              query: c
		            });
		          }
		        }, o.handleInputChange = function (t) {
		          var e = this,
		            n = this.props,
		            r = n.minLength,
		            o = n.source,
		            i = n.showAllValues,
		            u = this.hasAutoselect(),
		            a = t.target.value,
		            c = 0 === a.length,
		            s = this.state.query !== a,
		            l = a.length >= r;
		          this.setState({
		            query: a,
		            ariaHint: c
		          }), i || !c && s && l ? o(a, function (t) {
		            var n = t.length > 0;
		            e.setState({
		              menuOpen: n,
		              options: t,
		              selected: u && n ? 0 : -1,
		              validChoiceMade: false
		            });
		          }) : !c && l || this.setState({
		            menuOpen: false,
		            options: []
		          });
		        }, o.handleInputClick = function (t) {
		          this.handleInputChange(t);
		        }, o.handleInputFocus = function (t) {
		          var e = this.state,
		            n = e.query,
		            r = e.validChoiceMade,
		            o = e.options,
		            i = this.props.minLength,
		            u = !r && n.length >= i && o.length > 0;
		          u ? this.setState(function (t) {
		            var e = t.menuOpen;
		            return {
		              focused: -1,
		              menuOpen: u || e,
		              selected: -1
		            };
		          }) : this.setState({
		            focused: -1
		          });
		        }, o.handleOptionFocus = function (t) {
		          this.setState({
		            focused: t,
		            hovered: null,
		            selected: t
		          });
		        }, o.handleOptionMouseEnter = function (t, e) {
		          H() || this.setState({
		            hovered: e
		          });
		        }, o.handleOptionClick = function (t, e) {
		          var n = this.state.options[e],
		            r = this.templateInputValue(n);
		          this.props.onConfirm(n), this.setState({
		            focused: -1,
		            hovered: null,
		            menuOpen: false,
		            query: r,
		            selected: -1,
		            validChoiceMade: true
		          }), this.forceUpdate();
		        }, o.handleOptionMouseDown = function (t) {
		          t.preventDefault();
		        }, o.handleUpArrow = function (t) {
		          t.preventDefault();
		          var e = this.state,
		            n = e.menuOpen,
		            r = e.selected;
		          -1 !== r && n && this.handleOptionFocus(r - 1);
		        }, o.handleDownArrow = function (t) {
		          var e = this;
		          if (t.preventDefault(), this.props.showAllValues && false === this.state.menuOpen) t.preventDefault(), this.props.source("", function (t) {
		            e.setState({
		              menuOpen: true,
		              options: t,
		              selected: 0,
		              focused: 0,
		              hovered: null
		            });
		          });else if (true === this.state.menuOpen) {
		            var n = this.state,
		              r = n.menuOpen,
		              o = n.options,
		              i = n.selected;
		            i !== o.length - 1 && r && this.handleOptionFocus(i + 1);
		          }
		        }, o.handleSpace = function (t) {
		          var e = this;
		          this.props.showAllValues && false === this.state.menuOpen && "" === this.state.query && (t.preventDefault(), this.props.source("", function (t) {
		            e.setState({
		              menuOpen: true,
		              options: t
		            });
		          })), -1 !== this.state.focused && (t.preventDefault(), this.handleOptionClick(t, this.state.focused));
		        }, o.handleEnter = function (t) {
		          this.state.menuOpen && (t.preventDefault(), this.state.selected >= 0 && this.handleOptionClick(t, this.state.selected));
		        }, o.handlePrintableKey = function (t) {
		          var e = this.elementReferences[-1];
		          t.target === e || e.focus();
		        }, o.handleKeyDown = function (t) {
		          switch (W[t.keyCode]) {
		            case "up":
		              this.handleUpArrow(t);
		              break;
		            case "down":
		              this.handleDownArrow(t);
		              break;
		            case "space":
		              this.handleSpace(t);
		              break;
		            case "enter":
		              this.handleEnter(t);
		              break;
		            case "escape":
		              this.handleComponentBlur({
		                query: this.state.query
		              });
		              break;
		            default:
		              ((e = t.keyCode) > 47 && e < 58 || 32 === e || 8 === e || e > 64 && e < 91 || e > 95 && e < 112 || e > 185 && e < 193 || e > 218 && e < 223) && this.handlePrintableKey(t);
		          }
		          var e;
		        }, o.render = function () {
		          var t,
		            e = this,
		            n = this.props,
		            r = n.cssNamespace,
		            o = n.displayMenu,
		            i = n.id,
		            a = n.minLength,
		            c = n.name,
		            s = n.placeholder,
		            l = n.required,
		            f = n.showAllValues,
		            p = n.tNoResults,
		            d = n.tStatusQueryTooShort,
		            h = n.tStatusNoResults,
		            v = n.tStatusSelectedOption,
		            m = n.tStatusResults,
		            y = n.tAssistiveHint,
		            g = n.dropdownArrow,
		            b = n.menuAttributes,
		            x = n.inputClasses,
		            w = n.hintClasses,
		            O = n.menuClasses,
		            _ = this.state,
		            S = _.focused,
		            C = _.hovered,
		            E = _.menuOpen,
		            I = _.options,
		            j = _.query,
		            A = _.selected,
		            P = _.ariaHint,
		            N = _.validChoiceMade,
		            k = this.hasAutoselect(),
		            T = -1 === S,
		            R = 0 === I.length,
		            M = 0 !== j.length,
		            L = j.length >= a,
		            D = this.props.showNoOptionsFound && T && R && M && L,
		            F = r + "__wrapper",
		            V = r + "__status",
		            q = r + "__dropdown-arrow-down",
		            W = -1 !== S && null !== S,
		            K = r + "__option",
		            z = r + "__hint",
		            G = this.templateInputValue(I[A]),
		            Q = G && 0 === G.toLowerCase().indexOf(j.toLowerCase()) && k ? j + G.substr(j.length) : "",
		            $ = i + "__assistiveHint",
		            Y = {
		              "aria-describedby": P ? $ : null,
		              "aria-expanded": E ? "true" : "false",
		              "aria-activedescendant": W ? i + "__option--" + S : null,
		              "aria-controls": i + "__listbox",
		              "aria-autocomplete": this.hasAutoselect() ? "both" : "list"
		            };
		          f && "string" == typeof (t = g({
		            className: q
		          })) && (t = u("div", {
		            className: r + "__dropdown-arrow-down-wrapper",
		            dangerouslySetInnerHTML: {
		              __html: t
		            }
		          }));
		          var X = r + "__input",
		            J = [X, this.props.showAllValues ? X + "--show-all-values" : X + "--default"];
		          null !== S && J.push(X + "--focused"), x && J.push(x);
		          var Z = r + "__menu",
		            tt = [Z, Z + "--" + o, Z + "--" + (E || D ? "visible" : "hidden")];
		          O && tt.push(O), (null != b && b["class"] || null != b && b.className) && tt.push((null == b ? void 0 : b["class"]) || (null == b ? void 0 : b.className));
		          var et = Object.assign({
		            "aria-labelledby": i
		          }, b, {
		            id: i + "__listbox",
		            role: "listbox",
		            className: tt.join(" "),
		            onMouseLeave: this.handleListMouseLeave
		          });
		          return delete et["class"], u("div", {
		            className: F,
		            onKeyDown: this.handleKeyDown
		          }, u(B, {
		            id: i,
		            length: I.length,
		            queryLength: j.length,
		            minQueryLength: a,
		            selectedOption: this.templateInputValue(I[A]),
		            selectedOptionIndex: A,
		            validChoiceMade: N,
		            isInFocus: null !== this.state.focused,
		            tQueryTooShort: d,
		            tNoResults: h,
		            tSelectedOption: v,
		            tResults: m,
		            className: V
		          }), Q && u("span", null, u("input", {
		            className: [z, null === w ? x : w].filter(Boolean).join(" "),
		            readonly: true,
		            tabIndex: "-1",
		            value: Q
		          })), u("input", U({}, Y, {
		            autoComplete: "off",
		            className: J.join(" "),
		            id: i,
		            onClick: this.handleInputClick,
		            onBlur: this.handleInputBlur
		          }, {
		            onInput: this.handleInputChange
		          }, {
		            onFocus: this.handleInputFocus,
		            name: c,
		            placeholder: s,
		            ref: function ref(t) {
		              e.elementReferences[-1] = t;
		            },
		            type: "text",
		            role: "combobox",
		            required: l,
		            value: j
		          })), t, u("ul", et, I.map(function (t, n) {
		            var r = (-1 === S ? A === n : S === n) && null === C ? " " + K + "--focused" : "",
		              o = n % 2 ? " " + K + "--odd" : "",
		              a = H() ? "<span id=" + i + "__option-suffix--" + n + ' style="border:0;clip:rect(0 0 0 0);height:1px;marginBottom:-1px;marginRight:-1px;overflow:hidden;padding:0;position:absolute;whiteSpace:nowrap;width:1px"> ' + (n + 1) + " of " + I.length + "</span>" : "";
		            return u("li", {
		              "aria-selected": S === n ? "true" : "false",
		              className: "" + K + r + o,
		              dangerouslySetInnerHTML: {
		                __html: e.templateSuggestion(t) + a
		              },
		              id: i + "__option--" + n,
		              key: n,
		              onBlur: function onBlur(t) {
		                return e.handleOptionBlur(t, n);
		              },
		              onClick: function onClick(t) {
		                return e.handleOptionClick(t, n);
		              },
		              onMouseDown: e.handleOptionMouseDown,
		              onMouseEnter: function onMouseEnter(t) {
		                return e.handleOptionMouseEnter(t, n);
		              },
		              ref: function ref(t) {
		                e.elementReferences[n] = t;
		              },
		              role: "option",
		              tabIndex: "-1",
		              "aria-posinset": n + 1,
		              "aria-setsize": I.length
		            });
		          }), D && u("li", {
		            className: K + " " + K + "--no-results",
		            role: "option",
		            "aria-disabled": "true"
		          }, p())), u("span", {
		            id: $,
		            style: {
		              display: "none"
		            }
		          }, y()));
		        }, r;
		      }(M);
		      function z(t) {
		        if (!t.element) throw new Error("element is not defined");
		        if (!t.id) throw new Error("id is not defined");
		        if (!t.source) throw new Error("source is not defined");
		        Array.isArray(t.source) && (t.source = G(t.source)), L(u(K, t), t.element);
		      }
		      K.defaultProps = {
		        autoselect: false,
		        cssNamespace: "autocomplete",
		        defaultValue: "",
		        displayMenu: "inline",
		        minLength: 0,
		        name: "input-autocomplete",
		        placeholder: "",
		        onConfirm: function onConfirm() {},
		        confirmOnBlur: true,
		        showNoOptionsFound: true,
		        showAllValues: false,
		        required: false,
		        tNoResults: function tNoResults() {
		          return "No results found";
		        },
		        tAssistiveHint: function tAssistiveHint() {
		          return "When autocomplete results are available use up and down arrows to review and enter to select.  Touch device users, explore by touch or with swipe gestures.";
		        },
		        dropdownArrow: F,
		        menuAttributes: {},
		        inputClasses: null,
		        hintClasses: null,
		        menuClasses: null
		      };
		      var G = function G(t) {
		        return function (e, n) {
		          n(t.filter(function (t) {
		            return -1 !== t.toLowerCase().indexOf(e.toLowerCase());
		          }));
		        };
		      };
		      z.enhanceSelectElement = function (t) {
		        if (!t.selectElement) throw new Error("selectElement is not defined");
		        if (!t.source) {
		          var e = [].filter.call(t.selectElement.options, function (e) {
		            return e.value || t.preserveNullOptions;
		          });
		          t.source = e.map(function (t) {
		            return t.textContent || t.innerText;
		          });
		        }
		        if (t.onConfirm = t.onConfirm || function (e) {
		          var n = [].filter.call(t.selectElement.options, function (t) {
		            return (t.textContent || t.innerText) === e;
		          })[0];
		          n && (n.selected = true);
		        }, t.selectElement.value || void 0 === t.defaultValue) {
		          var n = t.selectElement.options[t.selectElement.options.selectedIndex];
		          t.defaultValue = n.textContent || n.innerText;
		        }
		        void 0 === t.name && (t.name = ""), void 0 === t.id && (void 0 === t.selectElement.id ? t.id = "" : t.id = t.selectElement.id), void 0 === t.autoselect && (t.autoselect = true);
		        var r = document.createElement("div");
		        t.selectElement.parentNode.insertBefore(r, t.selectElement), z(Object.assign({}, t, {
		          element: r
		        })), t.selectElement.style.display = "none", t.selectElement.id = t.selectElement.id + "-select";
		      };
		      var Q = z;
		    }(), r = r["default"];
		  }();
		}); 
	} (accessibleAutocomplete_min));
	return accessibleAutocomplete_min.exports;
}

var accessibleAutocomplete_minExports = requireAccessibleAutocomplete_min();
var accessibleAutocomplete = /*@__PURE__*/getDefaultExportFromCjs(accessibleAutocomplete_minExports);

class SelectCountryFromForm {
    static moduleName = 'dm-select-country-from-form';
    $module;
    constructor($module) {
        this.$module = $module;
    }
    init() {
        accessibleAutocomplete.enhanceSelectElement({
            selectElement: this.$module.get(0)
        });
    }
}

const createAll = (Component) => {
    $(`[data-module="${Component.moduleName}"]`).each((_index, componentElement) => {
        new Component($(componentElement)).init();
    });
};
const initAll = () => {
    const components = [
        ComplianceCommunicationAttachments,
        CookieSettings,
        CookieBanner,
        ListInput,
        OptionSelect,
        QuestionCheckboxTree,
        QuestionList,
        QuestionListMultiquestionClientSide,
        Question,
        SearchBox,
        SelectCountryFromForm
    ];
    components.forEach((Component) => {
        createAll(Component);
    });
    initGoogleAnalytics();
};

export { ComplianceCommunicationAttachments, CookieBanner, CookieSettings, ListInput, OptionSelect, Question, QuestionCheckboxTree, QuestionList, QuestionListMultiquestionClientSide, SearchBox, SelectCountryFromForm, createAll, initAll, initGoogleAnalytics, version };
//# sourceMappingURL=all.bundle.mjs.map