1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <link rel="preconnect" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/"> 5 <link rel="preload" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/combined.min-v6.css" as="style"> 6 <link rel="preload" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/js/jquery-cdn.min.js" as="script"> 7 <link rel="preload" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/header.min.js" as="script"> 8 <link rel="preload" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/custom.min-v9.js" as="script"> 9 <!-- End Google Analytics --> 10
10<script>(function(d){var s = d.createElement("script");s.setAttribute("data-account", "buNJbo9Fzs");s.setAttribute("src", "https://cdn.userway.org/widget.js");(d.body || d.head).appendChild(s);})(document)</script>
10 11 12 <noscript>Please ensure Javascript is enabled for purposes of <a href="https://userway.org">website accessibility</a></noscript> 13 <meta name="viewport" content="width=device-width, initial-scale=1"/> 14 <link rel="preconnect" href="https://ik.imagekit.io/0ofixtqpt/" crossorigin /> 15 16 <link rel="preload" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/fonts/fontawesome-webfont.woff2" as="font" type="font/woff2" /> 17 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 18 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"></noscript> 19 <link rel="canonical" href="https://odysseypets.com/contact-us" /> 20 <meta name="robots" content="index, follow"> 21 <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
21<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1431907933",accountID:"3639234",trustKey:"3639234",xpid:"VwAEWFRQDBABUFBUAAYGUVIF",licenseKey:"NRJS-848b5ec7e91ef88ba3a",applicationID:"1416771764",browserID:"1431907933"};;/*! For license information please see nr-loader-spa-1.323.0.min.js.LICENSE.txt */ 22(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.323.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
22e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
22const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
22if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
22o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
22(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
22;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.323.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.323.0.PROD:";r.l=(n,i,s,a)=>
22{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-ORjtmy+nQMgxbu0os8+oTRa5sPzbinyuWSvpZrrstVLIaHofRRlfODdH+oUmkIgeQpM+vPf3vG/4RzvCsFVh1A==",249:"sha512-o7+K6xC0z3TqynjVxpd+jgiSgqy8rrPeRcUSqt5J0Rqg5Su5CycLMYfpwiM3WBCHiNDrG5aZoXJQ6HRc335XYQ==",212:"sha512-kRvBt1IYQDBnClTEWNaE8sDFqbXXM3Vdyf972Uf4MFbJxl7u3KmdO+jdB1H4achPEoT9YtNXHswaESey6sCH0A==",238:"sha512-U5EGmyYbFVR2UMNAuZJ7fTgVVtPa5b8RPMySDwXo7z3frRdkUJ2x1VAQTLQCeBab8VlGVGRV8FiSHIn/pwN72A=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.323.0.PROD"]=self["webpackChunk:NRBA-1.323.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
22ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
22{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
22null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
22dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
22imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
22return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s,a=(0,ye.ZF)(),o=(0,ye.el)(),c=Date.now();this.agentRef.runtime?.timeKeeper?.ready&&(s=Math.floor(this.agentRef.runtime.timeKeeper.correctAbsoluteTimestamp(c)));var d={spanId:a,traceId:o,timestamp:c,timestampCorrected:s};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(d.traceContextParentHeader=this.generateTraceContextParentHeader(a,o),d.traceContextStateHeader=this.generateTraceContextStateHeader(a,s??c,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(d.newrelicHeader=this.generateTraceHeader(a,o,s??c,r,n,i)),d}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
22!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
22if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
22);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
22class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
22h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
22 23 24 <meta name="csrf-token" content="RmBzPrFxFQmgEVtPEtSsRYczYKEnbatr62QbsdBH"/> 25 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 26 27 <meta name="title" content="Contact Odyssey Pets In Dallas"/> 28 <meta name="description" content="Have a Pet Question or Need Pet Advice? Contact Odyssey Pets in Dallas today. Visit our website for more information."/> 29 <!-- FB Tags --> 30 <meta property="og:type" content="website"> 31 <meta property="og:title" content="Contact Odyssey Pets In Dallas"> 32 <meta property="og:url" content="https://odysseypets.com/contact-us/"> 33 <meta property="og:description" content="Have a Pet Question or Need Pet Advice? Contact Odyssey Pets in Dallas today. Visit our website for more information."> 34 <meta property="og:image" content="https://ik.imagekit.io/0ofixtqpt/488605/front1.JPG"/> 35 36 37 <!-- Google+ Tag --> 38 <meta itemprop="image" content="https://ik.imagekit.io/0ofixtqpt/488605/front1.JPG"/> 39 40 41 42 43 44 <title>Contact Odyssey Pets In Dallas</title> 45 46 47
47<script src="https://cdn.franpos.com/customer-contents/libs/franpos_loyalty_form_popup.js" data-form-url="https://my.franpos.com/LoyaltySignup/WDU4Z3FldEcvUGNqOEFnelJlOXN6dz090" data-delay="5000" data-heading="Join Our Newsletter!" data-title-color="#ffffff" data-title-bg="#016600" data-backdrop-color="#00000033" data-shown-key="newsletterPopupShown" defer ></script>
47 48 <!-- Stylesheets 49 ============================================= --> 50<link rel="alternate" href="https://odysseypets.com/contact-us/" hreflang="en-us"/> 51 52<link rel="preload" href="https://fonts.googleapis.com/css?family=Antonio:300,400,500,600,700|Archivo+Narrow:300,400,500,600,700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'"> 53<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Antonio:300,400,500,600,700|Archivo+Narrow:300,400,500,600,700&display=swap"></noscript> 54 55<style type="text/css"> 56 header#header *:not(i):not(.fa) { 57 font-family: "Antonio" !important; 58 } 59 60 h1, h2, h3, h4, h5, h6 { 61 font-family: "Antonio" !important; 62 } 63 64 body:not(i):not(header):not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(.fa) { 65 font-family: "Archivo Narrow" !important; 66 } 67 .title-transform-none h2 { 68 text-transform: none !important; 69 } 70</style> 71
72<script type="text/javascript">var GET_LOCATION = "";</script>
vendor: 1 bytes, line 72
72
73<script type="text/javascript">var locationCount = "1";</script>
vendor: 1 bytes, line 73
73
74<script type="text/javascript">let auto_redirect = "0";</script>
74 75 <link rel="stylesheet" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/combined.min-v6.css" defer/> 76
76<script type="text/javascript" src="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/js/jquery-cdn.min.js"></script>
76 77
77<script type="text/javascript" src="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/header.min.js" defer></script>
77 78
78<script type="text/javascript" src="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/custom.min-v9.js" defer></script>
78 79 80<!-- Preconnect and DNS Prefetch for External Services --> 81<link rel="dns-prefetch" href="//www.google.com"> 82<link rel="dns-prefetch" href="//static.elfsight.com"> 83<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin> 84<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 85 86<!-- Google reCAPTCHA (Enterprise) -->
vendor: 87 bytes, lines 86-90
86 87<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script> 88 89 90
91<!-- Elfsight Widget -->
92<script src="https://static.elfsight.com/platform/platform.js" data-use-service-core defer></script>
92 93 94<!-- Google Fonts --> 95<link rel="preload" href="https://fonts.googleapis.com/css2?family=Noto+Sans&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'"> 96<noscript><link href="https://fonts.googleapis.com/css2?family=Noto+Sans&display=swap" rel="stylesheet"></noscript> 97 98<!-- Viewport Meta --> 99<meta name="viewport" content="width=device-width, initial-scale=1"> 100 101<!-- Preload and Styles --> 102<link rel="preload" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/custom.compile.min-v11.css" as="style"> 103<link rel="stylesheet" href="https://d3w285dzx3yv2d.cloudfront.net/static/vendors/v2/performance/custom.compile.min-v11.css"> 104 105 106
106<script> 107 (function(){ 108 const runAnalytics = function(id) { 109 const s = document.createElement('script'); 110 s.src = `https://www.googletagmanager.com/gtag/js?id=${id}`; 111 s.async = true; 112 document.head.appendChild(s); 113 114 window.dataLayer = window.dataLayer || []; 115 function gtag(){ dataLayer.push(arguments); } 116 117 gtag('js', new Date()); 118 gtag('config', id); 119 }; 120 121 const id = "G-WJZWVPJWQB"; 122 if (id) { 123 (window.requestIdleCallback || function(cb){ setTimeout(cb, 300); })(function() { 124 runAnalytics(id); 125 }); 126 } 127 })(); 128 </script>
128 129 130
130<script> 131 (window.requestIdleCallback || function(cb){ setTimeout(cb, 300); })(function(){ 132 !function(f,b,e,v,n,t,s){ 133 if(f.fbq) return; 134 n = f.fbq = function(){ 135 n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments); 136 }; 137 if(!f._fbq) f._fbq = n; 138 n.push = n; 139 n.loaded = !0; 140 n.version = '2.0'; 141 n.queue = []; 142 t = b.createElement(e); t.async = true; 143 t.src = v; 144 s = b.getElementsByTagName(e)[0]; 145 s.parentNode.insertBefore(t,s); 146 }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); 147 148 fbq('init', '2983775221638716'); 149 fbq('track', 'PageView'); 150 }); 151 </script>
151 152 <noscript> 153 <img height="1" width="1" style="display:none" 154 src="https://www.facebook.com/tr?id=2983775221638716&ev=PageView&noscript=1"/> 155 </noscript> 156 157 158<!-- site level css start --> 159 <style type="text/css"> 160 .service-link-color h2 { 161color: #016600 !important; 162} </style> 163<!-- site level css end --> 164
165<script type="application/ld+json"> 166{ 167 "@context": "http://schema.org/", 168 "@type": "WebSite", 169 "name": "Odyssey Pets", 170 "url": "https://odysseypets.com" 171} 172 173</script>
173<script type="application/ld+json"> 174{ 175 "@context": "http://schema.org", 176 "@type": "PetStore", 177 "name": "Odyssey Pets", 178 "image": "https://ik.imagekit.io/0ofixtqpt/488605/front1.JPG", 179 "@id": "", 180 "url": "https://odysseypets.com", 181 "telephone": "9724071166", 182 "priceRange": "$$$", 183 "address": { 184 "@type": "PostalAddress", 185 "streetAddress": "14999 Preston Rd", 186 "addressLocality": "Dallas", 187 "addressRegion": "TX", 188 "postalCode": "75254", 189 "addressCountry": "US", 190 "description" : "Have a Pet Question or Need Pet Advice? Contact Odyssey Pets in Dallas today. Visit our website for more information." 191 }, 192 "geo": { 193 "@type": "GeoCoordinates", 194 "latitude": 32.9519933, 195 "longitude": -96.8048136 196 }, 197 "openingHoursSpecification": [{"@type":"OpeningHoursSpecification","dayOfWeek":"Monday","opens":"07:30","closes":"19:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Tuesday","opens":"07:30","closes":"19:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Wednesday","opens":"07:30","closes":"19:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Thursday","opens":"07:30","closes":"19:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Friday","opens":"07:30","closes":"19:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Saturday","opens":"07:30","closes":"19:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Sunday","opens":"11:00","closes":"18:00"}], 198 "sameAs": ["https://maps.app.goo.gl/z1HrjJj2QTakFJPw7","https://www.facebook.com/odysseypets
198/","https://maps.app.goo.gl/z1HrjJj2QTakFJPw7","https://www.instagram.com/odysseypets/"], 199 "aggregateRating": { 200 "@type": "AggregateRating", 201 "ratingValue": 5, 202 "reviewCount": 5 203 }, 204 "review": [ 205 { 206 "@type": "Review", 207 "datePublished" : "2026-09-04", 208 "reviewBody": "Amazing little pet store. Iâm one of those psycho pet owners and I worked in Vet hospitals when I was younger so have higher standards and would trust my dog baby with thier staff. Iâm mostly in there for DFWAPC meetings as I donât live close so mostly get the pleasure of harrassing Miles and enjoying their fish and plant department but every staff member has a true love for animals is knowledgable, helpful, courteous and not afraid to say idk and ask another employee (one of my biggest pet peeves when people fake knowledge)", 209 "author": { 210 "@type": "Person", 211 "name": "T Wilson" 212 }, 213 "reviewRating": { 214 "@type": "Rating", 215 "worstRating": "1", 216 "bestRating": "5", 217 "ratingValue": "5" 218 } 219 }, { 220 "@type": "Review", 221 "datePublished" : "2026-08-28", 222 "reviewBody": "Great products. Great service. Very knowledgeable employees! This place is especially great for fish, if you're interested in that. I highly recommend Odyssey pets!", 223 "author": { 224 "@type": "Person", 225 "name": "Michael Said" 226 }, 227 "reviewRating": { 228 "@type": "Rating", 229 "worstRating": "1", 230 "bestRating": "5", 231 "ratingValue": "5" 232 } 233 }, { 234 "@type": "Review", 235 "datePublished" : "2026-08-01", 236 "reviewBody": "The best by far! People who are knowledgeable, approachable. They carry only transparent, healthy brands of dog and cat food. Great aquarium resource as well. Support a locally owned small business! Odyssey Pets is the best!", 237 "author": { 238 "@type": "Person", 239 "name": "Shel Mulry" 240 }, 241 "reviewRating": { 242 "@type": "Rating", 243 "worstRating": "1", 244 "bestRating": "5", 245 "ratingValue": "5" 246 } 247 }, { 248 "@type": "Review", 249 "datePublished" : "2026-08-01", 250 "reviewBody": "Been going there for 15 years because the groomers are kind and gentle to my 2 boys Ollie and Dickens. Great staff and clean boarding area. Highly recommend.", 251 "author": { 252 "@type": "Person", 253 "name": "Bob âUSMCVet1985â" 254 }, 255 "reviewRating": { 256 "@type": "Rating", 257 "worstRating": "1", 258 "bestRating": "5", 259 "ratingValue": "5" 260 } 261 }, { 262 "@type": "Review", 263 "datePublished" : "2026-07-24", 264 "reviewBody": "I purchased my Rummy Nose Tetras from Odyssey Pets. I stopped in, they only had a couple. Gentlemen gave me Miles card and told me to email him. Miles was great! He ordered me 20 Rummy Nose Tetras and I picked them up a week later. Video attached is after having them for 2 weeks. They are all healthy, happy, schooling and a beautiful addition to my 75 gallon. Thank you Miles and everyone at Odyssey Pets. This was my 1st purchase, but definitely not my last! â¤ï¸", 265 "author": { 266 "@type": "Person", 267 "name": "MamaKimbo75" 268 }, 269 "reviewRating": { 270 "@type": "Rating", 271 "worstRating": "1", 272 "bestRating": "5", 273 "ratingValue": "5" 274 } 275 } ] 276 } 277 278</script>
278<!-- Document Title 279============================================= --> 280 <link rel="shortcut icon" href="https://ik.imagekit.io/0ofixtqpt/5090102/fav.png"> 281 <style> 282 .mobile_carousel { 283 background-color: #016600; 284 } 285 286 .cust-carousel { 287 background: #016600; 288 } 289 290 #return-to-top { 291 background-color: #016600; 292 } 293 294 .fa-bars { 295 color: #016600 !important; 296 } 297 298 .header-icons-span, .portfolio-filter li.activeFilter a, .portfolio-shuffle:hover { 299 background-color: #016600; 300 } 301 302 .fa-paw, .fa-car { 303 color: #016600 !important; 304 } 305 306 a.all-brands, .share-btn { 307 background-color: #016600 !important; 308 } 309 310 button.contact-btn, a.contact-btn, .subscribe-btn { 311 background-color: #016600 !important; 312 } 313 314 .pro_btn, .icon-line-heart, .icon-line-power { 315 background-color: #016600 !important; 316 } 317 318 .cta-widget-btn { 319 background-color: #016600 !important; 320 } 321 322 #result .footer-custom-icon { 323 color: #016600; 324 } 325 326 #gotoTop:hover { 327 background-color: #016600 !important; 328 } 329 330 .owl-carousel .owl-nav [class*=owl-]:hover { 331 background-color: #1bc110 !important; 332 color: #fff !important; 333 } 334 .owl-carousel .owl-nav [class*=owl-]{ 335 background-color: #016600 !important; 336 color: #fff !important; 337 } 338 339 .feature-box.fbox-plain .fbox-icon i { 340 color: #016600 !important; 341 } 342 343 #top-bar { 344 background-color: #016600 !important; 345 } 346 347 .brand-panel-heading { 348 background-color: #016600 !important; 349 } 350 351 .event-a { 352 color: #016600 !important; 353 } 354 355 .event-a:hover { 356 color: #1bc110 !important; 357 } 358 359 .about-a:hover { 360 color: #016600 !important; 361 } 362 363 .portfolio-overlay a:hover { 364 color: #016600 !important; 365 } 366 367 .tag-a { 368 color: #016600 !important; 369 } 370 371 .tag-a:hover { 372 color: #016600 !important; 373 } 374 375 .loc-li:hover { 376 background-color: #016600 !important; 377 } 378 379 .pagination > li > a { 380 color: #016600 !important; 381 } 382 383 .pagination > li > a:hover { 384 color: #016600 !important; 385 } 386 387 .pagination > .active > span { 388 background-color: #016600 !important; 389 border-color: #016600 !important; 390 } 391 392 .about-us-a { 393 color: #016600 !important; 394 } 395 396 .about-us-a:hover { 397 color: #016600 !important; 398 } 399 400 #header-wrap .container-fluid{ 401 background-color: #fff !important; 402 } 403 404 .review-a{ 405 color: #016600 !important; 406 cursor: pointer; 407 font-weight: 400; 408 } 409 410 .review-a:hover{ 411 color: #016600 !important; 412 } 413 414 .dark #primary-menu ul ul li{ 415 width: initial !important; 416 text-align: left !important; 417 } 418 /*#primary-menu ul ul:not(.mega-menu-column){*/ 419 /* left: 0 !important;*/ 420 /* right: 0 !important;*/ 421 /*}*/ 422 423 424 #primary-menu ul ul:not(.mega-menu-column) { 425 border-top: 2px solid #016600 !important; 426 } 427 .dark #primary-menu:not(.not-dark) ul ul, #primary-menu.dark ul ul { 428 border-top-color: #016600 !important; 429 } 430 #primary-menu ul li>a { 431 color: #2b2b2b !important; 432 } 433 434 #primary-menu ul li>a:hover { 435 color: #2b2b2b !important; 436 } 437 438 .dark #primary-menu:not(.not-dark) ul ul, #primary-menu ul ul:not(.mega-menu-column) { 439 background-color: #016600 !important; 440 border-color: #016600 !important; 441 } 442 443 .dark #primary-menu:not(.not-dark) ul ul li:hover > a{ 444 background-color: !important; 445 border-color: !important; 446 } 447 448 .dark #primary-menu:not(.not-dark) ul ul li>a { 449 color: #ffffff !important; 450 } 451 452 .dark #primary-menu:not(.not-dark) ul ul li>a:hover { 453 color: !important; 454 } 455 456 #primary-menu ul li .mega-menu-content ul li.menu-item.sub-menu:hover{ 457 background-color: unset !important; 458 border-color: unset !important; 459 } 460 461 #primary-menu ul li .mega-menu-content ul li.menu-item.sub-menu ul li:hover{ 462 background-color: unset !important; 463 border-color: unset !important; 464 color: #000000 !important; 465 } 466 .anc_subscription_description{ 467 margin-top: 8px !important; 468 } 469 .more_anc_subsc_desc{ 470 margin-top: 0px !important; 471 margin-bottom: 10px !important; 472 } 473 #anc_text { 474 margin-right: 70px !important; 475 margin-left: 70px !important; 476 } 477 .announcement_subscription_close{ 478 position: absolute; 479 right: 0 !important; 480 top: 0 !important; 481 margin-top: 0px !important; 482 margin-right: 0px !important; 483 } 484 485 .locationBrd{ 486 border-left: 8px solid #016600 !important; 487 } 488 .location-border span{ 489 color: #016600 !important; 490 } 491 .location-border:hover{ 492 background-color: #016600 !important; 493 } 494 .location-border:hover .location-drawer-business{ 495 color: #ffffff !important; 496 } 497 .location-border:hover span{ 498 color: #ffffff !important; 499 } 500 .location-border span.drawer_delivery{ 501 color: #000000 !important; 502 } 503 /* search bar style */ 504 .ecwid-search-widget__input{ 505 border: 1px solid #016600 !important; 506 height: 3.2em !important; 507 } 508 .ecwid-search-widget__btn{ 509 height: 3.2em !important; 510 border: 1px solid #016600 !important; 511 background: #016600 !important; 512 width: 40px !important; 513 } 514 .ecwid-search-widget__btn:hover{ 515 opacity: 1 !important; 516 } 517 html#ecwid_html body#ecwid_body .ec-minicart__icon .icon-default path[stroke],html#ecwid_html body#ecwid_body .ec-minicart__icon .icon-default circle[stroke]{ 518 stroke: #016600 !important; 519 } 520 html#ecwid_html body#ecwid_body .ec-minicart--m .ec-minicart__counter::after{ 521 background-color: #016600 !important; 522 } 523 .ec-notice__text-inner { 524 color: #000000!important; 525 } 526 /*** Mega Menu ***/ 527 @media (min-width: 991px) { 528 .custom-mega-menu-link:after { 529 content: ''; 530 display: block; 531 width: 40px; 532 border-bottom: 2px solid #ffffff !important; 533 } 534 535 #primary-menu ul li .mega-menu-content div.mega-menu-container-div { 536 background-color: #016600 !important; 537 } 538 .animal-li { 539 background-color: #016600 !important; 540 border-color: #016600 !important; 541 } 542 .dark #primary-menu:not(.not-dark) ul ul li>a.nav-link{ 543 color: #2b2b2b !important; 544 transition: none !important; 545 } 546 547 .dark #primary-menu:not(.not-dark) ul ul li.animal-li>a.nav-link { 548 color: #ffffff !important; 549 transition: none !important; 550 } 551 .dark #primary-menu ul li .mega-menu-content ul li a.animal-a:hover { 552 color: #ffffff !important; 553 } 554 #primary-menu ul li .mega-menu-content ul.mega-menu-column-ul{ 555 background-color: #016600 !important; 556 border-color: #016600 !important; 557 } 558 559 #primary-menu ul li .mega-menu-content ul > li.menu-item.sub-menu.mega-menu-category-title > a{ 560 background-color: #016600 !important; 561 border-color: #016600 !important; 562 color: #2b2b2b !important; 563 } 564 565 #primary-menu ul li .mega-menu-content ul >
565 li.menu-item.sub-menu.mega-menu-category-title ul li.sub-menu-mega-menu > a{ 566 background-color: #016600 !important; 567 border-color: #016600 !important; 568 color: #2b2b2b !important;; 569 } 570 #primary-menu ul li .mega-menu-content ul > li.menu-item.sub-menu.mega-menu-category-title ul.supplies-container-1, 571 #primary-menu ul li .mega-menu-content ul > li.menu-item.sub-menu.mega-menu-category-title ul.supplies-container-2, 572 #primary-menu ul li .mega-menu-content ul > li.menu-item.sub-menu.mega-menu-category-title ul.supplies-container-3{ 573 border-color: #016600 !important; 574 } 575 576 #primary-menu ul li .mega-menu-content ul > li.menu-item.sub-menu.mega-menu-category-title:hover > a { 577 background-color: unset !important; 578 border-color: unset !important; 579 padding-left: 15px !important; 580 } 581 582 #primary-menu ul li .mega-menu-content ul > li.menu-item.sub-menu.mega-menu-category-title ul li.sub-menu-mega-menu:hover > a { 583 background-color: #ffffff !important; 584 border-color: #ffffff !important; 585 color: #016600 !important; 586 padding-left: 15px !important; 587 } 588 589 .custom-mega-submenu-title { 590 color: !important; 591 } 592 } 593 /***/ 594 #return-to-top{ 595 background-color: #016600 !important; 596 } 597 body#ecwid_body .heading-block .small-text #my-categories-0 { 598 margin-top: 30px; 599 } 600 .blog-search-button { 601 background-color: #016600 !important; 602 } 603 604/* --- NWP-3809 Style Overrides --- */ 605 606/* Services */ 607.home-service-section h2, .home-service-container h2 { font-size: 36px !important; } 608.home-service-section p, .home-service-container p, .home-service-section .small-text, .home-service-container .small-text { font-size: 22px !important; } 609.home-service-section .service-carousel-desc p { font-size: 22px !important; } 610 611/* Brands */ 612.home-brand-section h2, .pet-brand-section h2, .home-brand-container h2 { font-size: 36px !important; } 613.home-brand-section p, .pet-brand-section p, .home-brand-container p, .home-brand-section .small-text, .pet-brand-section .small-text { font-size: 22px !important; } 614 615/* Gallery */ 616.gallery-section h2, .gallery-section h3 { font-size: 36px !important; } 617.gallery-section p, .gallery-section .small-text { font-size: 22px !important; } 618 619/* Reviews */ 620.review-section h2, .review-section h2.review-title-color { font-size: 36px !important; } 621/* Description text for reviews */ 622.review-section > .container > .row > .heading-block > span, .review-section .review_text_inner.small-text, .review-section p.review-description-color { font-size: 22px !important; } 623/* Trusted / h3 */ 624.review-section h3, .review-section label[data-testid="review-count"], .review-section p[style*="bold"], .review-section div[style*="bold"] { font-size: 20px !important; } 625/* Review div */ 626.review-section .review_card_carousel_child_description p, .review-section div.testi-content p, .review-section .review_testimonial_description p, .review-section .review-text-color, .review-section .review_testimonial_description { font-size: 14px !important; } 627span.review_testimonial_author { font-size: 14px !important; } 628 629/* Home page widget width fixes (About Us to match others) */ 630.aboutus-container, .aboutus_row, .aboutus_content { 631 width: 100% !important; 632 max-width: 1170px !important; 633 margin-left: auto !important; 634 margin-right: auto !important; 635} 636 637/* --- End NWP-3809 --- */ 638 639/* More Home Page Widgets (NWP-3809) */ 640.home-blog-section h2, .home-event-section h2, .home-promotion-section h2, 641.home-about-section h2, .home-aboutus-section h2, .aboutus_section h2, 642.hero-section h2, .meet-section h2, .team_section h2, .home-multi-location-section h2 { 643 font-size: 36px !important; 644} 645 646.home-blog-section .small-text, .home-event-section .small-text, .home-promotion-section .small-text, 647.home-about-section p, .home-aboutus-section p, .aboutus_section p, 648.hero-section p, .meet-section p, .team_section p, .home-multi-location-section .small-text, .team-member-description p, .member-bio p { 649 font-size: 22px !important; 650} 651/* End More Home Page Widgets */ 652</style> 653 654</head> 655<body class="stretched"> 656<div class="body-overlay"></div> 657 658 659<div id="wrapper" class="clearfix"> 660 <style> 661 .announcement { 662 display: none; 663 background: #ffffff; 664 color: #016600; 665 } 666 667 #announcement-close { 668 background-color: #ffffff; 669 } 670 671 .announcement-btn { 672 background: #016600 !important; 673 color: #ffffff !important; 674 } 675 #announcement-loader{ 676 padding-left: 20px; 677 display: none 678 } 679 #announcement-loader img{ 680 height:30px; 681 width:30px; 682 padding-right:10px 683 } 684 @media (max-width: 991px) and (min-width: 320px) { 685 .announcement { 686 background: #016600; 687 color: #ffffff; 688 } 689 690 #announcement-close { 691 background-color: #016600; 692 margin-top: 0px; 693 } 694 695 .announcement-btn { 696 background: #ffffff !important; 697 color: #016600 !important; 698 }
699 .anc_new_name_div{ 700 float: left !important; 701 width: 40%; 702 } 703 .anc_new_email_div{ 704 float: left; 705 width: 41% !important; 706 margin-left: -24px; 707 } 708 .anc_new_button_div{ 709 float: right; 710 } 711 .anc_new_input{ 712 margin-top: 7px !important; 713 } 714 .anc_new_button{ 715 width: 85px !important; 716 display: inline-block !important; 717 height: 40px !important; 718 white-space: unset !important; 719 line-height: 15px !important; 720 padding: 5px 12px !important; 721 border-radius: 16px !important; 722 font-size: 9px !important; 723 } 724 .anc_new_button:after{ 725 position: absolute; 726 top: 39px; 727 left: 57%; 728 width: 0; 729 height: 0; 730 margin-left: 0; 731 border-left: 10px solid transparent; 732 border-right: 10px solid transparent; 733 border-top: 10px solid #ffffff; 734 content: ''; 735 } 736 } 737 @media(max-width: 320px){ 738 .anc_new_button{ 739 width: 80px !important; 740 } 741 } 742 @media(max-width: 720px) { 743 .mobile-anc-btn{ 744 display: block !important; 745 } 746 747 } 748</style> 749 750<div class="announcement announcement-mobile" id="announcement"> 751 <input type="hidden" id="announcement_id" value="5293"> 752 <div id="anc_text" style="white-space: pre-line">JOIN THE COMMUNITY! 753Get pet care tips, event invitations, new product updates, and exclusive offers delivered straight to your inbox. ð¾ 754 <a target="_blank" id='announcement-btn' class="hidden-xs mobile-anc-btn hidden-sm button button-small nomargin announcement-btn" 755 href="https://my.franpos.com/LoyaltySignup/WDU4Z3FldEcvUGNqOEFnelJlOXN6dz090">Sign Up</a> 756 </div> 757 <button id="announcement-close" class="" 758 onclick="set_show_announcement_flag()"> 759 <span class="fa fa-close"></span> 760 </button> 761 <div class="hidden-md hidden-lg"> 762 <a target="_blank" id='announcement-btn' class="hidden-xs hidden-sm button button-small nomargin announcement-btn" 763 href="https://my.franpos.com/LoyaltySignup/WDU4Z3FldEcvUGNqOEFnelJlOXN6dz090">Sign Up</a> 764 </div> 765 </div>
766<script defer> 767 $(window).on('load',function(){ 768 // if($(".anc_subscription_description").length > 0) { 769 // let desc_length = $(".anc_subscription_description").html().length; 770 // if (desc_length > 90) { 771 // $(".anc_subscription_description").removeClass('col-md-6'); 772 // $(".anc_subscription_description").addClass('col-md-12'); 773 // $(".anc_subscription_description").addClass('more_anc_subsc_desc'); 774 // $(".anc_first_input").addClass('col-md-offset-3'); 775 // } else if (desc_length <= 45) { 776 // $(".anc_subscription_description").removeClass('col-md-6'); 777 // $(".anc_subscription_description").addClass('col-md-3'); 778 // $(".anc_adjust_input").removeClass('col-md-2'); 779 // $(".anc_adjust_input").addClass('col-md-3'); 780 // } 781 // } 782 }); 783 784 // Listen for announcement button click 785 const announcementButton = document.getElementById('announcement-btn'); 786 if (announcementButton) { 787 announcementButton.addEventListener('click', recordClick); 788 } 789 790 // Record announcement button click 791 function recordClick() { 792 const announcement_id = document.getElementById('announcement_id').value; 793 const url = '/record-announcement-click/'; 794 const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); 795 796 fetch(url, { 797 method: 'POST', 798 headers: { 799 'Content-Type': 'application/json', 800 'X-CSRF-TOKEN': token 801 }, 802 body: JSON.stringify({announcement_id: announcement_id}) 803 }) 804 .catch((error) => { 805 console.error('Error:', error); 806 }); 807 } 808</script>
808 <style> 809 .open > .social-share, .promotion-container .dropdown-menu{ 810 text-align: center !important; 811 } 812 html#ecwid_html body#ecwid_body .ec-size .ec-store .grid-product__title-inner, html#ecwid_html body#ecwid_body .ec-size .ec-store .grid-product__price-amount, html#ecwid_html body#ecwid_body .ec-size .ec-store .product-details__product-price, html#ecwid_html body#ecwid_body .ecwid, html#ecwid_html body#ecwid_body .ec-size .ec-store .form-control--secondary .form-control__button, html#ecwid_html body#ecwid_body .ec-size .ec-store .form-control__text, html#ecwid_html body#ecwid_body .ec-size .ec-store .form-control__textarea, html#ecwid_html body#ecwid_body .ec-size .ec-store .form-control--radio{ 813 color: #333; 814 } 815 html#ecwid_html body#ecwid_body .ec-pika-single, html#ecwid_html body#ecwid_body .ec-pika-button, html#ecwid_html body#ecwid_body .ec-pika-label, html#ecwid_html body#ecwid_body .ec-pika-label:visited, html#ecwid_html body#ecwid_body .ec-size .ec-store .form-control--error .form-control__text, html#ecwid_html body#ecwid_body .ec-size .ec-store .details-product-purchase__qty-field .form-control__placeholder{ 816 color: #000000; 817 } 818 input#ec-cart-email-input{ 819 color: #000000; 820 font-weight: 400; 821 } 822 @media(max-width: 1200px) and (min-width:1000px) { 823 .menu-top { 824 padding-top: 9%; 825 } 826 } 827 @media (min-width: 800px) and (max-width: 2000px) and (orientation: landscape) { 828 .ec-cart-widget.ec-cart-desktop { 829 display: block !important; 830 } 831 .ec-cart-widget.mobile{ 832 display: none !important; 833 } 834 } 835 @media (min-width: 1028px) and (max-width: 2000px) and (orientation: portrait) { 836 .ec-cart-widget.ec-cart-desktop { 837 display: block !important; 838 } 839 .ec-cart-widget.mobile{ 840 display: none !important; 841 } 842 } 843</style> 844<header id="header" class="transparent-header dark full-header" data-sticky-class="dark"> 845 <style> 846 .si-gplus:hover, .si-colored.si-gplus{ 847 background-color: #ffffff !important; 848 } 849 .top-links ul li{ 850 border-left: unset !important; 851 } 852 .loc-topbar-li:hover{ 853 background-color: transparent !important; 854 855 } 856 .loc-header-icon-span { 857 background-color: #ffffff !important; 858 } 859 .loc-header-icons{ 860 color: #016600 !important 861 } 862 .hour-cursor {color: inherit !important;} 863</style> 864<div id="top-bar" class="transparent-topbar hidden-sm hidden-xs"> 865 866 <div class="col_half nobottommargin clearfix col-md-1 top-left"> 867 <div class="top-links"> 868 <ul> 869 870 871 872 873 874 875 876 877 878 879 <li class="mobile-top-links"><a target="_blank" class="mapLink" 880 href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh"> 881 <span class="ts-icon get-direction-btn"><i class="fas fa-map-marker-alt"></i></span> 882 <span class="ts-text get-direction-btn">14999 Preston Rd, Ste. 400A, Dallas, TX 883 75254</span></a> 884 </li> 885 <li class="hour-li mobile-top-links"> 886 <a class="hour-cursor"><span class="ts-icon"><i class="far fa-clock"></i></span> 887 <span class="ts-text"> 888 889 Open Today: 890 11:00 am - 6:00 pm </span> 891 </a> 892 </li> 893 </ul> 894 </div> 895 </div> 896 <div class="col_half fright col_last nobottommargin clearfix"> 897 <!-- Top Social 898 ============================================= --> 899 <div id= 900 "top-social"> 901 <ul> 902 903 904 905 <li><a href="https://maps.app.goo.gl/z1HrjJj2QTakFJPw7" target="_blank" class="si-gplus" data-hover-width="109"><span 906 class="ts-icon"> 907 <img src="https://ik.imagekit.io/0ofixtqpt/3430774/glogo.png" style="width: 18px;"> 908 </span><span 909 class="ts-text"> 910 <img src="https://ik.imagekit.io/0ofixtqpt/3430772/google-logo.png" style="width: 60px;"> 911 </span></a></li> 912 913 914 915 916 917 918 919 920 <li><a href="https://www.youtube.com/@OdysseyPets" target="_blank" class="si-youtube" data-hover-width="109"><span 921 class="ts-icon"><i class="fab fa-youtube"></i></span><span 922 class="ts-text">Youtube</span></a></li> 923 924 925 926 <li>
926<a href="https://www.facebook.com/odysseypets/" target="_blank" class="si-facebook" data-hover-width="109"><span 927 class="ts-icon"><i class="fab fa-facebook"></i></span><span 928 class="ts-text">Facebook</span></a></li> 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 <li>
944<a href="https://www.instagram.com/odysseypets/" target="_blank" class="si-instagram" data-hover-width="109"><span 945 class="ts-icon"><i class="fab fa-instagram"></i></span><span 946 class="ts-text">Instagram</span></a></li> 947 948 949 950 951 952 953 <span class="top_phone"> 954 <a href="tel:(972) 407-1166"> 955 <span class="ts-icon call-us-btn"> 956 <i class="fas fa-phone call-us-btn" style="transform: rotate(90deg) !important;"></i> 957 </span>
958 <span class="ts-text call-us-btn">(972) 407-1166</span> 959 </a> 960 </span> 961 </ul> 962 </div><!-- #top-social end --> 963 </div> 964 965</div> 966 <div id="top-bar" class="transparent-topbar hidden-md hidden-lg mobile-topbar"> 967 <div class="col-xs-12 nobottommargin clearfix"> 968 <div class="hour-li mobile-top-links single-hour-div"> 969 <a class="hour-cursor"><span class="ts-icon"><i class="far fa-clock"></i></span> 970 <span class="ts-text"> 971 972 Open Today: 973 11:00 am - 6:00 pm </span> 974 </a> 975 </div> 976 <div class="top-links text-center loc-toplinks"> 977 <ul> 978 <li class="loc-li loc-topbar-li"> 979 <span class="header-icons-span loc-header-icon-span hidden-lg hidden-md loc-call-span"> 980 <a href="tel:9724071166"><i class="fas fa-phone header-icons loc-header-icons call-us-btn" style="transform: rotate(90deg) !important;"></i></a> 981 </span> 982 </li> 983 <li class="loc-li loc-topbar-li"> 984 <span class="header-icons-span loc-header-icon-span fa fa-left hidden-lg hidden-md loc-direction-span single-direction-span"> 985 <a target="_blank" class="mapLink" 986 href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh"><i 987 class="fas fa-map-marker-alt header-icons loc-header-icons get-direction-btn"></i></a> 988 </span> 989 </li> 990 </ul> 991 </div> 992 </div> 993 </div>
994<script defer> 995 $('document').ready(function(){ 996 $('.top-links ul li.location-drawer').css({cursor: "pointer"}); 997 }) 998 document.addEventListener("DOMContentLoaded", function () { 999 const mapLinks = document.getElementsByClassName("mapLink"); 1000 const isMobile = window.innerWidth <= 768; 1001 1002 if (isMobile) { 1003 Array.from(mapLinks).forEach(link => { 1004 let originalLink = link.href; 1005 1006 if (originalLink.includes("https://www.google.com/maps/place/search?q=")) { 1007 let newLink = originalLink.replace( 1008 "https://www.google.com/maps/place/search?q=", 1009 "https://www.google.com/maps/search/?api=1&query=" 1010 ); 1011 link.href = newLink; 1012 } 1013 }); 1014 } 1015}); 1016 1017</script>
1017 <div id="header-wrap" style="display:block"> 1018 <div class="container-fluid clearfix "> 1019 <div id="primary-menu-trigger" class="single-menu-trigger"> 1020 <i class="fas fa-bars"></i> 1021 <span class="mobile_menu_text"> MENU </span> 1022 </div> 1023 <!-- Logo ============================================= --> 1024 <div id="logo" class="mobile-header-logo "> 1025 <a href="/" 1026 class="standard-logo logo-adjustment" data-dark-logo="https://ik.imagekit.io/0ofixtqpt/2501317/1693769242_Odyssey logo circle B (1).png"> 1027 <img src="https://ik.imagekit.io/0ofixtqpt/2501317/1693769242_Odyssey logo circle B (1).png" alt="Odyssey Pets Logo" class="logo-adjustment-img"> 1028 </a> 1029 <a href="/" 1030 class="retina-logo logo-alignment logo-adjustment" data-dark-logo="https://ik.imagekit.io/0ofixtqpt/2501317/1693769242_Odyssey logo circle B (1).png"> 1031 <img src="https://ik.imagekit.io/0ofixtqpt/2501317/1693769242_Odyssey logo circle B (1).png" alt="Odyssey Pets Logo" class="logo-adjustment-img"> 1032 </a> 1033 </div><!-- #logo end --> 1034 <!-- Mobile search box --> 1035 <!-- Mobile search box end --> 1036 <!-- Primary Navigation============================================= --> 1037 <nav id="primary-menu" class="menu-top" style=""> 1038 <ul id=""> 1039 <div id="ecwidSearch-desktop" class="alignleft"> 1040 </div> 1041 <style> 1042 .menu-btn{ 1043 border-radius: 30px; 1044 } 1045 1046 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1047 padding-top: 19px;; 1048 } 1049 1050 @media (max-width: 991px) { 1051 .custom-btn { 1052 display: inline-block; 1053 width: 48%; 1054 margin-right: 2%; 1055 } 1056 } 1057 1058 </style> 1059 1060 <li class="current "> 1061 1062 <a class="" href="https://shop.odysseypets.com/" title="Shop Near Dallas" target=_blank 1063 style=""> 1064 <div class="" 1065 style=""> 1066 Shop 1067 </div> 1068 1069 </a> 1070 1071 </li> 1072 <style> 1073 .menu-btn{ 1074 border-radius: 30px; 1075 } 1076 1077 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1078 padding-top: 19px;; 1079 } 1080 1081 @media (max-width: 991px) { 1082 .custom-btn { 1083 display: inline-block; 1084 width: 48%; 1085 margin-right: 2%; 1086 } 1087 } 1088 1089 </style> 1090 1091 <li class=" sub-menu click-class "> 1092 1093 <a class="" href="/pet-food-supply/" title="Cat & Dog Near Dallas" style="" 1094 > 1095 <div class="" 1096 style=""> 1097 Cat & Dog 1098 </div> 1099 </a> 1100 <ul style=""> 1101 <li> 1102 <a href="/pet-food-cost-carb-calculators/" title="Pet Food Cost & Carb Calculators Near Dallas" > 1103 <div>Pet Food Cost & Carb Calculators</div> 1104 </a> 1105 </li> 1106 <li> 1107 <a href="/dog-food-supply/" title="Dog Food & Supplies Near Dallas" > 1108 <div>Dog Food & Supplies</div> 1109 </a> 1110 </li> 1111 <li> 1112 <a href="/cat-food-supply/" title="Cat Food & Supplies Near Dallas" > 1113 <div>Cat Food & Supplies</div> 1114 </a> 1115 </li> 1116 <li> 1117 <a href="/brands/" title="See All Brands Near Dallas" > 1118 <div>See All Brands</div> 1119 </a> 1120 </li> 1121 <li> 1122 <a href="http://www.luckybuckantlers.com/" title="Lucky Buck Antlers Near Dallas" target=_blank> 1123 <div>Lucky Buck Antlers</div> 1124 </a> 1125 </li> 1126 </ul> 1127 </li> 1128 <style> 1129 .menu-btn{ 1130 border-radius: 30px; 1131 } 1132 1133 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1134 padding-top: 19px;; 1135 } 1136 1137 @media (max-width: 991px) { 1138 .custom-btn { 1139 display: inline-block; 1140 width: 48%; 1141 margin-right: 2%; 1142 } 1143 } 1144 1145 </style> 1146 1147 <li class=" sub-menu click-class "> 1148 1149 <a class="" href="/fish-food-supply/" title="Fis
1149h Near Dallas" style="" 1150 > 1151 <div class="" 1152 style=""> 1153 Fish 1154 </div> 1155 </a> 1156 <ul style=""> 1157 <li> 1158 <a href="/fish-food-supply/" title="The Fish Room Near Dallas" > 1159 <div>The Fish Room</div> 1160 </a> 1161 </li> 1162 <li> 1163 <a href="/fish-food-supply/" title="Aquarium Service Near Dallas" > 1164 <div>Aquarium Service</div> 1165 </a> 1166 </li> 1167 <li> 1168 <a href="/aquarium-consultations/" title="Aquarium Consultations Near Dallas" > 1169 <div>Aquarium Consultations</div> 1170 </a> 1171 </li> 1172 </ul> 1173 </li> 1174 <style> 1175 .menu-btn{ 1176 border-radius: 30px; 1177 } 1178 1179 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1180 padding-top: 19px;; 1181 } 1182 1183 @media (max-width: 991px) { 1184 .custom-btn { 1185 display: inline-block; 1186 width: 48%; 1187 margin-right: 2%; 1188 } 1189 } 1190 1191 </style> 1192 1193 <li class=" sub-menu click-class "> 1194 1195 <a class="" href="/small-pet-food-supply/" title="Small Pets Near Dallas" style="" 1196 > 1197 <div class="" 1198 style=""> 1199 Small Pets 1200 </div> 1201 </a> 1202 <ul style=""> 1203 <li> 1204 <a href="/bird-food-supply/" title="Bird Food & Supplies Near Dallas" > 1205 <div>Bird Food & Supplies</div> 1206 </a> 1207 </li> 1208 <li> 1209 <a href="/small-pet-food-supply/" title="Small Pets Food & Supplies Near Dallas" > 1210 <div>Small Pets Food & Supplies</div> 1211 </a> 1212 </li> 1213 </ul> 1214 </li> 1215 <style> 1216 .menu-btn{ 1217 border-radius: 30px; 1218 } 1219 1220 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1221 padding-top: 19px;; 1222 } 1223 1224 @media (max-width: 991px) { 1225 .custom-btn { 1226 display: inline-block; 1227 width: 48%; 1228 margin-right: 2%; 1229 } 1230 } 1231 1232 </style> 1233 1234 <li class=" sub-menu click-class "> 1235 1236 <a class="" href="/services/" title="Services Near Dallas" style="" 1237 > 1238 <div class="" 1239 style=""> 1240 Services 1241 </div> 1242 </a> 1243 <ul style=""> 1244 <li> 1245 <a href="/local-delivery/" title="Local Delivery Near Dallas" > 1246 <div>Local Delivery</div> 1247 </a> 1248 </li> 1249 <li> 1250 <a href="/dog-boarding/" title="Dog Boarding & Daycare Near Dallas" > 1251 <div>Dog Boarding & Daycare</div> 1252 </a> 1253 </li> 1254 <li> 1255 <a href="/grooming/" title="Dog Grooming Near Dallas" > 1256 <div>Dog Grooming</div> 1257 </a> 1258 </li> 1259 <li> 1260 <a href="/nutritional-counseling/" title="Nutritional Counseling Near Dallas" > 1261 <div>Nutritional Counseling</div> 1262 </a> 1263 </li> 1264 <li> 1265 <a href="/pet-adoptions/" title="Pet Adoptions Near Dallas" > 1266 <div>Pet Adoptions</div> 1267 </a> 1268 </li> 1269 </ul> 1270 </li> 1271 <style> 1272 .menu-btn{ 1273 border-radius: 30px; 1274 } 1275 1276 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1277 padding-top: 19px;; 1278 } 1279 1280 @media (max-width: 991px) { 1281 .custom-btn { 1282 display: inline-block; 1283 width: 48%; 1284 margin-right: 2%; 1285 } 1286 } 1287 1288 </style> 1289 1290 <li class=" sub-menu click-class "> 1291 1292 <a class="" href="/events/" title="Events & Deals Near Dallas" style="" 1293 > 1294 <div class="" 1295 style=""> 1296 Events & Deals 1297 </div> 1298 </a> 1299 <ul style=""> 1300 <li> 1301 <a href="/deals/" title="Deals Near Dallas" > 1302 <div>Deals</div> 1303 </a> 1304 </li> 1305 </ul> 1306 </li> 1307 <style> 1308 .menu-btn{ 1309 border-radius: 30px; 1310 } 1311 1312 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1313 padding-top: 19px;; 1314 } 1315 1316 @media (max-width: 991px) { 1317 .custom-btn { 1318 display: inline-block; 1319 width: 48%; 1320 margin-right: 2%; 1321 } 1322 } 1323 1324 </style> 1325 1326 <li class=" sub-menu click-class "> 1327 1328 <a class="" href="/loyalty-program/" title="Loyalty Program Near Dallas" style="" 1329 > 1330 <div class="" 1331 style=""> 1332 Loyalty Program 1333 </div> 1334 </a> 1335 <ul style=""> 1336 <li> 1337 <a href="/vip/" title="VIP Membership Near Dallas" > 1338 <div>VIP Membership</div> 1339 </a> 1340 </li> 1341 </ul> 1342 </li> 1343 <style> 1344 .menu-btn{ 1345 border-radius: 30px; 1346 } 1347 1348 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1349 padding-top: 19px;; 1350 } 1351 1352 @media (max-width: 991px) { 1353 .custom-btn { 1354 display: inline-block; 1355 width: 48%; 1356 margin-right: 2%; 1357 } 1358 } 1359 1360 </style> 1361 1362 <li class=" sub-menu click-class "> 1363 1364 <a class="" href="/about-us/" title="About Near Dallas" style="" 1365 > 1366 <div class="" 1367 style=""> 1368 About 1369 </div> 1370 </a> 1371 <ul style=""> 1372 <li> 1373 <a href="/industry-awards/" title="Industry Awards Near Dallas" > 1374 <div>Industry Awards</div> 1375 </a> 1376 </li> 1377 <li> 1378 <a href="/kibble-assessment/" title="Kibble Assessment Near Dallas" > 1379 <div>Kibble Assessment</div> 1380 </a> 1381 </li> 1382 <li> 1383 <a href="/loyalty-program/" title="Join Our Loyalty Program Near Dallas" > 1384 <div>Join Our Loyalty Program</div> 1385 </a> 1386 </li> 1387 <li> 1388 <a href="/application/" title="Employment Application Near Dallas" > 1389 <div>Employment Application</div> 1390 </a> 1391 </li> 1392 <li> 1393 <a href="/resources/" title="Resources Near Dallas" > 1394 <div>Resources</div> 1395 </a> 1396 </li> 1397 <li> 1398 <a href="/reviews/" title="Online Reviews Near Dallas" > 1399 <div>Online Reviews</div> 1400 </a> 1401 </li> 1402 <li> 1403 <a href="/contact-us/" title="Contact Near Dallas" > 1404 <div>Contact</div> 1405 </a> 1406 </li> 1407 </ul> 1408 </li> 1409 <style> 1410 .menu-btn{ 1411 border-radius: 30px; 1412 } 1413 1414 #header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a{ 1415 padding-top: 19px;; 1416 } 1417 1418 @media (max-width: 991px) { 1419 .custom-btn { 1420 display: inline-block; 1421 width: 48%; 1422 margin-right: 2%; 1423 } 1424 } 1425 1426 </style> 1427 1428 <li class=" "> 1429 1430 <a class="" href="/blog/" title="Blog Near Dallas" style="" 1431 > 1432 <div class="" 1433 style=""> 1434 Blog 1435 </div> 1436 </a> 1437 </li> 1438 </ul> 1439 </nav><!-- #primary-menu end --> 1440 </div> 1441 </div> 1442 </header> 1443<div id="side-panel"> 1444 <div class="side-panel-wrap">
1445 <div class="drawer-title"> 1446 <button type="button" class="close drawer-close" data-dismiss="alert" aria-label="Close"> 1447 <span aria-hidden="true" class="drawer-close-icon">Ã</span> 1448 </button> 1449 <h3 class="drawer-title-name"><i class="fas fa-map-marker-alt"></i> Find Your Store </h3> 1450 </div> 1451 <div class="drawer-card"> 1452 <div class="zip-code-div"> 1453 <input type="text" class="zip-code-search" id="zipCode" data-id="zip-code-input" placeholder="Enter Zip Code" maxlength="5" /> 1454 <button type="submit" id="zipSearch" class="loc-search-button"><i class="fas fa-search search-icon"></i></button> 1455 </div> 1456 <span class="zip-error"></span> 1457 <h2 id="all-show" class="local-store-link"> All Locations </h2> 1458 <img src="https://ik.imagekit.io/0ofixtqpt/143715/preloader-dark.gif" id="loader-location" class="loader-location"/> 1459 <div class="show-location"> 1460 <a class="location-drawer-anchor locationSelect" data-slug="dallas" data-name="dallas" href="javascript:;" data-href="/"> 1461 <div class="client-location location-border"> 1462 <h3 class="notopmargin nobottommargin location-drawer-business"> 1463 Dallas 1464 </h3> 1465 <span> 1466 <i class="fas fa-map-marker-alt"></i> 14999 Preston Rd, ,Ste. 400A, Dallas, TX 75254 1467 </span> 1468 <br /> 1469 <span> 1470 <i class="fas fa-phone" style="transform: rotate(90deg) !important;"></i> (972) 407-1166 1471 </span> 1472 <br /> 1473 1474 <span class="hours-drawer"> 1475 Open Today Until 6:00 pm 1476 </span> 1477 <span class="drawer_delivery"> 1478 <br /> 1479 In-Store Pickup, Curbside Pickup, Local Delivery, Same Day Delivery, No Contact Delivery Available 1480 </span> 1481 </div> 1482 </a> 1483 </div> 1484 </div> 1485 </div> 1486</div>
1487<script> 1488 let ecwid_count = '0'; 1489 ecwid_count = parseInt(ecwid_count); 1490 let selectedLocation = localStorage.getItem('selected_location'); 1491 if(localStorage.getItem('drawer_flag') == null && ecwid_count > 1){ 1492 localStorage.setItem('drawer_flag',1); 1493 $("body").addClass('side-panel-open'); 1494 }else{ 1495 localStorage.setItem('drawer_flag',0); 1496 $("body").removeClass('side-panel-open'); 1497 } 1498 var loc = $('#client_location').val(); 1499 localStorage.setItem('selected_location', loc); 1500 $('a[data-slug='+loc+']').children().addClass('locationBrd'); 1501 $('#loader-location').css('display','none'); 1502 $('body').on('click', '.locationSelect', function () { 1503 let slug = $(this).data('slug'); 1504 let hqName = $(this).data('name'); 1505 1506 let previousSlug = localStorage.getItem('selected_location'); 1507 1508 // Check if same slug is clicked 1509 const isLocationSelected = previousSlug === slug; 1510 const isHQSelectedAndLocationEmpty = slug === hqName && previousSlug === ''; 1511 1512 let shouldCloseDrawer = isLocationSelected || isHQSelectedAndLocationEmpty; 1513 1514 // If the HQ is selected, set the slug to an empty string 1515 if (slug === hqName) { 1516 slug = ''; 1517 } 1518 1519 // Update the selected location in localStorage 1520 localStorage.setItem('selected_location', slug); 1521 1522 if (shouldCloseDrawer) { 1523 document.querySelector('.drawer-close').click(); 1524 } else { 1525 redirectToLocation(slug, previousSlug, hqName) 1526 } 1527 }); 1528 1529 function redirectToLocation(slug, previousSlug, hqName) { 1530 // Get the current URL path 1531 let currentPath = window.location.pathname; 1532 1533 // Check the previous slug with HQ 1534 if (previousSlug === hqName) { 1535 previousSlug = ''; 1536 } 1537 1538 // Determine the new URL path and redirect 1539 let newPath = previousSlug 1540 ? replaceOrRemoveLocationInUrl(slug, currentPath) 1541 : `/${slug}${currentPath}`; 1542 1543 // Redirect to the new URL 1544 location.href = newPath; 1545 } 1546 1547 function replaceOrRemoveLocationInUrl(newLocation, currentPath) { 1548 // Use a regular expression to match the location part (only the first segment after the domain) 1549 let newPath = currentPath.replace(/\/[^\/]+/, newLocation ? `/${newLocation}` : ''); 1550 1551 // Ensure the new path starts with a slash 1552 if (!newPath.startsWith('/')) { 1553 newPath = '/' + newPath; 1554 } 1555 1556 return newPath; 1557 } 1558 1559 $("#zipCode").keyup(function(){ 1560 this.value = this.value.replace(/[^0-9]/g,''); 1561 }); 1562 1563 // Function to handle zip code search actions 1564 function handleZipSearch() { 1565 $('.show-location').css('display', 'none'); 1566 $('#loader-location').css('display', 'block'); 1567 $('#all-show').html('Nearby Store'); 1568 search(); 1569 } 1570 1571 // Attach keypress event to zip code search input 1572 $('.zip-code-search').keypress(function (e) { 1573 if (e.which === 13) { 1574 handleZipSearch(); 1575 } 1576 }); 1577 1578 // Attach click event to zip search button 1579 $('#zipSearch').click(function () { 1580 handleZipSearch(); 1581 }); 1582 1583 function search() { 1584 let location = $('input[name=location_id]').val(); 1585 let zip = $('#zipCode').val(); 1586 if(zip !== '' && zip.length < 5){ 1587 $('.zip-error').html("Error: Please enter a valid ZIP code"); 1588 $('.local-store-link').attr('style', 'margin-top:5% !important'); 1589 $('#loader-location').css('display','none'); 1590 return false; 1591 } else { 1592 $('.zip-error').html(""); 1593 $('#all-show').attr('style', 'margin-top:0% !important','display: block'); 1594 $('#ecwid-show').attr('style', 'margin-top:0% !important','display: block'); 1595 } 1596 1597 // If no zip code is provided, show all the locations 1598 if(zip === '') { 1599 $('#all-show').html('All Locations'); 1600 } 1601 1602 let url = '/zipSearch/'; 1603 $.ajax({ 1604 headers: { 1605 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 1606 }, 1607 type: 'POST', 1608 url: url, 1609 data: {'currentLoc': location,'zip' : zip}, 1610 success: function (response) { 1611 $('.show-location').css('display','block'); 1612 $('#loader-location').css('display','none'); 1613 $('.show-location').html(response); 1614 $('a[data-slug='+loc+']').children().addClass('locationBrd'); 1615 } 1616 }); 1617 } 1618 $('.drawer-close').on('click', function(){ 1619 $("body").removeClass('side-panel-open'); 1620 $('#all-show').html('All Locations'); 1621 $('#ecwid-show').html('Choose a Store to Buy Online'); 1622 $('#zipCode').val(''); 1623 }); 1624</script>
1624<script> 1625 let ecwidMobileSearch = $('#ecwidSearch-mobile'); 1626 let ecwidDesktopSearch = $('#ecwidSearch-desktop'); 1627 window.addEventListener("orientationchange", function() { 1628 if (window.matchMedia("(orientation: portrait)").matches) { 1629 showPortraitSearch(); 1630 } 1631 if (window.matchMedia("(orientation: landscape)").matches) { 1632 showLandscapeSearch(); 1633 } 1634 }, false); 1635 var logoPosition = '1'; 1636 var captcha_key = '6LfcAGMpAAAAAL68qM6-xqbJeELRxV4MPPD71y27'; 1637 var wwidth = 0; 1638 function dynamic_padding() { 1639 $('#header-wrap').show(); 1640 var p = 0; 1641 $('#primary-menu > ul > li').each(function (x, y) { 1642 p += $(y).width(); 1643 }); 1644 var w = $('#primary-menu').width(); 1645 var actual_width = w - p; 1646 var count_li = $('#primary-menu > ul > li').length + 2; 1647 var padding_width = actual_width / count_li; 1648 $('#primary-menu > ul > li').each(function () { 1649 $(this).attr('style', 'padding-right:' + padding_width + 'px !important;'); 1650 }); 1651 $('#primary-menu > ul > li:first').attr('style', 'padding-left:' + padding_width + 'px !important;padding-right: ' + padding_width + 'px !important;'); 1652 wwidth = $(window).width(); 1653 } 1654 1655 $(window).resize(function () { 1656 if (wwidth != $(window).width() && ($(window).width() > '768')) { 1657 if (logoPosition > 1) { 1658 dynamic_padding(); 1659 } 1660 } 1661 }); 1662 if (logoPosition > 1 && ($(window).width() > '768')) { 1663 setTimeout( dynamic_padding, 500); 1664 } 1665 1666 $(document).ready(function (){ 1667 if (window.matchMedia("(orientation: landscape)").matches) { 1668 // console.log('landscape'); 1669 showLandscapeSearch(); 1670 } 1671 if (window.matchMedia("(orientation: portrait)").matches) { 1672 ecwidDesktopSearch.hide(); 1673 1674 1675 } 1676 }); 1677 1678 /** 1679 * show portrait search box 1680 */ 1681 function showPortraitSearch() 1682 {
1683 let desktopSearch = ecwidDesktopSearch.html(); 1684 ecwidDesktopSearch.html('').hide(); 1685 ecwidMobileSearch.show().html(desktopSearch); 1686 $('#my-search-').removeClass('search-products-desktop').addClass('search-products-mobile'); 1687 } 1688 1689 /** 1690 * show landscape search box 1691 */ 1692 function showLandscapeSearch() 1693 { 1694 let mobileSearch = ecwidMobileSearch.html(); 1695 ecwidMobileSearch.html('').hide(); 1696 ecwidDesktopSearch.show().html(mobileSearch); 1697 $('#my-search-').removeClass('search-products-mobile').addClass('search-products-desktop'); 1698 } 1699</script>
1699 <style> 1700 .col-md-2{ 1701 width: 20% !important; 1702 } 1703 .msg-countdown{ 1704 float: right; 1705 } 1706 </style> 1707 <section id="page-title" 1708 class="page-title-parallax page-title-dark page-title-right hero-bg-image mobile-main-land-section mobile-page-title" 1709 data-stellar-background-ratio="0.2"> 1710 <div class="home-overlay"></div> 1711 <div class="container clearfix center bottommargin-sm-6 hero-title-div"> 1712 <h1 class="hero-title"> 1713 Odyssey Pets in Dallas, TX 1714 </h1> 1715 <p class="notopmargin animal_short"> 1716 <p>We Open Today at 11:00 AM</p> 1717 </p> 1718 1719 <a href="tel: (972) 407-1166" 1720 class="button slide_btn_left button-large hero-btn button-rounded noleftmargin topmargin-sm main-widget-image-button sub-page-cta-btn-1 call-us-btn" 1721 style="background-color: #ffffff"> 1722 Call Us 1723 </a> 1724 1725 1726 1727 1728 1729 1730 1731 <a target="_blank" href="https://goo.gl/maps/3JwaTvzBzfmqAdgz6" 1732 class="button slide_btn_right button-large button-rounded hero-btn noleftmargin topmargin-sm main-widget-image-button sub-page-cta-btn-2 " 1733 style="background-color: #ffffff"> 1734 Driving Directions 1735 </a> 1736 </div> 1737 1738 </section> 1739
1739<script> 1740 $(document).ready(function () { 1741 let options = {}; 1742 let moptions = {}; 1743 $(".pet-brand-btn").click(function () { 1744 $('html, body').animate({scrollTop: $('#pet-brand').offset().top - 250}, '200'); 1745 }); 1746 1747 var timer = 1; 1748 var count = parseInt(0); // desktop slide count 1749 var mcount = parseInt(0); // mobile slide count 1750 if(count > 1){ // if greater than 1 slide in desktop then loop true 1751 options = { 1752 loop: false, 1753 autoplay: { 1754 delay: '5000', 1755 disableOnInteraction: false, 1756 }, 1757 navigation: { 1758 nextEl: '.swiper-button-next', 1759 prevEl: '.swiper-button-prev', 1760 }, 1761 pagination: { 1762 el: '.swiper-pagination', 1763 clickable: true, 1764 } 1765 } 1766 } else{ // if ony 1 slide in desktop then loop set to false 1767 options = { 1768 loop: false, 1769 autoplay: { 1770 delay: '5000', 1771 disableOnInteraction: false, 1772 }, 1773 navigation: { 1774 nextEl: '.swiper-button-next', 1775 prevEl: '.swiper-button-prev', 1776 }, 1777 pagination: { 1778 el: '.swiper-pagination', 1779 clickable: true, 1780 } 1781 } 1782 } 1783 1784 if(mcount > 1){ // if greater than 1 slide in mobile then loop true 1785 moptions = { 1786 loop: false, 1787 autoplay: { 1788 delay: '5000', 1789 disableOnInteraction: false, 1790 }, 1791 navigation: { 1792 nextEl: '.swiper-button-next', 1793 prevEl: '.swiper-button-prev', 1794 }, 1795 pagination: { 1796 el: '.swiper-pagination', 1797 clickable: true, 1798 } 1799 } 1800 } else{ // if ony 1 slide in mobile then loop set to false 1801 moptions = { 1802 loop: false, 1803 autoplay: { 1804 delay: '5000', 1805 disableOnInteraction: false, 1806 }, 1807 navigation: { 1808 nextEl: '.swiper-button-next', 1809 prevEl: '.swiper-button-prev', 1810 }, 1811 pagination: { 1812 el: '.swiper-pagination', 1813 clickable: true, 1814 } 1815 } 1816 } 1817 1818 1819 homeslider('.desktop_slider', timer,count,options); 1820 homeslider('.mobile_slider', timer,count,moptions); 1821 1822 function homeslider(type, timer) { 1823 if ($(type + " .swiper-slide").length > 1) 1824 { 1825 var swiper = new Swiper(type, options); 1826 if ($(type + " .swiper-slide").length === 1 || $(type + " .swiper-slide").length === 3) { 1827 if (swiper.params.loop) { 1828 $('.swiper-wrapper').addClass("disabled"); 1829 $('.swiper-pagination').addClass("disabled"); 1830 swiper.autoplay.stop(); 1831 } 1832 } 1833 } 1834 } 1835 }); 1836 1837 1838 function hotlink(id) { 1839 var href = $(id).attr("href"); 1840 var target = $(id).attr("target"); 1841 if (href.charAt(0) == "#") { 1842 if (href.length > 1) { 1843 $(id).removeAttr("href"); 1844 $(id).addClass("hotlink-btn"); 1845 if (href == '#home-service-section' && ($(id).hasClass("hotlink-btn"))) { 1846 1847 $('html, body').animate({scrollTop: $('#home-service-section').offset().top - 250}, '200'); 1848 $(id).attr("href", href); 1849 } 1850 if (href == '#home-brand-section' && ($(id).hasClass("hotlink-btn"))) { 1851 $('html, body').animate({scrollTop: $('#home-brand-section').offset().top - 250}, '200'); 1852 $(id).attr("href", href); 1853 } 1854 if (href == '#home-event-section' && ($(id).hasClass("hotlink-btn"))) { 1855 $('html, body').animate({scrollTop: $('#home-event-section').offset().top - 250}, '200'); 1856 $(id).attr("href", href); 1857 } 1858 if (href == '#home-promotion-section' && ($(id).hasClass("hotlink-btn"))) { 1859 $('html, body').animate({scrollTop: $('#home-promotion-section').offset().top - 250}, '200'); 1860 $(id).attr("href", href); 1861 } 1862 if (href == '#home-review-section' && ($(id).hasClass("hotlink-btn"))) { 1863 $('html, body').animate({scrollTop: $('#home-review-section').offset().top - 250}, '200'); 1864 $(id).attr("href", href); 1865 } 1866 } 1867 } else if (href.charAt(0) != '#' && target == "_blank") { 1868 window.open($(id).attr('href')); 1869 } else if (href.charAt(0) != '#' && target == "undefined") { 1870 window.location.href = $(id).attr('href'); 1871 } 1872 1873 } 1874 </script>
1874 1875 <style> 1876 .home-cta-btn-1{ 1877 color: #016600 !important; 1878 } 1879 .home-cta-btn-1:hover{ 1880 color: #fff !important; 1881 } 1882 .home-cta-btn-2{ 1883 color: #016600 !important; 1884 } 1885 .home-cta-btn-2:hover{ 1886 color: #fff !important; 1887 } 1888 .home-cta-btn-1:hover{ 1889 background-color: !important; 1890 } 1891 .home-cta-btn-2:hover{ 1892 background-color: !important; 1893 } 1894 .sub-page-cta-btn-1{ 1895 color: #016600 !important; 1896 } 1897 .sub-page-cta-btn-1:hover{ 1898 color: #fff !important; 1899 } 1900 .sub-page-cta-btn-2{ 1901 color: #016600 !important; 1902 } 1903 .sub-page-cta-btn-2:hover{ 1904 color: #fff !important; 1905 } 1906 .sub-page-cta-btn-1:hover{ 1907 background-color: !important; 1908 } 1909 .sub-page-cta-btn-2:hover{ 1910 background-color: !important; 1911 } 1912 1913 #page-title{ 1914 background: url('https://ik.imagekit.io/0ofixtqpt/2931626/tr:n-topbar_bg/website-header-image-no-logo.png') !important; 1915 } 1916 .home-overlay{ 1917 background: rgba(0,0,0,0.2) !important; 1918 } 1919 @media (max-width:1024px) and (min-width: 320px) { 1920 .swiper-button-next, .swiper-button-prev, .swiper-pagination { 1921 display: block; 1922 } 1923 1924 #slider-cover { 1925 background: none !important; 1926 } 1927 #page-title { 1928 background: url('https://ik.imagekit.io/0ofixtqpt/2911637/website-header-images-mobile-2.png') !important; 1929 } 1930 } 1931 </style> 1932 1933 1934 <section id="content"> 1935 1936 <div class="content-wrap"> 1937 1938 <div class="container clearfix"> 1939 1940 <div class="col_half"> 1941 <div class="fancy-title text-center"> 1942 <h3>Weâd love to hear from you</h3> 1943 </div> 1944 1945 <div class="contact-widget"> 1946 1947 <div class="contact-form-result"></div> 1948 1949 <form data-toggle="validator" role="form" id="contact_form"> 1950 <input type="hidden" name="_token" value="RmBzPrFxFQmgEVtPEtSsRYczYKEnbatr62QbsdBH" autocomplete="off"> 1951 <input type="hidden" name="loc_id" value="283"> 1952 <div class="form-group col-sm-4"> 1953 <label for="inputName" class="control-label">Name 1954 <small>*</small> 1955 </label> 1956 <input type="text" class="empty-filed form-control" id="inputName" name="name" 1957 placeholder="Name" data-error="Name is required" required autofocus> 1958 <div class="help-block with-errors"></div> 1959 </div> 1960 <div class="form-group col-sm-4"> 1961 <label for="inputEmail" class="control-label">Email</label> 1962 <input type="email" class="empty-filed form-control" id="inputEmail" name="email" 1963 placeholder="Email"> 1964 1965 </div> 1966 <div class="form-group col-sm-4"> 1967 <label for="inputPhone" class="control-label">Phone 1968 <small>*</small> 1969 </label> 1970 <div class="row"> 1971 <div class="form-group phone col-xs-12"> 1972 <input type="text" class="empty-filed form-control bfh-phone input-mask" 1973 name="phone" id="phone_number" data-country="US" 1974 data-format="(ddd) ddd-dddd" data-error="Phone is required" required> 1975 <div class="help-block with-errors"></div> 1976 </div> 1977 </div> 1978 </div> 1979 <div class="form-group col-xs-12"> 1980 <label for="inputMessage" class="control-label">Message 1981 <small>*</small> 1982 </label> <span id="messageCountdown" class="msg-countdown"></span> 1983 <textarea class="empty-filed form-control" id="message" name="message" rows=6" cols="30" 1984 aria-required="true" data-error="Message is required" maxlength="500" required></textarea> 1985 <div class="help-block with-errors"></div> 1986 </div> 1987 <div class="form-group col-xs-12"> 1988 <div class="g-recaptcha" data-sitekey="6LfcAGMpAAAAAL68qM6-xqbJeELRxV4MPPD71y27" data-action="CONTACT"></div> 1989 <button type="submit" id="contact-btn" 1990 class="contact-btn contact-submit-btn button-rounded button button-large btn-primary"> 1991 Submit 1992 </button> 1993 <img src="https://ik.imagekit.io/0ofixtqpt/143715/preloader-dark.gif" id="contact-loader" class="loader-contact"/> 1994 </div> 1995 </form> 1996 1997 <div class="success-message-alert text-center hidden alert alert-success alert-dismissible col-xs-12"> 1998 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
1999 <span aria-hidden="true">Ã</span> 2000 </button> 2001 </div> 2002 <div class="error-message-alert text-center hidden alert alert-danger alert-dismissible col-xs-12"> 2003 <button type="button" class="close" data-dismiss="alert" aria-label="Close"> 2004 <span aria-hidden="true">Ã</span> 2005 </button> 2006 </div> 2007 </div> 2008 </div> 2009 2010 <!-- Google Map 2011 ============================================= --> 2012 <div id="show-map" class="col_half col_last"> 2013 <div id="contact_map" class="place contact-us-map"> 2014 <div class="place contact-us-map"> 2015 <a href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh" target="_blank"> 2016 <iframe 2017 class="get-direction-btn" 2018 width="450" 2019 height="250" 2020 frameborder="0" 2021 style="border:0;" 2022 referrerpolicy="no-referrer-when-downgrade" 2023 src="https://www.google.com/maps/embed/v1/search?key=AIzaSyDLf1mqLyRZJJR1-kQfHuPm5gcLyvgMdc8&q=Odyssey+Pets%2C+14999+Preston+Rd%2C+Ste.+400A%2C+Dallas%2C+TX%2C+75254%2C+US"> 2024 </iframe> 2025 </a> 2026 </div> 2027 </div> 2028 </div><!-- Google Map End --> 2029 2030 <div class="clear"></div> 2031 2032 2033 <!-- Contact Info 2034 ============================================= --> 2035 2036 <div class="row clear-bottommargin"> 2037 <div class="col-md-3 col-sm-6 bottommargin clearfix contact-us-block ct-address" style=display:block;> 2038 <div class="feature-box fbox-center fbox-bg fbox-plain contact-feature-box"> 2039 <div class="fbox-icon"> 2040 <a target="_blank" href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh"><i 2041 class="contact_icon fas fa-map-marker-alt get-direction-btn"></i></a> 2042 </div> 2043 <h3>Visit Us<a target="_blank" 2044 href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh"><span 2045 class="subtitle small-text contact-us-block-text get-direction-btn">14999 Preston Rd, Dallas, TX 75254</span></a> 2046 </h3> 2047 </div> 2048 </div> 2049 2050 <div class="col-md-3 col-sm-6 bottommargin clearfix contact-us-block ct-number" style=display:block;> 2051 <div class="feature-box fbox-center fbox-bg fbox-plain contact-feature-box"> 2052 <div class="fbox-icon"> 2053 <a href="tel:(972) 407-1166"><i 2054 class="contact_icon fas fa-phone call-us-btn" style="transform: rotate(90deg) !important;"></i></a> 2055 </div> 2056 <h3>Speak to Us<a 2057 href="tel:(972) 407-1166"><span 2058 class="call-us-btn subtitle small-text contact-us-block-text">(972) 407-1166</span></a> 2059 </h3> 2060 </div> 2061 </div> 2062 2063 <div class="col-md-3 col-sm-6 bottommargin clearfix contact-us-block ct-fax" style=display:none;> 2064 <div class="feature-box fbox-center fbox-bg fbox-plain contact-feature-box"> 2065 <div class="fbox-icon"> 2066 <a href="tel:"><i 2067 class="contact_icon fas fa-fax call-us-btn"></i></a> 2068 </div> 2069 <h3>Fax Us<a href="tel:"><span 2070 class="call-us-btn subtitle small-text contact-us-block-text"></span></a> 2071 </h3> 2072 </div> 2073 </div> 2074 2075 <div class="col-md-3 col-sm-6 bottommargin clearfix contact-us-block ct-email" style=display:block;> 2076 <div class="feature-box fbox-center fbox-bg fbox-plain contact-feature-box"> 2077 <div class="fbox-icon"> 2078 <a href="mailto:[email protected]"><i 2079 class="contact_icon fas fa-envelope"></i></a> 2080 </div> 2081 <h3>Email Us<a href="mailto:[email protected]"><span 2082 class="subtitle small-text contact-us-block-text">[email protected]</span></a> 2083 </h3> 2084 </div> 2085 </div> 2086 <div class="col-md-3 col-sm-6 bottommargin clearfix contact-us-block ct-sm" style=display:block;> 2087 <div class="feature-box fbox-center fbox-bg fbox-plain contact-feature-box"> 2088 <div class="fbox-icon"> 2089 <a target="_blank" href="https://www.facebook.com/odysseypets
2089/"> 2090 <i class="contact_icon fab fa-facebook"></i> 2091 </a> 2092 </div> 2093 <h3>Like us on Facebook 2094 <a target="_blank" href="https://www.facebook.com/odysseypets
2094/"> 2095 <span class="subtitle small-text contact-us-block-text">@odysseypets</span> 2096 </a> 2097 </h3> 2098 </div> 2099 </div> 2100 </div><!-- Contact Info End --> 2101 </div> 2102 <!--review part--> 2103 <style> 2104 .review-widget-testimonial{ 2105 background-color: #ffffff !important; 2106 overflow-y: auto !important; 2107 } 2108 .review-text-color { 2109 color: #333333 !important; 2110 } 2111 2112 .lazy-background.review-background-parallax { 2113 background: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg'); 2114 } 2115 2116 .lazy-background.review-background-static { 2117 background: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg'); 2118 } 2119 2120 .review-title-color { 2121 color: #ffffff !important; 2122 } 2123 2124 .review-description-color { 2125 color: #ffffff !important; 2126 } 2127 2128 .review-overlay { 2129 background: rgba(0,0,0,0.6) !important; 2130 } 2131 2132 #home-review-section #recent-reviews .heading-block { 2133 margin-bottom: 10px; 2134 } 2135 2136 @media (min-device-width: 768px) and (orientation: portrait) { 2137 .lazy-background.review-background-parallax { 2138 background-image: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg') !important; 2139 background-attachment: scroll !important; 2140 } 2141 2142 .lazy-background.review-background-static { 2143 background-image: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg') !important; 2144 } 2145 } 2146 2147 @media (max-device-width: 1024px) and (orientation: landscape) { 2148 .lazy-background.review-background-parallax { 2149 background-image: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg') !important; 2150 background-attachment: scroll !important; 2151 } 2152 2153 .lazy-background.review-background-static { 2154 background-image: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg') !important; 2155 } 2156 } 2157 2158 @media (max-width: 765px) and (min-width: 320px) { 2159 .lazy-background.review-background-parallax { 2160 background: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg'); 2161 background-attachment: scroll !important; 2162 } 2163 2164 .lazy-background.review-background-static { 2165 background: url('https://ik.imagekit.io/0ofixtqpt/488602/Dallas-TX.jpg'); 2166 } 2167 } 2168 </style> 2169 <div id="home-review-section" 2170 class="review-section review-background-parallax lazy-background" 2171 style="margin: 0px !important;"> 2172 <div class="review-overlay"></div> 2173 <div id="recent-reviews" class="container topmargin clear-bottommargin clearfix"> 2174 <div class="row clearfix"> 2175 <div class="heading-block center "> 2176 <h2 class="review-title-color"> 2177 WHAT Dallas CUSTOMERS ARE SAYING</h2>
2178 <span class="divcenter small-text review-description-color"> 2179 <p>We love all of our happy customers from local areas near us including <a href="https://www.google.com/maps/dir/Dallas,+TX/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@32.8617153,-96.9014668,12z/data=!3m1!4b1!4m14!4m13!1m5!1m1!1s0x864c19f77b45974b:0xb9ec9ba4f647678f!2m2!1d-96.7969879!2d32.7766642!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Dallas" target="blank">Dallas</a>, <a href="google.com/maps/dir/Addison/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@32.9561472,-96.8246912,15z/data=!4m14!4m13!1m5!1m1!1s0x864c214a666c3839:0xe6594ab6c798f986!2m2!1d-96.8291685!2d32.96179!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Addison" target="blank">Addison</a>, <a href="https://www.google.com/maps/dir/Richardson/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@32.9485128,-96.7984271,13z/data=!4m14!4m13!1m5!1m1!1s0x864c1ee979bea767:0x2cdb29c046270495!2m2!1d-96.7298519!2d32.9483335!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Richardson" target="blank">Richardson</a>, <a href="https://www.google.com/maps/dir/Plano/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@32.9485128,-96.9034838,11z/data=!4m14!4m13!1m5!1m1!1s0x864c21da13c59513:0x62aa036489cd602b!2m2!1d-96.6988856!2d33.0198431!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Plano" target="blank">Plano</a>, <a href="https://www.google.com/maps/dir/Carrollton/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@32.9485128,-96.9034838,11z/data=!4m14!4m13!1m5!1m1!1s0x864c212bbbdd571f:0x9c1efd49b3841d5d!2m2!1d-96.8899636!2d32.9756415!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Carrollton" target="blank">Carrollton</a>, <a href="https://www.google.com/maps/dir/Garland/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@32.8577139,-96.9247698,11z/data=!4m14!4m13!1m5!1m1!1s0x864c03c1db5fc275:0x71fbdcb38623cd0!2m2!1d-96.6388833!2d32.912624!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Garland" target="blank">Garland</a>, <a href="https://www.google.com/maps/dir/Frisco,+TX/Odyssey+Pets,+14999+Preston+Rd+%23400a,+Dallas,+TX+75254/@33.0518195,-96.953042,11z/data=!4m14!4m13!1m5!1m1!1s0x864c3c1abc09943d:0xcad371b035c8fea2!2m2!1d-96.8236116!2d33.1506744!1m5!1m1!1s0x864c23d0d0136c61:0x48d61510e37a3e25!2m2!1d-96.8059163!2d32.9530094!3e0" title="Get Directions From Frisco" target="blank">Frisco</a>, and more! </p> </span> 2180 </div> 2181 <div class="center small-text review-description-color" style="font-weight: bold; clear: both; margin: 2px 0 15px;">388 trusted five-star reviews</div> 2182 <div id="oc-testi" 2183 class="owl-carousel testimonials-carousel carousel-widget bottommargin " 2184 data-margin="20" data-items-xs="1" data-items-sm="2" data-items-lg="3"> 2185 <div class="oc-item "> 2186 <div class="testimonial bottommargin-sm review-widget-testimonial"> 2187 <div class="col-xs-4"> 2188 <div class="testi-image"> 2189 <a> 2190 <img class="lazy" 2191 src="https://ik.imagekit.io/0ofixtqpt/143729/tr:n-reviewer_image_thumb/default-placeholder.png" 2192 data-src="https://ik.imagekit.io/0ofixtqpt/5286778/tr:n-reviewer_image_thumb/ACg8ocKwy2ahBoJOqXdKUyOvDhiUTiHnbDraameFyMm7KwkveAtK2Q=s120-c-rp-mo-br100" 2193 onError="this.onerror=null;this.src='https://ik.imagekit.io/0ofixtqpt/147554/tr:n-reviewer_image_thumb/avatar.jpg';"> 2194 </a> 2195 <div class="testi-meta review-text-color nobold"> 2196 T Wilson 2197 </div> 2198 <div class="center rv_time review-text-color"> 2199 2026-09-04 2200 </div> 2201 </div> 2202 </div> 2203 <div class="col-xs-8"> 2204 <div class="testi-content"> 2205 <i class="fab fa-google social"></i> 2206 <sp
2206an class="stars s-5.0"> 2207 <span class='new-star' style="width: 100%;"></span> 2208 </span> 2209 <div class="r_more"> 2210 <p class="small-text-color review-text-color review-fulltext-0 hidden-teamtext">Amazing little pet store. Iâm one of those psycho pet owners and I worked in Vet hospitals when I was younger so have higher standards and would trust my dog baby with thier staff. Iâm mostly in there for DFWAPC meetings as I donât live close so mostly get the pleasure of harrassing Miles and enjoying their fish and plant department but every staff member has a true love for animals is knowledgable, helpful, courteous and not afraid to say idk and ask another employee (one of my biggest pet peeves when people fake knowledge)</p> 2211 <p class="review-lesstext-0 review-text-color small-text-color"></p> 2212 <p class="review-moretext-0 review-text-color small-text-color"></p> 2213 </div> 2214 </div> 2215 </div> 2216 </div> 2217 </div> 2218 <div class="oc-item "> 2219 <div class="testimonial bottommargin-sm review-widget-testimonial"> 2220 <div class="col-xs-4"> 2221 <div class="testi-image"> 2222 <a> 2223 <img class="lazy" 2224 src="https://ik.imagekit.io/0ofixtqpt/143729/tr:n-reviewer_image_thumb/default-placeholder.png" 2225 data-src="https://ik.imagekit.io/0ofixtqpt/5271643/tr:n-reviewer_image_thumb/ALV-UjXaIu6HiBgwsQA5bCtsXlWozJBl17XBXvIcVXIq5Xjd6UuMejVVrg=s120-c-rp-mo-ba12-br100" 2226 onError="this.onerror=null;this.src='https://ik.imagekit.io/0ofixtqpt/147554/tr:n-reviewer_image_thumb/avatar.jpg';"> 2227 </a> 2228 <div class="testi-meta review-text-color nobold"> 2229 Michael Said 2230 </div> 2231 <div class="center rv_time review-text-color"> 2232 2026-08-28 2233 </div> 2234 </div> 2235 </div> 2236 <div class="col-xs-8"> 2237 <div class="testi-content"> 2238 <i class="fab fa-google social"></i> 2239 <sp
2239an class="stars s-5.0"> 2240 <span class='new-star' style="width: 100%;"></span> 2241 </span> 2242 <div class="r_more"> 2243 <p class="small-text-color review-text-color review-fulltext-1 hidden-teamtext">Great products. Great service. Very knowledgeable employees! This place is especially great for fish, if you're interested in that. I highly recommend Odyssey pets!</p> 2244 <p class="review-lesstext-1 review-text-color small-text-color"></p> 2245 <p class="review-moretext-1 review-text-color small-text-color"></p> 2246 </div> 2247 </div> 2248 </div> 2249 </div> 2250 </div> 2251 <div class="oc-item "> 2252 <div class="testimonial bottommargin-sm review-widget-testimonial"> 2253 <div class="col-xs-4"> 2254 <div class="testi-image"> 2255 <a> 2256 <img class="lazy" 2257 src="https://ik.imagekit.io/0ofixtqpt/143729/tr:n-reviewer_image_thumb/default-placeholder.png" 2258 data-src="https://ik.imagekit.io/0ofixtqpt/5210113/tr:n-reviewer_image_thumb/ALV-UjWpaLx_SutWTkk-FNvbMW8S19jbBDoGokOsxlWm2AgM81Xq5DXAxw=s120-c-rp-mo-br100" 2259 onError="this.onerror=null;this.src='https://ik.imagekit.io/0ofixtqpt/147554/tr:n-reviewer_image_thumb/avatar.jpg';"> 2260 </a> 2261 <div class="testi-meta review-text-color nobold"> 2262 Shel Mulry 2263 </div> 2264 <div class="center rv_time review-text-color"> 2265 2026-08-01 2266 </div> 2267 </div> 2268 </div> 2269 <div class="col-xs-8"> 2270 <div class="testi-content"> 2271 <i class="fab fa-google social"></i> 2272 <span class="stars s-5.0"> 2273 <span class='new-star' style="width: 100%;"></span> 2274 </span> 2275 <div class="r_more"> 2276 <p class="small-text-color review-text-color review-fulltext-2 hidden-teamtext">The best by far! People who are knowledgeable, approachable. They carry only transparent, healthy brands of dog and cat food. Great aquarium resource as well. Support a locally owned small business! Odyssey Pets is the best!</p> 2277 <p class="review-lesstext-2 review-text-color small-text-color"></p> 2278 <p class="review-moretext-2 review-text-color small-text-color"></p> 2279 </div> 2280 </div> 2281 </div> 2282 </div> 2283 </div> 2284 <div class="oc-item "> 2285 <div class="testimonial bottommargin-sm review-widget-testimonial"> 2286 <div class="col-xs-4"> 2287 <div class="testi-image"> 2288 <a> 2289 <img class="lazy" 2290 src="https://ik.imagekit.io/0ofixtqpt/143729/tr:n-reviewer_image_thumb/default-placeholder.png" 2291 data-src="https://ik.imagekit.io/0ofixtqpt/5211493/tr:n-reviewer_image_thumb/ACg8ocKn0K7T4bwpFOA6DhZqAumUPrxBfjRshyKggU5COyyojF8XNw=s120-c-rp-mo-br100" 2292 onError="this.onerror=null;this.src='https://ik.imagekit.io/0ofixtqpt/147554/tr:n-reviewer_image_thumb/avatar.jpg';"> 2293 </a> 2294 <div class="testi-meta review-text-color nobold"> 2295 Bob âUSMCVet1985â 2296 </div> 2297 <div class="center rv_time review-text-color"> 2298 2026-08-01 2299 </div> 2300 </div> 2301 </div> 2302 <div class="col-xs-8"> 2303 <div class="testi-content"> 2304 <i class="fab fa-google social"></i> 2305 <sp
2305an class="stars s-5.0"> 2306 <span class='new-star' style="width: 100%;"></span> 2307 </span> 2308 <div class="r_more"> 2309 <p class="small-text-color review-text-color review-fulltext-3 hidden-teamtext">Been going there for 15 years because the groomers are kind and gentle to my 2 boys Ollie and Dickens. Great staff and clean boarding area. Highly recommend.</p> 2310 <p class="review-lesstext-3 review-text-color small-text-color"></p> 2311 <p class="review-moretext-3 review-text-color small-text-color"></p> 2312 </div> 2313 </div> 2314 </div> 2315 </div> 2316 </div> 2317 <div class="oc-item "> 2318 <div class="testimonial bottommargin-sm review-widget-testimonial"> 2319 <div class="col-xs-4"> 2320 <div class="testi-image"> 2321 <a> 2322 <img class="lazy" 2323 src="https://ik.imagekit.io/0ofixtqpt/143729/tr:n-reviewer_image_thumb/default-placeholder.png" 2324 data-src="https://ik.imagekit.io/0ofixtqpt/5188183/tr:n-reviewer_image_thumb/ALV-UjVhlm2GQW13y2OmLNqaEgFKUKODfMH2ZPeVganganGua8qIYs8=s120-c-rp-mo-ba12-br100" 2325 onError="this.onerror=null;this.src='https://ik.imagekit.io/0ofixtqpt/147554/tr:n-reviewer_image_thumb/avatar.jpg';"> 2326 </a> 2327 <div class="testi-meta review-text-color nobold"> 2328 MamaKimbo75 2329 </div> 2330 <div class="center rv_time review-text-color"> 2331 2026-07-24 2332 </div> 2333 </div> 2334 </div> 2335 <div class="col-xs-8"> 2336 <div class="testi-content"> 2337 <i class="fab fa-google social"></i> 2338 <span class="stars s-5.0"> 2339 <span class='new-star' style="width: 100%;"></span> 2340 </span> 2341 <div class="r_more"> 2342 <p class="small-text-color review-text-color review-fulltext-4 hidden-teamtext">I purchased my Rummy Nose Tetras from Odyssey Pets. I stopped in, they only had a couple. Gentlemen gave me Miles card and told me to email him. Miles w
2342as great! He ordered me 20 Rummy Nose Tetras and I picked them up a week later. Video attached is after having them for 2 weeks. They are all healthy, happy, schooling and a beautiful addition to my 75 gallon. Thank you Miles and everyone at Odyssey Pets. This was my 1st purchase, but definitely not my last! â¤ï¸</p> 2343 <p class="review-lesstext-4 review-text-color small-text-color"></p> 2344 <p class="review-moretext-4 review-text-color small-text-color"></p> 2345 </div> 2346 </div> 2347 </div> 2348 </div> 2349 </div> 2350 </div> 2351 2352 <div class="col-xs-12 center bottommargin"> 2353 <a href="/reviews/" 2354 class="button button-large contact-btn button-rounded noleftmargin">View 2355 All 2356 Reviews </a> 2357 <a target="_blank" 2358 href="https://app.nextpaw.com/write-review/7MVdXlwfKtHJGidH" 2359 class="button button-large contact-btn button-rounded noleftmargin">Write 2360 A Review </a> 2361 </div> 2362 </div> 2363 </div> 2364 </div> 2365
2365<script> 2366 function toggleReviewContent(i) { 2367 $(".review-moretext-" + i).toggle(); 2368 $(".review-lesstext-" + i).toggle(); 2369 } 2370 $(document).ready(function () { 2371 var r_showChar = 100; 2372 var r_ellipsestext = "..."; 2373 var r_moretext = "Show More"; 2374 var r_lesstext = "Show Less"; 2375 var i = 0; 2376 $('.r_more').each(function () { 2377 var r_content = $('.review-fulltext-' + i).html(); 2378 var r_readless = '<a class="morelink' + i + ' review-a" onclick="toggleReviewContent(' + i + ')"> ' + r_lesstext + '</a>'; 2379 $('p.review-moretext-' + i).html('<i class="fas fa-quote-left fa-2x"></i>'+r_content + r_readless).hide(); 2380 if (r_content.length > r_showChar) { 2381 var r_c = r_content.substr(0, r_showChar); 2382 var r_readmore = '<a class="morelink' + i + ' review-a" onclick="toggleReviewContent(' + i + ')"> ' + r_moretext + '</a>'; 2383 $('p.review-lesstext-' + i).html('<i class="fas fa-quote-left fa-2x"></i>'+r_c + r_ellipsestext + ' ' + r_readmore); 2384 }else{ 2385 $('p.review-moretext-' + i).html('<i class="fas fa-quote-left fa-2x"></i>'+r_content).show(); 2386 } 2387 i++; 2388 }); 2389 }); 2390</script>
2390 2391<!--review part end---> 2392 </div> 2393 2394 <a href="/contact-us" 2395 class="button button-full cta-widget-btn center"> 2396 <div class="container clearfix"> 2397 Come visit our pet supply store in Dallas, TX specializing in quality food, treats, and supplies for cats, dogs, fish, and small pets. 2398 </div> 2399 </a> 2400 <style> 2401 .contact-us-map iframe{ 2402 min-height: 400px!important; 2403 max-height: 100% !important; 2404 min-width: 100%; 2405 max-width: 100%; 2406 } 2407 @media(max-width: 750px) and (min-width:320px){ 2408 .contact-us-map iframe{ 2409 max-width: 100% !important; 2410 max-height: 100% !important; 2411 2412 } 2413 .postcontent, .postcontent.bothsidebar, .sidebar, .col_full, .col_half, .col_one_third, .col_two_third, .col_three_fourth, .col_one_fourth, .col_one_fifth, .col_two_fifth, .col_three_fifth, .col_four_fifth, .col_one_sixth, .col_five_sixth{ 2414 margin-bottom: 200px !important; 2415 } 2416 } 2417 </style> 2418 </section> 2419
2419<script> 2420 $(document).ready(function () { 2421 $('#messageCountdown').hide(); 2422 $('#message').on("keyup change", function () { 2423 const max = 500; 2424 const len = $(this).val().length; 2425 const char = max - len; 2426 if(len>150){ 2427 $('#messageCountdown').show().text(char + ' characters remaining'); 2428 }else{ 2429 $('#messageCountdown').hide(); 2430 } 2431 if(len===max){ 2432 $('#messageCountdown').addClass('text-danger'); 2433 }else{ 2434 $('#messageCountdown').removeClass('text-danger'); 2435 } 2436 }); 2437 }); 2438 </script>
2438 2439</div> 2440<!-- Footer 2441============================================= --> 2442 2443<footer id="footer" class="dark"> 2444 <div class="container"> 2445 <!-- Footer Widgets 2446 ============================================= --> 2447 <div class="footer-widgets-wrap clearfix"> 2448 <div class="col-xs-12 col-sm-6 col-md-4"> 2449 <div class="widget clearfix"> 2450 <div class="clearfix"> 2451 <div class="col-md-12"> 2452 <address class="nobottommargin"> 2453 <a target="_blank" 2454 href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh"> 2455 <h4 class="get-direction-btn" 2456 id="map-title">Odyssey Pets</h4></a> 2457 14999 Preston Rd, Ste. 400A 2458 <br/> Dallas, TX  75254<br> 2459 <a class="call-us-btn" 2460 href="tel:(972) 407-1166"><abbr 2461 title="Phone Number"></abbr>(972) 407-1166 2462 </a><br> 2463 <a href="mailto:[email protected]" class="footer_email"><abbr 2464 title="Email"></abbr>[email protected]</a> 2465 <div class="shopservices"> 2466 In-Store Pickup, Curbside Pickup, Local Delivery, Same Day Delivery, No Contact Delivery Available 2467 </div> 2468 </address> 2469 <!-- Google Map 2470 ============================================= --> 2471 <div id="map-conatiner" style=""> 2472 <div id="show-map" class="col_half col_last"> 2473 <div id="contact_map" class="place contact-us-map"> 2474 <div class="place footer-map"><a href="https://www.google.com/maps/place/search?q=Odyssey+Pets+14999+Preston+Rd+400a+Dallas+TX+75254&place_id=Ei0xNDk5OSBQcmVzdG9uIFJkICM0MDBhLCBEYWxsYXMsIFRYIDc1MjMwLCBVU0EiIBoeChYKFAoSCdEwMgOdIEyGEaZscOUlIzzlEgQ0MDBh" target="_blank"> 2475 <iframe 2476 class="get-direction-btn" 2477 frameborder="0" 2478 style="border:0;" 2479 referrerpolicy="no-referrer-when-downgrade" 2480 src="https://www.google.com/maps/embed/v1/search?key=AIzaSyDLf1mqLyRZJJR1-kQfHuPm5gcLyvgMdc8&q=Odyssey+Pets%2C+14999+Preston+Rd%2C+Ste.+400A%2C+Dallas%2C+TX%2C+75254%2C+US"> 2481 </iframe> 2482 </a> 2483 </div> 2484 </div> 2485 </div> 2486 </div> 2487 <!-- Google Map End --> 2488 </div> 2489 </div> 2490 </div> 2491 </div> 2492 <div class="col-xs-12 col-sm-6 col-md-8"> 2493 <div class="col-xs-12 col-md-5"> 2494 <div class="widget widget_links clearfix"> 2495 <div class="bottommargin-sm"> 2496 <h4 class="nomargin footer-hours-title">Business Hours</h4> 2497 </div> 2498 2499 <table class="table" style="text-align: center;"> 2500 <tbody> 2501 2502 <tr> 2503 <td style="font-size: 14px; vertical-align: middle;">Mon</td> 2504 <td style="font-size: 14px;"> 2505 7:30 AM - 7:00 PM 2506 </td> 2507 </tr> 2508 <tr> 2509 <td style="font-size: 14px; vertical-align: middle;">Tue</td> 2510 <td style="font-size: 14px;"> 2511 7:30 AM - 7:00 PM 2512 </td> 2513 </tr> 2514 <tr> 2515 <td style="font-size: 14px; vertical-align: middle;">Wed</td> 2516 <td style="font-size: 14px;"> 2517 7:30 AM - 7:00 PM 2518 </td> 2519 </tr> 2520 <tr> 2521 <td style="font-size: 14px; vertical-align: middle;">Thu</td> 2522 <td style="font-size: 14px;"> 2523 7:30 AM - 7:00 PM 2524 </td> 2525 </tr> 2526 <tr> 2527 <td style="font-size: 14px; vertical-align: middle;">Fri</td> 2528 <td style="font-size: 14px;"> 2529 7:30 AM - 7:00 PM 2530 </td> 2531 </tr> 2532 <tr> 2533 <td style="font-size: 14px; vertical-align: middle;">Sat</td> 2534 <td style="font-size: 14px;"> 2535 7:30 AM - 7:00 PM 2536 </td> 2537 </tr> 2538 <tr> 2539 <td style="font-size: 14px; vertical-align: middle;">Sun</td> 2540 <td style="font-size: 14px;"> 2541 11:00 AM - 6:00 PM 2542 </td> 2543 </tr> 2544 2545 </tbody> 2546 </table> 2547 2548 </div> 2549 </div> 2550 <div class="col-xs-12 col-md-3"> 2551 <div class="widget widget_links clearfix"> 2552 <h4>Sitemap</h4> 2553 <ul> 2554 <li> 2555 <a href="https://shop.odysseypets.com/" target=_blank> 2556 <div class="footer-sitemap-text">Shop</div> 2557 </a> 2558 </li> 2559 <li> 2560 <a href="/pet-food-supply/" > 2561 <div class="footer-sitemap-text">Cat &
2561 Dog</div> 2562 </a> 2563 </li> 2564 <li> 2565 <a href="/fish-food-supply/" > 2566 <div class="footer-sitemap-text">Fish</div> 2567 </a> 2568 </li> 2569 <li> 2570 <a href="/small-pet-food-supply/" > 2571 <div class="footer-sitemap-text">Small Pets</div> 2572 </a> 2573 </li> 2574 <li> 2575 <a href="/services/" > 2576 <div class="footer-sitemap-text">Services</div> 2577 </a> 2578 </li> 2579 <li> 2580 <a href="/events/" > 2581 <div class="footer-sitemap-text">Events & Deals</div> 2582 </a> 2583 </li> 2584 <li> 2585 <a href="/loyalty-program/" > 2586 <div class="footer-sitemap-text">Loyalty Program</div> 2587 </a> 2588 </li> 2589 <li> 2590 <a href="/about-us/" > 2591 <div class="footer-sitemap-text">About</div> 2592 </a> 2593 </li> 2594 <li> 2595 <a href="/blog/" > 2596 <div class="footer-sitemap-text">Blog</div> 2597 </a> 2598 </li> 2599 <li> 2600 <a href="/sitemap/"> 2601 <div class="footer-sitemap-text">Sitemap</div> 2602 </a> 2603 </li> 2604 </ul> 2605 </div> 2606 </div> 2607 <div class="col-xs-12 col-md-4"> 2608 <div class="widget quick-contact-widget clearfix"> 2609 <h4>Subscribe</h4> 2610 <div class="input-group divcenter"> 2611 Get exclusive email offers, promotions, and updates from our business. 2612 </div> 2613 <div class="quick-contact-form-result"></div> 2614 <form class="quick-contact-form nobottommargin subscription-form" 2615 name="subscription-form" role="form" enctype="multipart/form-data" method="POST" 2616 action="https://odysseypets.com/subscription/save" onsubmit="return false" novalidate> 2617 <input type="hidden" id="locationId" name="location_id" value="283"> 2618 <input type="hidden" id="clientId" name="client_id" value="222"> 2619 <input type="hidden" name="result" value="footer-result"> 2620 <div class="form-process"></div> 2621 <div class="input-group divcenter">
2622 <span class="input-group-addon"><i class="fas fa-user"></i></span> 2623 <input type="text" maxlength="25" class="required form-control input-block-level subscription_name" id="name" 2624 name="name" value="" placeholder="Name" required/> 2625 </div> 2626 <div class="input-group divcenter"> 2627 <span class="input-group-addon"><i class="fas fa-envelope"></i></span> 2628 <input type="email" class="required form-control email input-block-level" id="email" 2629 name="email" value="" placeholder="Email Address" required/> 2630 </div> 2631 <div class="g-recaptcha" style="transform: scale(0.5);-webkit-transform: scale(0.7);transform-origin: 0 0;-webkit-transform-origin: 0 0;" data-sitekey="6LfcAGMpAAAAAL68qM6-xqbJeELRxV4MPPD71y27" data-action="NEWSLETTER"></div> 2632 <button name="submit" type="submit" id="submit-button" tabindex="5" value="Submit" 2633 class="button button-large button-rounded btn-success subscribe-btn noleftmargin"> 2634 Sign Up 2635 </button> 2636 <span class="loader"><img src='https://ik.imagekit.io/0ofixtqpt/143716/preloader-dark.gif'/>Sending ..</span> 2637 <div class="result"></div> 2638 </form> 2639 </div> 2640 </div> 2641 </div> 2642 </div><!-- .footer-widgets-wrap end --> 2643 </div> 2644<!-- Copyrights 2645============================================= --> 2646 <div id="copyrights"> 2647 <div class="container clearfix"> 2648 <input type="hidden" id="location" name="location" value=""> 2649 <div class="col-xs-12 col-md-8 footer-copyright"> 2650 Copyrights © 2026 | <a href="/privacy-policy">Privacy Policy</a> 2651 | <a href="/terms-of-services">Terms of Service</a> 2652 | Powered by 2653 <a target="_blank" href="https://www.nextpaw.com"> 2654 <img class="powered-by" src="https://ik.imagekit.io/0ofixtqpt/143712/nextpaw.png" width="70px"> 2655 </a> 2656 <br> 2657 </div> 2658 <div class="col-xs-12 col-md-4 tright"> 2659 <div class="fright clearfix"> 2660 2661 2662 2663 <a href="https://maps.app.goo.gl/z1HrjJj2QTakFJPw7" target="_blank" 2664 class="social-icon si-small si-borderless si-gplus"> 2665 <i class="fab fa-google-plus footer-custom-icon"></i> 2666 </a> 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 <a href="https://www.youtube.com/@OdysseyPets" target="_blank" 2678 class="social-icon si-small si-borderless si-youtube"> 2679 <i class="fab fa-youtube"></i> 2680 </a> 2681 2682 2683 2684 2685 2686 <a href="https://www.facebook.com/odysseypets
2686/" target="_blank" 2687 class="social-icon si-small si-borderless si-facebook"> 2688 <i class="fab fa-facebook"></i> 2689 </a> 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 <a href="https://www.instagram.com/odysseypets
2709/" target="_blank" 2710 class="social-icon si-small si-borderless si-instagram"> 2711 <i class="fab fa-instagram"></i> 2712 </a> 2713 2714 2715 2716 2717 2718 2719 2720 2721 </div> 2722 <div class="clear"></div> 2723 </div> 2724 </div><!-- #copyrights end --> 2725 </div> 2726 <!--Modal: modalCookie--> 2727 <div class="modal fade top" id="modalCookie1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" 2728 aria-hidden="true" data-backdrop="false"> 2729 <div class="modal-dialog modal-frame modal-top modal-notify modal-info modal_cookie" role="document"> 2730 <!--Content--> 2731 <div class="modal-content"> 2732 <!--Body--> 2733 <div class="modal-body cookie_bg"> 2734 <div class="container d-flex justify-content-center align-items-center"> 2735 <div class="col-md-6"> 2736 <p class="text-center loc_msg"></p> 2737 </div> 2738 <div class="col-md-6 col-xs-12"> 2739 <a type="button" class="btn btn-lg btn-primary cookie_btn" data-value="NO" 2740 data-dismiss="modal">No, Thanks</a> 2741 <a type="button" id="redirect_location" data-slug="" href="" data-value="YES" 2742 class="btn cookie_btn btn-lg btn-outline-primary waves-effect">Change Location</a> 2743 </div> 2744 </div> 2745 </div> 2746 </div> 2747 <!--/.Content--> 2748 </div> 2749 </div> 2750 <style> 2751 .footer-map iframe{ 2752 min-width: 300px !important; 2753 max-width: 300px !important; 2754 min-height: 300px !important; 2755 max-height: 300px !important; 2756 } 2757 @media(max-width: 720px) and (min-width:320px){ 2758 .footer-map iframe{ 2759 2760 max-width: 100% !important; 2761 2762 max-height: 100% !important; 2763 } 2764 } 2765 2766 /*CSS for tiny MCE editor custom class*/ 2767 .mce-figcaption-custom { 2768 font-size: 14px; 2769 margin-top: 5px; 2770 font-style: italic; 2771 text-align: center; 2772 } 2773 2774 .mce-figure-custom { 2775 margin-bottom: 10px; 2776 } 2777 2778 .mce-figure-align-left-custom { 2779 float: left; 2780 margin-right: 25px; 2781 } 2782 2783 .mce-figure-align-right-custom { 2784 float: right; 2785 margin-left: 25px; 2786 } 2787 2788 .mce-figure-align-center-custom { 2789 text-align: center; 2790 } 2791 2792 .mce-image-align-left-custom { 2793 margin-right: 25px; 2794 margin-bottom: 10px; 2795 } 2796 2797 .mce-image-align-right-custom { 2798 margin-left: 25px; 2799 margin-bottom: 10px; 2800 } 2801 2802 .mce-image-align-center-custom { 2803 margin-bottom: 10px; 2804 } 2805 2806 .first-widget .divider.divider-border.divider-center { 2807 display: none !important; 2808 } 2809 </style> 2810</footer>
2811<script> 2812 // Get all anchor tags (<a>) on the page 2813const links = document.querySelectorAll('a'); 2814 2815// Loop through each link 2816links.forEach(link => { 2817 // Get the href attribute of the link 2818 let href = link.getAttribute('href'); 2819 2820 // Check if the href exists 2821 if (href) { 2822 // If the href is a relative path (starts with '/'), do nothing 2823 if (href.startsWith('/')) { 2824 return; 2825 } 2826 2827 // Check if the href starts with 'http://' or contains 'www' (indicating a non-secure URL) 2828 if (href.startsWith('http://') || href.startsWith('www')) { 2829 link.setAttribute('href', 'https://' + href.replace(/^http:\/\//, '').replace('www.', '')); 2830 } 2831 } 2832}); 2833 2834 2835</script>
2835<!-- Return to Top --> 2836 <div id="gotoTop" class="fas fa-arrow-up"></div> 2837<!-- External JavaScripts 2838============================================= --> 2839<!-- Footer Scripts 2840============================================= --> 2841 2842 2843 2844
2845<script defer type="text/javascript"> 2846 var headquarterName = "dallas"; 2847 var currentLocName = "dallas"; 2848 var pageType = "other"; 2849</script>
2849 2850
2851<script defer type="text/javascript"> 2852 function animateCSS(element, animationName, callback) { 2853 const node = document.querySelector(element) 2854 node.classList.add('animated', animationName) 2855 2856 function handleAnimationEnd() { 2857 node.classList.remove('animated', animationName) 2858 node.removeEventListener('animationend', handleAnimationEnd) 2859 2860 if (typeof callback === 'function') callback() 2861 } 2862 2863 node.addEventListener('animationend', handleAnimationEnd) 2864 } 2865 2866 let closePopup = localStorage.getItem('closeBox'); 2867 // lazy load video for apple browser 2868 $(document).ready(function () { 2869 // add frame to video tag for ios devices 2870 const videos = document.querySelectorAll('video'); 2871 if(videos.length > 0) { 2872 for (video of videos) { // use var video if "strict mode" is enabled 2873 Object.entries(video.children).forEach(([key, value]) => { 2874 var newSrc = value.src + '#t=0.1'; 2875 video.children[key].src = newSrc; 2876 video.setAttribute('playsinline','true'); 2877 video.load(); 2878 }); 2879 } 2880 } 2881 2882 setInterval(function(){ 2883 if($('iframe#ec-credit-card-form').length > 0) { 2884 var url = $('iframe#ec-credit-card-form').attr('src'); 2885 var dec = decodeURIComponent(url); 2886 function getParameterByName(name, url) { 2887 name = name.replace(/[\[\]]/g, '\\$&'); 2888 var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), 2889 results = regex.exec(url); 2890 if (!results) return null; 2891 if (!results[2]) return ''; 2892 return decodeURIComponent(results[2].replace(/\+/g, ' ')); 2893 } 2894 var color = getParameterByName('color-foreground',dec); 2895 if(color.toString() !== 'rgb(0, 0, 0)') { 2896 var newColor = 'rgb(0, 0, 0)'; 2897 var newUrl = dec.replace(/(color-foreground=).*?(&)/, '$1' + newColor + '$2'); 2898 var newUrl = newUrl.replace(/(color-price=).*?(&)/, '$1' + newColor + '$2'); 2899 var urlEnc = encodeURI(newUrl); 2900 $('iframe#ec-credit-card-form').attr('src', urlEnc); 2901 } 2902 } 2903 }, 1000); 2904 if($('.floating_chat').length < 1){ 2905 $('body').addClass('fbRight'); 2906 } 2907 if($('.fb-customerchat').length < 1){ 2908 $('body').addClass('noFb'); 2909 } 2910 2911 if(closePopup == 'hide'){ 2912 $(".bubbleText").hide(); 2913 } 2914 2915 $(document).on('click', function (event) { 2916 if (!$(event.target).closest('.msg_box').length) { 2917 if(!$(event.target).closest('.floating_chat').length){ 2918 if($('.floating_chat').hasClass('closeBox') == true){ 2919 $('.sendBtn').show(); 2920 $('.supportTxt').show(); 2921 $('#formData').show(); 2922 $('.msg_box').removeClass('enter').css({'z-index': 0,'right':'-500px'}); 2923 $('.floating_chat').find('>i').removeClass('fa-times').addClass('fa-weixin'); 2924 $('.floating_chat').addClass('openBox'); 2925 $('.msg_box').removeClass('enter'); 2926 animateCSS('.msg_box', 'fadeOutRight'); 2927 $('.floating_chat').removeClass('closeBox'); 2928 $('.bubbleText').show(); 2929 } 2930 } 2931 } 2932 }); 2933 setTimeout(function() { 2934 $('.floating_chat').addClass('enter'); 2935 }, 1000); 2936 $('.openBox').click(function () { 2937 if($(this).hasClass('closeBox')){ 2938 $('.sendBtn').show(); 2939 $('.supportTxt').show(); 2940 $('.msg_box').removeClass('enter').css({'z-index': 0,'right':'-500px'}); 2941 $(this).find('>i').removeClass('fa-times').addClass('fa-weixin'); 2942 $(this).addClass('openBox'); 2943 $('.msg_box').removeClass('enter'); 2944 animateCSS('.msg_box', 'fadeOutRight'); 2945 $(this).removeClass('closeBox'); 2946 $('.bubbleText').show(); 2947 } else { 2948 $('#formData').show(); 2949 $('.msg_box').addClass('enter').css({'z-index':999,'right' : 0}); 2950 $(this).find('>i').removeClass('fa-weixin').addClass('fa-times'); 2951 $(this).addClass('closeBox'); 2952 animateCSS('.msg_box', 'fadeInRight'); 2953 $(this).removeClass('openBox'); 2954 $('form input[type="text"].bfh-phone, form input[type="tel"].bfh-phone, span.bfh-phone').each(function () { 2955 var $phone = $(this); 2956 $phone.bfhphone($phone.data()); 2957 }); 2958 $('.bubbleText').hide(); 2959 $('.SubmittedMessage__SendStatus').hide(); 2960 $('.ConfirmationMessage').hide(); 2961 $('.SubmittedMessage').removeClass('SubmittedMessage--visible'); 2962 } 2963 }); 2964 2965 $('#boxclose').click(function () { 2966 $(".bubbleText").fadeOut("normal", function() { 2967 $(this).remove(); 2968 localStorage.setItem('closeBox', 'hide'); 2969 }); 2970 }); 2971 2972 $(document).on('touchstart','li.sub-menu', function () { 2973 if(navigator.userAgent.match(/(iPhone|iPod|iPad)/i)){ 2974 var count = $(this).attr('click-count'); 2975 if(count !== undefined){ 2976 location.href = $(this).children('a').attr('href'); 2977 } else{ 2978 if($(this).hasClass('click-class')){ 2979 $(this).attr('click-count',undefined); 2980 }else{ 2981 $(this).attr('click-count',1); 2982 } 2983 } 2984 } 2985 });
2986 // remove submenu css if empty 2987 $('li.sub-menu').each(function () { 2988 if($(this).children('ul').children().length === 0){ 2989 $(this).children('ul').remove(); 2990 } 2991 }); 2992 2993 $("video.fullscreen-bg__video source").each(function () { 2994 var sourceFile = $(this).attr("data-src"); 2995 $(this).attr("src", sourceFile); 2996 var video = this.parentElement; 2997 }); 2998 2999 $('.mySlides').each(function () { 3000 var imgUrl = $(this).children().attr('src'); 3001 $(this).children().css('opacity', 0); 3002 $(this).css('background', 'url("' + imgUrl + '")'); 3003 }); 3004 3005 var myIndex = 0; 3006 if ($(".page-slider-container")[0]) { 3007 carousel(); 3008 } 3009 3010 function carousel() { 3011 var i; 3012 var x = document.getElementsByClassName("mySlides"); 3013 for (i = 0; i < x.length; i++) { 3014 x[i].style.display = "none"; 3015 } 3016 myIndex++; 3017 if (myIndex > x.length) { 3018 myIndex = 1 3019 } 3020 x[myIndex - 1].style.display = "block"; 3021 setTimeout(carousel, 2000); // Change image every 2 seconds 3022 } 3023 3024 if ($(".review-background-static").length) { 3025 $('.location-divider').hide(); 3026 } 3027 if ($(".review-background-parallax").length) { 3028 $('.location-divider').hide(); 3029 } 3030 3031 $('.social_share').each(function () { 3032 $(this).attr('target', '_blank'); 3033 }); 3034 3035 var font_family = $('body').css('font-family'); 3036 var r_font_family = font_family.replace(/\"/g, ""); 3037 if (r_font_family == "PT Sans Narrow") { 3038 $("#top-social .ts-text").attr('style', 'top: 0px !important' + ';' + 'left:0px !important;' + 'margin-left:-7px !important'); 3039 } else if (r_font_family == "Roboto") { 3040 $("#top-social .si-gplus .ts-text").attr('style', 'top: 0px !important;' + 'left:0px !important;' + 'margin-left:-7px !important'); 3041 $("#top-social .si-youtube .ts-text").attr('style', 'top: 0px !important' + ';' + 'left:0px !important;' + 'margin-left:-7px !important'); 3042 $("#top-social .si-linkedin .ts-text").attr('style', 'top: 0px !important' + ';' + 'left:0px !important;' + 'margin-left:-7px !important');
3043 $("#top-social .si-yelp .ts-text").attr('style', 'top: 0px !important' + ';' + 'left:0px !important;' + 'margin-left:-7px !important'); 3044 } 3045 }); 3046 3047 3048 3049 document.addEventListener("DOMContentLoaded", function () { 3050 var lazyBackgrounds = [].slice.call(document.querySelectorAll(".lazy-background")); 3051 3052 if ("IntersectionObserver" in window) { 3053 let lazyBackgroundObserver = new IntersectionObserver(function (entries, observer) { 3054 entries.forEach(function (entry) { 3055 if (entry.isIntersecting) { 3056 entry.target.classList.add("visible"); 3057 lazyBackgroundObserver.unobserve(entry.target); 3058 } 3059 }); 3060 }); 3061 3062 lazyBackgrounds.forEach(function (lazyBackground) { 3063 lazyBackgroundObserver.observe(lazyBackground); 3064 }); 3065 } 3066 }); 3067 3068 //Add Icon for Submenu in Mobile 3069 $('.sub-menu-trigger').click(function () { 3070 if($(this).children('i').hasClass('rotate-icon')){ 3071 $(this).children('i').removeClass('rotate-icon'); 3072 $(this).parent().children('ul').css('display','none'); 3073 }else{ 3074 $(this).children('i').addClass('rotate-icon'); 3075 $(this).parent().children('ul').css('display','block'); 3076 } 3077 }); 3078 3079 //Link to page for Submenu in Mobile 3080 if( /Android|webOS|BlackBerry|iPhone|iPod|iPad/i.test(navigator.userAgent) ) { 3081 var touchmoved; 3082 $('.sub-menu').on('touchend', '.mobile-a', function () { 3083 if(touchmoved != true){ 3084 location.href =$(this).attr('href'); 3085 } 3086 }).on('touchmove', function(e){ 3087 touchmoved = true; 3088 }).on('touchstart', function(){ 3089 touchmoved = false; 3090 }); 3091 3092 $('.sub-menu').on('touchend').on('touchmove', function(e){ 3093 touchmoved = true; 3094 }).on('touchstart', function(){ 3095 touchmoved = false; 3096 }); 3097 } 3098 3099 3100</script>
3100 3101<!-- Ecwid Seo friendly url js code -->
3102<script> 3103 window.ec = window.ec || {}; 3104 window.ec.config = window.ec.config || {}; 3105 window.ec.config.storefrontUrls = window.ec.config.storefrontUrls || {}; 3106 window.ec.config.storefrontUrls.cleanUrls = true; 3107 if(currentLocName == headquarterName){ 3108 window.ec.config.baseUrl = '/shop/'; 3109 var ecwid_ProductBrowserURL = "/shop/"; 3110 } else{ 3111 var ecwid_ProductBrowserURL = currentLocName+'/shop/'; 3112 window.ec.config.baseUrl = currentLocName+'/shop/'; 3113 } 3114 3115</script>
3115 3116 <!-- Prefetch + Preconnect --> 3117 <link rel="dns-prefetch" href="//www.googletagmanager.com"> 3118 <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin> 3119
3119<script> 3120 function loadGTM(id) { 3121 (function(w,d,s,l,i){ 3122 w[l]=w[l]||[]; 3123 w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); 3124 var f=d.getElementsByTagName(s)[0], 3125 j=d.createElement(s), dl=l!='dataLayer'?'&l='+l:''; 3126 j.async=true; j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; 3127 f.parentNode.insertBefore(j,f); 3128 })(window,document,'script','dataLayer', id); 3129 } 3130 3131 function loadGtag() { 3132 var url = window.location.host; 3133 if (url.indexOf('.jenkins') === -1 && url.indexOf('.test') === -1) { 3134 var gtagScript = document.createElement('script'); 3135 gtagScript.src = "https://www.googletagmanager.com/gtag/js?id=G-9N2957J5VN"; 3136 gtagScript.async = true; 3137 document.head.appendChild(gtagScript); 3138 3139 gtagScript.onload = function () { 3140
vendor: 177 bytes, lines 3140-3143
3140window.dataLayer = window.dataLayer || []; 3141 function gtag(){ dataLayer.push(arguments); } 3142 gtag('js', new Date()); 3143 gtag('config', '
3143G-9N2957J5VN
vendor: 16 bytes, lines 3143-3144
3143'); 3144
3144}; 3145 } 3146 } 3147 3148 function loadTrackingScripts() { 3149 loadGTM('GTM-NMGWHXT'); 3150 loadGtag(); 3151 } 3152 3153 if ('requestIdleCallback' in window) { 3154 requestIdleCallback(loadTrackingScripts, { timeout: 2000 }); 3155 } else { 3156 setTimeout(loadTrackingScripts, 2000); 3157 } 3158 </script>
3158 3159 3160 <!-- NOSCRIPT for GTM (should NOT be deferred) -->
vendor: 89 bytes, lines 3160-3162
3160 3161 <noscript> 3162 <iframe src="https://www.googletagmanager.com/ns.html?id=
3162GTM-NMGWHXT
vendor: 106 bytes, lines 3162-3165
3162" height="0" width="0" style="display:none;visibility:hidden"></iframe> 3163 </noscript> 3164 3165
3166<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-848b5ec7e91ef88ba3a","applicationID":"1416771764","transactionName":"ZwNVYEEHCEVTVEZdDl5JdldHDwlYHXZCRD14EkNEbyUJWEZFXVgNVRREaHAJCEJAWF5YBEImWlVaCA==","queueTime":0,"applicationTime":242,"atts":"S0RWFgkdG0s=","errorBeacon":"bam.nr-data.net","agent":""}</script>
3166</body> 3167</html>
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.