CINXE.COM
Shopify EU Hardware Store
<!-- langify-v2-scripts-begin --><!doctype html> <html class="no-js theme-main" lang="en"> <head><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://hardware.shopify.eu/","20211203123226","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1638534746"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <!-- Start of Async Drift Code --> <script> "use strict"; !function() { var t = window.driftt = window.drift = window.driftt || []; if (!t.init) { if (t.invoked) return void (window.console && console.error && console.error("Drift snippet included twice.")); t.invoked = !0, t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on" ], t.factory = function(e) { return function() { var n = Array.prototype.slice.call(arguments); return n.unshift(e), t.push(n), t; }; }, t.methods.forEach(function(e) { t[e] = t.factory(e); }), t.load = function(t) { var e = 3e5, n = Math.ceil(new Date() / e) * e, o = document.createElement("script"); o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://web.archive.org/web/20211203123226/https://js.driftt.com/include/" + n + "/" + t + ".js"; var i = document.getElementsByTagName("script")[0]; i.parentNode.insertBefore(o, i); }; } }(); drift.SNIPPET_VERSION = '0.3.1'; drift.load('72a698su8tsc'); </script> <!-- End of Async Drift Code --><meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="theme-color" content="#606fb9"> <link rel="canonical" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"><link rel="shortcut icon" href="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/shopify-favicon_dcb55b83-99b9-4699-a133-377f21b12f9c_32x32.png?v=1624632689" type="image/png"><title>Shopify EU Hardware Store</title><!-- /snippets/social-meta-tags.liquid --> <meta property="og:site_name" content="Shopify EU Hardware Store"> <meta property="og:url" content="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"><meta property="og:title" content="Shopify EU Hardware Store"> <meta property="og:type" content="website"> <meta property="og:description" content="Shopify EU Hardware Store"> <meta name="twitter:site" content="@shopify"> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Shopify EU Hardware Store"> <meta name="twitter:description" content="Shopify EU Hardware Store"> <link href="https://web.archive.org/web/20211203123226cs_/https://cdn.shopify.com/shopifycloud/model-viewer-ui/assets/v1.0/model-viewer-ui.css" rel="stylesheet" type="text/css" media="all"/> <link href="//web.archive.org/web/20211203123226cs_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/theme.scss.css?v=12478093087787800869" rel="stylesheet" type="text/css" media="all"/> <link href="//web.archive.org/web/20211203123226cs_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/nav.scss.css?v=10722090365835513981" rel="stylesheet" type="text/css" media="all"/> <link href="//web.archive.org/web/20211203123226cs_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/footer.scss.css?v=15842375990225781886" rel="stylesheet" type="text/css" media="all"/> <script> var theme = { strings: { addToCart: "Add to cart", soldOut: "Sold Out", unavailable: "Unavailable", regularPrice: "Regular price", sale: "Sale", showMore: "Show More", showLess: "Show Less", addressError: "Error looking up that address", addressNoResults: "No results for that address", addressQueryLimit: "You have exceeded the Google API usage limit. Consider upgrading to a \u003ca href=\"https:\/\/developers.google.com\/maps\/premium\/usage-limits\"\u003ePremium Plan\u003c\/a\u003e.", authError: "There was a problem authenticating your Google Maps account.", newWindow: "Opens in a new window.", external: "Opens external website.", newWindowExternal: "Opens external website in a new window." }, moneyFormat: "€{{amount_with_comma_separator}}", cartUrl: "\/cart\n", plyrSprite: "https://web.archive.org/web/20211203123226/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/plyr.svg?884" } document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); </script><script src="https://web.archive.org/web/20211203123226js_/https://unpkg.com/local-storage-fallback/lib/dist.min.js"></script> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/lazysizes.js?v=6844146596460774066" async="async"></script> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/vendor.js?v=7427532710691783483" defer="defer"></script> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/jquery.alphanum.js?v=5895811851955084232" defer="defer"></script> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/theme.js?v=3173929485893550716" defer="defer"></script> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/nav.js?v=16961174893874901261" defer="defer"></script> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/locationBanner.js?v=2967694606012473864" defer="defer"></script> <script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/55079960598/digital_wallets/dialog"> <meta name="shopify-checkout-api-token" content="95088a34e4303869d65bcbc374ecc51d"> <meta id="in-context-paypal-metadata" data-shop-id="55079960598" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="EUR"> <link rel="alternate" hreflang="x-default" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"> <link rel="alternate" hreflang="en-BE" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.be/"> <link rel="alternate" hreflang="de-DE" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.de/"> <link rel="alternate" hreflang="da-DK" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.dk/"> <link rel="alternate" hreflang="en-ES" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.es/"> <link rel="alternate" hreflang="en-IE" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"> <link rel="alternate" hreflang="nl-NL" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.nl/"> <script id="apple-pay-shop-capabilities" type="application/json">{"shopId":55079960598,"countryCode":"IE","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/55079960598","merchantName":"Shopify EU Hardware Store","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex"],"total":{"type":"pending","label":"Shopify EU Hardware Store","amount":"1.00"}}</script> <script id="shopify-features" type="application/json">{"accessToken":"95088a34e4303869d65bcbc374ecc51d","betas":["rich-media-storefront-analytics"],"domain":"hardware.shopify.eu","predictiveSearch":true,"shopId":55079960598,"smart_payment_buttons_url":"https:\/\/web.archive.org\/web\/20211203123226\/https:\/\/cdn.shopify.com\/shopifycloud\/payment-sheet\/assets\/latest\/spb.en.js","dynamic_checkout_cart_url":"https:\/\/web.archive.org\/web\/20211203123226\/https:\/\/cdn.shopify.com\/shopifycloud\/payment-sheet\/assets\/latest\/dynamic-checkout-cart.en.js","locale":"en"}</script> <script>var Shopify = Shopify || {}; Shopify.shop = "shophardwareeu.myshopify.com"; Shopify.locale = "en"; Shopify.currency = {"active":"EUR","rate":"1.0"}; Shopify.country = "IE"; Shopify.theme = {"name":"Shopify Hardware Theme (Nov 1, 2021)","id":120471683094,"theme_store_id":null,"role":"main"}; Shopify.theme.handle = "null"; Shopify.theme.style = {"id":null,"handle":null}; Shopify.cdnHost = "cdn.shopify.com"; Shopify.routes = Shopify.routes || {}; Shopify.routes.root = "/";</script> <script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script> <script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script> <script>window.ShopifyPay = window.ShopifyPay || {}; window.ShopifyPay.apiHost = "shop.app\/pay";</script> <script>(function() { function asyncLoad() { var urls = ["https:\/\/web.archive.org\/web\/20211203123226\/https:\/\/geolocation-recommendations.shopifycloud.com\/locale_bar\/script.js?shop=shophardwareeu.myshopify.com","\/\/web.archive.org\/web\/20211203123226\/https:\/\/cdn.shopify.com\/proxy\/3933c6f052cec31c83c86a7f331df84f9cb964c7a1b058b73f3c8663fabb6e6d\/d11gyepaze0qmc.cloudfront.net\/assets\/js\/order-lookup-by-hulkapps.js?shop=shophardwareeu.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; for (var i = 0; i < urls.length; i++) { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = urls[i]; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } }; if(window.attachEvent) { window.attachEvent('onload', asyncLoad); } else { window.addEventListener('load', asyncLoad, false); } })();</script> <script id="__st">var __st={"a":55079960598,"offset":3600,"reqid":"5af3da8d-f064-4295-8f94-f618c9966547","pageurl":"hardware.shopify.eu\/","u":"f8ebf731dff7","p":"home"};</script> <script>window.ShopifyPaypalV4VisibilityTracking = true;</script> <script>!function(o){o.addEventListener("DOMContentLoaded",function(){window.Shopify=window.Shopify||{},window.Shopify.recaptchaV3=window.Shopify.recaptchaV3||{siteKey:"6LcCR2cUAAAAANS1Gpq_mDIJ2pQuJphsSQaUEuc9"};var t=['form[action*="/contact"] input[name="form_type"][value="contact"]','form[action*="/comments"] input[name="form_type"][value="new_comment"]','form[action*="/account"] input[name="form_type"][value="customer_login"]','form[action*="/account"] input[name="form_type"][value="recover_customer_password"]','form[action*="/account"] input[name="form_type"][value="create_customer"]','form[action*="/contact"] input[name="form_type"][value="customer"]'].join(",");function n(e){e=e.target;null==e||null!=(e=function e(t,n){if(null==t.parentElement)return null;if("FORM"!=t.parentElement.tagName)return e(t.parentElement,n);for(var o=t.parentElement.action,r=0;r<n.length;r++)if(-1!==o.indexOf(n[r]))return t.parentElement;return null}(e,["/contact","/comments","/account"]))&&null!=e.querySelector(t)&&((e=o.createElement("script")).setAttribute("src","https://web.archive.org/web/20211203123226/https://cdn.shopify.com/shopifycloud/storefront-recaptcha-v3/v0.6/index.js"),o.body.appendChild(e),o.removeEventListener("focus",n,!0),o.removeEventListener("change",n,!0),o.removeEventListener("click",n,!0))}o.addEventListener("click",n,!0),o.addEventListener("change",n,!0),o.addEventListener("focus",n,!0)})}(document);</script> <script integrity="" data-source-attribution="shopify.loadfeatures" defer="defer" src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/shopifycloud/shopify/assets/storefront/load_feature-a55261a7a987674749989983b5889eadaac6795d8d48548fb61470a96edb9524.js" crossorigin="anonymous"></script> <script crossorigin="anonymous" defer="defer" src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/shopifycloud/shopify/assets/shopify_pay/storefront-b61f50798075db890698930c4405673937fe89353f7fea7be88b5ce16a9c0af8.js?v=20210208"></script> <script integrity="" data-source-attribution="shopify.dynamic-checkout" defer="defer" src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/shopifycloud/shopify/assets/storefront/features-87e8399988880142f2c62771b9d8f2ff6c290b3ff745dd426eb0dfe0db9d1dae.js" crossorigin="anonymous"></script> <style id="shopify-dynamic-checkout-cart">@media screen and (min-width: 750px) { #dynamic-checkout-cart { min-height: 50px; } } @media screen and (max-width: 750px) { #dynamic-checkout-cart { min-height: 180px; } } </style><script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script><script type="application/vnd.locksmith+json" data-locksmith>{"version":"v6.26","locked":false,"initialized":true,"scope":"index","access_granted":true,"access_denied":false,"requires_customer":false,"manual_lock":false,"server_lock":false,"server_rendered":null,"hide_resource":false,"hide_links_to_resource":false,"transparent":true,"locks":{"all":[],"opened":[]},"keys":[],"keys_signature":"9fc366d30be26e24409f4bd471fd0251a9fb7ea238496ba3f80c4305cfed38ab","state":{"template":"index","theme":120471683094,"product":null,"collection":null,"page":null,"blog":null,"article":null,"app":null},"now":1638522659,"path":"\/","canonical_url":"https:\/\/web.archive.org\/web\/20211203123226\/https:\/\/hardware.shopify.eu\/","customer_id":null,"customer_id_signature":"9fc366d30be26e24409f4bd471fd0251a9fb7ea238496ba3f80c4305cfed38ab","cart":null}</script><script data-locksmith>!function(){var require=void 0,reqwest=function(){function succeed(e){var t=protocolRe.exec(e.url);return t=t&&t[1]||context.location.protocol,httpsRe.test(t)?twoHundo.test(e.request.status):!!e.request.response}function handleReadyState(e,t,n){return function(){return e._aborted?n(e.request):e._timedOut?n(e.request,"Request is aborted: timeout"):void(e.request&&4==e.request[readyState]&&(e.request.onreadystatechange=noop,succeed(e)?t(e.request):n(e.request)))}}function setHeaders(e,t){var n,r=t.headers||{};r.Accept=r.Accept||defaultHeaders.accept[t.type]||defaultHeaders.accept["*"];var o="undefined"!=typeof FormData&&t.data instanceof FormData;!t.crossOrigin&&!r[requestedWith]&&(r[requestedWith]=defaultHeaders.requestedWith),!r[contentType]&&!o&&(r[contentType]=t.contentType||defaultHeaders.contentType);for(n in r)r.hasOwnProperty(n)&&"setRequestHeader"in e&&e.setRequestHeader(n,r[n])}function setCredentials(e,t){"undefined"!=typeof t.withCredentials&&"undefined"!=typeof e.withCredentials&&(e.withCredentials=!!t.withCredentials)}function generalCallback(e){lastValue=e}function urlappend(e,t){return e+(/[?]/.test(e)?"&":"?")+t}function handleJsonp(e,t,n,r){var o=uniqid++,i=e.jsonpCallback||"callback",a=e.jsonpCallbackName||reqwest.getcallbackPrefix(o),s=new RegExp("((^|[?]|&)"+i+")=([^&]+)"),u=r.match(s),c=doc.createElement("script"),l=0,p=-1!==navigator.userAgent.indexOf("MSIE 10.0");return u?"?"===u[3]?r=r.replace(s,"$1="+a):a=u[3]:r=urlappend(r,i+"="+a),context[a]=generalCallback,c.type="text/javascript",c.src=r,c.async=!0,"undefined"!=typeof c.onreadystatechange&&!p&&(c.htmlFor=c.id="_reqwest_"+o),c.onload=c.onreadystatechange=function(){return c[readyState]&&"complete"!==c[readyState]&&"loaded"!==c[readyState]||l?!1:(c.onload=c.onreadystatechange=null,c.onclick&&c.onclick(),t(lastValue),lastValue=void 0,head.removeChild(c),l=1,void 0)},head.appendChild(c),{abort:function(){c.onload=c.onreadystatechange=null,n({},"Request is aborted: timeout",{}),lastValue=void 0,head.removeChild(c),l=1}}}function getRequest(e,t){var n,r=this.o,o=(r.method||"GET").toUpperCase(),i="string"==typeof r?r:r.url,a=r.processData!==!1&&r.data&&"string"!=typeof r.data?reqwest.toQueryString(r.data):r.data||null,s=!1;return("jsonp"==r.type||"GET"==o)&&a&&(i=urlappend(i,a),a=null),"jsonp"==r.type?handleJsonp(r,e,t,i):(n=r.xhr&&r.xhr(r)||xhr(r),n.open(o,i,r.async===!1?!1:!0),setHeaders(n,r),setCredentials(n,r),context[xDomainRequest]&&n instanceof context[xDomainRequest]?(n.onload=e,n.onerror=t,n.onprogress=function(){},s=!0):n.onreadystatechange=handleReadyState(this,e,t),r.before&&r.before(n),s?setTimeout(function(){n.send(a)},200):n.send(a),n)}function Reqwest(e,t){this.o=e,this.fn=t,init.apply(this,arguments)}function setType(e){return null===e?void 0:e.match("json")?"json":e.match("javascript")?"js":e.match("text")?"html":e.match("xml")?"xml":void 0}function init(o,fn){function complete(e){for(o.timeout&&clearTimeout(self.timeout),self.timeout=null;self._completeHandlers.length>0;)self._completeHandlers.shift()(e)}function success(resp){var type=o.type||resp&&setType(resp.getResponseHeader("Content-Type"));resp="jsonp"!==type?self.request:resp;var filteredResponse=globalSetupOptions.dataFilter(resp.responseText,type),r=filteredResponse;try{resp.responseText=r}catch(e){}if(r)switch(type){case"json":try{resp=context.JSON?context.JSON.parse(r):eval("("+r+")")}catch(err){return error(resp,"Could not parse JSON in response",err)}break;case"js":resp=eval(r);break;case"html":resp=r;break;case"xml":resp=resp.responseXML&&resp.responseXML.parseError&&resp.responseXML.parseError.errorCode&&resp.responseXML.parseError.reason?null:resp.responseXML}for(self._responseArgs.resp=resp,self._fulfilled=!0,fn(resp),self._successHandler(resp);self._fulfillmentHandlers.length>0;)resp=self._fulfillmentHandlers.shift()(resp);complete(resp)}function timedOut(){self._timedOut=!0,self.request.abort()}function error(e,t,n){for(e=self.request,self._responseArgs.resp=e,self._responseArgs.msg=t,self._responseArgs.t=n,self._erred=!0;self._errorHandlers.length>0;)self._errorHandlers.shift()(e,t,n);complete(e)}this.url="string"==typeof o?o:o.url,this.timeout=null,this._fulfilled=!1,this._successHandler=function(){},this._fulfillmentHandlers=[],this._errorHandlers=[],this._completeHandlers=[],this._erred=!1,this._responseArgs={};var self=this;fn=fn||function(){},o.timeout&&(this.timeout=setTimeout(function(){timedOut()},o.timeout)),o.success&&(this._successHandler=function(){o.success.apply(o,arguments)}),o.error&&this._errorHandlers.push(function(){o.error.apply(o,arguments)}),o.complete&&this._completeHandlers.push(function(){o.complete.apply(o,arguments)}),this.request=getRequest.call(this,success,error)}function reqwest(e,t){return new Reqwest(e,t)}function normalize(e){return e?e.replace(/\r?\n/g,"\r\n"):""}function serial(e,t){var n,r,o,i,a=e.name,s=e.tagName.toLowerCase(),u=function(e){e&&!e.disabled&&t(a,normalize(e.attributes.value&&e.attributes.value.specified?e.value:e.text))};if(!e.disabled&&a)switch(s){case"input":/reset|button|image|file/i.test(e.type)||(n=/checkbox/i.test(e.type),r=/radio/i.test(e.type),o=e.value,(!n&&!r||e.checked)&&t(a,normalize(n&&""===o?"on":o)));break;case"textarea":t(a,normalize(e.value));break;case"select":if("select-one"===e.type.toLowerCase())u(e.selectedIndex>=0?e.options[e.selectedIndex]:null);else for(i=0;e.length&&i<e.length;i++)e.options[i].selected&&u(e.options[i])}}function eachFormElement(){var e,t,n=this,r=function(e,t){var r,o,i;for(r=0;r<t.length;r++)for(i=e[byTag](t[r]),o=0;o<i.length;o++)serial(i[o],n)};for(t=0;t<arguments.length;t++)e=arguments[t],/input|select|textarea/i.test(e.tagName)&&serial(e,n),r(e,["input","select","textarea"])}function serializeQueryString(){return reqwest.toQueryString(reqwest.serializeArray.apply(null,arguments))}function serializeHash(){var e={};return eachFormElement.apply(function(t,n){t in e?(e[t]&&!isArray(e[t])&&(e[t]=[e[t]]),e[t].push(n)):e[t]=n},arguments),e}function buildParams(e,t,n,r){var o,i,a,s=/\[\]$/;if(isArray(t))for(i=0;t&&i<t.length;i++)a=t[i],n||s.test(e)?r(e,a):buildParams(e+"["+("object"==typeof a?i:"")+"]",a,n,r);else if(t&&"[object Object]"===t.toString())for(o in t)buildParams(e+"["+o+"]",t[o],n,r);else r(e,t)}var context=this;if("window"in context)var doc=document,byTag="getElementsByTagName",head=doc[byTag]("head")[0];else{var XHR2;try{XHR2=require("xhr2")}catch(ex){throw new Error("Peer dependency `xhr2` required! Please npm install xhr2")}}var httpsRe=/^http/,protocolRe=/(^\w+):\/\//,twoHundo=/^(20\d|1223)$/,readyState="readyState",contentType="Content-Type",requestedWith="X-Requested-With",uniqid=0,callbackPrefix="reqwest_"+ +new Date,lastValue,xmlHttpRequest="XMLHttpRequest",xDomainRequest="XDomainRequest",noop=function(){},isArray="function"==typeof Array.isArray?Array.isArray:function(e){return e instanceof Array},defaultHeaders={contentType:"application/x-www-form-urlencoded",requestedWith:xmlHttpRequest,accept:{"*":"text/javascript, text/html, application/xml, text/xml, */*",xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript",js:"application/javascript, text/javascript"}},xhr=function(e){if(e.crossOrigin===!0){var t=context[xmlHttpRequest]?new XMLHttpRequest:null;if(t&&"withCredentials"in t)return t;if(context[xDomainRequest])return new XDomainRequest;throw new Error("Browser does not support cross-origin requests")}return context[xmlHttpRequest]?new XMLHttpRequest:XHR2?new XHR2:new ActiveXObject("Microsoft.XMLHTTP")},globalSetupOptions={dataFilter:function(e){return e}};return Reqwest.prototype={abort:function(){this._aborted=!0,this.request.abort()},retry:function(){init.call(this,this.o,this.fn)},then:function(e,t){return e=e||function(){},t=t||function(){},this._fulfilled?this._responseArgs.resp=e(this._responseArgs.resp):this._erred?t(this._responseArgs.resp,this._responseArgs.msg,this._responseArgs.t):(this._fulfillmentHandlers.push(e),this._errorHandlers.push(t)),this},always:function(e){return this._fulfilled||this._erred?e(this._responseArgs.resp):this._completeHandlers.push(e),this},fail:function(e){return this._erred?e(this._responseArgs.resp,this._responseArgs.msg,this._responseArgs.t):this._errorHandlers.push(e),this},"catch":function(e){return this.fail(e)}},reqwest.serializeArray=function(){var e=[];return eachFormElement.apply(function(t,n){e.push({name:t,value:n})},arguments),e},reqwest.serialize=function(){if(0===arguments.length)return"";var e,t,n=Array.prototype.slice.call(arguments,0);return e=n.pop(),e&&e.nodeType&&n.push(e)&&(e=null),e&&(e=e.type),t="map"==e?serializeHash:"array"==e?reqwest.serializeArray:serializeQueryString,t.apply(null,n)},reqwest.toQueryString=function(e,t){var n,r,o=t||!1,i=[],a=encodeURIComponent,s=function(e,t){t="function"==typeof t?t():null==t?"":t,i[i.length]=a(e)+"="+a(t)};if(isArray(e))for(r=0;e&&r<e.length;r++)s(e[r].name,e[r].value);else for(n in e)e.hasOwnProperty(n)&&buildParams(n,e[n],o,s);return i.join("&").replace(/%20/g,"+")},reqwest.getcallbackPrefix=function(){return callbackPrefix},reqwest.compat=function(e,t){return e&&(e.type&&(e.method=e.type)&&delete e.type,e.dataType&&(e.type=e.dataType),e.jsonpCallback&&(e.jsonpCallbackName=e.jsonpCallback)&&delete e.jsonpCallback,e.jsonp&&(e.jsonpCallback=e.jsonp)),new Reqwest(e,t)},reqwest.ajaxSetup=function(e){e=e||{};for(var t in e)globalSetupOptions[t]=e[t]},reqwest}(),rollbar=window.__rollbar_for_locksmith||function(){var e={};return!function(t,n){"object"==typeof e&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof e?e.rollbar=n():t.rollbar=n()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";var r=n(2);"undefined"==typeof window||window._rollbarStartTime||(window._rollbarStartTime=(new Date).getTime()),e.exports=r},function(e,t,n){"use strict";function r(e,t){this.options=c.merge(k,e);var n=new l(this.options,d,h);this.client=t||new u(this.options,n,p,"browser");var r="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,o="undefined"!=typeof document&&document;i(this.client.notifier),a(this.client.queue),(this.options.captureUncaught||this.options.handleUncaughtExceptions)&&(f.captureUncaughtExceptions(r,this),f.wrapGlobals(r,this)),(this.options.captureUnhandledRejections||this.options.handleUnhandledRejections)&&f.captureUnhandledRejections(r,this),this.instrumenter=new w(this.options,this.client.telemeter,this,r,o),this.instrumenter.instrument()}function o(e){var t="Rollbar is not initialized";p.error(t),e&&e(new Error(t))}function i(e){e.addTransform(m.handleItemWithError).addTransform(m.ensureItemHasSomethingToSay).addTransform(m.addBaseInfo).addTransform(m.addRequestInfo(window)).addTransform(m.addClientInfo(window)).addTransform(m.addPluginInfo(window)).addTransform(m.addBody).addTransform(g.addMessageWithError).addTransform(g.addTelemetryData).addTransform(g.addConfigToPayload).addTransform(m.scrubPayload).addTransform(g.userTransform(p)).addTransform(g.itemToPayload)}function a(e){e.addPredicate(y.checkLevel).addPredicate(v.checkIgnore).addPredicate(y.userCheckIgnore(p)).addPredicate(y.urlIsNotBlacklisted(p)).addPredicate(y.urlIsWhitelisted(p)).addPredicate(y.messageIsIgnored(p))}function s(e){for(var t=0,n=e.length;n>t;++t)if(c.isFunction(e[t]))return e[t]}var u=n(3),c=n(5),l=n(11),p=n(13),f=n(16),d=n(17),h=n(19),m=n(20),g=n(24),v=n(25),y=n(26),b=n(21),w=n(27),x=null;r.init=function(e,t){return x?x.global(e).configure(e):x=new r(e,t)},r.prototype.global=function(e){return this.client.global(e),this},r.global=function(e){return x?x.global(e):void o()},r.prototype.configure=function(e,t){var n=this.options,r={};return t&&(r={payload:t}),this.options=c.merge(n,e,r),this.client.configure(this.options,t),this.instrumenter.configure(this.options),this},r.configure=function(e,t){return x?x.configure(e,t):void o()},r.prototype.lastError=function(){return this.client.lastError},r.lastError=function(){return x?x.lastError():void o()},r.prototype.log=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.log(e),{uuid:t}},r.log=function(){if(x)return x.log.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.debug=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.debug(e),{uuid:t}},r.debug=function(){if(x)return x.debug.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.info=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.info(e),{uuid:t}},r.info=function(){if(x)return x.info.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.warn=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.warn(e),{uuid:t}},r.warn=function(){if(x)return x.warn.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.warning=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.warning(e),{uuid:t}},r.warning=function(){if(x)return x.warning.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.error=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.error(e),{uuid:t}},r.error=function(){if(x)return x.error.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.critical=function(){var e=this._createItem(arguments),t=e.uuid;return this.client.critical(e),{uuid:t}},r.critical=function(){if(x)return x.critical.apply(x,arguments);var e=s(arguments);o(e)},r.prototype.handleUncaughtException=function(e,t,n,r,o,i){var a,s=c.makeUnhandledStackInfo(e,t,n,r,o,"onerror","uncaught exception",b);c.isError(o)?(a=this._createItem([e,o,i]),a._unhandledStackInfo=s):c.isError(t)?(a=this._createItem([e,t,i]),a._unhandledStackInfo=s):(a=this._createItem([e,i]),a.stackInfo=s),a.level=this.options.uncaughtErrorLevel,a._isUncaught=!0,this.client.log(a)},r.prototype.handleUnhandledRejection=function(e,t){var n="unhandled rejection was null or undefined!";if(e)if(e.message)n=e.message;else{var r=c.stringify(e);r.value&&(n=r.value)}var o,i=e&&e._rollbarContext||t&&t._rollbarContext;c.isError(e)?o=this._createItem([n,e,i]):(o=this._createItem([n,e,i]),o.stackInfo=c.makeUnhandledStackInfo(n,"",0,0,null,"unhandledrejection","",b)),o.level=this.options.uncaughtErrorLevel,o._isUncaught=!0,o._originalArgs=o._originalArgs||[],o._originalArgs.push(t),this.client.log(o)},r.prototype.wrap=function(e,t,n){try{var r;if(r=c.isFunction(t)?t:function(){return t||{}},!c.isFunction(e))return e;if(e._isWrap)return e;if(!e._rollbar_wrapped&&(e._rollbar_wrapped=function(){t&&c.isFunction(t)&&t.apply(this,arguments);try{return e.apply(this,arguments)}catch(t){var n=t;throw n&&(c.isType(n,"string")&&(n=new String(n)),n._rollbarContext=r()||{},n._rollbarContext._wrappedSource=e.toString(),window._rollbarWrappedError=n),n}},e._rollbar_wrapped._isWrap=!0,e.hasOwnProperty))for(var o in e)e.hasOwnProperty(o)&&(e._rollbar_wrapped[o]=e[o]);return e._rollbar_wrapped}catch(t){return e}},r.wrap=function(e,t){return x?x.wrap(e,t):void o()},r.prototype.captureEvent=function(e,t){return this.client.captureEvent(e,t)},r.captureEvent=function(e,t){return x?x.captureEvent(e,t):void o()},r.prototype.captureDomContentLoaded=function(e,t){return t||(t=new Date),this.client.captureDomContentLoaded(t)},r.prototype.captureLoad=function(e,t){return t||(t=new Date),this.client.captureLoad(t)},r.prototype._createItem=function(e){return c.createItem(e,p,this)};var k={version:"2.4.5",scrubFields:["pw","pass","passwd","password","secret","confirm_password","confirmPassword","password_confirmation","passwordConfirmation","access_token","accessToken","secret_key","secretKey","secretToken","cc-number","card number","cardnumber","cardnum","ccnum","ccnumber","cc num","creditcardnumber","credit card number","newcreditcardnumber","new credit card","creditcardno","credit card no","card#","card #","cc-csc","cvc2","cvv2","ccv2","security code","card verification","name on credit card","name on card","nameoncard","cardholder","card holder","name des karteninhabers","card type","cardtype","cc type","cctype","payment type","expiration date","expirationdate","expdate","cc-exp"],logLevel:"debug",reportLevel:"debug",uncaughtErrorLevel:"error",endpoint:"api.rollbar.com/api/1/item/",verbose:!1,enabled:!0,sendConfig:!1,includeItemsInTelemetry:!0,captureIp:!0};e.exports=r},function(e,t,n){"use strict";function r(e,t,n,o){this.options=c.merge(e),this.logger=n,r.rateLimiter.configureGlobal(this.options),r.rateLimiter.setPlatformOptions(o,this.options),this.queue=new a(r.rateLimiter,t,n,this.options),this.notifier=new s(this.queue,this.options),this.telemeter=new u(this.options),this.lastError=null,this.lastErrorHash="none"}function o(e){var t=e.message||"",n=(e.err||{}).stack||String(e.err);return t+"::"+n}var i=n(4),a=n(8),s=n(9),u=n(10),c=n(5),l={maxItems:0,itemsPerMinute:60};r.rateLimiter=new i(l),r.prototype.global=function(e){return r.rateLimiter.configureGlobal(e),this},r.prototype.configure=function(e,t){var n=this.options,r={};return t&&(r={payload:t}),this.options=c.merge(n,e,r),this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),this.global(this.options),this},r.prototype.log=function(e){var t=this._defaultLogLevel();return this._log(t,e)},r.prototype.debug=function(e){this._log("debug",e)},r.prototype.info=function(e){this._log("info",e)},r.prototype.warn=function(e){this._log("warning",e)},r.prototype.warning=function(e){this._log("warning",e)},r.prototype.error=function(e){this._log("error",e)},r.prototype.critical=function(e){this._log("critical",e)},r.prototype.wait=function(e){this.queue.wait(e)},r.prototype.captureEvent=function(e,t){return this.telemeter.captureEvent(e,t)},r.prototype.captureDomContentLoaded=function(e){return this.telemeter.captureDomContentLoaded(e)},r.prototype.captureLoad=function(e){return this.telemeter.captureLoad(e)},r.prototype._log=function(e,t){var n;if(t.callback&&(n=t.callback,delete t.callback),this._sameAsLastError(t)){if(n){var r=new Error("ignored identical item");r.item=t,n(r)}}else try{t.level=t.level||e,this.telemeter._captureRollbarItem(t),t.telemetryEvents=this.telemeter.copyEvents(),this.notifier.log(t,n)}catch(e){this.logger.error(e)}},r.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},r.prototype._sameAsLastError=function(e){if(!e._isUncaught)return!1;var t=o(e);return this.lastErrorHash===t||(this.lastError=e.err,this.lastErrorHash=t,!1)},e.exports=r},function(e,t,n){"use strict";function r(e){this.startTime=s.now(),this.counter=0,this.perMinCounter=0,this.platform=null,this.platformOptions={},this.configureGlobal(e)}function o(e,t,n){return!e.ignoreRateLimit&&t>=1&&n>t}function i(e,t,n,r,o,i,s){var u=null;return n&&(n=new Error(n)),n||r||(u=a(e,t,o,i,s)),{error:n,shouldSend:r,payload:u}}function a(e,t,n,r,o){var i,a=t.environment||t.payload&&t.payload.environment;i=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.";var s={body:{message:{body:i,extra:{maxItems:n,itemsPerMinute:r}}},language:"javascript",environment:a,notifier:{version:t.notifier&&t.notifier.version||t.version}};return"browser"===e?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===e?(s.framework=t.framework||"node-js",s.notifier.name=t.notifier.name):"react-native"===e&&(s.framework=t.framework||"react-native",s.notifier.name=t.notifier.name),s}var s=n(5);r.globalSettings={startTime:s.now(),maxItems:void 0,itemsPerMinute:void 0},r.prototype.configureGlobal=function(e){void 0!==e.startTime&&(r.globalSettings.startTime=e.startTime),void 0!==e.maxItems&&(r.globalSettings.maxItems=e.maxItems),void 0!==e.itemsPerMinute&&(r.globalSettings.itemsPerMinute=e.itemsPerMinute)},r.prototype.shouldSend=function(e,t){t=t||s.now();var n=t-this.startTime;(0>n||n>=6e4)&&(this.startTime=t,this.perMinCounter=0);var a=r.globalSettings.maxItems,u=r.globalSettings.itemsPerMinute;if(o(e,a,this.counter))return i(this.platform,this.platformOptions,a+" max items reached",!1);if(o(e,u,this.perMinCounter))return i(this.platform,this.platformOptions,u+" items per minute reached",!1);this.counter++,this.perMinCounter++;var c=!o(e,a,this.counter),l=c;return c=c&&!o(e,u,this.perMinCounter),i(this.platform,this.platformOptions,null,c,a,u,l)},r.prototype.setPlatformOptions=function(e,t){this.platform=e,this.platformOptions=t},e.exports=r},function(e,t,n){"use strict";function r(){if(!N&&(N=!0,c(JSON)&&(s(JSON.stringify)&&(j.stringify=JSON.stringify),s(JSON.parse)&&(j.parse=JSON.parse)),!a(j.stringify)||!a(j.parse))){var e=n(7);e(j)}}function o(e,t){return t===i(e)}function i(e){var t=typeof e;return"object"!==t?t:e?e instanceof Error?"error":{}.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase():"null"}function a(e){return o(e,"function")}function s(e){var t=/[\\^$.*+?()[\]{}|]/g,n=Function.prototype.toString.call(Object.prototype.hasOwnProperty).replace(t,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?"),r=RegExp("^"+n+"$");return u(e)&&r.test(e)}function u(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function c(e){return!o(e,"undefined")}function l(e){var t=i(e);return"object"===t||"array"===t}function p(e){return o(e,"error")}function f(e,t,n){var r,i,a,s=o(e,"object"),u=o(e,"array"),c=[];if(s&&-1!==n.indexOf(e))return e;if(n.push(e),s)for(r in e)Object.prototype.hasOwnProperty.call(e,r)&&c.push(r);else if(u)for(a=0;a<e.length;++a)c.push(a);var l=s?{}:[];for(a=0;a<c.length;++a)r=c[a],i=e[r],l[r]=t(r,i,n);return 0!=c.length?l:e}function d(){return"********"}function h(){var e=q(),t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:7&n|8).toString(16)});return t}function m(e){var t=g(e);return t?(""===t.anchor&&(t.source=t.source.replace("#","")),e=t.source.replace("?"+t.query,"")):"(unknown)"}function g(e){if(o(e,"string")){for(var t=H,n=t.parser[t.strictMode?"strict":"loose"].exec(e),r={},i=t.key.length;i--;)r[t.key[i]]=n[i]||"";return r[t.q.name]={},r[t.key[12]].replace(t.q.parser,function(e,n,o){n&&(r[t.q.name][n]=o)}),r}}function v(e,t,n){n=n||{},n.access_token=e;var r,o=[];for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&o.push([r,n[r]].join("="));var i="?"+o.sort().join("&");t=t||{},t.path=t.path||"";var a,s=t.path.indexOf("?"),u=t.path.indexOf("#");-1!==s&&(-1===u||u>s)?(a=t.path,t.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=t.path,t.path=a.substring(0,u)+i+a.substring(u)):t.path=t.path+i}function y(e,t){if(t=t||e.protocol,!t&&e.port&&(80===e.port?t="http:":443===e.port&&(t="https:")),t=t||"https:",!e.hostname)return null;var n=t+"//"+e.hostname;return e.port&&(n=n+":"+e.port),e.path&&(n+=e.path),n}function b(e,t){var n,r;try{n=j.stringify(e)}catch(o){if(t&&a(t))try{n=t(e)}catch(e){r=e}else r=o}return{error:r,value:n}}function w(e){var t,n;try{t=j.parse(e)}catch(e){n=e}return{error:n,value:t}}function x(e,t,n,r,o,i,a,s){var u={url:t||"",line:n,column:r};u.func=s.guessFunctionName(u.url,u.line),u.context=s.gatherContext(u.url,u.line);var c=document&&document.location&&document.location.href,l=window&&window.navigator&&window.navigator.userAgent;return{mode:i,message:o?String(o):e||a,url:c,stack:[u],useragent:l}}function k(e,t){return function(t,n){try{r(t,n)}catch(r){e.error(r)}}}function _(e,t,n,r,o){for(var a,s,u,c,l,p,f=[],d=0,m=e.length;m>d;++d){p=e[d];var g=i(p);switch(g){case"undefined":break;case"string":a?f.push(p):a=p;break;case"function":c=k(t,p);break;case"date":f.push(p);break;case"error":case"domexception":s?f.push(p):s=p;break;case"object":case"array":if(p instanceof Error||"undefined"!=typeof DOMException&&p instanceof DOMException){s?f.push(p):s=p;break}if(r&&"object"===g&&!l){for(var v=0,y=r.length;y>v;++v)if(void 0!==p[r[v]]){l=p;break}if(l)break}u?f.push(p):u=p;break;default:if(p instanceof Error||"undefined"!=typeof DOMException&&p instanceof DOMException){s?f.push(p):s=p;break}f.push(p)}}f.length>0&&(u=R(u),u.extraArgs=f);var b={message:a,err:s,custom:u,timestamp:q(),callback:c,uuid:h()};return u&&void 0!==u.level&&(b.level=u.level,delete u.level),r&&l&&(b.request=l),o&&(b.lambdaContext=o),b._originalArgs=e,b}function E(e,t){if(e){var n=t.split("."),r=e;try{for(var o=0,i=n.length;i>o;++o)r=r[n[o]]}catch(e){r=void 0}return r}}function T(e,t,n){if(e){var r=t.split("."),o=r.length;if(!(1>o)){if(1===o)return void(e[r[0]]=n);try{for(var i=e[r[0]]||{},a=i,s=1;o-1>s;s++)i[r[s]]=i[r[s]]||{},i=i[r[s]];i[r[o-1]]=n,e[r[0]]=a}catch(e){return}}}}function S(e,t){function n(e,t,n,r,o,i){return t+d(i)}function r(e){var t;if(o(e,"string"))for(t=0;t<u.length;++t)e=e.replace(u[t],n);return e}function i(e,t){var n;for(n=0;n<s.length;++n)if(s[n].test(e)){t=d(t);break}return t}function a(e,t,n){var s=i(e,t);return s===t?o(t,"object")||o(t,"array")?f(t,a,n):r(s):s}t=t||[];var s=I(t),u=O(t);return f(e,a,[])}function I(e){for(var t,n=[],r=0;r<e.length;++r)t="^\\[?(%5[bB])?"+e[r]+"\\[?(%5[bB])?\\]?(%5[dD])?$",n.push(new RegExp(t,"i"));return n}function O(e){for(var t,n=[],r=0;r<e.length;++r)t="\\[?(%5[bB])?"+e[r]+"\\[?(%5[bB])?\\]?(%5[dD])?",n.push(new RegExp("("+t+"=)([^&\\n]+)","igm"));return n}function C(e){var t,n,r,o=[];for(t=0,n=e.length;n>t;t++){switch(r=e[t],i(r)){case"object":r=b(r),r=r.error||r.value,r.length>500&&(r=r.substr(0,497)+"...");break;case"null":r="null";break;case"undefined":r="undefined";break;case"symbol":r=r.toString()}o.push(r)}return o.join(" ")}function q(){return Date.now?+Date.now():+new Date}function L(e,t){if(e&&e.user_ip&&t!==!0){var n=e.user_ip;if(t)try{var r;if(-1!==n.indexOf("."))r=n.split("."),r.pop(),r.push("0"),n=r.join(".");else if(-1!==n.indexOf(":")){if(r=n.split(":"),r.length>2){var o=r.slice(0,3),i=o[2].indexOf("/");-1!==i&&(o[2]=o[2].substring(0,i));var a="0000:0000:0000:0000:0000";n=o.concat(a).join(":")}}else n=null}catch(e){n=null}else n=null;e.user_ip=n}}var R=n(6),j={},N=!1;r();var A={debug:0,info:1,warning:2,error:3,critical:4},H={strictMode:!1,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};e.exports={isType:o,typeName:i,isFunction:a,isNativeFunction:s,isIterable:l,isError:p,merge:R,traverse:f,redact:d,uuid4:h,LEVELS:A,sanitizeUrl:m,addParamsAndAccessTokenToPath:v,formatUrl:y,stringify:b,jsonParse:w,makeUnhandledStackInfo:x,createItem:_,get:E,set:T,scrub:S,formatArgsAsString:C,now:q,filterIp:L}},function(e,t){"use strict";function n(){var e,t,r,o,a,s={},u=null,c=arguments.length;for(e=0;c>e;e++)if(u=arguments[e],null!=u)for(a in u)t=s[a],r=u[a],s!==r&&(r&&i(r)?(o=t&&i(t)?t:{},s[a]=n(o,r)):"undefined"!=typeof r&&(s[a]=r));return s}var r=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=function(e){if(!e||"[object Object]"!==o.call(e))return!1;var t=r.call(e,"constructor"),n=e.constructor&&e.constructor.prototype&&r.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!t&&!n)return!1;var i;for(i in e);return"undefined"==typeof i||r.call(e,i)};e.exports=n},function(e,t){var n=function(e){function t(e){return 10>e?"0"+e:e}function n(){return this.valueOf()}function r(e){return i.lastIndex=0,i.test(e)?'"'+e.replace(i,function(e){var t=u[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function o(e,t){var n,i,u,l,p,f=a,d=t[e];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(e)),"function"==typeof c&&(d=c.call(t,e,d)),typeof d){case"string":return r(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(a+=s,p=[],"[object Array]"===Object.prototype.toString.apply(d)){for(l=d.length,n=0;l>n;n+=1)p[n]=o(n,d)||"null";return u=0===p.length?"[]":a?"[\n"+a+p.join(",\n"+a)+"\n"+f+"]":"["+p.join(",")+"]",a=f,u}if(c&&"object"==typeof c)for(l=c.length,n=0;l>n;n+=1)"string"==typeof c[n]&&(i=c[n],u=o(i,d),u&&p.push(r(i)+(a?": ":":")+u));else for(i in d)Object.prototype.hasOwnProperty.call(d,i)&&(u=o(i,d),u&&p.push(r(i)+(a?": ":":")+u));return u=0===p.length?"{}":a?"{\n"+a+p.join(",\n"+a)+"\n"+f+"}":"{"+p.join(",")+"}",a=f,u}}var i=/[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+t(this.getUTCMonth()+1)+"-"+t(this.getUTCDate())+"T"+t(this.getUTCHours())+":"+t(this.getUTCMinutes())+":"+t(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=n,Number.prototype.toJSON=n,String.prototype.toJSON=n);var a,s,u,c;"function"!=typeof e.stringify&&(u={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},e.stringify=function(e,t,n){var r;if(a="",s="","number"==typeof n)for(r=0;n>r;r+=1)s+=" ";else"string"==typeof n&&(s=n);if(c=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return o("",{"":e})}),"function"!=typeof e.parse&&(e.parse=function(){var e,t,n,r,o,i={"\\":"\\",'"':'"',"/":"/",t:" ",n:"\n",r:"\r",f:"\f",b:"\b"},a={go:function(){e="ok"},firstokey:function(){r=o,e="colon"},okey:function(){r=o,e="colon"},ovalue:function(){e="ocomma"},firstavalue:function(){e="acomma"},avalue:function(){e="acomma"}},s={go:function(){e="ok"},ovalue:function(){e="ocomma"},firstavalue:function(){e="acomma"},avalue:function(){e="acomma"}},u={"{":{go:function(){t.push({state:"ok"}),n={},e="firstokey"},ovalue:function(){t.push({container:n,state:"ocomma",key:r}),n={},e="firstokey"},firstavalue:function(){t.push({container:n,state:"acomma"}),n={},e="firstokey"},avalue:function(){t.push({container:n,state:"acomma"}),n={},e="firstokey"}},"}":{firstokey:function(){var i=t.pop();o=n,n=i.container,r=i.key,e=i.state},ocomma:function(){var i=t.pop();n[r]=o,o=n,n=i.container,r=i.key,e=i.state}},"[":{go:function(){t.push({state:"ok"}),n=[],e="firstavalue"},ovalue:function(){t.push({container:n,state:"ocomma",key:r}),n=[],e="firstavalue"},firstavalue:function(){t.push({container:n,state:"acomma"}),n=[],e="firstavalue"},avalue:function(){t.push({container:n,state:"acomma"}),n=[],e="firstavalue"}},"]":{firstavalue:function(){var i=t.pop();o=n,n=i.container,r=i.key,e=i.state},acomma:function(){var i=t.pop();n.push(o),o=n,n=i.container,r=i.key,e=i.state}},":":{colon:function(){if(Object.hasOwnProperty.call(n,r))throw new SyntaxError("Duplicate key '"+r+'"');e="ovalue"}},",":{ocomma:function(){n[r]=o,e="okey"},acomma:function(){n.push(o),e="avalue"}},"true":{go:function(){o=!0,e="ok"},ovalue:function(){o=!0,e="ocomma"},firstavalue:function(){o=!0,e="acomma"},avalue:function(){o=!0,e="acomma"}},"false":{go:function(){o=!1,e="ok"},ovalue:function(){o=!1,e="ocomma"},firstavalue:function(){o=!1,e="acomma"},avalue:function(){o=!1,e="acomma"}},"null":{go:function(){o=null,e="ok"},ovalue:function(){o=null,e="ocomma"},firstavalue:function(){o=null,e="acomma"},avalue:function(){o=null,e="acomma"}}};return function(n,r){var i,c=/^[\u0020\t\n\r]*(?:([,:\[\]{}]|true|false|null)|(-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)|"((?:[^\r\n\t\\\"]|\\(?:["\\\/trnfb]|u[0-9a-fA-F]{4}))*)")/;e="go",t=[];try{for(;i=c.exec(n),i;)i[1]?u[i[1]][e]():i[2]?(o=+i[2],s[e]()):(o=l(i[3]),a[e]()),n=n.slice(i[0].length)}catch(l){e=l}if("ok"!==e||/[^\u0020\t\n\r]/.test(n))throw e instanceof SyntaxError?e:new SyntaxError("JSON");return"function"==typeof r?function p(e,t){var n,i,a=e[t];if(a&&"object"==typeof a)for(n in o)Object.prototype.hasOwnProperty.call(a,n)&&(i=p(a,n),void 0!==i?a[n]=i:delete a[n]);return r.call(e,t,a)}({"":o},""):o}}())};e.exports=n},function(e,t,n){"use strict";function r(e,t,n,r){this.rateLimiter=e,this.api=t,this.logger=n,this.options=r,this.predicates=[],this.pendingItems=[],this.pendingRequests=[],this.retryQueue=[],this.retryHandle=null,this.waitCallback=null,this.waitIntervalID=null}var o=n(5);r.prototype.configure=function(e){this.api&&this.api.configure(e);var t=this.options;return this.options=o.merge(t,e),this},r.prototype.addPredicate=function(e){ return o.isFunction(e)&&this.predicates.push(e),this},r.prototype.addPendingItem=function(e){this.pendingItems.push(e)},r.prototype.removePendingItem=function(e){var t=this.pendingItems.indexOf(e);-1!==t&&this.pendingItems.splice(t,1)},r.prototype.addItem=function(e,t,n,r){t&&o.isFunction(t)||(t=function(){});var i=this._applyPredicates(e);if(i.stop)return this.removePendingItem(r),void t(i.err);this._maybeLog(e,n),this.removePendingItem(r),this.pendingRequests.push(e);try{this._makeApiRequest(e,function(n,r){this._dequeuePendingRequest(e),t(n,r)}.bind(this))}catch(n){this._dequeuePendingRequest(e),t(n)}},r.prototype.wait=function(e){o.isFunction(e)&&(this.waitCallback=e,this._maybeCallWait()||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitIntervalID=setInterval(function(){this._maybeCallWait()}.bind(this),500)))},r.prototype._applyPredicates=function(e){for(var t=null,n=0,r=this.predicates.length;r>n;n++)if(t=this.predicates[n](e,this.options),!t||void 0!==t.err)return{stop:!0,err:t.err};return{stop:!1,err:null}},r.prototype._makeApiRequest=function(e,t){var n=this.rateLimiter.shouldSend(e);n.shouldSend?this.api.postItem(e,function(n,r){n?this._maybeRetry(n,e,t):t(n,r)}.bind(this)):n.error?t(n.error):this.api.postItem(n.payload,t)};var i=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"];r.prototype._maybeRetry=function(e,t,n){var r=!1;if(this.options.retryInterval)for(var o=0,a=i.length;a>o;o++)if(e.code===i[o]){r=!0;break}r?this._retryApiRequest(t,n):n(e)},r.prototype._retryApiRequest=function(e,t){this.retryQueue.push({item:e,callback:t}),this.retryHandle||(this.retryHandle=setInterval(function(){for(;this.retryQueue.length;){var e=this.retryQueue.shift();this._makeApiRequest(e.item,e.callback)}}.bind(this),this.options.retryInterval))},r.prototype._dequeuePendingRequest=function(e){var t=this.pendingRequests.indexOf(e);-1!==t&&(this.pendingRequests.splice(t,1),this._maybeCallWait())},r.prototype._maybeLog=function(e,t){if(this.logger&&this.options.verbose){var n=t;if(n=n||o.get(e,"body.trace.exception.message"),n=n||o.get(e,"body.trace_chain.0.exception.message"))return void this.logger.error(n);n=o.get(e,"body.message.body"),n&&this.logger.log(n)}},r.prototype._maybeCallWait=function(){return!(!o.isFunction(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))},e.exports=r},function(e,t,n){"use strict";function r(e,t){this.queue=e,this.options=t,this.transforms=[]}var o=n(5);r.prototype.configure=function(e){this.queue&&this.queue.configure(e);var t=this.options;return this.options=o.merge(t,e),this},r.prototype.addTransform=function(e){return o.isFunction(e)&&this.transforms.push(e),this},r.prototype.log=function(e,t){if(t&&o.isFunction(t)||(t=function(){}),!this.options.enabled)return t(new Error("Rollbar is not enabled"));this.queue.addPendingItem(e);var n=e.err;this._applyTransforms(e,function(r,o){return r?(this.queue.removePendingItem(e),t(r,null)):void this.queue.addItem(o,t,n,e)}.bind(this))},r.prototype._applyTransforms=function(e,t){var n=-1,r=this.transforms.length,o=this.transforms,i=this.options,a=function(e,s){return e?void t(e,null):(n++,n===r?void t(null,s):void o[n](s,i,a))};a(null,e)},e.exports=r},function(e,t,n){"use strict";function r(e){this.queue=[],this.options=i.merge(e);var t=this.options.maxTelemetryEvents||a;this.maxQueueSize=Math.max(0,Math.min(t,a))}function o(e,t){if(t)return t;var n={error:"error",manual:"info"};return n[e]||"info"}var i=n(5),a=100;r.prototype.configure=function(e){var t=this.options;this.options=i.merge(t,e);var n=this.options.maxTelemetryEvents||a,r=Math.max(0,Math.min(n,a)),o=0;this.maxQueueSize>r&&(o=this.maxQueueSize-r),this.maxQueueSize=r,this.queue.splice(0,o)},r.prototype.copyEvents=function(){return Array.prototype.slice.call(this.queue,0)},r.prototype.capture=function(e,t,n,r,a){var s={level:o(e,n),type:e,timestamp_ms:a||i.now(),body:t,source:"client"};r&&(s.uuid=r);try{if(i.isFunction(this.options.filterTelemetry)&&this.options.filterTelemetry(s))return!1}catch(e){this.options.filterTelemetry=null}return this.push(s),s},r.prototype.captureEvent=function(e,t,n){return this.capture("manual",e,t,n)},r.prototype.captureError=function(e,t,n,r){var o={message:e.message||String(e)};return e.stack&&(o.stack=e.stack),this.capture("error",o,t,n,r)},r.prototype.captureLog=function(e,t,n,r){return this.capture("log",{message:e},t,n,r)},r.prototype.captureNetwork=function(e,t,n,r){t=t||"xhr",e.subtype=e.subtype||t,r&&(e.request=r);var o=this.levelFromStatus(e.status_code);return this.capture("network",e,o,n)},r.prototype.levelFromStatus=function(e){return e>=200&&400>e?"info":0===e||e>=400?"error":"info"},r.prototype.captureDom=function(e,t,n,r,o){var i={subtype:e,element:t};return void 0!==n&&(i.value=n),void 0!==r&&(i.checked=r),this.capture("dom",i,"info",o)},r.prototype.captureNavigation=function(e,t,n){return this.capture("navigation",{from:e,to:t},"info",n)},r.prototype.captureDomContentLoaded=function(e){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,e&&e.getTime())},r.prototype.captureLoad=function(e){return this.capture("navigation",{subtype:"load"},"info",void 0,e&&e.getTime())},r.prototype.captureConnectivityChange=function(e,t){return this.captureNetwork({change:e},"connectivity",t)},r.prototype._captureRollbarItem=function(e){return this.options.includeItemsInTelemetry?e.err?this.captureError(e.err,e.level,e.uuid,e.timestamp):e.message?this.captureLog(e.message,e.level,e.uuid,e.timestamp):e.custom?this.capture("log",e.custom,e.level,e.uuid,e.timestamp):void 0:void 0},r.prototype.push=function(e){this.queue.push(e),this.queue.length>this.maxQueueSize&&this.queue.shift()},e.exports=r},function(e,t,n){"use strict";function r(e,t,n,r){this.options=e,this.transport=t,this.url=n,this.jsonBackup=r,this.accessToken=e.accessToken,this.transportOptions=o(e,n)}function o(e,t){return a.getTransportFromOptions(e,s,t)}var i=n(5),a=n(12),s={hostname:"api.rollbar.com",path:"/api/1/item/",search:null,version:"1",protocol:"https:",port:443};r.prototype.postItem=function(e,t){var n=a.transportOptions(this.transportOptions,"POST"),r=a.buildPayload(this.accessToken,e,this.jsonBackup);this.transport.post(this.accessToken,n,r,t)},r.prototype.configure=function(e){var t=this.oldOptions;return this.options=i.merge(t,e),this.transportOptions=o(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this},e.exports=r},function(e,t,n){"use strict";function r(e,t,n){if(!s.isType(t.context,"string")){var r=s.stringify(t.context,n);r.error?t.context="Error: could not serialize 'context'":t.context=r.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{access_token:e,data:t}}function o(e,t,n){var r=t.hostname,o=t.protocol,i=t.port,a=t.path,s=t.search,u=e.proxy;if(e.endpoint){var c=n.parse(e.endpoint);r=c.hostname,o=c.protocol,i=c.port,a=c.pathname,s=c.search}return{hostname:r,protocol:o,port:i,path:a,search:s,proxy:u}}function i(e,t){var n=e.protocol||"https:",r=e.port||("http:"===n?80:"https:"===n?443:void 0),o=e.hostname,i=e.path;return e.search&&(i+=e.search),e.proxy&&(i=n+"//"+o+i,o=e.proxy.host||e.proxy.hostname,r=e.proxy.port,n=e.proxy.protocol||n),{protocol:n,hostname:o,path:i,port:r,method:t}}function a(e,t){var n=/\/$/.test(e),r=/^\//.test(t);return n&&r?t=t.substring(1):n||r||(t="/"+t),e+t}var s=n(5);e.exports={buildPayload:r,getTransportFromOptions:o,transportOptions:i,appendPathToPath:a}},function(e,t,n){"use strict";function r(){var e=Array.prototype.slice.call(arguments,0);e.unshift("Rollbar:"),a.ieVersion()<=8?console.error(s.formatArgsAsString(e)):console.error.apply(console,e)}function o(){var e=Array.prototype.slice.call(arguments,0);e.unshift("Rollbar:"),a.ieVersion()<=8?console.info(s.formatArgsAsString(e)):console.info.apply(console,e)}function i(){var e=Array.prototype.slice.call(arguments,0);e.unshift("Rollbar:"),a.ieVersion()<=8?console.log(s.formatArgsAsString(e)):console.log.apply(console,e)}n(14);var a=n(15),s=n(5);e.exports={error:r,info:o,log:i}},function(e,t){!function(e){"use strict";e.console||(e.console={});for(var t,n,r=e.console,o=function(){},i=["memory"],a="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");t=i.pop();)r[t]||(r[t]={});for(;n=a.pop();)r[n]||(r[n]=o)}("undefined"==typeof window?this:window)},function(e,t){"use strict";function n(){var e;if(!document)return e;for(var t=3,n=document.createElement("div"),r=n.getElementsByTagName("i");n.innerHTML="<!--[if gt IE "+ ++t+"]><i></i><![endif]-->",r[0];);return t>4?t:e}var r={ieVersion:n};e.exports=r},function(e,t){"use strict";function n(e,t,n){if(e){var o;if("function"==typeof t._rollbarOldOnError)o=t._rollbarOldOnError;else if(e.onerror){for(o=e.onerror;o._rollbarOldOnError;)o=o._rollbarOldOnError;t._rollbarOldOnError=o}var i=function(){var n=Array.prototype.slice.call(arguments,0);r(e,t,o,n)};n&&(i._rollbarOldOnError=o),e.onerror=i}}function r(e,t,n,r){e._rollbarWrappedError&&(r[4]||(r[4]=e._rollbarWrappedError),r[5]||(r[5]=e._rollbarWrappedError._rollbarContext),e._rollbarWrappedError=null),t.handleUncaughtException.apply(t,r),n&&n.apply(e,r)}function o(e,t,n){if(e){"function"==typeof e._rollbarURH&&e._rollbarURH.belongsToShim&&e.removeEventListener("unhandledrejection",e._rollbarURH);var r=function(e){var n,r,o;try{n=e.reason}catch(e){n=void 0}try{r=e.promise}catch(e){r="[unhandledrejection] error getting `promise` from event"}try{o=e.detail,!n&&o&&(n=o.reason,r=o.promise)}catch(e){o="[unhandledrejection] error getting `detail` from event"}n||(n="[unhandledrejection] error getting `reason` from event"),t&&t.handleUnhandledRejection&&t.handleUnhandledRejection(n,r)};r.belongsToShim=n,e._rollbarURH=r,e.addEventListener("unhandledrejection",r)}}function i(e,t,n){if(e){var r,o,i="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(r=0;r<i.length;++r)o=i[r],e[o]&&e[o].prototype&&a(t,e[o].prototype,n)}}function a(e,t,n){if(t.hasOwnProperty&&t.hasOwnProperty("addEventListener")){for(var r=t.addEventListener;r._rollbarOldAdd&&r.belongsToShim;)r=r._rollbarOldAdd;var o=function(t,n,o){r.call(this,t,e.wrap(n),o)};o._rollbarOldAdd=r,o.belongsToShim=n,t.addEventListener=o;for(var i=t.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(e,t,n){i.call(this,e,t&&t._rollbar_wrapped||t,n)};a._rollbarOldRemove=i,a.belongsToShim=n,t.removeEventListener=a}}e.exports={captureUncaughtExceptions:n,captureUnhandledRejections:o,wrapGlobals:i}},function(e,t,n){"use strict";function r(e,t,n,r,o){r&&l.isFunction(r)||(r=function(){}),l.addParamsAndAccessTokenToPath(e,t,n);var a="GET",s=l.formatUrl(t);i(e,s,a,null,r,o)}function o(e,t,n,r,o){if(r&&l.isFunction(r)||(r=function(){}),!n)return r(new Error("Cannot send empty request"));var a=p.truncate(n);if(a.error)return r(a.error);var s=a.value,u="POST",c=l.formatUrl(t);i(e,c,u,s,r,o)}function i(e,t,n,r,o,i){var p;if(p=i?i():a(),!p)return o(new Error("No way to send a request"));try{try{var d=function(){try{if(d&&4===p.readyState){d=void 0;var e=l.jsonParse(p.responseText);if(s(p))return void o(e.error,e.value);if(u(p)){if(403===p.status){var t=e.value&&e.value.message;f.error(t)}o(new Error(String(p.status)))}else{var n="XHR response had no status code (likely connection failure)";o(c(n))}}}catch(e){var r;r=e&&e.stack?e:new Error(e),o(r)}};p.open(n,t,!0),p.setRequestHeader&&(p.setRequestHeader("Content-Type","application/json"),p.setRequestHeader("X-Rollbar-Access-Token",e)),p.onreadystatechange=d,p.send(r)}catch(e){if("undefined"!=typeof XDomainRequest){if(!window||!window.location)return o(new Error("No window available during request, unknown environment"));"http:"===window.location.href.substring(0,5)&&"https"===t.substring(0,5)&&(t="http"+t.substring(5));var h=new XDomainRequest;h.onprogress=function(){},h.ontimeout=function(){var e="Request timed out",t="ETIMEDOUT";o(c(e,t))},h.onerror=function(){o(new Error("Error during request"))},h.onload=function(){var e=l.jsonParse(h.responseText);o(e.error,e.value)},h.open(n,t,!0),h.send(r)}else o(new Error("Cannot find a method to transport a request"))}}catch(e){o(e)}}function a(){var e,t,n=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],r=n.length;for(t=0;r>t;t++)try{e=n[t]();break}catch(e){}return e}function s(e){return e&&e.status&&200===e.status}function u(e){return e&&l.isType(e.status,"number")&&e.status>=400&&e.status<600}function c(e,t){var n=new Error(e);return n.code=t||"ENOTFOUND",n}var l=n(5),p=n(18),f=n(13);e.exports={get:r,post:o}},function(e,t,n){"use strict";function r(e,t){return[e,f.stringify(e,t)]}function o(e,t){var n=e.length;return n>2*t?e.slice(0,t).concat(e.slice(n-t)):e}function i(e,t,n){n="undefined"==typeof n?30:n;var r,i=e.data.body;if(i.trace_chain)for(var a=i.trace_chain,s=0;s<a.length;s++)r=a[s].frames,r=o(r,n),a[s].frames=r;else i.trace&&(r=i.trace.frames,r=o(r,n),i.trace.frames=r);return[e,f.stringify(e,t)]}function a(e,t){return t&&t.length>e?t.slice(0,e-3).concat("..."):t}function s(e,t,n){function r(t,n,o){switch(f.typeName(n)){case"string":return a(e,n);case"object":case"array":return f.traverse(n,r,o);default:return n}}return t=f.traverse(t,r,[]),[t,f.stringify(t,n)]}function u(e){return e.exception&&(delete e.exception.description,e.exception.message=a(255,e.exception.message)),e.frames=o(e.frames,1),e}function c(e,t){var n=e.data.body;if(n.trace_chain)for(var r=n.trace_chain,o=0;o<r.length;o++)r[o]=u(r[o]);else n.trace&&(n.trace=u(n.trace));return[e,f.stringify(e,t)]}function l(e,t){return e.length>t}function p(e,t,n){n="undefined"==typeof n?524288:n;for(var o,a,u,p=[r,i,s.bind(null,1024),s.bind(null,512),s.bind(null,256),c];o=p.shift();)if(a=o(e,t),e=a[0],u=a[1],u.error||!l(u.value,n))return u;return u}var f=n(5);e.exports={truncate:p,raw:r,truncateFrames:i,truncateStrings:s,maybeTruncateValue:a}},function(e,t){"use strict";function n(e){var t,n,r={protocol:null,auth:null,host:null,path:null,hash:null,href:e,hostname:null,port:null,pathname:null,search:null,query:null};if(t=e.indexOf("//"),-1!==t?(r.protocol=e.substring(0,t),n=t+2):n=0,t=e.indexOf("@",n),-1!==t&&(r.auth=e.substring(n,t),n=t+1),t=e.indexOf("/",n),-1===t){if(t=e.indexOf("?",n),-1===t)return t=e.indexOf("#",n),-1===t?r.host=e.substring(n):(r.host=e.substring(n,t),r.hash=e.substring(t)),r.hostname=r.host.split(":")[0],r.port=r.host.split(":")[1],r.port&&(r.port=parseInt(r.port,10)),r;r.host=e.substring(n,t),r.hostname=r.host.split(":")[0],r.port=r.host.split(":")[1],r.port&&(r.port=parseInt(r.port,10)),n=t}else r.host=e.substring(n,t),r.hostname=r.host.split(":")[0],r.port=r.host.split(":")[1],r.port&&(r.port=parseInt(r.port,10)),n=t;if(t=e.indexOf("#",n),-1===t?r.path=e.substring(n):(r.path=e.substring(n,t),r.hash=e.substring(t)),r.path){var o=r.path.split("?");r.pathname=o[0],r.query=o[1],r.search=r.query?"?"+r.query:null}return r}e.exports={parse:n}},function(e,t,n){"use strict";function r(e,t,n){if(e.data=e.data||{},e.err)try{e.stackInfo=e.err._savedStackTrace||h.parse(e.err)}catch(t){m.error("Error while parsing the error object.",t);try{e.message=e.err.message||e.err.description||e.message||String(e.err)}catch(t){e.message=String(e.err)||String(t)}delete e.err}n(null,e)}function o(e,t,n){e.message||e.stackInfo||e.custom||n(new Error("No message, stack info, or custom data"),null),n(null,e)}function i(e,t,n){var r=t.payload&&t.payload.environment||t.environment;e.data=d.merge(e.data,{environment:r,level:e.level,endpoint:t.endpoint,platform:"browser",framework:"browser-js",language:"javascript",server:{},uuid:e.uuid,notifier:{name:"rollbar-browser-js",version:t.version}}),n(null,e)}function a(e){return function(t,n,r){if(!e||!e.location)return r(null,t);var o="$remote_ip";n.captureIp?n.captureIp!==!0&&(o+="_anonymize"):o=null,d.set(t,"data.request",{url:e.location.href,query_string:e.location.search,user_ip:o}),r(null,t)}}function s(e){return function(t,n,r){if(!e)return r(null,t);var o=e.navigator||{},i=e.screen||{};d.set(t,"data.client",{runtime_ms:t.timestamp-e._rollbarStartTime,timestamp:Math.round(t.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),r(null,t)}}function u(e){return function(t,n,r){if(!e||!e.navigator)return r(null,t);for(var o,i=[],a=e.navigator.plugins||[],s=0,u=a.length;u>s;++s)o=a[s],i.push({name:o.name,description:o.description});d.set(t,"data.client.javascript.plugins",i),r(null,t)}}function c(e,t,n){e.stackInfo?p(e,t,n):l(e,t,n)}function l(e,t,n){var r=e.message,o=e.custom;if(!r)if(o){var i=t.scrubFields,a=d.stringify(d.scrub(o,i));r=a.error||a.value||""}else r="";var s={body:r};o&&(s.extra=d.merge(o)),d.set(e,"data.body",{message:s}),n(null,e)}function p(e,t,n){var r=e.data.description,o=e.stackInfo,i=e.custom,a=h.guessErrorClass(o.message),s=o.name||a[0],u=a[1],c={exception:{"class":s,message:u}};r&&(c.exception.description=r);var p=o.stack;if(p&&0===p.length&&e._unhandledStackInfo&&e._unhandledStackInfo.stack&&(p=e._unhandledStackInfo.stack),p){0===p.length&&(c.exception.stack=o.rawStack,c.exception.raw=String(o.rawException));var f,m,g,v,y,b,w,x;for(c.frames=[],w=0;w<p.length;++w)f=p[w],m={filename:f.url?d.sanitizeUrl(f.url):"(unknown)",lineno:f.line||null,method:f.func&&"?"!==f.func?f.func:"[anonymous]",colno:f.column},m.method&&m.method.endsWith&&m.method.endsWith("_rollbar_wrapped")||(g=v=y=null,b=f.context?f.context.length:0,b&&(x=Math.floor(b/2),v=f.context.slice(0,x),g=f.context[x],y=f.context.slice(x)),g&&(m.code=g),(v||y)&&(m.context={},v&&v.length&&(m.context.pre=v),y&&y.length&&(m.context.post=y)),f.args&&(m.args=f.args),c.frames.push(m));c.frames.reverse(),i&&(c.extra=d.merge(i)),d.set(e,"data.body",{trace:c}),n(null,e)}else e.message=s+": "+u,l(e,t,n)}function f(e,t,n){var r=t.scrubFields;e.data=d.scrub(e.data,r),n(null,e)}var d=n(5),h=n(21),m=n(13);e.exports={handleItemWithError:r,ensureItemHasSomethingToSay:o,addBaseInfo:i,addRequestInfo:a,addClientInfo:s,addPluginInfo:u,addBody:c,scrubPayload:f}},function(e,t,n){"use strict";function r(){return l}function o(){return null}function i(e){var t={};return t._stackFrame=e,t.url=e.fileName,t.line=e.lineNumber,t.func=e.functionName,t.column=e.columnNumber,t.args=e.args,t.context=o(t.url,t.line),t}function a(e){function t(){var e,t=[];if(n.stack)e=n;else try{throw n}catch(n){e=n}try{t=c.parse(e)}catch(n){t=[]}for(var r=[],o=0;o<t.length;o++)r.push(new i(t[o]));return r}return{stack:t(),message:e.message,name:e.name,rawStack:e.stack,rawException:e}}function s(e){return new a(e)}function u(e){if(!e||!e.match)return["Unknown error. There was no error message to display.",""];var t=e.match(p),n="(unknown)";return t&&(n=t[t.length-1],e=e.replace((t[t.length-2]||"")+n+":",""),e=e.replace(/(^[\s]+|[\s]+$)/g,"")),[n,e]}var c=n(22),l="?",p=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");e.exports={guessFunctionName:r,guessErrorClass:u,gatherContext:o,parse:s,Stack:a,Frame:i}},function(e,t,n){var r,o,i;!function(a,s){"use strict";o=[n(23)],r=s,i="function"==typeof r?r.apply(t,o):r,!(void 0!==i&&(e.exports=i))}(this,function(e){"use strict";function t(e,t,n){if("function"==typeof Array.prototype.map)return e.map(t,n);for(var r=new Array(e.length),o=0;o<e.length;o++)r[o]=t.call(n,e[o]);return r}function n(e,t,n){if("function"==typeof Array.prototype.filter)return e.filter(t,n);for(var r=[],o=0;o<e.length;o++)t.call(n,e[o])&&r.push(e[o]);return r}var r=/(^|@)\S+\:\d+/,o=/^\s*at .*(\S+\:\d+|\(native\))/m,i=/^(eval@)?(\[native code\])?$/;return{parse:function(e){if("undefined"!=typeof e.stacktrace||"undefined"!=typeof e["opera#sourceloc"])return this.parseOpera(e);if(e.stack&&e.stack.match(o))return this.parseV8OrIE(e);if(e.stack)return this.parseFFOrSafari(e);throw new Error("Cannot parse given Error object")},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=e.replace(/[\(\)\s]/g,"").split(":"),n=t.pop(),r=t[t.length-1];if(!isNaN(parseFloat(r))&&isFinite(r)){var o=t.pop();return[t.join(":"),o,n]}return[t.join(":"),n,void 0]},parseV8OrIE:function(r){var i=n(r.stack.split("\n"),function(e){return!!e.match(o)},this);return t(i,function(t){t.indexOf("(eval ")>-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^\()]*)|(\)\,.*$)/g,""));var n=t.replace(/^\s+/,"").replace(/\(eval code/g,"(").split(/\s+/).slice(1),r=this.extractLocation(n.pop()),o=n.join(" ")||void 0,i="eval"===r[0]?void 0:r[0];return new e(o,void 0,i,r[1],r[2],t)},this)},parseFFOrSafari:function(r){var o=n(r.stack.split("\n"),function(e){return!e.match(i)},this);return t(o,function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval\:\d+\:\d+/g,":$1")),-1===t.indexOf("@")&&-1===t.indexOf(":"))return new e(t);var n=t.split("@"),r=this.extractLocation(n.pop()),o=n.shift()||void 0;return new e(o,void 0,r[0],r[1],r[2],t)},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)/i,r=t.message.split("\n"),o=[],i=2,a=r.length;a>i;i+=2){var s=n.exec(r[i]);s&&o.push(new e(void 0,void 0,s[2],s[1],void 0,r[i]))}return o},parseOpera10:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,r=t.stacktrace.split("\n"),o=[],i=0,a=r.length;a>i;i+=2){var s=n.exec(r[i]);s&&o.push(new e(s[3]||void 0,void 0,s[2],s[1],void 0,r[i]))}return o},parseOpera11:function(o){var i=n(o.stack.split("\n"),function(e){return!!e.match(r)&&!e.match(/^Error created at/)},this);return t(i,function(t){var n,r=t.split("@"),o=this.extractLocation(r.pop()),i=r.shift()||"",a=i.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^\)]*\)/g,"")||void 0;i.match(/\(([^\)]*)\)/)&&(n=i.replace(/^[^\(]+\(([^\)]*)\)$/,"$1"));var s=void 0===n||"[arguments not available]"===n?void 0:n.split(",");return new e(a,s,o[0],o[1],o[2],t)},this)}}})},function(e,t,n){var r,o,i;!function(n,a){"use strict";o=[],r=a,i="function"==typeof r?r.apply(t,o):r,!(void 0!==i&&(e.exports=i))}(this,function(){"use strict";function e(e){return!isNaN(parseFloat(e))&&isFinite(e)}function t(e,t,n,r,o,i){void 0!==e&&this.setFunctionName(e),void 0!==t&&this.setArgs(t),void 0!==n&&this.setFileName(n),void 0!==r&&this.setLineNumber(r),void 0!==o&&this.setColumnNumber(o),void 0!==i&&this.setSource(i)}return t.prototype={getFunctionName:function(){return this.functionName},setFunctionName:function(e){this.functionName=String(e)},getArgs:function(){return this.args},setArgs:function(e){if("[object Array]"!==Object.prototype.toString.call(e))throw new TypeError("Args must be an Array");this.args=e},getFileName:function(){return this.fileName},setFileName:function(e){this.fileName=String(e)},getLineNumber:function(){return this.lineNumber},setLineNumber:function(t){if(!e(t))throw new TypeError("Line Number must be a Number");this.lineNumber=Number(t)},getColumnNumber:function(){return this.columnNumber},setColumnNumber:function(t){if(!e(t))throw new TypeError("Column Number must be a Number");this.columnNumber=Number(t)},getSource:function(){return this.source},setSource:function(e){this.source=String(e)},toString:function(){var t=this.getFunctionName()||"{anonymous}",n="("+(this.getArgs()||[]).join(",")+")",r=this.getFileName()?"@"+this.getFileName():"",o=e(this.getLineNumber())?":"+this.getLineNumber():"",i=e(this.getColumnNumber())?":"+this.getColumnNumber():"";return t+n+r+o+i}},t})},function(e,t,n){"use strict";function r(e,t,n){var r=t.payload||{};r.body&&delete r.body;var o=u.merge(e.data,r);e._isUncaught&&(o._isUncaught=!0),e._originalArgs&&(o._originalArgs=e._originalArgs),n(null,o)}function o(e,t,n){e.telemetryEvents&&u.set(e,"data.body.telemetry",e.telemetryEvents),n(null,e)}function i(e,t,n){if(!e.message)return void n(null,e);var r="data.body.trace_chain.0",o=u.get(e,r);if(o||(r="data.body.trace",o=u.get(e,r)),o){if(!o.exception||!o.exception.description)return u.set(e,r+".exception.description",e.message),void n(null,e);var i=u.get(e,r+".extra")||{},a=u.merge(i,{message:e.message});u.set(e,r+".extra",a)}n(null,e)}function a(e){return function(t,n,r){var o=u.merge(t);try{u.isFunction(n.transform)&&n.transform(o.data,t)}catch(o){return n.transform=null,e.error("Error while calling custom transform() function. Removing custom transform().",o),void r(null,t)}r(null,o)}}function s(e,t,n){if(!t.sendConfig)return n(null,e);var r="_rollbarConfig",o=u.get(e,"data.custom")||{};o[r]=t,e.data.custom=o,n(null,e)}var u=n(5);e.exports={itemToPayload:r,addTelemetryData:o,addMessageWithError:i,userTransform:a,addConfigToPayload:s}},function(e,t,n){"use strict";function r(e,t){return!o.get(t,"plugins.jquery.ignoreAjaxErrors")||!o.get(e,"body.message.extra.isAjax")}var o=n(5);e.exports={checkIgnore:r}},function(e,t,n){"use strict";function r(e,t){var n=e.level,r=c.LEVELS[n]||0,o=t.reportLevel,i=c.LEVELS[o]||0;return!(i>r)}function o(e){return function(t,n){var r=!!t._isUncaught;delete t._isUncaught;var o=t._originalArgs;delete t._originalArgs;try{c.isFunction(n.onSendCallback)&&n.onSendCallback(r,o,t)}catch(t){n.onSendCallback=null,e.error("Error while calling onSendCallback, removing",t)}try{if(c.isFunction(n.checkIgnore)&&n.checkIgnore(r,o,t))return!1}catch(t){n.checkIgnore=null,e.error("Error while calling custom checkIgnore(), removing",t)}return!0}}function i(e){return function(t,n){return!s(t,n,"blacklist",e)}}function a(e){return function(t,n){return s(t,n,"whitelist",e)}}function s(e,t,n,r){var o=!1;"blacklist"===n&&(o=!0);var i,a,s,u,l,p,f,d,h,m;try{if(i=o?t.hostBlackList:t.hostWhiteList,f=i&&i.length,a=c.get(e,"body.trace"),!i||0===f)return!o;if(!a||!a.frames||0===a.frames.length)return!o;for(l=a.frames.length,h=0;l>h;h++){if(s=a.frames[h],u=s.filename,!c.isType(u,"string"))return!o;for(m=0;f>m;m++)if(p=i[m],d=new RegExp(p),d.test(u))return!0}}catch(e){o?t.hostBlackList=null:t.hostWhiteList=null;var g=o?"hostBlackList":"hostWhiteList";return r.error("Error while reading your configuration's "+g+" option. Removing custom "+g+".",e),!o}return!1}function u(e){return function(t,n){var r,o,i,a,s,u,l,p,f;try{if(s=!1,i=n.ignoredMessages,!i||0===i.length)return!0;if(l=t.body,p=c.get(l,"trace.exception.message"),f=c.get(l,"message.body"),r=p||f,!r)return!0;for(a=i.length,o=0;a>o&&(u=new RegExp(i[o],"gi"),!(s=u.test(r)));o++);}catch(t){n.ignoredMessages=null,e.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.")}return!s}}var c=n(5);e.exports={checkLevel:r,userCheckIgnore:o,urlIsNotBlacklisted:i,urlIsWhitelisted:a,messageIsIgnored:u}},function(e,t,n){"use strict";function r(e,t,n,r,o){var i=e[t];e[t]=n(i),r&&r[o].push([e,t,i])}function o(e,t){for(var n;e[t].length;)n=e[t].shift(),n[0][n[1]]=n[2]}function i(e){if(!e||!e.attributes)return null;for(var t=e.attributes,n=0;n<t.length;++n)if("name"===t[n].key)return t[n].value;return null}function a(e){for(var t=[],n=0;n<e.length;++n)t.push(new RegExp(e[n],"i"));return function(e){var n=i(e);if(!n)return!1;for(var r=0;r<t.length;++r)if(t[r].test(n))return!0;return!1}}function s(e,t,n,r,o){var i=e.autoInstrument;e.enabled===!1||i===!1?this.autoInstrument={}:(u.isType(i,"object")||(i=p),this.autoInstrument=u.merge(p,i)),this.scrubTelemetryInputs=!!e.scrubTelemetryInputs,this.telemetryScrubber=e.telemetryScrubber,this.defaultValueScrubber=a(e.scrubFields),this.telemeter=t,this.rollbar=n,this._window=r||{},this._document=o||{},this.replacements={network:[],log:[],navigation:[],connectivity:[]},this.eventRemovers={dom:[],connectivity:[]},this._location=this._window.location,this._lastHref=this._location&&this._location.href}var u=n(5),c=n(19),l=n(28),p={network:!0,networkResponseHeaders:!1,networkResponseBody:!1,networkRequestBody:!1,log:!0,dom:!0,navigation:!0,connectivity:!0};s.prototype.configure=function(e){var t=e.autoInstrument,n=u.merge(this.autoInstrument);e.enabled===!1||t===!1?this.autoInstrument={}:(u.isType(t,"object")||(t=p),this.autoInstrument=u.merge(p,t)),this.instrument(n),void 0!==e.scrubTelemetryInputs&&(this.scrubTelemetryInputs=!!e.scrubTelemetryInputs),void 0!==e.telemetryScrubber&&(this.telemetryScrubber=e.telemetryScrubber)},s.prototype.instrument=function(e){!this.autoInstrument.network||e&&e.network?!this.autoInstrument.network&&e&&e.network&&this.deinstrumentNetwork():this.instrumentNetwork(),!this.autoInstrument.log||e&&e.log?!this.autoInstrument.log&&e&&e.log&&this.deinstrumentConsole():this.instrumentConsole(),!this.autoInstrument.dom||e&&e.dom?!this.autoInstrument.dom&&e&&e.dom&&this.deinstrumentDom():this.instrumentDom(),!this.autoInstrument.navigation||e&&e.navigation?!this.autoInstrument.navigation&&e&&e.navigation&&this.deinstrumentNavigation():this.instrumentNavigation(),!this.autoInstrument.connectivity||e&&e.connectivity?!this.autoInstrument.connectivity&&e&&e.connectivity&&this.deinstrumentConnectivity():this.instrumentConnectivity()},s.prototype.deinstrumentNetwork=function(){o(this.replacements,"network")},s.prototype.instrumentNetwork=function(){function e(e,n){e in n&&u.isFunction(n[e])&&r(n,e,function(e){return t.rollbar.wrap(e)})}var t=this;if("XMLHttpRequest"in this._window){var n=this._window.XMLHttpRequest.prototype;r(n,"open",function(e){return function(t,n){return u.isType(n,"string")&&(this.__rollbar_xhr={method:t,url:n,status_code:null,start_time_ms:u.now(),end_time_ms:null}),e.apply(this,arguments)}},this.replacements,"network"),r(n,"send",function(n){return function(o){function i(){if(a.__rollbar_xhr&&(1===a.readyState||4===a.readyState)){if(null===a.__rollbar_xhr.status_code){a.__rollbar_xhr.status_code=0;var e=null;t.autoInstrument.networkRequestBody&&(e=o),a.__rollbar_event=t.telemeter.captureNetwork(a.__rollbar_xhr,"xhr",void 0,e)}if(1===a.readyState)a.__rollbar_xhr.start_time_ms=u.now();else{a.__rollbar_xhr.end_time_ms=u.now();var n=null;if(t.autoInstrument.networkResponseHeaders){var r=t.autoInstrument.networkResponseHeaders;n={};try{var i,s;if(r===!0){var c=a.getAllResponseHeaders();if(c){var l,p,f=c.trim().split(/[\r\n]+/);for(s=0;s<f.length;s++)l=f[s].split(": "),i=l.shift(),p=l.join(": "),n[i]=p}}else for(s=0;s<r.length;s++)i=r[s],n[i]=a.getResponseHeader(i)}catch(e){}}var d=null;if(t.autoInstrument.networkResponseBody)try{d=a.responseText}catch(e){}var h=null;(d||n)&&(h={},d&&(h.body=d),n&&(h.headers=n)),h&&(a.__rollbar_xhr.response=h)}try{var m=a.status;m=1223===m?204:m,a.__rollbar_xhr.status_code=m,a.__rollbar_event.level=t.telemeter.levelFromStatus(m)}catch(e){}}}var a=this;return e("onload",a),e("onerror",a),e("onprogress",a),"onreadystatechange"in a&&u.isFunction(a.onreadystatechange)?r(a,"onreadystatechange",function(e){return t.rollbar.wrap(e,void 0,i)}):a.onreadystatechange=i,n.apply(this,arguments)}},this.replacements,"network")}"fetch"in this._window&&r(this._window,"fetch",function(e){return function(n,r){for(var o=new Array(arguments.length),i=0,a=o.length;a>i;i++)o[i]=arguments[i];var s,c=o[0],l="GET";u.isType(c,"string")?s=c:c&&(s=c.url,c.method&&(l=c.method)),o[1]&&o[1].method&&(l=o[1].method);var p={method:l,url:s,status_code:null,start_time_ms:u.now(),end_time_ms:null},f=null;return t.autoInstrument.networkRequestBody&&(o[1]&&o[1].body?f=o[1].body:o[0]&&!u.isType(o[0],"string")&&o[0].body&&(f=o[0].body)),t.telemeter.captureNetwork(p,"fetch",void 0,f),e.apply(this,o).then(function(e){p.end_time_ms=u.now(),p.status_code=e.status;var n=null;if(t.autoInstrument.networkResponseHeaders){var r=t.autoInstrument.networkResponseHeaders;n={};try{if(r===!0);else for(var o=0;o<r.length;o++){var i=r[o];n[i]=e.headers.get(i)}}catch(e){}}var a=null;return n&&(a={headers:n}),a&&(p.response=a),e})}},this.replacements,"network")},s.prototype.deinstrumentConsole=function(){if("console"in this._window&&this._window.console.log)for(var e;this.replacements.log.length;)e=this.replacements.log.shift(), this._window.console[e[0]]=e[1]},s.prototype.instrumentConsole=function(){function e(e){var r=n[e],o=n,i="warn"===e?"warning":e;n[e]=function(){var e=Array.prototype.slice.call(arguments),n=u.formatArgsAsString(e);t.telemeter.captureLog(n,i),r&&Function.prototype.apply.call(r,o,e)},t.replacements.log.push([e,r])}if("console"in this._window&&this._window.console.log)for(var t=this,n=this._window.console,r=["debug","info","warn","error","log"],o=0,i=r.length;i>o;o++)e(r[o])},s.prototype.deinstrumentDom=function(){("addEventListener"in this._window||"attachEvent"in this._window)&&this.removeListeners("dom")},s.prototype.instrumentDom=function(){if("addEventListener"in this._window||"attachEvent"in this._window){var e=this.handleClick.bind(this),t=this.handleBlur.bind(this);this.addListener("dom",this._window,"click","onclick",e,!0),this.addListener("dom",this._window,"blur","onfocusout",t,!0)}},s.prototype.handleClick=function(e){try{var t=l.getElementFromEvent(e,this._document),n=t&&t.tagName,r=l.isDescribedElement(t,"a")||l.isDescribedElement(t,"button");n&&(r||l.isDescribedElement(t,"input",["button","submit"]))?this.captureDomEvent("click",t):l.isDescribedElement(t,"input",["checkbox","radio"])&&this.captureDomEvent("input",t,t.value,t.checked)}catch(e){}},s.prototype.handleBlur=function(e){try{var t=l.getElementFromEvent(e,this._document);t&&t.tagName&&(l.isDescribedElement(t,"textarea")?this.captureDomEvent("input",t,t.value):l.isDescribedElement(t,"select")&&t.options&&t.options.length?this.handleSelectInputChanged(t):l.isDescribedElement(t,"input")&&!l.isDescribedElement(t,"input",["button","submit","hidden","checkbox","radio"])&&this.captureDomEvent("input",t,t.value))}catch(e){}},s.prototype.handleSelectInputChanged=function(e){if(e.multiple)for(var t=0;t<e.options.length;t++)e.options[t].selected&&this.captureDomEvent("input",e,e.options[t].value);else e.selectedIndex>=0&&e.options[e.selectedIndex]&&this.captureDomEvent("input",e,e.options[e.selectedIndex].value)},s.prototype.captureDomEvent=function(e,t,n,r){if(void 0!==n)if(this.scrubTelemetryInputs||"password"===l.getElementType(t))n="[scrubbed]";else{var o=l.describeElement(t);this.telemetryScrubber?this.telemetryScrubber(o)&&(n="[scrubbed]"):this.defaultValueScrubber(o)&&(n="[scrubbed]")}var i=l.elementArrayToString(l.treeToArray(t));this.telemeter.captureDom(e,i,n,r)},s.prototype.deinstrumentNavigation=function(){var e=this._window.chrome,t=e&&e.app&&e.app.runtime,n=!t&&this._window.history&&this._window.history.pushState;n&&o(this.replacements,"navigation")},s.prototype.instrumentNavigation=function(){var e=this._window.chrome,t=e&&e.app&&e.app.runtime,n=!t&&this._window.history&&this._window.history.pushState;if(n){var o=this;r(this._window,"onpopstate",function(e){return function(){var t=o._location.href;o.handleUrlChange(o._lastHref,t),e&&e.apply(this,arguments)}},this.replacements,"navigation"),r(this._window.history,"pushState",function(e){return function(){var t=arguments.length>2?arguments[2]:void 0;return t&&o.handleUrlChange(o._lastHref,t+""),e.apply(this,arguments)}},this.replacements,"navigation")}},s.prototype.handleUrlChange=function(e,t){var n=c.parse(this._location.href),r=c.parse(t),o=c.parse(e);this._lastHref=t,n.protocol===r.protocol&&n.host===r.host&&(t=r.path+(r.hash||"")),n.protocol===o.protocol&&n.host===o.host&&(e=o.path+(o.hash||"")),this.telemeter.captureNavigation(e,t)},s.prototype.deinstrumentConnectivity=function(){("addEventListener"in this._window||"body"in this._document)&&(this._window.addEventListener?this.removeListeners("connectivity"):o(this.replacements,"connectivity"))},s.prototype.instrumentConnectivity=function(){if("addEventListener"in this._window||"body"in this._document)if(this._window.addEventListener)this.addListener("connectivity",this._window,"online",void 0,function(){this.telemeter.captureConnectivityChange("online")}.bind(this),!0),this.addListener("connectivity",this._window,"offline",void 0,function(){this.telemeter.captureConnectivityChange("offline")}.bind(this),!0);else{var e=this;r(this._document.body,"ononline",function(t){return function(){e.telemeter.captureConnectivityChange("online"),t&&t.apply(this,arguments)}},this.replacements,"connectivity"),r(this._document.body,"onoffline",function(t){return function(){e.telemeter.captureConnectivityChange("offline"),t&&t.apply(this,arguments)}},this.replacements,"connectivity")}},s.prototype.addListener=function(e,t,n,r,o,i){t.addEventListener?(t.addEventListener(n,o,i),this.eventRemovers[e].push(function(){t.removeEventListener(n,o,i)})):r&&(t.attachEvent(r,o),this.eventRemovers[e].push(function(){t.detachEvent(r,o)}))},s.prototype.removeListeners=function(e){for(var t;this.eventRemovers[e].length;)(t=this.eventRemovers[e].shift())()},e.exports=s},function(e,t){"use strict";function n(e){return(e.getAttribute("type")||"").toLowerCase()}function r(e,t,r){if(e.tagName.toLowerCase()!==t.toLowerCase())return!1;if(!r)return!0;e=n(e);for(var o=0;o<r.length;o++)if(r[o]===e)return!0;return!1}function o(e,t){return e.target?e.target:t&&t.elementFromPoint?t.elementFromPoint(e.clientX,e.clientY):void 0}function i(e){for(var t,n=5,r=[],o=0;e&&n>o&&(t=u(e),"html"!==t.tagName);o++)r.unshift(t),e=e.parentNode;return r}function a(e){for(var t,n,r=80,o=" > ",i=o.length,a=[],u=0,c=e.length-1;c>=0;c--){if(t=s(e[c]),n=u+a.length*i+t.length,c<e.length-1&&n>=r+3){a.unshift("...");break}a.unshift(t),u+=t.length}return a.join(o)}function s(e){if(!e||!e.tagName)return"";var t=[e.tagName];e.id&&t.push("#"+e.id),e.classes&&t.push("."+e.classes.join("."));for(var n=0;n<e.attributes.length;n++)t.push("["+e.attributes[n].key+'="'+e.attributes[n].value+'"]');return t.join("")}function u(e){if(!e||!e.tagName)return null;var t,n,r,o,i={};i.tagName=e.tagName.toLowerCase(),e.id&&(i.id=e.id),t=e.className,t&&"string"==typeof t&&(i.classes=t.split(/\s+/));var a=["type","name","title","alt"];for(i.attributes=[],o=0;o<a.length;o++)n=a[o],r=e.getAttribute(n),r&&i.attributes.push({key:n,value:r});return i}e.exports={describeElement:u,descriptionToString:s,elementArrayToString:a,treeToArray:i,getElementFromEvent:o,isDescribedElement:r,getElementType:n}}])}),e.rollbar}();window.__rollbar_for_locksmith=rollbar;var Rollbar=new rollbar({accessToken:"05d6133564e54ef8b23630836db4f41f",captureUncaught:!1,captureUnhandledRejections:!1,captureIp:"anonymize",payload:{environment:"production",client:{javascript:{code_version:"15b93644f1391e088830fc68a7a7754adbfcffd9",guess_uncaught_frames:!0}},person:{id:55079960598,username:"shophardwareeu"}},enabled:(new Date).getTime()/1e3-1635891310<259200}),withErrorMonitoring=function(e,t){if(e.hasErrorMonitoring)return e;var n=function(){try{return e.apply(null,arguments)}catch(n){throw t?Rollbar.error("Failed in "+t,n):Rollbar.error(n),n}};return n.hasErrorMonitoring=!0,n};withErrorMonitoring(function(){var e=window.Locksmith={},t=document.querySelector('script[type="application/vnd.locksmith+json"]'),n=t&&t.innerHTML;if(e.state={},e.util={rollbar:Rollbar},e.loading=!1,n)try{e.state=JSON.parse(n)}catch(r){}if(document.addEventListener&&document.querySelector){var o,i,a,s=[76,79,67,75,83,77,73,84,72,49,49],u=function(){i=s.slice(0)},c="style",l=function(e){e&&27!==e.keyCode&&"click"!==e.type||(document.removeEventListener("keydown",l),document.removeEventListener("click",l),o&&document.body.removeChild(o),o=null)};u(),document.addEventListener("keyup",function(e){if(e.keyCode===i[0]){if(clearTimeout(a),i.shift(),i.length>0)return void(a=setTimeout(u,1e3));u(),l(),o=document.createElement("div"),o[c].width="50%",o[c].maxWidth="1000px",o[c].height="85%",o[c].border="1px rgba(0, 0, 0, 0.2) solid",o[c].background="rgba(255, 255, 255, 0.99)",o[c].borderRadius="4px",o[c].position="fixed",o[c].top="50%",o[c].left="50%",o[c].transform="translateY(-50%) translateX(-50%)",o[c].boxShadow="0 2px 5px rgba(0, 0, 0, 0.3), 0 0 100vh 100vw rgba(0, 0, 0, 0.5)",o[c].zIndex="2147483645";var t=document.createElement("textarea");t.value=JSON.stringify(JSON.parse(n),null,2),t[c].border="none",t[c].display="block",t[c].boxSizing="border-box",t[c].width="100%",t[c].height="100%",t[c].background="transparent",t[c].padding="22px",t[c].fontFamily="monospace",t[c].fontSize="14px",t[c].color="#333",t[c].resize="none",t[c].outline="none",t.readOnly=!0,o.appendChild(t),document.body.appendChild(o),t.addEventListener("click",function(e){e.stopImmediatePropagation()}),t.select(),document.addEventListener("keydown",l),document.addEventListener("click",l)}})}e.isEmbedded=-1!==window.location.search.indexOf("_ab=0&_fd=0&_sc=1"),e.path=e.state.path||window.location.pathname,e.basePath="/apps/locksmith",e.reloading=!1,e.util.console=window.console||{log:function(){},error:function(){}},e.util.makeUrl=function(t,n){var r,o=e.basePath+t,i=[],a=e.cache();for(r in a)i.push(r+"="+encodeURIComponent(a[r]));for(r in n)i.push(r+"="+encodeURIComponent(n[r]));return e.state.customer_id&&(i.push("customer_id="+encodeURIComponent(e.state.customer_id)),i.push("customer_id_signature="+encodeURIComponent(e.state.customer_id_signature))),o+=(-1===o.indexOf("?")?"?":"&")+i.join("&")},e._initializeCallbacks=[],e.on=function(t,n){if("initialize"!==t)throw'Locksmith.on() currently only supports the "initialize" event';e._initializeCallbacks.push(n)},e.initializeSession=function(t){if(!e.isEmbedded){t=t||{};var n=!1,r=!0,o=!0;t.silent&&(n=!0,r=!1,o=!1),e.ping({silent:n,spinner:r,reload:o,callback:function(){e._initializeCallbacks.forEach(function(e){e()})}})}},e.cache=withErrorMonitoring(function(e){var t={};try{var n=function(e){return(document.cookie.match("(^|; )"+e+"=([^;]*)")||0)[2]};t=JSON.parse(decodeURIComponent(n("locksmith-params")||"{}"))}catch(r){}if(e){for(var o in e)t[o]=e[o];document.cookie="locksmith-params=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/",document.cookie="locksmith-params="+encodeURIComponent(JSON.stringify(t))+"; path=/"}return t},"Locksmith.cache"),e.cache.cart=e.state.cart,e.cache.cartLastSaved=null,e.params=e.cache(),e.util.reload=function(){e.reloading=!0;try{window.location.href=window.location.href.replace(/#.*/,"")}catch(t){e.util.console.error("Preferred reload method failed",t),window.location.reload()}},e.cache.saveCart=function(t){if(!e.cache.cart||e.cache.cart===e.cache.cartLastSaved)return t?t():null;var n=e.cache.cartLastSaved;e.cache.cartLastSaved=e.cache.cart,reqwest({url:"/cart/update.json",method:"post",type:"json",data:{attributes:{locksmith:e.cache.cart}},complete:t,error:function(t){if(e.cache.cartLastSaved=n,!e.reloading)throw Rollbar.error("Request failed in Locksmith.cache.saveCart",t),t}})},e.util.spinnerHTML='<style>body{background:#FFF}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}#loading{display:flex;width:100%;height:50vh;color:#777;align-items:center;justify-content:center}#loading .spinner{display:block;animation:spin 600ms linear infinite;position:relative;width:50px;height:50px}#loading .spinner-ring{stroke:currentColor;stroke-dasharray:100%;stroke-width:2px;stroke-linecap:round;fill:none}</style><div id="loading"><div class="spinner"><svg width="100%" height="100%"><svg preserveAspectRatio="xMinYMin"><circle class="spinner-ring" cx="50%" cy="50%" r="45%"></circle></svg></svg></div></div>',e.util.clobberBody=function(e){document.body.innerHTML=e},e.util.clobberDocument=function(e){e.responseText&&(e=e.responseText),document.documentElement&&document.removeChild(document.documentElement);var t=document.open("text/html","replace");t.writeln(e),t.close(),setTimeout(function(){var e=t.querySelector("[autofocus]");e&&e.focus()},100)},e.util.serializeForm=function(e){if(e&&"FORM"===e.nodeName){var t,n,r={};for(t=e.elements.length-1;t>=0;t-=1)if(""!==e.elements[t].name)switch(e.elements[t].nodeName){case"INPUT":switch(e.elements[t].type){default:case"text":case"hidden":case"password":case"button":case"reset":case"submit":r[e.elements[t].name]=e.elements[t].value;break;case"checkbox":case"radio":e.elements[t].checked&&(r[e.elements[t].name]=e.elements[t].value);break;case"file":}break;case"TEXTAREA":r[e.elements[t].name]=e.elements[t].value;break;case"SELECT":switch(e.elements[t].type){case"select-one":r[e.elements[t].name]=e.elements[t].value;break;case"select-multiple":for(n=e.elements[t].options.length-1;n>=0;n-=1)e.elements[t].options[n].selected&&(r[e.elements[t].name]=e.elements[t].options[n].value)}break;case"BUTTON":switch(e.elements[t].type){case"reset":case"submit":case"button":r[e.elements[t].name]=e.elements[t].value}}return r}},e.util.on=function(e,t,n,r){r=r||document;var o="locksmith-"+e+t,i=function(e){var r=e.target,i=e.target.parentElement,a=r.className.baseVal||r.className||"",s=i.className.baseVal||i.className||"";("string"==typeof a&&-1!==a.split(/\s+/).indexOf(t)||"string"==typeof s&&-1!==s.split(/\s+/).indexOf(t))&&!e[o]&&(e[o]=!0,n(e))};r.attachEvent?r.attachEvent(e,i):r.addEventListener(e,i,!1)},e.util.enableActions=function(t){e.util.on("click","locksmith-action",function(t){t.preventDefault();var n=t.target;(!n.dataset.confirmWith||confirm(n.dataset.confirmWith))&&(n.disabled=!0,n.innerText=n.dataset.disableWith,e.post("/action",n.dataset.locksmithParams,{spinner:!1,type:"text",success:function(t){t=JSON.parse(t.responseText),t.message&&alert(t.message),e.util.reload()}}))},t)},e.util.inject=function(e,t){var n=["data","locksmith","append"];if(-1!==t.indexOf(n.join("-"))){var r=document.createElement("div");r.innerHTML=t,e.appendChild(r)}else e.innerHTML=t;var o,i,a=e.querySelectorAll("script");for(i=0;i<a.length;++i){o=a[i];var s=document.createElement("script");if(o.type&&(s.type=o.type),o.src)s.src=o.src;else{var u=document.createTextNode(o.innerHTML);s.appendChild(u)}e.appendChild(s)}var c=e.querySelector("[autofocus]");c&&c.focus()},e.post=function(t,n,r){r=r||{},r.spinner!==!1&&e.util.clobberBody(e.util.spinnerHTML);var o={};r.container===document?(o.layout=1,r.success=function(t){document.getElementById(r.container);e.util.clobberDocument(t)}):r.container&&(o.layout=0,r.success=function(t){var n=document.getElementById(r.container);e.util.inject(n,t),n.id===n.firstChild.id&&n.parentElement.replaceChild(n.firstChild,n)}),e.loading=!0;var i=e.util.makeUrl(t,o);reqwest({url:i,method:"post",type:r.type||"html",data:n,complete:function(){e.loading=!1},error:function(t){if(!e.reloading){if("dashboard.weglot.com"===window.location.host)return void console.error(t);if(r.silent)return void console.error(t);throw Rollbar.error("Request failed in Locksmith.post",t),alert("Something went wrong! Please refresh and try again."),t}},success:r.success||e.util.clobberDocument})},e.postResource=function(t,n){t.path=e.path,t.search=window.location.search,t.state=e.state,t.passcode&&(t.passcode=t.passcode.trim()),t.email&&(t.email=t.email.trim()),t.state.cart=e.cache.cart,t.locksmith_json=e.jsonTag,t.locksmith_json_signature=e.jsonTagSignature,e.post("/resource",t,n)},e.ping=function(t){if(!e.isEmbedded){t=t||{};e.post("/ping",{path:e.path,search:window.location.search,state:e.state},{spinner:!!t.spinner,silent:"undefined"==typeof t.silent?!0:t.silent,type:"text",success:function(t){t=JSON.parse(t.responseText),t.messages&&t.messages.length>0&&e.showMessages(t.messages)}})}},e.showMessages=function(t){var n=document.createElement("div");n.style.position="fixed",n.style.left=0,n.style.right=0,n.style.bottom="-50px",n.style.opacity=0,n.style.background="#191919",n.style.color="#ddd",n.style.transition="bottom 0.2s, opacity 0.2s",n.style.zIndex=999999,n.innerHTML=" <style> .locksmith-ab .locksmith-b { display: none; } .locksmith-ab.toggled .locksmith-b { display: flex; } .locksmith-ab.toggled .locksmith-a { display: none; } .locksmith-flex { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 10px 20px; } .locksmith-message + .locksmith-message { border-top: 1px #555 solid; } .locksmith-message a { color: inherit; font-weight: bold; } .locksmith-message a:hover { color: inherit; opacity: 0.8; } a.locksmith-ab-toggle { font-weight: inherit; text-decoration: underline; } .locksmith-text { flex-grow: 1; } .locksmith-cta { flex-grow: 0; text-align: right; } .locksmith-cta button { transform: scale(0.8); transform-origin: left; } .locksmith-cta > * { display: block; } .locksmith-cta > * + * { margin-top: 10px; } .locksmith-message a.locksmith-close { flex-grow: 0; text-decoration: none; margin-left: 15px; font-size: 30px; font-family: monospace; display: block; padding: 2px 10px; } @media screen and (max-width: 600px) { .locksmith-wide-only { display: none !important; } .locksmith-flex { padding: 0 15px; } .locksmith-flex > * { margin-top: 5px; margin-bottom: 5px; } .locksmith-cta { text-align: left; } } @media screen and (min-width: 601px) { .locksmith-narrow-only { display: none !important; } } </style> "+t.map(function(e){return'<div class="locksmith-message">'+e+"</div>"}).join(""),document.body.appendChild(n),document.body.style.position="relative",document.body.parentElement.style.paddingBottom=""+n.offsetHeight+"px",setTimeout(function(){n.style.bottom=0,n.style.opacity=1},50),e.util.on("click","locksmith-ab-toggle",function(e){e.preventDefault();for(var t=e.target.parentElement;-1===t.className.split(" ").indexOf("locksmith-ab");)t=t.parentElement;-1!==t.className.split(" ").indexOf("toggled")?t.className=t.className.replace("toggled",""):t.className=t.className+" toggled"}),e.util.enableActions(n)},Object.getOwnPropertyNames(e).forEach(function(t){"function"==typeof e[t]?e[t]=withErrorMonitoring(e[t],"Locksmith."+t):"object"==typeof e[t]&&Object.getOwnPropertyNames(e[t]).forEach(function(n){"function"==typeof e[t][n]&&(e[t][n]=withErrorMonitoring(e[t][n],"Locksmith."+t+"."+n))})})},"bootstrap")()}();</script> <script data-locksmith>Locksmith.cache.cart=null</script> <script data-locksmith>Locksmith.jsonTag="\u003cscript type=\"application\/vnd.locksmith+json\" data-locksmith\u003e{\"version\":\"v6.26\",\"locked\":false,\"initialized\":true,\"scope\":\"index\",\"access_granted\":true,\"access_denied\":false,\"requires_customer\":false,\"manual_lock\":false,\"server_lock\":false,\"server_rendered\":null,\"hide_resource\":false,\"hide_links_to_resource\":false,\"transparent\":true,\"locks\":{\"all\":[],\"opened\":[]},\"keys\":[],\"keys_signature\":\"9fc366d30be26e24409f4bd471fd0251a9fb7ea238496ba3f80c4305cfed38ab\",\"state\":{\"template\":\"index\",\"theme\":120471683094,\"product\":null,\"collection\":null,\"page\":null,\"blog\":null,\"article\":null,\"app\":null},\"now\":1638522659,\"path\":\"\\\/\",\"canonical_url\":\"https:\\\/\\\/hardware.shopify.eu\\\/\",\"customer_id\":null,\"customer_id_signature\":\"9fc366d30be26e24409f4bd471fd0251a9fb7ea238496ba3f80c4305cfed38ab\",\"cart\":null}\u003c\/script\u003e";Locksmith.jsonTagSignature="af629f75ebb26e0b0192543e5c1dea8699b41dc57ed9ca70e0b0acb21804d1fb"</script> <meta class="geo-ip" content="eyJwYXJhbWV0ZXJzIjpudWxsLCJydWxlc0xpc3QiOltdfQ=="><script async src="//web.archive.org/web/20211203123226js_/https://hardware.shopify.eu/apps/easylocation/easylocation-1.0.2.min.js"></script> <link href="https://web.archive.org/web/20211203123226/https://monorail-edge.shopifysvc.com/" rel="dns-prefetch"> <script>(function(){if ("sendBeacon" in navigator && "performance" in window) {var session_token = document.cookie.match(/_shopify_s=([^;]*)/);function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 55079960598,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token: session_token && session_token.length === 2 ? session_token[1] : "",page_type: "index"};window.navigator.sendBeacon("https://web.archive.org/web/20211203123226/https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script> <script>window.ShopifyAnalytics = window.ShopifyAnalytics || {}; window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; window.ShopifyAnalytics.meta.currency = 'EUR'; var meta = {"page":{"pageType":"home"},"evids":{"pv":"Page View","vprd":"Viewed Product","ps":"Performed Search"}}; for (var attr in meta) { window.ShopifyAnalytics.meta[attr] = meta[attr]; }</script> <script>window.ShopifyAnalytics.merchantGoogleAnalytics = function() { }; </script> <script class="analytics">(function () { var customDocumentWrite = function(content) { var jquery = null; if (window.jQuery) { jquery = window.jQuery; } else if (window.Checkout && window.Checkout.$) { jquery = window.Checkout.$; } if (jquery) { jquery('body').append(content); } }; var hasLoggedConversion = function(token) { if (token) { return document.cookie.indexOf('loggedConversion=' + token) !== -1; } return false; } var setCookieIfConversion = function(token) { if (token) { var twoMonthsFromNow = new Date(Date.now()); twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; } } var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; if (trekkie.integrations) { return; } trekkie.methods = [ 'identify', 'page', 'ready', 'track', 'trackForm', 'trackLink' ]; trekkie.factory = function(method) { return function() { var args = Array.prototype.slice.call(arguments); args.unshift(method); trekkie.push(args); return trekkie; }; }; for (var i = 0; i < trekkie.methods.length; i++) { var key = trekkie.methods[i]; trekkie[key] = trekkie.factory(key); } trekkie.load = function(config) { trekkie.config = config || {}; trekkie.config.initialDocumentCookie = document.cookie; var first = document.getElementsByTagName('script')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.onerror = function(e) { var scriptFallback = document.createElement('script'); scriptFallback.type = 'text/javascript'; scriptFallback.onerror = function(error) { var Monorail = { produce: function produce(monorailDomain, schemaId, payload) { var currentMs = new Date().getTime(); var event = { schema_id: schemaId, payload: payload, metadata: { event_created_at_ms: currentMs, event_sent_at_ms: currentMs } }; return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); }, sendRequest: function sendRequest(endpointUrl, payload) { // Try the sendBeacon API if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { var blobData = new window.Blob([payload], { type: 'text/plain' }); if (window.navigator.sendBeacon(endpointUrl, blobData)) { return true; } // sendBeacon was not successful } // XHR beacon var xhr = new XMLHttpRequest(); try { xhr.open('POST', endpointUrl); xhr.setRequestHeader('Content-Type', 'text/plain'); xhr.send(payload); } catch (e) { console.log(e); } return false; }, isIos12: function isIos12() { return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; } }; Monorail.produce('monorail-edge.shopifysvc.com', 'trekkie_storefront_load_errors/1.1', {shop_id: 55079960598, theme_id: 120471683094, app_name: "storefront", context_url: window.location.href, source_url: "https://web.archive.org/web/20211203123226/https://cdn.shopify.com/s/trekkie.storefront.7670270940c20eb4e559cbc3354c220e1be00c62.min.js"}); }; scriptFallback.async = true; scriptFallback.src = 'https://web.archive.org/web/20211203123226/https://cdn.shopify.com/s/trekkie.storefront.7670270940c20eb4e559cbc3354c220e1be00c62.min.js'; first.parentNode.insertBefore(scriptFallback, first); }; script.async = true; script.src = 'https://web.archive.org/web/20211203123226/https://cdn.shopify.com/s/trekkie.storefront.7670270940c20eb4e559cbc3354c220e1be00c62.min.js'; first.parentNode.insertBefore(script, first); }; trekkie.load( {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":55079960598,"isMerchantRequest":null,"themeId":120471683094,"themeCityHash":"17912761748344727048","contentLanguage":"en","currency":"EUR"},"isServerSideCookieWritingEnabled":true,"expectS2SEventId":true},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer"}} ); var loaded = false; trekkie.ready(function() { if (loaded) return; loaded = true; window.ShopifyAnalytics.lib = window.trekkie; var originalDocumentWrite = document.write; document.write = customDocumentWrite; try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; document.write = originalDocumentWrite; (function () { if (window.BOOMR && (window.BOOMR.version || window.BOOMR.snippetExecuted)) { return; } window.BOOMR = window.BOOMR || {}; window.BOOMR.snippetStart = new Date().getTime(); window.BOOMR.snippetExecuted = true; window.BOOMR.snippetVersion = 12; window.BOOMR.application = "storefront-renderer"; window.BOOMR.themeName = "Debut"; window.BOOMR.themeVersion = "11.1.1"; window.BOOMR.shopId = 55079960598; window.BOOMR.themeId = 120471683094; window.BOOMR.url = "https://web.archive.org/web/20211203123226/https://cdn.shopify.com/shopifycloud/boomerang/shopify-boomerang-1.0.0.min.js"; var where = document.currentScript || document.getElementsByTagName("script")[0]; var parentNode = where.parentNode; var promoted = false; var LOADER_TIMEOUT = 3000; function promote() { if (promoted) { return; } var script = document.createElement("script"); script.id = "boomr-scr-as"; script.src = window.BOOMR.url; script.async = true; parentNode.appendChild(script); promoted = true; } function iframeLoader(wasFallback) { promoted = true; var dom, bootstrap, iframe, iframeStyle; var doc = document; var win = window; window.BOOMR.snippetMethod = wasFallback ? "if" : "i"; bootstrap = function(parent, scriptId) { var script = doc.createElement("script"); script.id = scriptId || "boomr-if-as"; script.src = window.BOOMR.url; BOOMR_lstart = new Date().getTime(); parent = parent || doc.body; parent.appendChild(script); }; if (!window.addEventListener && window.attachEvent && navigator.userAgent.match(/MSIE [67]./)) { window.BOOMR.snippetMethod = "s"; bootstrap(parentNode, "boomr-async"); return; } iframe = document.createElement("IFRAME"); iframe.src = "about:blank"; iframe.title = ""; iframe.role = "presentation"; iframe.loading = "eager"; iframeStyle = (iframe.frameElement || iframe).style; iframeStyle.width = 0; iframeStyle.height = 0; iframeStyle.border = 0; iframeStyle.display = "none"; parentNode.appendChild(iframe); try { win = iframe.contentWindow; doc = win.document.open(); } catch (e) { dom = document.domain; iframe.src = "javascript:var d=document.open();d.domain='" + dom + "';void(0);"; win = iframe.contentWindow; doc = win.document.open(); } if (dom) { doc._boomrl = function() { this.domain = dom; bootstrap(); }; doc.write("<body onload='document._boomrl();'>"); } else { win._boomrl = function() { bootstrap(); }; if (win.addEventListener) { win.addEventListener("load", win._boomrl, false); } else if (win.attachEvent) { win.attachEvent("onload", win._boomrl); } } doc.close(); } var link = document.createElement("link"); if (link.relList && typeof link.relList.supports === "function" && link.relList.supports("preload") && ("as" in link)) { window.BOOMR.snippetMethod = "p"; link.href = window.BOOMR.url; link.rel = "preload"; link.as = "script"; link.addEventListener("load", promote); link.addEventListener("error", function() { iframeLoader(true); }); setTimeout(function() { if (!promoted) { iframeLoader(true); } }, LOADER_TIMEOUT); BOOMR_lstart = new Date().getTime(); parentNode.appendChild(link); } else { iframeLoader(false); } function boomerangSaveLoadTime(e) { window.BOOMR_onload = (e && e.timeStamp) || new Date().getTime(); } if (window.addEventListener) { window.addEventListener("load", boomerangSaveLoadTime, false); } else if (window.attachEvent) { window.attachEvent("onload", boomerangSaveLoadTime); } if (document.addEventListener) { document.addEventListener("onBoomerangLoaded", function(e) { e.detail.BOOMR.init({ producer_url: "https://web.archive.org/web/20211203123226/https://monorail-edge.shopifysvc.com/v1/produce", ResourceTiming: { enabled: true, trackedResourceTypes: ["script", "img", "css"] }, }); e.detail.BOOMR.t_end = new Date().getTime(); }); } else if (document.attachEvent) { document.attachEvent("onpropertychange", function(e) { if (!e) e=event; if (e.propertyName === "onBoomerangLoaded") { e.detail.BOOMR.init({ producer_url: "https://web.archive.org/web/20211203123226/https://monorail-edge.shopifysvc.com/v1/produce", ResourceTiming: { enabled: true, trackedResourceTypes: ["script", "img", "css"] }, }); e.detail.BOOMR.t_end = new Date().getTime(); } }); } })(); window.ShopifyAnalytics.lib.page(null,{"pageType":"home"}); var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) var token = match? match[1]: undefined; if (!hasLoggedConversion(token)) { setCookieIfConversion(token); } }); var eventsListenerScript = document.createElement('script'); eventsListenerScript.async = true; eventsListenerScript.src = "//web.archive.org/web/20211203123226/https://cdn.shopify.com/shopifycloud/shopify/assets/shop_events_listener-565deac0c7edc7850a7762c24c560f0a9670aa5c52a728e9dbb43d5a7887c1d4.js"; document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); })();</script> </head> <body class="template-index"> <div id="locationBanner" class="location-banner hide" data-current-store="EU" data-current-locale="en" role="dialog" aria-labelledby="dialog1_label" aria-modal="true"> <div class="location-banner__content-container"> <div class="location-banner__country-select hide"> <div class="location-banner__message"> <h2 class=""> Hey there. <br> Select a region to browse available products. </h2> </div> <div class="locationBanner-actions"> <div class="location-banner__select"> <span class="location-banner--label">Select region</span> <select name="Select region" id="select-region"> <option value=""></option> </select> </div> <a href="" class="btn location-banner__continue-button">Continue</a> <button class="location-banner__dismiss-button"> <svg width="23" height="24" viewbox="0 0 23 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <line x1="1.21809" y1="1.46019" x2="22.0508" y2="22.2929" stroke="white" stroke-width="2"/> <line y1="-1" x2="29.462" y2="-1" transform="matrix(0.707107 -0.707107 -0.707107 -0.707107 0.510986 21.8328)" stroke="white" stroke-width="2"/> </svg> <span class="visually-hidden"> Dismiss </span> </button> </div> </div> <div class="location-banner__unsupported-region hide"> <div class="location-banner__message"> We're sorry, your region is currently not supported. Please visit <a href="https://web.archive.org/web/20211203123226/https://help.shopify.com/en/manual/sell-in-person/hardware/hardware-overview">here</a> for a list of suppliers. </div> <button class="btn location-banner__dismiss-button"> <svg width="23" height="24" viewbox="0 0 23 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <line x1="1.21809" y1="1.46019" x2="22.0508" y2="22.2929" stroke="white" stroke-width="2"/> <line y1="-1" x2="29.462" y2="-1" transform="matrix(0.707107 -0.707107 -0.707107 -0.707107 0.510986 21.8328)" stroke="white" stroke-width="2"/> </svg> <span class="visually-hidden"> Dismiss </span> </button> </div> </div> </div> <a class="in-page-link visually-hidden skip-link" href="#MainContent">Skip to content</a> <div id="SearchDrawer" class="search-bar drawer drawer--top" role="dialog" aria-modal="true" aria-label="Search our store"> <div class="search-bar__table"> <div class="search-bar__table-cell search-bar__form-wrapper"> <form class="search search-bar__form" action="/web/20211203123226/https://hardware.shopify.eu/search" method="get" role="search"> <input class="search__input search-bar__input" type="search" name="q" value="" placeholder="Search our store" aria-label="Search our store"> <button class="search-bar__submit search__submit btn--link" type="submit"> <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewbox="0 0 37 40"><path d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z"/></svg> <span class="icon__fallback-text">Search</span> </button> </form> </div> <div class="search-bar__table-cell text-right"> <button type="button" class="btn--link search-bar__close js-drawer-close"> <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewbox="0 0 40 40"><path d="M23.868 20.015L39.117 4.78c1.11-1.108 1.11-2.77 0-3.877-1.109-1.108-2.773-1.108-3.882 0L19.986 16.137 4.737.904C3.628-.204 1.965-.204.856.904c-1.11 1.108-1.11 2.77 0 3.877l15.249 15.234L.855 35.248c-1.108 1.108-1.108 2.77 0 3.877.555.554 1.248.831 1.942.831s1.386-.277 1.94-.83l15.25-15.234 15.248 15.233c.555.554 1.248.831 1.941.831s1.387-.277 1.941-.83c1.11-1.109 1.11-2.77 0-3.878L23.868 20.015z" class="layer"/></svg> <span class="icon__fallback-text">Close search</span> </button> </div> </div> </div> <div id="shopify-section-header" class="shopify-section"> <header> <div id="SiteNavContainer" role="banner"> <div id="fsb_placeholder"></div> <div id="qab_placeholder"></div> <style> .announcement-bar { background-color: #5e6ebf; } .announcement-bar--link:hover { background-color: ; } .announcement-bar__message { color: #ffffff; } </style> <div class="announcement-bar"> <p class="announcement-bar__message">Due to the holiday rush - Expect 2-4 days for order processing</p> </div> <div class="marketing-nav-wrapper"> <nav class="page-width marketing-nav marketing-nav__primary" id="ShopifyMainNav" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement" role="navigation" aria-label="Main Navigation"> <button type="button" class="marketing-nav__hamburger hide--desktop js-drawer-open-right" aria-controls="NavDrawer" aria-expanded="false"> <span class="visuallyhidden">Open Main Navigation</span> </button> <div class="marketing-nav__logo"> <a class="marketing-nav__logo__shopify" href="/web/20211203123226/https://hardware.shopify.eu/" data-ga-event="Main Nav" data-ga-action="Logo"> <img src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/shopify_logo.png?v=1621280510" alt="Shopify EU Hardware Store logo" style="max-width: 125px"> <span class="visuallyhidden">Home</span> </a> </div> <a class="marketing-nav__name" href="/web/20211203123226/https://hardware.shopify.eu/"> Hardware store </a> <ul class="marketing-nav__items display--desktop"> <li> <div class="js-popover popover-wrapper" data-position="bottom"> <a class="marketing-nav__item marketing-nav__item--primary popover-trigger " itemprop="name" href="#"> Point of sale <span class="marketing-nav__arrow" aria-hidden="true"></span> </a> <div class="popover"> <ul class="popover-content"> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="Card Readers" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/card-readers-1"> Card Readers </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="iPad Stands" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/ipad-stands"> iPad Stands </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="Barcode scanners, printers, and labels" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/barcode-scanners-printers-and-labels"> Barcode scanners, printers, and labels </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="Receipt printers and paper" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/receipt-printers-and-paper"> Receipt printers and paper </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="Cash drawers" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/cash-drawers"> Cash drawers </a> </li> </ul> </div> </div> </li> <li> <div class="js-popover popover-wrapper" data-position="bottom"> <a class="marketing-nav__item marketing-nav__item--primary popover-trigger " itemprop="name" href="#"> Bundles <span class="marketing-nav__arrow" aria-hidden="true"></span> </a> <div class="popover"> <ul class="popover-content"> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="mPOP™" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/mpop"> mPOP™ </a> </li> </ul> </div> </div> </li> <li> <div class="js-popover popover-wrapper" data-position="bottom"> <a class="marketing-nav__item marketing-nav__item--primary popover-trigger " itemprop="name" href="#"> Gift cards <span class="marketing-nav__arrow" aria-hidden="true"></span> </a> <div class="popover"> <ul class="popover-content"> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="Customizable gift cards" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/customizable-gift-cards"> Customizable gift cards </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" data-ga-event="Main Nav" data-ga-action="Gift card sleeves" itemprop="name" href="/web/20211203123226/https://hardware.shopify.eu/collections/gift-card-sleeves"> Gift card sleeves </a> </li> </ul> </div> </div> </li> </ul> <ul class="marketing-nav__items marketing-nav__user display--desktop"> <li> <div class="js-popover popover-wrapper" data-position="bottom"> <a class="marketing-nav__item marketing-nav__item--primary popover-trigger " itemprop="name" href="#" aria-expanded="false" aria-describedby="Popover5"> EUR (English) <span class="marketing-nav__arrow" aria-hidden="true"></span> </a> <div class="popover popover--bottom" id="Popover5"> <ul class="popover-content"> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.com.au/"> Australia </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ca/"> Canada (EN) </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ca/fr"> Canada (FR) </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.de/"> EUR (Deutsch) </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.nl/"> EUR (Dutch) </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"> EUR (English) </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ie/"> Ireland </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.co.nz/"> New Zealand </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.co.uk/"> United Kingdom </a> </li> <li> <a class="marketing-nav__item marketing-nav__item--child" itemprop="name" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.com/"> United States </a> </li> </ul> </div> </div> </li> <li> <a href="/web/20211203123226/https://hardware.shopify.eu/cart" class="nav__cart-button"> Cart </a> </li> </ul> </nav> </div> <div id="NavDrawer" class="drawer drawer--right"> <div class="drawer__inner"> <div class="drawer__top"> <div class="marketing-nav__logo"> <a class="marketing-nav__logo__shopify" href="/web/20211203123226/https://hardware.shopify.eu/" data-ga-event="Mobile Nav" data-ga-action="Logo" data-ga-label="Nav"> <img src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/shopify_logo.png?v=1621280510" alt="Shopify EU Hardware Store logo" style="max-height: 32px"> <span class="visuallyhidden">Home</span> </a> </div> <button type="button" class="drawer__close-button js-drawer-close" aria-controls="NavDrawer" aria-expanded="true"> <span class="visuallyhidden">Close Main Navigation</span> </button> </div> <nav role="navigation" aria-label="Main Navigation"> <ul class="drawer__items drawer__items--group"> <li> <a href="/web/20211203123226/https://hardware.shopify.eu/" class="drawer__item"> Hardware store </a> </li> </ul> <ul class="drawer__items drawer__items--primary DrawerNavAccordion" id="DrawerNavPrimaryAccordion"> <li class="accordion-item"> <button type="button" class="drawer__item drawer__item--primary accordion-link"> Point of sale <span class="marketing-nav__arrow" aria-hidden="true"></span> </button> <ul class="drawer__items drawer__items--nested accordion-content"> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="Card Readers" href="/web/20211203123226/https://hardware.shopify.eu/collections/card-readers-1"> Card Readers </a> </li> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="iPad Stands" href="/web/20211203123226/https://hardware.shopify.eu/collections/ipad-stands"> iPad Stands </a> </li> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="Barcode scanners, printers, and labels" href="/web/20211203123226/https://hardware.shopify.eu/collections/barcode-scanners-printers-and-labels"> Barcode scanners, printers, and labels </a> </li> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="Receipt printers and paper" href="/web/20211203123226/https://hardware.shopify.eu/collections/receipt-printers-and-paper"> Receipt printers and paper </a> </li> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="Cash drawers" href="/web/20211203123226/https://hardware.shopify.eu/collections/cash-drawers"> Cash drawers </a> </li> </ul> </li> <li class="accordion-item"> <button type="button" class="drawer__item drawer__item--primary accordion-link"> Bundles <span class="marketing-nav__arrow" aria-hidden="true"></span> </button> <ul class="drawer__items drawer__items--nested accordion-content"> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="mPOP™" href="/web/20211203123226/https://hardware.shopify.eu/collections/mpop"> mPOP™ </a> </li> </ul> </li> <li class="accordion-item"> <button type="button" class="drawer__item drawer__item--primary accordion-link"> Gift cards <span class="marketing-nav__arrow" aria-hidden="true"></span> </button> <ul class="drawer__items drawer__items--nested accordion-content"> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="Customizable gift cards" href="/web/20211203123226/https://hardware.shopify.eu/collections/customizable-gift-cards"> Customizable gift cards </a> </li> <li> <a class="drawer__item" data-ga-event="Main Nav" data-ga-action="Gift card sleeves" href="/web/20211203123226/https://hardware.shopify.eu/collections/gift-card-sleeves"> Gift card sleeves </a> </li> </ul> </li> </ul> <ul class="drawer__items drawer__items--group DrawerNavAccordion"> <li> <li class="accordion-item"> <button type="button" class="drawer__item drawer__item--primary accordion-link" tabindex="0" aria-expanded="false" aria-controls="Accordion12"> EUR (English) <span class="marketing-nav__arrow" aria-hidden="true"></span> </button> <ul class="drawer__items drawer__items--nested accordion-content" aria-hidden="true" id="Accordion12"> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.com.au/"> Australia </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ca/"> Canada (EN) </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ca/fr"> Canada (FR) </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.de/"> EUR (Deutsch) </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.nl/"> EUR (Dutch) </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"> EUR (English) </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ie/"> Ireland </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.co.nz/"> New Zealand </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.co.uk/"> United Kingdom </a> </li> <li> <a class="drawer__item" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.com/"> United States </a> </li> </ul> </li> </li> <li> <a href="/web/20211203123226/https://hardware.shopify.eu/cart" class="drawer__item drawer__item-cart"> Cart </a> </li> </ul> </nav> </div> </div> </div> </header> <script type="application/ld+json"> { "@context": "https://web.archive.org/web/20211203123226/http://schema.org", "@type": "Organization", "name": "Shopify EU Hardware Store", "logo": "https://web.archive.org/web/20211203123226/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/shopify_logo_250x.png?v=1621280510", "sameAs": [ "https://web.archive.org/web/20211203123226/https://twitter.com/shopify", "https://web.archive.org/web/20211203123226/https://facebook.com/shopify", "https://web.archive.org/web/20211203123226/https://pinterest.com/shopify", "https://web.archive.org/web/20211203123226/https://instagram.com/shopify", "https://web.archive.org/web/20211203123226/http://shopify.tumblr.com", "https://web.archive.org/web/20211203123226/https://www.snapchat.com/add/shopify", "https://web.archive.org/web/20211203123226/https://youtube.com/shopify", "https://web.archive.org/web/20211203123226/https://vimeo.com/shopify" ], "url": "https://web.archive.org/web/20211203123226/https://hardware.shopify.eu" } </script> <script type="application/ld+json"> { "@context": "https://web.archive.org/web/20211203123226/http://schema.org", "@type": "WebSite", "name": "Shopify EU Hardware Store", "potentialAction": { "@type": "SearchAction", "target": "https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/search?q={search_term_string}", "query-input": "required name=search_term_string" }, "url": "https://web.archive.org/web/20211203123226/https://hardware.shopify.eu" } </script> </div> <div class="page-container" id="PageContainer"> <main class="main-content js-focus-hidden" id="MainContent" role="main" tabindex="-1"> <!-- BEGIN content_for_index --><div id="shopify-section-hero" class="shopify-section"> <section class="hero hero--full" data-section-id="hero" data-section-type="hero" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/Hardware-Store-Hero-01-UK2x_2200x.jpg?v=1621280551')"> <div class="page-width"> <div class="hero-fullInner"> <h1 class="hero-title" style="color:#3d4246;"> Shopify Hardware </h1> <h2 class="hero-subtitle" style="color:#3d4246;"> a better way to sell </h2> <a href="/web/20211203123226/https://hardware.shopify.eu/collections" class="btn"> Shop hardware </a> </div> </section> </div><div id="shopify-section-1551282917990" class="shopify-section"><section class="features" data-section-id="1551282917990"> <div class="page-width"> <div class="features-item"> <img class="features-icon" src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/shipping_small.png?v=1621280622" alt=" icon"> <span class="features-title"> Free Shipping </span> </div> <a class="features-item" href="/web/20211203123226/https://hardware.shopify.eu/pages/return-policy"> <img class="features-icon" src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/returns_small.png?v=1621280635" alt=" icon"> <span class="features-title"> 30 Day Returns </span> </a> <a class="features-item" href="/web/20211203123226/https://hardware.shopify.eu/pages/help-redirect"> <img class="features-icon" src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/support_small.png?v=1621280637" alt=" icon"> <span class="features-title"> 24/7 Support </span> </a> <a class="features-item" href="/web/20211203123226/https://hardware.shopify.eu/pages/faq"> <img class="features-icon" src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/faq1_small.png?v=1621280665" alt=" icon"> <span class="features-title"> FAQ </span> </a> </div> </section> </div><div id="shopify-section-16311095021075fb61" class="shopify-section index-section"><div class="page-width feature-row"> <div class="feature-row"> <div class="feature-row__item"> <style> @media screen and (min-width: 750px) { #FeatureRowImage-16311095021075fb61 { max-width: 436.0px; max-height: 245.12888888888887px; } #FeatureRowImageWrapper-16311095021075fb61 { max-width: 436.0px; max-height: 245.12888888888887px; } } @media screen and (max-width: 749px) { #FeatureRowImage-16311095021075fb61 { max-width: 750px; max-height: 750px; } #FeatureRowImageWrapper-16311095021075fb61 { max-width: 750px; } } </style> <div id="FeatureRowImageWrapper-16311095021075fb61" class="feature-row__image-wrapper js"> <div style="padding-top:56.22222222222223%;"> <img id="FeatureRowImage-16311095021075fb61" class="feature-row__image lazyload" src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/WISEPAD_COMP008_PREV2_900x_3674342b-fe05-461e-af0b-18263feae152_200x200.png?v=1631110416" data-src="//web.archive.org/web/20211203123226/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/WISEPAD_COMP008_PREV2_900x_3674342b-fe05-461e-af0b-18263feae152_{width}x.png?v=1631110416" data-widths="[180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 2048]" data-aspectratio="1.7786561264822134" data-sizes="auto" alt=""> </div> </div> <noscript> <img src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/WISEPAD_COMP008_PREV2_900x_3674342b-fe05-461e-af0b-18263feae152_600x600@2x.png?v=1631110416" alt="" class="feature-row__image"/> </noscript> </div> <div class="feature-row__item feature-row__text feature-row__text--left"> <h2 class="h3">WisePad 3</h2> <div class="rte rte-setting featured-row__subtext"><p>Accept payments securely with tap or chip insert, all fully integrated with Shopify POS.</p></div> <a href="/web/20211203123226/https://hardware.shopify.eu/collections/card-readers-1" class="cta"> Shop WisePad 3 </a> </div> </div> </div> </div><div id="shopify-section-1548782629450" class="shopify-section index-section"><div class="collection-grid__wrapper"> <div class="page-width"> <div class="section-header text-center"> <h2 class="h3">Customer favourites</h2> </div> <div class="section-subheader text-center"> <p> Browse our most popular retail products </p> </div> <div class="collection-grid"> <ul class="grid grid--uniform grid--flex"> <li class="grid__item small--one-whole medium-up--one-quarter"> <a class="card" href="/web/20211203123226/https://hardware.shopify.eu/collections/card-readers-1"> <div class="collection-grid-item"> <div class="collection-grid-item__link"> <div class="collection-grid-item__overlay box ratio-container lazyload js" data-bgset="//cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_180x.png?v=1632506644 180w 101h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_360x.png?v=1632506644 360w 203h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_540x.png?v=1632506644 540w 304h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_720x.png?v=1632506644 720w 405h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_900x.png?v=1632506644 900w 506h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_1080x.png?v=1632506644 1080w 608h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_1296x.png?v=1632506644 1296w 729h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_1512x.png?v=1632506644 1512w 851h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_1728x.png?v=1632506644 1728w 972h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_1950x.png?v=1632506644 1950w 1097h, //cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1.png?v=1632506644 2000w 1125h" data-sizes="auto" data-parent-fit="cover" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_300x300.png?v=1632506644')"> </div> <noscript> <div class="collection-grid-item__overlay" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/collections/WISEPAD_COMP008_PREV1_1024x1024.png?v=1632506644')"></div> </noscript> <div class="collection-grid-item__title-wrapper"> </div> </div> </div> <div class="collection-grid-item__title h3 cta"> Card readers </div> </a> </li> <li class="grid__item small--one-whole medium-up--one-quarter"> <a class="card" href="/web/20211203123226/https://hardware.shopify.eu/products/1d-barcode-scanner"> <div class="collection-grid-item"> <div class="collection-grid-item__link"> <div class="collection-grid-item__overlay box ratio-container lazyload js" data-bgset="//cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_180x.png?v=1624906165 180w 180h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_360x.png?v=1624906165 360w 360h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_540x.png?v=1624906165 540w 540h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_720x.png?v=1624906165 720w 720h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_900x.png?v=1624906165 900w 900h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_1080x.png?v=1624906165 1080w 1080h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_1296x.png?v=1624906165 1296w 1296h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right.png?v=1624906165 1500w 1500h" data-sizes="auto" data-parent-fit="cover" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_300x300.png?v=1624906165')"> </div> <noscript> <div class="collection-grid-item__overlay" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_-_White_-_Right_1024x1024.png?v=1624906165')"></div> </noscript> <div class="collection-grid-item__title-wrapper"> </div> </div> </div> <div class="collection-grid-item__title h3 cta"> 1D Barcode Scanner </div> </a> </li> <li class="grid__item small--one-whole medium-up--one-quarter"> <a class="card" href="/web/20211203123226/https://hardware.shopify.eu/products/barcode-scanner-cradle"> <div class="collection-grid-item"> <div class="collection-grid-item__link"> <div class="collection-grid-item__overlay box ratio-container lazyload js" data-bgset="//cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_180x.png?v=1620149904 180w 180h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_360x.png?v=1620149904 360w 360h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_540x.png?v=1620149904 540w 540h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_720x.png?v=1620149904 720w 720h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_900x.png?v=1620149904 900w 900h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle.png?v=1620149904 1024w 1024h" data-sizes="auto" data-parent-fit="cover" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_300x300.png?v=1620149904')"> </div> <noscript> <div class="collection-grid-item__overlay" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/products/Barcode_Scanner_Cradle_1024x1024.png?v=1620149904')"></div> </noscript> <div class="collection-grid-item__title-wrapper"> </div> </div> </div> <div class="collection-grid-item__title h3 cta"> Barcode Scanner Cradle </div> </a> </li> <li class="grid__item small--one-whole medium-up--one-quarter"> <a class="card" href="/web/20211203123226/https://hardware.shopify.eu/products/16-cash-drawer"> <div class="collection-grid-item"> <div class="collection-grid-item__link"> <div class="collection-grid-item__overlay box ratio-container lazyload js" data-bgset="//cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_180x.jpg?v=1626127102 180w 122h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_360x.jpg?v=1626127102 360w 244h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_540x.jpg?v=1626127102 540w 366h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_720x.jpg?v=1626127102 720w 488h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_900x.jpg?v=1626127102 900w 610h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_1080x.jpg?v=1626127102 1080w 732h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_1296x.jpg?v=1626127102 1296w 878h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_1512x.jpg?v=1626127102 1512w 1025h, //cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002.jpg?v=1626127102 1623w 1100h" data-sizes="auto" data-parent-fit="cover" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_300x300.jpg?v=1626127102')"> </div> <noscript> <div class="collection-grid-item__overlay" style="background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/products/star-cb2002_1024x1024.jpg?v=1626127102')"></div> </noscript> <div class="collection-grid-item__title-wrapper"> </div> </div> </div> <div class="collection-grid-item__title h3 cta"> 16" Cash Drawer </div> </a> </li> </ul> </div> </div> </div> </div><div id="shopify-section-1550690080727" class="shopify-section index-section"><div class="page-width feature-row"> <div class="feature-row"> <div class="feature-row__item feature-row__text feature-row__text--right"> <h2 class="h3">Point of Sale app</h2> <div class="rte rte-setting featured-row__subtext"><p>Shopify hardware is powered by our Point of Sale app, helping you sell anywhere and accept any payment.</p><p></p><p><a href="https://web.archive.org/web/20211203123226/https://www.shopify.com/pos" target="_blank"><strong>Explore the Point of Sale app →</strong></a></p></div> </div> <div class="feature-row__item"> <style> @media screen and (min-width: 750px) { #FeatureRowImage-1550690080727 { max-width: 436.0px; max-height: 323.3666666666667px; } #FeatureRowImageWrapper-1550690080727 { max-width: 436.0px; max-height: 323.3666666666667px; } } @media screen and (max-width: 749px) { #FeatureRowImage-1550690080727 { max-width: 720px; max-height: 750px; } #FeatureRowImageWrapper-1550690080727 { max-width: 720px; } } </style> <div id="FeatureRowImageWrapper-1550690080727" class="feature-row__image-wrapper js"> <div style="padding-top:74.16666666666667%;"> <img id="FeatureRowImage-1550690080727" class="feature-row__image lazyload" src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/Hardware-Store-Software2_200x200.png?v=1621280821" data-src="//web.archive.org/web/20211203123226/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/Hardware-Store-Software2_{width}x.png?v=1621280821" data-widths="[180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 2048]" data-aspectratio="1.348314606741573" data-sizes="auto" alt=""> </div> </div> <noscript> <img src="//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/files/Hardware-Store-Software2_600x600@2x.png?v=1621280821" alt="" class="feature-row__image"/> </noscript> </div> </div> </div> </div><!-- END content_for_index --> <script data-locksmith> var load = function () { if (document.querySelectorAll('.locksmith-manual-trigger').length > 0) { Locksmith.ping(); } Locksmith.util.on('submit', 'locksmith-resource-form', function (event) { event.preventDefault(); var data = Locksmith.util.serializeForm(event.target); Locksmith.postResource(data, { spinner: false, container: 'locksmith-content' }); }); Locksmith.util.on('click', 'locksmith-manual-trigger', function (event) { event.preventDefault(); Locksmith.postResource({}, { spinner: true, container: document }); }); }; if (typeof Locksmith !== 'undefined') { load(); } else { window.addEventListener('load', load); } </script> </main> <div id="shopify-section-footer" class="shopify-section"> <div id="GlobalIconSymbols" style="display: none;"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="modules-play"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"><path d="M5,3.51,15.82,10,5,16.49v-13M4.33,1A1.33,1.33,0,0,0,3,2.33V17.67A1.33,1.33,0,0,0,4.33,19,1.3,1.3,0,0,0,5,18.81L17.8,11.14a1.33,1.33,0,0,0,0-2.28L5,1.19A1.3,1.3,0,0,0,4.33,1Z"/></svg></symbol><symbol id="homepage-13034400039-pillar-nav-start"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 27 27"><path fill="#fff" d="M13.53 27a13.53 13.53 0 0 1-9-23.62 1.5 1.5 0 0 1 2 2.24 10.53 10.53 0 1 0 14 0 1.5 1.5 0 0 1 2-2.26 13.53 13.53 0 0 1-9 23.62z"/><path fill="#fff" d="M13.5 14a1.5 1.5 0 0 1-1.5-1.5v-11a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-1.5 1.5z"/></svg></symbol><symbol id="modules-caret-down"><svg xmlns="http://www.w3.org/2000/svg" baseprofile="tiny" viewbox="0 0 10.289 6.563"><path d="M5.212 6.563L0 1.423 1.404 0l3.788 3.735L8.865.01l1.424 1.404"/></svg></symbol><symbol id="homepage-13034400039-pillar-nav-sell"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 27 27"><path fill="#fff" d="M25.5 27h-24A1.5 1.5 0 0 1 0 25.5 1.5 1.5 0 0 1 1.5 24h24a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5zM25.79 8a1.36 1.36 0 0 1-.29 0A1.5 1.5 0 0 1 24 6.79l-.29-1.45-8 12a1.48 1.48 0 0 1-1.21.67 1.44 1.44 0 0 1-1.24-.6l-4.72-6.35-5.81 8.3A1.49 1.49 0 0 1 1.5 20a1.5 1.5 0 0 1-1.23-2.36l7-10a1.5 1.5 0 0 1 2.43 0l4.73 6.3 6.81-10.26-1.45.32a1.5 1.5 0 1 1-.58-3l5-1a1.51 1.51 0 0 1 .56 0l.23.09.23.1a1.71 1.71 0 0 1 .39.32 1.49 1.49 0 0 1 .28.49.84.84 0 0 1 .05.17v.07l1 4.93A1.49 1.49 0 0 1 25.79 8z"/></svg></symbol><symbol id="homepage-13034400039-pillar-nav-market"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 27 27"><path fill="#fff" d="M21.5 16a5.44 5.44 0 0 0-4.06 1.8l-6.54-3.27a5 5 0 0 0 .1-1 5.07 5.07 0 0 0-.1-1l6.54-3.33A5.44 5.44 0 0 0 21.5 11 5.5 5.5 0 1 0 16 5.5a5 5 0 0 0 .1 1L9.56 9.79a5.47 5.47 0 0 0-2.69-1.62 5.57 5.57 0 0 0-5 1.21 5.5 5.5 0 1 0 7.7 7.82l6.54 3.27a5 5 0 0 0-.1 1A5.5 5.5 0 1 0 21.5 16zm0-13A2.5 2.5 0 1 1 19 5.5 2.5 2.5 0 0 1 21.5 3zm-16 13a2.5 2.5 0 1 1 0-5 2.72 2.72 0 0 1 .63.08A2.5 2.5 0 0 1 5.5 16zm16 8a2.5 2.5 0 1 1 2.5-2.5 2.5 2.5 0 0 1-2.5 2.5z"/></svg></symbol><symbol id="homepage-13034400039-pillar-nav-manage"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 27 27"><path fill="#fff" d="M27 4.5A1.5 1.5 0 0 1 25.5 6H8v1.5a1.5 1.5 0 0 1-3 0V6H1.5a1.5 1.5 0 0 1 0-3H5V1.5a1.5 1.5 0 0 1 3 0V3h17.5A1.5 1.5 0 0 1 27 4.5zM27 13.5a1.5 1.5 0 0 1-1.5 1.5H22v1.5a1.5 1.5 0 0 1-3 0V15H1.5a1.5 1.5 0 0 1 0-3H19v-1.5a1.5 1.5 0 0 1 3 0V12h3.5a1.5 1.5 0 0 1 1.5 1.5zM27 22.5a1.5 1.5 0 0 1-1.5 1.5H8v1.5a1.5 1.5 0 0 1-3 0V24H1.5a1.5 1.5 0 0 1 0-3H5v-1.5a1.5 1.5 0 0 1 3 0V21h17.5a1.5 1.5 0 0 1 1.5 1.5z"/></svg></symbol><symbol id="polaris-arrow-right"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"><path d="M17.707 9.293l-5-5c-.39-.39-1.023-.39-1.414 0s-.39 1.023 0 1.414L14.586 9H3c-.553 0-1 .448-1 1s.447 1 1 1h11.586l-3.293 3.293c-.39.39-.39 1.023 0 1.414.195.195.45.293.707.293s.512-.098.707-.293l5-5c.39-.39.39-1.023 0-1.414z"/></svg> </symbol><symbol id="modules-pause"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"><path d="M5.5,19a1,1,0,0,1-1-1V2a1,1,0,0,1,2,0V18A1,1,0,0,1,5.5,19Z"/><path d="M14.51,19a1,1,0,0,1-1-1V2a1,1,0,0,1,2,0V18A1,1,0,0,1,14.51,19Z"/></svg></symbol><symbol id="spot-design"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 45 45"><path d="M9.5 33.5a2 2 0 1 1 2 2 2 2 0 0 1-2-2zm32.5-8v16a1.5 1.5 0 0 1-1.5 1.5h-29A9.51 9.51 0 0 1 2 33.5v-29A1.5 1.5 0 0 1 3.5 3h16A1.5 1.5 0 0 1 21 4.5v8.38l8.44-8.44a1.5 1.5 0 0 1 2.12 0l10 10a1.5 1.5 0 0 1 0 2.12L34.12 24h6.38a1.5 1.5 0 0 1 1.5 1.5zm-15.38-14l7.88 7.88 3.88-3.88-7.88-7.88zM18 14H5v19.5a6.5 6.5 0 0 0 13 0zm0-8H5v5h13zm13 21.12S18.8 39.58 18.41 40H31zm1.38-5.62l-7.88-7.88-3.5 3.5v15.76zM39 27h-5v13h5z"/></svg></symbol><symbol id="spot-online-store"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 45 45"><path d="M41.75,8.67,38,3.11A2.5,2.5,0,0,0,36,2H9A2.5,2.5,0,0,0,7,3.11L3.25,8.67A1.5,1.5,0,0,0,3,9.5v3a7.48,7.48,0,0,0,3,6H6v13A3.5,3.5,0,0,0,9.5,35H15v2.5A2.5,2.5,0,0,1,12.5,40H12a1.5,1.5,0,0,0,0,3H33a1.5,1.5,0,0,0,0-3h-.5A2.5,2.5,0,0,1,30,37.5V35h5.5A3.5,3.5,0,0,0,39,31.5v-13h0a7.48,7.48,0,0,0,3-6v-3A1.5,1.5,0,0,0,41.75,8.67ZM9.3,5H35.7l2.66,4H6.64Zm17.79,7a1.64,1.64,0,0,0-.09.5,4.5,4.5,0,0,1-9,0,1.64,1.64,0,0,0-.09-.5ZM6,12h9.09a1.64,1.64,0,0,0-.09.5,4.5,4.5,0,0,1-9,0ZM27.61,40H17.39A5.4,5.4,0,0,0,18,37.5V35h9v2.5A5.4,5.4,0,0,0,27.61,40ZM36,31.5a.5.5,0,0,1-.5.5H9.5a.5.5,0,0,1-.5-.5V19.85a7.41,7.41,0,0,0,1.5.15,7.49,7.49,0,0,0,6-3,7.47,7.47,0,0,0,12,0,7.49,7.49,0,0,0,6,3,7.41,7.41,0,0,0,1.5-.15ZM34.5,17A4.51,4.51,0,0,1,30,12.5a1.64,1.64,0,0,0-.09-.5H39v.5A4.51,4.51,0,0,1,34.5,17Z"/></svg> </symbol><symbol id="exchange-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 32 32"><g fill="#5C6AC4" fill-rule="evenodd"><path id="Shape" d="M26.954 21.114a1.343 1.343 0 0 0-1.806 0 1.17 1.17 0 0 0 0 1.705l2.504 2.364H22.77c-4.473 0-8.123-3.45-8.123-7.671V14.103c0-.079 0-.155-.041-.233C14.236 8.6 9.6 4.456 3.939 4.456H1.272C.574 4.456 0 4.998 0 5.657S.574 6.86 1.272 6.86H3.94c4.472 0 8.122 3.447 8.122 7.67V17.938c0 .077 0 .155.042.232.368 5.268 5.005 9.413 10.667 9.413h4.882l-2.504 2.364a1.17 1.17 0 0 0 0 1.705c.247.232.575.348.904.348.328 0 .656-.116.902-.348l4.677-4.417a1.168 1.168 0 0 0 0-1.704l-4.677-4.417zM26.968.351a1.33 1.33 0 0 0-1.8 0 1.183 1.183 0 0 0 0 1.714l2.497 2.377h-4.868c-2.905 0-5.605 1.092-7.649 3.08a1.152 1.152 0 0 0 .04 1.715c.246.234.573.35.9.35a1.3 1.3 0 0 0 .9-.35c1.555-1.52 3.6-2.339 5.81-2.339h4.867l-2.497 2.377a1.185 1.185 0 0 0 0 1.716c.246.233.573.35.901.35.327 0 .654-.117.9-.35l4.663-4.444a1.182 1.182 0 0 0 0-1.714L26.968.35zM11.56 22.822c.49.46.532 1.229.04 1.69-2.008 1.957-4.755 3.032-7.665 3.032H1.271c-.698 0-1.271-.537-1.271-1.19 0-.652.573-1.19 1.271-1.19h2.664c2.214 0 4.304-.805 5.82-2.303a1.31 1.31 0 0 1 1.805-.039z"/></g></svg></symbol><symbol id="spot-sales-up"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 45 45"><path d="M36.44 9.56a1.5 1.5 0 0 1 0-2.12l2-2a1.5 1.5 0 1 1 2.12 2.12l-2 2a1.5 1.5 0 0 1-2.12 0zM31.5 8A1.5 1.5 0 0 0 33 6.5v-2a1.5 1.5 0 0 0-3 0v2A1.5 1.5 0 0 0 31.5 8zm10 5h-2a1.5 1.5 0 0 0 0 3h2a1.5 1.5 0 0 0 0-3zm-1 7a1.5 1.5 0 0 0-1.5 1.5V36H8c7.37-3.64 18.47-12.22 23-17.92v4.42a1.5 1.5 0 0 0 3 0v-8a1.5 1.5 0 0 0-1.5-1.5h-8a1.5 1.5 0 0 0 0 3h4.33C24.43 21.66 11.69 31.32 5 34.06V9h19a1.5 1.5 0 0 0 0-3H5a3 3 0 0 0-3 3v27a3 3 0 0 0 3 3h34a3 3 0 0 0 3-3V21.5a1.5 1.5 0 0 0-1.5-1.5z"/></svg></symbol><symbol id="modules-social-facebook"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M15.6 30V19.4h5V15h-5v-3.1c0-1 .6-1.9 1.3-1.9h3.8V5.6h-3.8c-3.1 0-5.6 2.8-5.6 6.3V15H7.5v4.4h3.8v10.1C4.8 27.9 0 22 0 15 0 6.7 6.7 0 15 0s15 6.7 15 15c0 8.1-6.4 14.7-14.4 15z"/></svg> </symbol><symbol id="modules-social-twitter"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zm-3.7-5.5c-.8.3-1.6.6-2.5.7.9-.5 1.5-1.4 1.8-2.4-.8.5-1.7.8-2.7 1-.8-.8-1.9-1.4-3.1-1.4-2.4 0-4.2 1.9-4.2 4.3 0 .3 0 .7.1 1-3.5-.2-6.7-1.9-8.8-4.5-.3.7-.6 1.4-.6 2.2 0 1.5.7 2.8 1.9 3.5-.7 0-1.4-.2-1.9-.5 0 2.1 1.5 3.8 3.4 4.2-.3.1-.7.1-1.1.1-.3 0-.6 0-.8-.1.5 1.7 2.1 2.8 4 2.9-1.5 1.1-3.3 1.9-5.3 1.9-.3 0-.7 0-1-.1 1.9 1.2 4.1 1.9 6.5 1.9 7.8 0 12.1-6.5 12.1-12.1v-.6c.9-.4 1.6-1.2 2.2-2z"/></svg> </symbol><symbol id="modules-social-youtube"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zm-5.6 0c0-6.9 0-6.9-9.4-6.9s-9.4 0-9.4 6.9 0 6.9 9.4 6.9 9.4 0 9.4-6.9zm-11.9-3.7l6.3 3.8-6.3 3.8v-7.6z"/></svg> </symbol><symbol id="modules-social-instagram"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M15 30C6.7 30 0 23.3 0 15c0-1.1.1-2.1.3-3.1h7.2c-.4 1-.6 2-.6 3.1 0 4.5 3.6 8.1 8.1 8.1s8.1-3.6 8.1-8.1c0-1.1-.2-2.2-.6-3.1h7.2c.2 1 .3 2 .3 3.1 0 8.3-6.7 15-15 15zm5.9-20.6c-1.5-1.5-3.6-2.5-5.9-2.5s-4.4 1-5.9 2.5h-8C3.3 3.9 8.7 0 15 0s11.7 3.9 13.9 9.4h-8zm-.3 5.6c0 3.1-2.5 5.6-5.6 5.6-3.1 0-5.6-2.5-5.6-5.6 0-3.1 2.5-5.6 5.6-5.6 3.1 0 5.6 2.5 5.6 5.6z"/></svg> </symbol><symbol id="modules-social-linkedin"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zM11.3 7.8c0-1.2-1-2.2-2.5-2.2s-2.5.9-2.5 2.2c0 1.2 1 2.2 2.5 2.2s2.5-1 2.5-2.2zm-.7 4.1H6.9v10.6h3.8V11.9zm13.8 5c0-3.4-1.7-5.6-4.4-5.6-1.5 0-2.6.9-3.1 2.3l-.1-1.6H13c0 .4.1 2.5.1 2.5v8.1h3.8V17c0-1.5.7-2.5 1.8-2.5s1.9.6 1.9 2.5v5.6h3.8v-5.7z"/></svg> </symbol><symbol id="modules-social-pinterest"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M15 30c-1.5 0-2.9-.2-4.3-.6.6-.9 1.2-2 1.5-3.2.2-.7 1-4.1 1-4.1.5 1 2 1.9 3.7 1.9 4.8 0 8.1-4.4 8.1-10.3 0-4.4-3.8-8.6-9.5-8.6-7.1-.1-10.6 5-10.6 9.3 0 2.6 1 4.9 3.1 5.7.3.1.7 0 .8-.4.1-.2.2-.9.3-1.2.1-.4 0-.5-.2-.8-.6-.7-1-1.6-1-3 0-3.8 2.8-7.2 7.4-7.2 4 0 6.2 2.5 6.2 5.8 0 4.3-1.9 8-4.8 8-1.6 0-2.7-1.3-2.4-2.9.5-1.9 1.3-4 1.3-5.3 0-1.2-.7-2.3-2-2.3-1.6 0-2.9 1.7-2.9 3.9 0 1.4.5 2.4.5 2.4S9.5 24 9.3 25.3c-.3 1.1-.4 2.4-.3 3.5-5.3-2.4-9-7.7-9-13.8C0 6.7 6.7 0 15 0s15 6.7 15 15-6.7 15-15 15z"/></svg> </symbol><symbol id="modules-social-plus"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30"><path d="M6.3 22.5c-1.4 0-2.7.3-3.9.8C.9 20.8 0 18.1 0 15v-.8c.8 2.6 3 4.4 6.3 4.4h.8c-.2.5-.4 1-.4 1.6 0 .9.5 1.7 1.1 2.4-.5-.1-1-.1-1.5-.1zM15 0C9 0 3.9 3.5 1.4 8.5 2.8 7.1 4.9 6 7.1 6h8.5l-1.9 1.4H11c1.8.7 2.7 2.7 2.7 4.9 0 1.8-.9 3.4-2.4 4.5-1.4 1-1.6 1.5-1.6 2.5 0 .8 1.4 2.1 2.2 2.7 2.3 1.6 3 3 3 5.5 0 .9-.3 1.7-.7 2.5h.6c8.3 0 15-6.7 15-15S23.3 0 15 0zM2.8 12.3c-.4-2.8 1-5.1 3.2-5s4.3 2.4 4.6 5.3c.4 2.8-1.1 5.2-3.3 5.1-2-.1-4.1-2.5-4.5-5.4zm10.1 15.5c0 .7-.1 1.3-.4 1.9-3.7-.7-6.9-2.6-9.2-5.4 1.1-.7 2.5-1 4-1 .8 0 1.4.1 2.1.4 1.8 1.2 3 1.9 3.4 3.3 0 .3.1.6.1.8zm9.5-16.5v3.8h-1.9v-3.8h-3.8V9.4h3.8V5.6h1.9v3.8h3.8v1.9h-3.8z"/></svg> </symbol><symbol id="modules-social-snapchat"><svg xmlns="http://www.w3.org/2000/svg" viewbox="-234 36 30 30"><path d="M-219 36c-8.3 0-15 6.7-15 15s6.7 15 15 15 15-6.7 15-15-6.7-15-15-15zm9.6 20c-.1.3-.6.7-2.5.9-.1 0-.2.2-.3.6 0 .1-.1.3-.1.4 0 .1-.1.2-.3.2-.1 0-.2 0-.4-.1-.3-.1-.7-.1-1.1-.1-.3 0-.5 0-.8.1-.5.1-1 .4-1.5.8-.7.5-1.4 1-2.6 1h-.2c-1.1 0-1.9-.5-2.6-1-.5-.3-1-.7-1.5-.8-.3 0-.5-.1-.8-.1-.5 0-.8.1-1.1.1-.2 0-.3.1-.4.1-.1 0-.2 0-.3-.2 0-.2-.1-.3-.1-.4-.1-.4-.1-.6-.3-.6-1.8-.3-2.3-.7-2.5-.9v-.1c0-.1.1-.2.2-.2 2.8-.5 4-3.3 4.1-3.4.2-.3.2-.6.1-.9-.2-.5-.8-.7-1.2-.8-.1 0-.2-.1-.3-.1-.8-.3-.9-.7-.9-.8.1-.3.4-.5.8-.5h.2c.4.2.7.3 1 .3.4 0 .6-.2.6-.2v-.6c-.1-1.3-.2-3 .2-3.9 1.3-2.8 3.9-3 4.7-3h.3c.8 0 3.5.2 4.7 3 .4.9.3 2.6.2 3.9v.6s.2.2.5.2.6-.1.9-.3c.1 0 .2-.1.3-.1.1 0 .2 0 .3.1.3.1.5.3.5.5s-.1.5-.9.8c-.1 0-.2.1-.3.1-.4.1-1 .3-1.2.8-.1.2-.1.5.1.9.1.1 1.3 3 4.1 3.4.1 0 .2.1.2.2.3 0 .3.1.2.1z"/></svg> </symbol><symbol id="modules-globe-simple"><svg xmlns="http://www.w3.org/2000/svg" viewbox="197.3 314.6 90.6 90.6"><path d="M287.9 359.9c0 25-20.2 45.3-45.3 45.3s-45.3-20.2-45.3-45.3 20.2-45.3 45.3-45.3 45.3 20.3 45.3 45.3zm-22.7 13.2c0-7.3-5.9-13.2-13.2-13.2h-7.5c-5.7 0-9.4-2.8-9.4-6.6 0-2.6 2.1-4.7 4.7-4.7 3.8 0 3.9 3.8 6.6 3.8 2.1 0 3.8-1.7 3.8-3.8 0-3.7-1.8-5.6-3.6-7.3 1-2 3.5-7.2 3.6-14.8 0-.9-.6-1.8-1.6-1.9-2-.3-4-.5-6-.5-15.9.5-26.4 8.1-26.4 20.7 0 11.3 9.4 20.7 20.7 20.7h.3c-.2.9-.3 1.9-.3 2.8 0 5.8 4 10.7 9.4 11.9v13.5c0 1 .8 1.9 1.9 1.9 5.7.2 17-9.3 17-22.5z"/></svg></symbol><symbol id="modules-nav-arrow-down"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 10 5"><path d="M0,0l5,5l5-5H0z"/></svg> </symbol><symbol id="logos-shopify-white"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 608 173.7"><path fill="#95BF47" d="M130.6 33c-.1-.9-.9-1.3-1.5-1.4-.6-.1-13.7-1-13.7-1s-9.1-9-10-10c-1-1-2.9-.7-3.7-.5-.1 0-2 .6-5.1 1.6C93.7 13 88.3 5 78.9 5h-.8c-2.7-3.5-6-5.1-8.8-5.1C47.4 0 37 27.3 33.7 41.2c-8.5 2.6-14.5 4.5-15.3 4.7-4.7 1.5-4.9 1.6-5.5 6.1C12.4 55.5 0 151.5 0 151.5l96.7 18.1 52.4-11.3c0-.1-18.4-124.4-18.5-125.3zm-39.3-9.6c-2.4.8-5.2 1.6-8.2 2.5v-1.8c0-5.4-.8-9.8-2-13.2 4.9.7 8.2 6.2 10.2 12.5zM75.2 12c1.3 3.4 2.2 8.2 2.2 14.7v.9c-5.3 1.6-11.1 3.4-16.9 5.2 3.3-12.4 9.4-18.5 14.7-20.8zm-6.5-6.1c.9 0 1.9.3 2.8.9-7 3.3-14.5 11.6-17.7 28.2-4.6 1.4-9.2 2.8-13.4 4.1C44.2 26.5 53 5.9 68.7 5.9z"/><path fill="#5E8E3E" d="M129.1 31.6c-.6-.1-13.7-1-13.7-1s-9.1-9-10-10c-.4-.4-.9-.6-1.4-.6l-7.3 149.6 52.4-11.3S130.7 33.9 130.6 33.1c-.1-.9-.9-1.4-1.5-1.5z"/><path fill="#FFF" d="M78.9 60.6l-6.5 19.2s-5.7-3-12.6-3c-10.2 0-10.7 6.4-10.7 8 0 8.8 22.9 12.1 22.9 32.7 0 16.2-10.3 26.6-24.1 26.6-16.6 0-25.1-10.3-25.1-10.3l4.4-14.7s8.7 7.5 16.1 7.5c4.8 0 6.8-3.8 6.8-6.6 0-11.5-18.8-12-18.8-30.8C31.3 73.4 42.7 58 65.6 58c9 .1 13.3 2.6 13.3 2.6zm131.3 36c-5.2-2.8-7.9-5.2-7.9-8.5 0-4.2 3.7-6.9 9.6-6.9 6.8 0 12.8 2.8 12.8 2.8l4.8-14.6s-4.4-3.4-17.3-3.4c-18 0-30.5 10.3-30.5 24.8 0 8.2 5.8 14.5 13.6 19 6.3 3.6 8.5 6.1 8.5 9.9 0 3.9-3.1 7-9 7-8.7 0-16.9-4.5-16.9-4.5l-5.1 14.6s7.6 5.1 20.3 5.1c18.5 0 31.8-9.1 31.8-25.5.1-8.9-6.6-15.1-14.7-19.8zM284 65.9c-9.1 0-16.3 4.3-21.8 10.9l-.3-.1 7.9-41.4h-20.6l-20 105.3h20.6l6.9-36c2.7-13.6 9.7-22 16.3-22 4.6 0 6.4 3.1 6.4 7.6 0 2.8-.3 6.3-.9 9.1l-7.8 41.2h20.6l8.1-42.6c.9-4.5 1.5-9.9 1.5-13.4-.1-11.6-6.2-18.6-16.9-18.6zm63.4 0c-24.8 0-41.2 22.4-41.2 47.3 0 16 9.9 28.8 28.4 28.8 24.3 0 40.8-21.8 40.8-47.3 0-14.8-8.7-28.8-28-28.8zm-10.1 60.3c-7 0-10-6-10-13.4 0-11.8 6.1-31.1 17.3-31.1 7.3 0 9.7 6.3 9.7 12.4 0 12.7-6.1 32.1-17 32.1zm90.8-60.3c-13.9 0-21.8 12.2-21.8 12.2h-.3l1.2-11H389c-.9 7.5-2.5 18.8-4.2 27.3l-14.3 75.4H391l5.7-30.5h.4s4.2 2.7 12.1 2.7c24.2 0 40-24.8 40-49.9.1-13.8-6.1-26.2-21.1-26.2zm-19.7 60.6c-5.4 0-8.5-3-8.5-3l3.4-19.3c2.4-12.8 9.1-21.4 16.3-21.4 6.3 0 8.2 5.8 8.2 11.3 0 13.4-7.9 32.4-19.4 32.4zm70.3-90.2c-6.6 0-11.8 5.2-11.8 11.9 0 6.1 3.9 10.3 9.7 10.3h.3c6.4 0 11.9-4.3 12.1-11.9 0-6-4-10.3-10.3-10.3zm-28.8 104.2h20.6l14-73h-20.7m73.1-.1h-14.3l.7-3.4c1.2-7 5.4-13.3 12.2-13.3 3.7 0 6.6 1 6.6 1l4-16.1s-3.6-1.8-11.2-1.8c-7.3 0-14.6 2.1-20.2 6.9-7 6-10.3 14.6-11.9 23.3l-.6 3.4h-9.6l-3 15.5h9.6l-10.9 57.6H509l10.9-57.6h14.2l2.8-15.5zm49.6.1s-12.9 32.5-18.7 50.2h-.3c-.4-5.7-5.1-50.2-5.1-50.2h-21.7l12.4 67c.3 1.5.1 2.4-.4 3.4-2.4 4.6-6.4 9.1-11.2 12.4-3.9 2.8-8.2 4.6-11.6 5.8l5.7 17.5c4.2-.9 12.8-4.3 20.2-11.2 9.4-8.8 18.1-22.4 27-40.9l25.2-54h-21.5z"/></svg></symbol><symbol id="modules-caret-right"><svg xmlns="http://www.w3.org/2000/svg" viewbox="-242.1 245.6 6.6 10.3"><path d="M-235.6 250.7l-5.1 5.2-1.4-1.4 3.7-3.8-3.7-3.7 1.4-1.4"/></svg></symbol><symbol id="modules-mobile-hamburger"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"><path d="M19 11H1c-.552 0-1-.447-1-1s.448-1 1-1h18c.552 0 1 .447 1 1s-.448 1-1 1zm0-7H1c-.552 0-1-.447-1-1s.448-1 1-1h18c.552 0 1 .447 1 1s-.448 1-1 1zm0 14H1c-.552 0-1-.447-1-1s.448-1 1-1h18c.552 0 1 .447 1 1s-.448 1-1 1z"/></svg> </symbol><symbol id="logos-shopify-black"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 608 173.7"><path fill="#95BF47" d="M130.6 33c-.1-.9-.9-1.3-1.5-1.4-.6-.1-13.7-1-13.7-1s-9.1-9-10-10c-1-1-2.9-.7-3.7-.5-.1 0-2 .6-5.1 1.6C93.7 13 88.3 5 78.9 5h-.8c-2.7-3.5-6-5.1-8.8-5.1C47.4 0 37 27.3 33.7 41.2c-8.5 2.6-14.5 4.5-15.3 4.7-4.7 1.5-4.9 1.6-5.5 6.1C12.4 55.5 0 151.5 0 151.5l96.7 18.1 52.4-11.3c0-.1-18.4-124.4-18.5-125.3zm-39.3-9.6c-2.4.8-5.2 1.6-8.2 2.5v-1.8c0-5.4-.8-9.8-2-13.2 4.9.7 8.2 6.2 10.2 12.5zM75.2 12c1.3 3.4 2.2 8.2 2.2 14.7v.9c-5.3 1.6-11.1 3.4-16.9 5.2 3.3-12.4 9.4-18.5 14.7-20.8zm-6.5-6.1c.9 0 1.9.3 2.8.9-7 3.3-14.5 11.6-17.7 28.2-4.6 1.4-9.2 2.8-13.4 4.1C44.2 26.5 53 5.9 68.7 5.9z"/><path fill="#5E8E3E" d="M129.1 31.6c-.6-.1-13.7-1-13.7-1s-9.1-9-10-10c-.4-.4-.9-.6-1.4-.6l-7.3 149.6 52.4-11.3S130.7 33.9 130.6 33.1c-.1-.9-.9-1.4-1.5-1.5z"/><path fill="#FFF" d="M78.9 60.6l-6.5 19.2s-5.7-3-12.6-3c-10.2 0-10.7 6.4-10.7 8 0 8.8 22.9 12.1 22.9 32.7 0 16.2-10.3 26.6-24.1 26.6-16.6 0-25.1-10.3-25.1-10.3l4.4-14.7s8.7 7.5 16.1 7.5c4.8 0 6.8-3.8 6.8-6.6 0-11.5-18.8-12-18.8-30.8C31.3 73.4 42.7 58 65.6 58c9 .1 13.3 2.6 13.3 2.6z"/><path d="M210.2 96.6c-5.2-2.8-7.9-5.2-7.9-8.5 0-4.2 3.7-6.9 9.6-6.9 6.8 0 12.8 2.8 12.8 2.8l4.8-14.6s-4.4-3.4-17.3-3.4c-18 0-30.5 10.3-30.5 24.8 0 8.2 5.8 14.5 13.6 19 6.3 3.6 8.5 6.1 8.5 9.9 0 3.9-3.1 7-9 7-8.7 0-16.9-4.5-16.9-4.5l-5.1 14.6s7.6 5.1 20.3 5.1c18.5 0 31.8-9.1 31.8-25.5.1-8.9-6.6-15.1-14.7-19.8zM284 65.9c-9.1 0-16.3 4.3-21.8 10.9l-.3-.1 7.9-41.4h-20.6l-20 105.3h20.6l6.9-36c2.7-13.6 9.7-22 16.3-22 4.6 0 6.4 3.1 6.4 7.6 0 2.8-.3 6.3-.9 9.1l-7.8 41.2h20.6l8.1-42.6c.9-4.5 1.5-9.9 1.5-13.4-.1-11.6-6.2-18.6-16.9-18.6zm63.4 0c-24.8 0-41.2 22.4-41.2 47.3 0 16 9.9 28.8 28.4 28.8 24.3 0 40.8-21.8 40.8-47.3 0-14.8-8.7-28.8-28-28.8zm-10.1 60.3c-7 0-10-6-10-13.4 0-11.8 6.1-31.1 17.3-31.1 7.3 0 9.7 6.3 9.7 12.4 0 12.7-6.1 32.1-17 32.1zm90.8-60.3c-13.9 0-21.8 12.2-21.8 12.2h-.3l1.2-11H389c-.9 7.5-2.5 18.8-4.2 27.3l-14.3 75.4H391l5.7-30.5h.4s4.2 2.7 12.1 2.7c24.2 0 40-24.8 40-49.9.1-13.8-6.1-26.2-21.1-26.2zm-19.7 60.6c-5.4 0-8.5-3-8.5-3l3.4-19.3c2.4-12.8 9.1-21.4 16.3-21.4 6.3 0 8.2 5.8 8.2 11.3 0 13.4-7.9 32.4-19.4 32.4zm70.3-90.2c-6.6 0-11.8 5.2-11.8 11.9 0 6.1 3.9 10.3 9.7 10.3h.3c6.4 0 11.9-4.3 12.1-11.9 0-6-4-10.3-10.3-10.3zm-28.8 104.2h20.6l14-73h-20.7m73.1-.1h-14.3l.7-3.4c1.2-7 5.4-13.3 12.2-13.3 3.7 0 6.6 1 6.6 1l4-16.1s-3.6-1.8-11.2-1.8c-7.3 0-14.6 2.1-20.2 6.9-7 6-10.3 14.6-11.9 23.3l-.6 3.4h-9.6l-3 15.5h9.6l-10.9 57.6H509l10.9-57.6h14.2l2.8-15.5zm49.6.1s-12.9 32.5-18.7 50.2h-.3c-.4-5.7-5.1-50.2-5.1-50.2h-21.7l12.4 67c.3 1.5.1 2.4-.4 3.4-2.4 4.6-6.4 9.1-11.2 12.4-3.9 2.8-8.2 4.6-11.6 5.8l5.7 17.5c4.2-.9 12.8-4.3 20.2-11.2 9.4-8.8 18.1-22.4 27-40.9l25.2-54h-21.5z"/></svg></symbol><symbol id="modules-cancel"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20"><path d="M11.414 10l6.293-6.293c.39-.39.39-1.023 0-1.414s-1.023-.39-1.414 0L10 8.586 3.707 2.293c-.39-.39-1.023-.39-1.414 0s-.39 1.023 0 1.414L8.586 10l-6.293 6.293c-.39.39-.39 1.023 0 1.414.195.195.45.293.707.293s.512-.098.707-.293L10 11.414l6.293 6.293c.195.195.45.293.707.293s.512-.098.707-.293c.39-.39.39-1.023 0-1.414L11.414 10z"/></svg> </symbol><symbol id="modules-nav-external-indicator"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 7 7"><path d="M7,7V0H0L7,7z"/></svg> </symbol><symbol id="modules-close"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 44 44"><path d="M39.196 43.3L1.154 5.256l3.89-3.89 38.04 38.043z"/><path d="M.54 39.413L38.58 1.37l3.89 3.89L4.428 43.302z"/></svg></symbol></svg></div> <footer class="footer--main" id="ShopifyMainFooter" role="contentinfo"> <div class="page-width"> <div class="footer-top"> <div class="grid"> <div class="grid__item"> <div class="footer-nav"> <a href="https://web.archive.org/web/20211203123226/http://www.shopify.com/"> About </a> <a href="https://web.archive.org/web/20211203123226/https://www.shopify.com/careers"> Careers </a> <a href="https://web.archive.org/web/20211203123226/https://news.shopify.com/"> Press and Media </a> <a href="https://web.archive.org/web/20211203123226/https://www.shopify.com/plus"> Shopify Plus </a> </div> </div> <div class="grid__item grid__item--mobile-up-half grid__item--tablet-up-3"> <h3 class="footer-heading heading--5 "> Online Store </h3> <div class="gutter-bottom--mobile footer__column-list"> <a class="footer-link" href="https://web.archive.org/web/20211203123226/http://www.shopify.com/"> Sell Online </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/online/ecommerce-solutions"> Features </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/examples"> Examples </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/website"> Website editor </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/domains"> Domain names </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/tour/website-design"> Themes </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/tour/shopping-cart"> Shopping cart </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/tour/ecommerce-hosting"> Ecommerce hosting </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/mobile"> Mobile commerce </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/online-store"> Online store builder </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/oberlo"> Oberlo </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/dropshipping"> Dropshipping </a> </div> </div> <div class="grid__item grid__item--mobile-up-half grid__item--tablet-up-1"> <h3 class="footer-heading heading--5 "> Point of sale </h3> <div class="gutter-bottom--mobile "> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/pos"> Point of sale </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/pos/features"> Features </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"> Hardware </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/pos/software"> POS Software </a> </div> </div> <div class="grid__item grid__item--mobile-up-half grid__item--tablet-up-1"> <h3 class="footer-heading heading--5 "> Support </h3> <div class="gutter-bottom--mobile"> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://help.shopify.com/questions"> 24/7 support </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://help.shopify.com/"> Shopify Help Center </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://community.shopify.com/c/Shopify-Community/ct-p/en"> Forums </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://help.shopify.com/api"> API documentation </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/tools"> Free tools </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://burst.shopify.com/"> Free stock photos </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://exchangemarketplace.com/"> Website for sale </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://hatchful.shopify.com/"> Hatchful </a> </div> </div> <div class="grid__item grid__item--mobile-up-half grid__item--tablet-up-1"> <h3 class="footer-heading heading--5 "> Shopify </h3> <div class="gutter-bottom--mobile "> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/contact"> Contact </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/partners"> Partner program </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/affiliates"> Affiliate program </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://developers.shopify.com/"> App developer </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://investors.shopify.com/"> Investor </a> <a class="footer-link" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/accessibility"> Accessibility </a> </div> </div> </div> </div> <div class="footer-bottom"> <div class="grid"> <div class="grid__item grid__item--tablet-up-2 footer-bottom__social text-center--mobile"> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Facebook" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://www.facebook.com/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-facebook-40-title" role="img"><title id="icon-modules-social-facebook-40-title">Facebook</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-facebook"></use></svg> </a> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Twitter" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://twitter.com/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-twitter-40-title" role="img"><title id="icon-modules-social-twitter-40-title">Twitter</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-twitter"></use></svg> </a> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Youtube" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://www.youtube.com/user/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-youtube-40-title" role="img"><title id="icon-modules-social-youtube-40-title">Youtube</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-youtube"></use></svg> </a> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Instagram" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://www.instagram.com/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-instagram-40-title" role="img"><title id="icon-modules-social-instagram-40-title">Instagram</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-instagram"></use></svg> </a> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Linkedin" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://www.linkedin.com/company/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-linkedin-40-title" role="img"><title id="icon-modules-social-linkedin-40-title">Linkedin</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-linkedin"></use></svg> </a> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Pinterest" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://www.pinterest.com/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-pinterest-40-title" role="img"><title id="icon-modules-social-pinterest-40-title">Pinterest</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-pinterest"></use></svg> </a> <a class="footer-social__icon " target="_blank" rel="me noopener" data-ga-event="Social" data-ga-action="Snapchat" data-ga-label="Footer" href="https://web.archive.org/web/20211203123226/https://www.snapchat.com/add/shopify"> <svg class="icon" aria-labelledby="icon-modules-social-snapchat-40-title" role="img"><title id="icon-modules-social-snapchat-40-title">Snapchat</title> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-social-snapchat"></use></svg> </a> </div> <div class="grid__item grid__item--tablet-up-4 footer-bottom__links text-center--mobile text-right--tablet-up"> <a href="/web/20211203123226/https://hardware.shopify.eu/pages/return-policy"> Return policy </a> <div class="footer-country-select"> <div class="popover-wrapper js-popover footer-country-select__popover" data-position="top" data-toggle-only-on-click="true"> <button type="button" class="popover-trigger footer-country-select__trigger" data-ga-event="Footer" data-ga-label="CountrySelector" aria-expanded="false" aria-describedby="Popover27" aria-haspopup="true"> <svg class="icon footer-country-select__globe" aria-hidden="true" focusable="false"> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-globe-simple"></use> </svg> <span class="footer-country-select__text"> EUR (English) </span> <span class="visuallyhidden"> Change your country or region. </span> <svg class="icon footer-country-select__arrow" aria-hidden="true" focusable="false"> <use xlink:href="/web/20211203123226im_/https://hardware.shopify.eu/#modules-nav-arrow-down"></use> </svg> </button> <div class="popover popover--top" id="Popover27"> <ul id="regionLocaleData" class="popover-content footer-country-select__content"> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="AU" data-locale="en" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.com.au/"> Australia </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="CA" data-locale="en" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ca/"> Canada (English) </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="CA" data-locale="fr" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ca/fr"> Canada (Français) </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="EU" data-locale="de" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.de/"> EUR (Deutsch) </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="EU" data-locale="nl" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.nl/"> EUR (Dutch) </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="EU" data-locale="en" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.eu/"> EUR (English) </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="IE" data-locale="en" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.ie/"> Ireland </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="NZ" data-locale="ga" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.co.nz/"> New Zealand </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="GB" data-locale="en" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.co.uk/"> United Kingdom </a> </li> <li class="footer-country-select__country"> <a class="region-locale-data-link" data-country="US" data-locale="en" href="https://web.archive.org/web/20211203123226/https://hardware.shopify.com/"> United States </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div> </footer> </div> <div id="slideshow-info" class="visually-hidden" aria-hidden="true">Use left/right arrows to navigate the slideshow or swipe left/right if using a mobile device</div> </div> <script src="//web.archive.org/web/20211203123226js_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/cookieNotice.js?v=17994763665789007082" defer="defer"></script> <div class="cookies-notice"> <div class="cookie-notice__grid"> <div class="cookie-notice__grid-item"> <div class="cookies-notice__body"> Shopify uses cookies to provide necessary site functionality and improve your experience. By using our website, you agree to our <a target="_blank" class="body-link body-link--reverse" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/legal/privacy">privacy policy</a> and our <a target="_blank" class="body-link body-link--reverse" href="https://web.archive.org/web/20211203123226/https://www.shopify.com/legal/cookies">cookie policy</a>. </div> <div class="cookies-notice__cta"> <button class="js-dismiss-btn"> ok </button> </div> </div> </div> </div> <ul hidden> <li id="a11y-refresh-page-message">choosing a selection results in a full page refresh</li> </ul> <script> // (c) Copyright 2016 Caroline Schnapp. All Rights Reserved. Contact: mllegeorgesand@gmail.com // See https://docs.shopify.com/themes/customization/navigation/link-product-options-in-menus var Shopify = Shopify || {}; Shopify.optionsMap = {}; Shopify.arrayIncludes = function(e, t) { for (var n = 0; n < e.length; n++) if (e[n] == t) return !0; return !1 }; Shopify.uniq = function(e) { for (var t = [], n = 0; n < e.length; n++) Shopify.arrayIncludes(t, e[n]) || t.push(e[n]); return t }; Shopify.updateOptionsInSelector = function(selectorIndex) { switch (selectorIndex) { case 0: var key = 'root'; var selector = document.querySelector('.single-option-selector[data-index="option1"]:checked'); break; case 1: var key = document.querySelector('.single-option-selector[data-index="option1"]:checked').value; var selector = document.querySelector('.single-option-selector[data-index="option2"]'); break; case 2: var key = document.querySelector('.single-option-selector[data-index="option1"]:checked').value; key += ' / ' + document.querySelector('.single-option-selector[data-index="option2"]').value; var selector = document.querySelector('.single-option-selector[data-index="option3"]'); } var availableOptions = Shopify.optionsMap[key]; if (selectorIndex === 0) { var $radioSelectors = document.querySelectorAll('.single-option-selector[data-index="option1"]'); for (var i = 0; i < $radioSelectors.length; i++) { if (availableOptions.indexOf($radioSelectors[i].value) !== -1) { $radioSelectors[i].style.display = 'block'; $radioSelectors[i].removeAttribute('disabled'); var radioLabel = $radioSelectors[i].nextElementSibling; if (radioLabel.getAttribute('for') == $radioSelectors[i].value) { radioLabel.style.display = 'inline-block'; } } else { $radioSelectors[i].style.display = 'none'; $radioSelectors[i].setAttribute('disabled', 'disabled'); var radioLabel = $radioSelectors[i].nextElementSibling; if (radioLabel.getAttribute('for') == $radioSelectors[i].value) { radioLabel.style.display = 'none'; } } } } else { var initialValue = selector.value; selector.innerHTML = ''; for (var i = 0; i < availableOptions.length; i++) { var option = availableOptions[i]; var newOption = document.createElement('option'); var optionText = document.createTextNode(option); newOption.setAttribute('value', option); newOption.appendChild(optionText); selector.appendChild(newOption); if (availableOptions.indexOf(initialValue) !== -1) { selector.setAttribute('value', initialValue); } } } selector.dispatchEvent(new Event('change')); }; Shopify.linkOptionSelectors = function(product) { // Building our mapping object. for (var i = 0; i < product.variants.length; i++) { var variant = product.variants[i]; if (variant.available) { // Gathering values for the 1st drop-down. Shopify.optionsMap['root'] = Shopify.optionsMap['root'] || []; Shopify.optionsMap['root'].push(variant.option1); Shopify.optionsMap['root'] = Shopify.uniq(Shopify.optionsMap['root']); // Gathering values for the 2nd drop-down. if (product.options.length > 1) { var key = variant.option1; Shopify.optionsMap[key] = Shopify.optionsMap[key] || []; Shopify.optionsMap[key].push(variant.option2); Shopify.optionsMap[key] = Shopify.uniq(Shopify.optionsMap[key]); } // Gathering values for the 3rd drop-down. if (product.options.length === 3) { var key = variant.option1 + ' / ' + variant.option2; Shopify.optionsMap[key] = Shopify.optionsMap[key] || []; Shopify.optionsMap[key].push(variant.option3); Shopify.optionsMap[key] = Shopify.uniq(Shopify.optionsMap[key]); } } } // Update options right away. Shopify.updateOptionsInSelector(0); if (product.options.length > 1) Shopify.updateOptionsInSelector(1); if (product.options.length === 3) Shopify.updateOptionsInSelector(2); // When there is an update in the first selector var $firstOptions = document.querySelectorAll('.single-option-selector[data-index="option1"]'); if ($firstOptions.length > 0) { for (var i = 0; i < $firstOptions.length; i++) { $firstOptions[i].addEventListener('change', function() { Shopify.updateOptionsInSelector(1); if (product.options.length === 3) Shopify.updateOptionsInSelector(2); return true; }); } } if (product.options.length === 3) { // When there is an update in the second selector var $secondOption = document.querySelector('.single-option-selector[data-index="option2"]'); if ($secondOption) { $secondOption.addEventListener('change', function() { Shopify.updateOptionsInSelector(2); return true; }); } } }; </script> <!-- ***** Load the polyfills ***** --> <script src="https://web.archive.org/web/20211203123226js_/https://polyfill.io/v3/polyfill.min.js?features=IntersectionObserver%2CIntersectionObserverEntry%2CMutationObserver"></script> <!-- ****************************** --> <script> var ShopifyAPI = ShopifyAPI || {}; var langify = langify || {}; var defaultSettings = { debug: false, // BOOL : Enable/disable console logs observe: true, // BOOL : Enable/disable the entire mutation observer (off switch) observeLinks: true, observeImages: true, observeCustomContents: true, maxMutations: 5, timeout: 100, // INT : Milliseconds to wait after a mutation, before the next mutation event will be allowed for the element linksBlacklist: [], } if(langify.settings) { langify.settings = Object.assign(defaultSettings, langify.settings) } else { langify.settings = defaultSettings } langify.settings.theme = null; langify.settings.switcher = null; langify.helper = langify.helper || { extractImageObject: function(val) { if(!val || val == '') return false; var val = val; // Handle src-sets if(val.search(/([0-9]+w?h?,)/gi) > -1) { val = val.split(/([0-9]+w?h?,)/gi)[0]; } var url = val; var host = file = name = type = ''; url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#")); url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?")); url = url.substring(url.lastIndexOf("/") + 1, url.length); var hostBegin = val.indexOf('//') ? val.indexOf('//') : 0; host = val.substring(hostBegin, val.lastIndexOf('/') + 1); name = url.replace(/(_[0-9]+x[0-9]*|_{width}x)?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(jpe?g|png|gif|webp)/gi, ""); type = url.substring(url.lastIndexOf('.')+1, url.length); file = url.replace(/(_[0-9]+x[0-9]*|_{width}x)?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(jpe?g|png|gif|webp)/gi, '.'+type); return { host: host, name: name, type: type, file: file } }, getCurrentLanguage: function() { return "en"; }, setLanguage: function(code) { if(!langify.locale.languages.find(x => x.iso_code === code)) return false; var rootUrl = langify.locale.languages.find(x => x.iso_code === code).root_url; if(rootUrl == '/') {rootUrl = '';} var finalUrl = rootUrl + ""; if(finalUrl == '') {finalUrl = '/';} window.location.href = finalUrl; return true; }, getCookie: function(name) { var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); if(v) return v[2]; else return null; }, setCookie: function(name, value, days) { var d = new Date; d.setTime(d.getTime() + 24*60*60*1000*days); document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString(); }, getVersion: function() { return 2; }, isOutOfViewport: function (elem) { var bounding = elem.getBoundingClientRect(); var out = {}; out.top = bounding.top < 0; out.left = bounding.left < 0; out.bottom = Math.ceil(bounding.bottom) >= (window.innerHeight || document.documentElement.clientHeight); out.right = bounding.right > (window.innerWidth || document.documentElement.clientWidth); out.any = out.top || out.left || out.bottom || out.right; out.inViewport = bounding.x > 0 && bounding.y > 0; return out; }, isDomainFeatureEnabled: function() { return null; }, getVal: function(str) { var v = window.location.search.match(new RegExp('(?:[?&]'+str+'=)([^&]+)')); return v ? v[1] : null; }, inIframe: function() { try { return window.self !== window.top; } catch (e) { return true; } }, }; var customContents = {}; var customContents_image = {}; var customContents_html = {}; var customContents_text = {}; var customContents_attr = {}; // Custom Contents Section // Images Section var languageUrls = [];languageUrls['en'] = '/';langify.locale = langify.locale || { primary: true, iso_code: "en", root_url: "\/", language_id: "ly143621", languages: [{ iso_code: "en", root_url: "\/", language_id: "ly143621", domain: "", }, ] }; function isIE() { ua = navigator.userAgent; var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1; return is_ie; } if (!isIE()){ // Disable link correction ALWAYS on languages with mapped domains if(langify.locale.languages.find(x => x.iso_code === "en" && x.domain !== '' )) { langify.settings.observeLinks = false; } var langifyObserverCore = function() { var observedNodes = []; var intersectionObs = null; var mutationObs = null; var mutationObsConfig = { characterData: true, characterDataOldValue: true, attributes: true, attributeOldValue: true, childList: true, subtree: true, }; function init() { if(langify.settings.observe) { spreadCustomContents(); if (window.MutationObserver) { if (langify.settings.lazyload && window.IntersectionObserver) { startIntersectionObserver(); } else { startMutationObserver(null); } } else { startMutationEvents(); } } } // Intersection Observer function startIntersectionObserver() { intersectionObs = new IntersectionObserver(callbackIntersectionChange); var elementNodes = document.getElementsByClassName('shopify-section'); Array.prototype.slice.call(elementNodes).forEach(function(node) { intersectionObs.observe(node); }); } function callbackIntersectionChange(intersections) { intersections.forEach(function(intersection) { var target = intersection.target; var targetIsIntersecting = Boolean(target.getAttribute('ly-is-intersecting') === "true" ? true : false); if(typeof targetIsIntersecting == 'undefined' || targetIsIntersecting == null) { target.setAttribute('ly-is-intersecting', intersection.isIntersecting); targetIsIntersecting = intersection.isIntersecting; } // On Screen if(targetIsIntersecting == false && intersection.isIntersecting == true) { if(!target.getAttribute('ly-is-observing')) { startMutationObserver(target); intersectionObs.unobserve(target); // As the mutation observer didn't see the "add" of the elememts, trigger the initial translation manually var elementNodes = getNodesUnder(target, 'SHOW_ELEMENT'); var textNodes = getNodesUnder(target, 'SHOW_TEXT'); var nodes = elementNodes.concat(textNodes); nodes.forEach(function(node) { translate(node, 'mutation -> childList'); }); } } // Off Screen //else if(targetIsIntersecting == true && intersection.isIntersecting == false) { // stopMutationObserver(target); //} target.setAttribute('ly-is-intersecting', intersection.isIntersecting); }); } // Mutation Observer function startMutationObserver(observerTarget) { if (!observerTarget) { var target = document.documentElement || document.body; // main window } else { if (observerTarget.nodeName === 'IFRAME') { var target = observerTarget.contentDocument || observerTarget.contentWindow.document; // iframe } else { var target = observerTarget; } } mutationObs = new MutationObserver(callbackDomChange); mutationObs.observe(target, mutationObsConfig); observedNodes.push(target); try { target.setAttribute('ly-is-observing', 'true'); } catch(e) {} } function stopMutationObserver(target) { if(observedNodes.indexOf(target) > -1) { observedNodes.splice(observedNodes.indexOf(target), 1); } var mutations = mutationObs.takeRecords(); mutationObs.disconnect(); observedNodes.forEach(node => { mutationObs.observe(node, mutationObsConfig); }); try { target.removeAttribute('ly-is-observing'); } catch(e) {} } function callbackDomChange(mutations, mutationObs) { for (var i = 0, length = mutations.length; i < length; i++) { var mutation = mutations[i]; var target = mutation.target; // Links-Hook if (mutation.type === 'attributes' && (mutation.attributeName === 'href' || mutation.attributeName === 'action')) { var target = mutation.target; translateLink(target.getAttribute(mutation.attributeName), target); } // Images-Hook else if (mutation.type === 'attributes' && (mutation.attributeName === 'src' || mutation.attributeName === 'data-src' || mutation.attributeName === 'srcset' || mutation.attributeName === 'data-srcset')) { translateImage(target, mutation.attributeName); } else if (mutation.type === 'attributes' && mutation.attributeName === 'style') { translateCssImage(target); } // Subtree Events else if (mutation.type === 'childList') { // Added Nodes if(mutation.addedNodes.length > 0) { var elementNodes = getNodesUnder(mutation.target, 'SHOW_ELEMENT'); var textNodes = getNodesUnder(mutation.target, 'SHOW_TEXT'); var nodes = elementNodes.concat(textNodes); nodes.forEach(function(node) { translate(node, 'mutation -> childList'); }); } } // CharacterData Events else if (mutation.type === 'characterData') { var target = mutation.target; translate(target, 'mutation -> characterData'); } } } function translate(node, info) { if((node.nodeType === 1 && node.hasAttribute('data-ly-locked')) || (node.nodeType === 3 && node.parentNode && node.parentNode.hasAttribute('data-ly-locked'))) { return; } // CC-Hook if (node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE') { if (node.nodeType === 3) { translateTextNode(node, info); } translateNodeAttrs(node); } // Links-Hook if (node.nodeName === 'A' || node.nodeName === 'FORM') { if(node.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action'; var url = node.getAttribute(attrName); translateLink(url, node); } // Images-Hook if (node.nodeName === 'IMG' || node.nodeName === 'SOURCE') { translateImage(node, ['src', 'data-src', 'srcset', 'data-srcset']); } if (node.attributes && node.getAttribute('style')) { translateCssImage(node); } // Iframe Observation if (node.nodeName === 'IFRAME') { // Todo: handle srcdoc iframe content observing if (node.getAttribute('ly-is-observing') == null && node.getAttribute('src') == null && !node.hasAttribute('srcdoc')) { node.setAttribute('ly-is-observing', 'true'); startMutationObserver(node); } } } function translateNodeAttrs(node) { if(Object.keys(customContents_attr).length > 0) { } } var mutationCount = 0; function translateTextNode(node, info) { if(langify.settings.observeCustomContents === false || !node.textContent || node.textContent.trim().length === 0) { return; } var src = node.textContent.trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ").toLowerCase(); if(customContents_text[src] && node.textContent !== customContents_text[src]) { var newContent = node.textContent.replace(node.textContent.trim(), customContents_text[src]); if (newContent != node.textContent) { if(!node.parentNode.hasAttribute('data-ly-mutation-count') || parseInt(node.parentNode.getAttribute('data-ly-mutation-count')) < langify.settings.maxMutations) { var count = node.parentNode.hasAttribute('data-ly-mutation-count') ? parseInt(node.parentNode.getAttribute('data-ly-mutation-count')) : 0; node.parentNode.setAttribute('data-ly-mutation-count', count+1); node.textContent = newContent; mutationCount = mutationCount + 1; log('REPLACED (TEXT)', { oldValue: src, newValue: customContents_text[src], mutationCount, }, 'success' ); var event = new CustomEvent('langify.observer.aftertranslatetext', { bubbles: true, detail: { target: node, original: src, translation: customContents_text[src] } }); node.dispatchEvent(event); } } } } function translateLink(url, node) { if(langify.settings.observeLinks === false || node.hasAttribute('data-ly-locked') || !url || (url.indexOf('mailto:') !== -1 || url.indexOf('javascript:') !== -1 || url.indexOf('tel:') !== -1 || url.indexOf('file:') !== -1 || url.indexOf('ftp:') !== -1 || url.indexOf('sms:') !== -1 || url.indexOf('market:') !== -1 || url.indexOf('fax:') !== -1 || url.indexOf('callto:') !== -1 || url.indexOf('ts3server:') !== -1)) { return; } var isLocalized = (url.indexOf('/'+"en"+'/') === 0 || url === '/'+"en" || url.indexOf('/'+"en"+'/') === 0 || url === '/'+"en"); var link = url.replace("https:\/\/web.archive.org\/web\/20211203123226\/https:\/\/hardware.shopify.eu", '').replace(/\/en\//gi, '/'); var isUrlAbsolute = (link.indexOf('://') > 0 || link.indexOf('//') === 0); var blacklist = ['#', '/en#'].concat(langify.settings.linksBlacklist); var isUrlBlacklisted = blacklist.find(x => url.indexOf(x) === 0); if(!isLocalized && !isUrlAbsolute && !isUrlBlacklisted && "\/" != '/') { if(node.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action'; if(link === '/' || link == "\/") link = ''; var newLink = "\/" + link; var timeStamp = Math.floor(Date.now()); if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) { node.setAttribute('data-ly-processed', timeStamp); node.setAttribute(attrName, newLink); if(node.hasAttribute('data-'+attrName)) node.setAttribute('data-'+attrName, newLink); mutationCount = mutationCount + 1; log('REPLACED (LINK)', { attrName, oldValue: url, newValue: newLink, mutationCount, }, 'success' ); var event = new CustomEvent('langify.observer.aftertranslatelink', { bubbles: true, detail: { target: node, attribute: attrName, original: url, translation: newLink } }); node.dispatchEvent(event); } } } function translateImage(node, attr) { if(langify.settings.observeImages === false || node.hasAttribute('data-ly-locked') || Object.keys(customContents_image).length === 0) { return } var attrs = []; if(typeof attr === 'string') attrs.push(attr); else if(typeof attr === 'object') attrs = attr; attrs.forEach(function(attr) { if(node.hasAttribute(attr)) { var imgObject = langify.helper.extractImageObject(node.getAttribute(attr)); var imgKey = imgObject ? imgObject.file.toLowerCase() : ''; if(customContents_image[imgKey]) { // Replace var oldValue = node.getAttribute(attr); var translation = node.getAttribute(attr); translation = translation.replace(new RegExp(imgObject.host, 'g'), customContents_image[imgKey].host); translation = translation.replace(new RegExp(imgObject.name, 'g'), customContents_image[imgKey].name); translation = translation.replace(new RegExp(imgObject.type, 'g'), customContents_image[imgKey].type); if(node.getAttribute(attr) != translation) { var timeStamp = Math.floor(Date.now()); if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) { node.setAttribute('data-ly-processed', timeStamp); node.setAttribute(attr, translation); mutationCount = mutationCount + 1; log('REPLACED (IMAGE)', { attrName: attr, oldValue: oldValue, newValue: translation, mutationCount, }, 'success'); var event = new CustomEvent('langify.observer.aftertranslateimage', { bubbles: true, detail: { target: node, attribute: attr, original: oldValue, translation: translation } }); node.dispatchEvent(event); } } } } }); } function translateCssImage(node) { if(langify.settings.observeImages === false || node.hasAttribute('data-ly-locked') || Object.keys(customContents_image).length === 0 || !node.getAttribute('style')) { return } var imgMatches = node.getAttribute('style').match(/url\(("|')?(.*)("|')?\)/gi); if(imgMatches !== null) { var imgSource = imgMatches[0].replace(/url\(("|')?|("|')?\)/, ''); var imgObject = langify.helper.extractImageObject(imgSource); var imgKey = imgObject ? imgObject.file.toLowerCase() : ''; var attr = 'style'; if(customContents_image[imgKey]) { // Replace var translation = node.getAttribute(attr); translation = translation.replace(new RegExp(imgObject.host, 'g'), customContents_image[imgKey].host); translation = translation.replace(new RegExp(imgObject.name, 'g'), customContents_image[imgKey].name); translation = translation.replace(new RegExp(imgObject.type, 'g'), customContents_image[imgKey].type); if(node.getAttribute(attr) != translation) { var timeStamp = Math.floor(Date.now()); if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) { node.setAttribute('data-ly-processed', timeStamp); node.setAttribute(attr, translation); mutationCount = mutationCount + 1; } } } } } function findAndLocalizeLinks(target, parent) { if(target.parentNode && parent) var allLinks = target.parentElement.querySelectorAll('[href],[action]'); else var allLinks = target.querySelectorAll('[href],[action]'); allLinks.forEach(link => { if(link.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action'; var url = link.getAttribute(attrName); translateLink(url, link); }); } function getNodesUnder(el, show){ var n, a=[], walk=document.createTreeWalker(el, NodeFilter[show] , null, false); while(n=walk.nextNode()) a.push(n); return a; } function log(title, data, type) { if(langify.settings.debug) { let css = 'color: green; font-weight: bold;'; console.log(`%c ${title}: \n`, css, data); } } function spreadCustomContents() { var getFileName = function(url) { if(!url || url == '') return; url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#")); url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?")); url = url.substring(url.lastIndexOf("/") + 1, url.length); url = url.replace(/(_[0-9]+x[0-9]*|_{width}x)?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(jpe?g|png|gif|webp)/gi, ""); return '/' + url; } Object.entries(customContents).forEach(function(entry) { //if(/<\/?[a-z][\s\S]*>/i.test(entry[0])) customContents_html[entry[0]] = entry[1]; //else if(/(http(s?):)?([/|.|\w|\s|-])*\.(?:jpe?g|gif|png)/.test(entry[0])) customContents_image[getFileName(entry[0])] = getFileName(entry[1]); if(/(http(s?):)?([/|.|\w|\s|-])*\.(?:jpe?g|gif|png|webp)/.test(entry[0])) customContents_image[langify.helper.extractImageObject(entry[0]).file] = langify.helper.extractImageObject(entry[1]); else customContents_text[entry[0]] = entry[1]; }); log('CUSTOM CONTENTS:', {customContents, customContents_text, customContents_image}, 'info') } // Polyfill for old browsers function startMutationEvents() { var target = document.querySelector('body'); target.addEventListener("DOMAttrModified", function (event) { if(event.attrName === 'href' || event.attrName === 'action') { if(event.prevValue != event.newValue) { translateLink(event.newValue, event.target); } } }, false); target.addEventListener("DOMSubtreeModified", function (event) { //findAndLocalizeLinks(event.target, false); //matchCustomContent(event.target); }, false); } function triggerCustomContents() { var rootnode = document.getElementsByTagName('body')[0] var walker = document.createTreeWalker(rootnode, NodeFilter.SHOW_ALL, null, false) while (walker.nextNode()) { //console.log(walker.currentNode.tagName) translate(walker.currentNode, null); } } function stopObserver() { mutationObs.takeRecords(); mutationObs.disconnect(); } init(); return { init: init, triggerCustomContents: triggerCustomContents, stopObserver: stopObserver, } }; var langifyObserver = langifyObserverCore(); langify.api = { observer: { start: langifyObserver.init, stop: langifyObserver.stopObserver, trigger: langifyObserver.triggerCustomContents } }; } langify.tools = langify.tools || { compareJQueryVersion: function(a,b) {if (a === b) {return 0;}var a_components = a.split(".");var b_components = b.split(".");var len = Math.min(a_components.length, b_components.length);for (var i = 0; i < len; i++) {if (parseInt(a_components[i]) > parseInt(b_components[i])) {return 1;}if (parseInt(a_components[i]) < parseInt(b_components[i])) {return -1;}}if (a_components.length > b_components.length) {return 1;}if (a_components.length < b_components.length) {return -1;}return 0;} }; langify.loader = langify.loader || { loadScript: function(url, callback) { var script = document.createElement('script'); script.type = 'text/javascript'; if(script.readyState) { script.onreadystatechange = function () { if(script.readyState == 'loaded' || script.readyState == 'complete') { script.onreadystatechange = null; callback(); } }; } else { script.onload = function () { callback(); }; } script.src = url; document.getElementsByTagName('head')[0].appendChild(script); }, reload: function() { window.location.reload(); } }; langify.switcher = langify.switcher || { init: function() { var lyForceOff = location.search.split('ly-force-off=')[1]; var switcherElements = Array.prototype.slice.call(document.getElementsByClassName('ly-switcher-wrapper')); if(!switcherElements.length) { switcherElements = Array.prototype.slice.call(document.getElementsByClassName('ly-languages-switcher')); } document.addEventListener('click', function(event) { if(!event.target.closest('.ly-languages-switcher')) { var openSwitchers = document.querySelectorAll('.ly-languages-switcher.ly-is-open') for(i = 0; i < openSwitchers.length; i++) { openSwitchers[i].classList.remove('ly-is-open'); } } }); // Custom positioning for(i = 0; i < switcherElements.length; i++) { if(lyForceOff !== 'true' && langify.locale.languages.length > 1) { switcherElements[i].classList.remove('ly-hide'); } if(switcherElements[i].classList.contains('ly-custom') && (document.getElementById('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint')) || document.getElementsByClassName('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint')).length )) { var targets = Array.from(document.getElementsByClassName('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint'))); var target = document.getElementById('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint')); if(target) targets.push(target); for(c = 0; c < targets.length; c++) { var clone = switcherElements[i].cloneNode(true); targets[c].innerHTML = clone.outerHTML; } switcherElements[i].classList.add('ly-hide'); } } var links = document.getElementsByClassName('ly-languages-switcher-link'); for(l = 0; l < links.length; l++) { if(links[l].getAttribute('href') !== '#') { links[l].setAttribute('href', links[l].getAttribute('href') + window.location.search); links[l].addEventListener('click', function(event) { langify.helper.setCookie('ly-lang-selected', this.getAttribute('data-ly-code'), 365); }); } } // Native select event handling var nativeLangifySelects = document.getElementsByClassName('ly-native-select'); for(var i = 0; i < nativeLangifySelects.length; i++) { nativeLangifySelects[i].onchange = function() { var selectedLanguageCode = this[this.selectedIndex].getAttribute('key'); var url = languageUrls[selectedLanguageCode]; if(url) { langify.helper.setCookie('ly-lang-selected', selectedLanguageCode, 365); window.location.replace(url+window.location.search); } }; } // Initial cart.attributes update ShopifyAPI.getCart(function (cart) { var currentLanguage = langify.locale.iso_code; if(!cart.attributes.language || cart.attributes.language != currentLanguage) { ShopifyAPI.updateCartAttributes({'language': currentLanguage}, function(data){}); } }); // Custom Dropdown var switcher = document.getElementsByClassName('ly-custom-dropdown-switcher'); for(var a = 0; a < switcher.length; a++) { switcher[a].classList.toggle('ly-is-open'); var isOut = langify.helper.isOutOfViewport(switcher[a]); if(isOut.bottom && isOut.inViewport) { switcher[a].classList.add('ly-is-dropup'); var arrows = switcher[a].querySelectorAll('.ly-arrow'); for(var b = 0; b < arrows.length; b++) { arrows[b].classList.add('ly-arrow-up'); } } switcher[a].classList.toggle('ly-is-open'); } if(langify.locale.languages.length === 1) { console.info(`%c LANGIFY INFO:\n`, 'font-weight: bold;', 'The language switcher is hidden! This can have one the following reasons: \n * All additional languages are disabled in the "Langify -> Dashboard -> Languages" section. \n * If you are using different domains for your additional languages, ensure that "Cross Domain Links" are enabled inside the "Langify -> Dashboard -> Switcher Configurator -> Domains" section.'); } this._currencySwitcherBindings(); }, _currencySwitcherBindings: function() { var currencySwitcherForm = document.getElementById('currency_switcher_form'); var countryCodeField = currencySwitcherForm.querySelector('input[name="country_code"]'); if(currencySwitcherForm) { var currencySelectSwitcher = document.querySelectorAll('select.ly-currency-switcher , select.ly-country-switcher'); var currencyCustomSwitcher = document.querySelectorAll('div.ly-currency-switcher a, div.ly-country-switcher a'); currencySwitcherForm.querySelector('input[name="return_to"]').value = window.location.pathname; for(var i=0; i<currencyCustomSwitcher.length; i++) { currencyCustomSwitcher[i].addEventListener('click', function(e) { var formType = 'currency'; if(this.closest('.ly-custom-dropdown-switcher').getAttribute('class').indexOf('ly-country-switcher') >= 0) formType = 'country_code'; if(countryCodeField && this.closest('.ly-currency-switcher')) countryCodeField.remove(); currencySwitcherForm.querySelector('input[name="'+formType+'"]').value = this.getAttribute('data-'+ formType.replace('_', '-')); currencySwitcherForm.submit(); }); } for(var a=0; a<currencySelectSwitcher.length; a++) { currencySelectSwitcher[a].addEventListener('change', function(){ var formType = 'currency'; var theValue = this.value; if(this.getAttribute('class').indexOf('ly-country-switcher') >= 0) formType = 'country_code'; if(countryCodeField && this.getAttribute('class').indexOf('ly-currency-switcher') >= 0) countryCodeField.remove(); if(formType === 'currency') theValue = this.value.split(' ')[0]; currencySwitcherForm.querySelector('input[name="'+formType+'"]').value = theValue; currencySwitcherForm.submit(); }); } } }, toggleSwitcherOpen: function(e) { var target = e; if(!target.classList.contains('ly-is-open')) { var openSwitchers = document.querySelectorAll('.ly-custom-dropdown-switcher.ly-is-open') for(i = 0; i < openSwitchers.length; i++) { openSwitchers[i].classList.remove('ly-is-open'); } } target.classList.toggle('ly-is-open'); var isOut = langify.helper.isOutOfViewport(target); if(isOut.bottom) { target.classList.add('ly-is-dropup'); } }, togglePopupOpen: function(e) { e.closest('.ly-popup-switcher').classList.toggle('ly-is-open'); }, }; langify.recommendation = langify.recommendation || { recommendated: null, el: null, init: function() { var _localizationForm = document.getElementById('currency_switcher_form') this.el = { localizationForm: _localizationForm, currencyField: _localizationForm.querySelector('input[name="currency"]'), countryCodeField: _localizationForm.querySelector('input[name="country_code"]'), languageCodeField: _localizationForm.querySelector('input[name="language_code"]'), }; var recommendated = this._findRecommendedLanguage(); this.recommendated = recommendated; if(recommendated && recommendated !== langify.locale.iso_code && !langify.helper.getCookie('ly-lang-selected')) { this._translateStrings(recommendated); this._bindings(); } else { return false; } }, _findRecommendedLanguage: function() { var currentLang = langify.locale.iso_code; var browserLang = navigator.language || navigator.userLanguage; var match = languageUrls[browserLang]; var recommendatedLang = false; if(!match) { browserLang = browserLang.substring(0, 2); match = languageUrls[browserLang]; } if(!match) { for(var lang in languageUrls) { if(lang.substring(0, 2) === browserLang) { browserLang = lang; match = languageUrls[browserLang]; recommendatedLang = browserLang; } } } else { recommendatedLang = browserLang; } return recommendatedLang; }, _translateStrings: function(languageCode) { var recommendationElement = document.querySelectorAll('.ly-recommendation')[0]; var strings = langify.settings.switcher.recommendation_strings[languageCode]; var recommendationStr = 'Looks like your browser is set to English. Change the language?'; var buttonStr = 'Change'; var languageStr = 'English'; if(strings) { recommendationStr = strings.recommendation ? strings.recommendation : 'Looks like your browser is set to English. Change the language?'; buttonStr = strings.button ? strings.button : 'Change'; languageStr = strings.language ? strings.language : 'English'; } var newCode = recommendationElement.innerHTML; newCode = newCode.replaceAll('[[recommendation]]', recommendationStr).replaceAll('[[button]]', buttonStr); recommendationElement.innerHTML = newCode; }, _bindings: function() { var _this = this; var recommendated = this._findRecommendedLanguage(); var currentLang = langify.locale.iso_code; var userLang = navigator.language || navigator.userLanguage; var lyForceOff = location.search.split('ly-force-off=')[1]; var recommendationElement = document.querySelectorAll('.ly-recommendation')[0]; var form = recommendationElement.querySelectorAll('.ly-recommendation-form')[0]; var links = recommendationElement.getElementsByClassName('ly-custom-dropdown-list-element'); var customDropdown = recommendationElement.querySelectorAll('.ly-custom-dropdown-switcher'); var nativeSelects = recommendationElement.getElementsByClassName('ly-native-select'); //form.setAttribute('action', languageUrls[this.recommendated]); if(!this.el.languageCodeField) { // Backwards compability this.el.languageCodeField = document.createElement('input'); this.el.languageCodeField.type = 'hidden'; this.el.languageCodeField.name = 'language_code'; this.el.localizationForm.appendChild(languageCodeField) } this.el.languageCodeField.value = recommendated; form.addEventListener('submit', function(e) { e.preventDefault(); langify.helper.setCookie('ly-lang-selected', recommendated, 365); _this.el.localizationForm.submit(); }); for(l = 0; l < links.length; l++) { links[l].addEventListener('click', function(event) { event.preventDefault(); // When clicked from within a custom dropdown var parentCustomDropdown = event.currentTarget.closest('.ly-custom-dropdown-switcher'); if(parentCustomDropdown) { _this._selectCustomDropdownEntry(parentCustomDropdown, this); } else { _this.el.languageCodeField.value = this.getAttribute('data-ly-code'); } }); } for(var i = 0; i < nativeSelects.length; i++) { nativeSelects[i].onchange = this._selectNativeDropdownEntry;//.bind(this); if(nativeSelects[i].classList.contains('ly-languages-switcher')) { nativeSelects[i].value = recommendated; } } for(i = 0; i < customDropdown.length; i++) { if(recommendationElement.className.indexOf('bottom') > -1) { customDropdown[i].classList.add('ly-is-dropup'); } if(customDropdown[i].classList.contains('ly-languages-switcher')) { this._selectCustomDropdownEntry(customDropdown[i], customDropdown[i].querySelector('.ly-custom-dropdown-list a[data-ly-code="'+ recommendated +'"]')); } } if(!lyForceOff) { recommendationElement.classList.add('ly-is-open'); } }, _selectNativeDropdownEntry: function(event) { event.preventDefault(); var element = event.currentTarget; var _this = langify.recommendation; if(element.classList.contains('ly-languages-switcher')) { _this.el.languageCodeField.value = element[this.selectedIndex].getAttribute('key'); //element.value = valueToSelect; } if(element.classList.contains('ly-country-switcher') || element.classList.contains('ly-currency-switcher')) { _this.el.currencyField.value = element[this.selectedIndex].getAttribute('data-currency'); _this.el.countryCodeField.value = element[this.selectedIndex].getAttribute('data-country-code'); } }, _selectCustomDropdownEntry: function(element, entry) { var _this = langify.recommendation; var currentElem = element.querySelector('.ly-custom-dropdown-current'); var currentIcon = currentElem.querySelector('.ly-icon'); var currentLabel = currentElem.querySelector('span'); var valueToSelect = ''; if(element.classList.contains('ly-languages-switcher')) { _this.el.languageCodeField.value = entry.getAttribute('data-ly-code'); valueToSelect = entry.getAttribute('data-ly-code'); } if(element.classList.contains('ly-country-switcher')) { _this.el.currencyField.value = entry.getAttribute('data-currency'); _this.el.countryCodeField.value = entry.getAttribute('data-country-code'); valueToSelect = entry.getAttribute('data-country-code')+'-'+entry.getAttribute('data-currency'); } if(element.classList.contains('ly-currency-switcher')) { _this.el.currencyField.value = entry.getAttribute('data-currency'); _this.el.countryCodeField.value = ''; valueToSelect = entry.getAttribute('data-currency'); } if(element.querySelector('.ly-custom-dropdown-list li.current')) { element.querySelector('.ly-custom-dropdown-list li.current').classList.remove('current'); element.querySelector('.ly-custom-dropdown-list li[key="'+ valueToSelect +'"]').classList.add('current'); } if(element.querySelector('.ly-custom-dropdown-list li.current span')) currentLabel.innerHTML = element.querySelector('.ly-custom-dropdown-list li.current span').innerHTML; if(element.querySelector('.ly-custom-dropdown-list li.current .ly-icon')) currentIcon.classList = element.querySelector('.ly-custom-dropdown-list li.current .ly-icon').classList; }, toggleOpen: function(e) { e.closest('.ly-recommendation').classList.toggle('ly-is-open'); if(!e.closest('.ly-recommendation').classList.contains('ly-is-open')) { langify.helper.setCookie('ly-lang-selected', this.recommendated, 365); } }, }; langify.languageDetection = langify.languageDetection || { init: function() { var currentLang = langify.locale.iso_code; if(langify.helper.getVal('redirected') === 'true') { langify.helper.setCookie('ly-lang-selected', "en", 365); var _href = window.location.href; history.replaceState(null, '', _href.replace(/(\?|&)(redirected=true)/i, '')); } var userLang = navigator.language || navigator.userLanguage; var bot = /bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|Chrome-Lighthouse/i.test(navigator.userAgent); var blockedRoutes = window.lyBlockedRoutesList || []; var blockedRoute = blockedRoutes.find(x => window.location.pathname.indexOf(x) === 0); var is404 = document.getElementsByClassName('template-404').length; if(!langify.helper.inIframe() && !is404 && !bot && !blockedRoute && langify.helper.getVal('ly-lang-detect') !== 'off') { if(userLang && !langify.helper.getCookie('ly-lang-selected')) { var rootUrl = languageUrls[userLang]; if(!rootUrl) { userLang = userLang.substring(0, 2); rootUrl = languageUrls[userLang]; } if(!rootUrl) { for(var lang in languageUrls) { if(lang.substring(0, 2) === userLang) { userLang = lang; rootUrl = languageUrls[userLang]; } } } if(rootUrl) { if(currentLang !== userLang) { langify.helper.setCookie('ly-lang-selected', userLang, 365); this.redirect(rootUrl); } } } else { if(langify.helper.getCookie('ly-lang-selected') && langify.helper.getCookie('ly-lang-selected') !== currentLang) { if(languageUrls[langify.helper.getCookie('ly-lang-selected')]) { // Only save cookie when the domain feature is active if(langify.helper.isDomainFeatureEnabled()) { langify.helper.setCookie('ly-lang-selected', currentLang, 365); } this.redirect(languageUrls[langify.helper.getCookie('ly-lang-selected')]); } } } } this._fixDomainCookies(); this._geolocationAppSupport(); }, redirect: function(url) { var params = window.location.search; var link = document.createElement("a"); var append = ''; // Only append when redirecting to another domain if(langify.helper.isDomainFeatureEnabled()) { append = '?redirected=true'; if(params.indexOf('?') >= 0) { append = '&redirected=true'; } } link.setAttribute('data-ly-locked', 'true'); link.href = url + params + append; document.body.appendChild(link); link.click(); }, _fixDomainCookies: function() { // FIX: Language Detection + Domain Feature if(!langify.locale.languages.find(function(lang) {return (lang.iso_code === langify.locale.iso_code)}).domain) return false; function lyHandleLinkClick(e) { var target = e.currentTarget; if(target.href.indexOf('redirected=true') >= 0) return false; e.preventDefault(); var append = '?redirected=true'; if(target.href.indexOf('?') >= 0) { append = '&redirected=true'; } target.href = target.href + append; target.removeEventListener('click', lyHandleLinkClick); target.click(); } window.onload = function () { document.querySelectorAll('.ly-languages-switcher-link').forEach(item => { item.addEventListener('click', lyHandleLinkClick); }); } }, _geolocationAppSupport: function() { var target = document.querySelector('body'); var config = { childList: true, subtree: true }; var geolocationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { var target = mutation.target.getElementsByClassName('locale-bar__form'); if(target[0]) { target[0].onsubmit = function() { var locale_code = target[0].elements['locale_code'].value; var selector = target[0].getElementsByClassName('locale-bar__selector'); if(selector.length >= 1) { locale_code = selector[0].options[selector[0].selectedIndex].value; } langify.helper.setCookie('ly-lang-selected', locale_code, 365); }; } var selectors = mutation.target.getElementsByClassName('locale-selectors__selector'); if(selectors.length > 0) { for(var selector of selectors) { if(selector.getAttribute('name') === 'locale_code') { selector.onchange = function() { var locale_code = selector.options[selector.selectedIndex].value; langify.helper.setCookie('ly-lang-selected', locale_code, 365); }; } } } } }); }); geolocationObserver.observe(target, config); setTimeout(function() { geolocationObserver.disconnect(); }, 10000); } }; langify.core = langify.core || { onComplete: function() { var root_url = langify.locale.root_url != '/' ? langify.locale.root_url : ''; ShopifyAPI.attributeToString = function(attribute) {if((typeof attribute) !== 'string') {attribute += '';if(attribute === 'undefined') {attribute = '';}}return jQuery.trim(attribute);}; ShopifyAPI.getCart = function(callback) {jQuery.getJSON(root_url+'/cart.js', function (cart, textStatus) {if((typeof callback) === 'function') {callback(cart);}});}; ShopifyAPI.updateCartNote = function(note, callback) {var params = {type: 'POST',url: root_url+'/cart/update.js',data: 'note=' + this.attributeToString(note),dataType: 'json',success: function(cart) {if((typeof callback) === 'function') {callback(cart);}},error: this.onError};jQuery.ajax(params);}; ShopifyAPI.updateCartAttributes = function(attributes, callback) {var data = '';var that = this;if(jQuery.isArray(attributes)) {jQuery.each(attributes, function(indexInArray, valueOfElement) {var key = that.attributeToString(valueOfElement.key);if (key !== '') {data += 'attributes[' + key + ']=' + that.attributeToString(valueOfElement.value) + '&';}});} else if ((typeof attributes === 'object') && attributes !== null) {jQuery.each(attributes, function(key, value) {data += 'attributes[' + that.attributeToString(key) + ']=' + that.attributeToString(value) + '&';});}var params = {type: 'POST',url: root_url+'/cart/update.js',data: data,dataType: 'json',success: function(cart) {if((typeof callback) === 'function') {callback(cart);}},error: this.onError};jQuery.ajax(params);}; ShopifyAPI.onError = function(XMLHttpRequest, textStatus) {}; langify.switcher.init(); if(langify.settings.switcher) { if(langify.settings.switcher.recommendation && langify.settings.switcher.recommendation_enabled) { langify.recommendation.init(); } else { if(langify.settings.switcher.languageDetection && parseInt(langify.settings.switcher.version.replaceAll('.', '')) >= 300) { langify.languageDetection.init(); } } } }, init: function() { var lyForceOff = location.search.split('ly-force-off=')[1]; if(lyForceOff == 'true') { document.getElementById('preview-bar-iframe').classList.add('ly-hide'); return false; } if(typeof jQuery === 'undefined') { langify.loader.loadScript('//web.archive.org/web/20211203123226/https://cdn.jsdelivr.net/jquery/1.9.1/jquery.min.js', function() { langify.core.onComplete(); }); } else if(langify.tools.compareJQueryVersion(jQuery.fn.jquery, '1.7.0') <= 0) { langify.loader.loadScript('//web.archive.org/web/20211203123226/https://cdn.jsdelivr.net/jquery/1.9.1/jquery.min.js', function() { langify.core.onComplete(); }); } else { langify.core.onComplete(); } } }; !function(e,t){typeof module!="undefined"?module.exports=t():typeof define=="function"&&typeof define.amd=="object"?define(t):this[e]=t()}("domready",function(){var e=[],t,n=typeof document=="object"&&document,r=n&&n.documentElement.doScroll,i="DOMContentLoaded",s=n&&(r?/^loaded|^c/:/^loaded|^i|^c/).test(n.readyState);return!s&&n&&n.addEventListener(i,t=function(){n.removeEventListener(i,t),s=1;while(t=e.shift())t()}),function(t){s?setTimeout(t,0):e.push(t)}}) try { domready(langify.core.init); } catch(error) { langify.core.init(); } // Polyfills (function () { if ( typeof window.CustomEvent === "function" ) return false; function CustomEvent ( event, params ) { params = params || { bubbles: false, cancelable: false, detail: null }; var evt = document.createEvent( 'CustomEvent' ); evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); return evt; } window.CustomEvent = CustomEvent; })(); </script> <div data-breakpoint="" class="ly-switcher-wrapper ly-breakpoint-1 fixed bottom_right ly-hide" style="font-size: 14px; margin: 0px 0px; "><div data-dropup="false" onclick="langify.switcher.toggleSwitcherOpen(this)" class="ly-languages-switcher ly-custom-dropdown-switcher ly-bright-theme" style=" margin: 0px 0px;"> <span class="ly-custom-dropdown-current" style="background: #ffffff; color: #000000; "><i class="ly-icon ly-flag-icon ly-flag-icon-en"></i><span class="ly-custom-dropdown-current-inner ly-custom-dropdown-current-inner-text">English</span> <div class="ly-arrow ly-arrow-black stroke" style="vertical-align: middle; width: 14.0px; height: 14.0px;"> <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 14.0 14.0" height="14.0px" width="14.0px" style="position: absolute;"> <path d="M1 4.5 L7.0 10.5 L13.0 4.5" fill="transparent" stroke="#000000" stroke-width="1px"/> </svg> </div> </span> <ul class="ly-custom-dropdown-list ly-is-open ly-bright-theme" style="background: #ffffff; color: #000000; "><li key="en" class="current" style="color: #000000; margin: 0px 0px;"> <a class="ly-custom-dropdown-list-element ly-languages-switcher-link ly-bright-theme current_lang" href="/web/20211203123226/https://hardware.shopify.eu/" data-ly-code="en" data-ly-locked="true"><i class="ly-icon ly-flag-icon ly-flag-icon-en"></i><span class="ly-custom-dropdown-list-element-right">English (IE)</span></a> </li></ul> </div></div> <form method="post" action="/web/20211203123226/https://hardware.shopify.eu/localization" id="currency_switcher_form" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization"/><input type="hidden" name="utf8" value="✓"/><input type="hidden" name="_method" value="put"/><input type="hidden" name="return_to" value="/"/> <input type="hidden" name="currency" value="EUR"> <input type="hidden" name="country_code" value="IE"> <input type="hidden" name="language_code" value="en"> </form> <style> .ly-flag-icon-en { background-image: url('//web.archive.org/web/20211203123226im_/https://cdn.shopify.com/s/files/1/0550/7996/0598/t/2/assets/ly-icon-en.svg?v=16874932679132306730'); } .ly-switcher-wrapper { } .ly-switcher-wrapper.fixed { position: fixed; z-index: 1000; } .ly-switcher-wrapper.absolute { position: absolute; z-index: 1000; } .ly-switcher-wrapper.fixed.top_left, .ly-switcher-wrapper.absolute.top_left { top: 0; left: 0; } .ly-switcher-wrapper.fixed.top_right, .ly-switcher-wrapper.absolute.top_right { top: 0; right: 0; } .ly-switcher-wrapper.fixed.bottom_left, .ly-switcher-wrapper.absolute.bottom_left { bottom: 0; left: 0; } .ly-switcher-wrapper.fixed.bottom_right, .ly-switcher-wrapper.absolute.bottom_right { bottom: 0; right: 0; } .ly-switcher-wrapper .shopify-currency-form { display: inline-block; } .ly-currency-switcher { font-size: 1em; } .ly-inner-text { margin: 0 0.2em; white-space: nowrap; } .ly-flag-icon { background-size: contain; background-position: 50%; background-repeat: no-repeat; position: relative; display: inline-block; width: 1.33333333em; line-height: 1em; } .ly-flag-icon:before { content: ''; display: inline-block; } .ly-flag-icon.ly-flag-squared { width: 1em; } .ly-flag-icon.ly-flag-rounded { width: 1em; border-radius: 50%; } .ly-languages-switcher { white-space: nowrap; list-style-type: none; display: inline-block; font-size: 1em; } .ly-languages-switcher-link { margin: 0 0.2em; cursor: pointer; white-space: nowrap; text-decoration: none; display: inline-block; } .ly-languages-switcher.ly-list { margin: 0; padding: 0; display: block; } .ly-languages-switcher.ly-native-select { } .ly-icon { margin: 0 0.2em; } .ly-arrow { display: inline-block; position: relative; vertical-align: middle; direction: ltr !important; -webkit-transition: transform 0.25s; -moz-transition: transform 0.25s; transition: transform 0.25s; margin: 0 0.2em; } .ly-custom-dropdown-switcher.ly-is-open .ly-arrow { transform: rotate(180deg); } .ly-custom-dropdown-switcher.ly-arrow.ly-arrow-up { transform: rotate(180deg); } .ly-custom-dropdown-switcher.ly-is-open .ly-arrow.ly-arrow-up { transform: rotate(0deg); } .ly-custom-dropdown-switcher { text-align: left; display: inline-block; position: relative; user-select: none; cursor: pointer; } .ly-custom-dropdown-current { display: block; vertical-align: middle; } .ly-custom-dropdown-current-inner { display: inline-block; vertical-align: middle; } .ly-custom-dropdown-current-inner-image { margin-right: 0.25em; } .ly-custom-dropdown-current-inner-text { margin: 0 0.2em; } .ly-custom-dropdown-list { display: none !important; list-style: none; position: absolute; left: 0; padding: inherit !important; padding: 0 !important; margin: 0; z-index: 99999; text-align: left; width: 100%; font-size: 1em; } .ly-custom-dropdown-list-element { color: inherit !important; display: block; } .ly-custom-dropdown-list > li { margin: 0 !important; display: block; } .ly-custom-dropdown-list-element-left { margin-right: 0.5em; } .ly-custom-dropdown-list-element-right { text-align: left; } .ly-custom-dropdown-list-element-left, .ly-custom-dropdown-list-element-right { vertical-align: middle; } .ly-custom-dropdown-switcher .ly-languages-switcher-link { margin: 0; } .ly-languages-switcher-dropdown { display: inline-block; } .ly-languages-links-switcher { display: inline-block; } .ly-languages-links-switcher > .ly-languages-link { /*margin-right: 0.5em;*/ padding: inherit !important; color: inherit !important; } .ly-custom-dropdown-list-element { /*padding: inherit !important;*/ text-decoration: none; } .ly-is-uppercase { text-transform: uppercase; } .ly-is-transparent.ly-links, .ly-is-transparent.ly-list, .ly-is-transparent.ly-currency-switcher, .ly-is-transparent.ly-custom-dropdown-switcher, .ly-is-transparent.ly-custom-dropdown-switcher .ly-custom-dropdown-list { background: transparent !important; } .ly-arrow-up { transform: rotateZ(180deg); } .ly-custom-dropdown-switcher .ly-custom-dropdown-list li.current{ display: none; } .ly-custom-dropdown-switcher.ly-is-open .ly-custom-dropdown-list { display: flex !important; min-width: 100%; width: auto; flex-direction: column-reverse; right: 0; left: auto; overflow: auto; max-height: 350px; max-height: 50vh; } .ly-is-dropup .ly-custom-dropdown-list { bottom: 100%; } .ly-hide { display: none !important; } body.ly-force-off #preview-bar-iframe, body.ly-force-off .ly-languages-switcher { display: none !important; } .ly-close { position: absolute; opacity: 0.3; width: 1em; height: 1em; right: 1em; top: 1em; transform: translateX(-50%); } .ly-close:hover { opacity: 1; } .ly-close:before, .ly-close:after { position: absolute; left: 1em; content: ' '; height: 1em; width: 2px; background-color: #333; } .ly-close:before { transform: rotate(45deg); } .ly-close:after { transform: rotate(-45deg); } .ly-popup-switcher {} .ly-popup-switcher .ly-popup-current { cursor: pointer; background: transparent; } .ly-popup-switcher .ly-popup-modal { position: fixed; z-index: 1000; top: 0; left: 0; width: 100%; height: 100%; display: none; justify-content: center; align-items: center; } .ly-popup-switcher.ly-is-open .ly-popup-modal { display: flex; } .ly-popup-switcher .ly-popup-modal-backdrop { position: fixed; width: 100%; height: 100%; z-index: 0; top: 0; left: 0; background:rgba(0, 0, 0, 0.38); cursor: pointer; } .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content { padding: 1em; position: absolute; z-index: 1000; } .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content ul { padding: 0; margin: 12px 0 0 0; list-style: none; } .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content ul .ly-languages-switcher-link { margin: 0; border: solid 1px; padding: 1em; display: block; min-width: 225px; margin-top: 1em; } .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content ul .ly-languages-switcher-link.current_lang { display: none; } /* Recommendation */ .ly-recommendation { display: none; } .ly-recommendation.ly-is-open { display: inline-block; } .ly-recommendation form { display: inline-block; } .ly-recommendation .ly-arrow, .ly-arrow.recommendation { display: none; } .ly-recommendation .ly-arrow.recommendation { display: inline-block; } .ly-recommendation .ly-switcher-wrapper { font-size: 1em !important; } .ly-recommendation .ly-popup-modal .ly-popup-switcher .ly-popup-modal .ly-popup-modal-backdrop { display: none; } /* Recommendation Banner */ .ly-recommendation .ly-banner { position: fixed; z-index: 100000; width: 100%; } .ly-recommendation .ly-banner .ly-banner-content { width: 100%; padding: 1em 30px 1em 1em; box-shadow: 0 0 20px rgba(0,0,0,.25); } .ly-recommendation .ly-banner.top { top: 0; } .ly-recommendation .ly-banner.bottom { bottom: 0; } .ly-recommendation .ly-banner .ly-banner-content .ly-switcher-wrapper { position: relative !important; margin: 0 !important; display: inline-block !important; } .ly-recommendation .ly-banner .ly-recommendation-form button[type="submit"] { margin-left: 10px; } /* Recommendation Popup */ .ly-recommendation .ly-popup-modal { position: fixed; z-index: 10000; } .ly-recommendation .ly-popup-modal .ly-switcher-wrapper { position: relative !important; margin: 0 !important; display: inline-block !important; } .ly-recommendation .ly-popup-modal-backdrop { position: fixed; width: 100%; height: 100%; z-index: 1000; top: 0; left: 0; background:rgba(0, 0, 0, 0.38); } .ly-recommendation .ly-popup-modal .ly-popup-modal-content { padding: 1em 30px 1em 1em; } .ly-recommendation .ly-popup-modal .ly-popup-modal-content .ly-languages-switcher { position: relative !important; margin: 0 !important; } .ly-recommendation .ly-popup-modal .ly-popup-modal-content h3 { margin: 0 2em 1em 0; font-size: inherit; position: relative; } .ly-recommendation .ly-popup-modal.top_left { top: 0; left: 0; margin-right: 0 !important; margin-bottom: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important;} .ly-recommendation .ly-popup-modal.top_center { top: 0; left: 50%; transform: translateX(-50%); margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important;} .ly-recommendation .ly-popup-modal.top_right { top: 0; right: 0; margin-left: 0 !important; margin-bottom: 0 !important; padding-left: 0 !important; padding-bottom: 0 !important; } .ly-recommendation .ly-popup-modal.center_center { top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); margin: 0 !important; padding: 0 !important; } .ly-recommendation .ly-popup-modal.bottom_left { bottom: 0; left: 0; margin-right: 0 !important; margin-top: 0 !important; padding-right: 0 !important; padding-top: 0 !important; } .ly-recommendation .ly-popup-modal.bottom_center { bottom: 0; left: 50%; transform: translateX(-50%); margin-right: 0 !important; margin-left: 0 !important; margin-top: 0 !important; padding-right: 0 !important; padding-left: 0 !important; padding-top: 0 !important; } .ly-recommendation .ly-popup-modal.bottom_right { bottom: 0; right: 0; margin-left: 0 !important; margin-top: 0 !important; padding-left: 0 !important; padding-top: 0 !important; } </style><!-- langify-v2-scripts-end --></body> </html> <!-- FILE ARCHIVED ON 12:32:26 Dec 03, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 16:56:28 Feb 16, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.808 exclusion.robots: 0.039 exclusion.robots.policy: 0.023 esindex: 0.015 cdx.remote: 34.293 LoadShardBlock: 187.029 (3) PetaboxLoader3.datanode: 109.331 (4) PetaboxLoader3.resolve: 209.12 (2) load_resource: 235.402 -->