PageSourceSearch

https://www.speedshop.co/assets/js/app-GNHMXSGB.js

js speedshop.co collected 2026-09-24 09:02:03 UTC 58,292 bytes, 1,812 lines download raw bytes

1(() => {
2  var __create = Object.create;
3  var __defProp = Object.defineProperty;
4  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5  var __getOwnPropNames = Object.getOwnPropertyNames;
6  var __getProtoOf = Object.getPrototypeOf;
7  var __hasOwnProp = Object.prototype.hasOwnProperty;
8  var __commonJS = (cb, mod) =>
9    function __require() {
10      try {
11        return (
12          mod ||
13            (0, cb[__getOwnPropNames(cb)[0]])(
14              (mod = { exports: {} }).exports,
15              mod,
16            ),
17          mod.exports
18        );
19      } catch (e) {
20        throw ((mod = 0), e);
21      }
22    };
23  var __copyProps = (to, from, except, desc) => {
24    if ((from && typeof from === "object") || typeof from === "function") {
25      for (let key of __getOwnPropNames(from))
26        if (!__hasOwnProp.call(to, key) && key !== except)
27          __defProp(to, key, {
28            get: () => from[key],
29            enumerable:
30              !(desc = __getOwnPropDesc(from, key)) || desc.enumerable,
31          });
32    }
33    return to;
34  };
35  var __toESM = (mod, isNodeMode, target) => (
36    (target = mod != null ? __create(__getProtoOf(mod)) : {}),
37    __copyProps(
38      // If the importer is in node compatibility mode or this is not an ESM
39      // file that has been converted to a CommonJS file using a Babel-
40      // compatible transform (i.e. "__esModule" has not been set), then set
41      // "default" to the CommonJS "module.exports" for node compatibility.
42      isNodeMode || !mod || !mod.__esModule
43        ? __defProp(target, "default", { value: mod, enumerable: true })
44        : target,
45      mod,
46    )
47  );
48
49  
vendor: 470 bytes, lines 49-65
49// node_modules/pjax/lib/foreach-els.js
50  var require_foreach_els = __commonJS({
51    "node_modules/pjax/lib/foreach-els.js"(exports, module) {
52      module.exports = function (els, fn, context) {
53        if (
54          els instanceof HTMLCollection ||
55          els instanceof NodeList ||
56          els instanceof Array
57        ) {
58          return Array.prototype.forEach.call(els, fn, context);
59        }
60        return fn.call(context, els);
61      };
62    },
63  });
64
65  
vendor: 1,385 bytes, lines 65-111
65// node_modules/pjax/lib/eval-script.js
66  var require_eval_script = __commonJS({
67    "node_modules/pjax/lib/eval-script.js"(exports, module) {
68      module.exports = function (el) {
69        var code = el.text || el.textContent || el.innerHTML || "";
70        var src = el.src || "";
71        var parent =
72          el.parentNode ||
73          document.querySelector("head") ||
74          document.documentElement;
75        var script = document.createElement("script");
76        if (code.match("document.write")) {
77          if (console && console.log) {
78            console.log(
79              "Script contains document.write. Can\u2019t be executed correctly. Code skipped ",
80              el,
81            );
82          }
83          return false;
84        }
85        script.type = "text/javascript";
86        script.id = el.id;
87        if (src !== "") {
88          script.src = src;
89          script.async = false;
90        }
91        if (code !== "") {
92          try {
93            script.appendChild(document.createTextNode(code));
94          } catch (e) {
95            script.text = code;
96          }
97        }
98        parent.appendChild(script);
99        if (
100          (parent instanceof HTMLHeadElement ||
101            parent instanceof HTMLBodyElement) &&
102          parent.contains(script)
103        ) {
104          parent.removeChild(script);
105        }
106        return true;
107      };
108    },
109  });
110
111  
vendor: 711 bytes, lines 111-132
111// node_modules/pjax/lib/execute-scripts.js
112  var require_execute_scripts = __commonJS({
113    "node_modules/pjax/lib/execute-scripts.js"(exports, module) {
114      var forEachEls = require_foreach_els();
115      var evalScript = require_eval_script();
116      module.exports = function (el) {
117        if (el.tagName.toLowerCase() === "script") {
118          evalScript(el);
119        }
120        forEachEls(el.querySelectorAll("script"), function (script) {
121          if (!script.type || script.type.toLowerCase() === "text/javascript") {
122            if (script.parentNode) {
123              script.parentNode.removeChild(script);
124            }
125            evalScript(script);
126          }
127        });
128      };
129    },
130  });
131
132  
vendor: 509 bytes, lines 132-147
132// node_modules/pjax/lib/events/on.js
133  var require_on = __commonJS({
134    "node_modules/pjax/lib/events/on.js"(exports, module) {
135      var forEachEls = require_foreach_els();
136      module.exports = function (els, events, listener, useCapture) {
137        events = typeof events === "string" ? events.split(" ") : events;
138        events.forEach(function (e) {
139          forEachEls(els, function (el) {
140            el.addEventListener(e, listener, useCapture);
141          });
142        });
143      };
144    },
145  });
146
147  
vendor: 4,742 bytes, lines 147-275
147// node_modules/pjax/lib/switches.js
148  var require_switches = __commonJS({
149    "node_modules/pjax/lib/switches.js"(exports, module) {
150      var on = require_on();
151      module.exports = {
152        outerHTML: function (oldEl, newEl) {
153          oldEl.outerHTML = newEl.outerHTML;
154          this.onSwitch();
155        },
156        innerHTML: function (oldEl, newEl) {
157          oldEl.innerHTML = newEl.innerHTML;
158          if (newEl.className === "") {
159            oldEl.removeAttribute("class");
160          } else {
161            oldEl.className = newEl.className;
162          }
163          this.onSwitch();
164        },
165        switchElementsAlt: function (oldEl, newEl) {
166          oldEl.innerHTML = newEl.innerHTML;
167          if (newEl.hasAttributes()) {
168            var attrs = newEl.attributes;
169            for (var i = 0; i < attrs.length; i++) {
170              oldEl.attributes.setNamedItem(attrs[i].cloneNode());
171            }
172          }
173          this.onSwitch();
174        },
175        // Equivalent to outerHTML(), but doesn't require switchElementsAlt() for <head> and <body>
176        replaceNode: function (oldEl, newEl) {
177          oldEl.parentNode.replaceChild(newEl, oldEl);
178          this.onSwitch();
179        },
180        sideBySide: function (oldEl, newEl, options, switchOptions) {
181          var forEach = Array.prototype.forEach;
182          var elsToRemove = [];
183          var elsToAdd = [];
184          var fragToAppend = document.createDocumentFragment();
185          var animationEventNames =
186            "animationend webkitAnimationEnd MSAnimationEnd oanimationend";
187          var animatedElsNumber = 0;
188          var sexyAnimationEnd = function (e) {
189            if (e.target !== e.currentTarget) {
190              return;
191            }
192            animatedElsNumber--;
193            if (animatedElsNumber <= 0 && elsToRemove) {
194              elsToRemove.forEach(function (el) {
195                if (el.parentNode) {
196                  el.parentNode.removeChild(el);
197                }
198              });
199              elsToAdd.forEach(function (el) {
200                el.className = el.className.replace(
201                  el.getAttribute("data-pjax-classes"),
202                  "",
203                );
204                el.removeAttribute("data-pjax-classes");
205              });
206              elsToAdd = null;
207              elsToRemove = null;
208              this.onSwitch();
209            }
210          }.bind(this);
211          switchOptions = switchOptions || {};
212          forEach.call(oldEl.childNodes, function (el) {
213            elsToRemove.push(el);
214            if (el.classList && !el.classList.contains("js-Pjax-remove")) {
215              if (el.hasAttribute("data-pjax-classes")) {
216                el.className = el.className.replace(
217                  el.getAttribute("data-pjax-classes"),
218                  "",
219                );
220                el.removeAttribute("data-pjax-classes");
221              }
222              el.classList.add("js-Pjax-remove");
223              if (
224                switchOptions.callbacks &&
225                switchOptions.callbacks.removeElement
226              ) {
227                switchOptions.callbacks.removeElement(el);
228              }
229              if (switchOptions.classNames) {
230                el.className +=
231                  " " +
232                  switchOptions.classNames.remove +
233                  " " +
234                  (options.backward
235                    ? switchOptions.classNames.backward
236                    : switchOptions.classNames.forward);
237              }
238              animatedElsNumber++;
239              on(el, animationEventNames, sexyAnimationEnd, true);
240            }
241          });
242          forEach.call(newEl.childNodes, function (el) {
243            if (el.classList) {
244              var addClasses = "";
245              if (switchOptions.classNames) {
246                addClasses =
247                  " js-Pjax-add " +
248                  switchOptions.classNames.add +
249                  " " +
250                  (options.backward
251                    ? switchOptions.classNames.forward
252                    : switchOptions.classNames.backward);
253              }
254              if (
255                switchOptions.callbacks &&
256                switchOptions.callbacks.addElement
257              ) {
258                switchOptions.callbacks.addElement(el);
259              }
260              el.className += addClasses;
261              el.setAttribute("data-pjax-classes", addClasses);
262              elsToAdd.push(el);
263              fragToAppend.appendChild(el);
264              animatedElsNumber++;
265              on(el, animationEventNames, sexyAnimationEnd, true);
266            }
267          });
268          oldEl.className = newEl.className;
269          oldEl.appendChild(fragToAppend);
270        },
271      };
272    },
273  });
274
275  
vendor: 1,993 bytes, lines 275-327
275// node_modules/pjax/lib/parse-options.js
276  var require_parse_options = __commonJS({
277    "node_modules/pjax/lib/parse-options.js"(exports, module) {
278      var defaultSwitches = require_switches();
279      module.exports = function (options) {
280        options = options || {};
281        options.elements = options.elements || "a[href], form[action]";
282        options.selectors = options.selectors || ["title", ".js-Pjax"];
283        options.switches = options.switches || {};
284        options.switchesOptions = options.switchesOptions || {};
285        options.history =
286          typeof options.history === "undefined" ? true : options.history;
287        options.analytics =
288          typeof options.analytics === "function" || options.analytics === false
289            ? options.analytics
290            : defaultAnalytics;
291        options.scrollTo =
292          typeof options.scrollTo === "undefined" ? 0 : options.scrollTo;
293        options.scrollRestoration =
294          typeof options.scrollRestoration !== "undefined"
295            ? options.scrollRestoration
296            : true;
297        options.cacheBust =
298          typeof options.cacheBust === "undefined" ? true : options.cacheBust;
299        options.debug = options.debug || false;
300        options.timeout = options.timeout || 0;
301        options.currentUrlFullReload =
302          typeof options.currentUrlFullReload === "undefined"
303            ? false
304            : options.currentUrlFullReload;
305        if (!options.switches.head) {
306          options.switches.head = defaultSwitches.switchElementsAlt;
307        }
308        if (!options.switches.body) {
309          options.switches.body = defaultSwitches.switchElementsAlt;
310        }
311        return options;
312      };
313      function defaultAnalytics() {
314        if (window._gaq) {
315          _gaq.push(["_trackPageview"]);
316        }
317        if (window.ga) {
318          ga("send", "pageview", {
319            page: location.pathname,
320            title: document.title,
321          });
322        }
323      }
324    },
325  });
326
327  
vendor: 417 bytes, lines 327-342
327// node_modules/pjax/lib/uniqueid.js
328  var require_uniqueid = __commonJS({
329    "node_modules/pjax/lib/uniqueid.js"(exports, module) {
330      module.exports = /* @__PURE__ */ (function () {
331        var counter = 0;
332        return function () {
333          var id =
334            "pjax" + /* @__PURE__ */ new Date().getTime() + "_" + counter;
335          counter++;
336          return id;
337        };
338      })();
339    },
340  });
341
342  
vendor: 1,053 bytes, lines 342-374
342// node_modules/pjax/lib/events/trigger.js
343  var require_trigger = __commonJS({
344    "node_modules/pjax/lib/events/trigger.js"(exports, module) {
345      var forEachEls = require_foreach_els();
346      module.exports = function (els, events, opts) {
347        events = typeof events === "string" ? events.split(" ") : events;
348        events.forEach(function (e) {
349          var event;
350          event = document.createEvent("HTMLEvents");
351          event.initEvent(e, true, true);
352          event.eventName = e;
353          if (opts) {
354            Object.keys(opts).forEach(function (key) {
355              event[key] = opts[key];
356            });
357          }
358          forEachEls(els, function (el) {
359            var domFix = false;
360            if (!el.parentNode && el !== document && el !== window) {
361              domFix = true;
362              document.body.appendChild(el);
363            }
364            el.dispatchEvent(event);
365            if (domFix) {
366              el.parentNode.removeChild(el);
367            }
368          });
369        });
370      };
371    },
372  });
373
374  
vendor: 478 bytes, lines 374-392
374// node_modules/pjax/lib/util/clone.js
375  var require_clone = __commonJS({
376    "node_modules/pjax/lib/util/clone.js"(exports, module) {
377      module.exports = function (obj) {
378        if (null === obj || "object" !== typeof obj) {
379          return obj;
380        }
381        var copy = obj.constructor();
382        for (var attr in obj) {
383          if (obj.hasOwnProperty(attr)) {
384            copy[attr] = obj[attr];
385          }
386        }
387        return copy;
388      };
389    },
390  });
391
392  
vendor: 538 bytes, lines 392-409
392// node_modules/pjax/lib/util/contains.js
393  var require_contains = __commonJS({
394    "node_modules/pjax/lib/util/contains.js"(exports, module) {
395      module.exports = function contains(doc, selectors, el) {
396        for (var i = 0; i < selectors.length; i++) {
397          var selectedEls = doc.querySelectorAll(selectors[i]);
398          for (var j = 0; j < selectedEls.length; j++) {
399            if (selectedEls[j].contains(el)) {
400              return true;
401            }
402          }
403        }
404        return false;
405      };
406    },
407  });
408
409  
vendor: 643 bytes, lines 409-432
409// node_modules/pjax/lib/util/extend.js
410  var require_extend = __commonJS({
411    "node_modules/pjax/lib/util/extend.js"(exports, module) {
412      module.exports = function (target) {
413        if (target == null) {
414          return null;
415        }
416        var to = Object(target);
417        for (var i = 1; i < arguments.length; i++) {
418          var source = arguments[i];
419          if (source != null) {
420            for (var key in source) {
421              if (Object.prototype.hasOwnProperty.call(source, key)) {
422                to[key] = source[key];
423              }
424            }
425          }
426        }
427        return to;
428      };
429    },
430  });
431
432  
vendor: 187 bytes, lines 432-439
432// node_modules/pjax/lib/util/noop.js
433  var require_noop = __commonJS({
434    "node_modules/pjax/lib/util/noop.js"(exports, module) {
435      module.exports = function () {};
436    },
437  });
438
439  
vendor: 434 bytes, lines 439-454
439// node_modules/pjax/lib/proto/log.js
440  var require_log = __commonJS({
441    "node_modules/pjax/lib/proto/log.js"(exports, module) {
442      module.exports = function () {
443        if (this.options.debug && console) {
444          if (typeof console.log === "function") {
445            console.log.apply(console, arguments);
446          } else if (console.log) {
447            console.log(arguments);
448          }
449        }
450      };
451    },
452  });
453
454  
vendor: 682 bytes, lines 454-477
454// node_modules/pjax/lib/proto/parse-element.js
455  var require_parse_element = __commonJS({
456    "node_modules/pjax/lib/proto/parse-element.js"(exports, module) {
457      var attrState = "data-pjax-state";
458      module.exports = function (el) {
459        switch (el.tagName.toLowerCase()) {
460          case "a":
461            if (!el.hasAttribute(attrState)) {
462              this.attachLink(el);
463            }
464            break;
465          case "form":
466            if (!el.hasAttribute(attrState)) {
467              this.attachForm(el);
468            }
469            break;
470          default:
471            throw "Pjax can only be applied on <a> or <form> submit";
472        }
473      };
474    },
475  });
476
477  
vendor: 2,246 bytes, lines 477-555
477// node_modules/pjax/lib/proto/attach-link.js
478  var require_attach_link = __commonJS({
479    "node_modules/pjax/lib/proto/attach-link.js"(exports, module) {
480      var on = require_on();
481      var clone = require_clone();
482      var attrState = "data-pjax-state";
483      var linkAction = function (el, event) {
484        if (isDefaultPrevented(event)) {
485          return;
486        }
487        var options = clone(this.options);
488        var attrValue = checkIfShouldAbort(el, event);
489        if (attrValue) {
490          el.setAttribute(attrState, attrValue);
491          return;
492        }
493        event.preventDefault();
494        if (
495          this.options.currentUrlFullReload &&
496          el.href === window.location.href.split("#")[0]
497        ) {
498          el.setAttribute(attrState, "reload");
499          this.reload();
500          return;
501        }
502        el.setAttribute(attrState, "load");
503        options.triggerElement = el;
504        this.loadUrl(el.href, options);
505      };
506      function checkIfShouldAbort(el, event) {
507        if (
508          event.which > 1 ||
509          event.metaKey ||
510          event.ctrlKey ||
511          event.shiftKey ||
512          event.altKey
513        ) {
514          return "modifier";
515        }
516        if (
517          el.protocol !== window.location.protocol ||
518          el.host !== window.location.host
519        ) {
520          return "external";
521        }
522        if (
523          el.hash &&
524          el.href.replace(el.hash, "") ===
525            window.location.href.replace(location.hash, "")
526        ) {
527          return "anchor";
528        }
529        if (el.href === window.location.href.split("#")[0] + "#") {
530          return "anchor-empty";
531        }
532      }
533      var isDefaultPrevented = function (event) {
534        return event.defaultPrevented || event.returnValue === false;
535      };
536      module.exports = function (el) {
537        var that = this;
538        el.setAttribute(attrState, "");
539        on(el, "click", function (event) {
540          linkAction.call(that, el, event);
541        });
542        on(
543          el,
544          "keyup",
545          function (event) {
546            if (event.keyCode === 13) {
547              linkAction.call(that, el, event);
548            }
549          }.bind(this),
550        );
551      };
552    },
553  });
554
555  
vendor: 3,873 bytes, lines 555-666
555// node_modules/pjax/lib/proto/attach-form.js
556  var require_attach_form = __commonJS({
557    "node_modules/pjax/lib/proto/attach-form.js"(exports, module) {
558      var on = require_on();
559      var clone = require_clone();
560      var attrState = "data-pjax-state";
561      var formAction = function (el, event) {
562        if (isDefaultPrevented(event)) {
563          return;
564        }
565        var options = clone(this.options);
566        options.requestOptions = {
567          requestUrl: el.getAttribute("action") || window.location.href,
568          requestMethod: el.getAttribute("method") || "GET",
569        };
570        var virtLinkElement = document.createElement("a");
571        virtLinkElement.setAttribute("href", options.requestOptions.requestUrl);
572        var attrValue = checkIfShouldAbort(virtLinkElement, options);
573        if (attrValue) {
574          el.setAttribute(attrState, attrValue);
575          return;
576        }
577        event.preventDefault();
578        if (el.enctype === "multipart/form-data") {
579          options.requestOptions.formData = new FormData(el);
580        } else {
581          options.requestOptions.requestParams = parseFormElements(el);
582        }
583        el.setAttribute(attrState, "submit");
584        options.triggerElement = el;
585        this.loadUrl(virtLinkElement.href, options);
586      };
587      function parseFormElements(el) {
588        var requestParams = [];
589        var formElements = el.elements;
590        for (var i = 0; i < formElements.length; i++) {
591          var element = formElements[i];
592          var tagName = element.tagName.toLowerCase();
593          if (
594            !!element.name &&
595            element.attributes !== void 0 &&
596            tagName !== "button"
597          ) {
598            var type = element.attributes.type;
599            if (
600              !type ||
601              (type.value !== "checkbox" && type.value !== "radio") ||
602              element.checked
603            ) {
604              var values = [];
605              if (tagName === "select") {
606                var opt;
607                for (var j = 0; j < element.options.length; j++) {
608                  opt = element.options[j];
609                  if (opt.selected && !opt.disabled) {
610                    values.push(
611                      opt.hasAttribute("value") ? opt.value : opt.text,
612                    );
613                  }
614                }
615              } else {
616                values.push(element.value);
617              }
618              for (var k = 0; k < values.length; k++) {
619                requestParams.push({
620                  name: encodeURIComponent(element.name),
621                  value: encodeURIComponent(values[k]),
622                });
623              }
624            }
625          }
626        }
627        return requestParams;
628      }
629      function checkIfShouldAbort(virtLinkElement, options) {
630        if (
631          virtLinkElement.protocol !== window.location.protocol ||
632          virtLinkElement.host !== window.location.host
633        ) {
634          return "external";
635        }
636        if (
637          virtLinkElement.hash &&
638          virtLinkElement.href.replace(virtLinkElement.hash, "") ===
639            window.location.href.replace(location.hash, "")
640        ) {
641          return "anchor";
642        }
643        if (virtLinkElement.href === window.location.href.split("#")[0] + "#") {
644          return "anchor-empty";
645        }
646        if (
647          options.currentUrlFullReload &&
648          virtLinkElement.href === window.location.href.split("#")[0]
649        ) {
650          return "reload";
651        }
652      }
653      var isDefaultPrevented = function (event) {
654        return event.defaultPrevented || event.returnValue === false;
655      };
656      module.exports = function (el) {
657        var that = this;
658        el.setAttribute(attrState, "");
659        on(el, "submit", function (event) {
660          formAction.call(that, el, event);
661        });
662      };
663    },
664  });
665
666  
vendor: 482 bytes, lines 666-679
666// node_modules/pjax/lib/foreach-selectors.js
667  var require_foreach_selectors = __commonJS({
668    "node_modules/pjax/lib/foreach-selectors.js"(exports, module) {
669      var forEachEls = require_foreach_els();
670      module.exports = function (selectors, cb, context, DOMcontext) {
671        DOMcontext = DOMcontext || document;
672        selectors.forEach(function (selector) {
673          forEachEls(DOMcontext.querySelectorAll(selector), cb, context);
674        });
675      };
676    },
677  });
678
679  
vendor: 1,870 bytes, lines 679-738
679// node_modules/pjax/lib/switches-selectors.js
680  var require_switches_selectors = __commonJS({
681    "node_modules/pjax/lib/switches-selectors.js"(exports, module) {
682      var forEachEls = require_foreach_els();
683      var defaultSwitches = require_switches();
684      module.exports = function (
685        switches,
686        switchesOptions,
687        selectors,
688        fromEl,
689        toEl,
690        options,
691      ) {
692        var switchesQueue = [];
693        selectors.forEach(function (selector) {
694          var newEls = fromEl.querySelectorAll(selector);
695          var oldEls = toEl.querySelectorAll(selector);
696          if (this.log) {
697            this.log("Pjax switch", selector, newEls, oldEls);
698          }
699          if (newEls.length !== oldEls.length) {
700            throw (
701              "DOM doesn\u2019t look the same on new loaded page: \u2019" +
702              selector +
703              "\u2019 - new " +
704              newEls.length +
705              ", old " +
706              oldEls.length
707            );
708          }
709          forEachEls(
710            newEls,
711            function (newEl, i) {
712              var oldEl = oldEls[i];
713              if (this.log) {
714                this.log("newEl", newEl, "oldEl", oldEl);
715              }
716              var callback = switches[selector]
717                ? switches[selector].bind(
718                    this,
719                    oldEl,
720                    newEl,
721                    options,
722                    switchesOptions[selector],
723                  )
724                : defaultSwitches.outerHTML.bind(this, oldEl, newEl, options);
725              switchesQueue.push(callback);
726            },
727            this,
728          );
729        }, this);
730        this.state.numPendingSwitches = switchesQueue.length;
731        switchesQueue.forEach(function (queuedSwitch) {
732          queuedSwitch();
733        });
734      };
735    },
736  });
737
738  
vendor: 382 bytes, lines 738-751
738// node_modules/pjax/lib/abort-request.js
739  var require_abort_request = __commonJS({
740    "node_modules/pjax/lib/abort-request.js"(exports, module) {
741      var noop = require_noop();
742      module.exports = function (request) {
743        if (request && request.readyState < 4) {
744          request.onreadystatechange = noop;
745          request.abort();
746        }
747      };
748    },
749  });
750
751  
vendor: 556 bytes, lines 751-766
751// node_modules/pjax/lib/util/update-query-string.js
752  var require_update_query_string = __commonJS({
753    "node_modules/pjax/lib/util/update-query-string.js"(exports, module) {
754      module.exports = function (uri, key, value) {
755        var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
756        var separator = uri.indexOf("?") !== -1 ? "&" : "?";
757        if (uri.match(re)) {
758          return uri.replace(re, "$1" + key + "=" + value + "$2");
759        } else {
760          return uri + separator + key + "=" + value;
761        }
762      };
763    },
764  });
765
766  
vendor: 2,646 bytes, lines 766-839
766// node_modules/pjax/lib/send-request.js
767  var require_send_request = __commonJS({
768    "node_modules/pjax/lib/send-request.js"(exports, module) {
769      var updateQueryString = require_update_query_string();
770      module.exports = function (location2, options, callback) {
771        options = options || {};
772        var queryString;
773        var requestOptions = options.requestOptions || {};
774        var requestMethod = (
775          requestOptions.requestMethod || "GET"
776        ).toUpperCase();
777        var requestParams = requestOptions.requestParams || null;
778        var formData = requestOptions.formData || null;
779        var requestPayload = null;
780        var request = new XMLHttpRequest();
781        var timeout = options.timeout || 0;
782        request.onreadystatechange = function () {
783          if (request.readyState === 4) {
784            if (request.status === 200) {
785              callback(request.responseText, request, location2, options);
786            } else if (request.status !== 0) {
787              callback(null, request, location2, options);
788            }
789          }
790        };
791        request.onerror = function (e) {
792          console.log(e);
793          callback(null, request, location2, options);
794        };
795        request.ontimeout = function () {
796          callback(null, request, location2, options);
797        };
798        if (requestParams && requestParams.length) {
799          queryString = requestParams
800            .map(function (param) {
801              return param.name + "=" + param.value;
802            })
803            .join("&");
804          switch (requestMethod) {
805            case "GET":
806              location2 = location2.split("?")[0];
807              location2 += "?" + queryString;
808              break;
809            case "POST":
810              requestPayload = queryString;
811              break;
812          }
813        } else if (formData) {
814          requestPayload = formData;
815        }
816        if (options.cacheBust) {
817          location2 = updateQueryString(location2, "t", Date.now());
818        }
819        request.open(requestMethod, location2, true);
820        request.timeout = timeout;
821        request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
822        request.setRequestHeader("X-PJAX", "true");
823        request.setRequestHeader(
824          "X-PJAX-Selectors",
825          JSON.stringify(options.selectors),
826        );
827        if (requestPayload && requestMethod === "POST" && !formData) {
828          request.setRequestHeader(
829            "Content-Type",
830            "application/x-www-form-urlencoded",
831          );
832        }
833        request.send(requestPayload);
834        return request;
835      };
836    },
837  });
838
839  
vendor: 2,254 bytes, lines 839-903
839// node_modules/pjax/lib/proto/handle-response.js
840  var require_handle_response = __commonJS({
841    "node_modules/pjax/lib/proto/handle-response.js"(exports, module) {
842      var clone = require_clone();
843      var newUid = require_uniqueid();
844      var trigger = require_trigger();
845      module.exports = function (responseText, request, href, options) {
846        options = clone(options || this.options);
847        options.request = request;
848        if (responseText === false) {
849          trigger(document, "pjax:complete pjax:error", options);
850          return;
851        }
852        var currentState = window.history.state || {};
853        window.history.replaceState(
854          {
855            url: currentState.url || window.location.href,
856            title: currentState.title || document.title,
857            uid: currentState.uid || newUid(),
858            scrollPos: [
859              document.documentElement.scrollLeft || document.body.scrollLeft,
860              document.documentElement.scrollTop || document.body.scrollTop,
861            ],
862          },
863          document.title,
864          window.location.href,
865        );
866        var oldHref = href;
867        if (request.responseURL) {
868          if (href !== request.responseURL) {
869            href = request.responseURL;
870          }
871        } else if (request.getResponseHeader("X-PJAX-URL")) {
872          href = request.getResponseHeader("X-PJAX-URL");
873        } else if (request.getResponseHeader("X-XHR-Redirected-To")) {
874          href = request.getResponseHeader("X-XHR-Redirected-To");
875        }
876        var a = document.createElement("a");
877        a.href = oldHref;
878        var oldHash = a.hash;
879        a.href = href;
880        if (oldHash && !a.hash) {
881          a.hash = oldHash;
882          href = a.href;
883        }
884        this.state.href = href;
885        this.state.options = options;
886        try {
887          this.loadContent(responseText, options);
888        } catch (e) {
889          trigger(document, "pjax:error", options);
890          if (!this.options.debug) {
891            if (console && console.error) {
892              console.error("Pjax switch fail: ", e);
893            }
894            return this.latestChance(href);
895          } else {
896            throw e;
897          }
898        }
899      };
900    },
901  });
902
903  
vendor: 512 bytes, lines 903-919
903// node_modules/pjax/lib/is-supported.js
904  var require_is_supported = __commonJS({
905    "node_modules/pjax/lib/is-supported.js"(exports, module) {
906      module.exports = function () {
907        return (
908          window.history &&
909          window.history.pushState &&
910          window.history.replaceState && // pushState isn’t reliable on iOS until 5.
911          !navigator.userAgent.match(
912            /((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/,
913          )
914        );
915      };
916    },
917  });
918
919  
vendor: 8,968 bytes, lines 919-1187
919// node_modules/pjax/index.js
920  var require_pjax = __commonJS({
921    "node_modules/pjax/index.js"(exports, module) {
922      var executeScripts = require_execute_scripts();
923      var forEachEls = require_foreach_els();
924      var parseOptions = require_parse_options();
925      var switches = require_switches();
926      var newUid = require_uniqueid();
927      var on = require_on();
928      var trigger = require_trigger();
929      var clone = require_clone();
930      var contains = require_contains();
931      var extend = require_extend();
932      var noop = require_noop();
933      var Pjax2 = function (options) {
934        this.state = {
935          numPendingSwitches: 0,
936          href: null,
937          options: null,
938        };
939        this.options = parseOptions(options);
940        this.log("Pjax options", this.options);
941        if (this.options.scrollRestoration && "scrollRestoration" in history) {
942          history.scrollRestoration = "manual";
943        }
944        this.maxUid = this.lastUid = newUid();
945        this.parseDOM(document);
946        on(
947          window,
948          "popstate",
949          function (st) {
950            if (st.state) {
951              var opt = clone(this.options);
952              opt.url = st.state.url;
953              opt.title = st.state.title;
954              opt.history = false;
955              opt.scrollPos = st.state.scrollPos;
956              if (st.state.uid < this.lastUid) {
957                opt.backward = true;
958              } else {
959                opt.forward = true;
960              }
961              this.lastUid = st.state.uid;
962              this.loadUrl(st.state.url, opt);
963            }
964          }.bind(this),
965        );
966      };
967      Pjax2.switches = switches;
968      Pjax2.prototype = {
969        log: require_log(),
970        getElements: function (el) {
971          return el.querySelectorAll(this.options.elements);
972        },
973        parseDOM: function (el) {
974          var parseElement = require_parse_element();
975          forEachEls(this.getElements(el), parseElement, this);
976        },
977        refresh: function (el) {
978          this.parseDOM(el || document);
979        },
980        reload: function () {
981          window.location.reload();
982        },
983        attachLink: require_attach_link(),
984        attachForm: require_attach_form(),
985        forEachSelectors: function (cb, context, DOMcontext) {
986          return require_foreach_selectors().bind(this)(
987            this.options.selectors,
988            cb,
989            context,
990            DOMcontext,
991          );
992        },
993        switchSelectors: function (selectors, fromEl, toEl, options) {
994          return require_switches_selectors().bind(this)(
995            this.options.switches,
996            this.options.switchesOptions,
997            selectors,
998            fromEl,
999            toEl,
1000            options,
1001          );
1002        },
1003        latestChance: function (href) {
1004          window.location = href;
1005        },
1006        onSwitch: function () {
1007          trigger(window, "resize scroll");
1008          this.state.numPendingSwitches--;
1009          if (this.state.numPendingSwitches === 0) {
1010            this.afterAllSwitches();
1011          }
1012        },
1013        loadContent: function (html, options) {
1014          if (typeof html !== "string") {
1015            trigger(document, "pjax:complete pjax:error", options);
1016            return;
1017          }
1018          var tmpEl = document.implementation.createHTMLDocument("pjax");
1019          var htmlRegex = /<html[^>]+>/gi;
1020          var htmlAttribsRegex = /\s?[a-z:]+(?:=['"][^'">]+['"])*/gi;
1021          var matches = html.match(htmlRegex);
1022          if (matches && matches.length) {
1023            matches = matches[0].match(htmlAttribsRegex);
1024            if (matches.length) {
1025              matches.shift();
1026              matches.forEach(function (htmlAttrib) {
1027                var attr = htmlAttrib.trim().split("=");
1028                if (attr.length === 1) {
1029                  tmpEl.documentElement.setAttribute(attr[0], true);
1030                } else {
1031                  tmpEl.documentElement.setAttribute(
1032                    attr[0],
1033                    attr[1].slice(1, -1),
1034                  );
1035                }
1036              });
1037            }
1038          }
1039          tmpEl.documentElement.innerHTML = html;
1040          this.log(
1041            "load content",
1042            tmpEl.documentElement.attributes,
1043            tmpEl.documentElement.innerHTML.length,
1044          );
1045          if (
1046            document.activeElement &&
1047            contains(document, this.options.selectors, document.activeElement)
1048          ) {
1049            try {
1050              document.activeElement.blur();
1051            } catch (e) {}
1052          }
1053          this.switchSelectors(
1054            this.options.selectors,
1055            tmpEl,
1056            document,
1057            options,
1058          );
1059        },
1060        abortRequest: require_abort_request(),
1061        doRequest: require_send_request(),
1062        handleResponse: require_handle_response(),
1063        loadUrl: function (href, options) {
1064          options =
1065            typeof options === "object"
1066              ? extend({}, this.options, options)
1067              : clone(this.options);
1068          this.log("load href", href, options);
1069          this.abortRequest(this.request);
1070          trigger(document, "pjax:send", options);
1071          this.request = this.doRequest(
1072            href,
1073            options,
1074            this.handleResponse.bind(this),
1075          );
1076        },
1077        afterAllSwitches: function () {
1078          var autofocusEl = Array.prototype.slice
1079            .call(document.querySelectorAll("[autofocus]"))
1080            .pop();
1081          if (autofocusEl && document.activeElement !== autofocusEl) {
1082            autofocusEl.focus();
1083          }
1084          this.options.selectors.forEach(function (selector) {
1085            forEachEls(document.querySelectorAll(selector), function (el) {
1086              executeScripts(el);
1087            });
1088          });
1089          var state = this.state;
1090          if (state.options.history) {
1091            if (!window.history.state) {
1092              this.lastUid = this.maxUid = newUid();
1093              window.history.replaceState(
1094                {
1095                  url: window.location.href,
1096                  title: document.title,
1097                  uid: this.maxUid,
1098                  scrollPos: [0, 0],
1099                },
1100                document.title,
1101              );
1102            }
1103            this.lastUid = this.maxUid = newUid();
1104            window.history.pushState(
1105              {
1106                url: state.href,
1107                title: state.options.title,
1108                uid: this.maxUid,
1109                scrollPos: [0, 0],
1110              },
1111              state.options.title,
1112              state.href,
1113            );
1114          }
1115          this.forEachSelectors(function (el) {
1116            this.parseDOM(el);
1117          }, this);
1118          trigger(document, "pjax:complete pjax:success", state.options);
1119          if (typeof state.options.analytics === "function") {
1120            state.options.analytics();
1121          }
1122          if (state.options.history) {
1123            var a = document.createElement("a");
1124            a.href = this.state.href;
1125            if (a.hash) {
1126              var name = a.hash.slice(1);
1127              name = decodeURIComponent(name);
1128              var curtop = 0;
1129              var target =
1130                document.getElementById(name) ||
1131                document.getElementsByName(name)[0];
1132              if (target) {
1133                if (target.offsetParent) {
1134                  do {
1135                    curtop += target.offsetTop;
1136                    target = target.offsetParent;
1137                  } while (target);
1138                }
1139              }
1140              window.scrollTo(0, curtop);
1141            } else if (state.options.scrollTo !== false) {
1142              if (state.options.scrollTo.length > 1) {
1143                window.scrollTo(
1144                  state.options.scrollTo[0],
1145                  state.options.scrollTo[1],
1146                );
1147              } else {
1148                window.scrollTo(0, state.options.scrollTo);
1149              }
1150            }
1151          } else if (
1152            state.options.scrollRestoration &&
1153            state.options.scrollPos
1154          ) {
1155            window.scrollTo(
1156              state.options.scrollPos[0],
1157              state.options.scrollPos[1],
1158            );
1159          }
1160          this.state = {
1161            numPendingSwitches: 0,
1162            href: null,
1163            options: null,
1164          };
1165        },
1166      };
1167      Pjax2.isSupported = require_is_supported();
1168      if (Pjax2.isSupported()) {
1169        module.exports = Pjax2;
1170      } else {
1171        stupidPjax = noop;
1172        for (key in Pjax2.prototype) {
1173          if (
1174            Pjax2.prototype.hasOwnProperty(key) &&
1175            typeof Pjax2.prototype[key] === "function"
1176          ) {
1177            stupidPjax[key] = noop;
1178          }
1179        }
1180        module.exports = stupidPjax;
1181      }
1182      var stupidPjax;
1183      var key;
1184    },
1185  });
1186
1187  
1187// assets/js/main.js
1188  var import_pjax = __toESM(require_pjax(), 1);
1189
1190  
1190// assets/js/viz/core.js
1191  var N = 512;
1192  var PRE = `precision highp float;
1193uniform float T;uniform vec2 R;uniform sampler2D D;
1194mat2 rt(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);}
1195float hs(vec2 p){return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5);}
1196float sd2(vec2 q){
1197vec2 uv=clamp(q*vec2(.3846,-.3846)+.5,0.,1.);
1198float d=(texture2D(D,uv).r-.5)*.406;
1199vec2 b=abs(q)-1.3;
1200return d+length(max(b,0.));}
1201float lg(vec3 p){
1202vec2 w=vec2(sd2(p.xy),abs(p.z)-.18);
1203return(min(max(w.x,w.y),0.)+length(max(w,0.)))*.7;}`;
1204  var MARCH = `
1205vec3 nm(vec3 p){
1206vec2 e=vec2(.006,0.);
1207return normalize(vec3(mp(p+e.xyy)-mp(p-e.xyy),mp(p+e.yxy)-mp(p-e.yxy),mp(p+e.yyx)-mp(p-e.yyx)));}
1208float mh(vec3 ro,vec3 rd,float mx){
1209float t=.01;
1210for(int i=0;i<90;i++){
1211float d=mp(ro+rd*t);
1212if(d<.0015*t+.001)return t;
1213t+=d;
1214if(t>mx)return-1.;}
1215return-1.;}`;
1216  var SH = `
1217float sh(vec3 p,vec3 l){
1218float r=1.,t=.06;
1219for(int i=0;i<20;i++){
1220float d=mp(p+l*t);
1221r=min(r,12.*d/t);
1222t+=clamp(d,.04,.4);
1223if(r<.02||t>5.)break;}
1224return clamp(r,0.,1.);}`;
1225  var buildSDF = () => {
1226    const c = document.createElement("canvas");
1227    c.width = c.height = N;
1228    const x = c.getContext("2d");
1229    const s = (N * 0.66) / 982;
1230    x.setTransform(s, 0, 0, s, N / 2 - s * 505.4, N / 2 - s * 540.5);
1231    x.fill(
1232      new Path2D(
1233        "M432.82 936.54c8.66-6.23 26.27-20.04 37.37-32.5 32.73-37.1 32.5-76.64-200.85-394.57-77.72-106.03-106.97-168.72-106.97-231 17.2-155.47 144.9-146 218.96-146 65-.8 149.36 0 215.3 0l-20.04 14.2c-38.32 26.4-65 54.18-50.9 97.78C536 275.2 611 388.67 707.12 518.67c107.4 144.9 139.5 205.55 143.56 272.7 2.15 120.8-114.16 156.14-181.2 156.28H417.66z",
1234      ),
1235    );
1236    for (const [cx, cy] of [
1237      [185.56, 777.98],
1238      [825.23, 302.02],
1239    ]) {
1240      x.beginPath();
1241      x.arc(cx, cy, 171.02, 0, 7);
1242      x.fill();
1243    }
1244    const a = x.getImageData(0, 0, N, N).data;
1245    const dt = (d) => {
1246      for (const s2 of [1, -1]) {
1247        const lo = s2 > 0 ? 0 : N - 1,
1248          hi = s2 > 0 ? N : -1;
1249        for (let y = lo; y !== hi; y += s2) {
1250          for (let x2 = lo; x2 !== hi; x2 += s2) {
1251            const i = y * N + x2;
1252            if (x2 !== lo) d[i] = Math.min(d[i], d[i - s2] + 1);
1253            if (y !== lo) {
1254              d[i] = Math.min(d[i], d[i - s2 * N] + 1);
1255              if (x2 !== lo) d[i] = Math.min(d[i], d[i - s2 * N - s2] + 1.4142);
1256              if (x2 !== hi - s2)
1257                d[i] = Math.min(d[i], d[i - s2 * N + s2] + 1.4142);
1258            }
1259          }
1260        }
1261      }
1262    };
1263    const din = new Float32Array(N * N),
1264      dout = new Float32Array(N * N);
1265    for (let i = 0; i < N * N; i++) {
1266      const inside = a[i * 4 + 3] > 127;
1267      din[i] = inside ? 1e9 : 0;
1268      dout[i] = inside ? 0 : 1e9;
1269    }
1270    dt(din);
1271    dt(dout);
1272    const sdf = new Uint8Array(N * N);
1273    for (let i = 0; i < N * N; i++) {
1274      sdf[i] =
1275        255 * (0.5 + Math.max(-1, Math.min(1, (dout[i] - din[i]) / 40)) / 2);
1276    }
1277    return sdf;
1278  };
1279  var runGL = (canvas, make, onFirstFrame) => {
1280    const gl = canvas.getContext("webgl", { antialias: false, alpha: false });
1281    if (!gl) return null;
1282    const compile = (type, src) => {
1283      const sh = gl.createShader(type);
1284      gl.shaderSource(sh, src);
1285      gl.compileShader(sh);
1286      if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS))
1287        console.error(gl.getShaderInfoLog(sh));
1288      return sh;
1289    };
1290    const vs = compile(
1291      gl.VERTEX_SHADER,
1292      "attribute vec2 p;void main(){gl_Position=vec4(p,0.,1.);}",
1293    );
1294    gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
1295    gl.bufferData(
1296      gl.ARRAY_BUFFER,
1297      new Float32Array([-1, -1, 3, -1, -1, 3]),
1298      gl.STATIC_DRAW,
1299    );
1300    const mkProg = (fs) => {
1301      const pr = gl.createProgram();
1302      gl.attachShader(pr, vs);
1303      gl.attachShader(pr, compile(gl.FRAGMENT_SHADER, fs));
1304      gl.linkProgram(pr);
1305      const at = gl.getAttribLocation(pr, "p");
1306      gl.enableVertexAttribArray(at);
1307      gl.vertexAttribPointer(at, 2, gl.FLOAT, false, 0, 0);
1308      pr.u = {};
1309      for (
1310        let i = gl.getProgramParameter(pr, gl.ACTIVE_UNIFORMS) - 1;
1311        i >= 0;
1312        i--
1313      ) {
1314        const nm = gl.getActiveUniform(pr, i).name;
1315        pr.u[nm] = gl.getUniformLocation(pr, nm);
1316      }
1317      return pr;
1318    };
1319    const mkTex = (unit, filt, wrap) => {
1320      const tex = gl.createTexture();
1321      gl.activeTexture(gl.TEXTURE0 + unit);
1322      gl.bindTexture(gl.TEXTURE_2D, tex);
1323      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filt);
1324      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filt);
1325      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrap);
1326      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrap);
1327      return tex;
1328    };
1329    gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);
1330    mkTex(0, gl.LINEAR, gl.CLAMP_TO_EDGE);
1331    gl.texImage2D(
1332      gl.TEXTURE_2D,
1333      0,
1334      gl.LUMINANCE,
1335      N,
1336      N,
1337      0,
1338      gl.LUMINANCE,
1339      gl.UNSIGNED_BYTE,
1340      buildSDF(),
1341    );
1342    const viz = make({ canvas, gl, mkProg, mkTex, PRE, MARCH, SH });
1343    let W = 0,
1344      H = 0,
1345      frameId = null,
1346      shown = false,
1347      still = false;
1348    const t0 = performance.now();
1349    const resize = () => {
1350      const w = (canvas.clientWidth / 2) | 0,
1351        h = (canvas.clientHeight / 2) | 0;
1352      if (w < 1 || (w === W && h === H)) return;
1353      W = w;
1354      H = h;
1355      canvas.width = W;
1356      canvas.height = H;
1357      gl.viewport(0, 0, W, H);
1358      viz.resize(W, H);
1359    };
1360    const frame = (now) => {
1361      frameId = null;
1362      if (W < 1) return;
1363      viz.draw(still ? viz.staticT : (now - t0) / 1e3, still);
1364      if (!shown) {
1365        shown = true;
1366        if (onFirstFrame) onFirstFrame();
1367      }
1368      if (!still) frameId = requestAnimationFrame(frame);
1369    };
1370    const stop = () => {
1371      if (frameId !== null) {
1372        cancelAnimationFrame(frameId);
1373        frameId = null;
1374      }
1375    };
1376    const start = (asStill) => {
1377      still = !!asStill;
1378      if (frameId === null) frameId = requestAnimationFrame(frame);
1379    };
1380    return { resize, start, stop };
1381  };
1382  var run2D = (canvas, make, onFirstFrame) => {
1383    const viz = make({ canvas });
1384    if (!viz) return null;
1385    let W = 0,
1386      H = 0,
1387      frameId = null,
1388      shown = false,
1389      still = false,
1390      t0 = 0;
1391    const resize = () => {
1392      const scale = Math.min(devicePixelRatio || 1, 1.25);
1393      const w = Math.max(1, (canvas.clientWidth * scale) | 0);
1394      const h = Math.max(1, (canvas.clientHeight * scale) | 0);
1395      if (w === W && h === H) return;
1396      W = canvas.width = w;
1397      H = canvas.height = h;
1398      if (viz.resize) viz.resize(W, H);
1399    };
1400    const frame = (now) => {
1401      frameId = null;
1402      resize();
1403      viz.draw(still ? viz.staticT || 0 : (now - t0) / 1e3, still);
1404      if (!shown) {
1405        shown = true;
1406        if (onFirstFrame) onFirstFrame();
1407      }
1408      if (!still) frameId = requestAnimationFrame(frame);
1409    };
1410    const stop = () => {
1411      if (frameId !== null) cancelAnimationFrame(frameId);
1412      frameId = null;
1413    };
1414    const start = (asStill) => {
1415      still = !!asStill;
1416      if (!t0) t0 = performance.now();
1417      if (frameId === null) frameId = requestAnimationFrame(frame);
1418    };
1419    return { resize, start, stop };
1420  };
1421  var boot = (canvas, moduleP, onFirstFrame, shouldBoot) =>
1422    moduleP.then((m) => {
1423      if (shouldBoot && !shouldBoot()) return null;
1424      return (m.canvas2d ? run2D : runGL)(canvas, m.make, onFirstFrame);
1425    });
1426
1427  
1427// assets/js/main.js
1428  function init() {
1429    var pjaxSelectors = ["style#inline-css", "body"];
1430    var pjax = new import_pjax.default({
1431      selectors: pjaxSelectors,
1432      cacheBust: false,
1433    });
1434    var nativeDoRequest = pjax.doRequest.bind(pjax);
1435    var prefetchedPages = /* @__PURE__ */ new Map();
1436    document.addEventListener("pjax:error", function (event) {
1437      var href = event && event.triggerElement && event.triggerElement.href;
1438      if (href) {
1439        window.location = href;
1440      }
1441    });
1442    function normalizePrefetchUrl(uri) {
1443      var url = new URL(uri, window.location.href);
1444      url.hash = "";
1445      return url.href;
1446    }
1447    function pjaxHeaders() {
1448      return {
1449        "X-Requested-With": "XMLHttpRequest",
1450        "X-PJAX": "true",
1451        "X-PJAX-Selectors": JSON.stringify(pjaxSelectors),
1452      };
1453    }
1454    function prefetchPage(uri) {
1455      var url = normalizePrefetchUrl(uri);
1456      if (prefetchedPages.has(url)) {
1457        return prefetchedPages.get(url);
1458      }
1459      var promise = fetch(url, {
1460        credentials: "same-origin",
1461        headers: pjaxHeaders(),
1462        priority: "low",
1463      })
1464        .then(function (response) {
1465          if (!response.ok) {
1466            throw new Error("Prefetch failed for " + url);
1467          }
1468          return response.text().then(function (html) {
1469            return {
1470              html,
1471              responseURL: response.url,
1472              headers: response.headers,
1473            };
1474          });
1475        })
1476        .catch(function (error) {
1477          prefetchedPages.delete(url);
1478          throw error;
1479        });
1480      prefetchedPages.set(url, promise);
1481      return promise;
1482    }
1483    function shouldPrefetchLink(link) {
1484      if (
1485        !link.href ||
1486        link.protocol !== window.location.protocol ||
1487        link.host !== window.location.host
1488      ) {
1489        return false;
1490      }
1491      if (link.download || (link.target && link.target !== "_self")) {
1492        return false;
1493      }
1494      var url = new URL(link.href);
1495      return (
1496        url.pathname !== window.location.pathname ||
1497        url.search !== window.location.search
1498      );
1499    }
1500    function requestIdle(callback) {
1501      if (window.requestIdleCallback) {
1502        return window.requestIdleCallback(callback, { timeout: 2e3 });
1503      }
1504      return window.setTimeout(callback, 1);
1505    }
1506    function cancelIdle(id) {
1507      if (window.cancelIdleCallback) {
1508        window.cancelIdleCallback(id);
1509      } else {
1510        window.clearTimeout(id);
1511      }
1512    }
1513    function afterNextPaint(callback) {
1514      var cancelled = false;
1515      var firstFrame = null;
1516      var secondFrame = null;
1517      var timeout = null;
1518      if (window.requestAnimationFrame) {
1519        firstFrame = requestAnimationFrame(function () {
1520          firstFrame = null;
1521          secondFrame = requestAnimationFrame(function () {
1522            secondFrame = null;
1523            if (!cancelled) {
1524              callback();
1525            }
1526          });
1527        });
1528      } else {
1529        timeout = setTimeout(function () {
1530          timeout = null;
1531          if (!cancelled) {
1532            callback();
1533          }
1534        }, 0);
1535      }
1536      return function () {
1537        cancelled = true;
1538        if (firstFrame !== null) {
1539          cancelAnimationFrame(firstFrame);
1540        }
1541        if (secondFrame !== null) {
1542          cancelAnimationFrame(secondFrame);
1543        }
1544        if (timeout !== null) {
1545          clearTimeout(timeout);
1546        }
1547      };
1548    }
1549    var resetQuicklink = null;
1550    function initQuicklink() {
1551      if (resetQuicklink) {
1552        resetQuicklink();
1553      }
1554      if (
1555        !window.fetch ||
1556        !window.IntersectionObserver ||
1557        !("isIntersecting" in IntersectionObserverEntry.prototype)
1558      ) {
1559        resetQuicklink = function () {};
1560        return;
1561      }
1562      var observer = new IntersectionObserver(function (entries) {
1563        entries.forEach(function (entry) {
1564          if (!entry.isIntersecting) {
1565            return;
1566          }
1567          observer.unobserve(entry.target);
1568          prefetchPage(entry.target.href).catch(function () {});
1569        });
1570      });
1571      var idleId = requestIdle(function () {
1572        Array.prototype.forEach.call(
1573          document.querySelectorAll("a[href]"),
1574          function (link) {
1575            if (shouldPrefetchLink(link)) {
1576              observer.observe(link);
1577            }
1578          },
1579        );
1580      });
1581      resetQuicklink = function () {
1582        cancelIdle(idleId);
1583        observer.disconnect();
1584      };
1585    }
1586    pjax.doRequest = function (location2, options, callback) {
1587      var prefetchedPage = prefetchedPages.get(normalizePrefetchUrl(location2));
1588      if (!prefetchedPage) {
1589        return nativeDoRequest(location2, options, callback);
1590      }
1591      var aborted = false;
1592      var request = {
1593        readyState: 1,
1594        responseURL: null,
1595        status: 0,
1596        getResponseHeader: function () {
1597          return null;
1598        },
1599        abort: function () {
1600          aborted = true;
1601          request.readyState = 4;
1602          if (request.innerRequest) {
1603            request.innerRequest.abort();
1604          }
1605        },
1606      };
1607      function fallbackToNetwork() {
1608        if (!aborted) {
1609          request.innerRequest = nativeDoRequest(location2, options, callback);
1610        }
1611      }
1612      prefetchedPage
1613        .then(function (page) {
1614          if (aborted) {
1615            return;
1616          }
1617          request.readyState = 4;
1618          request.responseURL = page.responseURL;
1619          request.status = 200;
1620          request.getResponseHeader = function (name) {
1621            return page.headers.get(name);
1622          };
1623          callback(page.html, request, location2, options);
1624        })
1625        .catch(fallbackToNetwork);
1626      return request;
1627    };
1628    initQuicklink();
1629    document.addEventListener("pjax:complete", initQuicklink);
1630    function signup() {
1631      var cookieRegex =
1632        /(?:(?:^|.*;
1632\s*)nateberkopecShowSignup\s*=\s*([^;]*).*$)|^.*$/;
1633      setTimeout(function () {
1634        if (document.cookie.match(cookieRegex, "$1")[1] !== "true") {
1635          showSignup();
1636        }
1637      }, 6e4);
1638      function showSignup() {
1639        var el = document.getElementById("innocuous");
1640        if (el) {
1641          el.style.display = "block";
1642        }
1643      }
1644    }
1645    signup();
1646    document.addEventListener("pjax:complete", function () {
1647      signup();
1648    });
1649    function viz() {
1650      var mobileLayout = matchMedia(
1651        "(max-width: 768px), (max-width: 940px) and (orientation: landscape)",
1652      );
1653      var reduced = matchMedia("(prefers-reduced-motion: reduce)");
1654      var canvas = null;
1655      var inst = null;
1656      var bootCancel = null;
1657      var bootToken = 0;
1658      var inView = true;
1659      var observer = new IntersectionObserver(function (entries) {
1660        entries.forEach(function (entry) {
1661          if (entry.target === canvas) {
1662            inView = entry.isIntersecting;
1663            update();
1664          }
1665        });
1666      });
1667      function placeHomeCta() {
1668        var content = document.querySelector(".home-content");
1669        var cta = document.querySelector(".home-page .contact-cta");
1670        if (!content || !cta) return;
1671        if (mobileLayout.matches && cta.nextElementSibling !== content) {
1672          content.before(cta);
1673        } else if (
1674          !mobileLayout.matches &&
1675          content.nextElementSibling !== cta
1676        ) {
1677          content.after(cta);
1678        }
1679      }
1680      function listenMedia(q, f) {
1681        if (q.addEventListener) {
1682          q.addEventListener("change", f);
1683        } else {
1684          q.addListener(f);
1685        }
1686      }
1687      function stopBoot() {
1688        bootToken += 1;
1689        if (bootCancel) {
1690          bootCancel();
1691          bootCancel = null;
1692        }
1693      }
1694      function unmount() {
1695        stopBoot();
1696        observer.disconnect();
1697        inView = true;
1698        if (inst) {
1699          inst.stop();
1700          inst = null;
1701        }
1702        if (canvas) {
1703          delete canvas.dataset.viz;
1704          canvas = null;
1705        }
1706      }
1707      function isCurrent(nextCanvas, token) {
1708        return (
1709          token === bootToken &&
1710          canvas === nextCanvas &&
1711          document.contains(nextCanvas)
1712        );
1713      }
1714      function update() {
1715        if (!inst) {
1716          return;
1717        }
1718        if (!canvas || !document.contains(canvas)) {
1719          unmount();
1720          return;
1721        }
1722        inst.resize();
1723        if (inView && document.visibilityState !== "hidden") {
1724          inst.start(reduced.matches);
1725        } else {
1726          inst.stop();
1727        }
1728      }
1729      function mount() {
1730        var nextCanvas = document.getElementById("sslogocanvas");
1731        if (!nextCanvas || !window.vizLoad) {
1732          unmount();
1733          return;
1734        }
1735        if (inst && canvas === nextCanvas) {
1736          update();
1737          return;
1738        }
1739        if (canvas && canvas !== nextCanvas) {
1740          unmount();
1741        }
1742        if (nextCanvas.dataset.viz || bootCancel) {
1743          return;
1744        }
1745        canvas = nextCanvas;
1746        observer.observe(canvas);
1747        canvas.dataset.viz = "1";
1748        var token = bootToken;
1749        var moduleP = window.vizP || window.vizLoad();
1750        window.vizP = null;
1751        bootCancel = afterNextPaint(function () {
1752          bootCancel = null;
1753          if (!isCurrent(nextCanvas, token)) {
1754            return;
1755          }
1756          boot(
1757            nextCanvas,
1758            moduleP,
1759            function () {
1760              nextCanvas.style.opacity = 1;
1761            },
1762            function () {
1763              return isCurrent(nextCanvas, token);
1764            },
1765          )
1766            .then(function (engine) {
1767              if (!isCurrent(nextCanvas, token)) {
1768                if (engine) {
1769                  engine.stop();
1770                }
1771                return;
1772              }
1773              if (!engine) {
1774                return;
1775              }
1776              inst = engine;
1777              update();
1778            })
1779            .catch(function () {});
1780        });
1781      }
1782      function sync() {
1783        placeHomeCta();
1784        if (inst) {
1785          update();
1786        } else {
1787          mount();
1788        }
1789      }
1790      listenMedia(reduced, sync);
1791      document.addEventListener("visibilitychange", sync);
1792      window.addEventListener("resize", sync);
1793      window.addEventListener("pagehide", unmount);
1794      document.addEventListener("pjax:send", unmount);
1795      document.addEventListener("pjax:complete", sync);
1796      sync();
1797    }
1798    viz();
1799    document.documentElement.addEventListener("click", function (event) {
1800      if (event.target.id === "innocuous-close") {
1801        document.getElementById("innocuous").style.display = "none";
1802        document.cookie =
1803          "nateberkopecShowSignup=true; expires=Fri, 31 Dec 9999 23:59:59 GMT;SameSite=Strict";
1804      }
1805    });
1806  }
1807  if (document.readyState === "loading") {
1808    document.addEventListener("DOMContentLoaded", init);
1809  } else {
1810    init();
1811  }
1812})();

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.