PageSourceSearch

https://cdn.ca.yapla.com/js/joomflo/cookieconsent/cookieconsent.mi…=f12cd42963af87decf8fb38310e594efb1fa5109

js yapla.com collected 2026-10-01 10:23:45 UTC 25,741 bytes, 518 lines download raw bytes

1!function (e) {
2	if (!e.hasInitialised) {
3		var t = {
4			escapeRegExp: function (e) {
5				return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
6			}, hasClass: function (e, t) {
7				var i = " ";
8				return 1 === e.nodeType && (i + e.className + i).replace(/[\n\t]/g, i).indexOf(i + t + i) >= 0
9			}, addClass: function (e, t) {
10				e.className += " " + t
11			}, removeClass: function (e, t) {
12				var i = new RegExp("\\b" + this.escapeRegExp(t) + "\\b");
13				e.className = e.className.replace(i, "")
14			}, interpolateString: function (e, t) {
15				var i = /{{([a-z][a-z0-9\-_]*)}}/gi;
16				return e.replace(i, function (e) {
17					return t(arguments[1]) || ""
18				})
19			}, getCookie: function (e) {
20				var t = "; " + document.cookie, i = t.split("; " + e + "=");
21				return i.length < 2 ? void 0 : i.pop().split(";").shift()
22			}, setCookie: function (e, t, i, n, o, s) {
23				var r = new Date;
24				r.setDate(r.getDate() + (i || 365));
25				var a = [e + "=" + t, "expires=" + r.toUTCString(), "path=" + (o || "/")];
26				n && a.push("domain=" + n), s && a.push("secure"), document.cookie = a.join(";")
27			}, deepExtend: function (e, t) {
28				for (var i in t) t.hasOwnProperty(i) && (i in e && this.isPlainObject(e[i]) && this.isPlainObject(t[i]) ? this.deepExtend(e[i], t[i]) : e[i] = t[i]);
29				return e
30			}, throttle: function (e, t) {
31				var i = !1;
32				return function () {
33					i || (e.apply(this, arguments), i = !0, setTimeout(function () {
34						i = !1
35					}, t))
36				}
37			}, hash: function (e) {
38				var t, i, n, o = 0;
39				if (0 === e.length) return o;
40				for (t = 0, n = e.length; t < n; ++t) i = e.charCodeAt(t), o = (o << 5) - o + i, o |= 0;
41				return o
42			}, normaliseHex: function (e) {
43				return "#" == e[0] && (e = e.substr(1)), 3 == e.length && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), e
44			}, getContrast: function (e) {
45				e = this.normaliseHex(e);
46				var t = parseInt(e.substr(0, 2), 16), i = parseInt(e.substr(2, 2), 16),
47					n = parseInt(e.substr(4, 2), 16), o = (299 * t + 587 * i + 114 * n) / 1e3;
48				return o >= 128 ? "#000" : "#fff"
49			}, getLuminance: function (e) {
50				var t = parseInt(this.normaliseHex(e), 16), i = 38, n = (t >> 16) + i, o = (t >> 8 & 255) + i,
51					s = (255 & t) + i,
52					r = (16777216 + 65536 * (n < 255 ? n < 1 ? 0 : n : 255) + 256 * (o < 255 ? o < 1 ? 0 : o : 255) + (s < 255 ? s < 1 ? 0 : s : 255)).toString(16).slice(1);
53				return "#" + r
54			}, isMobile: function () {
55				return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
56			}, isPlainObject: function (e) {
57				return "object" == typeof e && null !== e && e.constructor == Object
58			}, traverseDOMPath: function (e, i) {
59				return e && e.parentNode ? t.hasClass(e, i) ? e : this.traverseDOMPath(e.parentNode, i) : null
60			}
61		};
62		e.status = {deny: "deny", allow: "allow", dismiss: "dismiss"}, e.transitionEnd = function () {
63			var e = document.createElement("div"), t = {
64				t: "transitionend",
65				OT: "oTransitionEnd",
66				msT: "MSTransitionEnd",
67				MozT: "transitionend",
68				WebkitT: "webkitTransitionEnd"
69			};
70			for (var i in t) if (t.hasOwnProperty(i) && "undefined" != typeof e.style[i + "ransition"]) return t[i];
71			return ""
72		}(), e.hasTransition = !!e.transitionEnd;
73		var i = Object.keys(e.status).map(t.escapeRegExp);
74		e.customStyles = {}, e.Popup = function () {
75			function n() {
76				this.initialise.apply(this, arguments)
77			}
78			
79			function o(e) {
80				this.openingTimeout = null, t.removeClass(e, "cc-invisible")
81			}
82			
83			function s(t) {
84				t.style.display = "none", t.removeEventListener(e.transitionEnd, this.afterTransition), this.afterTransition = null
85			}
86			
87			function r() {
88				var t = this.options.onInitialise.bind(this);
89				if (!window.navigator.cookieEnabled) return t(e.status.deny), !0;
90				if (window.CookiesOK || window.navigator.CookiesOK) return t(e.status.allow), !0;
91				var i = Object.keys(e.status), n = this.getStatus(), o = i.indexOf(n) >= 0;
92				return o && t(n), o
93			}
94			
95			function a() {
96				var e = this.options.position.split("-"), t = [];
97				return e.forEach(function (e) {
98					t.push("cc-" + e)
99				}), t
100			}
101			
102			function c() {
103				var e = this.options, i = "top" == e.position || "bottom" == e.position ? "banner" : "floating";
104				t.isMobile() && (i = "floating");
105				var n = ["cc-" + i, "cc-type-" + e.type, "cc-theme-" + e.theme];
106				e["static"] && n.push("cc-static"), n.push.apply(n, a.call(this));
107				p.call(this, this.options.palette);
108				return this.customStyleSelector && n.push(this.customStyleSelector), n
109			}
110			
111			function l() {
112				var e = {}, i = this.options;
113				i.showLink || (i.elements.link = "", i.elements.messagelink = i.elements.message), Object.keys(i.elements).forEac
113h(function (n) {
114					e[n] = t.interpolateString(i.elements[n], function (e) {
115						var t = i.content[e];
116						return e && "string" == typeof t && t.length ? t : ""
117					})
118				});
119				var n = i.compliance[i.type];
120				n || (n = i.compliance.info), e.compliance = t.interpolateString(n, function (t) {
121					return e[t]
122				});
123				var o = i.layouts[i.layout];
124				return o || (o = i.layouts.basic), t.interpolateString(o, function (t) {
125					return e[t]
126				})
127			}
128			
129			function u(i) {
130				var n = this.options, o = document.createElement("div"),
131					s = n.container && 1 === n.container.nodeType ? n.container : document.body;
132				o.innerHTML = i;
133				var r = o.children[0];
134				return r.style.display = "none", t.hasClass(r, "cc-window") && e.hasTransition && t.addClass(r, "cc-invisible"), this.onButtonClick = h.bind(this), r.addEventListener("click", this.onButtonClick), n.autoAttach && (s.firstChild ? s.insertBefore(r, s.firstChild) : s.appendChild(r)), r
135			}
136			
137			function h(n) {
138				var o = t.traverseDOMPath(n.target, "cc-btn") || n.target;
139				if (t.hasClass(o, "cc-btn")) {
140					var s = o.className.match(new RegExp("\\bcc-(" + i.join("|") + ")\\b")), r = s && s[1] || !1;
141					r && (this.setStatus(r), this.close(!0))
142				}
143				t.hasClass(o, "cc-close") && (this.setStatus(e.status.dismiss), this.close(!0)), t.hasClass(o, "cc-revoke") && this.revokeChoice()
144			}
145			
146			function p(e) {
147				var i = t.hash(JSON.stringify(e)), n = "cc-color-override-" + i, o = t.isPlainObject(e);
148				return this.customStyleSelector = o ? n : null, o && d(i, e, "." + n), o
149			}
150			
151			function d(i, n, o) {
152				if (e.customStyles[i]) return void ++e.customStyles[i].references;
153				var s = {}, r = n.popup, a = n.button, c = n.highlight;
154				r && (r.text = r.text ? r.text : t.getContrast(r.background), r.link = r.link ? r.link : r.text, s[o + ".cc-window"] = ["color: " + r.text, "background-color: " + r.background], s[o + ".cc-revoke"] = ["color: " + r.text, "background-color: " + r.background], s[o + " .cc-link," + o + " .cc-link:active," + o + " .cc-link:visited"] = ["color: " + r.link], a && (a.text = a.text ? a.text : t.getContrast(a.background), a.border = a.border ? a.border : "transparent", s[o + " .cc-btn"] = ["color: " + a.text, "border-color: " + a.border, "background-color: " + a.background], a.padding && s[o + " .cc-btn"].push("padding: " + a.padding), "transparent" != a.background && (s[o + " .cc-btn:hover, " + o + " .cc-btn:focus"] = ["background-color: " + (a.hover || v(a.background))]), c ? (c.text = c.text ? c.text : t.getContrast(c.background), c.border = c.border ? c.border : "transparent", s[o + " .cc-highlight .cc-btn:first-child"] = ["color: " + c.text, "border-color: " + c.border, "background-color: " + c.background]) : s[o + " .cc-highlight .cc-btn:first-child"] = ["color: " + r.text]));
155				var l = document.createElement("style");
156				document.head.appendChild(l), e.customStyles[i] = {references: 1, element: l.sheet};
157				var u = -1;
158				for (var h in s) s.hasOwnProperty(h) && l.sheet.insertRule(h + "{" + s[h].join(";") + "}", ++u)
159			}
160			
161			function v(e) {
162				return e = t.normaliseHex(e), "000000" == e ? "#222" : t.getLuminance(e)
163			}
164			
165			function f(i) {
166				if (t.isPlainObject(i)) {
167					var n = t.hash(JSON.stringify(i)), o = e.customStyles[n];
168					if (o && !--o.references) {
169						var s = o.element.ownerNode;
170						s && s.parentNode && s.parentNode.removeChild(s), e.customStyles[n] = null
171					}
172				}
173			}
174			
175			function m(e, t) {
176				for (var i = 0, n = e.length; i < n; ++i) {
177					var o = e[i];
178					if (o instanceof RegExp && o.test(t) || "string" == typeof o && o.length && o === t) return !0
179				}
180				return !1
181			}
182			
183			function b() {
184				var i = this.setStatus.bind(this), n = this.close.bind(this), o = this.options.dismissOnTimeout;
185				"number" == typeof o && o >= 0 && (this.dismissTimeout = window.setTimeout(function () {
186					i(e.status.dismiss), n(!0)
187				}, Math.floor(o)));
188				var s = this.options.dismissOnScroll;
189				if ("number" == typeof s && s >= 0) {
190					var r = function (t) {
191						window.pageYOffset > Math.floor(s) && (i(e.status.dismiss), n(!0), window.removeEventListener("scroll", r), this.onWindowScroll = null)
192					};
193					this.options.enabled && (this.onWindowScroll = r, window.addEventListener("scroll", r))
194				}
195				var a = this.options.dismissOnWindowClick, c = this.options.ignoreClicksFrom;
196				if (a) {
197					var l = function (o) {
198						for (var s = !1, r = o.path.length, a = c.length, u = 0; u < r; u++) if (!s) for (var h = 0; h < a; h++) s || (s = t.hasClass(o.path[u], c[h]));
199						s || (i(e.status.dismiss), n(!0), window.removeEventListener("click", l), this.onWindowClick = null)
200					}.bind(this);
201					this.options.enabled && (this.onWindowClick = l, window.addEventListener("click", l))
202				}
203			}
204			
205			function g() {
206				if ("info" != this.options.type && (this.options.revokable = !0), t.isMobile() && (this.options.animateRevokable = !1), this.options.revokable) {
207					var e = a.call(this);
208					this.options.animateRevokable && e.push("cc-animate"), this.customStyleSelector && e.push(this.customStyleSelector);
209					var i = this.options.revokeBtn.replace("{{classes}}", e.join(" ")).replace("{{policy}}", this.options.content.policy);
210					this.revokeBtn = u.call(this, i);
211					var n = this.revokeBtn;
212					if (this.options.animateRevokable) {
213						var o = t.throttle(function (e) {
214							var i = !1, o = 20, s = window.innerHeight - 20;
215							t.hasClass(n, "cc-top") && e.clientY < o && (i = !0), t.hasClass(n, "cc-bottom") && e.clientY >
215 s && (i = !0), i ? t.hasClass(n, "cc-active") || t.addClass(n, "cc-active") : t.hasClass(n, "cc-active") && t.removeClass(n, "cc-active")
216						}, 200);
217						this.onMouseMove = o, window.addEventListener("mousemove", o)
218					}
219				}
220			}
221			
222			var y = {
223				enabled: !0,
224				container: null,
225				cookie: {name: "cookieconsent_status", path: "/", domain: "", expiryDays: 365, secure: !1},
226				onPopupOpen: function () {
227				},
228				onPopupClose: function () {
229				},
230				onInitialise: function (e) {
231				},
232				onStatusChange: function (e, t) {
233				},
234				onRevokeChoice: function () {
235				},
236				onNoCookieLaw: function (e, t) {
237				},
238				content: {
239					header: "Cookies used on the website!",
240					message: "This website uses cookies to ensure you get the best experience on our website.",
241					dismiss: "Got it!",
242					allow: "Allow cookies",
243					deny: "Decline",
244					link: "Learn more",
245					href: "https://cookiesandyou.com",
246					close: "&#x274c;",
247					target: "_blank",
248					policy: "Cookie Policy"
249				},
250				elements: {
251					header: '<span class="cc-header">{{header}}</span>&nbsp;',
252					message: '<span id="cookieconsent:desc" class="cc-message">{{message}}</span>',
253					messagelink: '<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a></span>',
254					dismiss: '<a aria-label="dismiss cookie message" role=button tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>',
255					allow: '<a aria-label="allow cookies" role=button tabindex="0"  class="cc-btn cc-allow">{{allow}}</a>',
256					deny: '<a aria-label="deny cookies" role=button tabindex="0" class="cc-btn cc-deny">{{deny}}</a>',
257					link: '<a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a>',
258					close: '<span aria-label="dismiss cookie message" role=button tabindex="0" class="cc-close">{{close}}</span>'
259				},
260				window: '<div role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent:desc" class="cc-window {{classes}}"><!--googleoff: all-->{{children}}<!--googleon: all--></div>',
261				revokeBtn: '<div class="cc-revoke {{classes}}">{{policy}}</div>',
262				compliance: {
263					info: '<div class="cc-compliance">{{dismiss}}</div>',
264					"opt-in": '<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>',
265					"opt-out": '<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>'
266				},
267				type: "info",
268				layouts: {
269					basic: "{{messagelink}}{{compliance}}",
270					"basic-close": "{{messagelink}}{{compliance}}{{close}}",
271					"basic-header": "{{header}}{{message}}{{link}}{{compliance}}"
272				},
273				layout: "basic",
274				position: "bottom",
275				theme: "block",
276				"static": !1,
277				palette: null,
278				revokable: !1,
279				animateRevokable: !0,
280				showLink: !0,
281				dismissOnScroll: !1,
282				dismissOnTimeout: !1,
283				dismissOnWindowClick: !1,
284				ignoreClicksFrom: ["cc-revoke", "cc-btn"],
285				autoOpen: !0,
286				autoAttach: !0,
287				whitelistPage: [],
288				blacklistPage: [],
289				overrideHTML: null
290			};
291			return n.prototype.initialise = function (e) {
292				this.options && this.destroy(), t.deepExtend(this.options = {}, y), t.isPlainObject(e) && t.deepExtend(this.options, e), r.call(this) && (this.options.enabled = !1), m(this.options.blacklistPage, location.pathname) && (this.options.enabled = !1), m(this.options.whitelistPage, location.pathname) && (this.options.enabled = !0);
293				var i = this.options.window.replace("{{classes}}
293", c.call(this).join(" ")).replace("{{children}}", l.call(this)),
294					n = this.options.overrideHTML;
295				if ("string" == typeof n && n.length && (i = n), this.options["static"]) {
296					var o = u.call(this, '<div class="cc-grower">' + i + "</div>");
297					o.style.display = "", this.element = o.firstChild, this.element.style.display = "none", t.addClass(this.element, "cc-invisible")
298				} else this.element = u.call(this, i);
299				b.call(this), g.call(this), this.options.autoOpen && this.autoOpen()
300			}, n.prototype.destroy = function () {
301				this.onButtonClick && this.element && (this.element.removeEventListener("click", this.onButtonClick), this.onButtonClick = null), this.dismissTimeout && (clearTimeout(this.dismissTimeout), this.dismissTimeout = null), this.onWindowScroll && (window.removeEventListener("scroll", this.onWindowScroll), this.onWindowScroll = null), this.onWindowClick && (window.removeEventListener("click", this.onWindowClick), this.onWindowClick = null), this.onMouseMove && (window.removeEventListener("mousemove", this.onMouseMove), this.onMouseMove = null), this.element && this.element.parentNode && this.element.parentNode.removeChild(this.element), this.element = null, this.revokeBtn && this.revokeBtn.parentNode && this.revokeBtn.parentNode.removeChild(this.revokeBtn), this.revokeBtn = null, f(this.options.palette), this.options = null
302			}, n.prototype.open = function (t) {
303				if (this.element) return this.isOpen() || (e.hasTransition ? this.fadeIn() : this.element.style.display = "", this.options.revokable && this.toggleRevokeButton(), this.options.onPopupOpen.call(this)), this
304			}, n.prototype.close = function (t) {
305				if (this.element) return this.isOpen() && (e.hasTransition ? this.fadeOut() : this.element.style.display = "none", t && this.options.revokable && this.toggleRevokeButton(!0), this.options.onPopupClose.call(this)), this
306			}, n.prototype.fadeIn = function () {
307				var i = this.element;
308				if (e.hasTransition && i && (this.afterTransition && s.call(this, i), t.hasClass(i, "cc-invisible"))) {
309					if (i.style.display = "", this.options["static"]) {
310						var n = this.element.clientHeight;
311						this.element.parentNode.style.maxHeight = n + "px"
312					}
313					var r = 20;
314					this.openingTimeout = setTimeout(o.bind(this, i), r)
315				}
316			}, n.prototype.fadeOut = function () {
317				var i = this.element;
318				e.hasTransition && i && (this.openingTimeout && (clearTimeout(this.openingTimeout), o.bind(this, i)), t.hasClass(i, "cc-invisible") || (this.options["static"] && (this.element.parentNode.style.maxHeight = ""), this.afterTransition = s.bind(this, i), i.addEventListener(e.transitionEnd, this.afterTransition), t.addClass(i, "cc-invisible")))
319			}, n.prototype.isOpen = function () {
320				return this.element && "" == this.element.style.display && (!e.hasTransition || !t.hasClass(this.element, "cc-invisible"))
321			}, n.prototype.toggleRevokeButton = function (e) {
322				this.revokeBtn && (this.revokeBtn.style.display = e ? "" : "none")
323			}, n.prototype.revokeChoice = function (e) {
324				this.options.enabled = !0, this.clearStatus(), this.options.onRevokeChoice.call(this), e || this.autoOpen()
325			}, n.prototype.hasAnswered = function (t) {
326				return Object.keys(e.status).indexOf(this.getStatus()) >= 0
327			}, n.prototype.hasConsented = function (t) {
328				var i = this.getStatus();
329				return i == e.status.allow || i == e.status.dismiss
330			}, n.prototype.autoOpen = function (e) {
331				!this.hasAnswered() && this.options.enabled ? this.open() : this.hasAnswered() && this.options.revokable && this.toggleRevokeButton(!0)
332			}, n.prototype.setStatus = function (i) {
333				var n = this.options.cookie, o = t.getCookie(n.name), s = Object.keys(e.status).indexOf(o) >= 0;
334				Object.keys(e.status).indexOf(i) >= 0 ? (t.setCookie(n.name, i, n.expiryDays, n.domain, n.path, n.secure), this.options.onStatusChange.call(this, i, s)) : this.clearStatus()
335			}, n.prototype.getStatus = function () {
336				return t.getCookie(this.options.cookie.name)
337			}, n.prototype.clearStatus = function () {
338				var e = this.options.cookie;
339				t.setCookie(e.name, "", -1, e.domain, e.path)
340			}, n
341		}(), e.Location = function () {
342			function e(e) {
343				t.deepExtend(this.options = {}, s), t.isPlainObject(e) && t.deepExtend(this.options, e), this.currentServiceIndex = -1
344			}
345			
346			function i(e, t, i) {
347				var n, o = document.createElement("script");
348				o.type = "text/" + (e.type || "javascript"), o.src = e.src || e, o.async = !1, o.onreadystatechange = o.onload = function () {
349					var e = o.readyState;
350					clearTimeout(n), t.done || e && !/loaded|complete/.test(e) || (t.done = !0, t(), o.onreadystatechange = o.onload = null)
351				}, document.body.appendChild(o), n = setTimeout(function () {
352					t.done = !0, t(), o.onreadystatechange = o.onload = null
353				}, i)
354			}
355			
356			function n(e, t, i, n, o) {
357				var s = new (window.XMLHttpRequest || window.ActiveXObject)("MSXML2.XMLHTTP.3.0");
358				if (s.open(n ? "POST" : "GET", e, 1), s.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), Array.isArray(o)) for (var r = 0, a = o.length; r < a; ++r) {
359					var c = o[r].split(":", 2);
360					s.setRequestHeader(c[0].replace(/^\s+|\s+$/g, ""), c[1].replace(/^\s+|\s+$/g, ""))
361				}
362				"function" == typeof t && (s.onreadystatechange = function () {
363					s.readyState > 3 && t(s)
364				}), s.send(n)
365			}
366			
367			function o(e) {
368				return new Error("Error [" + (e.code || "UNKNOWN") + "]: " + e.error)
369			}
370			
371			var s = {
372				timeout: 5e3, services: ["ipinfo"], serviceDefinitions: {
373					ipinfo: function () {
374						return {
375							url: "//ipinfo.io", headers: ["Accept: application/json"], callback: function (e, t) {
376								try {
377									var i = JSON.parse(t);
378									return i.error ? o(i) : {code: i.country}
379								} catch (n) {
380									return o({error: "Invalid response (" + n + ")"})
381								}
382							}
383						}
384					}, ipinfodb: function (e) {
385						return {
386							url: "//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}",
387							isScript: !0,
388							callback: function (e, t) {
389								try {
390									var i = JSON.parse(t);
391									return "ERROR" == i.statusCode ? o({error: i.statusMessage}) : {code: i.countryCode}
392								} catch (n) {
393									return o({error: "Invalid response (" + n + ")"})
394								}
395							}
396						}
397					}, maxmind: function () {
398						return {
399							url: "//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js",
400							isScript: !0,
401							callback: function (e) {
402								return window.geoip2 ? void geoip2.country(function (t) {
403									try {
404										e({code: t.country.iso_code})
405									} catch (i) {
406										e(o(i))
407									}
408								}, function (t) {
409									e(o(t))
410								}) : void e(new Error("Unexpected response format. The downloaded script should have exported `geoip2` to the global scope"))
411							}
412						}
413					}
414				}
415			};
416			return e.prototype.getNextService = function () {
417				var e;
418				do e = this.getServiceByIdx(++this.currentServiceIndex); while (this.currentServiceIndex < this.options.services.length && !e);
419				return e
420			}, e.prototype.getServiceByIdx = function (e) {
421				var i = this.options.services[e];
422				if ("function" == typeof i) {
423					var n = i();
424					return n.name && t.deepExtend(n, this.options.serviceDefinitions[n.name](n)), n
425				}
426				return "string" == typeof i ? this.options.serviceDefinitions[i]() : t.isPlainObject(i) ? this.options.serviceDefinitions[i.name](i) : null
427			}, e.prototype.locate = function (e, t) {
428				var i = this.getNextService();
429				return i ? (this.callbackComplete = e, this.callbackError = t, void this.runService(i, this.runNextServiceOnError.bind(this))) : void t(new Error("No services to run"))
430			}, e.prototype.setupUrl = function (e) {
431				var t = this.getCurrentServiceOpts();
432				return e.url.replace(/\{(.*?)\}/g, function (i, n) {
433					if ("callback" === n) {
434						var o = "callback" + Date.now();
435						return window[o] = function (t) {
436							e.__JSONP_DATA = JSON.stringify(t)
437						}, o
438					}
439					if (n in t.interpolateUrl) return t.interpolateUrl[n]
440				})
441			}, e.prototype.runService = function (e, t) {
442				var o = this;
443				if (e && e.url && e.callback) {
444					var s = e.isScript ? i : n, r = this.setupUrl(e);
445					s(r, function (i) {
446						var n = i ? i.responseText : "";
447						e.__JSONP_DATA && (n = e.__JSONP_DATA, delete e.__JSONP_DATA), o.runServiceCallback.call(o, t, e, n)
448					}, this.options.timeout, e.data, e.headers)
449				}
450			}, e.prototype.runServiceCallback = function (e, t, i) {
451				var n = this, o = function (t) {
452					s || n.onServiceResult.call(n, e, t)
453				}, s = t.callback(o, i);
454				s && this.onServiceResult.call(this, e, s)
455			}, e.prototype.onServiceResult = function (e, t) {
456				t instanceof Error || t && t.error ? e.call(this, t, null) : e.call(this, null, t)
457			}, e.prototype.runNextServiceOnError = function (e, t) {
458				if (e) {
459					this.logError(e);
460					var i = this.getNextService();
461					i ? this.runService(i, this.runNextServiceOnError.bind(this)) : this.completeService.call(this, this.callbackError, new Error("All services failed"))
462				} else this.completeService.call(this, this.callbackComplete, t)
463			}, e.prototype.getCurrentServiceOpts = function () {
464				var e = this.options.services[this.currentServiceIndex];
465				return "string" == typeof e ? {name: e} : "function" == typeof e ? e() : t.isPlainObject(e) ? e : {}
466			}, e.prototype.completeService = function (e, t) {
467				this.currentServiceIndex = -1, e && e(t)
468			}, e.prototype.logError = function (e) {
469				var t = this.currentServiceIndex, i = this.getServiceByIdx(t);
470				console.warn("The service[" + t + "] (" + i.url + ") responded with the following error", e)
471			}, e
472		}(), e.Law = function () {
473			function e(e) {
474				this.initialise.apply(this, arguments)
475			}
476			
477			var i = {
478				regionalLaw: !0,
479				hasLaw: ["AT", "BE", "BG", "HR", "CZ", "CY", "DK", "EE", "FI", "FR", "DE", "EL", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "SK", "ES", "SE", "GB", "UK", "GR", "EU"],
480				revokable: ["HR", "CY", "DK", "EE", "FR", "DE", "LV", "LT", "NL", "PT", "ES"],
481				explicitAction: ["HR", "IT", "ES"]
482			};
483			return e.prototype.initialise = function (e) {
484				t.deepExtend(this.options = {}, i), t.isPlainObject(e) && t.deepExtend(this.options, e)
485			}, e.prototype.get = function (e) {
486				var t = this.options;
487				return {
488					hasLaw: t.hasLaw.indexOf(e) >= 0,
489					revokable: t.revokable.indexOf(e) >= 0,
490					explicitAction: t.explicitAction.indexOf(e) >= 0
491				}
492			}, e.prototype.applyLaw = function (e, t) {
493				var i = this.get(t);
494				return i.hasLaw || (e.enabled = !1, "function" == typeof e.onNoCookieLaw && e.onNoCookieLaw(t, i)), this.options.regionalLaw && (i.revokable && (e.revokable = !0), i.explicitAction && (e.dismissOnScroll = !1, e.dismissOnTimeout = !1)), e
495			}, e
496		}(), e.initialise = function (i, n, o) {
497			var s = new e.Law(i.law);
498			n || (n = function () {
499			}), o || (o = function () {
500			});
501			var r = Object.keys(e.status), a = t.getCookie("cookieconsent_status"), c = r.indexOf(a) >= 0;
502			return c ? void n(new e.Popup(i)) : void e.getCountryCode(i, function (t) {
503				delete i.law, delete i.location, t.code && (i = s.applyLaw(i, t.code)), n(new e.Popup(i))
504			}, function (t) {
505				delete i.law, delete i.location, o(t, new e.Popup(i))
506			})
507		}, e.getCountryCode = function (t, i, n) {
508			if (t.law && t.law.countryCode) return void i({code: t.law.countryCode});
509			if (t.location) {
510				var o = new e.Location(t.location);
511				return void o.locate(function (e) {
512					i(e || {})
513				}, n)
514			}
515			i({})
516		}
516, e.utils = t, e.hasInitialised = !0, window.cookieconsent = e
517	}
518}(window.cookieconsent || {});

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