{
  "version": 3,
  "sources": ["/cdn/shop/t/25/assets/theme.js?view=ajax"],
  "sourcesContent": ["var isMobileScreen = false; //initiate as false\n// device detection function\nfunction isMobile() {\n  if (\n    /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(\n      navigator.userAgent\n    ) ||\n    /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n      navigator.userAgent.substr(0, 4)\n    )\n  ) {\n    isMobileScreen = true;\n    return isMobileScreen;\n  }\n}\n\n/* SMOOTH SCROLL */\nvar $root = $('html, body');\n\n$('a[href^=\"#\"]').click(function () {\n  var href = $.attr(this, 'href');\n  if (href.length > 1) {\n    $root.animate({\n      scrollTop: $(this.hash).offset().top\n    }, 500, function () {\n      window.location.hash = href;\n    });\n  }\n});\n\n//STICKY CART function\nfunction stickyCart() {\n  applyStickyCart(document.querySelector(\"#shopify-section-product-template .buttoxn-sticky\"));\n  applyStickyCart(document.querySelector(\"#shopify-section-cart-template .sticky-container #update-cart\"));\n}\n\nfunction applyStickyCart(el) {\n  if (el) {\n    const observer = new IntersectionObserver(handleIntersection, {\n      threshold: 0.1\n    });\n    document.querySelectorAll('[data-hide-sticky]').forEach(target => {\n      observer.observe(target);\n    })\n    function handleIntersection(entries, observer) {\n      entries.forEach(entry => {\n        if (entry.isIntersecting || !isMobile()) {\n          el.parentElement.classList.add('u-hidden');\n        }\n        else {\n          el.parentElement.classList.remove('u-hidden');\n        }\n      })\n    }\n  }\n}\n\nisMobile();\nstickyCart();\n//on screen resize\nwindow.addEventListener(\"resize\", function () {\n  isMobile();\n  stickyCart();\n})\n\n/* TRY ON */\n\n$(\"#add-bundle-to-cart\").on(\"click\", function () {\n  const selectedVariants = $(\"#SingleOptionSelector-0\")\n    .find(\":selected\")\n    .data(\"sku\");\n  let products = selectedVariants.split(\"|\");\n  let items = [];\n  for (product of products) {\n    let productData = product.split(\",\");\n    let variantId = productData[0];\n    let sellingPlanId = productData[1];\n    items.push({\n      quantity: 1,\n      id: variantId,\n      selling_plan: sellingPlanId,\n    });\n  }\n\n  jQuery.post(\"/cart/add.js\", { items }).done(function (e) {\n    window.location = \"/cart\";\n  });\n});\n\n\n$(document).ready(function () {\n  $(\".choose\").on(\"click\", function () {\n    $(\".choose\").removeClass(\"chosen\");\n    $(this).addClass(\"chosen\");\n  });\n\n  $(\".add-to-cart\").on(\"click\", function () {\n    console.log(\"VOALA\")\n    jQuery\n      .post(\"/cart/add.js\", {\n        quantity: 1,\n        id: $(\".chosen\").data(\"variant-id\"),\n      })\n      .done(function (e) {\n        window.location = \"/cart\";\n      });\n  });\n});\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj &&\n        typeof Symbol === \"function\" &&\n        obj.constructor === Symbol &&\n        obj !== Symbol.prototype\n        ? \"symbol\"\n        : typeof obj;\n    };\n  }\n  return _typeof(obj);\n}\n\n(function ($) {\n  var $ = (jQuery = $);\n  var cc = {\n    sections: [],\n  };\n  theme.cartNoteMonitor = {\n    load: function load($notes) {\n      if ($notes.length) {\n        $notes.on(\n          \"change.themeCartNoteMonitor paste.themeCartNoteMonitor keyup.themeCartNoteMonitor\",\n          function () {\n            theme.cartNoteMonitor.postUpdate($(this).val());\n          }\n        );\n        $(\"#cart_note_max_char > span\").html($notes.val().length);\n      }\n    },\n    unload: function unload($notes) {\n      $notes.off(\".themeCartNoteMonitor\");\n    },\n    // updateThrottleTimeoutId: -1,\n    // updateThrottleInterval: 100,\n    postUpdate: function postUpdate(val) {\n      // clearTimeout(theme.cartNoteMonitor.updateThrottleTimeoutId);\n      // theme.cartNoteMonitor.updateThrottleTimeoutId = setTimeout(function () {\n      $.post(\n        theme.routes.cart_url + \"/update.js\",\n        {\n          note: val,\n        },\n        function (data) {\n          $(\"#cart_note_max_char > span\").html(data.note.length);\n        },\n        \"json\"\n      );\n      // }, theme.cartNoteMonitor.updateThrottleInterval);\n    },\n  }; // Turn a <select> tag into clicky boxes\n  // Use with: $('select').clickyBoxes()\n\n  $.fn.clickyBoxes = function (prefix) {\n    if (prefix == \"destroy\") {\n      $(this).off(\".clickyboxes\");\n      $(this).next(\".clickyboxes\").off(\".clickyboxes\");\n    } else {\n      return $(this)\n        .filter(\"select:not(.clickybox-replaced)\")\n        .addClass(\"clickybox-replaced\")\n        .each(function () {\n          //Make sure rows are unique\n          var prefix = prefix || $(this).attr(\"id\"); //Create container\n\n          var $optCont = $('<ul class=\"clickyboxes\"/>')\n            .attr(\"id\", \"clickyboxes-\" + prefix)\n            .data(\"select\", $(this))\n            .insertAfter(this);\n          var $label;\n\n          if ($(this).is(\"[id]\")) {\n            $label = $('label[for=\"' + $(this).attr(\"id\") + '\"]'); // Grab real label\n          } else {\n            $label = $(this).siblings(\"label\"); // Rough guess\n          }\n\n          if ($label.length > 0) {\n            $optCont.addClass(\n              \"options-\" +\n              removeDiacritics($label.text())\n                .toLowerCase()\n                .replace(/'/g, \"\")\n                .replace(/[^a-z0-9]+/g, \"-\")\n                .replace(/-+/g, \"-\")\n                .replace(/-*$/, \"\")\n            );\n          } //Add options to container\n\n          $(this)\n            .find(\"option\")\n            .each(function () {\n              $(\"<li/>\")\n                .appendTo($optCont)\n                .append(\n                  $('<a href=\"#\"/>')\n                    .attr(\"data-value\", $(this).val())\n                    .html($(this).html())\n                    .addClass(\n                      \"opt--\" +\n                      removeDiacritics($(this).text())\n                        .toLowerCase()\n                        .replace(/'/g, \"\")\n                        .replace(/[^a-z0-9]+/g, \"-\")\n                        .replace(/-+/g, \"-\")\n                        .replace(/-*$/, \"\")\n                    )\n                );\n            }); //Select change event\n\n          $(this)\n            .hide()\n            .addClass(\"replaced\")\n            .on(\"change.clickyboxes keyup.clickyboxes\", function () {\n              //Choose the right option to show\n              var val = $(this).val();\n              $optCont\n                .find(\"a\")\n                .removeClass(\"active\")\n                .filter(function () {\n                  return $(this).attr(\"data-value\") == val;\n                })\n                .addClass(\"active\");\n            })\n            .trigger(\"keyup\"); //Initial value\n          //Button click event\n\n          $optCont.on(\"click.clickyboxes\", \"a\", function () {\n            if (!$(this).hasClass(\"active\")) {\n              var $clicky = $(this).closest(\".clickyboxes\");\n              $clicky\n                .data(\"select\")\n                .val($(this).data(\"value\"))\n                .trigger(\"change\");\n              $clicky.trigger(\"change\");\n            }\n\n            return false;\n          });\n        });\n    }\n  };\n\n  theme.Shopify = {\n    formatMoney: function formatMoney(t, r) {\n      function e(t, r) {\n        return void 0 === t ? r : t;\n      }\n\n      function a(t, r, a, o) {\n        if (\n          ((r = e(r, 2)),\n            (a = e(a, \",\")),\n            (o = e(o, \".\")),\n            isNaN(t) || null == t)\n        )\n          return 0;\n        t = (t / 100).toFixed(r);\n        var n = t.split(\".\");\n        return (\n          n[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1\" + a) +\n          (n[1] ? o + n[1] : \"\")\n        );\n      }\n\n      \"string\" == typeof t && (t = t.replace(\".\", \"\"));\n      var o = \"\",\n        n = /\\{\\{\\s*(\\w+)\\s*\\}\\}/,\n        i = r || this.money_format;\n\n      switch (i.match(n)[1]) {\n        case \"amount\":\n          o = a(t, 2);\n          break;\n\n        case \"amount_no_decimals\":\n          o = a(t, 0);\n          break;\n\n        case \"amount_with_comma_separator\":\n          o = a(t, 2, \".\", \",\");\n          break;\n\n        case \"amount_with_space_separator\":\n          o = a(t, 2, \" \", \",\");\n          break;\n\n        case \"amount_with_period_and_space_separator\":\n          o = a(t, 2, \" \", \".\");\n          break;\n\n        case \"amount_no_decimals_with_comma_separator\":\n          o = a(t, 0, \".\", \",\");\n          break;\n\n        case \"amount_no_decimals_with_space_separator\":\n          o = a(t, 0, \" \", \"\");\n          break;\n\n        case \"amount_with_apostrophe_separator\":\n          o = a(t, 2, \"'\", \".\");\n          break;\n\n        case \"amount_with_decimal_separator\":\n          o = a(t, 2, \".\", \".\");\n      }\n\n      return i.replace(n, o);\n    },\n    formatImage: function formatImage(originalImageUrl, format) {\n      return originalImageUrl.replace(\n        /^(.*)\\.([^\\.]*)$/g,\n        \"$1_\" + format + \".$2\"\n      );\n    },\n    Image: {\n      imageSize: function imageSize(t) {\n        var e = t.match(\n          /.+_((?:pico|icon|thumb|small|compact|medium|large|grande)|\\d{1,4}x\\d{0,4}|x\\d{1,4})[_\\.@]/\n        );\n        return null !== e ? e[1] : null;\n      },\n      getSizedImageUrl: function getSizedImageUrl(t, e) {\n        if (null == e) return t;\n        if (\"master\" == e) return this.removeProtocol(t);\n        var o = t.match(/\\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\\?v=\\d+)?$/i);\n\n        if (null != o) {\n          var i = t.split(o[0]),\n            r = o[0];\n          return this.removeProtocol(i[0] + \"_\" + e + r);\n        }\n\n        return null;\n      },\n      removeProtocol: function removeProtocol(t) {\n        return t.replace(/http(s)?:/, \"\");\n      },\n    },\n  };\n\n  theme.Disclosure = (function () {\n    var selectors = {\n      disclosureList: \"[data-disclosure-list]\",\n      disclosureToggle: \"[data-disclosure-toggle]\",\n      disclosureInput: \"[data-disclosure-input]\",\n      disclosureOptions: \"[data-disclosure-option]\",\n    };\n    var classes = {\n      listVisible: \"disclosure-list--visible\",\n    };\n\n    function Disclosure($disclosure) {\n      this.$container = $disclosure;\n      this.cache = {};\n\n      this._cacheSelectors();\n\n      this._connectOptions();\n\n      this._connectToggle();\n\n      this._onFocusOut();\n    }\n\n    Disclosure.prototype = $.extend({}, Disclosure.prototype, {\n      _cacheSelectors: function _cacheSelectors() {\n        this.cache = {\n          $disclosureList: this.$container.find(selectors.disclosureList),\n          $disclosureToggle: this.$container.find(selectors.disclosureToggle),\n          $disclosureInput: this.$container.find(selectors.disclosureInput),\n          $disclosureOptions: this.$container.find(selectors.disclosureOptions),\n        };\n      },\n      _connectToggle: function _connectToggle() {\n        this.cache.$disclosureToggle.on(\n          \"click\",\n          function (evt) {\n            var ariaExpanded =\n              $(evt.currentTarget).attr(\"aria-expanded\") === \"true\";\n            $(evt.currentTarget).attr(\"aria-expanded\", !ariaExpanded);\n            this.cache.$disclosureList.toggleClass(classes.listVisible);\n          }.bind(this)\n        );\n      },\n      _connectOptions: function _connectOptions() {\n        this.cache.$disclosureOptions.on(\n          \"click\",\n          function (evt) {\n            evt.preventDefault();\n\n            this._submitForm($(evt.currentTarget).data(\"value\"));\n          }.bind(this)\n        );\n      },\n      _onFocusOut: function _onFocusOut() {\n        this.cache.$disclosureToggle.on(\n          \"focusout\",\n          function (evt) {\n            var disclosureLostFocus =\n              this.$container.has(evt.relatedTarget).length === 0;\n\n            if (disclosureLostFocus) {\n              this._hideList();\n            }\n          }.bind(this)\n        );\n        this.cache.$disclosureList.on(\n          \"focusout\",\n          function (evt) {\n            var childInFocus =\n              $(evt.currentTarget).has(evt.relatedTarget).length > 0;\n            var isVisible = this.cache.$disclosureList.hasClass(\n              classes.listVisible\n            );\n\n            if (isVisible && !childInFocus) {\n              this._hideList();\n            }\n          }.bind(this)\n        );\n        this.$container.on(\n          \"keyup\",\n          function (evt) {\n            if (evt.which !== 27) return; // escape\n\n            this._hideList();\n\n            this.cache.$disclosureToggle.focus();\n          }.bind(this)\n        );\n\n        this.bodyOnClick = function (evt) {\n          var isOption = this.$container.has(evt.target).length > 0;\n          var isVisible = this.cache.$disclosureList.hasClass(\n            classes.listVisible\n          );\n\n          if (isVisible && !isOption) {\n            this._hideList();\n          }\n        }.bind(this);\n\n        $(\"body\").on(\"click\", this.bodyOnClick);\n      },\n      _submitForm: function _submitForm(value) {\n        this.cache.$disclosureInput.val(value);\n        this.$container.parents(\"form\").submit();\n      },\n      _hideList: function _hideList() {\n        this.cache.$disclosureList.removeClass(classes.listVisible);\n        this.cache.$disclosureToggle.attr(\"aria-expanded\", false);\n      },\n      unload: function unload() {\n        $(\"body\").off(\"click\", this.bodyOnClick);\n        this.cache.$disclosureOptions.off();\n        this.cache.$disclosureToggle.off();\n        this.cache.$disclosureList.off();\n        this.$container.off();\n      },\n    });\n    return Disclosure;\n  })();\n\n  (function () {\n    function throttle(callback, threshold) {\n      var debounceTimeoutId = -1;\n      var tick = false;\n      return function () {\n        clearTimeout(debounceTimeoutId);\n        debounceTimeoutId = setTimeout(callback, threshold);\n\n        if (!tick) {\n          callback.call();\n          tick = true;\n          setTimeout(function () {\n            tick = false;\n          }, threshold);\n        }\n      };\n    }\n\n    var scrollEvent = document.createEvent(\"Event\");\n    scrollEvent.initEvent(\"throttled-scroll\", true, true);\n    window.addEventListener(\n      \"scroll\",\n      throttle(function () {\n        window.dispatchEvent(scrollEvent);\n      }, 200)\n    );\n  })(); // requires: throttled-scroll, debouncedresize\n\n  theme.Sections = new (function () {\n    var _ = this;\n\n    _._instances = [];\n    _._deferredSectionTargets = [];\n    _._sections = [];\n    _._deferredLoadViewportExcess = 300; // load defferred sections within this many px of viewport\n\n    _._deferredWatcherRunning = false;\n\n    _.init = function () {\n      $(document)\n        .on(\"shopify:section:load\", function (e) {\n          // load a new section\n          var target = _._themeSectionTargetFromShopifySectionTarget(e.target);\n\n          if (target) {\n            _.sectionLoad(target);\n          }\n        })\n        .on(\"shopify:section:unload\", function (e) {\n          // unload existing section\n          var target = _._themeSectionTargetFromShopifySectionTarget(e.target);\n\n          if (target) {\n            _.sectionUnload(target);\n          }\n        });\n      $(window).on(\n        \"throttled-scroll.themeSectionDeferredLoader debouncedresize.themeSectionDeferredLoader\",\n        _._processDeferredSections\n      );\n      _._deferredWatcherRunning = true;\n    }; // register a type of section\n\n    _.register = function (type, section, options) {\n      _._sections.push({\n        type: type,\n        section: section,\n        afterSectionLoadCallback: options ? options.afterLoad : null,\n        afterSectionUnloadCallback: options ? options.afterUnload : null,\n      }); // load now\n\n      $('[data-section-type=\"' + type + '\"]').each(function () {\n        if (\n          Shopify.designMode ||\n          (options && options.deferredLoad === false) ||\n          !_._deferredWatcherRunning\n        ) {\n          _.sectionLoad(this);\n        } else {\n          _.sectionDeferredLoad(this, options);\n        }\n      });\n    }; // prepare a section to load later\n\n    _.sectionDeferredLoad = function (target, options) {\n      _._deferredSectionTargets.push({\n        target: target,\n        deferredLoadViewportExcess:\n          options && options.deferredLoadViewportExcess\n            ? options.deferredLoadViewportExcess\n            : _._deferredLoadViewportExcess,\n      });\n\n      _._processDeferredSections(true);\n    }; // load deferred sections if in/near viewport\n\n    _._processDeferredSections = function (firstRunCheck) {\n      if (_._deferredSectionTargets.length) {\n        var viewportTop = $(window).scrollTop(),\n          viewportBottom = viewportTop + $(window).height(),\n          loopStart =\n            firstRunCheck === true ? _._deferredSectionTargets.length - 1 : 0;\n\n        for (var i = loopStart; i < _._deferredSectionTargets.length; i++) {\n          var target = _._deferredSectionTargets[i].target,\n            viewportExcess =\n              _._deferredSectionTargets[i].deferredLoadViewportExcess,\n            sectionTop = $(target).offset().top - viewportExcess,\n            doLoad = sectionTop > viewportTop && sectionTop < viewportBottom;\n\n          if (!doLoad) {\n            var sectionBottom =\n              sectionTop + $(target).outerHeight() + viewportExcess * 2;\n            doLoad =\n              sectionBottom > viewportTop && sectionBottom < viewportBottom;\n          }\n\n          if (\n            doLoad ||\n            (sectionTop < viewportTop && sectionBottom > viewportBottom)\n          ) {\n            // in viewport, load\n            _.sectionLoad(target); // remove from deferred queue and resume checks\n\n            _._deferredSectionTargets.splice(i, 1);\n\n            i--;\n          }\n        }\n      } // remove event if no more deferred targets left, if not on first run\n\n      if (firstRunCheck !== true && _._deferredSectionTargets.length === 0) {\n        _._deferredWatcherRunning = false;\n        $(window).off(\".themeSectionDeferredLoader\");\n      }\n    }; // load in a section\n\n    _.sectionLoad = function (target) {\n      var target = target,\n        sectionObj = _._sectionForTarget(target),\n        section = false;\n\n      if (sectionObj.section) {\n        section = sectionObj.section;\n      } else {\n        section = sectionObj;\n      }\n\n      if (section !== false) {\n        var instance = {\n          target: target,\n          section: section,\n          $shopifySectionContainer: $(target).closest(\".shopify-section\"),\n          thisContext: {\n            functions: section.functions,\n          },\n        };\n\n        _._instances.push(instance); //Initialise any components\n\n        if ($(target).data(\"components\")) {\n          //Init each component\n          var components = $(target).data(\"components\").split(\",\");\n          components.forEach(function (component) {\n            $(document).trigger(\"cc:component:load\", [component, target]);\n          });\n        }\n\n        _._callWith(section, \"onSectionLoad\", target, instance.thisContext);\n\n        _._callWith(\n          section,\n          \"afterSectionLoadCallback\",\n          target,\n          instance.thisContext\n        ); // attach additional UI events if defined\n\n        if (section.onSectionSelect) {\n          instance.$shopifySectionContainer.on(\n            \"shopify:section:select\",\n            function (e) {\n              _._callWith(\n                section,\n                \"onSectionSelect\",\n                e.target,\n                instance.thisContext\n              );\n            }\n          );\n        }\n\n        if (section.onSectionDeselect) {\n          instance.$shopifySectionContainer.on(\n            \"shopify:section:deselect\",\n            function (e) {\n              _._callWith(\n                section,\n                \"onSectionDeselect\",\n                e.target,\n                instance.thisContext\n              );\n            }\n          );\n        }\n\n        if (section.onBlockSelect) {\n          $(target).on(\"shopify:block:select\", function (e) {\n            _._callWith(\n              section,\n              \"onBlockSelect\",\n              e.target,\n              instance.thisContext\n            );\n          });\n        }\n\n        if (section.onBlockDeselect) {\n          $(target).on(\"shopify:block:deselect\", function (e) {\n            _._callWith(\n              section,\n              \"onBlockDeselect\",\n              e.target,\n              instance.thisContext\n            );\n          });\n        }\n      }\n    }; // unload a section\n\n    _.sectionUnload = function (target) {\n      var sectionObj = _._sectionForTarget(target);\n\n      var instanceIndex = -1;\n\n      for (var i = 0; i < _._instances.length; i++) {\n        if (_._instances[i].target == target) {\n          instanceIndex = i;\n        }\n      }\n\n      if (instanceIndex > -1) {\n        var instance = _._instances[instanceIndex]; // remove events and call unload, if loaded\n\n        $(target).off(\"shopify:block:select shopify:block:deselect\");\n        instance.$shopifySectionContainer.off(\n          \"shopify:section:select shopify:section:deselect\"\n        );\n\n        _._callWith(\n          instance.section,\n          \"onSectionUnload\",\n          target,\n          instance.thisContext\n        );\n\n        _._callWith(\n          sectionObj,\n          \"afterSectionUnloadCallback\",\n          target,\n          instance.thisContext\n        );\n\n        _._instances.splice(instanceIndex); //Destroy any components\n\n        if ($(target).data(\"components\")) {\n          //Init each component\n          var components = $(target).data(\"components\").split(\",\");\n          components.forEach(function (component) {\n            $(document).trigger(\"cc:component:unload\", [component, target]);\n          });\n        }\n      } else {\n        // check if it was a deferred section\n        for (var i = 0; i < _._deferredSectionTargets.length; i++) {\n          if (_._deferredSectionTargets[i].target == target) {\n            _._deferredSectionTargets[i].splice(i, 1);\n\n            break;\n          }\n        }\n      }\n    }; // helpers\n\n    _._callWith = function (object, method, param, thisContext) {\n      if (typeof object[method] === \"function\") {\n        if (thisContext) {\n          object[method].bind(thisContext)(param);\n        } else {\n          object[method](param);\n        }\n      }\n    };\n\n    _._themeSectionTargetFromShopifySectionTarget = function (target) {\n      var $target = $(\"[data-section-type]:first\", target);\n\n      if ($target.length > 0) {\n        return $target[0];\n      } else {\n        return false;\n      }\n    };\n\n    _._sectionForTarget = function (target) {\n      var type = $(target).attr(\"data-section-type\");\n\n      for (var i = 0; i < _._sections.length; i++) {\n        if (_._sections[i].type == type) {\n          return _._sections[i];\n        }\n      }\n\n      return false;\n    };\n\n    _._sectionAlreadyRegistered = function (type) {\n      for (var i = 0; i < _._sections.length; i++) {\n        if (_._sections[i].type == type) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n  })(); // Loading third party scripts\n\n  theme.scriptsLoaded = {};\n\n  theme.loadScriptOnce = function (src, callback, beforeRun, sync) {\n    if (typeof theme.scriptsLoaded[src] === \"undefined\") {\n      theme.scriptsLoaded[src] = [];\n      var tag = document.createElement(\"script\");\n      tag.src = src;\n\n      if (sync || beforeRun) {\n        tag.async = false;\n      }\n\n      if (beforeRun) {\n        beforeRun();\n      }\n\n      if (typeof callback === \"function\") {\n        theme.scriptsLoaded[src].push(callback);\n\n        if (tag.readyState) {\n          // IE, incl. IE9\n          tag.onreadystatechange = function () {\n            if (tag.readyState == \"loaded\" || tag.readyState == \"complete\") {\n              tag.onreadystatechange = null;\n\n              for (var i = 0; i < theme.scriptsLoaded[this].length; i++) {\n                theme.scriptsLoaded[this][i]();\n              }\n\n              theme.scriptsLoaded[this] = true;\n            }\n          }.bind(src);\n        } else {\n          tag.onload = function () {\n            // Other browsers\n            for (var i = 0; i < theme.scriptsLoaded[this].length; i++) {\n              theme.scriptsLoaded[this][i]();\n            }\n\n            theme.scriptsLoaded[this] = true;\n          }.bind(src);\n        }\n      }\n\n      var firstScriptTag = document.getElementsByTagName(\"script\")[0];\n      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n      return true;\n    } else if (\n      _typeof(theme.scriptsLoaded[src]) === \"object\" &&\n      typeof callback === \"function\"\n    ) {\n      theme.scriptsLoaded[src].push(callback);\n    } else {\n      if (typeof callback === \"function\") {\n        callback();\n      }\n\n      return false;\n    }\n  };\n\n  theme.loadStyleOnce = function (src) {\n    var srcWithoutProtocol = src.replace(/^https?:/, \"\");\n\n    if (\n      !document.querySelector(\n        'link[href=\"' + encodeURI(srcWithoutProtocol) + '\"]'\n      )\n    ) {\n      var tag = document.createElement(\"link\");\n      tag.href = srcWithoutProtocol;\n      tag.rel = \"stylesheet\";\n      tag.type = \"text/css\";\n      var firstTag = document.getElementsByTagName(\"link\")[0];\n      firstTag.parentNode.insertBefore(tag, firstTag);\n    }\n  }; /// Show a short-lived text popup above an element\n\n  theme.showQuickPopup = function (message, $origin) {\n    var $popup = $('<div class=\"simple-popup\"/>');\n    var offs = $origin.offset();\n    $popup\n      .html(message)\n      .css({\n        left: offs.left,\n        top: offs.top,\n      })\n      .hide();\n    $(\"body\").append($popup);\n    $popup.css({\n      marginTop: -$popup.outerHeight() - 10,\n      marginLeft: -($popup.outerWidth() - $origin.outerWidth()) / 2,\n    });\n    $popup\n      .fadeIn(200)\n      .delay(3500)\n      .fadeOut(400, function () {\n        $(this).remove();\n      });\n  };\n\n  var ccPopup = /*#__PURE__*/ (function () {\n    \"use strict\";\n\n    function ccPopup($container, namespace) {\n      _classCallCheck(this, ccPopup);\n\n      this.$container = $container;\n      this.namespace = namespace;\n      this.cssClasses = {\n        visible: \"cc-popup--visible\",\n        bodyNoScroll: \"cc-popup-no-scroll\",\n        bodyNoScrollPadRight: \"cc-popup-no-scroll-pad-right\",\n      };\n    }\n    /**\n     * Open popup on timer / local storage - move focus to input ensure you can tab to submit and close\n     * Add the cc-popup--visible class\n     * Update aria to visible\n     */\n\n    _createClass(ccPopup, [\n      {\n        key: \"open\",\n        value: function open(callback) {\n          var _this = this;\n\n          // Prevent the body from scrolling\n          if (this.$container.data(\"freeze-scroll\")) {\n            $(\"body\").addClass(this.cssClasses.bodyNoScroll); // Add any padding necessary to the body to compensate for the scrollbar that just disappeared\n\n            var scrollDiv = document.createElement(\"div\");\n            scrollDiv.className = \"popup-scrollbar-measure\";\n            document.body.appendChild(scrollDiv);\n            var scrollbarWidth =\n              scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n            document.body.removeChild(scrollDiv);\n\n            if (scrollbarWidth > 0) {\n              $(\"body\")\n                .css(\"padding-right\", scrollbarWidth + \"px\")\n                .addClass(this.cssClasses.bodyNoScrollPadRight);\n            }\n          } // Add reveal class\n\n          this.$container.addClass(this.cssClasses.visible); // Track previously focused element\n\n          this.previouslyActiveElement = document.activeElement; // Focus on the close button after the animation in has completed\n\n          setTimeout(function () {\n            _this.$container.find(\".cc-popup-close\")[0].focus();\n          }, 500); // Pressing escape closes the modal\n\n          $(window).on(\"keydown\" + this.namespace, function (event) {\n            if (event.keyCode === 27) {\n              _this.close();\n            }\n          });\n\n          if (callback) {\n            callback();\n          }\n        },\n      },\n      {\n        key: \"close\",\n\n        /**\n         * Close popup on click of close button or background - where does the focus go back to?\n         * Remove the cc-popup--visible class\n         */\n        value: function close(callback) {\n          var _this2 = this;\n\n          // Remove reveal class\n          this.$container.removeClass(this.cssClasses.visible); // Revert focus\n\n          if (this.previouslyActiveElement) {\n            $(this.previouslyActiveElement).focus();\n          } // Destroy the escape event listener\n\n          $(window).off(\"keydown\" + this.namespace); // Allow the body to scroll and remove any scrollbar-compensating padding\n\n          if (this.$container.data(\"freeze-scroll\")) {\n            var transitionDuration = 500;\n            var $innerModal = this.$container.find(\".cc-popup-modal\");\n\n            if ($innerModal.length) {\n              transitionDuration = parseFloat(\n                getComputedStyle($innerModal[0])[\"transitionDuration\"]\n              );\n\n              if (transitionDuration && transitionDuration > 0) {\n                transitionDuration *= 1000;\n              }\n            }\n\n            setTimeout(function () {\n              $(\"body\")\n                .removeClass(_this2.cssClasses.bodyNoScroll)\n                .removeClass(_this2.cssClasses.bodyNoScrollPadRight)\n                .css(\"padding-right\", \"0\");\n            }, transitionDuration);\n          }\n\n          if (callback) {\n            callback();\n          }\n        },\n      },\n    ]);\n\n    return ccPopup;\n  })(); // Manage videos\n\n  theme.VideoManager = new (function () {\n    var _ = this; // Youtube\n\n    _.youtubeVars = {\n      incrementor: 0,\n      apiReady: false,\n      videoData: {},\n      toProcessSelector:\n        '.video-container[data-video-type=\"youtube\"]:not(.video--init)',\n    };\n\n    _.youtubeApiReady = function () {\n      _.youtubeVars.apiReady = true;\n\n      _._loadYoutubeVideos();\n    };\n\n    _._loadYoutubeVideos = function (container) {\n      if ($(_.youtubeVars.toProcessSelector, container).length) {\n        if (_.youtubeVars.apiReady) {\n          // play those videos\n          $(_.youtubeVars.toProcessSelector, container).each(function () {\n            // Don't init videos on mobile\n            if (\n              !(\n                $(this).hasClass(\"video-container--background\") &&\n                $(window).outerWidth() < 768 && !($(this).find('div.video-container__video.video-container__video-show').length !== 0)\n              )\n            ) {\n              $(this).addClass(\"video--init\");\n              _.youtubeVars.incrementor++;\n              var containerId = \"theme-yt-video-\" + _.youtubeVars.incrementor;\n              $(this).data(\"video-container-id\", containerId);\n              var videoElement = $(\n                '<div class=\"video-container__video-element\">'\n              )\n                .attr(\"id\", containerId)\n                .appendTo($(\".video-container__video\", this));\n              var autoplay = $(this).data(\"video-autoplay\");\n              var player = new YT.Player(containerId, {\n                height: \"360\",\n                width: \"640\",\n                videoId: $(this).data(\"video-id\"),\n                playerVars: {\n                  iv_load_policy: 3,\n                  modestbranding: 1,\n                  autoplay: autoplay ? 1 : 0,\n                  loop: $(this).data(\"video-loop\") ? 1 : 0,\n                  playlist: $(this).data(\"video-id\"),\n                  rel: 0,\n                  showinfo: 0,\n                },\n                events: {\n                  onReady: _._onYoutubePlayerReady.bind({\n                    autoplay: autoplay,\n                    $container: $(this),\n                  }),\n                  onStateChange: _._onYoutubePlayerStateChange.bind(this),\n                },\n              });\n              _.youtubeVars.videoData[containerId] = {\n                id: containerId,\n                container: this,\n                videoElement: videoElement,\n                player: player,\n              };\n            } else {\n              $(this).find(\".video-container__video\").hide();\n            }\n          });\n        } else {\n          // load api\n          theme.loadScriptOnce(\"https://www.youtube.com/iframe_api\");\n        }\n      }\n    };\n\n    _._onYoutubePlayerReady = function (event) {\n      event.target.setPlaybackQuality(\"hd1080\");\n\n      if (this.autoplay) {\n        event.target.mute();\n        event.target.playVideo();\n      }\n\n      _._initBackgroundVideo(this.$container);\n    };\n\n    _._onYoutubePlayerStateChange = function (event) {\n      if (event.data == YT.PlayerState.PLAYING) {\n        $(this).addClass(\"video--play-started\");\n      }\n    };\n\n    _._unloadYoutubeVideos = function (container) {\n      for (var dataKey in _.youtubeVars.videoData) {\n        var data = _.youtubeVars.videoData[dataKey];\n\n        if ($(container).find(data.container).length) {\n          data.player.destroy();\n          delete _.youtubeVars.videoData[dataKey];\n          return;\n        }\n      }\n    }; // Vimeo\n\n    _.vimeoVars = {\n      incrementor: 0,\n      apiReady: false,\n      videoData: {},\n      toProcessSelector:\n        '.video-container[data-video-type=\"vimeo\"]:not(.video--init)',\n    };\n\n    _.vimeoApiReady = function () {\n      _.vimeoVars.apiReady = true;\n\n      _._loadVimeoVideos();\n    };\n\n    _._loadVimeoVideos = function (container) {\n      if ($(_.vimeoVars.toProcessSelector, container).length) {\n        if (_.vimeoVars.apiReady) {\n          // play those videos\n          $(_.vimeoVars.toProcessSelector, container).each(function () {\n            // Don't init videos on mobile\n            if (\n              !(\n                $(this).hasClass(\"video-container--background\") &&\n                $(window).outerWidth() < 768 &&\n                ($(this).find('div.video-container__video.video-container__video-show').length === 0)\n              )\n            ) {\n              $(this).find(\".video-container__video\").css('display', 'block'); // it displays back the vimeo when switching from mobile to desktop \n              $(this).addClass(\"video--init\");\n              _.vimeoVars.incrementor++;\n              var $this = $(this);\n              _._initBackgroundVideo($this); // moved this outside ready() so that the css properties are applied all the time\n              var containerId = \"theme-vi-video-\" + _.vimeoVars.incrementor;\n              $(this).data(\"video-container-id\", containerId);\n              var videoElement = $(\n                '<div class=\"video-container__video-element\">'\n              )\n                .attr(\"id\", containerId)\n                .appendTo($(\".video-container__video\", this));\n              var autoplay = $(this).data(\"video-autoplay\");\n              var player = new Vimeo.Player(containerId, {\n                url: $(this).data(\"video-url\"),\n                width: 640,\n                loop: $(this).data(\"video-autoplay\"),\n                autoplay: autoplay,\n                autopause: false, // pause this video automatically when another one plays\n                controls: false, // play bar and UI will be hidden\n                muted: true,\n              });\n              player.on(\n                \"playing\",\n                function () {\n                  $(this).addClass(\"video--play-started\");\n                }.bind(this)\n              );\n              player.ready().then(function () {\n                if (autoplay) {\n                  player.setVolume(0);\n                  player.play();\n                }\n                if (\n                  player.element &&\n                  player.element.width &&\n                  player.element.height\n                ) {\n                  var ratio =\n                    parseInt(player.element.height) /\n                    parseInt(player.element.width);\n                  $this\n                    .find(\".video-container__video\")\n                    .css(\"padding-bottom\", ratio * 100 + \"%\");\n                }\n              });\n\n              _.vimeoVars.videoData[containerId] = {\n                id: containerId,\n                container: this,\n                videoElement: videoElement,\n                player: player,\n                autoPlay: autoplay,\n              };\n            } else {\n              $(this).find(\".video-container__video\").hide();\n            }\n          });\n        } else {\n          // load api\n\n          if (window.define) {\n            // workaround for third parties using RequireJS\n            theme.loadScriptOnce(\n              \"https://player.vimeo.com/api/player.js\",\n              function () {\n                _.vimeoVars.apiReady = true;\n\n                _._loadVimeoVideos();\n\n                window.define = window.tempDefine;\n              },\n              function () {\n                window.tempDefine = window.define;\n                window.define = null;\n              }\n            );\n          } else {\n            theme.loadScriptOnce(\n              \"https://player.vimeo.com/api/player.js\",\n              function () {\n                _.vimeoVars.apiReady = true;\n\n                _._loadVimeoVideos();\n              }\n            );\n          }\n        }\n      }\n    };\n\n    _._unloadVimeoVideos = function (container) {\n      for (var dataKey in _.vimeoVars.videoData) {\n        var data = _.vimeoVars.videoData[dataKey];\n\n        if ($(container).find(data.container).length) {\n          data.player.unload();\n          delete _.vimeoVars.videoData[dataKey];\n          return;\n        }\n      }\n    }; // Mp4\n\n    _.mp4Vars = {\n      incrementor: 0,\n      videoData: {},\n      toProcessSelector:\n        '.video-container[data-video-type=\"mp4\"]:not(.video--init)',\n    };\n\n    _._loadMp4Videos = function (container) {\n      if ($(_.mp4Vars.toProcessSelector, container).length) {\n        // play those videos\n        if (\n          !(\n            $(this).hasClass(\"video-container--background\") &&\n            $(window).outerWidth() < 768 && !($(this).find('div.video-container__video.video-container__video-show').length !== 0)\n          )\n        ) {\n          $(_.mp4Vars.toProcessSelector, container)\n            .addClass(\"video--init\")\n            .each(function () {\n              _.mp4Vars.incrementor++;\n              var $this = $(this);\n              var containerId = \"theme-mp-video-\" + _.mp4Vars.incrementor;\n              $(this).data(\"video-container-id\", containerId);\n              var videoElement = $('<div class=\"video-container__video-element\">')\n                .attr(\"id\", containerId)\n                .appendTo($(\".video-container__video\", this));\n              var $video = $(\"<video playsinline>\");\n\n              if ($(this).data(\"video-loop\")) {\n                $video.attr(\"loop\", \"loop\");\n              }\n\n              if ($(this).data('video-controls')) {\n                $video.attr({\n                  controls: true,\n                })\n              }\n\n              if ($(this).data('video-muted')) {\n                $video.attr({\n                  muted: 'muted',\n                })\n                $video.on('loadeddata', function () {\n                  this.muted = true // required by Chrome - ignores attribute\n                })\n              }\n\n              if ($(this).data(\"video-autoplay\")) {\n                $video.attr({\n                  autoplay: \"autoplay\",\n                  muted: \"muted\",\n                });\n                $video.on(\"loadeddata\", function () {\n                  $(this).off(\"loadeddata\");\n                  this.muted = true; // required by Chrome - ignores attribute\n\n                  this.play();\n                });\n              }\n\n              $video.on(\n                \"playing\",\n                function () {\n                  $(this).addClass(\"video--play-started\");\n                }.bind(this)\n              );\n              $video\n                .attr(\"src\", $(this).data(\"video-url\"))\n                .appendTo(videoElement);\n            });\n        } else {\n          $(this).find(\"video-container__video\").hide();\n        }\n      }\n    };\n\n    _._unloadMp4Videos = function (container) { }; // background video placement for iframes\n\n    _._initBackgroundVideo = function ($container) {\n      if ($container.hasClass(\"video-container--background\")) {\n        var assessBackgroundVideo = function assessBackgroundVideo() {\n          var $container = this,\n            cw = $container.width(),\n            ch = $container.height(),\n            cr = cw / ch,\n            $frame = $(\".video-container__video iframe\", this),\n            frameWidth = $frame.attr(\"width\") || 640, // $frame.attr(\"width\") has a constant value of 640 when resizing the screen, but initially is undefined\n            frameHeight = $frame.attr(\"height\") || 274, // $frame.attr(\"height\") has a constant value of 274 when resizing the screen, but initially is undefined\n            vr = frameWidth / frameHeight,\n            $pan = $(\".video-container__video\", this),\n            vCrop = 75; // pushes video outside container to hide controls\n\n          if (cr > vr) {\n            var vh = cw / vr + vCrop * 2;\n            $pan.css({\n              marginTop: (ch - vh) / 2 - vCrop,\n              marginLeft: \"\",\n              height: vh + vCrop * 2,\n              width: \"\",\n            });\n          } else {\n            var vw = cw * vr + vCrop * 2 * vr;\n            $pan.css({\n              marginTop: -vCrop,\n              marginLeft: (cw - vw) / 2,\n              height: ch + vCrop * 2,\n              width: vw,\n            });\n          }\n        };\n\n        assessBackgroundVideo.bind($container)();\n        $(window).on(\n          \"debouncedresize.\" + $container.data(\"video-container-id\"),\n          assessBackgroundVideo.bind($container)\n        );\n      }\n    }; // Compatibility with Sections\n\n    this.onSectionLoad = function (container) {\n      // url only - infer type\n      $(\".video-container[data-video-url]:not([data-video-type])\").each(\n        (i, video) => {\n          if (isMobile() && $(video).data(\"video-url-mobile\")) {\n            checkVideo($(video).data(\"video-url-mobile\"), $(video));\n          } else {\n            checkVideo($(video).data(\"video-url\"), $(video));\n          }\n        }\n      );\n\n      function checkVideo(url, video) {\n\n        if (url.indexOf(\".mp4\") > -1) {\n          $(video).attr(\"data-video-type\", \"mp4\");\n        }\n\n        if (url.indexOf(\"vimeo.com\") > -1) {\n          $(video).attr(\"data-video-type\", \"vimeo\");\n          $(video).attr(\"data-video-id\", url.split(\"?\")[0].split(\"/\").pop());\n        }\n\n        if (url.indexOf(\"youtu.be\") > -1 || url.indexOf(\"youtube.com\") > -1) {\n          $(video).attr(\"data-video-type\", \"youtube\");\n\n          if (url.indexOf(\"v=\") > -1) {\n            $(video).attr(\n              \"data-video-id\",\n              url.split(\"v=\").pop().split(\"&\")[0]\n            );\n          } else {\n            $(video).attr(\"data-video-id\", url.split(\"?\")[0].split(\"/\").pop());\n          }\n        }\n      }\n\n      _._loadYoutubeVideos(container);\n\n      _._loadVimeoVideos(container);\n\n      _._loadMp4Videos(container);\n\n      $(window).on(\"debouncedresize.video-manager-resize\", function () {\n        _._loadYoutubeVideos(container);\n\n        _._loadVimeoVideos(container);\n      }); // play button\n\n      $(\".video-container__play\", container).on(\"click\", function (evt) {\n        evt.preventDefault();\n        var $container = $(this).closest(\".video-container\"); // reveal\n\n        $container.addClass(\"video-container--playing\"); // play\n\n        var id = $container.data(\"video-container-id\");\n\n        if (id.indexOf(\"theme-yt-video\") === 0) {\n          _.youtubeVars.videoData[id].player.playVideo();\n        } else {\n          _.vimeoVars.videoData[id].player.play();\n        }\n      }); // modal close button\n\n      $(\".video-container__stop\", container).on(\"click\", function (evt) {\n        evt.preventDefault();\n        var $container = $(this).closest(\".video-container\"); // hide\n\n        $container.removeClass(\"video-container--playing\"); // play\n\n        var id = $container.data(\"video-container-id\");\n\n\n        if (id.indexOf(\"theme-yt-video\") === 0) {\n          _.youtubeVars.videoData[id].player.stopVideo();\n        } else {\n          _.vimeoVars.videoData[id].player.pause();\n\n          _.vimeoVars.videoData[id].player.setCurrentTime(0);\n        }\n      });\n    };\n\n    this.onSectionUnload = function (container) {\n      $(\".video-container__play, .video-container__stop\", container).off(\n        \"click\"\n      );\n      $(window).off(\".\" + $(\".video-container\").data(\"video-container-id\"));\n      $(window).off(\"debouncedresize.video-manager-resize\");\n\n      _._unloadYoutubeVideos(container);\n\n      _._unloadVimeoVideos(container);\n\n      _._unloadMp4Videos(container);\n    };\n  })(); // Youtube API callback\n\n  window.onYouTubeIframeAPIReady = function () {\n    theme.VideoManager.youtubeApiReady();\n  }; // Register the section\n\n  cc.sections.push({\n    name: \"video\",\n    section: theme.VideoManager,\n  });\n  theme.MapSection = new (function () {\n    var _ = this;\n\n    _.config = {\n      zoom: 14,\n      styles: {\n        default: [],\n        silver: [\n          {\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#f5f5f5\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.icon\",\n            stylers: [\n              {\n                visibility: \"off\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#616161\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#f5f5f5\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.land_parcel\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#bdbdbd\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#eeeeee\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#757575\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#e5e5e5\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#9e9e9e\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#ffffff\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.arterial\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#757575\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#dadada\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#616161\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.local\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#9e9e9e\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.line\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#e5e5e5\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.station\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#eeeeee\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#c9c9c9\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#9e9e9e\",\n              },\n            ],\n          },\n        ],\n        retro: [\n          {\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#ebe3cd\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#523735\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#f5f1e6\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#c9b2a6\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.land_parcel\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#dcd2be\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.land_parcel\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#ae9e90\",\n              },\n            ],\n          },\n          {\n            featureType: \"landscape.natural\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#dfd2ae\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#dfd2ae\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#93817c\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"geometry.fill\",\n            stylers: [\n              {\n                color: \"#a5b076\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#447530\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#f5f1e6\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.arterial\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#fdfcf8\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#f8c967\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#e9bc62\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway.controlled_access\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#e98d58\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway.controlled_access\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#db8555\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.local\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#806b63\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.line\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#dfd2ae\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.line\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#8f7d77\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.line\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#ebe3cd\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.station\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#dfd2ae\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"geometry.fill\",\n            stylers: [\n              {\n                color: \"#b9d3c2\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#92998d\",\n              },\n            ],\n          },\n        ],\n        dark: [\n          {\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#212121\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.icon\",\n            stylers: [\n              {\n                visibility: \"off\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#757575\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#212121\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#757575\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.country\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#9e9e9e\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.land_parcel\",\n            stylers: [\n              {\n                visibility: \"off\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.locality\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#bdbdbd\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#757575\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#181818\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#616161\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#1b1b1b\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"geometry.fill\",\n            stylers: [\n              {\n                color: \"#2c2c2c\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#8a8a8a\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.arterial\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#373737\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#3c3c3c\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway.controlled_access\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#4e4e4e\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.local\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#616161\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#757575\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#000000\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#3d3d3d\",\n              },\n            ],\n          },\n        ],\n        night: [\n          {\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#242f3e\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#746855\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#242f3e\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.locality\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#d59563\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#d59563\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#263c3f\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#6b9a76\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#38414e\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#212a37\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#9ca5b3\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#746855\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#1f2835\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#f3d19c\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#2f3948\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.station\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#d59563\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#17263c\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#515c6d\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#17263c\",\n              },\n            ],\n          },\n        ],\n        aubergine: [\n          {\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#1d2c4d\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#8ec3b9\",\n              },\n            ],\n          },\n          {\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#1a3646\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.country\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#4b6878\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.land_parcel\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#64779e\",\n              },\n            ],\n          },\n          {\n            featureType: \"administrative.province\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#4b6878\",\n              },\n            ],\n          },\n          {\n            featureType: \"landscape.man_made\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#334e87\",\n              },\n            ],\n          },\n          {\n            featureType: \"landscape.natural\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#023e58\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#283d6a\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#6f9ba5\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#1d2c4d\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"geometry.fill\",\n            stylers: [\n              {\n                color: \"#023e58\",\n              },\n            ],\n          },\n          {\n            featureType: \"poi.park\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#3C7680\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#304a7d\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#98a5be\",\n              },\n            ],\n          },\n          {\n            featureType: \"road\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#1d2c4d\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#2c6675\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"geometry.stroke\",\n            stylers: [\n              {\n                color: \"#255763\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#b0d5ce\",\n              },\n            ],\n          },\n          {\n            featureType: \"road.highway\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#023e58\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#98a5be\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit\",\n            elementType: \"labels.text.stroke\",\n            stylers: [\n              {\n                color: \"#1d2c4d\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.line\",\n            elementType: \"geometry.fill\",\n            stylers: [\n              {\n                color: \"#283d6a\",\n              },\n            ],\n          },\n          {\n            featureType: \"transit.station\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#3a4762\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"geometry\",\n            stylers: [\n              {\n                color: \"#0e1626\",\n              },\n            ],\n          },\n          {\n            featureType: \"water\",\n            elementType: \"labels.text.fill\",\n            stylers: [\n              {\n                color: \"#4e6d70\",\n              },\n            ],\n          },\n        ],\n      },\n    };\n    _.apiStatus = null;\n\n    this.geolocate = function ($map) {\n      var deferred = $.Deferred();\n      var geocoder = new google.maps.Geocoder();\n      var address = $map.data(\"address-setting\");\n      geocoder.geocode(\n        {\n          address: address,\n        },\n        function (results, status) {\n          if (status !== google.maps.GeocoderStatus.OK) {\n            deferred.reject(status);\n          }\n\n          deferred.resolve(results);\n        }\n      );\n      return deferred;\n    };\n\n    this.createMap = function (container) {\n      var $map = $(\".map-section__map-container\", container);\n      return _.geolocate($map)\n        .then(\n          function (results) {\n            var mapOptions = {\n              zoom: _.config.zoom,\n              styles: _.config.styles[$(container).data(\"map-style\")],\n              center: results[0].geometry.location,\n              scrollwheel: false,\n              disableDoubleClickZoom: true,\n              disableDefaultUI: true,\n              zoomControl: true,\n            };\n            _.map = new google.maps.Map($map[0], mapOptions);\n            _.center = _.map.getCenter();\n            var marker = new google.maps.Marker({\n              map: _.map,\n              position: _.center,\n              clickable: false,\n            });\n            google.maps.event.addDomListener(window, \"resize\", function () {\n              google.maps.event.trigger(_.map, \"resize\");\n\n              _.map.setCenter(_.center);\n            });\n          }.bind(this)\n        )\n        .fail(function () {\n          var errorMessage;\n\n          switch (status) {\n            case \"ZERO_RESULTS\":\n              errorMessage = theme.strings.addressNoResults;\n              break;\n\n            case \"OVER_QUERY_LIMIT\":\n              errorMessage = theme.strings.addressQueryLimit;\n              break;\n\n            default:\n              errorMessage = theme.strings.addressError;\n              break;\n          } // Only show error in the theme editor\n\n          if (Shopify.designMode) {\n            var $mapContainer = $map.parents(\".map-section\");\n            $mapContainer.addClass(\"page-width map-section--load-error\");\n            $mapContainer\n              .find(\".map-section__wrapper\")\n              .html(\n                '<div class=\"errors text-center\">' + errorMessage + \"</div>\"\n              );\n          }\n        });\n    };\n\n    this.onSectionLoad = function (target) {\n      var $container = $(target); // Global function called by Google on auth errors\n\n      window.gm_authFailure = function () {\n        if (!Shopify.designMode) return;\n        $container.addClass(\"page-width map-section--load-error\");\n        $container\n          .find(\".map-section__wrapper\")\n          .html(\n            '<div class=\"errors text-center\">' +\n            theme.strings.authError +\n            \"</div>\"\n          );\n      }; // create maps\n\n      var key = $container.data(\"api-key\");\n\n      if (typeof key !== \"string\" || key === \"\") {\n        return;\n      } // load map\n\n      theme.loadScriptOnce(\n        \"https://maps.googleapis.com/maps/api/js?key=\" + key,\n        function () {\n          _.createMap($container);\n        }\n      );\n    };\n\n    this.onSectionUnload = function (target) {\n      if (\n        typeof window.google !== \"undefined\" &&\n        typeof google.maps !== \"undefined\"\n      ) {\n        google.maps.event.clearListeners(this.map, \"resize\");\n      }\n    };\n  })(); // Register the section\n\n  cc.sections.push({\n    name: \"map\",\n    section: theme.MapSection,\n  }); // A section that contains other sections, e.g. story page\n\n  theme.NestedSectionsSection = new (function () {\n    this.onSectionLoad = function (container) {\n      // load child sections\n      $(\"[data-nested-section-type]\", container).each(function () {\n        var type = $(this).attr(\"data-nested-section-type\");\n        var section = null;\n\n        for (var i = 0; i < theme.Sections._sections.length; i++) {\n          if (theme.Sections._sections[i].type == type) {\n            section = theme.Sections._sections[i].section;\n          }\n        }\n\n        if (section) {\n          var instance = {\n            target: this,\n            section: section,\n            $shopifySectionContainer: $(this).closest(\".shopify-section\"),\n            thisContext: {},\n          };\n\n          theme.Sections._instances.push(instance);\n\n          $(this).data(\"themeSectionInstance\", instance);\n          section.onSectionLoad.bind(instance.thisContext)(this);\n        }\n      });\n    };\n\n    this.onSectionUnload = function (container) {\n      // unload child sections\n      $(\"[data-nested-section-type]\", container).each(function () {\n        theme.Sections.sectionUnload.bind(\n          $(this).data(\"themeSectionInstance\").thisContext\n        )(this);\n      });\n    };\n\n    this.onBlockSelect = function (target) {\n      // scroll to block\n      $(window).scrollTop($(target).offset().top - 100);\n    };\n  })(); // Register the section\n\n  cc.sections.push({\n    name: \"nested-sections\",\n    section: theme.NestedSectionsSection,\n  });\n  /**\n   * StoreAvailability Section Script\n   * ------------------------------------------------------------------------------\n   *\n   * @namespace StoreAvailability\n   */\n\n  theme.StoreAvailability = function (container) {\n    var loadingClass = \"store-availability-loading\";\n    var initClass = \"store-availability-initialized\";\n    var storageKey = \"cc-location\";\n\n    this.onSectionLoad = function (container) {\n      var _this3 = this;\n\n      this.namespace = theme.namespaceFromSection(container);\n      this.$container = $(container);\n      this.productId = this.$container.data(\"store-availability-container\");\n      this.sectionUrl = this.$container.data(\"section-url\");\n      this.$modal;\n      var firstRun = true; // Handle when a variant is selected\n\n      $(window).on(\n        \"cc-variant-updated\".concat(this.namespace).concat(this.productId),\n        function (e, args) {\n          if (args.product.id === _this3.productId) {\n            _this3.functions.updateContent.bind(_this3)(\n              args.variant.id,\n              args.product.title,\n              firstRun,\n              false,\n              typeof args.variant.available !== \"undefined\"\n            );\n\n            firstRun = false;\n          }\n        }\n      ); // Handle single variant products\n\n      if (this.$container.data(\"single-variant-id\")) {\n        this.functions.updateContent.bind(this)(\n          this.$container.data(\"single-variant-id\"),\n          this.$container.data(\"single-variant-product-title\"),\n          firstRun,\n          this.$container.data(\"has-only-default-variant\"),\n          this.$container.data(\"single-variant-product-available\")\n        );\n        firstRun = false;\n      }\n    };\n\n    this.onSectionUnload = function () {\n      $(window).off(\n        \"cc-variant-updated\".concat(this.namespace).concat(this.productId)\n      );\n      this.$container.off(\"click\");\n\n      if (this.$modal) {\n        this.$modal.off(\"click\");\n      }\n    };\n\n    this.functions = {\n      // Returns the users location data (if allowed)\n      getUserLocation: function getUserLocation() {\n        return new Promise(function (resolve, reject) {\n          var storedCoords;\n\n          if (sessionStorage[storageKey]) {\n            storedCoords = JSON.parse(sessionStorage[storageKey]);\n          }\n\n          if (storedCoords) {\n            resolve(storedCoords);\n          } else {\n            if (navigator.geolocation) {\n              navigator.geolocation.getCurrentPosition(\n                function (position) {\n                  var coords = {\n                    latitude: position.coords.latitude,\n                    longitude: position.coords.longitude,\n                  }; //Set the localization api\n\n                  fetch(\"/localization.json\", {\n                    method: \"PUT\",\n                    headers: {\n                      \"Content-Type\": \"application/json\",\n                    },\n                    body: JSON.stringify(coords),\n                  }); //Write to a session storage\n\n                  sessionStorage[storageKey] = JSON.stringify(coords);\n                  resolve(coords);\n                },\n                function () {\n                  resolve(false);\n                },\n                {\n                  maximumAge: 3600000,\n                  // 1 hour\n                  timeout: 5000,\n                }\n              );\n            } else {\n              resolve(false);\n            }\n          }\n        });\n      },\n      // Requests the available stores and calls the callback\n      getAvailableStores: function getAvailableStores(variantId, cb) {\n        return $.get(this.sectionUrl.replace(\"VARIANT_ID\", variantId), cb);\n      },\n      // Haversine Distance\n      // The haversine formula is an equation giving great-circle distances between\n      // two points on a sphere from their longitudes and latitudes\n      calculateDistance: function calculateDistance(\n        coords1,\n        coords2,\n        unitSystem\n      ) {\n        var dtor = Math.PI / 180;\n        var radius = unitSystem === \"metric\" ? 6378.14 : 3959;\n        var rlat1 = coords1.latitude * dtor;\n        var rlong1 = coords1.longitude * dtor;\n        var rlat2 = coords2.latitude * dtor;\n        var rlong2 = coords2.longitude * dtor;\n        var dlon = rlong1 - rlong2;\n        var dlat = rlat1 - rlat2;\n        var a =\n          Math.pow(Math.sin(dlat / 2), 2) +\n          Math.cos(rlat1) * Math.cos(rlat2) * Math.pow(Math.sin(dlon / 2), 2);\n        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n        return radius * c;\n      },\n      // Updates the existing modal pickup with locations with distances from the user\n      updateLocationDistances: function updateLocationDistances(coords) {\n        var unitSystem = this.$modal\n          .find(\"[data-unit-system]\")\n          .data(\"unit-system\");\n        var self = this;\n        this.$modal.find('[data-distance=\"false\"]').each(function () {\n          var _this4 = this;\n\n          var thisCoords = {\n            latitude: parseFloat($(this).data(\"latitude\")),\n            longitude: parseFloat($(this).data(\"longitude\")),\n          };\n\n          if (thisCoords.latitude && thisCoords.longitude) {\n            var distance = self.functions\n              .calculateDistance(coords, thisCoords, unitSystem)\n              .toFixed(1);\n            $(this).html(distance); //Timeout to trigger animation\n\n            setTimeout(function () {\n              $(_this4)\n                .closest(\".store-availability-list__location__distance\")\n                .addClass(\"-in\");\n            }, 0);\n          }\n\n          $(this).attr(\"data-distance\", \"true\");\n        });\n      },\n      // Requests the available stores and updates the page with info below Add to Basket, and append the modal to the page\n      updateContent: function updateContent(\n        variantId,\n        productTitle,\n        firstRun,\n        isSingleDefaultVariant,\n        isVariantAvailable\n      ) {\n        var _this5 = this;\n\n        this.$container.off(\"click\", \"[data-store-availability-modal-open]\");\n        this.$container.off(\n          \"click\" + this.namespace,\n          \".cc-popup-close, .cc-popup-background\"\n        );\n        $(\".store-availabilities-modal\").remove();\n\n        if (firstRun) {\n          this.$container.hide();\n        } else if (!isVariantAvailable) {\n          //If the variant is Unavailable (not the same as Out of Stock) - hide the store pickup completely\n          this.$container.addClass(loadingClass).addClass(initClass);\n          this.$container.css(\"height\", \"0px\");\n        } else {\n          this.$container.addClass(loadingClass).addClass(initClass);\n          this.$container.css(\"height\", this.$container.outerHeight() + \"px\");\n        }\n\n        if (isVariantAvailable) {\n          this.functions.getAvailableStores.call(\n            this,\n            variantId,\n            function (response) {\n              if (\n                response.trim().length > 0 &&\n                !response.includes(\"NO_PICKUP\")\n              ) {\n                _this5.$container.html(response);\n\n                _this5.$container.html(\n                  _this5.$container.children().first().html()\n                ); // editor bug workaround\n\n                _this5.$container\n                  .find(\"[data-store-availability-modal-product-title]\")\n                  .html(productTitle);\n\n                if (isSingleDefaultVariant) {\n                  _this5.$container\n                    .find(\".store-availabilities-modal__variant-title\")\n                    .remove();\n                }\n\n                _this5.$container.find(\".cc-popup\").appendTo(\"body\");\n\n                _this5.$modal = $(\"body\").find(\".store-availabilities-modal\");\n                var popup = new ccPopup(_this5.$modal, _this5.namespace);\n\n                _this5.$container.on(\n                  \"click\",\n                  \"[data-store-availability-modal-open]\",\n                  function () {\n                    popup.open(); //When the modal is opened, try and get the users location\n\n                    _this5.functions.getUserLocation().then(function (coords) {\n                      if (\n                        coords &&\n                        _this5.$modal.find('[data-distance=\"false\"]').length\n                      ) {\n                        //Re-retrieve the available stores location modal contents\n                        _this5.functions.getAvailableStores.call(\n                          _this5,\n                          variantId,\n                          function (response) {\n                            _this5.$modal\n                              .find(\".store-availabilities-list\")\n                              .html(\n                                $(response)\n                                  .find(\".store-availabilities-list\")\n                                  .html()\n                              );\n\n                            _this5.functions.updateLocationDistances.bind(\n                              _this5\n                            )(coords);\n                          }\n                        );\n                      }\n                    });\n\n                    return false;\n                  }\n                );\n\n                _this5.$modal.on(\n                  \"click\" + _this5.namespace,\n                  \".cc-popup-close, .cc-popup-background\",\n                  function () {\n                    popup.close();\n                  }\n                );\n\n                if (firstRun) {\n                  _this5.$container.slideDown(300);\n                } else {\n                  _this5.$container.removeClass(loadingClass);\n\n                  var newHeight =\n                    _this5.$container\n                      .find(\".store-availability-container\")\n                      .outerHeight() + \"px\";\n\n                  _this5.$container.css(\"height\", newHeight);\n                }\n              }\n            }\n          );\n        }\n      },\n    }; // Initialise the section when it's instantiated\n\n    this.onSectionLoad(container);\n  }; // Register section\n\n  cc.sections.push({\n    name: \"store-availability\",\n    section: theme.StoreAvailability,\n  });\n  theme.Navigation = {\n    init: function init(options) {\n      if (options.nav.length == 0) {\n        return;\n      }\n\n      var $nav = options.nav,\n        navHoverDelay = 250,\n        $navLastOpenDropdown = $(),\n        navOpenTimeoutId = -1; // hover events\n\n      $nav.on(\n        \"mouseenter mouseleave\",\n        \".navigation__tier-1 > .navigation__item--with-children\",\n        function (evt) {\n          var $dropdownContainer = $(this); // delay on hover-out\n          var $desktopDropdownContainer = $(\".navigation__tier-1.main-menu > .navigation__item--with-children\");\n\n          if (evt.type == \"mouseenter\") {\n            clearTimeout(navOpenTimeoutId);\n            clearTimeout($dropdownContainer.data(\"navCloseTimeoutId\"));\n            var $openSiblings = $dropdownContainer.siblings(\n              \".navigation__item--show-children\"\n            ); // close all menus but last opened\n\n            $openSiblings\n              .not($navLastOpenDropdown)\n              .removeClass(\"navigation__item--show-children\");\n            $navLastOpenDropdown = $dropdownContainer; // show after a delay, based on first-open or not\n\n            var timeoutDelay = $openSiblings.length == 0 ? 0 : navHoverDelay; // open it\n\n            var newNavOpenTimeoutId = setTimeout(function () {\n              $desktopDropdownContainer\n                .addClass(\"navigation__item--show-children\")\n                .siblings(\".navigation__item--show-children\")\n                .removeClass(\"navigation__item--show-children\");\n              $dropdownContainer\n                .addClass(\"navigation__item--show-children\");\n              // .siblings(\".navigation__item--show-children\")\n              // .removeClass(\"navigation__item--show-children\");\n            }, timeoutDelay);\n            navOpenTimeoutId = newNavOpenTimeoutId;\n            $dropdownContainer.data(\"navOpenTimeoutId\", newNavOpenTimeoutId);\n          } else {\n            // cancel opening, close after delay, and clear transforms\n            clearTimeout($dropdownContainer.data(\"navOpenTimeoutId\"));\n            $dropdownContainer.data(\n              \"navCloseTimeoutId\",\n              setTimeout(function () {\n                // $dropdownContainer.removeClass(\n                //   \"navigation__item--mobile-open\"\n                // ).removeClass(\n                //   \"navigation__item--mobile-open-finished\"\n                // );\n              }, navHoverDelay)\n            );\n          } // a11y\n\n          $dropdownContainer\n            .children(\"[aria-expanded]\")\n            .attr(\"aria-expanded\", evt.type == \"mouseenter\");\n\n          $desktopDropdownContainer\n            .removeClass(\"navigation__item--show-children\");\n        }\n      ); // touch events on desktop\n\n      // Close if clicked outside\n      $(document).click(function (event) {\n        var $desktopDropdownContainer = $(\".navigation__tier-1.main-menu > .navigation__item--with-children\");\n        var $target = $(event.target);\n        if (!$target.closest($desktopDropdownContainer).length &&\n          $($desktopDropdownContainer).is(\":visible\")) {\n          $desktopDropdownContainer\n            .removeClass(\"navigation__item--show-children\");\n        }\n      });\n\n      var touchHandler = function touchHandler(evt) {\n        if ($(window).width() > 767) {\n          if (evt.type == \"touchstart\") {\n            $(this).data(\"touchstartedAt\", evt.timeStamp);\n          } else if (evt.type == \"touchend\") {\n            // down & up in under a second - presume tap\n            if (evt.timeStamp - $(this).data(\"touchstartedAt\") < 1000) {\n              $(this).data(\"touchOpenTriggeredAt\", evt.timeStamp);\n\n              if (\n                $(this).parent().hasClass(\"navigation__item--show-children\")\n              ) {\n                // trigger close\n                $(this).parent().trigger(\"mouseleave\");\n              } else {\n                // trigger close on any open items\n                $(\".navigation:first .navigation__item--show-children\").trigger(\n                  \"mouseleave\"\n                ); // trigger open\n\n                $(this).parent().trigger(\"mouseenter\");\n              } // prevent fake click\n\n              return false;\n            }\n          } else if (evt.type == \"click\") {\n            // if touch open was triggered very recently, prevent click event\n            if (\n              $(this).data(\"touchOpenTriggeredAt\") &&\n              evt.timeStamp - $(this).data(\"touchOpenTriggeredAt\") < 1000\n            ) {\n              return false;\n            }\n          }\n        }\n      };\n\n      $nav.on(\n        \"touchstart touchend click\",\n        \".navigation__tier-1 > .navigation__item--with-children > .navigation__link\",\n        touchHandler\n      ); // hit return on dropdown toggle\n\n      var keydownHandler = function keydownHandler(evt) {\n        if (evt.which == 13) {\n          var $parent = $(this).parent();\n          $parent.trigger(\n            $parent.hasClass(\"navigation__item--show-children\")\n              ? \"mouseleave\"\n              : \"mouseenter\"\n          );\n          return false;\n        }\n      };\n\n      $nav.on(\n        \"keydown\",\n        \".navigation__tier-1 > .navigation__item--with-children > .navigation__children-toggle\",\n        keydownHandler\n      ); // proxy for desktop nav interaction events\n\n      if (options.proxyTier1Nav1 || options.proxyTier1Nav2) {\n        $(options.proxyTier1Nav1).add(options.proxyTier1Nav2)\n          .on(\n            \"mouseenter mouseleave\",\n            \".navigation__tier-1 > .navigation__item--with-children\",\n            function (evt) {\n              $(\n                $(\".navigation__tier-1 > .navigation__item\", $nav)[\n                $(this).index()\n                ]\n              ).trigger(evt.type);\n            }\n          )\n          .on(\n            \"touchstart touchend click\",\n            \".navigation__tier-1 > .navigation__item--with-children > .navigation__link\",\n            function (evt) {\n              var response = touchHandler.bind(\n                $(\n                  $(\".navigation__tier-1 > .navigation__item\", $nav)[\n                  $(this).parent().index()\n                  ]\n                ).children(\".navigation__link\")[0]\n              )(evt);\n\n              if (response === false) {\n                return false;\n              }\n            }\n          )\n          .on(\n            \"keydown\",\n            \".navigation__tier-1 > .navigation__item--with-children > .navigation__children-toggle\",\n            function (evt) {\n              if (evt.which == 13) {\n                keydownHandler.bind(\n                  $(\n                    $(\".navigation__tier-1 > .navigation__item\", $nav)[\n                    $(this).parent().index()\n                    ]\n                  ).children(\".navigation__children-toggle\")[0]\n                )(evt);\n                return false;\n              }\n            }\n          );\n      } // mobile expansion\n\n      $nav.on(\"click\", \".navigation__children-toggle\", function () {\n        if (\n          $(this)\n            .parent()\n            .toggleClass(\"navigation__item--mobile-open\")\n            .hasClass(\"navigation__item--mobile-open\")\n        ) {\n          $(this)\n            .siblings(\".navigation__child-tier\")\n            .stop()\n            .slideDown(300, function () {\n              $(this)\n                .parent()\n                .addClass(\"navigation__item--mobile-open-finished\");\n              $(this).removeAttr(\"style\");\n            });\n        } else {\n          $(this)\n            .siblings(\".navigation__child-tier\")\n            .stop()\n            .slideUp(300, function () {\n              $(this)\n                .parent()\n                .removeClass(\"navigation__item--mobile-open-finished\");\n              $(this).removeAttr(\"style\");\n            });\n        }\n\n        return false;\n      });\n      $nav.on(\n        \"click\",\n        '.navigation__link[href=\"#\"][aria-haspopup=\"true\"]',\n        function () {\n          $(this).siblings(\".navigation__children-toggle\").trigger(\"click\");\n          return false;\n        }\n      );\n    },\n    destroy: function destroy($nav, $proxyTier1Nav1) {\n      $nav\n        .add($proxyTier1Nav1)\n        .off(\"click mouseenter mouseleave touchstart touchend keydown\");\n    },\n  };\n  theme.icons = {\n    left:\n      '<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><title>' +\n      theme.strings.icon_labels_left +\n      '</title><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\"/></svg>',\n    right:\n      '<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><title>' +\n      theme.strings.icon_labels_right +\n      '</title><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"/></svg>',\n    close:\n      '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-x\"><title>' +\n      theme.strings.icon_labels_close +\n      '</title><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>',\n    chevronLeft:\n      '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-chevron-left\"><title>' +\n      theme.strings.icon_labels_left +\n      '</title><polyline points=\"15 18 9 12 15 6\"></polyline></svg>',\n    chevronRight:\n      '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-chevron-right\"><title>' +\n      theme.strings.icon_labels_right +\n      '</title><polyline points=\"9 18 15 12 9 6\"></polyline></svg>',\n    chevronDown:\n      '<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><title>' +\n      theme.strings.icon_labels_down +\n      '</title><path d=\"M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z\"/><path d=\"M0-.75h24v24H0z\" fill=\"none\"/></svg>',\n    tick: '<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>',\n    label:\n      '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-tag\"><title>Label</title><path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7\" y2=\"7\"></line></svg>',\n  }; // Get Shopify feature support\n\n  try {\n    theme.Shopify.features = JSON.parse(\n      document.documentElement.querySelector(\"#shopify-features\").textContent\n    );\n  } catch (e) {\n    theme.Shopify.features = {};\n  }\n\n  theme.namespaceFromSection = function (container) {\n    return [\n      \".\",\n      $(container).data(\"section-type\"),\n      $(container).data(\"section-id\"),\n    ].join(\"\");\n  };\n\n  theme.buildGalleryViewer = function (config) {\n    // create viewer\n    var $allContainer = $(\n      '<div class=\"gallery-viewer gallery-viewer--pre-reveal\">'\n    );\n    var $zoomContainer = $('<div class=\"gallery-viewer__zoom\">').appendTo(\n      $allContainer\n    );\n    var $thumbContainer = $('<div class=\"gallery-viewer__thumbs\">').appendTo(\n      $allContainer\n    );\n    var $controlsContainer = $(\n      '<div class=\"gallery-viewer__controls\">'\n    ).appendTo($allContainer);\n    var $close = $(\n      '<a class=\"gallery-viewer__button gallery-viewer__close\" href=\"#\">'\n    )\n      .html(config.close)\n      .appendTo($controlsContainer);\n    var $right = $(\n      '<a class=\"gallery-viewer__button gallery-viewer__prev\" href=\"#\">'\n    )\n      .html(config.prev)\n      .appendTo($controlsContainer);\n    var $left = $(\n      '<a class=\"gallery-viewer__button gallery-viewer__next\" href=\"#\">'\n    )\n      .html(config.next)\n      .appendTo($controlsContainer);\n    var $currentZoomImage = null; // add images\n\n    for (var i = 0; i < config.images.length; i++) {\n      var img = config.images[i];\n      $('<a class=\"gallery-viewer__thumb\" href=\"#\">')\n        .data(\"zoom-url\", img.zoomUrl)\n        .html(img.thumbTag)\n        .appendTo($thumbContainer);\n    }\n\n    if (config.images.length === 1) {\n      $allContainer.addClass(\"gallery-viewer--single-image\");\n    } // helper function for panning an image\n\n    var panZoomImage = function panZoomImage(inputX, inputY) {\n      // do nothing if the image fits, pan if not\n      var doPanX = $currentZoomImage.width() > $allContainer.width();\n      var doPanY = $currentZoomImage.height() > $allContainer.height();\n\n      if (doPanX || doPanY) {\n        var midX = $allContainer.width() / 2;\n        var midY = $allContainer.height() / 2;\n        var offsetFromCentreX = inputX - midX,\n          offsetFromCentreY = inputY - midY; // the offsetMultipler ensures it can only pan to the edge of the image, no further\n\n        var finalOffsetX = 0;\n        var finalOffsetY = 0;\n\n        if (doPanX) {\n          var offsetMultiplierX =\n            ($currentZoomImage.width() - $allContainer.width()) / 2 / midX;\n          finalOffsetX = Math.round(-offsetFromCentreX * offsetMultiplierX);\n        }\n\n        if (doPanY) {\n          var offsetMultiplierY =\n            ($currentZoomImage.height() - $allContainer.height()) / 2 / midY;\n          finalOffsetY = Math.round(-offsetFromCentreY * offsetMultiplierY);\n        }\n\n        $currentZoomImage.css(\n          \"transform\",\n          [\"translate3d(\", finalOffsetX, \"px, \", finalOffsetY, \"px, 0)\"].join(\n            \"\"\n          )\n        );\n      }\n    }; // set up events\n    // event: select thumbnail - zoom it\n\n    $allContainer.on(\n      \"click.galleryViewer select.galleryViewer\",\n      \".gallery-viewer__thumb\",\n      function (evt) {\n        evt.preventDefault(); // set active\n\n        $(this)\n          .addClass(\"gallery-viewer__thumb--active\")\n          .siblings(\".gallery-viewer__thumb--active\")\n          .removeClass(\"gallery-viewer__thumb--active\"); // replace zoom image\n\n        $currentZoomImage = $(\n          '<img class=\"gallery-viewer__zoom-image\" alt=\"\" style=\"visibility: hidden\">'\n        );\n        $currentZoomImage\n          .on(\"load\", function () {\n            $(this).off(\"load\");\n            $(this).css({\n              visibility: \"\",\n              top: $allContainer.height() / 2 - $(this).height() / 2,\n              left: $allContainer.width() / 2 - $(this).width() / 2,\n            });\n            panZoomImage(evt.clientX, evt.clientY);\n          })\n          .attr(\"src\", $(this).data(\"zoom-url\").replace(\"_small\", \"_\"+Math.round($(document.body).innerWidth()*1)+\"x\" ));\n        $zoomContainer.html($currentZoomImage);\n      }\n    ); // event: pan\n\n    $allContainer.on(\n      \"mousemove.galleryViewer touchmove.galleryViewer\",\n      function (evt) {\n        if (evt.type === \"touchmove\") {\n          var touch = evt.touches[0];\n          panZoomImage(touch.clientX, touch.clientY);\n        } else {\n          panZoomImage(evt.clientX, evt.clientY);\n        }\n      }\n    ); // event: prevent pan while swiping thumbnails\n\n    $allContainer.on(\n      \"touchmove.galleryViewer\",\n      \".gallery-viewer__thumbs\",\n      function (evt) {\n        evt.stopPropagation();\n      }\n    ); // event: next thumbnail\n\n    $allContainer.on(\n      \"click.galleryViewer\",\n      \".gallery-viewer__next\",\n      function (evt) {\n        evt.preventDefault();\n        var $next = $thumbContainer\n          .find(\".gallery-viewer__thumb--active\")\n          .next();\n\n        if ($next.length === 0) {\n          $next = $thumbContainer.find(\".gallery-viewer__thumb:first\");\n        }\n\n        $next.trigger(\"select\");\n      }\n    ); // event: previous thumbnail\n\n    $allContainer.on(\n      \"click.galleryViewer\",\n      \".gallery-viewer__prev\",\n      function (evt) {\n        evt.preventDefault();\n        var $prev = $thumbContainer\n          .find(\".gallery-viewer__thumb--active\")\n          .prev();\n\n        if ($prev.length === 0) {\n          $prev = $thumbContainer.find(\".gallery-viewer__thumb:last\");\n        }\n\n        $prev.trigger(\"select\");\n      }\n    ); // event: close\n\n    $allContainer.on(\n      \"click.galleryViewer\",\n      \".gallery-viewer__close\",\n      function (evt) {\n        evt.preventDefault(); // destroy events\n\n        $allContainer.off(\".galleryViewer\"); // begin exit transition\n\n        $allContainer.addClass(\"gallery-viewer--transition-out\"); // remove after transition\n\n        var transitionDelay = $allContainer.css(\"transition-duration\");\n        transitionDelay =\n          transitionDelay.indexOf(\"ms\") > -1\n            ? parseFloat(transitionDelay)\n            : parseFloat(transitionDelay) * 1000;\n        setTimeout(function () {\n          $allContainer.remove();\n          $(\"html\").removeClass(\"gallery-viewer-open\");\n        }, transitionDelay);\n      }\n    ); // initialise\n    // - clear any remnants of failed previous closure\n\n    $(\"html\").removeClass(\"gallery-viewer-open\");\n    $(\".gallery-viewer\").remove(); // - insert into page\n\n    $(\"html\").addClass(\"gallery-viewer-open\");\n    $allContainer.appendTo(\"body\"); // - select first thumbnail\n\n    $thumbContainer\n      .find(\n        \".gallery-viewer__thumb:eq(\" +\n        (config.current > 0 ? config.current : 0) +\n        \")\"\n      )\n      .trigger(\"select\"); // - reveal\n\n    setTimeout(function () {\n      $allContainer.removeClass(\"gallery-viewer--pre-reveal\");\n    }, 10);\n  };\n\n  theme.FeaturedProductSection = new (function () {\n    this.onSectionLoad = function (target) {\n      $('[name=\"id\"]', target).trigger(\"optionate\");\n      theme.classUpTextLinks(target);\n      theme.initProductGallery(target);\n    };\n\n    this.onSectionUnload = function (target) {\n      theme.destroyProductGallery(target);\n      theme.OptionManager.unloadProductOptions($('[name=\"id\"]', target));\n      $(\".slideshow\", target).slick(\"unslick\");\n    };\n  })();\n  /* Product Media\n   *\n   * Load and destroy:\n   * theme.ProductMedia.init(galleryContainer, {\n   *   onModelViewerPlay: function(e){\n   *     $(e.target).closest('.slick-slider').slick('slickSetOption', 'swipe', false);\n   *   },\n   *   onModelViewerPause: function(e){\n   *     $(e.target).closest('.slick-slider').slick('slickSetOption', 'swipe', true);\n   *   },\n   *   onPlyrPlay: function(e){\n   *     $(e.target).closest('.slick-slider').slick('slickSetOption', 'swipe', false);\n   *   },\n   *   onPlyrPause: function(e){\n   *     $(e.target).closest('.slick-slider').slick('slickSetOption', 'swipe', true);\n   *   },\n   * });\n   *\n   * theme.ProductMedia.destroy(galleryContainer);\n   *\n   * Trigger mediaVisible and mediaHidden events based on UI\n   * $slickSlideshow.on('afterChange', function(evt, slick, current){\n   *   $('.product-media--activated').removeClass('product-media--activated').trigger('mediaHidden');\n   *   $('.product-media', slick.$slides[current]).addClass('product-media--activated').trigger('mediaVisible');\n   * });\n   */\n\n  theme.ProductMedia = new (function () {\n    var _ = this;\n\n    _._setupShopifyXr = function () {\n      if (!window.ShopifyXR) {\n        document.addEventListener(\n          \"shopify_xr_initialized\",\n          _._setupShopifyXr.bind(this)\n        );\n        return;\n      }\n\n      window.ShopifyXR.addModels(JSON.parse($(this).html()));\n      window.ShopifyXR.setupXRElements();\n    };\n\n    this.init = function (container, callbacks) {\n      var callbacks = callbacks || {},\n        _container = container; // set up video media elements with a controller\n      // console.log(callbacks);\n\n      $(container)\n        .find(\".product-media--video\")\n        .each(function (index) {\n          var enableLooping = $(this).data(\"enable-video-looping\"),\n            element = $(this).find(\"iframe, video\")[0];\n          if (element.tagName === \"VIDEO\") {\n            // set up a controller for Plyr video\n            window.Shopify.loadFeatures([\n              {\n                name: \"video-ui\",\n                version: \"1.0\",\n                onLoad: function () {\n                  var playerObj = {\n                    playerType: \"html5\",\n                    element: element,\n                  };\n\n                  playerObj.play = function () {\n                    this.plyr.play();\n                  }.bind(playerObj);\n\n                  playerObj.pause = function () {\n                    this.plyr.pause();\n                  }.bind(playerObj);\n\n                  playerObj.destroy = function () {\n                    this.plyr.destroy();\n                  }.bind(playerObj);\n\n                  var enableControls = $(this).data(\"enable-video-controls\");\n                  const plyrOptions = {\n                    controls: [\n                      \"play\",\n                      \"progress\",\n                      \"mute\",\n                      \"volume\",\n                      \"play-large\",\n                      \"fullscreen\",\n                    ],\n                    autoplay: true,\n                    muted: true,\n                    loop: {\n                      active: enableLooping,\n                    },\n                    hideControlsOnPause: true,\n                    iconUrl:\n                      \"//cdn.shopify.com/shopifycloud/shopify-plyr/v1.0/shopify-plyr.svg\",\n                    tooltips: {\n                      controls: false,\n                      seek: true,\n                    },\n                  };\n\n                  if (!enableControls) {\n                    plyrOptions.controls = [];\n                  }\n                  playerObj.plyr = new Shopify.Plyr(element, plyrOptions);\n                  $(this)\n                    .data(\"player\", playerObj)\n                    .addClass(\"product-media--video-loaded\"); // callbacks for Plyr playback\n\n                  if (callbacks.onPlyrPlay) {\n                    $(element).on(\"playing\", callbacks.onPlyrPlay);\n                  }\n\n                  if (callbacks.onPlyrPause) {\n                    $(element).on(\"pause ended\", callbacks.onPlyrPause);\n                  }\n\n                  if (callbacks.onPlyrInit) {\n                    callbacks.onPlyrInit(playerObj);\n                  }\n                }.bind(this),\n              },\n            ]);\n            theme.loadStyleOnce(\n              \"https://cdn.shopify.com/shopifycloud/shopify-plyr/v1.0/shopify-plyr.css\"\n            );\n          } else if (element.tagName === \"IFRAME\") {\n            if (\n              /^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(\n                element.src\n              )\n            ) {\n              // set up a controller for YouTube video\n              var temp = window.onYouTubeIframeAPIReady;\n\n              var loadYoutubeVideo = function () {\n                var playerObj = {\n                  playerType: \"youtube\",\n                  element: element,\n                };\n                var videoId = $(this).data(\"video-id\");\n                playerObj.player = new YT.Player(element, {\n                  videoId: videoId,\n                  events: {\n                    onStateChange: function onStateChange(event) {\n                      if (\n                        event.data === YT.PlayerState.ENDED &&\n                        enableLooping\n                      ) {\n                        event.target.seekTo(0);\n                      }\n                    },\n                  },\n                });\n\n                playerObj.play = function () {\n                  this.player.playVideo();\n                }.bind(playerObj);\n\n                playerObj.pause = function () {\n                  this.player.pauseVideo();\n                }.bind(playerObj);\n\n                playerObj.destroy = function () {\n                  this.player.destroy();\n                }.bind(playerObj);\n\n                $(this)\n                  .data(\"player\", playerObj)\n                  .addClass(\"product-media--video-loaded\");\n\n                if (callbacks.onYouTubeInit) {\n                  callbacks.onYouTubeInit(playerObj);\n                }\n              }.bind(this);\n\n              window.onYouTubeIframeAPIReady = function () {\n                temp();\n                loadYoutubeVideo();\n              };\n\n              theme.loadScriptOnce(\"https://www.youtube.com/iframe_api\");\n            }\n          }\n        }); // when any media appears\n\n      $(container).on(\n        \"mediaVisible\",\n        \".product-media--video-loaded, .product-media--model-loaded\",\n        function () {\n          // autoplay all media on larger screens\n          // if ($(window).width() >= 768) {\n          //   $(this).data(\"player\").play();\n          // } // update view-in-space\n\n          if ($(this).hasClass(\"product-media--model\")) {\n            $(\".view-in-space\", _container).attr(\n              \"data-shopify-model3d-id\",\n              $(this).data(\"model-id\")\n            );\n          }\n        }\n      ); // when any media is hidden\n\n      $(container).on(\n        \"mediaHidden\",\n        \".product-media--video-loaded, .product-media--model-loaded\",\n        function () {\n          // pause all media\n          $(this).data(\"player\").pause();\n        }\n      ); // necessary callbacks\n\n      if (callbacks.onVideoVisible) {\n        $(container).on(\n          \"mediaVisible\",\n          \".product-media--video-loaded\",\n          callbacks.onVideoVisible\n        );\n      }\n\n      if (callbacks.onVideoHidden) {\n        $(container).on(\n          \"mediaHidden\",\n          \".product-media--video-loaded\",\n          callbacks.onVideoHidden\n        );\n      }\n\n      $(\"model-viewer\", container).each(function () {\n        if (callbacks.onModelViewerPlay) {\n          $(this).on(\n            \"shopify_model_viewer_ui_toggle_play\",\n            callbacks.onModelViewerPlay\n          );\n        }\n\n        if (callbacks.onModelViewerPause) {\n          $(this).on(\n            \"shopify_model_viewer_ui_toggle_pause\",\n            callbacks.onModelViewerPause\n          );\n        }\n      }); // set up a 3d model when it first appears\n\n      $(container).on(\n        \"mediaVisible mediaVisibleInitial\",\n        \".product-media--model:not(.product-media--model-loaded)\",\n        function (e) {\n          var element = $(this).find(\"model-viewer\")[0],\n            autoplay = e.type != \"mediaVisibleInitial\"; // load viewer\n\n          theme.loadStyleOnce(\n            \"https://cdn.shopify.com/shopifycloud/model-viewer-ui/assets/v1.0/model-viewer-ui.css\"\n          );\n          window.Shopify.loadFeatures([\n            {\n              name: \"model-viewer-ui\",\n              version: \"1.0\",\n              onLoad: function () {\n                $(this).data(\"player\", new Shopify.ModelViewerUI(element)); // set class and re-trigger visible event now loaded\n\n                $(this).addClass(\"product-media--model-loaded\");\n\n                if (callbacks.onModelViewerInit) {\n                  callbacks.onModelViewerInit(element);\n                }\n\n                if (autoplay) {\n                  $(this).trigger(\"mediaVisible\");\n                }\n              }.bind(this),\n            },\n          ]);\n        }\n      ); // load AR viewer\n\n      if ($(\".model-json\", container).length) {\n        window.Shopify.loadFeatures([\n          {\n            name: \"shopify-xr\",\n            version: \"1.0\",\n            onLoad: _._setupShopifyXr.bind($(\".model-json\", container)),\n          },\n        ]);\n      } // pause video when a 3d model is launched in AR\n\n      $(document).on(\"shopify_xr_launch\", function () {\n        $(\".product-media--video-loaded\").each(function () {\n          $(this).data(\"player\").pause();\n        });\n      }); // 3d model in first place - start in paused mode\n\n      setTimeout(\n        function () {\n          $(\".product-media:first\", this)\n            .filter(\".product-media--model\")\n            .trigger(\"mediaVisibleInitial\");\n        }.bind(container),\n        50\n      );\n    };\n\n    this.destroy = function (container) {\n      $(document).off(\"shopify_xr_launch\");\n      $(container).off(\"mediaVisible mediaVisibleInitial mediaHidden\");\n      $(\n        \".product-media--video-loaded, .product-media--model-loaded\",\n        container\n      ).each(function () {\n        $(this).data(\"player\").destroy();\n      });\n      $(\".product-media--video video\", container).off(\"playing pause ended\");\n      $(\"model-viewer\", container).off(\n        \"shopify_model_viewer_ui_toggle_play shopify_model_viewer_ui_toggle_pause\"\n      );\n    };\n  })();\n\n  theme.productGallerySlideshowTabFix = function (slides, current) {\n    // tabindex everything to prevent tabbing into hidden slides\n    $(slides[current])\n      .find(\"a, input, button, select, iframe, video, model-viewer, [tabindex]\")\n      .each(function () {\n        if (\n          typeof $(this).data(\"theme-slideshow-original-tabindex\") !==\n          \"undefined\"\n        ) {\n          if ($(this).data(\"theme-slideshow-original-tabindex\") === false) {\n            $(this).removeAttr(\"tabindex\");\n          } else {\n            $(this).attr(\n              \"tabindex\",\n              $(this).data(\"theme-slideshow-original-tabindex\")\n            );\n          }\n        } else {\n          $(this).removeAttr(\"tabindex\");\n        }\n      });\n    $(slides)\n      .not(slides[current])\n      .find(\"a, input, button, select, iframe, video, model-viewer, [tabindex]\")\n      .each(function () {\n        if (\n          typeof $(this).data(\"theme-slideshow-original-tabindex\") ===\n          \"undefined\"\n        ) {\n          $(this).data(\n            \"theme-slideshow-original-tabindex\",\n            typeof $(this).attr(\"tabindex\") !== \"undefined\"\n              ? $(this).attr(\"tabindex\")\n              : false\n          );\n          $(this).attr(\"tabindex\", \"-1\");\n        }\n      });\n  }; // container must be an element higher up the tree than the gallery\n\n  theme.initProductGallery = function (container) {\n    var $gallery = $(\".gallery\", container);\n\n    if ($gallery.hasClass(\"gallery-initialised\")) {\n      return;\n    }\n\n    $gallery.addClass(\"gallery-initialised\"); /// Init main image slideshow\n\n    $(\".product-slideshow\", container).each(function () {\n      var $slideshow = $(this)\n        .on(\"init\", function (evt, slick) {\n          $(\".lazyload--manual\", this)\n            .removeClass(\"lazyload--manual\")\n            .addClass(\"lazyload\");\n        })\n        .on(\"beforeChange\", function (evt, slick, current, next) {\n          $($(this).closest(\".gallery\").find(\".thumbnails a\")[next]).trigger(\n            \"selectFromSlick\"\n          );\n        })\n        .slick({\n          autoplay: false,\n          fade: true,\n          infinite: false,\n          useTransform: true,\n          dots: false,\n          arrows: true,\n          appendArrows: $(this).parent()\n            .siblings(\".slideshow-controls\")\n            .find(\".slideshow-controls__arrows\"),\n          appendDots: $(this).parent()\n            .siblings(\".slideshow-controls\")\n            .find(\".slideshow-controls__dots\"),\n          prevArrow:\n            '<button type=\"button\" class=\"slick-product-prev\" aria-label=\"' +\n            theme.strings.previous +\n            '\">' +\n            theme.icons.chevronLeft +\n            \"</button>\",\n          nextArrow:\n            '<button type=\"button\" class=\"slick-product-next\" aria-label=\"' +\n            theme.strings.next +\n            '\">' +\n            theme.icons.chevronRight +\n            \"</button>\",\n          responsive: [\n            {\n              breakpoint: 768,\n              settings: {\n                dots: true,\n                arrows: true,\n                fade: false,\n              },\n            },\n          ],\n        }); // media initialisation\n\n      theme.ProductMedia.init($gallery, {\n        onPlyrInit: function onPlyrInit() {\n          theme.productGallerySlideshowTabFix(\n            $slideshow.slick(\"getSlick\").$slides,\n            $slideshow.slick(\"getSlick\").currentSlide\n          );\n        },\n        onYoutubeInit: function onYoutubeInit() {\n          theme.productGallerySlideshowTabFix(\n            $slideshow.slick(\"getSlick\").$slides,\n            $slideshow.slick(\"getSlick\").currentSlide\n          );\n        },\n        onModelViewerInit: function onModelViewerInit(element) {\n          theme.productGallerySlideshowTabFix(\n            $slideshow.slick(\"getSlick\").$slides,\n            $slideshow.slick(\"getSlick\").currentSlide\n          );\n        },\n        // onVideoVisible: function onVideoVisible(e) {\n        //   if ($(window).width() >= 768) {\n        //     $(e.target)\n        //       .closest(\".slick-slider\")\n        //       .slick(\"slickSetOption\", \"swipe\", false);\n        //   }\n        // },\n        onVideoHidden: function onVideoHidden(e) {\n          if ($(window).width() >= 768) {\n            $(e.target)\n              .closest(\".slick-slider\")\n              .slick(\"slickSetOption\", \"swipe\", true);\n          }\n        },\n        // onPlyrPlay: function onPlyrPlay(e) {\n        //   $(e.target)\n        //     .closest(\".slick-slider\")\n        //     .slick(\"slickSetOption\", \"swipe\", false);\n        // },\n        onPlyrPause: function onPlyrPause(e) {\n          $(e.target)\n            .closest(\".slick-slider\")\n            .slick(\"slickSetOption\", \"swipe\", true);\n        },\n        onModelViewerPlay: function onModelViewerPlay(e) {\n          // prevent swiping\n          $(e.target)\n            .closest(\".slick-slider\")\n            .slick(\"slickSetOption\", \"swipe\", false); // prevent left/right key control\n\n          $(e.target)\n            .closest(\".slick-slider\")\n            .slick(\"slickSetOption\", \"accessibility\", false);\n        },\n        onModelViewerPause: function onModelViewerPause(e) {\n          $(e.target)\n            .closest(\".slick-slider\")\n            .slick(\"slickSetOption\", \"swipe\", true);\n          $(e.target)\n            .closest(\".slick-slider\")\n            .slick(\"slickSetOption\", \"accessibility\", true);\n        },\n      }); // fix tabindex for first slide\n\n      theme.productGallerySlideshowTabFix(\n        $slideshow.slick(\"getSlick\").$slides,\n        $slideshow.slick(\"getSlick\").currentSlide\n      );\n      $slideshow.on(\"afterChange\", function (evt, slick, current) {\n        $(\".product-media--activated\")\n          .trigger(\"mediaHidden\");\n        $(\".product-media\", slick.$slides[current])\n          .trigger(\"mediaVisible\"); // fix tabbing\n        theme.productGallerySlideshowTabFix(slick.$slides, current); // resize quickbuy\n        $(this).closest(\".quickbuy-container\").trigger(\"changedsize\");\n      }); // if in quickbuy, trigger resize after slideshow change\n\n      if ($(container).closest(\".collection-listing\").length > 0) {\n        $slideshow.on(\"afterChange\", function () {\n          $(this).closest(\".quickbuy-container\").trigger(\"changedsize\");\n        });\n      }\n    });\n    var $thumbnails = $(\".thumbnails\", container);\n\n    if ($thumbnails.length) {\n      var carouselVisibleItemCount = 6,\n        isCarousel = false; /// Screen-width based initialisation of thumbnail carousels\n\n      var assessCarousel = function assessCarousel() {\n        if ($thumbnails.is(\":visible\")) {\n          // thumbnails are visible (i.e. not mobile)\n          if (\n            Math.abs($thumbnails.outerWidth() - $thumbnails.parent().width()) >\n            20\n          ) {\n            // thumbnail container is drastically different in size to main image - destroy carousel\n            if (isCarousel) {\n              isCarousel = false;\n              theme.beforeCarouselUnloadEventBlockFix($thumbnails);\n              $thumbnails\n                .removeClass(\"owl-carousel\")\n                .data(\"owl.carousel\")\n                .destroy();\n            }\n          } else {\n            // thumbnails are in a column - init carousel\n            if (!isCarousel) {\n              isCarousel = true; // fix for event propagation in nested owl carousels\n\n              theme.beforeCarouselLoadEventBlockFix($thumbnails);\n              $thumbnails\n                .addClass(\"owl-carousel\")\n                .on(\"initialized.owl.carousel\", function () {\n                  $(\".lazyload--manual\", this)\n                    .removeClass(\"lazyload--manual\")\n                    .addClass(\"lazyload\");\n                })\n                .owlCarousel({\n                  items: carouselVisibleItemCount,\n                  dots: false,\n                  margin: 7,\n                });\n            }\n          }\n        }\n      };\n\n      $(window).on(\"debouncedresize.productGallery\", assessCarousel);\n      assessCarousel();\n      $(container).data(\"assessCarouselCallback\", assessCarousel); /// Thumbnail click - in carousel\n\n      $(\".gallery\", container).on(\n        \"click select selectFromSlick\",\n        \".thumbnails.owl-carousel a\",\n        function (e) {\n          e.preventDefault();\n          var $carouselItem = $(this).parent();\n\n          if (e.type != \"selectFromSlick\") {\n            // from click or variant image? change main image\n            $(this)\n              .closest(\".gallery\")\n              .find(\".slideshow\")\n              .slick(\"slickGoTo\", $carouselItem.index());\n          } else {\n            // change to active state comes from the main slideshow change event\n            // show the highlight\n            $(this)\n              .addClass(\"selected\")\n              .parent()\n              .siblings()\n              .find(\"a\")\n              .removeClass(\"selected\"); // adjust thumbnail carousel if not on-screen\n\n            var shelfStart = $carouselItem\n              .parent()\n              .children(\".active:first\")\n              .index();\n            var shelfEnd = shelfStart + carouselVisibleItemCount - 1;\n            var currentIndex = $carouselItem.index();\n\n            if (currentIndex < shelfStart) {\n              // selected is to left of shelf - move carousel right to show\n              $carouselItem\n                .closest(\".owl-carousel\")\n                .trigger(\"to.owl.carousel\", currentIndex);\n            } else if (currentIndex > shelfEnd) {\n              // selected is to right of shelf - move carousel left to show\n              $carouselItem\n                .closest(\".owl-carousel\")\n                .trigger(\n                  \"to.owl.carousel\",\n                  Math.max(0, currentIndex - carouselVisibleItemCount + 1)\n                );\n            }\n          }\n        }\n      ); /// Thumbnail click - beside\n\n      $(\".gallery\", container).on(\n        \"click select selectFromSlick\",\n        \" .thumbnails:not(.owl-carousel) a\",\n        function (e) {\n          e.preventDefault();\n\n          if (e.type != \"selectFromSlick\") {\n            // from click or variant image? change main image\n            $(this)\n              .closest(\".gallery\")\n              .find(\".slideshow\")\n              .slick(\"slickGoTo\", $(this).index());\n          } else {\n            // change to active state comes from the main slideshow change event\n            $(this)\n              .addClass(\"selected\")\n              .siblings(\".selected\")\n              .removeClass(\"selected\");\n          }\n        }\n      );\n    }\n  };\n\n  theme.destroyProductGallery = function (container) {\n    $(window).off(\".productGallery\");\n    var $gallery = $(\".gallery\", container).off(\"click select selectFromSlick\");\n    theme.ProductMedia.destroy($gallery);\n    $(\".slick-slider\", container)\n      .slick(\"unslick\")\n      .off(\"init beforeChange afterChange\");\n    $(\".owl-carousel\", container).each(function () {\n      theme.beforeCarouselUnloadEventBlockFix(this);\n      $(this).data(\"owl.carousel\").destroy();\n    });\n  };\n\n  theme.CollectionTemplateSection = new (function () {\n    this.onSectionLoad = function (target) {\n      theme.initToggleTargets();\n      theme.classUpTextLinks(target); /// View modes for collection page\n\n      $(target).on(\"click\", \"#view-as-tiles\", function () {\n        if (!$(this).hasClass(\"active\")) {\n          $(this).addClass(\"active\");\n          $(\"#view-as-stream\").removeClass(\"active\");\n          theme.saveGridStreamChoice(\"grid\");\n          var $listing = $(\".collection-listing-stream\")\n            .addClass(\"collection-listing\")\n            .removeClass(\"collection-listing-stream\");\n          $(window).trigger(\"debouncedresize\");\n        }\n\n        return false;\n      });\n      $(target).on(\"click\", \"#view-as-stream\", function () {\n        if (!$(this).hasClass(\"active\")) {\n          $(this).addClass(\"active\");\n          $(\"#view-as-tiles\").removeClass(\"active\");\n          theme.saveGridStreamChoice(\"stream\");\n          var $listing = $(\".collection-listing\")\n            .removeClass(\"collection-listing\")\n            .addClass(\"collection-listing-stream\"); // reset styling on blocks\n\n          $(window).trigger(\"debouncedresize\");\n          $listing.find(\".block-inner, .primary-image\").removeAttr(\"style\");\n        }\n\n        return false;\n      }); /// Stream/grid view - saved setting\n\n      if (\n        $(\"#view-as-stream, #view-as-tiles\", target).length > 0 &&\n        theme.getGridStreamChoice() != null\n      ) {\n        if (theme.getGridStreamChoice() == \"stream\") {\n          $(\"#view-as-stream\").trigger(\"click\");\n        } else {\n          $(\"#view-as-tiles\").trigger(\"click\");\n        }\n      } /// Collection sorting\n\n      var $sortBy = $(\"#sort-by\", target);\n\n      if ($sortBy.length > 0) {\n        var queryParams = {};\n\n        if (location.search.length) {\n          for (\n            var aKeyValue,\n            i = 0,\n            aCouples = location.search.substr(1).split(\"&\");\n            i < aCouples.length;\n            i++\n          ) {\n            aKeyValue = aCouples[i].split(\"=\");\n\n            if (aKeyValue.length > 1) {\n              queryParams[decodeURIComponent(aKeyValue[0])] =\n                decodeURIComponent(aKeyValue[1]);\n            }\n          }\n        }\n\n        $sortBy.on(\"change\", function () {\n          queryParams.sort_by = $(this).val();\n          location.search = $.param(queryParams);\n        });\n      } /// If a tag is active in a group, other tags within that group must be links to that tag only, within that group.\n\n      $(\".multi-tag-row .tags\", target).each(function () {\n        var $active = $(this).find(\"li.active\");\n        $(this)\n          .find(\"li:not(.active) a\")\n          .each(function () {\n            var href = $(this).attr(\"href\");\n            $active.each(function () {\n              var tag = $(this).data(\"tag\");\n              href = href.replace(\"+\" + tag, \"\").replace(tag + \"+\", \"\"); //Collection\n\n              href = href.replace(\"%2B\" + tag, \"\").replace(tag + \"%2B\", \"\"); //Vendor\n            });\n            $(this).attr(\"href\", href);\n          });\n      }); /// Style dropdowns\n\n      theme.select2.init($(\".filters .styled-select select\", target));\n      theme.ProductBlockManager.loadImages(target);\n    };\n\n    this.onSectionUnload = function (target) {\n      theme.select2.destroyAllIn(target);\n      $(\"#sort-by\", target).off(\"change\");\n      $(target).off(\"click\");\n      theme.destroyProductGallery(target); // Clear grid/stream preference\n\n      theme.saveGridStreamChoice(null);\n    };\n  })();\n  theme.ProductTemplateSection = new (function () {\n    this.onSectionLoad = function (target) {\n      theme.initToggleTargets();\n      theme.classUpTextLinks(target); /// Init store availability if applicable\n\n      if ($(\"[data-store-availability-container]\", target).length) {\n        this.storeAvailability = new theme.StoreAvailability(\n          $(\"[data-store-availability-container]\", target)[0]\n        );\n      } /// Main product dropdown\n\n      $('[name=\"id\"]', target).trigger(\"optionate\");\n      theme.initProductGallery(target);\n      theme.ProductBlockManager.loadImages(target); // click review rating under title\n\n      $(\".theme-product-reviews\", target).on(\"click\", \"a\", function () {\n        $(\"html,body\").animate(\n          {\n            scrollTop: $($(this).attr(\"href\")).offset().top,\n          },\n          1000\n        );\n        return false;\n      });\n    };\n\n    this.onSectionUnload = function (target) {\n      theme.destroyProductGallery(target);\n      theme.OptionManager.unloadProductOptions($('[name=\"id\"]', target));\n      $(\".theme-product-reviews\", target).off(\"click\");\n      $(\".size-chart-link\", target).off(\"click\");\n\n      if (this.storeAvailability) {\n        this.storeAvailability.onSectionUnload();\n      }\n    };\n  })();\n  theme.BlogTemplateSection = new (function () {\n    this.onSectionLoad = function (target) {\n      theme.initToggleTargets();\n      theme.classUpTextLinks(target);\n    };\n  })();\n  theme.CartTemplateSection = new (function () {\n    var _ = this;\n\n    this.updateFreeCartBar = function ($newDom) {\n      var $cartTotal = $newDom.find(\".checkout-subtotal-container__right .saso-cart-original-total span\");\n      var $freeCartBar = $(\"[data-free-delivery-cart-bar]\");\n\n      if ($($freeCartBar)) {\n        var cartTotalValue = $cartTotal.text().split(\" \")[0]; // remove currency\n        if (cartTotalValue.includes(\"\u20AC\")) {\n          cartTotalValue = cartTotalValue.replaceAll(\"\u20AC\", \" \").split(\" \")[1];\n        }\n\n        cartTotalValue = parseFloat(cartTotalValue.replace(\".\", \"\").replace(\",\", \"\") / 100, 2); // remove decimals\n\n        var discount = 0;\n\n        var diffToFreeCart = $freeCartBar.data(\"cart-delivery-limit\");\n        var showDiff = $freeCartBar.data(\"show-diff\");\n\n        if ((cartTotalValue + discount) - diffToFreeCart >= 0) {\n          //Success\n          $freeCartBar.addClass(\"success\");\n        } else {\n          //Not Success\n          $freeCartBar.removeClass(\"success\");\n\n          //Show difference\n          if (showDiff) {\n            var remaining = theme.Shopify.formatMoney(Math.abs(cartTotalValue - diffToFreeCart).toFixed(2), theme.money_format);\n            $freeCartBar.find('span').html(remaining);\n          } else {\n            $freeCartBar.find('span').html(diffToFreeCart);\n          }\n        }\n      }\n    },\n\n      this.updateCart = function (params, successCallback) {\n        if (_.cartXhr) {\n          _.cartXhr.abort();\n        }\n\n        if (_.cartRefreshXhr) {\n          _.cartRefreshXhr.abort();\n        }\n\n        _.cartXhr = $.ajax({\n          type: \"POST\",\n          url: theme.routes.cart_change_url + \".js\",\n          data: params,\n          dataType: \"json\",\n          success: function success(data) {\n            if (_.cartRefreshXhr) {\n              _.cartRefreshXhr.abort();\n            } // fetch new html for the page\n            if (data) {\n              _.cartItemCount = data.item_count;\n            }\n            _.cartRefreshXhr = $.ajax({\n              type: \"GET\",\n              url: theme.routes.cart_url + \"?view=ajax\",\n              success: function success(data) {\n                var toReplace = [\".cart-item-list\"];\n                var $newDom = $(\"<div>\" + data + \"</div>\");\n                $newDom.find(\".fade-in\").removeClass(\"fade-in\");\n                var $cartItemsCount = $(\"[data-section-type='cart-template'] h1.majortitle span\");\n                var $cartIconCount = $(\".cart-summary .cart-link__count\");\n\n                $cartItemsCount.html(_.cartItemCount);\n                $cartIconCount.html(_.cartItemCount);\n\n                for (var i = 0; i < toReplace.length; i++) {\n                  _.replacingContent = true; // to avoid triggering change events when focus is lifted before DOM replacement\n\n                  $('[data-section-type=\"cart-template\"] ' + toReplace[i]).html(\n                    $newDom.find(toReplace[i]).html()\n                  );\n                  _.replacingContent = false;\n                }\n\n                _.updateFreeCartBar($newDom);\n                successCallback();\n              },\n              error: function error(data) {\n                if (data.statusText != \"abort\") {\n                  console.log(\"Error refreshing page\");\n                }\n              },\n              complete: function complete() {\n                _.cartRefreshXhr = null;\n              },\n            });\n          },\n          error: function error(data) {\n            if (data.statusText != \"abort\") {\n              console.log(\"Error processing update\");\n            }\n          },\n          complete: function complete() {\n            _.cartXhr = null;\n          },\n        });\n      };\n\n    this.onSectionLoad = function (container) {\n      theme.classUpTextLinks(container); // terms and conditions checkbox\n\n      $(document).on(\n        \"click.cartTemplateSection\",\n        '#cartform [name=\"checkout\"], .additional-checkout-buttons input, a[href*=\"/checkout\"]',\n        function () {\n            if ($(\"#cartform input#terms\", container).length > 0 && $(\"#cartform input#terms:checked\").length == 0) {\n              document.getElementById(\"cart_terms_confirmation_modal\")?.modalOpen();\n              return false;\n            } else if ($(this).attr(\"type\") == \"button\") {\n              var cart_upsell_modal = document.getElementById(\"cart_upsell_modal\");\n              if (cart_upsell_modal) {\n                cart_upsell_modal.modalOpen();\n                return false;\n              }\n            }\n          }\n        );\n\n      if ($(container).data(\"ajax-update\")) {\n        $(container).on(\n          \"keyup.cartTemplateSection change.cartTemplateSection changeFromButton.cartTemplateSection\",\n          \".cart-item__quantity-input\",\n          function (evt) {\n            if (_.replacingContent) {\n              return;\n            }\n\n            if (\n              $(this).data(\"initial-value\") &&\n              $(this).data(\"initial-value\") == $(this).val()\n            ) {\n              return;\n            }\n\n            if ($(this).val().length == 0 || $(this).val() == \"0\") {\n              return;\n            } // focus on -/+ button or input, depending on source of event\n\n            var toFocusId;\n\n            if (evt.type === \"changeFromButton\") {\n              toFocusId = $(evt.data).attr(\"id\");\n            } else {\n              toFocusId = $(this).attr(\"id\");\n            }\n\n            _.updateCart(\n              {\n                line: $(this).data(\"line\"),\n                quantity: $(this).val(),\n              },\n              function () {\n                // after update, set focus\n                $(\"#\" + toFocusId).focus();\n              }\n            );\n          }\n        );\n        $(container).on(\n          \"click.cartTemplateSection\",\n          \".quantity-down, .quantity-up\",\n          function (evt) {\n            var $input = $(this).closest(\".quantity\").find(\"input\");\n            var step;\n            if ($input.val() == 1) {\n              step = $input.attr(\"step\") ? parseInt($input.attr(\"step\")) - 1 : 1;\n            } else {\n              step = $input.attr(\"step\") ? parseInt($input.attr(\"step\")) : 1;\n            }\n\n            if ($(this).hasClass(\"quantity-down\")) {\n              $input\n                .val(Math.max(step, parseInt($input.val()) - step))\n                .trigger(\"changeFromButton\", {\n                  data: this,\n                });\n            } else {\n              $input\n                .val(parseInt($input.val()) + step)\n                .trigger(\"changeFromButton\", {\n                  data: this,\n                });\n            }\n\n            return false;\n          }\n        );\n      }\n\n      theme.cartNoteMonitor.load($('.checkout-note [name=\"note\"]', container));\n      $(container).on(\n        \"click.cartTemplateSection\",\n        \"button[data-toggle-shipping]\",\n        function () {\n          $(\"#shipping-calculator\").toggle();\n          var alt = $(this).data(\"toggle-html\");\n          $(this).data(\"toggle-html\", $(this).html());\n          $(this).html(alt);\n          return false;\n        }\n      );\n    };\n\n    this.onSectionUnload = function (container) {\n      $(document).off(\".cartTemplateSection\");\n      $(container).off(\".cartTemplateSection\");\n      theme.cartNoteMonitor.unload(\n        $('.checkout-note [name=\"note\"]', container)\n      );\n    };\n  })();\n  theme.ImageWithTextOverlaySection = new (function () {\n    var _ = this;\n\n    _.checkForHeaderHeightSubtraction = function () {\n      $(\n        \".section-image-with-text-overlay .height--full-minus-header-height\"\n      ).each(function () {\n        $(this).height($(window).height() - $(\".section-header\").height());\n      });\n    };\n\n    this.onSectionLoad = function (container) {\n      $(\".height--full\", container).each(function () {\n        if ($(this).closest(\".section-image-with-text-overlay\").index() == 0) {\n          $(this).addClass(\"height--full-minus-header-height\");\n\n          _.checkForHeaderHeightSubtraction();\n\n          $(window)\n            .off(\"debouncedresize.imageWithTextOverlaySection\")\n            .on(\n              \"debouncedresize.imageWithTextOverlaySection\",\n              _.checkForHeaderHeightSubtraction\n            );\n        }\n      });\n    };\n\n    this.onSectionUnload = function (container) {\n      $(window).off(\".imageWithTextOverlaySection\");\n    };\n  })();\n  theme.SlideshowSection = new (function () {\n    var _ = this;\n\n    _.checkForHeaderHeightSubtraction = function () {\n      $(\".section-slideshow .height--full-minus-header-height\").each(\n        function () {\n          $(this).height($(window).height() - $(\".section-header\").height());\n        }\n      );\n    };\n\n    this.onSectionLoad = function (target) {\n      $(\".slideshow\", target).each(function () {\n        if (\n          $(this).find(\".height--full\").length &&\n          $(this).closest(\".section-slideshow\").index() == 0\n        ) {\n          $(this).addClass(\"height--full-minus-header-height\");\n\n          _.checkForHeaderHeightSubtraction();\n\n          $(window)\n            .off(\"debouncedresize.slideshowSection\")\n            .on(\n              \"debouncedresize.slideshowSection\",\n              _.checkForHeaderHeightSubtraction\n            );\n        }\n\n        $(this)\n          .on(\"init\", function () {\n            $(\".lazyload--manual\", this)\n              .removeClass(\"lazyload--manual\")\n              .addClass(\"lazyload\");\n          })\n          .slick({\n            autoplay: $(this).data(\"autoplay\"),\n            fade: $(this).data(\"transition\") != \"slide\",\n            speed: $(this).data(\"transition\") == \"instant\" ? 0 : 750,\n            autoplaySpeed: $(this).data(\"autoplay-speed\") * 1000,\n            arrows: $(this).data(\"navigation\") == \"arrows\",\n            dots: $(this).data(\"navigation\") == \"dots\",\n            pauseOnHover:\n              $(this).data(\"transition\") != \"instant\" ||\n              $(this).data(\"autoplay-speed\") > 2,\n            // no pause when quick & instant\n            infinite: true,\n            useTransform: true,\n            prevArrow:\n              '<button type=\"button\" class=\"slick-prev\" aria-label=\"' +\n              theme.strings.previous +\n              '\">' +\n              theme.icons.chevronLeft +\n              \"</button>\",\n            nextArrow:\n              '<button type=\"button\" class=\"slick-next\" aria-label=\"' +\n              theme.strings.next +\n              '\">' +\n              theme.icons.chevronRight +\n              \"</button>\",\n            responsive: [\n              {\n                breakpoint: 768,\n                settings: {\n                  fade: $(this).data(\"transition\") == \"instant\",\n                  // keep instant gif-style on mobile\n                  speed: $(this).data(\"transition\") == \"instant\" ? 0 : 750,\n                  arrows: false,\n                  dots: $(this).data(\"navigation\") != \"none\",\n                },\n              },\n            ],\n          });\n      });\n    };\n\n    this.onSectionUnload = function (target) {\n      $(\".slick-slider\", target).slick(\"unslick\").off(\"init\");\n      $(window).off(\".slideshowSection\");\n    };\n\n    this.onBlockSelect = function (target) {\n      $(target)\n        .closest(\".slick-slider\")\n        .slick(\"slickGoTo\", $(target).data(\"slick-index\"))\n        .slick(\"slickPause\");\n    };\n\n    this.onBlockDeselect = function (target) {\n      $(target).closest(\".slick-slider\").slick(\"slickPlay\");\n    };\n  })();\n  theme.GallerySection = new (function () {\n    this.onSectionLoad = function (container) {\n      var $carouselGallery = $(\".gallery--mobile-carousel\", container);\n      var gridElem = $(\"div[class*='gallery--grid-']\");\n      var slideToShow = gridElem.attr('class');\n      slideToShow = slideToShow.match(/gallery--grid-\\d+/)[0];\n      slideToShow = slideToShow.match(/\\d+/);\n      if ($carouselGallery.length) {\n        var assessCarouselFunction = function assessCarouselFunction() {\n          var isCarousel = $carouselGallery.hasClass(\"slick-slider\"),\n            shouldShowCarousel = true;\n\n          console.log(\"is carousel\", isCarousel, shouldShowCarousel);\n\n          if (!shouldShowCarousel) {\n            $(\".lazyload--manual\", $carouselGallery)\n              .removeClass(\"lazyload--manual\")\n              .addClass(\"lazyload\");\n          }\n\n          if (isCarousel && !shouldShowCarousel) {\n            // Destroy carousel\n            // - unload slick\n            $carouselGallery.slick(\"unslick\").off(\"init\");\n            $carouselGallery\n              .find(\"a, .gallery__item\")\n              .removeAttr(\"tabindex\")\n              .removeAttr(\"role\"); // - re-row items\n\n            var rowLimit = $carouselGallery.data(\"grid\");\n            var $currentRow = null;\n            $carouselGallery.find(\".gallery__item\").each(function (index) {\n              if (index % rowLimit === 0) {\n                $currentRow = $('<div class=\"gallery__row\">').appendTo(\n                  $carouselGallery\n                );\n              }\n\n              $(this).appendTo($currentRow);\n            });\n          } else if (!isCarousel && shouldShowCarousel) {\n\n            console.log(\"gogogo\");\n            // Create carousel\n            // - de-row items\n            $carouselGallery.find(\".gallery__item\").appendTo($carouselGallery);\n            $carouselGallery.find(\".gallery__row\").remove(); // - init carousel\n\n            $carouselGallery\n              .on(\"init\", function () {\n                $(\".lazyload--manual\", this)\n                  .removeClass(\"lazyload--manual\")\n                  .addClass(\"lazyload\");\n              })\n              .slick({\n                autoplay: false,\n                fade: false,\n                infinite: true,\n                useTransform: true,\n                arrows: false,\n                dots: true,\n                slidesToShow: slideToShow,\n                responsive: [\n                  {\n                    breakpoint: 600,\n                    settings: {\n                      slidesToShow: 3,\n                      slidesToScroll: 1,\n                    },\n                  },\n                  {\n                    breakpoint: 480,\n                    settings: {\n                      slidesToShow: 1,\n                      slidesToScroll: 1,\n                    },\n                  },\n                ],\n              });\n          }\n        };\n\n        assessCarouselFunction();\n        $(window).on(\n          \"debouncedresize.themeSection\" + container.id,\n          assessCarouselFunction\n        );\n      }\n    };\n\n    this.onSectionUnload = function (container) {\n      $(window).off(\".themeSection\" + container.id);\n      $(\".slick-slider\", container).each(function () {\n        $(this).slick(\"unslick\").off(\"init\");\n      });\n    };\n\n    this.onBlockSelect = function (block) {\n      var blockSlideIndex = $(block).data(\"slick-index\");\n      $(block)\n        .closest(\".slick-slider\")\n        .each(function () {\n          $(this).slick(\"slickGoTo\", blockSlideIndex);\n        });\n    };\n  })(); // Lightbox\n\n  theme.fbOpts = function () {\n    return {\n      overlayColor: \"#fff\",\n      padding: 1,\n      margin: $(window).width() > 767 ? 40 : 20,\n      overlayOpacity: 0.9,\n      onComplete: function onComplete() {\n        $(\"#fancybox-wrap\").off(\"mousewheel.fb\"); // do not block scrolling\n      },\n    };\n  };\n\n  theme.CustomRowSection = new (function () {\n    this.onSectionLoad = function (container) {\n      theme.classUpTextLinks(container);\n      theme.VideoManager.onSectionLoad(container);\n    };\n\n    this.onSectionUnload = function (container) {\n      theme.VideoManager.onSectionUnload(container);\n    };\n  })();\n\n  theme.FeaturedCollectionSection = new (function () {\n    this.onSectionLoad = function (container) {\n      theme.loadCarousels(container);\n      theme.ProductBlockManager.loadImages(container);\n    };\n\n    this.onSectionUnload = function (container) {\n      theme.unloadCarousels(container);\n    };\n  })();\n  theme.FeaturedCollectionsSection = new (function () {\n    this.onSectionLoad = function (container) {\n      theme.loadCarousels(container);\n      theme.ProductBlockManager.loadImages(container);\n    };\n\n    this.onSectionUnload = function (container) {\n      theme.unloadCarousels(container);\n    };\n  })();\n  theme.ListCollectionsTemplateSection = new (function () {\n    this.onSectionLoad = function (container) {\n      theme.ProductBlockManager.loadImages(container);\n    };\n  })();\n\n  theme.applyAjaxToProductForm = function ($form) {\n    if (theme.settings.cart_type === \"drawer\" || theme.settings.cart_type === \"powerstep\") {\n      $form.filter('[data-ajax-add-to-cart=\"true\"]').each(function () {\n        var cartPopupTemplate = [];\n        if (theme.settings.cart_type === \"drawer\") {\n          cartPopupTemplate = [\n            '<div id=\"cart-summary-overlay\" class=\"cart-summary-overlay\">',\n            '<div class=\"cart-summary-overlay__row-head\">',\n            '<div class=\"cart-summary-overlay__column-image\">',\n            '<div class=\"cart-summary-overlay__column-title\">',\n            theme.strings.products_added_notification_title,\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-item\">',\n            '<div class=\"cart-summary-overlay__column-title\">',\n            theme.strings.products_added_notification_item,\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-price-region\">',\n            '<div class=\"cart-summary-overlay__column-price\">',\n            '<div class=\"cart-summary-overlay__column-title\">',\n            theme.strings.products_added_notification_unit_price,\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-quantity\">',\n            '<div class=\"cart-summary-overlay__column-title\">',\n            theme.strings.products_added_notification_quantity,\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-total\">',\n            '<div class=\"cart-summary-overlay__column-title\">',\n            theme.strings.products_added_notification_total_price,\n            \"</div>\",\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-subtotal\">',\n            '<div class=\"cart-summary-overlay__column-title\">',\n            theme.strings.products_added_notification_subtotal,\n            \"</div>\",\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__row-body\">',\n            '<div class=\"cart-summary-overlay__column-image\">',\n            '<img src=\"[[image_url]]\" alt=\"[[encoded-title]]\" />',\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-item\">',\n            '<div class=\"cart-summary-overlay__title\">[[title]]</div>',\n            '<div class=\"cart-summary-overlay__variants\">[[variants]]</div>',\n            '<div class=\"cart-summary-overlay__mobile-price-row\">',\n            '<div class=\"cart-summary-overlay__mobile-unit-price\">[[unit_price]]</div>',\n            '<div class=\"cart-summary-overlay__mobile-quantity\">',\n            theme.strings.products_added_notification_quantity,\n            '<span class=\"cart-summary-overlay__quantity\">[[quantity]]</span>',\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__mobile-line-price\">[[line_price]]</div>',\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-price-region\">',\n            '<div class=\"cart-summary-overlay__column-price\">',\n            '<span class=\"cart-summary-overlay__unit-price\">[[unit_price]]</span>',\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-quantity\">',\n            '<span class=\"cart-summary-overlay__quantity\">[[quantity]]</span>',\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-total\">',\n            '<div class=\"cart-summary-overlay__line-price\">[[line_price]]</div>',\n            \"</div>\",\n            \"[[line_discount]]\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__column-subtotal\">',\n            '<span class=\"cart-summary-overlay__subtotal\">[[subtotal]]</span>',\n            '<div class=\"cart-summary-overlay__note\">',\n            theme.strings.products_added_notification_shipping_note,\n            \"&nbsp;</div>\",\n            \"</div>\",\n            \"</div>\",\n            '<div class=\"cart-summary-overlay__actions\">',\n            '<a id=\"shop-more\" class=\"button altcolour\" href=\"#\">',\n            theme.strings.products_added_notification_keep_shopping,\n            \"</a>\",\n            '<a class=\"button to-cart\" href=\"',\n            theme.routes.cart_url,\n            '\">',\n            theme.strings.products_added_notification_cart,\n            \"</a>\",\n            \"</div>\",\n            '[[free-cart-bar-html]]',\n            \"</div>\"\n          ].join(\"\");\n        }\n        var shopifyAjaxAddURL = theme.routes.cart_add_url + \".js\";\n        var shopifyAjaxCartURL = theme.routes.cart_url + \".js\";\n        var shopifyAjaxStorePageURL = theme.routes.search_url;\n        $(this).on(\"submit\", function (evt) {\n          evt.preventDefault();\n          var $form = $(this); //Disable add button\n\n          if ($form.find('input[type=\"submit\"]').length > 0) {\n            $form\n              .find('input[type=\"submit\"]')\n              .attr(\"disabled\", \"disabled\")\n              .each(function () {\n                $(this).data(\"previous-value\", $(this).val());\n              })\n              .val(theme.strings.products_product_adding_to_cart); //Hide any existing notifications\n          }\n\n          $(\"#cart-summary-overlay #shop-more\").triggerHandler(\"click\"); //Add to cart\n\n          $.post(\n            shopifyAjaxAddURL,\n            $form.serialize(),\n            function (itemData) {\n              //Enable add button\n              if ($form.find('input[type=\"submit\"]')) {\n                $form\n                  .find('input[type=\"submit\"]')\n                  .removeAttr(\"disabled\")\n                  .each(function () {\n                    $btn = $(this); //Set to 'DONE', alter button style, wait a few secs, revert to normal\n\n                    $btn\n                      .val(theme.strings.products_product_added_to_cart)\n                      .addClass(\"inverted\");\n                  }); //Get our data\n              }\n\n              var addedDataJSON = $.parseJSON(itemData); //Get current cart state\n\n              $.get(\n                shopifyAjaxCartURL,\n                function (cartData) {\n                  var cartDataJSON = $.parseJSON(cartData);\n                  var addedQty = addedDataJSON.quantity;\n                  var addedImage = addedDataJSON.image; //Variants require option names, which are not included in the cart\n\n                  var productData = theme.OptionManager.getProductData($form);\n                  var variantHtml = \"\";\n\n                  if (addedDataJSON.variant_title) {\n                    // catches default variant\n                    for (var i = 0; i < productData?.options.length; i++) {\n                      variantHtml += [\n                        '<div class=\"cart-summary-overlay__variant\">',\n                        '<span class=\"cart-summary-overlay__variant-option\">',\n                        productData.options[i].name,\n                        \"</span>\",\n                        '<span class=\"cart-summary-overlay__variant-value\">',\n                        addedDataJSON.variant_options[i],\n                        \"</span>\",\n                        \"</div>\",\n                      ].join(\"\");\n                    }\n                  }\n\n                  var unitPriceHtml = \"\";\n\n                  if (\n                    addedDataJSON.original_line_price >\n                    addedDataJSON.final_line_price\n                  ) {\n                    unitPriceHtml +=\n                      '<div class=\"struck-out-price\"><span class=\"theme-money\">' +\n                      theme.Shopify.formatMoney(\n                        addedDataJSON.original_price,\n                        theme.money_format\n                      ) +\n                      \"</span></div>\";\n                  }\n\n                  unitPriceHtml +=\n                    '<div><span class=\"theme-money\">' +\n                    theme.Shopify.formatMoney(\n                      addedDataJSON.final_price,\n                      theme.money_format\n                    ) +\n                    \"</span></div>\";\n                  var linePriceHtml = \"\";\n\n                  if (\n                    addedDataJSON.original_line_price !=\n                    addedDataJSON.final_line_price\n                  ) {\n                    linePriceHtml +=\n                      '<div class=\"theme-money struck-out-price\">' +\n                      theme.Shopify.formatMoney(\n                        addedDataJSON.original_line_price,\n                        theme.money_format\n                      ) +\n                      \"</div>\";\n                    linePriceHtml +=\n                      '<div class=\"theme-money\">' +\n                      theme.Shopify.formatMoney(\n                        addedDataJSON.final_line_price,\n                        theme.money_format\n                      ) +\n                      \"</div>\";\n                  } else {\n                    linePriceHtml +=\n                      '<span class=\"theme-money\">' +\n                      theme.Shopify.formatMoney(\n                        addedDataJSON.final_line_price,\n                        theme.money_format\n                      ) +\n                      \"</span>\";\n                  }\n\n                  var lineDiscountHtml = \"\";\n\n                  if (\n                    addedDataJSON.line_level_discount_allocations &&\n                    addedDataJSON.line_level_discount_allocations.length > 0\n                  ) {\n                    lineDiscountHtml += '<ul class=\"cart-discount-list\">';\n\n                    for (\n                      var i = 0;\n                      i < addedDataJSON.line_level_discount_allocations.length;\n                      i++\n                    ) {\n                      var discount_allocation =\n                        addedDataJSON.line_level_discount_allocations[i];\n                      lineDiscountHtml += [\n                        '<li class=\"cart-discount cart-discount--inline\">',\n                        '<span class=\"cart-discount__label\">',\n                        '<span class=\"cart-discount__icon\">',\n                        theme.icons.label,\n                        \"</span>\",\n                        '<span class=\"cart-discount__title\">',\n                        discount_allocation.discount_application.title,\n                        \"</span>\",\n                        \"</span>\",\n                        '<span class=\"cart-discount__amount theme-money\">',\n                        theme.Shopify.formatMoney(\n                          discount_allocation.amount,\n                          theme.money_format\n                        ),\n                        \"</span>\",\n                        \"</li>\",\n                      ].join(\"\");\n                    }\n\n                    lineDiscountHtml += \"</ul>\";\n                  }\n\n                  var subtotalHtml = \"\";\n\n                  if (\n                    cartDataJSON.cart_level_discount_applications &&\n                    cartDataJSON.cart_level_discount_applications.length > 0\n                  ) {\n                    subtotalHtml += '<ul class=\"cart-discount-list\">';\n\n                    for (\n                      var i = 0;\n                      i < cartDataJSON.cart_level_discount_applications.length;\n                      i++\n                    ) {\n                      var discount_application =\n                        cartDataJSON.cart_level_discount_applications[i];\n                      subtotalHtml += [\n                        '<li class=\"cart-discount cart-discount--inline\">',\n                        '<span class=\"cart-discount__label\">',\n                        '<span class=\"cart-discount__icon\">',\n                        theme.icons.label,\n                        \"</span>\",\n                        '<span class=\"cart-discount__title\">',\n                        discount_application.title,\n                        \"</span>\",\n                        \"</span>\",\n                        '<span class=\"cart-discount__amount theme-money\">',\n                        theme.Shopify.formatMoney(\n                          discount_application.total_allocated_amount,\n                          theme.money_format\n                        ),\n                        \"</span>\",\n                        \"</li>\",\n                      ].join(\"\");\n                    }\n\n                    subtotalHtml += \"</ul>\";\n                  }\n\n                  subtotalHtml +=\n                    '<span class=\"cart-summary-overlay__subtotal-mobile-title\">' +\n                    theme.strings.products_added_notification_subtotal +\n                    \":</span> \";\n                  subtotalHtml +=\n                    '<span class=\"cart-summary-overlay__subtotal-amount theme-money\">' +\n                    theme.Shopify.formatMoney(\n                      cartDataJSON.total_price,\n                      theme.money_format\n                    ) +\n                    \"</span>\"; //Now we have all the data, build the shade\n\n                  if (theme.settings.cart_type != 'powerstep') {\n                    var cartShadeHTML = cartPopupTemplate;\n\n                    if (theme.settings.free_cart_bar_enabled == true) {\n                      cartShadeHTML = cartShadeHTML.replace(\n                        \"[[free-cart-bar-html]]\", '<div class=\"cart-summary-overlay__divider\"><p>[[free-cart-bar-text]]</p></div>'\n                      )\n                    } else {\n                      cartShadeHTML = cartShadeHTML.replace(\"[[free-cart-bar-html]]\", '');\n                    }\n\n                    var freeShippingDiff;\n                    if (theme.settings.free_cart_bar_show_diff == true) {\n                      freeShippingDiff = (theme.settings.free_delivery_limit * 100 - cartDataJSON.total_price);\n                    } else {\n                      freeShippingDiff = theme.settings.free_delivery_limit;\n                    }\n\n                    if (freeShippingDiff > 0) {\n                      cartShadeHTML = cartShadeHTML.replace(\n                        \"[[free-cart-bar-text]]\", theme.strings.free_cart_bar_text\n                      )\n                      cartShadeHTML = cartShadeHTML.replace(\n                        \"{{limit}}\",\n                        theme.Shopify.formatMoney(\n                          freeShippingDiff,\n                          theme.money_format\n                        )\n                      );\n                    } else {\n                      cartShadeHTML = cartShadeHTML.replace(\n                        \"[[free-cart-bar-text]]\", theme.strings.free_cart_bar_text_success\n                      )\n                    }\n\n                    cartShadeHTML = cartShadeHTML.replace(\n                      \"[[title]]\",\n                      addedDataJSON.product_title\n                    );\n                    cartShadeHTML = cartShadeHTML.replace(\n                      \"[[encoded-title]]\",\n                      addedDataJSON.product_title\n                        .replace(/\"/g, \"&quot;\")\n                        .replace(/&/g, \"&amp;\")\n                    );\n                    cartShadeHTML = cartShadeHTML.replace(\n                      \"[[variants]]\",\n                      variantHtml\n                    );\n                    cartShadeHTML = cartShadeHTML.replace(\n                      /\\[\\[quantity\\]\\]/g,\n                      addedQty\n                    );\n                    cartShadeHTML = cartShadeHTML.replace(\n                      \"[[image_url]]\",\n                      theme.Shopify.formatImage(addedImage, \"170x\")\n                    );\n                    cartShadeHTML = cartShadeHTML\n                      .split(\"[[unit_price]]\")\n                      .join(unitPriceHtml);\n                    cartShadeHTML = cartShadeHTML\n                      .split(\"[[line_price]]\")\n                      .join(linePriceHtml);\n                    cartShadeHTML = cartShadeHTML\n                      .split(\"[[line_discount]]\")\n                      .join(lineDiscountHtml);\n                    cartShadeHTML = cartShadeHTML.replace(\n                      \"[[subtotal]]\",\n                      subtotalHtml\n                    );\n                    var $cartShade = $(cartShadeHTML);\n                    $cartShade.find(\"#shop-more\").bind(\"click\", function () {\n                      $cartShade.animate(\n                        {\n                          bottom: -$cartShade.outerHeight(),\n                        },\n                        500,\n                        function () {\n                          $(this).remove();\n                        }\n                      );\n                      return false;\n                    });\n                    $cartShade\n                      .prependTo(\"body\")\n                      .css(\"bottom\", -$cartShade.outerHeight())\n                      .animate(\n                        {\n                          bottom: 0,\n                        },\n                        500\n                      );\n                  }\n                },\n                \"html\"\n              ); //Update header summaries\n\n              $.get(shopifyAjaxStorePageURL, function (data) {\n                var cartSummarySelectors = [\"#pageheader .cart-summary\"];\n\n                for (var i = 0; i < cartSummarySelectors.length; i++) {\n                  var $newCartObj = $(\"<div>\" + data + \"</div>\")\n                    .find(cartSummarySelectors[i])\n                    .first();\n                  var $currCart = $(cartSummarySelectors[i]);\n                  $currCart.html($newCartObj.html());\n                }\n              });\n            },\n            \"text\"\n          ).fail(function (data) {\n            //Enable add button\n            $form\n              .find('input[type=\"submit\"]')\n              .removeAttr(\"disabled\")\n              .each(function () {\n                $(this).val(theme.strings.products_product_not_added_to_cart);\n              }); //Not added, show messageart);\n\n            if (\n              typeof data != \"undefined\" &&\n              typeof data.status != \"undefined\"\n            ) {\n              var jsonRes = $.parseJSON(data.responseText);\n              theme.showQuickPopup(\n                jsonRes.description,\n                $form.find('input[type=\"submit\"]:first')\n              );\n            } else {\n              //Some unknown error? Disable ajax and add the old-fashioned way.\n              $form.attr(\"ajax-add-to-cart\", \"false\").submit();\n            }\n          });\n        });\n      });\n      $(window)\n        .off(\".ajaxAddScroll\")\n        .on(\"scroll.ajaxAddScroll\", function () {\n          // Hide notifications on scroll\n          $(\"#cart-summary-overlay #shop-more\").triggerHandler(\"click\");\n        });\n    }\n  };\n\n  theme.removeAjaxFromProductForm = function ($form) {\n    $form.off(\"submit\");\n  };\n\n  theme.HeaderSection = new (function () {\n    this.onSectionLoad = function (container) {\n      // block focus events targeted at the social icons\n      $(container).on(\n        \"focusin.headerSection focusout.headerSection\",\n        \".social-links\",\n        function (e) {\n          return false;\n        }\n      ); // asses focus, and handle transitioning between child elements with a timeout\n\n      var searchFocusOutTimeoutId = -1;\n      $(container).on(\n        \"focusin.headerSection focusout.headerSection\",\n        \".search-box\",\n        function (e) {\n          if (e.type == \"focusin\") {\n            clearTimeout(searchFocusOutTimeoutId);\n            $(this).closest(\".search-box\").addClass(\"focus\");\n          } else {\n            clearTimeout(searchFocusOutTimeoutId);\n            searchFocusOutTimeoutId = setTimeout(\n              function () {\n                $(this).closest(\".search-box\").removeClass(\"focus\");\n              }.bind(this),\n              200\n            );\n          }\n        }\n      ); // Toggle search\n\n      $(container).on(\n        \"click.headerSection\",\n        \".show-search-link, .main-search__close\",\n        function (e) {\n          if ($(\"body\").toggleClass(\"show-search\").hasClass(\"show-search\")) {\n            setTimeout(function () {\n              $(\".main-search__input:first\").focus();\n            }, 500);\n          } else {\n            $(\".show-search-link:first\").focus();\n          }\n\n          return false;\n        }\n      ); // Close search on escape\n\n      $(container).on(\n        \"keyup.headerSection\",\n        \".main-search__input\",\n        function (e) {\n          if (e.keyCode == 27) {\n            $(\".main-search__close\").click();\n          }\n        }\n      ); /// Live search\n\n      var $liveSearchContainer = $(\n        '.main-search[data-live-search=\"true\"]',\n        container\n      );\n\n      if ($liveSearchContainer.length) {\n        var searchTimeoutThrottle = 500,\n          searchTimeoutID = -1,\n          currReqObj = null,\n          showPrice = $liveSearchContainer.data(\"live-search-price\"),\n          showVendor = $liveSearchContainer.data(\"live-search-vendor\"),\n          includeMeta = $liveSearchContainer.data(\"live-search-meta\"),\n          productImageShape = $liveSearchContainer.data(\"product-image-shape\"),\n          detailMode = $liveSearchContainer.data(\"hover-detail-mode\"),\n          showSoldOutLabel = $liveSearchContainer.data(\"show-sold-out-label\"),\n          showSaleLabel = $liveSearchContainer.data(\"show-sale-label\");\n        $('body').on(\n          \"keyup.headerSection change.headerSection\",\n          \".main-search__input\",\n          \"main-search__input-container\",\n          function () {\n            var $searchContainer = $(\".main-search\"),\n              $resultsBox = $searchContainer.find(\".main-search__results\"),\n              valueToSearch = $(this).val(); //Only search if search string longer than 2, and it has changed\n              const searchInput = this;\n\n            if (\n              valueToSearch.length > 2 &&\n              valueToSearch != $(this).data(\"oldval\")\n            ) {\n              //Reset previous value\n              $(this).data(\"oldval\", valueToSearch); // Kill outstanding ajax request\n\n              if (currReqObj != null) {\n                currReqObj.abort();\n              } // Kill previous search\n\n              clearTimeout(searchTimeoutID); // Create URL for full search results\n\n              var $form = $(this).closest(\"form\");\n              var linkURL =\n                $form.attr(\"action\") +\n                ($form.attr(\"action\").indexOf(\"?\") > -1 ? \"&\" : \"?\") +\n                $form.serialize(); //Show loading\n\n              $searchContainer\n                .removeClass(\n                  \"main-search--has-results main-search--results-on-multiple-lines main-search--no-results\"\n                )\n                .addClass(\"main-search--loading\");\n\n              if ($(\".main-search__results-spinner\").length === 0) {\n                $resultsBox.html(\n                  '<div class=\"main-search__results-spinner\"><div class=\"loading-spinner\"></div></div>'\n                );\n              } // Do next search (in X milliseconds)\n\n              searchTimeoutID = setTimeout(function () {\n                var ajaxUrl, ajaxData;\n\n                if (theme.Shopify.features.predictiveSearch) {\n                  // use the API\n                  ajaxUrl = theme.routes.search_url + \"/suggest.json\";\n                  ajaxData = {\n                    q: valueToSearch,\n                    resources: {\n                      type: $form.find('input[name=\"type\"]').val(),\n                      limit: 8,\n                      options: {\n                        unavailable_products: \"last\",\n                        fields: includeMeta\n                          ? \"title,product_type,variants.title,vendor,tag,variants.sku\"\n                          : \"title,product_type,variants.title,vendor\",\n                      },\n                    },\n                  };\n                } else {\n                  // use the theme template fallback\n                  ajaxUrl = linkURL + \"&view=json\";\n                  ajaxData = null;\n                } //Ajax hit on search page\n\n                currReqObj = $.ajax({\n                  url: ajaxUrl,\n                  data: ajaxData,\n                  dataType: \"json\",\n                  success: function success(response) {\n                    currReqObj = null;\n                    $searchContainer.removeClass(\n                      \"main-search--has-results main-search--results-on-multiple-lines main-search--no-results\"\n                    );\n                    $resultsBox.empty();\n                    var $resultsProducts = $(\n                      '<div class=\"main-search__results__products collection-listing\"><div class=\"product-list product-list--per-row-4 product-list--image-shape-natural\"></div></div>'\n                    );\n                    var $resultsPages = $(\n                      '<div class=\"main-search__results__pages\">'\n                    );\n\n                    if (response.resources.results.products) {\n                      for (\n                        var i = 0;\n                        i < response.resources.results.products.length;\n                        i++\n                      ) {\n                        var result = response.resources.results.products[i];\n                        var $item = $(\n                          [\n                            '<div class=\"product-block main-search-result\">',\n                            '<div class=\"block-inner\">',\n                            '<div class=\"block-inner-inner\">',\n                            '<div class=\"image-cont\">',\n                            '<a class=\"product-link\">',\n                            '<div class=\"image-label-wrap\">',\n                            '<div class=\"primary-image\"></div>',\n                            \"</div>\",\n                            \"</a>\",\n                            \"</div>\",\n                            '<div class=\"product-info\">',\n                            '<div class=\"inner\">',\n                            '<div class=\"innerer\">',\n                            '<a class=\"product-link\">',\n                            '<div class=\"product-block__title\"></div>',\n                            '<div class=\"product-block__price\"></div>',\n                            '<div class=\"dash\">-</div>',\n                            \"</a>\",\n                            \"</div>\",\n                            \"</div>\",\n                            \"</div>\",\n                            \"</div>\",\n                            \"</div>\",\n                            \"</div>\",\n                          ].join(\"\")\n                        );\n                        $item.addClass(\"detail-mode-\" + detailMode);\n                        $item.find(\".product-link\").attr(\"href\", result.url);\n\n                        if (\n                          result.featured_image &&\n                          result.featured_image.url\n                        ) {\n                          var $img = $(\n                            '<div class=\"rimage-outer-wrapper\"><div class=\"rimage-wrapper lazyload--placeholder\"><img class=\"rimage__image lazyload fade-in\"></div></div>'\n                          ).appendTo($item.find(\".primary-image\"));\n                          $img\n                            .find(\".rimage-wrapper\")\n                            .css(\n                              \"padding-top\",\n                              (1 /\n                                Math.max(\n                                  result.featured_image.aspect_ratio,\n                                  0.6\n                                )) *\n                              100 +\n                              \"%\"\n                            );\n                          $img\n                            .find(\".rimage__image\")\n                            .attr(\n                              \"data-src\",\n                              theme.Shopify.formatImage(\n                                result.featured_image.url,\n                                \"512x\"\n                              ) + \" 512w\"\n                            );\n                        }\n\n                        var $itemInfoCont = $item.find(\n                          \".product-info .product-link\"\n                        );\n                        $itemInfoCont\n                          .find(\".product-block__title\")\n                          .html(result.title);\n                        $itemInfoCont\n                          .find(\".product-block__price\")\n                          .html(theme.Shopify.formatMoney(result.price, theme.money_format));\n                        if (showVendor) {\n                          $('<div class=\"vendor\">')\n                            .html(result.vendor)\n                            .prependTo($itemInfoCont);\n                        }\n\n                        if (showPrice) {\n                          var $price = $(\n                            '<div class=\"product-price\">'\n                          ).appendTo($itemInfoCont);\n\n                          if (result.price_max != result.price_min) {\n                            $('<span class=\"product-price__from\">')\n                              .html(theme.strings.products_listing_from)\n                              .appendTo($price);\n                            $price.append(\" \");\n                          }\n\n                          if (\n                            parseFloat(result.compare_at_price_min) >\n                            parseFloat(result.price_min)\n                          ) {\n                            $(\n                              '<span class=\"product-price__amount product-price__amount--on-sale theme-money\">'\n                            )\n                              .html(\n                                theme.Shopify.formatMoney(\n                                  result.price_min,\n                                  theme.money_format\n                                )\n                              )\n                              .appendTo($price);\n                            $price.append(\" \");\n                            $(\n                              '<span class=\"product-price__compare theme-money\">'\n                            )\n                              .html(\n                                theme.Shopify.formatMoney(\n                                  result.compare_at_price_min,\n                                  theme.money_format\n                                )\n                              )\n                              .appendTo($price);\n                          } else {\n                            $(\n                              '<span class=\"product-price__amount theme-money\">'\n                            )\n                              .html(\n                                theme.Shopify.formatMoney(\n                                  result.price_min,\n                                  theme.money_format\n                                )\n                              )\n                              .appendTo($price);\n                          }\n                        }\n\n                        if (showSoldOutLabel && !result.available) {\n                          $(\n                            '<span class=\"productlabel soldout\"><span></span></span>'\n                          )\n                            .appendTo($item.find(\".image-label-wrap\"))\n                            .find(\"span\")\n                            .html(theme.strings.products_labels_sold_out);\n                        } else if (\n                          showSaleLabel &&\n                          parseFloat(result.compare_at_price_min) >\n                          parseFloat(result.price_min)\n                        ) {\n                          $(\n                            '<span class=\"productlabel sale\"><span></span></span>'\n                          )\n                            .appendTo($item.find(\".image-label-wrap\"))\n                            .find(\"span\")\n                            .html(theme.strings.products_labels_sale);\n                        }\n\n                        $resultsProducts.children().append($item);\n                      }\n                    }\n\n                     \n\n                    if (response.resources.results.pages) {\n                      for (\n                        var i = 0;\n                        i < response.resources.results.pages.length;\n                        i++\n                      ) {\n                        var result = response.resources.results.pages[i];\n                        var $item = $(\n                          '<a class=\"main-search-result main-search-result--page\">'\n                        ).attr(\"href\", result.url);\n                        $('<div class=\"main-search-result__text\">')\n                          .html(result.title)\n                          .appendTo($item);\n                        $resultsPages.append($item);\n                      }\n                    }\n\n                    if (response.resources.results.articles) {\n                      for (\n                        var i = 0;\n                        i < response.resources.results.articles.length;\n                        i++\n                      ) {\n                        var result = response.resources.results.articles[i];\n                        var $item = $(\n                          '<a class=\"main-search-result main-search-result--article\">'\n                        ).attr(\"href\", result.url);\n                        $('<div class=\"main-search-result__text\">')\n                          .html(result.title)\n                          .appendTo($item);\n                        $resultsPages.append($item);\n                      }\n                    }\n\n                    $searchContainer.removeClass(\"main-search--loading\");\n                    var areProducts =\n                      $resultsProducts.find(\".main-search-result:first\")\n                        .length > 0,\n                      arePages =\n                        $resultsPages.find(\".main-search-result:first\").length >\n                        0;\n\n                    if (areProducts || arePages) {\n                      // Numerous results\n                      $searchContainer.addClass(\"main-search--has-results\");\n                      $searchContainer.toggleClass(\n                        \"main-search--results-on-multiple-lines\",\n                        $resultsProducts.find(\".product-block\").length > 4\n                      );\n\n                      // Assign search position to search results\n                      let searchPosition = $('#search-bar').attr('search-position')\n                      let searchFormat = $('#search-bar').attr('search-format')\n                      $searchContainer.attr('search-position', searchPosition)\n                      $searchContainer.attr('search-format', searchFormat)\n                      console.log('$searchContainer', $searchContainer)\n                      if ($(searchInput).hasClass('search-template__input')) {\n                        $(searchInput).removeClass('search-search-bar__header')\n                        $($searchContainer).eq(0).addClass('main-search__input--search-container');\n                        const mainSearchContainer = $('.main-search__input--search-container');\n                        const mainSearchResultsGrouper = $('.page-header .main-search--results_grouper');\n                        $(mainSearchResultsGrouper).empty().append($(mainSearchContainer)); \n                      }\n                      /* attr('data-live-search-meta') */\n                      let $searchContainerLiveSearch = $('#main-search[data-live-search-meta]');\n                      let boxContainer = $($searchContainerLiveSearch).find('.main-search__container');\n                      console.log('$($boxContainer!!!!)',  $($searchContainer))\n\n                      if ($($searchContainer).attr('search-format', 'bar') && $($searchContainer).attr('search-position') && $(boxContainer).find('.main-search-results__close-btn').length == 0 && $($searchContainer).attr('data-live-search-meta') ) {\n                        $(boxContainer).append('<div class=\"main-search-results__close-btn\">\\\n                          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-x\">\\\n                            <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\">\\\n                            </line>\\\n                          </svg>\\\n                        <div/>');\n                      }\n\n                      $('.main-search-results__close-btn').on('click', closeButtonFunc)\n                      function closeButtonFunc(){\n                        $($searchContainer).removeClass(\"main-search--has-results\");\n                      }\n\n                      if ($(searchInput).hasClass('main-search__header')) {\n                        $($searchContainer).removeClass('main-search__input--search-container')\n                        $('[data-section-type=\"header\"]').append($(\"#main-search\"))\n                      }\n                    \n                      if (areProducts) {\n                        $resultsBox.append($resultsProducts);\n                        // Add product title to search results box\n                        const $searchContainerProducts =  $resultsBox.find('.main-search__results__products').eq(0)\n                        $($searchContainerProducts).prepend( \"<h6 class='main-search-result__heading'>Produkter</h6\" );\n                      }\n\n                      if (arePages) {\n                        $('<h6 class=\"main-search-result__heading\">')\n                          .html(theme.strings.general_quick_search_pages)\n                          .prependTo($resultsPages);\n                        $resultsBox.append($resultsPages);\n                      }\n\n                      $(\n                        '<a class=\"main-search__results-all-link button altcolour\">'\n                      )\n                        .attr(\"href\", linkURL)\n                        .html(theme.strings.layout_live_search_see_all)\n                        .appendTo($resultsBox);\n                    } else {\n                      // No results - show nothing\n                      $searchContainer.addClass(\"main-search--no-results\");\n                      $('<div class=\"main-search__empty-message\">')\n                        .html(theme.strings.general_quick_search_no_results)\n                        .appendTo($resultsBox);\n                    }\n                  },\n                  error: function error(response) {\n                    console.log(\"Error fetching results\");\n                  },\n                });\n              }, searchTimeoutThrottle);\n            } else if ($(this).val().length <= 2) {\n              // Deleted text? Abandon search-in-progress\n              $(this).data(\"oldval\", valueToSearch);\n\n              if (currReqObj != null) {\n                currReqObj.abort();\n              }\n\n              clearTimeout(searchTimeoutID); // Clear results\n\n              $searchContainer.removeClass(\n                \"main-search--has-results main-search--results-on-multiple-lines main-search--loading\"\n              );\n              $resultsBox.empty();\n            }\n          }\n        );\n      } // account / localization\n\n      $(\".disclosure\", container).each(function () {\n        $(this).data(\"disclosure\", new theme.Disclosure($(this)));\n      }); // nav\n\n      theme.Navigation.init({\n        nav: $(\".navigation--main\", container),\n        proxyTier1Nav1: $(\".navigation--left\", container),\n        proxyTier1Nav2: $(\".navigation--center\", container),\n      });\n\n      if (theme.inlineNavigationCheck) {\n        theme.inlineNavigationCheck();\n        $(window).on(\n          \"debouncedresize.headerSection\",\n          theme.inlineNavigationCheck\n        );\n      }\n    };\n\n    this.onSectionUnload = function (container) {\n      $(container).off(\".headerSection\");\n      $(window).off(\".headerSection\");\n      $(\".disclosure\", container).each(function () {\n        $(this).data(\"disclosure\").unload();\n      });\n      theme.Navigation.destroy(\n        $(\".navigation\", container),\n        $(\".navigation--left\", container)\n      );\n    };\n  })();\n  theme.FooterSection = new (function () {\n    this.onSectionLoad = function (container) {\n      $(\".disclosure\", container).each(function () {\n        $(this).data(\"disclosure\", new theme.Disclosure($(this)));\n      });\n    };\n\n    this.onSectionUnload = function (container) {\n      $(\".disclosure\", container).each(function () {\n        $(this).data(\"disclosure\").unload();\n      });\n    };\n  })();\n  theme.AnnouncementBarSection = new (function () {\n    this.onSectionLoad = function (container) {\n      $(\".disclosure\", container).each(function () {\n        $(this).data(\"disclosure\", new theme.Disclosure($(this)));\n      });\n    };\n\n    this.onSectionUnload = function (container) {\n      $(\".disclosure\", container).each(function () {\n        $(this).data(\"disclosure\").unload();\n      });\n    };\n  })(); // Manage option dropdowns\n\n  theme.productData = {};\n  theme.OptionManager = new (function () {\n    var _ = this;\n\n    _._getVariantOptionElement = function (variant, $container) {\n      return $container.find(\n        'select[name=\"id\"] option[value=\"' + variant.id + '\"]'\n      );\n    };\n\n    _.selectors = {\n      container: \".product-detail\",\n      gallery: \".gallery\",\n      priceArea: \".price-area\",\n      submitButton: \"input[type=submit], button[type=submit]\",\n      multiOption: \".option-selectors\",\n      powerstep: \"#powerstep-container\"\n    };\n    _.strings = {\n      priceNonExistent: theme.strings.products_variant_non_existent,\n      buttonDefault: theme.strings.products_product_add_to_cart,\n      buttonNoStock: theme.strings.products_variant_no_stock,\n      buttonNoVariant: theme.strings.products_variant_non_existent,\n      unitPriceSeparator: theme.strings.products_product_unit_price_separator,\n      inventoryNotice: theme.strings.onlyXLeft,\n    };\n\n    _._getString = function (key, variant) {\n      var string = _.strings[key];\n\n      if (variant) {\n        string = string.replace(\n          \"[PRICE]\",\n          '<span class=\"theme-money\">' +\n          theme.Shopify.formatMoney(variant.price, theme.money_format) +\n          \"</span>\"\n        );\n      }\n\n      return string;\n    };\n\n    _.getProductData = function ($form) {\n      var productId = $form.data(\"product-id\");\n      var data = null;\n      var productJson = document.getElementById(\"ProductJson-\" + productId);\n\n      if (productJson) {\n        if (!theme.productData[productId]) {\n          theme.productData[productId] = JSON.parse(\n            productJson.innerHTML\n          );\n        }\n\n        data = theme.productData[productId];\n\n        if (!data) {\n          console.log(\n            \"Product data missing (id: \" + $form.data(\"product-id\") + \")\"\n          );\n        }\n      }\n\n      return data;\n    };\n\n    (_.getBaseUnit = function (variant) {\n      return variant.unit_price_measurement.reference_value === 1\n        ? variant.unit_price_measurement.reference_unit\n        : variant.unit_price_measurement.reference_value +\n        variant.unit_price_measurement.reference_unit;\n    }),\n      (_.addVariantUrlToHistory = function (variant) {\n        if (variant) {\n          var newurl =\n            window.location.protocol +\n            \"//\" +\n            window.location.host +\n            window.location.pathname +\n            \"?variant=\" +\n            variant.id;\n          window.history.replaceState(\n            {\n              path: newurl,\n            },\n            \"\",\n            newurl\n          );\n        }\n      });\n\n    _.updateSku = function (variant, $container) {\n      $container.find(\".sku .sku__value\").html(variant ? variant.sku : \"\");\n      $container\n        .find(\".sku\")\n        .toggleClass(\"sku--no-sku\", !variant || !variant.sku);\n    };\n\n    _.updateZappOptions = function (variant, $container) {\n      $container.find(\".installation-product\").find(\"fieldset\").data('selected', \"\");\n      $container.find(\".installation-product\").find('input[type=\"radio\"]').each(\n        function () { \n          $(this).prop(\"checked\", false) \n        });\n      $container.find(\"input[type='submit']\").prop(\"disabled\", true);\n    }\n\n    _.updateBarcode = function (variant, $container) {\n      $container\n        .find(\".barcode .barcode__value\")\n        .html(variant?.barcode ? `EAN: ${variant.barcode}` : \"\");\n      $container\n        .find(\".barcode\")\n        .toggleClass(\"barcode--no-barcode\", !variant || !variant.barcode);\n    };\n\n    _.updateInventoryNotice = function (variant, $container) {\n      var inventoryData = _._getVariantOptionElement(variant, $container).data(\n        \"inventory\"\n      );\n\n      if (inventoryData) {\n        $container\n          .find(\".product-inventory-notice\")\n          .removeClass(\"product-inventory-notice--no-inventory\")\n          .html(\n            _._getString(\"inventoryNotice\").replace(\n              \"[[ quantity ]]\",\n              inventoryData\n            )\n          );\n      } else {\n        $container\n          .find(\".product-inventory-notice\")\n          .addClass(\"product-inventory-notice--no-inventory\")\n          .empty();\n      }\n    };\n\n    _.updateBackorder = function (variant, $container) {\n      var $backorder = $container.find(\".backorder\");\n\n      if ($backorder.length) {\n        if (variant && variant.available) {\n          if (\n            variant.inventory_management &&\n            _._getVariantOptionElement(variant, $container).data(\"stock\") ==\n            \"out\"\n          ) {\n            var productData = _.getProductData($backorder.closest(\"form\"));\n\n            $backorder\n              .find(\".backorder__variant\")\n              .html(\n                productData.title +\n                (variant.title.indexOf(\"Default\") >= 0\n                  ? \"\"\n                  : \" - \" + variant.title)\n              );\n            $backorder.show();\n          } else {\n            $backorder.hide();\n          }\n        } else {\n          $backorder.hide();\n        }\n      }\n    };\n\n\n    _.updatePowerstep = function (variant, $powerstep, $powerstepDiscount) {\n      var $powerstepVariant = $powerstep.find(\"#powerstep__product-variant\");\n      var $powerstepDiscountVariant = $powerstepDiscount.find(\"#powerstep_discount__product-variant\");\n      var $powerstepPriceCompare = $powerstep.find(\".powerstep__product-price .was-price\");\n      var $powerstepPriceCurrent = $powerstep.find(\".powerstep__product-price .current-price\");\n\n      $powerstepVariant.text(variant.title);\n      $powerstepDiscountVariant.text(variant.title);\n\n      if ($powerstepPriceCurrent) {\n        $powerstepPriceCurrent.text(theme.Shopify.formatMoney(\n          variant.price,\n          theme.money_format\n        ));\n      }\n\n      if ($powerstepPriceCompare) {\n        $powerstepPriceCompare.text(theme.Shopify.formatMoney(\n          variant.compare_at_price,\n          theme.money_format\n        ));\n      }\n    },\n\n\n      _.updatePrice = function (variant, $container) {\n        var $priceArea = $container.find(_.selectors.priceArea);\n        $priceArea.removeClass(\"on-sale\");\n\n        if (variant) {\n          var $newPriceArea = $(\"<div>\");\n          var $price = $('<div class=\"price h4-style\">').appendTo($newPriceArea);\n          $('<span class=\"current-price theme-money\">')\n            .html(theme.Shopify.formatMoney(variant.price, theme.money_format))\n            .appendTo($price);\n\n          if (variant.compare_at_price > variant.price) {\n            $price.append(\" \");\n            $('<span class=\"was-price theme-money\">')\n              .html(\n                theme.Shopify.formatMoney(\n                  variant.compare_at_price,\n                  theme.money_format\n                )\n              )\n              .appendTo($price);\n            $price.addClass(\"on-sale\");\n          }\n\n          if (variant.unit_price_measurement) {\n            var $newUnitPriceArea = $('<div class=\"unit-price\">').appendTo(\n              $newPriceArea\n            );\n            $('<span class=\"unit-price__price theme-money\">')\n              .html(\n                theme.Shopify.formatMoney(variant.unit_price, theme.money_format)\n              )\n              .appendTo($newUnitPriceArea);\n            $('<span class=\"unit-price__separator\">')\n              .html(_._getString(\"unitPriceSeparator\"))\n              .appendTo($newUnitPriceArea);\n            $('<span class=\"unit-price__unit\">')\n              .html(_.getBaseUnit(variant))\n              .appendTo($newUnitPriceArea);\n          }\n\n          $priceArea.html($newPriceArea.html());\n        } else {\n          $priceArea.html(_._getString(\"priceNonExistent\", variant));\n          console.log(\"not avaiable!!\");\n        }\n      };\n\n    _._updateButtonText = function ($button, string, variant) {\n      $button.each(function () {\n        var newVal;\n        newVal = _._getString(\"button\" + string, variant);\n\n        if (newVal !== false) {\n          if ($(this).is(\"input\")) {\n            $(this).val(newVal);\n          } else {\n            $(this).html(newVal);\n          }\n        }\n      });\n    };\n\n    _.updateButtons = function (variant, $container) {\n      var $button = $container.find(_.selectors.submitButton);\n\n      if (variant && variant.available == true) {\n        $button.removeAttr(\"disabled\");\n\n        _._updateButtonText($button, \"Default\", variant);\n      } else {\n        $button.attr(\"disabled\", \"disabled\");\n\n        if (variant) {\n          _._updateButtonText($button, \"NoStock\", variant);\n        } else {\n          _._updateButtonText($button, \"NoVariant\", variant);\n        }\n      }\n    };\n\n    _.updateContainerStatusClasses = function (variant, $container) {\n      $container.toggleClass(\n        \"variant-status--unavailable\",\n        variant && !variant.available\n      );\n      $container.toggleClass(\n        \"variant-status--backorder\",\n        variant &&\n        variant.available &&\n        variant.inventory_management &&\n        _._getVariantOptionElement(variant, $container).data(\"stock\") == \"out\"\n      );\n      $container.toggleClass(\n        \"variant-status--on-sale\",\n        variant && variant.available && variant.compare_at_price > variant.price\n      );\n    };\n\n    _.initProductOptions = function (originalInput) {\n      $(originalInput)\n        .not(\".theme-init\")\n        .addClass(\"theme-init\")\n        .each(function () {\n          var $originalInput = $(this);\n\n          if ($originalInput.is(\"select\")) {\n            var productData = _.getProductData($originalInput.closest(\"form\")); // change state for original dropdown\n\n            $originalInput.on(\n              \"change.themeProductOptions firstrun.themeProductOptions\",\n              function (e, variant) {\n                if ($(this).is(\"input[type=radio]:not(:checked)\")) {\n                  return; // handle radios - only update for checked\n                }\n\n                var variant = variant;\n\n                if (!variant && variant !== false) {\n                  for (var i = 0; i < productData.variants.length; i++) {\n                    if (productData.variants[i].id == $(this).val()) {\n                      variant = productData.variants[i];\n                    }\n                  }\n                }\n\n                var $container = $(this).closest(_.selectors.container); // update price\n                var $powerstep = $(_.selectors.container).find(_.selectors.powerstep);\n                var $powerstepDiscount = $($container).find(\"#powerstep-container_discount\");\n\n                _.updatePrice(variant, $container); // update buttons\n\n                _.updateButtons(variant, $container); // emit an event to broadcast the variant update\n\n                $(window).trigger(\"cc-variant-updated\", {\n                  variant: variant,\n                  product: productData,\n                }); // variant images\n\n                if (variant && variant.featured_media) {\n                  $container\n                    .find(_.selectors.gallery)\n                    .trigger(\"variantImageSelected\", variant);\n                } // extra details\n\n                _.updateBarcode(variant, $container);\n\n                _.updateSku(variant, $container);\n\n                _.updateInventoryNotice(variant, $container);\n\n                _.updateBackorder(variant, $container);\n\n                _.updateContainerStatusClasses(variant, $container); // variant urls\n\n                _.updatePowerstep(variant, $powerstep, $powerstepDiscount);\n\n                var $form = $(this).closest(\"form\");\n\n                if ($form.data(\"enable-history-state\") && e.type == \"change\") {\n                  _.addVariantUrlToHistory(variant);\n                  $form.attr(\"data-variant-id\", variant.id);\n                } // allow other things to hook on\n\n                if($container.find(\".installation-product\").length) {\n                  _.updateZappOptions(\"\", $container);\n                }\n\n                $(this).trigger(\"variantChanged\", variant);\n              }\n            ); // split-options wrapper\n\n\n\n\n            $originalInput\n              .closest(_.selectors.container)\n              .find(_.selectors.multiOption)\n              .on(\"change.themeProductOptions\", \"select\", function () {\n                var selectedOptions = [];\n                $(this)\n                  .closest(_.selectors.multiOption)\n                  .find(\"select\")\n                  .each(function () {\n                    selectedOptions.push($(this).val());\n                  }); // find variant\n\n                var variant = false;\n\n                for (var i = 0; i < productData.variants.length; i++) {\n                  var v = productData.variants[i];\n                  var matchCount = 0;\n\n                  for (var j = 0; j < selectedOptions.length; j++) {\n                    if (v.options[j] == selectedOptions[j]) {\n                      matchCount++;\n                    }\n                  }\n\n                  if (matchCount == selectedOptions.length) {\n                    variant = v;\n                    break;\n                  }\n                } // trigger change\n\n                if (variant) {\n                  $originalInput.val(variant.id);\n                }\n\n                $originalInput.trigger(\"change\", variant);\n              }); // first-run\n\n            $originalInput.trigger(\"firstrun\");\n          } // ajax\n\n          theme.applyAjaxToProductForm($originalInput.closest(\"form\"));\n        });\n    };\n    // theme.applyAjaxToProductForm($('#shopify-section-try-on-fit [data-ajax-add-to-cart=\"true\"]'));\n    theme.applyAjaxToProductForm($('[data-ajax-add-to-cart=\"true\"]'));\n\n    _.unloadProductOptions = function (originalInput) {\n      $(originalInput)\n        .removeClass(\"theme-init\")\n        .each(function () {\n          $(this).trigger(\"unloading\").off(\".themeProductOptions\");\n          $(this)\n            .closest(_.selectors.container)\n            .find(_.selectors.multiOption)\n            .off(\".themeProductOptions\");\n          theme.removeAjaxFromProductForm($(this).closest(\"form\"));\n        });\n    };\n  })();\n  theme.owlCarouselEventList =\n    [\n      \"to\",\n      \"next\",\n      \"prev\",\n      \"destroy\",\n      \"initialized\",\n      \"resized\",\n      \"refreshed\",\n    ].join(\".owl.carousel \") + \".owl.carousel\";\n\n  theme.beforeCarouselLoadEventBlockFix = function (carouselEls) {\n    $(carouselEls).on(theme.owlCarouselEventList, function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  theme.beforeCarouselUnloadEventBlockFix = function (carouselEls) {\n    $(carouselEls).off(theme.owlCarouselEventList);\n  };\n\n  theme.loadCarousels = function (container) {\n    /// Carousels\n    $(\".carousel\", container).each(function () {\n      var $this = $(this);\n\n      function getTotalProductBlockWidth() {\n        var productBlockTotalWidth = 0;\n        $this\n          .find(\n            $this.hasClass(\"owl-loaded\")\n              ? \".owl-item:not(.cloned)\"\n              : \".product-block\"\n          )\n          .each(function () {\n            productBlockTotalWidth += $(this).outerWidth(true);\n          });\n        return productBlockTotalWidth;\n      } // next & prev arrows\n\n      $this\n        .closest(\".collection-slider\")\n        .on(\"click.themeCarousel\", \".prev, .next\", function (e) {\n          e.preventDefault();\n          var carousel = $(this)\n            .closest(\".collection-slider\")\n            .find(\".owl-carousel\")\n            .data(\"owl.carousel\");\n\n          if ($(this).hasClass(\"prev\")) {\n            carousel.prev();\n          } else {\n            carousel.next();\n          }\n        }); // create options\n\n      var carouselOptions, isLooping;\n      var fixedMode = !$(this).closest(\".container--no-max\").length;\n      $this.toggleClass(\"carousel--fixed-grid-mode\", fixedMode);\n\n      if (fixedMode) {\n        var desktopNumPerRow = parseInt(\n          $(this)[0].className.match(/per-row-(.)/)[1]\n        );\n        carouselOptions = {\n          margin: 0,\n          loop: false,\n          autoWidth: false,\n          items: 5,\n          center: false,\n          nav: false,\n          dots: false,\n          responsive: {\n            0: {\n              items: desktopNumPerRow < 4 ? 1 : 2,\n            },\n            480: {\n              items: Math.min(2, desktopNumPerRow - 2),\n            },\n            767: {\n              items: desktopNumPerRow - 1,\n            },\n            1000: {\n              items: desktopNumPerRow,\n            },\n          },\n        };\n      } else {\n        isLooping = getTotalProductBlockWidth() > $this.width();\n        carouselOptions = {\n          margin: 0,\n          loop: isLooping,\n          autoWidth: true,\n          items: Math.min($this.children().length, 8),\n          center: true,\n          nav: false,\n          dots: false,\n        };\n      } // init carousel\n\n      var loadCarousel = function loadCarousel() {\n        // remove data-src as not in correct format for Owl to parse\n        $this.find(\"[data-src]\").each(function () {\n          $(this)\n            .attr(\"data-src-temp\", $(this).attr(\"data-src\"))\n            .removeAttr(\"data-src\");\n        }); // fix for event propagation in nested owl carousels\n\n        theme.beforeCarouselLoadEventBlockFix($this); // run after carousel is initialised\n\n        $this.on(\"initialized.owl.carousel\", function () {\n          // restore data-src\n          $this.find(\"[data-src-temp]\").each(function () {\n            $(this)\n              .attr(\"data-src\", $(this).attr(\"data-src-temp\"))\n              .removeAttr(\"data-src-temp\");\n          }); // lazysizes\n\n          $this\n            .find(\".lazyload--manual\")\n            .removeClass(\"lazyload--manual\")\n            .addClass(\"lazyload\"); // ensure clones are processed from scratch\n\n          theme.ProductBlockManager.loadImages(\n            $this.closest(\"[data-section-type]\")\n          ); // recalculate widths, after the above's async calls\n\n          setTimeout(function () {\n            $this.data(\"owl.carousel\").invalidate(\"width\");\n            $this.trigger(\"refresh.owl.carousel\");\n          }, 10);\n        }); // run after carousel is initialised or resized\n\n        $this.on(\n          \"initialized.owl.carousel resized.owl.carousel\",\n          function (evt) {\n            // only loop if items do not all fit on screen, in non-fixed mode\n            if (!fixedMode && evt.type == \"resized\") {\n              var shouldLoop = getTotalProductBlockWidth() > $this.width();\n\n              if (shouldLoop != isLooping) {\n                // destroy and rebuild carousel with appropriate loop setting\n                carouselOptions.loop = shouldLoop;\n                isLooping = shouldLoop; // destroy function\n\n                $(evt.target).data(\"owl.carousel\").destroy(); // build again\n\n                $(evt.target).owlCarousel(carouselOptions); // do no more in this callback\n\n                return;\n              }\n            } // layout fixes\n\n            setTimeout(function () {\n              // fixes\n              var currentWidth = $this.find(\".owl-stage\").width();\n              var stageIsPartiallyOffScreen = currentWidth > $this.width();\n\n              if (stageIsPartiallyOffScreen) {\n                // more elements than fit in viewport\n                // resize stage to avoid rounding-error wrapping\n                var newWidth = 0;\n                $this.find(\".owl-item\").each(function () {\n                  newWidth += $(this).outerWidth(true) + 1;\n                });\n                $this\n                  .find(\".owl-stage\")\n                  .css({})\n                  .removeClass(\"owl-stage--items-fit\");\n              } else {\n                // all elements fit inside viewport\n                // centre-align using css, if not full\n                $this\n                  .find(\".owl-stage\")\n                  .addClass(\"owl-stage--items-fit\")\n                  .css({});\n              } // previous/next button visibility\n\n              $this\n                .closest(\".collection-slider\")\n                .find(\".prev, .next\")\n                .toggleClass(\"owl-btn-disabled\", !stageIsPartiallyOffScreen);\n            }, 10);\n          }\n        ); // run when the contents change, for any reason\n\n        theme.carouselInputIncrementer = theme.carouselInputIncrementer || 0;\n        $this\n          .on(\"refreshed.owl.carousel\", function () {\n            // set a11y attrs to avoid clone items giving duplication errors\n            $(\".owl-item\", this).removeAttr(\"aria-hidden\");\n            $(\".owl-item.cloned\", this)\n              .attr(\"aria-hidden\", \"true\")\n              .each(function () {\n                theme.carouselInputIncrementer++;\n                var uniquenessSuffix = \"_\" + theme.carouselInputIncrementer;\n                $(this)\n                  .find(\n                    \"form[id]:not([data-id-altered]), :input[id]:not([data-id-altered])\"\n                  )\n                  .each(function () {\n                    $(this).attr(\"id\", $(this).attr(\"id\") + uniquenessSuffix);\n                  })\n                  .attr(\"data-id-altered\", true);\n                $(this)\n                  .find(\"label[for]:not([data-id-altered])\")\n                  .each(function () {\n                    $(this).attr(\"for\", $(this).attr(\"for\") + uniquenessSuffix);\n                  })\n                  .attr(\"data-id-altered\", true);\n              });\n          })\n          .addClass(\"owl-carousel\")\n          .owlCarousel(carouselOptions);\n      };\n\n      loadCarousel();\n    });\n  };\n\n  theme.unloadCarousels = function (container) {\n    $(\".collection-slider\", container).off(\".themeCarousel\");\n    $(\".slick-slider\", container).slick(\"unslick\");\n    theme.beforeCarouselUnloadEventBlockFix($(\".owl-carousel\", container));\n    $(\".owl-carousel\", container).each(function () {\n      $(this).data(\"owl.carousel\").destroy();\n    });\n  };\n\n  theme.saveGridStreamChoice = function (type) {\n    var cfg = {\n      expires: 1,\n      path: \"/\",\n      domain: window.location.hostname,\n    };\n    $.cookie(\"gridstream\", type, cfg);\n  };\n\n  theme.getGridStreamChoice = function () {\n    return $.cookie(\"gridstream\");\n  }; // Enables any images inside a container\n\n  theme.awakenImagesFromSlumber = function ($cont) {\n    $cont.find(\".lazyload--manual:not(.lazyload)\").addClass(\"lazyload\");\n  }; // Process product block layout\n\n  theme.ProductBlockManager = new (function () {\n    var _ = this;\n\n    _.loadImages = function (container) {\n      var container = container;\n\n      if (typeof container === \"undefined\") {\n        container = $(\"body\");\n      }\n\n      _.afterImagesResized(container);\n    };\n\n    _.afterImagesResized = function (container) {\n      var container = container;\n\n      if (typeof container === \"undefined\") {\n        container = $(\"body\");\n      } // All titles must line up\n\n      $(\n        \".collection-listing .product-list.product-list--image-shape-natural\",\n        container\n      ).each(function () {\n        if (\n          $(window).width() >= 768 ||\n          $(this).closest(\".carousel\").length > 0\n        ) {\n          var tallest = 0;\n          $(this)\n            .find(\n              \".product-block.detail-mode-permanent .image-cont .primary-image img\"\n            )\n            .each(function () {\n              if ($(this).height() > tallest) tallest = $(this).height();\n            });\n          $(this)\n            .find(\n              \".product-block.detail-mode-permanent .image-cont .primary-image\"\n            )\n            .css(\"min-height\", tallest);\n        } else {\n          $(this)\n            .find(\n              \".product-block.detail-mode-permanent .image-cont .primary-image\"\n            )\n            .css(\"min-height\", \"\");\n        }\n      }); // undo for list view\n\n      $(\n        \".collection-listing-stream .product-list .product-block.detail-mode-permanent .image-cont .primary-image\"\n      ).css(\"min-height\", \"\");\n\n      _.alignProductBlockHeights(container);\n    };\n\n    _.alignProductBlockHeights = function (container) {\n      var container = container;\n\n      if (typeof container === \"undefined\") {\n        container = $(\"body\");\n      } // All product blocks must be the same height, for quick-buy alignment\n\n      $(\".collection-listing .product-list\", container).each(function () {\n        if (\n          $(window).width() >= 768 ||\n          $(this).closest(\".carousel\").length > 0\n        ) {\n          var tallest = 0;\n          $(this)\n            .find(\".product-block .block-inner .block-inner-inner\")\n            .each(function () {\n              if ($(this).height() > tallest) tallest = $(this).height();\n            });\n          $(this)\n            .find(\".product-block .block-inner\")\n            .css(\"min-height\", tallest);\n        } else {\n          $(this).find(\".product-block .block-inner\").css(\"min-height\", \"\");\n        }\n      });\n    };\n  })();\n\n  theme.initToggleTargets = function (container) {\n    $(\"a[data-toggle-target]:not(.toggle-init)\", container)\n      .addClass(\"toggle-init\")\n      .each(function () {\n        var $target = $($(this).data(\"toggle-target\"));\n        $(this)\n          .find(\".state\")\n          .html(\n            $target.is(\":visible\") && !$target.hasClass(\"height-hidden\")\n              ? \"-\"\n              : \"+\"\n          );\n      });\n  }; // Style any text-only links nicely\n\n  theme.classUpTextLinks = function (container) {\n    $(\".user-content a:has(img)\", container).addClass(\"image-link\");\n  }; /// Select2 with swatches\n\n  theme.select2 = {\n    transitionOutDelay: 250,\n    // match CSS transition for transition out\n    init: function init($els, config) {\n      var standardSelectOptions = {\n        minimumResultsForSearch: Infinity,\n        width: \"computedstyle\",\n      };\n      var swatchSelectOptions = {\n        minimumResultsForSearch: Infinity,\n        templateResult: theme.select2.swatchSelect2OptionTemplate,\n        templateSelection: theme.select2.swatchSelect2OptionTemplate,\n        width: \"computedstyle\",\n      };\n\n      if (typeof config !== \"undefined\") {\n        standardSelectOptions = $.extend(standardSelectOptions, config);\n        swatchSelectOptions = $.extend(swatchSelectOptions, config);\n      }\n\n      $els\n        .not(\".select2-hidden-accessible\")\n        .each(function () {\n          // init\n          $(this).select2(\n            $(this).data(\"colour-swatch\")\n              ? swatchSelectOptions\n              : standardSelectOptions\n          );\n        })\n        .on(\"select2:open\", function (e) {\n          // transition in\n          var $resCon = $(this)\n            .data(\"select2\")\n            .$results.closest(\".select2-dropdown\")\n            .addClass(\"select2-dropdown--pre-reveal\");\n          setTimeout(function () {\n            $resCon.addClass(\"select2-dropdown--enable-trans\");\n            setTimeout(function () {\n              $resCon.removeClass(\"select2-dropdown--pre-reveal\");\n            }, 10);\n          }, 10);\n        })\n        .on(\"select2:closing\", function (e) {\n          // handle transitions\n          var $select = $(this);\n          var $resCon = $select\n            .data(\"select2\")\n            .$results.closest(\".select2-dropdown\"); // ensure no other transitions in progress\n\n          clearTimeout($select.data(\"select2TransOutTimeoutId\")); // first time through, begin transition and trigger again\n\n          if (!$resCon.hasClass(\"select2-dropdown--pre-close\")) {\n            $resCon.addClass(\"select2-dropdown--pre-close\");\n            $select.data(\n              \"select2TransOutTimeoutId\",\n              setTimeout(function () {\n                $select.select2(\"close\");\n              }, theme.select2.transitionOutDelay)\n            );\n            return false;\n          }\n        })\n        .on(\"select2:close\", function (e) {\n          // reset transitions\n          $(this)\n            .data(\"select2\")\n            .$results.closest(\".select2-dropdown\")\n            .removeClass(\n              \"select2-dropdown--enable-trans select2-dropdown--pre-close\"\n            );\n        });\n    },\n    destroyAllIn: function destroyAllIn($container) {\n      theme.select2.destroy($(\"select[data-select2-id]\", $container));\n    },\n    destroy: function destroy($els) {\n      $els.select2(\"destroy\").off(\"select2:open select2:closing select2:close\");\n    },\n    swatchSelect2OptionTemplate: function swatchSelect2OptionTemplate(state) {\n      if (state.id) {\n        var colourKey = removeDiacritics(state.id)\n          .toLowerCase()\n          .replace(/'/g, \"\")\n          .replace(/[^a-z0-9]+/g, \"-\")\n          .replace(/-+/g, \"-\")\n          .replace(/-*$/, \"\");\n        return $(\n          [\n            '<div class=\"swatch-option\">',\n            '<span class=\"swatch-option__nugget bg-',\n            colourKey,\n            '\"></span>',\n            '<span class=\"swatch-option__label\">',\n            state.text,\n            \"</span>\",\n            \"</div>\",\n          ].join(\"\")\n        );\n      } else {\n        return $(\n          [\n            '<div class=\"swatch-option swatch-option--all\">',\n            '<span class=\"swatch-option__label\">',\n            state.text,\n            \"</span>\",\n            \"</div>\",\n          ].join(\"\")\n        );\n      }\n    },\n  }; // dom ready\n\n  $(function ($) {\n    var $ = $; // keep this ref local\n\n    $(document).on(\"keyup.themeTabCheck\", function (evt) {\n      if (evt.keyCode === 9) {\n        $(\"body\").addClass(\"tab-used\");\n        $(document).off(\"keyup.themeTabCheck\");\n      }\n    }); //Return elements that have an ancestor/parent matching the supplied selector\n\n    $.fn.hasAncestor = function (a) {\n      return this.filter(function () {\n        return $(this).closest(a).length > 0;\n      });\n    }; //Side up and remove\n\n    $.fn.slideUpAndRemove = function (speed) {\n      if (typeof speed == \"undefined\") speed = 200;\n      $(this).each(function () {\n        $(this).slideUp(speed, function () {\n          $(this).remove();\n        });\n      });\n    }; /// Reusable function to expand/contract a div\n\n    $(document).on(\"click\", \"a[data-toggle-target]\", function (e) {\n      var $target = $($(this).data(\"toggle-target\"));\n\n      if ($target.hasClass(\"height-hidden\")) {\n        $target.hide().removeClass(\"height-hidden\");\n      }\n\n      $(this)\n        .find(\".state\")\n        .html($target.is(\":visible\") ? \"+\" : \"-\");\n      $target.slideToggle(200);\n      e.preventDefault();\n    }); //Redirect dropdowns\n\n    $(document).on(\"change\", \"select.navdrop\", function () {\n      window.location = $(this).val();\n    }); //General purpose lightbox\n\n    $('a[rel=\"fancybox\"]').fancybox(\n      $.extend({}, theme.fbOpts(), {\n        titleShow: false,\n      })\n    ); /// Mobile nav\n\n    $(document).on(\"click\", \".mobile-nav-toggle\", function (e) {\n      e.preventDefault();\n      $(\"body\").toggleClass(\"reveal-mobile-nav\");\n      $(\".announcement-bar\").addClass(\"announcement-bar__side-menu-on\");\n    }); /// General window shade\n\n    $(\n      '<a href=\"#\" class=\"page-shade\" aria-label=\"' +\n      theme.strings.general_navigation_menu_toggle_aria_label +\n      '\"></a>'\n    )\n      .on(\"click\", function () {\n        $(\"body\").removeClass(\"reveal-mobile-nav show-search\");\n        $(\".announcement-bar\").removeClass(\"announcement-bar__side-menu-on\");\n        return false;\n      })\n      .appendTo(\"body\");\n\n    // increase z-index of announcement-bar when clicking outside side-menu so that list of languages is visible (in header section and x button)\n    $(document).on(\"click\", \".header-shade, .navigation__tier-1-container .mobile-nav-toggle\", function () {\n      $(\".announcement-bar\").removeClass(\"announcement-bar__side-menu-on\");\n    });\n\n    // rotate animation for disclosure arrow \n    let arrowDirection = true;\n    $(\".selectors-form__item\").click(function () {\n      $(\".disclosure__toggle-arrow svg\").css({ \"transform\": `rotate(${arrowDirection ? '180' : '0'}deg)`, \"transition\": \"ease .1s\" });\n      arrowDirection = !arrowDirection;\n    });\n\n    if (theme.settings.prod_thumb_detail_show) {\n      // utility function for quickbuy (closes all quickbuys in passed blocks, in a collection grid)\n      var contractDetail = function contractDetail($blocks, speed) {\n        if ($blocks.length > 0) {\n          $blocks.removeClass(\"expanded\");\n          $blocks\n            .find(\".quickbuy-container\")\n            .stop()\n            .animate(\n              {\n                height: 0,\n              },\n              speed,\n              function () {\n                $(this).find(\".inner\").empty();\n              }\n            );\n          $blocks.stop().each(function () {\n            $(this).animate(\n              {\n                paddingBottom: 0,\n              },\n              speed\n            );\n          });\n        }\n      }; // quick buy - managing slide-down quickbuy in both grids and carousels\n\n      //You also need to know where to scroll to\n      var saveCollectionPageData = function saveCollectionPageData() {\n        $(\".collection-listing-stream .product-block\").each(function () {\n          $(this).data(\"offsetTop\", $(this).offset().top);\n        });\n        $(\".collection-listing\").each(function () {\n          var $blocks = $(this).find(\".product-block\");\n          if ($blocks.length <= 1) return true; // Skip for empty colls\n\n          var row = 0;\n          var currTop = 0; //Heights are fixed. Check two in case somebody has expanded one...\n\n          var blockHeight = Math.min(\n            $blocks.first().outerHeight(),\n            $($blocks[1]).outerHeight()\n          );\n          var blockPageOffset = $blocks.first().offset().top;\n          $blocks.each(function (index) {\n            var currOffsetTop = $(this).offset().top;\n\n            if (index == 0) {\n              currTop = currOffsetTop;\n            } else {\n              if (currOffsetTop > currTop) {\n                row++;\n                currTop = currOffsetTop;\n              }\n            }\n\n            $(this).data({\n              offsetTop: blockPageOffset + row * blockHeight,\n            });\n          });\n        });\n      }; //End of code specific to collection-page slide-downs\n\n      var droppyDownAnimSpeed = 500;\n      $(document).on(\n        \"click\",\n        \".product-list .product-block:not(.collection-block):not(.main-search-result) .product-link:not(product-link--no-qb)\",\n        function () {\n          var pageWidth = $(window).width(),\n            productUrl = $(this).attr(\"href\"); //Only show dropdown if screen is large enough for it to be useful\n\n          if (pageWidth > 767) {\n            // cancel current request if one exists\n            if (theme.currentQuickbuyRequest) {\n              theme.currentQuickbuyRequest.abort();\n            }\n\n            var $block = $(this).closest(\".product-block\"),\n              $detailCont = null,\n              $quickbuyCont = null,\n              $slider = $(this).closest(\".collection-slider\"),\n              $sliderRow = null; // do different things if it's inside a slideshow\n\n            if ($slider.length > 0) {\n              $sliderRow = $slider.closest(\".collection-slider-row\"); // slider without detail\n\n              if ($sliderRow.find(\".quickbuy-container\").length === 0) {\n                return;\n              }\n\n              $quickbuyCont = $sliderRow.find(\".quickbuy-container\");\n            } else {\n              $quickbuyCont = $block.find(\".quickbuy-container\");\n            }\n\n            $detailCont = $quickbuyCont.find(\".inner\"); // toggle active class on block\n\n            if ($block.toggleClass(\"expanded\").hasClass(\"expanded\")) {\n              // expanding\n              if ($slider.length > 0) {\n                // if another block is expanded, remove its expanded class\n                var noneExpanded =\n                  $slider\n                    .find(\".product-block.expanded\")\n                    .not($block)\n                    .removeClass(\"expanded\").length === 0; // if expanding from empty, set initial detail container height to 0\n\n                if (noneExpanded) {\n                  $quickbuyCont.height(0);\n                } else {\n                  // unload existing quickbuy\n                  theme.OptionManager.unloadProductOptions(\n                    $('[name=\"id\"]', $quickbuyCont)\n                  );\n                  $(\".gallery\", $quickbuyCont).off(this.namespace);\n                  $(\".slideshow\", $quickbuyCont).slick(\"unslick\");\n                } // what to adjust when details change size\n\n                $quickbuyCont.off(\"changedsize\").on(\"changedsize\", function () {\n                  $quickbuyCont.stop().animate(\n                    {\n                      height: $detailCont.outerHeight(),\n                    },\n                    droppyDownAnimSpeed\n                  );\n                });\n              } else {\n                // close expanded siblings\n                var $expandedSiblings = $block.siblings(\".expanded\");\n                $expandedSiblings.each(function () {\n                  contractDetail($(this), 0); // unload existing quickbuy\n\n                  theme.OptionManager.unloadProductOptions(\n                    $('[name=\"id\"]', this)\n                  );\n                  theme.destroyProductGallery(this);\n                }); // what do adjust when details change size\n\n                $quickbuyCont.off(\"changedsize\").on(\"changedsize\", function () {\n                  // check expanded class in case it's mid close transition\n                  if ($block.hasClass(\"expanded\")) {\n                    var targetHeight = $detailCont.outerHeight(); // slide down instantly if a neighbour is expanded\n\n                    var speed =\n                      $expandedSiblings.length > 0 ? 0 : droppyDownAnimSpeed;\n                    $block.stop().animate(\n                      {\n                        paddingBottom: targetHeight + 20,\n                      },\n                      speed\n                    ); // extra for gap underneath\n\n                    $quickbuyCont.stop().animate(\n                      {\n                        height: targetHeight,\n                      },\n                      speed\n                    );\n                  }\n                });\n              } // a little hack to make sure everything lines up\n\n              if (window.SPR) {\n                theme.ProductBlockManager.alignProductBlockHeights();\n              } // add spinner\n\n              $detailCont.html('<div class=\"loading-spinner\"></div>');\n              $quickbuyCont.trigger(\"changedsize\"); // load in content\n\n              var url = $(this).attr(\"href\");\n              url +=\n                url.indexOf(\"?\") >= 0 ? \"&view=_lightbox\" : \"?view=_lightbox\";\n              theme.currentQuickbuyRequest = $.get(url, function (response) {\n                var $newDetail = $(\"<div>\" + response + \"</div>\").find(\n                  \".product-detail\"\n                ); // convert to quickbuy content\n\n                $newDetail.find(\".more\").attr(\"href\", productUrl);\n                $newDetail\n                  .find(\".detail .title\")\n                  .wrapInner($(\"<a>\").attr(\"href\", productUrl));\n                $newDetail\n                  .find(\".show-gallery\")\n                  .removeClass(\"show-gallery\")\n                  .attr(\"href\", productUrl);\n                $detailCont.html($newDetail); // dpb if present\n\n                if (\n                  Shopify.PaymentButton &&\n                  $quickbuyCont.find(\".shopify-payment-button\").length\n                ) {\n                  // resize after loading extra payment buttons\n                  var _f = null;\n\n                  _f = function f() {\n                    document.removeEventListener(\n                      \"shopify:payment_button:loaded\",\n                      _f\n                    );\n                    $quickbuyCont.trigger(\"changedsize\");\n                  };\n\n                  document.addEventListener(\n                    \"shopify:payment_button:loaded\",\n                    _f\n                  );\n                  Shopify.PaymentButton.init();\n                } // the order of these is important:\n\n                theme.initProductGallery($quickbuyCont); // 1\n\n                $quickbuyCont\n                  .find('[name=\"id\"]')\n                  .trigger(\"optionate\") // 2\n                  .on(\"variantChanged\", function () {\n                    $quickbuyCont.trigger(\"changedsize\"); // (4)\n                  });\n                $quickbuyCont.trigger(\"changedsize\"); // 3\n              }).always(function () {\n                theme.currentQuickbuyRequest = false;\n              }); // enable close button\n\n              $quickbuyCont.find(\".close-detail\").removeAttr(\"tabindex\"); // scroll to appropriate position\n              // qb: top of quick buy\n              // bl: top of product block\n\n              var scrollMode = \"qb\";\n              var scrollOffset = -120;\n\n              if ($(\".section-header\").css(\"position\") == \"sticky\") {\n                scrollOffset -= $(\".section-header\").height();\n              }\n\n              if (scrollMode == \"qb\") {\n                $(\"html:not(:animated),body:not(:animated)\").animate(\n                  {\n                    scrollTop: $quickbuyCont.offset().top + scrollOffset,\n                  },\n                  500\n                );\n              } else {\n                if ($slider.length > 0) {\n                  // simple for slider\n                  $(\"html:not(:animated),body:not(:animated)\").animate(\n                    {\n                      scrollTop: $block.offset().top,\n                    },\n                    500\n                  );\n                } else {\n                  // need to use top of block when no quickbuys are visible\n                  saveCollectionPageData();\n                  var offsetTop =\n                    typeof $block.data(\"offsetTop\") != \"undefined\"\n                      ? $block.data(\"offsetTop\")\n                      : $block.offset().top;\n                  $(\"html:not(:animated),body:not(:animated)\").animate(\n                    {\n                      scrollTop: offsetTop + scrollOffset,\n                    },\n                    500\n                  );\n                }\n              }\n            } else {\n              // close\n              if ($slider.length > 0) {\n                // collapse detail container\n                $quickbuyCont.stop().animate(\n                  {\n                    height: 0,\n                  },\n                  droppyDownAnimSpeed,\n                  function () {\n                    // remove details\n                    $detailCont.empty();\n                  }\n                );\n              } else {\n                contractDetail($block, droppyDownAnimSpeed);\n              } // scroll to top of closing block\n\n              var scrollUpOffset = -140;\n              $(\"html:not(:animated),body:not(:animated)\").animate(\n                {\n                  scrollTop: $block.offset().top + scrollUpOffset,\n                },\n                500\n              ); // disable close button\n\n              $quickbuyCont.find(\".close-detail\").attr(\"tabindex\", \"-1\");\n            }\n\n            return false;\n          }\n        }\n      ); //Close button event\n\n      $(document).on(\"click\", \".quickbuy-container .close-detail\", function () {\n        var $slider = $(this).closest(\".collection-slider-row\");\n\n        if ($slider.length) {\n          $slider\n            .find(\".product-block.expanded .product-link:first\")\n            .trigger(\"click\");\n        } else {\n          $(this)\n            .closest(\".product-block\")\n            .find(\".product-link:first\")\n            .trigger(\"click\");\n        }\n\n        return false;\n      });\n    } /// Collection slider\n\n    jQuery.fn.reverse = [].reverse; //Genius deserves credit: http://stackoverflow.com/questions/1394020/jquery-each-backwards\n    /// Event for initialising options\n\n    $(document).on(\"optionate\", '[name=\"id\"]', function (e) {\n      // no product data? fetch using json now\n      var $form = $(this).closest(\"form\");\n      var productId = $form.data(\"product-id\");\n\n      if (\n        theme.productData[productId] ||\n        document.getElementById(\"ProductJson-\" + productId)\n      ) {\n        // reveal dynamic checkout buttons\n        if (\n          $(this)\n            .closest(\"form\")\n            .find(\".dynamic-checkout-buttons\")\n            .each(function () {\n              $(this).before($(this).html()).remove();\n            }).length > 0 &&\n          window.Shopify &&\n          Shopify.PaymentButton\n        ) {\n          Shopify.PaymentButton.init();\n        }\n      } else {\n        console.log(\"Product data missing\");\n      } // events on option change\n\n      $(this).on(\"variantChanged\", function (evt, variant) {\n        var $labelCont = $(\".product-detail\")\n          .find(\".productlabel-container\");\n        $labelCont.find(\".productlabel\").remove();\n        $labelCont.find(\".productlabel-wrap\").remove();\n        $labelCont.append($(\"#variant-label-\" + variant.id).html());\n        if (!variant.sku) {\n          $(\"#variant_sku\").closest(\"p\").closest(\"li\").hide();\n        } else {\n          $(\"#variant_sku\").closest(\"p\").closest(\"li\").show();\n          $(\"#variant_sku\").html(variant.sku);\n        }\n      });\n      theme.OptionManager.initProductOptions(this); // show box-style options\n\n      var $clickies = $form\n        .find(\"[data-make-box]\")\n        .addClass(\"has-clickyboxes\")\n        .find(\"select\")\n        .clickyBoxes(); // If we have clicky boxes, add the disabled-state to options that have no valid variants\n\n      if ($clickies.length > 0) {\n        // product form may have changed height. If in quick buy, resize container\n        $(this).closest(\".quickbuy-container\").trigger(\"changedsize\");\n        var productData = theme.OptionManager.getProductData($form); // each option\n\n        for (\n          var optionIndex = 0;\n          optionIndex < productData.options.length;\n          optionIndex++\n        ) {\n          // list each value for this option\n          var optionValues = {};\n\n          for (\n            var variantIndex = 0;\n            variantIndex < productData.variants.length;\n            variantIndex++\n          ) {\n            var variant = productData.variants[variantIndex];\n\n            if (\n              typeof optionValues[variant.options[optionIndex]] === \"undefined\"\n            ) {\n              optionValues[variant.options[optionIndex]] = false;\n            } // mark true if an option is available\n\n            if (variant.available) {\n              optionValues[variant.options[optionIndex]] = true;\n            }\n          } // mark any completely unavailable options\n\n          for (var key in optionValues) {\n            if (!optionValues[key]) {\n              $(\n                \".selector-wrapper:eq(\" + optionIndex + \") .clickyboxes li a\",\n                $form\n              )\n                .filter(function () {\n                  return $(this).attr(\"data-value\") == key;\n                })\n                .addClass(\"unavailable\");\n            }\n          }\n        }\n      } // select2\n\n      $form\n        .find(\".selector-wrapper:not([data-make-box]) select\")\n        .each(function () {\n          theme.select2.init($(this));\n        }); // unload clickies & select2\n\n      $(this).on(\"unloading\", function () {\n        $(this).off(\"unloading variantChanged\"); // unload clickyboxes\n\n        $form\n          .find(\".selector-wrapper select.clickybox-replaced\")\n          .clickyBoxes(\"destroy\"); // unload select2\n\n        theme.select2.destroyAllIn($form.find(\".selector-wrapper\"));\n      });\n    }); /// Galleries (inc. product page)\n    // when variant changes, and the variant has an image\n\n    $(document).on(\"variantImageSelected\", \".gallery\", function (e, data) {\n      // get image src\n      var mediaId = data.featured_media.id; // locate matching thumbnail\n\n      $(this)\n        .find('.thumbnails a[data-media-id=\"' + mediaId + '\"]:first')\n        .trigger(\"select\");\n    }); // click main product image (launch gallery)\n\n    $(document).on(\n      \"click\",\n      \".product-detail .gallery .main-image a.show-gallery\",\n      function () {\n        var images = [],\n          currentIndex = 0;\n        var $thumbs = $(this)\n          .closest(\".gallery\")\n          .find(\".thumbnails .thumbnail--media-image\");\n\n        if ($thumbs.length) {\n          $thumbs.each(function () {\n            var $imgThumb = $(this).find(\".rimage-outer-wrapper\").clone();\n            $imgThumb\n              .find(\".lazyloaded\")\n              .removeClass(\"lazyloaded\")\n              .addClass(\"lazyload\")\n              .parent()\n              .addClass(\"lazyload--placeholder\");\n            images.push({\n              thumbTag: $imgThumb,\n              zoomUrl: $(this).attr(\"href\"),\n            });\n          });\n          $thumbs.each(function (thisIndex) {\n            if ($(this).hasClass(\"selected\")) {\n              currentIndex = thisIndex;\n              return false;\n            }\n          });\n        } else {\n          var $imgThumb = $(this).find(\".rimage-outer-wrapper\").clone();\n          $imgThumb\n            .find(\".lazyloaded\")\n            .removeClass(\"lazyloaded\")\n            .addClass(\"lazyload\")\n            .parent()\n            .addClass(\"lazyload--placeholder\");\n          images.push({\n            thumbTag: $imgThumb,\n            zoomUrl: $(this).attr(\"href\"),\n          });\n        }\n\n        theme.buildGalleryViewer({\n          images: images,\n          current: currentIndex,\n          prev: theme.icons.chevronLeft,\n          next: theme.icons.chevronRight,\n          close: theme.icons.close,\n        });\n        return false;\n      }\n    ); // load any images that aren't inside a section\n\n    var $nonSectionedProductLists = $(\n      \".product-list, .collection-listing\"\n    ).filter(function () {\n      return $(this).closest(\"[data-section-type]\").length == 0;\n    });\n\n    if ($nonSectionedProductLists.length) {\n      theme.ProductBlockManager.loadImages($nonSectionedProductLists);\n    }\n\n    $(window).on(\"debouncedresize\", function () {\n      setTimeout(function () {\n        theme.ProductBlockManager.afterImagesResized(); // empty param req\n      }, 100); // after third party stuff\n    });\n\n    if (theme.settings.show_size_chart) {\n      // size chart link\n      $(document).on(\"click\", \".size-chart-link\", function () {\n        $.fancybox(\n          $.extend({}, theme.fbOpts(), {\n            showNavArrows: false,\n            content: $(this)\n              .closest(\".size-chart-container\")\n              .find(\".size-chart-content\")\n              .html(),\n          })\n        );\n        return false;\n      });\n    } /// Style text-only links\n\n    $(document).ready(function ($) {\n      $(\".usp-page-link\").on(\"click\", function (e) {\n        e.preventDefault();\n        if (!this.href) {\n          return;\n        }\n        $(\"#usp-page-content\").load(\"\" + this.href + \"\", function () {\n          $.fancybox(\n            $.extend({}, theme.fbOpts(), {\n              content: $(\"#usp-page-content\").html(),\n              showNavArrows: false,\n            }) //extend\n          ); // fancybox\n        }); //load\n      }); // onclick\n    }); // doc ready\n\n    theme.classUpTextLinks(document); // forms don't all have correct label attributes\n\n    $(\"#template label\").each(function () {\n      var $sibinputs = $(this).siblings('input:not([type=\"submit\"]), textarea');\n\n      if ($sibinputs.length == 1 && $sibinputs.attr(\"id\").length > 0) {\n        $(this).attr(\"for\", $sibinputs.attr(\"id\"));\n      }\n    }); /// Custom share buttons\n\n    function initTestimonialSlider() {\n      var slidesToShow = $(\".testimonials-slider\").data(\"slides-to-show\") || 2;\n\n      $(\".testimonials-slider\").slick({\n        infinite: true,\n        slidesToShow: slidesToShow,\n        slidesToScroll: 1,\n        adaptiveHeight: true,\n        prevArrow: $('.prev-arrow--testimonials_btn'),\n        nextArrow: $('.next-arrow--testimonials_btn'),\n        appendArrows: $('.testimonials-wrapper'),\n        responsive: [\n          {\n            breakpoint: 1024,\n            settings: {\n              slidesToShow: slidesToShow,\n              slidesToScroll: 1,\n              infinite: true,\n              dots: false,\n              arrows: true,\n            },\n          },\n          {\n            breakpoint: 600,\n            settings: {\n              slidesToShow: slidesToShow,\n              slidesToScroll: 1,\n              dots: false,\n              arrows: true,\n            },\n          },\n          {\n            breakpoint: 480,\n            settings: {\n              slidesToShow: 1,\n              slidesToScroll: 1,\n              dots: true,\n              arrows: false,\n            },\n          },\n        ],\n      });\n    }\n\n    $(document).ready(function () {\n      initTestimonialSlider();\n    });\n\n    window.addEventListener('shopify:section:load', function (event) {\n      initTestimonialSlider();\n    });\n\n    $(document).on(\"click\", \".sharing a\", function (e) {\n      var $parent = $(this).parent();\n\n      if ($parent.hasClass(\"twitter\")) {\n        e.preventDefault();\n        var url = $(this).attr(\"href\");\n        var width = 575,\n          height = 450,\n          left = ($(window).width() - width) / 2,\n          top = ($(window).height() - height) / 2,\n          opts =\n            \"status=1, toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\" +\n            \",width=\" +\n            width +\n            \",height=\" +\n            height +\n            \",top=\" +\n            top +\n            \",left=\" +\n            left;\n        window.open(url, \"Twitter\", opts);\n      } else if ($parent.hasClass(\"facebook\")) {\n        e.preventDefault();\n        var url = $(this).attr(\"href\");\n        var width = 626,\n          height = 256,\n          left = ($(window).width() - width) / 2,\n          top = ($(window).height() - height) / 2,\n          opts =\n            \"status=1, toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\" +\n            \",width=\" +\n            width +\n            \",height=\" +\n            height +\n            \",top=\" +\n            top +\n            \",left=\" +\n            left;\n        window.open(url, \"Facebook\", opts);\n      } else if ($parent.hasClass(\"pinterest\")) {\n        e.preventDefault();\n        var url = $(this).attr(\"href\");\n        var width = 700,\n          height = 550,\n          left = ($(window).width() - width) / 2,\n          top = ($(window).height() - height) / 2,\n          opts =\n            \"status=1, toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\" +\n            \",width=\" +\n            width +\n            \",height=\" +\n            height +\n            \",top=\" +\n            top +\n            \",left=\" +\n            left;\n        window.open(url, \"Pinterest\", opts);\n      } else if ($parent.hasClass(\"google\")) {\n        e.preventDefault();\n        var url = $(this).attr(\"href\");\n        var width = 550,\n          height = 450,\n          left = ($(window).width() - width) / 2,\n          top = ($(window).height() - height) / 2,\n          opts =\n            \"status=1, toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\" +\n            \",width=\" +\n            width +\n            \",height=\" +\n            height +\n            \",top=\" +\n            top +\n            \",left=\" +\n            left;\n        window.open(url, \"Google+\", opts);\n      }\n    });\n    $(document).on(\"click\", \".quantity-wrapper [data-quantity]\", function () {\n\n      if(typeof productQuantityIncrement == \"null\" || typeof productQuantityIncrement == \"undefined\" ) {\n        productQuantityIncrement = 1;\n      }\n\n      const adj = $(this).data(\"quantity\") == \"up\" ? parseInt(productQuantityIncrement) : -parseInt(productQuantityIncrement);\n      const $qty = $(this).closest(\".quantity-wrapper\").find(\"[name=quantity]\");\n      if ($qty.attr(\"step\")) {\n        adj *= parseInt($qty.attr(\"step\"));\n      }\n\n      if ($qty.val() == 1 && productQuantityIncrement != 1) {\n        $qty.val(Math.max(productQuantityIncrement, parseInt($qty.val()) + adj - 1)).trigger(\"change\");\n      } else {\n        $qty.val(Math.max(productQuantityIncrement, parseInt($qty.val()) + adj)).trigger(\"change\");\n      }\n\n      return false;\n    }); /// Responsive tables\n\n    $(\".responsive-table\").on(\n      \"click\",\n      \".responsive-table__cell-head\",\n      function () {\n        if ($(window).width() < 768) {\n          $(this).closest(\"tr\").toggleClass(\"expanded\");\n          return false;\n        }\n      }\n    ); /// Register all sections\n\n    theme.Sections.init();\n    theme.Sections.register(\"slideshow\", theme.SlideshowSection);\n    theme.Sections.register(\"gallery\", theme.GallerySection);\n    theme.Sections.register(\n      \"image-with-text-overlay\",\n      theme.ImageWithTextOverlaySection\n    );\n    theme.Sections.register(\n      \"featured-collection\",\n      theme.FeaturedCollectionSection\n    );\n    theme.Sections.register(\n      \"featured-collections\",\n      theme.FeaturedCollectionsSection\n    );\n    theme.Sections.register(\"map\", theme.MapSection);\n    theme.Sections.register(\"background-video\", theme.VideoManager, {\n      deferredLoadViewportExcess: 800,\n    });\n    theme.Sections.register(\"custom-row\", theme.CustomRowSection);\n    theme.Sections.register(\"featured-product\", theme.FeaturedProductSection);\n    theme.Sections.register(\"header\", theme.HeaderSection, {\n      deferredLoad: false,\n    });\n    theme.Sections.register(\"announcement-bar\", theme.AnnouncementBarSection, {\n      deferredLoad: false,\n    });\n    theme.Sections.register(\"footer\", theme.FooterSection);\n    theme.Sections.register(\"product-template\", theme.ProductTemplateSection, {\n      deferredLoad: false,\n    });\n    theme.Sections.register(\n      \"collection-template\",\n      theme.CollectionTemplateSection,\n      {\n        deferredLoad: false,\n      }\n    );\n    theme.Sections.register(\"blog-template\", theme.BlogTemplateSection, {\n      deferredLoad: false,\n    });\n    theme.Sections.register(\"cart-template\", theme.CartTemplateSection, {\n      deferredLoad: false,\n    });\n    theme.Sections.register(\n      \"list-collections-template\",\n      theme.ListCollectionsTemplateSection,\n      {\n        deferredLoad: false,\n      }\n    );\n    theme.Sections.register(\n      \"page-list-collections-template\",\n      theme.ListCollectionsTemplateSection,\n      {\n        deferredLoad: false,\n      }\n    );\n  }); //Register dynamically pulled in sections\n\n  $(function ($) {\n    if (cc.sections.length) {\n      cc.sections.forEach(function (section) {\n        try {\n          theme.Sections.register(section.name, section.section);\n        } catch (err) {\n          console.error(\n            \"Unable to register section \".concat(section.name, \".\"),\n            err\n          );\n        }\n      });\n    } else {\n      console.warn(\"Barry: No common sections have been registered.\");\n    }\n  });\n  var boost_pfs_categories_wrapper = $('.boost-pfs-popular-categories__categories-wrapper')\n  if ($(boost_pfs_categories_wrapper).hasClass('quick_links_same_width')) {\n    const quicklinks_Arr = [];\n\n    $(boost_pfs_categories_wrapper).find(\"> a\").map(function () {\n      quicklinks_Arr.push($(this).width());\n    }).get();\n\n    const quicklinks_max_width = Math.max(...quicklinks_Arr);\n\n    $(boost_pfs_categories_wrapper).attr('data-max-width-element', quicklinks_max_width.toString());\n    $(boost_pfs_categories_wrapper).find(\"a > div\").width(quicklinks_max_width);\n    $(boost_pfs_categories_wrapper).find(\"a > div\").css('text-align', 'center');\n  }\n  else {\n    if (!$(boost_pfs_categories_wrapper).hasClass('quick_links_same_width')) {\n      $(boost_pfs_categories_wrapper).find('> a').width('initial');\n    }\n  }\n\n\n  window.onmessage = function (e) {\n    if (e.data == 'hello') {\n      setTimeout(() => {\n        $('._hj-widget-container').show();\n      }, 5000)\n    }\n  };\n  \n  function removeAllEmptyParagraphsInBulletSection() {\n      $('.bullet-item.bullet-item--style-collection-seo p').each(function() {\n          const $this = $(this);\n          if($this.html().replace(/\\s|&nbsp;/g, '').length === 0)\n              $this.remove();\n      });\n  }\n  ($('.bullet-item.bullet-item--style-collection-seo').length > 0) ? removeAllEmptyParagraphsInBulletSection() : null;\n  \n\n\n})(theme.jQuery);\n/* Built with Barry v1.0.7 */\n\n$(document).ready(function () {\n  $('#collection-bottom-description :header').each(function () {\n    $('#collection-bottom-description > *').filter(function () { return $.trim(this.innerHTML) == \"\" }).remove();\n  });\n});\n\n$(window).on(\"load\", function () {\n  var fitmax = $(\"#my-fitmix-container\");\n  if (!fitmax) {\n    let colorSelection = $('.color-selection');\n    let colorSelectionArr = [...colorSelection];\n    colorSelectionArr.forEach(function (el) {\n      colorSelectionChildren = $(el).find('a');\n      if (colorSelectionChildren.length < 2) {\n        $(el).remove();\n      }\n    })\n  }\n  $(\".bottom-column__why-cookies h2\").each(function () {\n    $(this).replaceWith($('<h6>' + $(this).html() + '</h6>'));\n  })\n});"],
  "mappings": "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S,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,gBACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,aACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,kBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,CACF,EACA,MAAO,CACL,CACE,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,iBACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,6BACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,6BACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,oBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,gBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,gBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,iCACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,iCACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,aACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,kBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,gBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,CACF,EACA,KAAM,CACJ,CACE,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,cACb,QAAS,CACP,CACE,WAAY,KACd,CACF,CACF,EACA,CACE,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,iBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,yBACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,6BACb,QAAS,CACP,CACE,WAAY,KACd,CACF,CACF,EACA,CACE,YAAa,0BACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,gBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,gBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,iCACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,aACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,UACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,CACF,EACA,MAAO,CACL,CACE,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,0BACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,UACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,kBACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,QACb,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,CACF,EACA,UAAW,CACT,CACE,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,yBACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,6BACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,0BACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,qBACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,oBACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,MACb,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,gBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,WACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,OACb,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,WACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,kBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,eACb,YAAa,qBACb,QAAS,CACP,CACE,MAAO,SACT,CACF,CACF,EACA,CACE,YAAa,UACb,YAAa,mBACb,QAAS,CACP,CACE,MAAO,S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",
  "names": ["handleIntersection", "observer", "obj", "$", "prefix", "t", "r", "a", "o", "n", "ccPopup", "$container", "status", "container", "response", "data", "$form", "closeButtonFunc", "variant", "$imgThumb"]
}
