PageSourceSearch

https://bonmatin.ca/sites/default/files/js/js_zViVRLnuJn0fXy7qx9Zz-Ft3u82wPp_A_HIFKMhqo2w.js

js bonmatin.ca collected 2026-10-08 19:43:13 UTC 67,868 bytes, 1,587 lines download raw bytes

vendor: 4,574 bytes, lines 1-5
1/*!
2* tabbable 5.3.3
3* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
4*/
5!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.tabbable,o=e.tabbable={};t(o),o.noConflict=function(){return e.tabbable=n,o}}())}(this,(function(e){"use strict";var t=["input","select","textarea","a[href]","button","[tabindex]:not(slot)","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],n=t.join(","),o="undefined"==typeof Element,r=o?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,i=!o&&Element.prototype.getRootNode?function(e){return e.getRootNode()}:function(e){return e.ownerDocument},a=function(e,t,o){var i=Array.prototype.slice.apply(e.querySelectorAll(n));return t&&r.call(e,n)&&i.unshift(e),i=i.filter(o)},l=function e(t,o,i){for(var a=[],l=Array.from(t);l.length;){var u=l.shift();if("SLOT"===u.tagName){var c=u.assignedElements(),d=e(c.length?c:u.children,!0,i);i.flatten?a.push.apply(a,d):a.push({scope:u,candidates:d})}else{r.call(u,n)&&i.filter(u)&&(o||!t.includes(u))&&a.push(u);var f=u.shadowRoot||"function"==typeof i.getShadowRoot&&i.getShadowRoot(u),s=!i.shadowRootFilter||i.shadowRootFilter(u);if(f&&s){var p=e(!0===f?u.children:f.children,!0,i);i.flatten?a.push.apply(a,p):a.push({scope:u,candidates:p})}else l.unshift.apply(l,u.children)}}return a},u=function(e,t){return e.tabIndex<0&&(t||/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||e.isContentEditable)&&isNaN(parseInt(e.getAttribute("tabindex"),10))?0:e.tabIndex},c=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},d=function(e){return"INPUT"===e.tagName},f=function(e){return function(e){return d(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||i(e),o=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=o(window.CSS.escape(e.name));else try{t=o(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var r=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!r||r===e}(e)},s=function(e){var t=e.getBoundingClientRect(),n=t.width,o=t.height;return 0===n&&0===o},p=function(e,t){return!(t.disabled||function(e){return d(e)&&"hidden"===e.type}(t)||function(e,t){var n=t.displayCheck,o=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var a=r.call(e,"details>summary:first-of-type")?e.parentElement:e;if(r.call(a,"details:not([open]) *"))return!0;var l=i(e).host,u=(null==l?void 0:l.ownerDocument.contains(l))||e.ownerDocument.contains(e);if(n&&"full"!==n){if("non-zero-area"===n)return s(e)}else{if("function"==typeof o){for(var c=e;e;){var d=e.parentElement,f=i(e);if(d&&!d.shadowRoot&&!0===o(d))return s(e);e=e.assignedSlot?e.assignedSlot:d||f===e.ownerDocument?d:f.host}e=c}if(u)return!e.getClientRects().length}return!1}(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var o=t.children.item(n);if("LEGEND"===o.tagName)return!!r.call(t,"fieldset[disabled] *")||!o.contains(e)}return!0}t=t.parentElement}return!1}(t))},h=function(e,t){return!(f(t)||u(t)<0||!p(e,t))},b=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},m=t.concat("iframe").join(",");e.focusable=function(e,t){return(t=t||{}).getShadowRoot?l([e],t.includeContainer,{filter:p.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):a(e,t.includeContainer,p.bind(null,t))},e.isFocusable=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==r.call(e,m)&&p(t,e)},e.isTabbable=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==r.call(e,n)&&h(t,e)},e.tabbable=function(e,t){return function e(t){var n=[],o=[];return t.forEach((function(t,r){var i=!!t.scope,a=i?t.scope:t,l=u(a,i),c=i?e(t.candidates):a;0===l?i?n.push.apply(n,c):n.push(a):o.push({documentOrder:r,tabIndex:l,item:t,
5isScope:i,content:c})})),o.sort(c).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)}((t=t||{}).getShadowRoot?l([e],t.includeContainer,{filter:h.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:b}):a(e,t.includeContainer,h.bind(null,t)))},Object.defineProperty(e,"__esModule",{value:!0})}));
6
7;
8/**
9* DO NOT EDIT THIS FILE.
10* See the following change record for more information,
11* https://www.drupal.org/node/2815083
12* @preserve
13**/
14(function ($, once) {
15  var deprecatedMessageSuffix = "is deprecated in Drupal 9.3.0 and will be removed in Drupal 10.0.0. Use the core/once library instead. See https://www.drupal.org/node/3158256";
16  var originalJQOnce = $.fn.once;
17  var originalJQRemoveOnce = $.fn.removeOnce;
18  $.fn.once = function jQueryOnce(id) {
19    Drupal.deprecationError({
20      message: "jQuery.once() ".concat(deprecatedMessageSuffix)
21    });
22    return originalJQOnce.apply(this, [id]);
23  };
24  $.fn.removeOnce = function jQueryRemoveOnce(id) {
25    Drupal.deprecationError({
26      message: "jQuery.removeOnce() ".concat(deprecatedMessageSuffix)
27    });
28    return originalJQRemoveOnce.apply(this, [id]);
29  };
30  var drupalOnce = once;
31  function augmentedOnce(id, selector, context) {
32    originalJQOnce.apply($(selector, context), [id]);
33    return drupalOnce(id, selector, context);
34  }
35  function remove(id, selector, context) {
36    originalJQRemoveOnce.apply($(selector, context), [id]);
37    return drupalOnce.remove(id, selector, context);
38  }
39  window.once = Object.assign(augmentedOnce, drupalOnce, {
40    remove: remove
41  });
42})(jQuery, once);;
43/*! js-cookie v3.0.1 | MIT */
44!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}return function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}));
45;
46/**
47* DO NOT EDIT THIS FILE.
48* See the following change record for more information,
49* https://www.drupal.org/node/2815083
50* @preserve
51**/
52(function ($, Drupal) {
53  Drupal.theme.progressBar = function (id) {
54    return "<div id=\"".concat(id, "\" class=\"progress\" aria-live=\"polite\">") + '<div class="progress__label">&nbsp;</div>' + '<div class="progress__track"><div class="progress__bar"></div></div>' + '<div class="progress__percentage"></div>' + '<div class="progress__description">&nbsp;</div>' + '</div>';
55  };
56  Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) {
57    this.id = id;
58    this.method = method || 'GET';
59    this.updateCallback = updateCallback;
60    this.errorCallback = errorCallback;
61    this.element = $(Drupal.theme('progressBar', id));
62  };
63  $.extend(Drupal.ProgressBar.prototype, {
64    setProgress: function setProgress(percentage, message, label) {
65      if (percentage >= 0 && percentage <= 100) {
66        $(this.element).find('div.progress__bar').css('width', "".concat(percentage, "%"));
67        $(this.element).find('div.progress__percentage').html("".concat(percentage, "%"));
68      }
69      $('div.progress__description', this.element).html(message);
70      $('div.progress__label', this.element).html(label);
71      if (this.updateCallback) {
72        this.updateCallback(percentage, message, this);
73      }
74    },
75    startMonitoring: function startMonitoring(uri, delay) {
76      this.delay = delay;
77      this.uri = uri;
78      this.sendPing();
79    },
80    stopMonitoring: function stopMonitoring() {
81      clearTimeout(this.timer);
82      this.uri = null;
83    },
84    sendPing: function sendPing() {
85      if (this.timer) {
86        clearTimeout(this.timer);
87      }
88      if (this.uri) {
89        var pb = this;
90        var uri = this.uri;
91        if (uri.indexOf('?') === -1) {
92          uri += '?';
93        } else {
94          uri += '&';
95        }
96        uri += '_format=json';
97        $.ajax({
98          type: this.method,
99          url: uri,
100          data: '',
101          dataType: 'json',
102          success: function success(progress) {
103            if (progress.status === 0) {
104              pb.displayError(progress.data);
105              return;
106            }
107            pb.setProgress(progress.percentage, progress.message, progress.label);
108            pb.timer = setTimeout(function () {
109              pb.sendPing();
110            }, pb.delay);
111          },
112          error: function error(xmlhttp) {
113            var e = new Drupal.AjaxError(xmlhttp, pb.uri);
114            pb.displayError("<pre>".concat(e.message, "</pre>"));
115          }
116        });
117      }
118    },
119    displayError: function displayError(string) {
120      var error = $('<div class="messages messages--error"></div>').html(string);
121      $(this.element).before(error).hide();
122      if (this.errorCallback) {
123        this.errorCallback(this);
124      }
125    }
126  });
127})(jQuery, Drupal);;
128loadjs=function(){var h=function(){},c={},u={},f={};function o(e,n){if(e){var r=f[e];if(u[e]=n,r)for(;r.length;)r[0](e,n),r.splice(0,1)}}function l(e,n){e.call&&(e={success:e}),n.length?(e.error||h)(n):(e.success||h)(e)}function d(r,t,s,i){var c,o,e=document,n=s.async,u=(s.numRetries||0)+1,f=s.before||h,l=r.replace(/[\?|#].*$/,""),a=r.replace(/^(css|img)!/,"");i=i||0,/(^css!|\.css$)/.test(l)?((o=e.createElement("link")).rel="stylesheet",o.href=a,(c="hideFocus"in o)&&o.relList&&(c=0,o.rel="preload",o.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(l)?(o=e.createElement("img")).src=a:((o=e.createElement("script")).src=r,o.async=void 0===n||n),!(o.onload=o.onerror=o.onbeforeload=function(e){var n=e.type[0];if(c)try{o.sheet.cssText.length||(n="e")}catch(e){18!=e.code&&(n="e")}if("e"==n){if((i+=1)<u)return d(r,t,s,i)}else if("preload"==o.rel&&"style"==o.as)return o.rel="stylesheet";t(r,n,e.defaultPrevented)})!==f(r,o)&&e.head.appendChild(o)}function r(e,n,r){var t,s;if(n&&n.trim&&(t=n),s=(t?r:n)||{},t){if(t in c)throw"LoadJS";c[t]=!0}function i(n,r){!function(e,t,n){var r,s,i=(e=e.push?e:[e]).length,c=i,o=[];for(r=function(e,n,r){if("e"==n&&o.push(e),"b"==n){if(!r)return;o.push(e)}--i||t(o)},s=0;s<c;s++)d(e[s],r,n)}(e,function(e){l(s,e),n&&l({success:n,error:r},e),o(t,e)},s)}if(s.returnPromise)return new Promise(i);i()}return r.ready=function(e,n){return function(e,r){e=e.push?e:[e];var n,t,s,i=[],c=e.length,o=c;
128for(n=function(e,n){n.length&&i.push(e),--o||r(i)};c--;)t=e[c],(s=u[t])?n(t,s):(f[t]=f[t]||[]).push(n)}(e,function(e){l(n,e)}),r},r.done=function(e){o(e,[])},r.reset=function(){c={},u={},f={}},r.isDefined=function(e){return e in c},r}();;
129/**
130* DO NOT EDIT THIS FILE.
131* See the following change record for more information,
132* https://www.drupal.org/node/2815083
133* @preserve
134**/
135function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
136function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
137function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
138function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
139function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
140function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
141(function ($, window, Drupal, drupalSettings, loadjs, _ref) {
142  var isFocusable = _ref.isFocusable,
143    tabbable = _ref.tabbable;
144  Drupal.behaviors.AJAX = {
145    attach: function attach(context, settings) {
146      function loadAjaxBehavior(base) {
147        var elementSettings = settings.ajax[base];
148        if (typeof elementSettings.selector === 'undefined') {
149          elementSettings.selector = "#".concat(base);
150        }
151        once('drupal-ajax', $(elementSettings.selector)).forEach(function (el) {
152          elementSettings.element = el;
153          elementSettings.base = base;
154          Drupal.ajax(elementSettings);
155        });
156      }
157      Object.keys(settings.ajax || {}).forEach(function (base) {
158        return loadAjaxBehavior(base);
159      });
160      Drupal.ajax.bindAjaxLinks(document.body);
161      once('ajax', '.use-ajax-submit').forEach(function (el) {
162        var elementSettings = {};
163        elementSettings.url = $(el.form).attr('action');
164        elementSettings.setClick = true;
165        elementSettings.event = 'click';
166        elementSettings.progress = {
167          type: 'throbber'
168        };
169        elementSettings.base = el.id;
170        elementSettings.element = el;
171        Drupal.ajax(elementSettings);
172      });
173    },
174    detach: function detach(context, settings, trigger) {
175      if (trigger === 'unload') {
176        Drupal.ajax.expired().forEach(function (instance) {
177          Drupal.ajax.instances[instance.instanceIndex] = null;
178        });
179      }
180    }
181  };
182  Drupal.AjaxError = function (xmlhttp, uri, customMessage) {
183    var statusCode;
184    var statusText;
185    var responseText;
186    if (xmlhttp.status) {
187      statusCode = "\n".concat(Drupal.t('An AJAX HTTP error occurred.'), "\n").concat(Drupal.t('HTTP Result Code: !status', {
188        '!status': xmlhttp.status
189      }));
190    } else {
191      statusCode = "\n".concat(Drupal.t('An AJAX HTTP request terminated abnormally.'));
192    }
193    statusCode += "\n".concat(Drupal.t('Debugging information follows.'));
194    var pathText = "\n".concat(Drupal.t('Path: !uri', {
195      '!uri': uri
196    }));
197    statusText = '';
198    try {
199      statusText = "\n".concat(Drupal.t('StatusText: !statusText', {
200        '!statusText': xmlhttp.statusText.trim()
201      }));
202    } catch (e) {}
203    responseText = '';
204    try {
205      responseText = "\n".concat(Drupal.t('ResponseText: !responseText', {
206        '!responseText': xmlhttp.responseText.trim()
207      }));
208    } catch (e) {}
209    responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, '');
210    responseText = responseText.replace(/[\n]+\s+/g, '\n');
211    var readyStateText = xmlhttp.status === 0 ? "\n".concat(Drupal.t('ReadyState: !readyState', {
212      '!readyState': xmlhttp.readyState
213    })) : '';
214    customMessage = customMessage ? "\n".concat(Drupal.t('CustomMessage: !customMessage', {
215      '!customMessage': customMessage
216    })) : '';
217    this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText;
218    this.name = 'AjaxError';
219  };
220  Drupal.AjaxError.prototype = new Error();
221  Drupal.AjaxError.prototype.constructor = Drupal.AjaxError;
222  Drupal.ajax = function (settings) {
223    if (arguments.length !== 1) {
224      throw new Error('Drupal.ajax() function must be called with one configuration object only');
225    }
226    var base = settings.base || false;
227    var element = settings.element || false;
228    delete settings.base;
229    delete settings.element;
230    if (!settings.progress && !element) {
231      settings.progress = false;
232    }
233    var ajax = new Drupal.Ajax(base, element, settings);
234    ajax.instanceIndex = Drupal.ajax.instances.length;
235    Drupal.ajax.instances.push(ajax);
236    return ajax;
237  };
238  Drupal.ajax.instances = [];
239  Drupal.ajax.expired = function () {
240    return Drupal.ajax.instances.filter(function (instance) {
241      return instance && instance.element !== false && !document.body.contains(instance.element);
242    });
243  };
244  Drupal.ajax.bindAjaxLinks = function (element) {
245    once('ajax', '.use-ajax', element).forEach(function (ajaxLink) {
246      var $linkElement = $(ajaxLink);
247      var elementSettings = {
248        progress: {
249          type: 'throbber'
250        },
251        dialogType: $linkElement.data('dialog-type'),
252        dialog: $linkElement.data('dialog-options'),
253        dialogRenderer: $linkElement.data('dialog-renderer'),
254        base: $linkElement.attr('id'),
255        element: ajaxLink
256      };
257      var href = $linkElement.attr('href');
258      if (href) {
259        elementSettings.url = href;
260        elementSettings.event = 'click';
261      }
262      Drupal.ajax(elementSettings);
263    });
264  };
265  Drupal.Ajax = function (base, element, elementSettings) {
266    var defaults = {
267      event: element ? 'mousedown' : null,
268      keypress: true,
269      selector: base ? "#".concat(base) : null,
270      effect: 'none',
271      speed: 'none',
272      method: 'replaceWith',
273      progress: {
274        type: 'throbber',
275        message: Drupal.t('Please wait...')
276      },
277      submit: {
278        js: true
279      }
280    };
281    $.extend(this, defaults, elementSettings);
282    this.commands = new Drupal.AjaxCommands();
283    this.instanceIndex = false;
284    if (this.wrapper) {
285      this.wrapper = "#".concat(this.wrapper);
286    }
287    this.element = element;
288    this.element_settings = elementSettings;
289    this.elementSettings = elementSettings;
290    if (this.element && this.element.form) {
291      this.$form = $(this.element.form);
292    }
293    if (!this.url) {
294      var $element = $(this.element);
295      if ($element.is('a')) {
296        this.url = $element.attr('href');
297      } else if (this.element && element.form) {
298        this.url = this.$form.attr('action');
299      }
300    }
301    var originalUrl = this.url;
302    this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1');
303    if (drupalSettings.ajaxTrustedUrl[originalUrl]) {
304      drupalSettings.ajaxTrustedUrl[this.url] = true;
305    }
306    var ajax = this;
307    ajax.options = {
308      url: ajax.url,
309      data: ajax.submit,
310      isInProgress: function isInProgress() {
311        return ajax.ajaxing;
312      },
313      beforeSerialize: function beforeSerialize(elementSettings, options) {
314        return ajax.beforeSerialize(elementSettings, options);
315      },
316      beforeSubmit: function beforeSubmit(formValues, elementSettings, options) {
317        ajax.ajaxing = true;
318        return ajax.beforeSubmit(formValues, elementSettings, options);
319      },
320      beforeSend: function beforeSend(xmlhttprequest, options) {
321        ajax.ajaxing = true;
322        return ajax.beforeSend(xmlhttprequest, options);
323      },
324      success: function success(response, status, xmlhttprequest) {
325        var _this = this;
326        if (typeof response === 'string') {
327          response = $.parseJSON(response);
328        }
329        if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) {
330          if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') {
331            var customMessage = Drupal.t('The response failed verification so will not be processed.');
332            return ajax.error(xmlhttprequest, ajax.url, customMessage);
333          }
334        }
335        return Promise.resolve(ajax.success(response, status)).then(function () {
336          ajax.ajaxing = false;
337          $(document).trigger('ajaxSuccess', [xmlhttprequest, _this]);
338          $(document).trigger('ajaxComplete', [xmlhttprequest, _this]);
339          if (--$.active === 0) {
340            $(document).trigger('ajaxStop');
341          }
342        });
343      },
344      error: function error(xmlhttprequest, status, _error) {
345        ajax.ajaxing = false;
346      },
347      complete: function complete(xmlhttprequest, status) {
348        if (status === 'error' || status === 'parsererror') {
349          return ajax.error(xmlhttprequest, ajax.url);
350        }
351      },
352      dataType: 'json',
353      jsonp: false,
354      type: 'POST'
355    };
356    if (elementSettings.dialog) {
357      ajax.options.data.dialogOptions = elementSettings.dialog;
358    }
359    if (ajax.options.url.indexOf('?') === -1) {
360      ajax.options.url += '?';
361    } else {
362      ajax.options.url += '&';
363    }
364    var wrapper = "drupal_".concat(elementSettings.dialogType || 'ajax');
365    if (elementSettings.dialogRenderer) {
366      wrapper += ".".concat(elementSettings.dialogRenderer);
367    }
368    ajax.options.url += "".concat(Drupal.ajax.WRAPPER_FORMAT, "=").concat(wrapper);
369    $(ajax.element).on(elementSettings.event, function (event) {
370      if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) {
371        throw new Error(Drupal.t('The callback URL is not local and n
371ot trusted: !url', {
372          '!url': ajax.url
373        }));
374      }
375      return ajax.eventResponse(this, event);
376    });
377    if (elementSettings.keypress) {
378      $(ajax.element).on('keypress', function (event) {
379        return ajax.keypressResponse(this, event);
380      });
381    }
382    if (elementSettings.prevent) {
383      $(ajax.element).on(elementSettings.prevent, false);
384    }
385  };
386  Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format';
387  Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax';
388  Drupal.Ajax.prototype.execute = function () {
389    if (this.ajaxing) {
390      return;
391    }
392    try {
393      this.beforeSerialize(this.element, this.options);
394      return $.ajax(this.options);
395    } catch (e) {
396      this.ajaxing = false;
397      window.alert("An error occurred while attempting to process ".concat(this.options.url, ": ").concat(e.message));
398      return $.Deferred().reject();
399    }
400  };
401  Drupal.Ajax.prototype.keypressResponse = function (element, event) {
402    var ajax = this;
403    if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') {
404      event.preventDefault();
405      event.stopPropagation();
406      $(element).trigger(ajax.elementSettings.event);
407    }
408  };
409  Drupal.Ajax.prototype.eventResponse = function (element, event) {
410    event.preventDefault();
411    event.stopPropagation();
412    var ajax = this;
413    if (ajax.ajaxing) {
414      return;
415    }
416    try {
417      if (ajax.$form) {
418        if (ajax.setClick) {
419          element.form.clk = element;
420        }
421        ajax.$form.ajaxSubmit(ajax.options);
422      } else {
423        ajax.beforeSerialize(ajax.element, ajax.options);
424        $.ajax(ajax.options);
425      }
426    } catch (e) {
427      ajax.ajaxing = false;
428      window.alert("An error occurred while attempting to process ".concat(ajax.options.url, ": ").concat(e.message));
429    }
430  };
431  Drupal.Ajax.prototype.beforeSerialize = function (element, options) {
432    if (this.$form && document.body.contains(this.$form.get(0))) {
433      var settings = this.settings || drupalSettings;
434      Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize');
435    }
436    options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1;
437    var pageState = drupalSettings.ajaxPageState;
438    options.data['ajax_page_state[theme]'] = pageState.theme;
439    options.data['ajax_page_state[theme_token]'] = pageState.theme_token;
440    options.data['ajax_page_state[libraries]'] = pageState.libraries;
441  };
442  Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {};
443  Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) {
444    if (this.$form) {
445      options.extraData = options.extraData || {};
446      options.extraData.ajax_iframe_upload = '1';
447      var v = $.fieldValue(this.element);
448      if (v !== null) {
449        options.extraData[this.element.name] = v;
450      }
451    }
452    $(this.element).prop('disabled', true);
453    if (!this.progress || !this.progress.type) {
454      return;
455    }
456    var progressIndicatorMethod = "setProgressIndicator".concat(this.progress.type.slice(0, 1).toUpperCase()).concat(this.progress.type.slice(1).toLowerCase());
457    if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') {
458      this[progressIndicatorMethod].call(this);
459    }
460  };
461  Drupal.theme.ajaxProgressThrobber = function (message) {
462    var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : '';
463    var throbber = '<div class="throbber">&nbsp;</div>';
464    return "<div class=\"ajax-progress ajax-progress-throbber\">".concat(throbber).concat(messageMarkup, "</div>");
465  };
466  Drupal.theme.ajaxProgressIndicatorFullscreen = function () {
467    return '<div class="ajax-progress ajax-progress-fullscreen">&nbsp;</div>';
468  };
469  Drupal.theme.ajaxProgressMessage = function (message) {
470    return "<div class=\"message\">".concat(message, "</div>");
471  };
472  Drupal.theme.ajaxProgressBar = function ($element) {
473    return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element);
474  };
475  Drupal.Ajax.prototype.setProgressIndicatorBar = function () {
476    var progressBar = new Drupal.ProgressBar("ajax-progress-".concat(this.element.i
476d), $.noop, this.progress.method, $.noop);
477    if (this.progress.message) {
478      progressBar.setProgress(-1, this.progress.message);
479    }
480    if (this.progress.url) {
481      progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500);
482    }
483    this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element));
484    this.progress.object = progressBar;
485    $(this.element).after(this.progress.element);
486  };
487  Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () {
488    this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message));
489    $(this.element).after(this.progress.element);
490  };
491  Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () {
492    this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen'));
493    $('body').append(this.progress.element);
494  };
495  Drupal.Ajax.prototype.commandExecutionQueue = function (response, status) {
496    var _this2 = this;
497    var ajaxCommands = this.commands;
498    return Object.keys(response || {}).reduce(function (executionQueue, key) {
499      return executionQueue.then(function () {
500        var command = response[key].command;
501        if (command && ajaxCommands[command]) {
502          return ajaxCommands[command](_this2, response[key], status);
503        }
504      });
505    }, Promise.resolve());
506  };
507  Drupal.Ajax.prototype.success = function (response, status) {
508    var _this3 = this;
509    if (this.progress.element) {
510      $(this.progress.element).remove();
511    }
512    if (this.progress.object) {
513      this.progress.object.stopMonitoring();
514    }
515    $(this.element).prop('disabled', false);
516    var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray();
517    var focusChanged = Object.keys(response || {}).some(function (key) {
518      var _response$key = response[key],
519        command = _response$key.command,
520        method = _response$key.method;
521      return command === 'focusFirst' || command === 'invoke' && method === 'focus';
522    });
523    return this.commandExecutionQueue(response, status).then(function () {
524      if (!focusChanged && _this3.element && !$(_this3.element).data('disable-refocus')) {
525        var target = false;
526        for (var n = elementParents.length - 1; !target && n >= 0; n--) {
527          target = document.querySelector("[data-drupal-selector=\"".concat(elementParents[n].getAttribute('data-drupal-selector'), "\"]"));
528        }
529        if (target) {
530          $(target).trigger('focus');
531        }
532      }
533      if (_this3.$form && document.body.contains(_this3.$form.get(0))) {
534        var settings = _this3.settings || drupalSettings;
535        Drupal.attachBehaviors(_this3.$form.get(0), settings);
536      }
537      _this3.settings = null;
538    }).catch(function (error) {
539      return console.error(Drupal.t('An error occurred during the execution of the Ajax response: !error', {
540        '!error': error
541      }));
542    });
543  };
544  Drupal.Ajax.prototype.getEffect = function (response) {
545    var type = response.effect || this.effect;
546    var speed = response.speed || this.speed;
547    var effect = {};
548    if (type === 'none') {
549      effect.showEffect = 'show';
550      effect.hideEffect = 'hide';
551      effect.showSpeed = '';
552    } else if (type === 'fade') {
553      effect.showEffect = 'fadeIn';
554      effect.hideEffect = 'fadeOut';
555      effect.showSpeed = speed;
556    } else {
557      effect.showEffect = "".concat(type, "Toggle");
558      effect.hideEffect = "".concat(type, "Toggle");
559      effect.showSpeed = speed;
560    }
561    return effect;
562  };
563  Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) {
564    if (this.progress.element) {
565      $(this.progress.element).remove();
566    }
567    if (this.progress.object) {
568      this.progress.object.stopMonitoring();
569    }
570    $(this.wrapper).show();
571    $(this.element).prop('disabled', false);
572    if (this.$form && document.body.contains(this.$form.get(0))) {
573      var settings = this.settings || drupalSettings;
574      Drupal.attachBehaviors(this.$form.get(0), settings);
575    }
576    throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage);
577  };
578  Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) {
579    return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) {
580      return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent));
581    }).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent;
582  };
583  Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) {
584    return $('<div></div>').append($elements);
585  };
586  Drupal.AjaxCommands = function () {};
587  Drupal.AjaxCommands.prototype = {
588    insert: function insert(ajax, response) {
589      var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper);
590      var method = response.method || ajax.method;
591      var effect = ajax.getEffect(response);
592      var settings = response.settings || ajax.settings || drupalSettings;
593      var $newContent = $($.parseHTML(response.data, document, true));
594      $newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response);
595      switch (method) {
596        case 'html':
597        case 'replaceWith':
598        case 'replaceAll':
599        case 'empty':
600        case 'remove':
601          Drupal.detachBehaviors($wrapper.get(0), settings);
602          break;
603        default:
604          break;
605      }
606      $wrapper[method]($newContent);
607      if (effect.showEffect !== 'show') {
608        $newContent.hide();
609      }
610      var $ajaxNewContent = $newContent.find('.ajax-new-content');
611      if ($ajaxNewContent.length) {
612        $ajaxNewContent.hide();
613        $newContent.show();
614        $ajaxNewContent[effect.showEffect](effect.showSpeed);
615      } else if (effect.showEffect !== 'show') {
616        $newContent[effect.showEffect](effect.showSpeed);
617      }
618      if ($newContent.parents('html').length) {
619        $newContent.each(function (index, element) {
620          if (element.nodeType === Node.ELEMENT_NODE) {
621            Drupal.attachBehaviors(element, settings);
622          }
623        });
624      }
625    },
626    remove: function remove(ajax, response, status) {
627      var settings = response.settings || ajax.settings || drupalSettings;
628      $(response.selector).each(function () {
629        Drupal.detachBehaviors(this, settings);
630      }).remove();
631    },
632    changed: function changed(ajax, response, status) {
633      var $element = $(response.selector);
634      if (!$element.hasClass('ajax-changed')) {
635        $element.addClass('ajax-changed');
636        if (response.asterisk) {
637          $element.find(response.asterisk).append(" <abbr class=\"ajax-changed\" title=\"".concat(Drupal.t('Changed'), "\">*</abbr> "));
638        }
639      }
640    },
641    alert: function alert(ajax, response, status) {
642      window.alert(response.text);
643    },
644    announce: function announce(ajax, response) {
645      if (response.priority) {
646        Drupal.announce(response.text, response.priority);
647      } else {
648        Drupal.announce(response.text);
649      }
650    },
651    redirect: function redirect(ajax, response, status) {
652      window.location = response.url;
653    },
654    css: function css(ajax, response, status) {
655      $(response.selector).css(response.argument);
656    },
657    settings: function settings(ajax, response, status) {
658      var ajaxSettings = drupalSettings.ajax;
659      if (ajaxSettings) {
660        Drupal.ajax.expired().forEach(function (instance) {
661          if (instance.selector) {
662            var selector = instance.selector.replace('#', '');
663            if (selector in ajaxSettings) {
664              delete ajaxSettings[selector];
665            }
666          }
667        });
668      }
669      if (response.merge) {
670        $.extend(true, drupalSettings, response.settings);
671      } else {
672        ajax.settings = response.settings;
673      }
674    },
675    data: function data(ajax, response, status) {
676      $(response.selector).data(response.name, response.value);
677    },
678    focusFirst: function focusFirst(ajax, response, status) {
679      var focusChanged = false;
680      var container = document.querySelector(response.selector);
681      if (container) {
682        var tabbableElements = tabbable(container);
683        if (tabbableElements.length) {
684          tabbableElements[0].focus();
685          focusChanged = true;
686        } else if (isFocusable(container)) {
687          container.focus();
688          focusChanged = true;
689        }
690      }
691      if (ajax.hasOwnProperty('element') && !focusChanged) {
692        ajax.element.focus();
693      }
694    },
695    invoke: function invoke(ajax, response, status) {
696      var $element = $(response.selector);
697      $element[response.method].apply($element, _toConsumableArray(response.args));
698    },
699    restripe: function restripe(ajax, response, status) {
700      $(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even');
701    },
702    update_build_id: function update_build_id(ajax, response, status) {
703      document.querySelectorAll("input[name=\"form_build_id\"][value=\"".concat(response.old, "\"]")).forEach(function (item) {
704        item.value = response.new;
705      });
706    },
707    add_css: function add_css(ajax, response, status) {
708      $('head').prepend(response.data);
709    },
710    message: function message(ajax, response) {
711      var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector));
712      if (response.clearPrevious) {
713        messages.clear();
714      }
715      messages.add(response.message, response.messageOptions);
716    },
717    add_js: function add_js(ajax, response, status) {
718      var parentEl = document.querySelector(response.selector || 'body');
719      var settings = ajax.settings || drupalSettings;
720      var allUniqueBundleIds = response.data.map(function (script) {
721        var uniqueBundleId = script.src + ajax.instanceIndex;
722        loadjs(script.src, uniqueBundleId, {
723          async: false,
724          before: function before(path, scriptEl) {
725            Object.keys(script).forEach(function (attributeKey) {
726              scriptEl.setAttribute(attributeKey, script[attributeKey]);
727            });
728            parentEl.appendChild(scriptEl);
729            return false;
730          }
731        });
732        return uniqueBundleId;
733      });
734      return new Promise(function (resolve, reject) {
735        loadjs.ready(allUniqueBundleIds, {
736          success: function success() {
737            Drupal.attachBehaviors(parentEl, settings);
738            resolve();
739          },
740          error: function error(depsNotFound) {
741            var message = Drupal.t("The following files could not be loaded: @dependencies", {
742              '@dependencies': depsNotFound.join(', ')
743            });
744            reject(message);
745          }
746        });
747      });
748    }
749  };
750  var stopEvent = function stopEvent(xhr, settings) {
751    return xhr.getResponseHeader('X-Drupal-Ajax-Token') === '1' && settings.isInProgress && settings.isInProgress();
752  };
753  $.extend(true, $.event.special, {
754    ajaxSuccess: {
755      trigger: function trigger(event, xhr, settings) {
756        if (stopEvent(xhr, settings)) {
757          return false;
758        }
759      }
760    },
761    ajaxComplete: {
762      trigger: function trigger(event, xhr, settings) {
763        if (stopEvent(xhr, settings)) {
764          $.active++;
765          return false;
766        }
767      }
768    }
769  });
770})(jQuery, window, Drupal, drupalSettings, loadjs, window.tabbable);;
771/**
772* DO NOT EDIT THIS FILE.
773* See the following change record for more information,
774* https://www.drupal.org/node/2815083
775* @preserve
776**/
777(function (Drupal) {
778  Drupal.theme.ajaxProgressBar = function ($element) {
779    return $element.addClass('ajax-progress ajax-progress-bar');
780  };
781})(Drupal);;
782/**
783* DO NOT EDIT THIS FILE.
784* See the following change record for more information,
785* https://www.drupal.org/node/2815083
786* @preserve
787**/
788Drupal.debounce = function (func, wait, immediate) {
789  var timeout;
790  var result;
791  return function () {
792    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
793      args[_key] = arguments[_key];
794    }
795    var context = this;
796    var later = function later() {
797      timeout = null;
798      if (!immediate) {
799        result = func.apply(context, args);
800      }
801    };
802    var callNow = immediate && !timeout;
803    clearTimeout(timeout);
804    timeout = setTimeout(later, wait);
805    if (callNow) {
806      result = func.apply(context, args);
807    }
808    return result;
809  };
810};;
811/**
812* DO NOT EDIT THIS FILE.
813* See the following change record for more information,
814* https://www.drupal.org/node/2815083
815* @preserve
816**/
817(function ($, Drupal, debounce) {
818  var offsets = {
819    top: 0,
820    right: 0,
821    bottom: 0,
822    left: 0
823  };
824  function getRawOffset(el, edge) {
825    var $el = $(el);
826    var documentElement = document.documentElement;
827    var displacement = 0;
828    var horizontal = edge === 'left' || edge === 'right';
829    var placement = $el.offset()[horizontal ? 'left' : 'top'];
830    placement -= window["scroll".concat(horizontal ? 'X' : 'Y')] || document.documentElement["scroll".concat(horizontal ? 'Left' : 'Top')] || 0;
831    switch (edge) {
832      case 'top':
833        displacement = placement + $el.outerHeight();
834        break;
835      case 'left':
836        displacement = placement + $el.outerWidth();
837        break;
838      case 'bottom':
839        displacement = documentElement.clientHeight - placement;
840        break;
841      case 'right':
842        displacement = documentElement.clientWidth - placement;
843        break;
844      default:
845        displacement = 0;
846    }
847    return displacement;
848  }
849  function calculateOffset(edge) {
850    var edgeOffset = 0;
851    var displacingElements = document.querySelectorAll("[data-offset-".concat(edge, "]"));
852    var n = displacingElements.length;
853    for (var i = 0; i < n; i++) {
854      var el = displacingElements[i];
855      if (el.style.display === 'none') {
856        continue;
857      }
858      var displacement = parseInt(el.getAttribute("data-offset-".concat(edge)), 10);
859      if (isNaN(displacement)) {
860        displacement = getRawOffset(el, edge);
861      }
862      edgeOffset = Math.max(edgeOffset, displacement);
863    }
864    return edgeOffset;
865  }
866  function calculateOffsets() {
867    return {
868      top: calculateOffset('top'),
869      right: calculateOffset('right'),
870      bottom: calculateOffset('bottom'),
871      left: calculateOffset('left')
872    };
873  }
874  function displace(broadcast) {
875    offsets = calculateOffsets();
876    Drupal.displace.offsets = offsets;
877    if (typeof broadcast === 'undefined' || broadcast) {
878      $(document).trigger('drupalViewportOffsetChange', offsets);
879    }
880    return offsets;
881  }
882  Drupal.behaviors.drupalDisplace = {
883    attach: function attach() {
884      if (this.displaceProcessed) {
885        return;
886      }
887      this.displaceProcessed = true;
888      $(window).on('resize.drupalDisplace', debounce(displace, 200));
889    }
890  };
891  Drupal.displace = displace;
892  $.extend(Drupal.displace, {
893    offsets: offsets,
894    calculateOffset: calculateOffset
895  });
896})(jQuery, Drupal, Drupal.debounce);;
897/**
898* DO NOT EDIT THIS FILE.
899* See the following change record for more information,
900* https://www.drupal.org/node/2815083
901* @preserve
902**/
903(function ($, Drupal, _ref) {
904  var isTabbable = _ref.isTabbable;
905  $.extend($.expr[':'], {
906    tabbable: function tabbable(element) {
907      Drupal.deprecationError({
908        message: 'The :tabbable selector is deprecated in Drupal 9.2.0 and will be removed in Drupal 11.0.0. Use the core/tabbable library instead. See https://www.drupal.org/node/3183730'
909      });
910      if (element.tagName === 'SUMMARY' || element.tagName === 'DETAILS') {
911        var tabIndex = element.getAttribute('tabIndex');
912        if (tabIndex === null || tabIndex < 0) {
913          return false;
914        }
915      }
916      return isTabbable(element);
917    }
918  });
919})(jQuery, Drupal, window.tabbable);;
920/**
921* DO NOT EDIT THIS FILE.
922* See the following change record for more information,
923* https://www.drupal.org/node/2815083
924* @preserve
925**/
926(function ($) {
927  var cachedScrollbarWidth = null;
928  var max = Math.max,
929    abs = Math.abs;
930  var regexHorizontal = /left|center|right/;
931  var regexVertical = /top|center|bottom/;
932  var regexOffset = /[+-]\d+(\.[\d]+)?%?/;
933  var regexPosition = /^\w+/;
934  var regexPercent = /%$/;
935  var _position = $.fn.position;
936  function getOffsets(offsets, width, height) {
937    return [parseFloat(offsets[0]) * (regexPercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (regexPercent.test(offsets[1]) ? height / 100 : 1)];
938  }
939  function parseCss(element, property) {
940    return parseInt($.css(element, property), 10) || 0;
941  }
942  function getDimensions(elem) {
943    var raw = elem[0];
944    if (raw.nodeType === 9) {
945      return {
946        width: elem.width(),
947        height: elem.height(),
948        offset: {
949          top: 0,
950          left: 0
951        }
952      };
953    }
954    if ($.isWindow(raw)) {
955      return {
956        width: elem.width(),
957        height: elem.height(),
958        offset: {
959          top: elem.scrollTop(),
960          left: elem.scrollLeft()
961        }
962      };
963    }
964    if (raw.preventDefault) {
965      return {
966        width: 0,
967        height: 0,
968        offset: {
969          top: raw.pageY,
970          left: raw.pageX
971        }
972      };
973    }
974    return {
975      width: elem.outerWidth(),
976      height: elem.outerHeight(),
977      offset: elem.offset()
978    };
979  }
980  var collisions = {
981    fit: {
982      left: function left(position, data) {
983        var within = data.within;
984        var withinOffset = within.isWindow ? within.scrollLeft : within.offset.left;
985        var outerWidth = within.width;
986        var collisionPosLeft = position.left - data.collisionPosition.marginLeft;
987        var overLeft = withinOffset - collisionPosLeft;
988        var overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset;
989        var newOverRight;
990        if (data.collisionWidth > outerWidth) {
991          if (overLeft > 0 && overRight <= 0) {
992            newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
993            position.left += overLeft - newOverRight;
994          } else if (overRight > 0 && overLeft <= 0) {
995            position.left = withinOffset;
996          } else if (overLeft > overRight) {
997            position.left = withinOffset + outerWidth - data.collisionWidth;
998          } else {
999            position.left = withinOffset;
1000          }
1001        } else if (overLeft > 0) {
1002          position.left += overLeft;
1003        } else if (overRight > 0) {
1004          position.left -= overRight;
1005        } else {
1006          position.left = max(position.left - collisionPosLeft, position.left);
1007        }
1008      },
1009      top: function top(position, data) {
1010        var within = data.within;
1011        var withinOffset = within.isWindow ? within.scrollTop : within.offset.top;
1012        var outerHeight = data.within.height;
1013        var collisionPosTop = position.top - data.collisionPosition.marginTop;
1014        var overTop = withinOffset - collisionPosTop;
1015        var overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset;
1016        var newOverBottom;
1017        if (data.collisionHeight > outerHeight) {
1018          if (overTop > 0 && overBottom <= 0) {
1019            newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
1020            position.top += overTop - newOverBottom;
1021          } else if (overBottom > 0 && overTop <= 0) {
1022            position.top = withinOffset;
1023          } else if (overTop > overBottom) {
1024            position.top = withinOffset + outerHeight - data.collisionHeight;
1025          } else {
1026            position.top = withinOffset;
1027          }
1028        } else if (overTop > 0) {
1029          position.top += overTop;
1030        } else if (overBottom > 0) {
1031          position.top -= overBottom;
1032        } else {
1033          position.top = max(position.top - collisionPosTop, position.top);
1034        }
1035      }
1036    },
1037    flip: {
1038      left: function left(position, data) {
1039        var within = data.within;
1040        var withinOffset = within.offset.left + within.scrollLeft;
1041        var outerWidth = within.width;
1042        var offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left;
1043        var collisionPosLeft = position.left - data.collisionPosition.marginLeft;
1044        var overLeft = collisionPosLeft - offsetLeft;
1045        var overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft;
1046        var myOffset = data.my[0] === 'left' ? -data.elemWidth : data.my[0] === 'right' ? data.elemWidth : 0;
1047        var atOffset = data.at[0] === 'left' ? data.targetWidth : data.at[0] === 'right' ? -data.targetWidth : 0;
1048        var offset = -2 * data.offset[0];
1049        var newOverRight;
1050        var newOverLeft;
1051        if (overLeft < 0) {
1052          newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
1053          if (newOverRight < 0 || newOverRight < abs(overLeft)) {
1054            position.left += myOffset + atOffset + offset;
1055          }
1056        } else if (overRight > 0) {
1057          newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
1058          if (newOverLeft > 0 || abs(newOverLeft) < overRight) {
1059            position.left += myOffset + atOffset + offset;
1060          }
1061        }
1062      },
1063      top: function top(position, data) {
1064        var within = data.within;
1065        var withinOffset = within.offset.top + within.scrollTop;
1066        var outerHeight = within.height;
1067        var offsetTop = within.isWindow ? within.scrollTop : within.offset.top;
1068        var collisionPosTop = position.top - data.collisionPosition.marginTop;
1069        var overTop = collisionPosTop - offsetTop;
1070        var overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop;
1071        var top = data.my[1] === 'top';
1072        var myOffset = top ? -data.elemHeight : data.my[1] === 'bottom' ? data.elemHeight : 0;
1073        var atOffset = data.at[1] === 'top' ? data.targetHeight : data.at[1] === 'bottom' ? -data.targetHeight : 0;
1074        var offset = -2 * data.offset[1];
1075        var newOverTop;
1076        var newOverBottom;
1077        if (overTop < 0) {
1078          newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
1079          if (newOverBottom < 0 || newOverBottom < abs(overTop)) {
1080            position.top += myOffset + atOffset + offset;
1081          }
1082        } else if (overBottom > 0) {
1083          newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
1084          if (newOverTop > 0 || abs(newOverTop) < overBottom) {
1085            position.top += myOffset + atOffset + offset;
1086          }
1087        }
1088      }
1089    },
1090    flipfit: {
1091      left: function left() {
1092        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1093          args[_key] = arguments[_key];
1094        }
1095        collisions.flip.left.apply(this, args);
1096        collisions.fit.left.apply(this, args);
1097      },
1098      top: function top() {
1099        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1100          args[_key2] = arguments[_key2];
1101        }
1102        collisions.flip.top.apply(this, args);
1103        collisions.fit.top.apply(this, args);
1104      }
1105    }
1106  };
1107  $.position = {
1108    scrollbarWidth: function scrollbarWidth() {
1109      if (cachedScrollbarWidth !== undefined) {
1110        return cachedScrollbarWidth;
1111      }
1112      var div = $('<div ' + "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" + "<div style='height:100px;width:auto;'></div></div>");
1113      var innerDiv = div.children()[0];
1114      $('body').append(div);
1115      var w1 = innerDiv.offsetWidth;
1116      div.css('overflow', 'scroll');
1117      var w2 = innerDiv.offsetWidth;
1118      if (w1 === w2) {
1119        w2 = div[0].clientWidth;
1120      }
1121      div.remove();
1122      cachedScrollbarWidth = w1 - w2;
1123      return cachedScrollbarWidth;
1124    },
1125    getScrollInfo: function getScrollInfo(within) {
1126      var overflowX = within.isWindow || within.isDocument ? '' : within.element.css('overflow-x');
1127      var overflowY = within.isWindow || within.isDocument ? '' : within.element.css('overflow-y');
1128      var hasOverflowX = overflowX === 'scroll' || overflowX === 'auto' && within.width < within.element[0].scrollWidth;
1129      var hasOverflowY = overflowY === 'scroll' || overflowY === 'auto' && within.height < within.element[0].scrollHeight;
1130      return {
1131        width: hasOverflowY ? $.position.scrollbarWidth() : 0,
1132        height: hasOverflowX ? $.position.scrollbarWidth() : 0
1133      };
1134    },
1135    getWithinInfo: function getWithinInfo(element) {
1136      var withinElement = $(element || window);
1137      var isWindow = $.isWindow(withinElement[0]);
1138      var isDocument = !!withinElement[0] && withinElement[0].nodeType === 9;
1139      var hasOffset = !isWindow && !isDocument;
1140      return {
1141        element: withinElement,
1142        isWindow: isWindow,
1143        isDocument: isDocument,
1144        offset: hasOffset ? $(element).offset() : {
1145          left: 0,
1146          top: 0
1147        },
1148        scrollLeft: withinElement.scrollLeft(),
1149        scrollTop: withinElement.scrollTop(),
1150        width: withinElement.outerWidth(),
1151        height: withinElement.outerHeight()
1152      };
1153    }
1154  };
1155  $.fn.position = function (options) {
1156    if (!options || !options.of) {
1157      return _position.apply(this, arguments);
1158    }
1159    options = $.extend({}, options);
1160    var within = $.position.getWithinInfo(options.within);
1161    var scrollInfo = $.position.getScrollInfo(within);
1162    var collision = (options.collision || 'flip').split(' ');
1163    var offsets = {};
1164    var target = typeof options.of === 'string' ? $(document).find(options.of) : $(options.of);
1165    var dimensions = getDimensions(target);
1166    var targetWidth = dimensions.width;
1167    var targetHeight = dimensions.height;
1168    var targetOffset = dimensions.offset;
1169    if (target[0].preventDefault) {
1170      options.at = 'left top';
1171    }
1172    var basePosition = $.extend({}, targetOffset);
1173    $.each(['my', 'at'], function () {
1174      var pos = (options[this] || '').split(' ');
1175      if (pos.length === 1) {
1176        pos = regexHorizontal.test(pos[0]) ? pos.concat(['center']) : regexVertical.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center'];
1177      }
1178      pos[0] = regexHorizontal.test(pos[0]) ? pos[0] : 'center';
1179      pos[1] = regexVertical.test(pos[1]) ? pos[1] : 'center';
1180      var horizontalOffset = regexOffset.exec(pos[0]);
1181      var verticalOffset = regexOffset.exec(pos[1]);
1182      offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0];
1183      options[this] = [regexPosition.exec(pos[0])[0], regexPosition.exec(pos[1])[0]];
1184    });
1185    if (collision.length === 1) {
1186      collision[1] = collision[0];
1187    }
1188    if (options.at[0] === 'right') {
1189      basePosition.left += targetWidth;
1190    } else if (options.at[0] === 'center') {
1191      basePosition.left += targetWidth / 2;
1192    }
1193    if (options.at[1] === 'bottom') {
1194      basePosition.top += targetHeight;
1195    } else if (options.at[1] === 'center') {
1196      basePosition.top += targetHeight / 2;
1197    }
1198    var atOffset = getOffsets(offsets.at, targetWidth, targetHeight);
1199    basePosition.left += atOffset[0];
1200    basePosition.top += atOffset[1];
1201    return this.each(function () {
1202      var using;
1203      var elem = $(this);
1204      var elemWidth = elem.outerWidth();
1205      var elemHeight = elem.outerHeight();
1206      var marginLeft = parseCss(this, 'marginLeft');
1207      var marginTop = parseCss(this, 'marginTop');
1208      var collisionWidth = elemWidth + marginLeft + parseCss(this, 'marginRight') + scrollInfo.width;
1209      var collisionHeight = elemHeight + marginTop + parseCss(this, 'marginBottom') + scrollInfo.height;
1210      var position = $.extend({}, basePosition);
1211      var myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());
1212      if (options.my[0] === 'right') {
1213        position.left -= elemWidth;
1214      } else if (options.my[0] === 'center') {
1215        position.left -= elemWidth / 2;
1216      }
1217      if (options.my[1] === 'bottom') {
1218        position.top -= elemHeight;
1219      } else if (options.my[1] === 'center') {
1220        position.top -= elemHeight / 2;
1221      }
1222      position.left += myOffset[0];
1223      position.top += myOffset[1];
1224      var collisionPosition = {
1225        marginLeft: marginLeft,
1226        marginTop: marginTop
1227      };
1228      $.each(['left', 'top'], function (i, dir) {
1229        if (collisions[collision[i]]) {
1230          collisions[collision[i]][dir](position, {
1231            targetWidth: targetWidth,
1232            targetHeight: targetHeight,
1233            elemWidth: elemWidth,
1234            elemHeight: elemHeight,
1235            collisionPosition: collisionPosition,
1236            collisionWidth: collisionWidth,
1237            collisionHeight: collisionHeight,
1238            offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],
1239            my: options.my,
1240            at: options.at,
1241            within: within,
1242            elem: elem
1243          });
1244        }
1245      });
1246      if (options.using) {
1247        using = function using(props) {
1248          var left = targetOffset.left - position.left;
1249          var right = left + targetWidth - elemWidth;
1250          var top = targetOffset.top - position.top;
1251          var bottom = top + targetHeight - elemHeight;
1252          var feedback = {
1253            target: {
1254              element: target,
1255              left: targetOffset.left,
1256              top: targetOffset.top,
1257              width: targetWidth,
1258              height: targetHeight
1259            },
1260            element: {
1261              element: elem,
1262              left: position.left,
1263              top: position.top,
1264              width: elemWidth,
1265              height: elemHeight
1266            },
1267            horizontal: right < 0 ? 'left' : left > 0 ? 'right' : 'center',
1268            vertical: bottom < 0 ? 'top' : top > 0 ? 'bottom' : 'middle'
1269          };
1270          if (targetWidth < elemWidth && abs(left + right) < targetWidth) {
1271            feedback.horizontal = 'center';
1272          }
1273          if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) {
1274            feedback.vertical = 'middle';
1275          }
1276          if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) {
1277            feedback.important = 'horizontal';
1278          } else {
1279            feedback.important = 'vertical';
1280          }
1281          options.using.call(this, props, feedback);
1282        };
1283      }
1284      elem.offset($.extend(position, {
1285        using: using
1286      }));
1287    });
1288  };
1289  if (!$.hasOwnProperty('ui')) {
1290    $.ui = {};
1291  }
1292  $.ui.position = collisions;
1293})(jQuery);;
1294/**
1295* DO NOT EDIT THIS FILE.
1296* See the following change record for more information,
1297* https://www.drupal.org/node/2815083
1298* @preserve
1299**/
1300(function ($, Drupal, drupalSettings) {
1301  drupalSettings.dialog = {
1302    autoOpen: true,
1303    dialogClass: '',
1304    buttonClass: 'button',
1305    buttonPrimaryClass: 'button--primary',
1306    close: function close(event) {
1307      Drupal.dialog(event.target).close();
1308      Drupal.detachBehaviors(event.target, null, 'unload');
1309    }
1310  };
1311  Drupal.dialog = function (element, options) {
1312    var undef;
1313    var $element = $(element);
1314    var dialog = {
1315      open: false,
1316      returnValue: undef
1317    };
1318    function openDialog(settings) {
1319      settings = $.extend({}, drupalSettings.dialog, options, settings);
1320      $(window).trigger('dialog:beforecreate', [dialog, $element, settings]);
1321      $element.dialog(settings);
1322      dialog.open = true;
1323      $(window).trigger('dialog:aftercreate', [dialog, $element, settings]);
1324    }
1325    function closeDialog(value) {
1326      $(window).trigger('dialog:beforeclose', [dialog, $element]);
1327      $element.dialog('close');
1328      dialog.returnValue = value;
1329      dialog.open = false;
1330      $(window).trigger('dialog:afterclose', [dialog, $element]);
1331    }
1332    dialog.show = function () {
1333      openDialog({
1334        modal: false
1335      });
1336    };
1337    dialog.showModal = function () {
1338      openDialog({
1339        modal: true
1340      });
1341    };
1342    dialog.close = closeDialog;
1343    return dialog;
1344  };
1345})(jQuery, Drupal, drupalSettings);;
1346/**
1347* DO NOT EDIT THIS FILE.
1348* See the following change record for more information,
1349* https://www.drupal.org/node/2815083
1350* @preserve
1351**/
1352(function ($, Drupal, drupalSettings, debounce, displace) {
1353  drupalSettings.dialog = $.extend({
1354    autoResize: true,
1355    maxHeight: '95%'
1356  }, drupalSettings.dialog);
1357  function resetPosition(options) {
1358    var offsets = displace.offsets;
1359    var left = offsets.left - offsets.right;
1360    var top = offsets.top - offsets.bottom;
1361    var leftString = "".concat((left > 0 ? '+' : '-') + Math.abs(Math.round(left / 2)), "px");
1362    var topString = "".concat((top > 0 ? '+' : '-') + Math.abs(Math.round(top / 2)), "px");
1363    options.position = {
1364      my: "center".concat(left !== 0 ? leftString : '', " center").concat(top !== 0 ? topString : ''),
1365      of: window
1366    };
1367    return options;
1368  }
1369  function resetSize(event) {
1370    var positionOptions = ['width', 'height', 'minWidth', 'minHeight', 'maxHeight', 'maxWidth', 'position'];
1371    var adjustedOptions = {};
1372    var windowHeight = $(window).height();
1373    var option;
1374    var optionValue;
1375    var adjustedValue;
1376    for (var n = 0; n < positionOptions.length; n++) {
1377      option = positionOptions[n];
1378      optionValue = event.data.settings[option];
1379      if (optionValue) {
1380        if (typeof optionValue === 'string' && /%$/.test(optionValue) && /height/i.test(option)) {
1381          windowHeight -= displace.offsets.top + displace.offsets.bottom;
1382          adjustedValue = parseInt(0.01 * parseInt(optionValue, 10) * windowHeight, 10);
1383          if (option === 'height' && event.data.$element.parent().outerHeight() < adjustedValue) {
1384            adjustedValue = 'auto';
1385          }
1386          adjustedOptions[option] = adjustedValue;
1387        }
1388      }
1389    }
1390    if (!event.data.settings.modal) {
1391      adjustedOptions = resetPosition(adjustedOptions);
1392    }
1393    event.data.$element.dialog('option', adjustedOptions).trigger('dialogContentResize');
1394  }
1395  $(window).on({
1396    'dialog:aftercreate': function dialogAftercreate(event, dialog, $element, settings) {
1397      var autoResize = debounce(resetSize, 20);
1398      var eventData = {
1399        settings: settings,
1400        $element: $element
1401      };
1402      if (settings.autoResize === true || settings.autoResize === 'true') {
1403        $element.dialog('option', {
1404          resizable: false,
1405          draggable: false
1406        }).dialog('widget').css('position', 'fixed');
1407        $(window).on('resize.dialogResize scroll.dialogResize', eventData, autoResize).trigger('resize.dialogResize');
1408        $(document).on('drupalViewportOffsetChange.dialogResize', eventData, autoResize);
1409      }
1410    },
1411    'dialog:beforeclose': function dialogBeforeclose(event, dialog, $element) {
1412      $(window).off('.dialogResize');
1413      $(document).off('.dialogResize');
1414    }
1415  });
1416})(jQuery, Drupal, drupalSettings, Drupal.debounce, Drupal.displace);;
1417/**
1418* DO NOT EDIT THIS FILE.
1419* See the following change record for more information,
1420* https://www.drupal.org/node/2815083
1421* @preserve
1422**/
1423(function ($, _ref) {
1424  var tabbable = _ref.tabbable,
1425    isTabbable = _ref.isTabbable;
1426  $.widget('ui.dialog', $.ui.dialog, {
1427    options: {
1428      buttonClass: 'button',
1429      buttonPrimaryClass: 'button--primary'
1430    },
1431    _createButtons: function _createButtons() {
1432      var opts = this.options;
1433      var primaryIndex;
1434      var index;
1435      var il = opts.buttons.length;
1436      for (index = 0; index < il; index++) {
1437        if (opts.buttons[index].primary && opts.buttons[index].primary === true) {
1438          primaryIndex = index;
1439          delete opts.buttons[index].primary;
1440          break;
1441        }
1442      }
1443      this._super();
1444      var $buttons = this.uiButtonSet.children().addClass(opts.buttonClass);
1445      if (typeof primaryIndex !== 'undefined') {
1446        $buttons.eq(index).addClass(opts.buttonPrimaryClass);
1447      }
1448    },
1449    _focusTabbable: function _focusTabbable() {
1450      var hasFocus = this._focusedElement ? this._focusedElement.get(0) : null;
1451      if (!hasFocus) {
1452        hasFocus = this.element.find('[autofocus]').get(0);
1453      }
1454      if (!hasFocus) {
1455        var $elements = [this.element, this.uiDialogButtonPane];
1456        for (var i = 0; i < $elements.length; i++) {
1457          var element = $elements[i].get(0);
1458          if (element) {
1459            var elementTabbable = tabbable(element);
1460            hasFocus = elementTabbable.length ? elementTabbable[0] : null;
1461          }
1462          if (hasFocus) {
1463            break;
1464          }
1465        }
1466      }
1467      if (!hasFocus) {
1468        var closeBtn = this.uiDialogTitlebarClose.get(0);
1469        hasFocus = closeBtn && isTabbable(closeBtn) ? closeBtn : null;
1470      }
1471      if (!hasFocus) {
1472        hasFocus = this.uiDialog.get(0);
1473      }
1474      $(hasFocus).eq(0).trigger('focus');
1475    }
1476  });
1477})(jQuery, window.tabbable);;
1478/**
1479* DO NOT EDIT THIS FILE.
1480* See the following change record for more information,
1481* https://www.drupal.org/node/2815083
1482* @preserve
1483**/
1484(function ($, Drupal) {
1485  Drupal.behaviors.dialog = {
1486    attach: function attach(context, settings) {
1487      var $context = $(context);
1488      if (!$('#drupal-modal').length) {
1489        $('<div id="drupal-modal" class="ui-front"></div>').hide().appendTo('body');
1490      }
1491      var $dialog = $context.closest('.ui-dialog-content');
1492      if ($dialog.length) {
1493        if ($dialog.dialog('option', 'drupalAutoButtons')) {
1494          $dialog.trigger('dialogButtonsChange');
1495        }
1496        $dialog.dialog('widget').trigger('focus');
1497      }
1498      var originalClose = settings.dialog.close;
1499      settings.dialog.close = function (event) {
1500        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1501          args[_key - 1] = arguments[_key];
1502        }
1503        originalClose.apply(settings.dialog, [event].concat(args));
1504        $(event.target).remove();
1505      };
1506    },
1507    prepareDialogButtons: function prepareDialogButtons($dialog) {
1508      var buttons = [];
1509      var $buttons = $dialog.find('.form-actions input[type=submit], .form-actions a.button');
1510      $buttons.each(function () {
1511        var $originalButton = $(this).css({
1512          display: 'none'
1513        });
1514        buttons.push({
1515          text: $originalButton.html() || $originalButton.attr('value'),
1516          class: $originalButton.attr('class'),
1517          click: function click(e) {
1518            if ($originalButton.is('a')) {
1519              $originalButton[0].click();
1520            } else {
1521              $originalButton.trigger('mousedown').trigger('mouseup').trigger('click');
1522              e.preventDefault();
1523            }
1524          }
1525        });
1526      });
1527      return buttons;
1528    }
1529  };
1530  Drupal.AjaxCommands.prototype.openDialog = function (ajax, response, status) {
1531    if (!response.selector) {
1532      return false;
1533    }
1534    var $dialog = $(response.selector);
1535    if (!$dialog.length) {
1536      $dialog = $("<div id=\"".concat(response.selector.replace(/^#/, ''), "\" class=\"ui-front\"></div>")).appendTo('body');
1537    }
1538    if (!ajax.wrapper) {
1539      ajax.wrapper = $dialog.attr('id');
1540    }
1541    response.command = 'insert';
1542    response.method = 'html';
1543    ajax.commands.insert(ajax, response, status);
1544    if (!response.dialogOptions.buttons) {
1545      response.dialogOptions.drupalAutoButtons = true;
1546      response.dialogOptions.buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog);
1547    }
1548    $dialog.on('dialogButtonsChange', function () {
1549      var buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog);
1550      $dialog.dialog('option', 'buttons', buttons);
1551    });
1552    response.dialogOptions = response.dialogOptions || {};
1553    var dialog = Drupal.dialog($dialog.get(0), response.dialogOptions);
1554    if (response.dialogOptions.modal) {
1555      dialog.showModal();
1556    } else {
1557      dialog.show();
1558    }
1559    $dialog.parent().find('.ui-dialog-buttonset').addClass('form-actions');
1560  };
1561  Drupal.AjaxCommands.prototype.closeDialog = function (ajax, response, status) {
1562    var $dialog = $(response.selector);
1563    if ($dialog.length) {
1564      Drupal.dialog($dialog.get(0)).close();
1565      if (!response.persist) {
1566        $dialog.remove();
1567      }
1568    }
1569    $dialog.off('dialogButtonsChange');
1570  };
1571  Drupal.AjaxCommands.prototype.setDialogOption = function (ajax, response, status) {
1572    var $dialog = $(response.selector);
1573    if ($dialog.length) {
1574      $dialog.dialog('option', response.optionName, response.optionValue);
1575    }
1576  };
1577  $(window).on('dialog:aftercreate', function (e, dialog, $element, settings) {
1578    $element.on('click.dialog', '.dialog-cancel', function (e) {
1579      dialog.close('cancel');
1580      e.preventDefault();
1581      e.stopPropagation();
1582    });
1583  });
1584  $(window).on('dialog:beforeclose', function (e, dialog, $element) {
1585    $element.off('.dialog');
1586  });
1587})(jQuery, Drupal);;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.