PageSourceSearch

https://www.jptreeservice.net/

html jptreeservice.net collected 2026-10-09 01:15:10 UTC 150,943 bytes, 2,858 lines download raw bytes

1<!DOCTYPE html>
2<html class="no-js" lang="en">
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1">
6    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"NRJS-243b9dcdd9befd954e4","applicationID":"1030851535","transactionName":"JVddFRZYX1tSFhdEUAFdQE4XX1xA","queueTime":0,"applicationTime":123,"agent":""}</script>
vendor: 1 bytes, line 7
7
8<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:"1134260961",accountID:"3672290",trustKey:"3672290",xpid:"VwAAU1RaCBABVFJSDwQGU1cE",licenseKey:"NRJS-243b9dcdd9befd954e4",applicationID:"1030851535",browserID:"1134260961"};;/*! For license information please see nr-loader-spa-1.323.0.min.js.LICENSE.txt */
9(()=>{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};
9e.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;
9const 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);
9if(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$:()=>
9o,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])}
9(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}
9;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)=>
9{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
9ine_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()=>
9{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)=>
9null==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
9dTimingMethod(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
9imeToRegister: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})})}
9return 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"
9!==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);
9if(!(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)}
9);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)})});
9class 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
9h(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>
9
10
11
12    	<title>JP Tree Service | Affordable Tree Removal &amp; Trimming in Upper Darby, PA</title>
13	<meta name="description" content="JP Tree Service proudly serves Upper Darby, PA with professional, affordable tree removal, trimming, and maintenance. Fully insured and trusted by the local community. Call (610) 507-2386 today.">
14	<meta name="keywords" content="tree service Upper Darby PA, JP Tree Service, tree removal Upper Darby, affordable tree trimming, local tree care, professional tree maintenance, stump removal Upper Darby">
15
16
17	<meta property="og:description" content="JP Tree Service proudly serves Upper Darby, PA with professional, affordable tree removal, trimming, and maintenance. Fully insured and trusted by the local community. Call (610) 507-2386 today." /><meta property="og:title" content="JP Tree Service | Affordable Tree Removal &amp; Trimming in Upper Darby, PA" /><meta property="og:type" content="website" /><meta property="og:url" content="https://www.jptreeservice.net/" /><meta property="og:site_name" content="JP Tree Service" />
18
19    <link rel="preconnect" href="https://fonts.googleapis.com">
20    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
21    <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Bevan&family=Roboto+Slab:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
22
23    <link rel="stylesheet" href="/assets/site-a8f902e6c8187fd4cc60b5b6c7beccc59f839132351bebadc28ad843ce04e7b7.css" />
24    <link rel="stylesheet" href="/system/sites/104206/custom.css?t=1746392718" />
25
26    <!--[if (gte IE 10)|!(IE)]><!-->
27    <!--<![endif]-->
28
29    
30    <link rel="icon" type="image/x-icon" href="https://d14tal8bchn59o.cloudfront.net/f4hXNiokyyIY_nEz-JQa-LUn6Phwqg0VsTbeNbPA65I/fn:911cafe2-a3f4-4c41-8573-f400b708336a/plain/s3://multisiteadmin-production/ofxiazxc5qof1ce8zhgpt5a6wma7" />
31    
31<script src="/assets/modernizr-5b260783c5e23a62a2a4a31304b93643fce78a1291ee747b60a91c23f01c0f3b.js"></script>
31
32    
32<script src="/assets/respond.js/dest/respond.src-cecde35ca5b295ed289797f910fc62fe80029112755562799acab5928f1e8d47.js"></script>
32
33    <meta name="csrf-param" content="authenticity_token" />
34<meta name="csrf-token" content="91ZRMv4yMFpVcPQSFD5DiojHKqLMS8yosleVzVP5qK6jiQR33tTK09NwpnOgr1uhH34__XSxFLsfftv_5TZNZw" />
35    <link rel="canonical" href="https://www.jptreeservice.net/">
36
37
38    <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 68 bytes, lines 38-39
38
39    <script async src="https://www.googletagmanager.com/gtag/js?id=
39G-183KX7JDET
vendor: 16 bytes, lines 39-40
39"></script>
40    
40<script>
41      
vendor: 146 bytes, lines 41-45
41window.dataLayer = window.dataLayer || [];
42      function gtag(){dataLayer.push(arguments);}
43      gtag('js', new Date());
44
45      gtag('config', '
45G-183KX7JDET
vendor: 9 bytes, lines 45-47
45');
46
47    
47</script>
47
48
49    <meta name="google-site-verification" content="Jgw1q09aL_xufd641lE7V9SI-rvgyIffTHKL639kcj4" />
50<section id="jp-header-2026">
51  <style>
52    header.primary-header{display:none !important;}
53
54    #jp-header-2026,
55    #jp-header-2026 *{box-sizing:border-box;}
56
57    #jp-header-2026{
58      --green:#1f7a2e;
59      --green2:#116125;
60      --ink:#0c1b10;
61      --text:#0f172a;
62      --card:#f6faf6;
63      --line:rgba(2,6,23,.12);
64      font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
65    }
66
67    #jp-header-2026 .jp-header{
68      position:sticky;
69      top:0;
70      z-index:99999;
71      background:rgba(255,255,255,.94);
72      backdrop-filter:blur(10px);
73      border-bottom:1px solid var(--line);
74    }
75
76    #jp-header-2026 .jp-wrap{
77      max-width:1200px;
78      margin:0 auto;
79      padding:12px 14px;
80      display:flex;
81      align-items:center;
82      justify-content:space-between;
83      gap:14px;
84    }
85
86    #jp-header-2026 .jp-brand{
87      display:flex;
88      align-items:center;
89      gap:12px;
90      min-width:220px;
91      text-decoration:none;
92    }
93
94    #jp-header-2026 .jp-brand img{
95      width:64px;
96      height:64px;
97      object-fit:contain;
98    }
99
100    #jp-header-2026 .jp-btxt{
101      display:flex;
102      flex-direction:column;
103      line-height:1.05;
104    }
105
106    #jp-header-2026 .jp-name{
107      font-weight:1000;
108      letter-spacing:.3px;
109      color:var(--ink);
110      font-size:18px;
111    }
112
113    #jp-header-2026 .jp-sub{
114      font-weight:800;
115      color:rgba(17,24,39,.70);
116      font-size:12px;
117      margin-top:3px;
118    }
119
120    #jp-header-2026 .jp-nav{
121      display:flex;
122      gap:10px;
123      align-items:center;
124      flex-wrap:wrap;
125      justify-content:center;
126    }
127
128    #jp-header-2026 .jp-nav a{
129      text-decoration:none;
130      color:var(--text);
131      font-weight:900;
132      padding:10px 12px;
133      border-radius:12px;
134      border:1px solid transparent;
135      transition:all .18s ease;
136    }
137
138    #jp-header-2026 .jp-nav a:hover{
139      background:var(--card);
140      border-color:rgba(17,24,39,.10);
141    }
142
143    #jp-header-2026 .jp-actions{
144      display:flex;
145      align-items:center;
146      gap:10px;
147      justify-content:flex-end;
148      min-width:260px;
149    }
150
151    #jp-header-2026 .jp-btn{
152      appearance:none;
153      border:none;
154      cursor:pointer;
155      font-weight:1000;
156      border-radius:12px;
157      padding:10px 14px;
158      text-decoration:none;
159      display:inline-flex;
160      align-items:center;
161      gap:10px;
162      transition:transform .08s ease, box-shadow .15s ease;
163      white-space:nowrap;
164    }
165
166    #jp-header-2026 .jp-btn:active{transform:translateY(1px);}
167
168    #jp-header-2026 .jp-btnCoupon{
169      background:linear-gradient(180deg,#ffca28,#ffb300);
170      color:#121212;
171      box-shadow:0 14px 26px rgba(255,179,0,.24);
172    }
173
174    #jp-header-2026 .jp-btnCall{
175      background:linear-gradient(180deg,var(--green),var(--green2));
176      color:#fff;
177      box-shadow:0 14px 26px rgba(17,97,37,.22);
178    }
179
180    #jp-header-2026 .jp-burger{
181      display:none;
182      width:46px;
183      height:46px;
184      border-radius:12px;
185      border:1px solid rgba(2,6,23,.14);
186      background:#fff;
187      cursor:pointer;
188      font-size:18px;
189      font-weight:900;
190      line-height:1;
191    }
192
193    #jp-header-2026 .jp-drawer{
194      display:none;
195      padding:10px 14px 16px;
196      border-top:1px solid rgba(2,6,23,.10);
197      background:#fff;
198    }
199
200    #jp-header-2026 .jp-drawer a{
201      display:block;
202      text-decoration:none;
203      color:var(--text);
204      font-weight:950;
205      padding:12px 10px;
206      border-radius:12px;
207      border:1px solid rgba(2,6,23,.10);
208      background:#f8fafc;
209      margin-top:10px;
210    }
211
212    #jp-header-2026 .jp-drawer .jp-drawerBtns{
213      display:flex;
214      gap:10px;
215      flex-wrap:wrap;
216      margin-top:12px;
217    }
218
219    #jp-header-2026 .jp-drawer .jp-drawerBtns a,
220    #jp-header-2026 .jp-drawer .jp-drawerBtns button{
221      flex:1 1 180px;
222      justify-content:center;
223    }
224
225    .jp-floating-call-button{
226      position:fixed;
227      bottom:25px;
228      right:20px;
229      background:#28a745;
230      color:#fff;
231      padding:12px 20px;
232      font-size:16px;
233      font-family:'Segoe UI',sans-serif;
234      border-radius:30px;
235      box-shadow:0 0 12px rgba(0,0,0,.4);
236      text-decoration:none;
237      z-index:9999;
238      transition:transform .3s ease, background .3s ease;
239      animation:jpGlowPulse 2s infinite;
240    }
241
242    .jp-floating-call-button:hover{
243      background:#218838;
244      transform:scale(1.05);
245    }
246
247    @keyframes jpGlowPulse{
248      0%{box-shadow:0 0 12px rgba(40,167,69,.7);}
249      50%{box-shadow:0 0 18px rgba(40,167,69,1);}
250      100%{box-shadow:0 0 12px rgba(40,167,69,.7);}
251    }
252
253    #jp-header-2026 #jpCouponModal{
254      position:fixed;
255      inset:0;
256      z-index:999999;
257      display:none;
258    }
259
260    #jp-header-2026 #jpCouponModal.jp-show{display:block;}
261
262    #jp-header-2026 .jpCoupon-backdrop{
263      position:absolute;
264      inset:0;
265      background:rgba(0,0,0,.62);
266      backdrop-filter:blur(8px);
267    }
268
269    #jp-header-2026 .jpCoupon-card{
270      position:relative;
271      width:min(920px,calc(100% - 24px));
272      max-height:calc(100vh - 24px);
273      margin:12px auto;
274      background:linear-gradient(180deg,#ffffff 0%,#f7faf7 100%);
275      border-radius:18px;
276      box-shadow:0 30px 90px rgba(0,0,0,.35);
277      overflow:hidden;
278      display:flex;
279      flex-direction:column;
280      animation:jpPop .22s ease-out;
281    }
282
283    @keyframes jpPop{
284      from{transform:translateY(10px) scale(.985);opacity:0;}
285      to{transform:translateY(0) scale(1);opacity:1;}
286    }
287
288    #jp-header-2026 .jpCoupon-x{
289      position:absolute;
290      top:10px;
291      right:10px;
292      width:42px;
293      height:42px;
294      border-radius:12px;
295      border:1px solid rgba(0,0,0,.08);
296      background:rgba(255,255,255,.85);
297      cursor:pointer;
298      font-size:18px;
299      display:grid;
300      place-items:center;
301    }
302
303    #jp-header-2026 .jpCoupon-head{
304      padding:18px 18px 12px;
305      text-align:center;
306    }
307
308    #jp-header-2026 .jpCoupon-badge{
309      display:inline-block;
310      padding:7px 12px;
311      border-radius:999px;
312      background:rgba(46,125,50,.10);
313      color:#1b5e20;
314      font-weight:900;
315      letter-spacing:.6px;
316      font-size:12px;
317      border:1px solid rgba(46,125,50,.18);
318      margin-bottom:10px;
319    }
320
321    #jp-header-2026 .jpCoupon-head h3{
322      margin:0;
323      font-size:clamp(20px,2.4vw,30px);
324      color:#0f2a14;
325    }
326
327    #jp-header-2026 .jpCoupon-head p{
328      margin:8px 0 0;
329      color:rgba(15,42,20,.75);
330      font-size:14px;
331    }
332
333    #jp-header-2026 .jpCoupon-imgWrap{
334      padding:0 16px 14px;
335      display:flex;
336      justify-content:center;
337    }
338
339    #jp-header-2026 .jpCoupon-imgWrap img{
340      width:100%;
341      max-width:820px;
342      height:auto;
343      border-radius:14px;
344      border:1px solid rgba(0,0,0,.08);
345      box-shadow:0 14px 40px rgba(0,0,0,.10);
346      background:#fff;
347    }
348
349    #jp-header-2026 .jpCoupon-actions{
350      padding:0 18px 14px;
351      display:flex;
352      gap:12px;
353      justify-content:center;
354      flex-wrap:wrap;
355    }
356
357    #jp-header-2026 .jpCoupon-btn{
358      appearance:none;
359      border:none;
360      cursor:pointer;
361      text-decoration:none;
362      font-weight:1000;
363      border-radius:12px;
364      padding:12px 16px;
365      min-width:190px;
366      text-align:center;
367      transition:transform .08s ease, box-shadow .15s ease;
368    }
369
370    #jp-header-2026 .jpCoupon-btnPrimary{
371      background:linear-gradient(180deg,#ffca28 0%,#ffb300 100%);
372      color:#121212;
373      box-shadow:0 14px 26px rgba(255,179,0,.25);
374    }
375
376    #jp-header-2026 .jpCoupon-btnGhost{
377      background:#ffffff;
378      border:1px solid rgba(0,0,0,.14);
379      color:#1f2937;
380    }
381
382    #jp-header-2026 .jpCoupon-foot{
383      padding:12px 18px 18px;
384      border-top:1px solid rgba(0,0,0,.08);
385      display:flex;
386      justify-content:space-between;
387      align-items:center;
388      gap:12px;
389      flex-wrap:wrap;
390    }
391
392    #jp-header-2026 .jpCoupon-tip{
393      color:rgba(15,42,20,.80);
394      font-size:13px;
395    }
396
397    #jp-header-2026 .jpCoupon-call{
398      display:inline-block;
399      padding:10px 14px;
400      border-radius:999px;
401      background:rgba(46,125,50,.10);
402      border:1px solid rgba(46,125,50,.20);
403      color:#1b5e20;
404      font-weight:1000;
405      text-decoration:none;
406      white-space:nowrap;
407    }
408
409    @media (max-width:980px){
410      #jp-header-2026 .jp-nav{display:none;}
411      #jp-header-2026 .jp-actions{min-width:auto;}
412      #jp-header-2026 .jp-burger{display:inline-grid;place-items:center;}
413      #jp-header-2026 .jp-btnCall{display:none;}
414    }
415
416    @media (max-width:520px){
417      #jp-header-2026 .jp-brand img{width:56px;height:56px;}
418      #jp-header-2026 .jp-name{font-size:16px;}
419      #jp-header-2026 .jp-sub{font-size:11px;}
420      .jp-floating-call-button{
421        font-size:14px;
422        padding:10px 16px;
423        bottom:20px;
424        right:15px;
425      }
426      #jp-header-2026 .jpCoupon-btn{min-width:100%;}
427      #jp-header-2026 .jpCoupon-foot{justify-content:center;text-align:center;}
428    }
429  </style>
430
431  <div class="jp-header">
432    <div class="jp-wrap">
433      <a class="jp-brand" href="/">
434        <img src="https://besuretocook.org/wp-content/uploads/2026/08/911cafe2-a3f4-4c41-8573-f400b708336a_original-3.webp" alt="JP Tree Service logo">
435        <span class="jp-btxt">
436          <span class="jp-name">JP Tree Service</span>
437          <span class="jp-sub">Affordable • Fast • Fully Insured</span>
438        </span>
439      </a>
440
441      <nav class="jp-nav" aria-label="JP Tree Service Navigation">
442        <a href="/">Home</a>
443        <a href="/about-us">About</a>
444        <a href="/our-services">Services</a>
445        <a href="/gallery">Gallery</a>
446        <a href="/reviews">Reviews</a>
447        <a href="/contact-us">Contact</a>
448      </nav>
449
450      <div class="jp-actions">
451        <button class="jp-btn jp-btnCoupon" type="button" id="jpOpenCoupon">Book &amp; Save</button>
452        <a class="jp-btn jp-btnCall" href="tel:+16105072386">📞 Call Now</a>
453        <button class="jp-burger" type="button" id="jpBurger" aria-label="Open Menu">☰</button>
454      </div>
455    </div>
456
457    <div class="jp-drawer" id="jpDrawer">
458      <a href="/">Home</a>
459      <a href="/about-us">About</a>
460      <a href="/our-services">Services</a>
461      <a href="/gallery">Gallery</a>
462      <a href="/reviews">Reviews</a>
463      <a href="/contact-us">Contact</a>
464
465      <div class="jp-drawerBtns">
466        <button class="jp-btn jp-btnCoupon" type="button" id="jpOpenCoupon2">💰 Tree Service Deals</button>
467        <a class="jp-btn jp-btnCall" href="tel:+16105072386">📞 Call Now</a>
468      </div>
469    </div>
470  </div>
471
472  <a href="tel:6105072386" class="jp-floating-call-button" title="Call JP Tree Service">📞 Call Us</a>
473
474  <div id="jpCouponModal" aria-hidden="true">
475    <div class="jpCoupon-backdrop" data-close="1"></div>
476
477    <div class="jpCoupon-card" role="dialog" aria-modal="true" aria-label="JP Tree Service Coupon">
478      <button class="jpCoupon-x" type="button" aria-label="Close coupon" data-close="1">✕</button>
479
480      <div class="jpCoupon-head">
481        <div class="jpCoupon-badge">LIMITED TIME COUPONS</div>
482        <h3>Download or Screenshot This Coupon</h3>
483        <p>Show this coupon when you book. Phone users can screenshot it.</p>
484      </div>
485
486      <div class="jpCoupon-imgWrap">
487        <img
488          id="jpCouponImg"
489          src="https://d14tal8bchn59o.cloudfront.net/2AJS3y4kcaC4oXxMH2WcAgbtLePnOTkjXcTj4BdbP2Q/w:1920/plain/https://02f0a56ef46d93f03c90-22ac5f107621879d5667e0d7ed595bdb.ssl.cf2.rackcdn.com/sites/104206/photos/23785287/ChatGPT_Image_Mar_5__2026__03_19_30_PM_original.png"
490          alt="JP Tree Service coupon"
491        >
492      </div>
493
494      <div class="jpCoupon-actions">
495        <a
496          class="jpCoupon-btn jpCoupon-btnPrimary"
497          href="https://d14tal8bchn59o.cloudfront.net/2AJS3y4kcaC4oXxMH2WcAgbtLePnOTkjXcTj4BdbP2Q/w:1920/plain/https://02f0a56ef46d93f03c90-22ac5f107621879d5667e0d7ed595bdb.ssl.cf2.rackcdn.com/sites/104206/photos/23785287/ChatGPT_Image_Mar_5__2026__03_19_30_PM_original.png"
498          download="JP-Tree-Service-Coupon.png"
499          target="_blank"
500          rel="noopener"
501        >Download Coupon</a>
502
503        <button class="jpCoupon-btn jpCoupon-btnGhost" type="button" data-close="1">Not Now</button>
504      </div>
505
506      <div class="jpCoupon-foot">
507        <div class="jpCoupon-tip"><strong>Tip:</strong> Screenshot it on your phone.</div>
508        <a class="jpCoupon-call" href="tel:+16105072386">Call: (610) 507-2386</a>
509      </div>
510    </div>
511  </div>
512
513  
513<script>
514    (function(){
515      var burger = document.getElementById("jpBurger");
516      var drawer = document.getElementById("jpDrawer");
517      var modal = document.getElementById("jpCouponModal");
518      var open1 = document.getElementById("jpOpenCoupon");
519      var open2 = document.getElementById("jpOpenCoupon2");
520
521      function toggleDrawer(){
522        if(!drawer) return;
523        drawer.style.display = drawer.style.display === "block" ? "none" : "block";
524      }
525
526      function openModal(){
527        if(!modal) return;
528        modal.classList.add("jp-show");
529        modal.setAttribute("aria-hidden","false");
530        document.documentElement.style.overflow = "hidden";
531      }
532
533      function closeModal(){
534        if(!modal) return;
535        modal.classList.remove("jp-show");
536        modal.setAttribute("aria-hidden","true");
537        document.documentElement.style.overflow = "";
538      }
539
540      if(burger){
541        burger.addEventListener("click", toggleDrawer);
542      }
543
544      if(open1){
545        open1.addEventListener("click", function(){
546          openModal();
547          if(drawer) drawer.style.display = "none";
548        });
549      }
550
551      if(open2){
552        open2.addEventListener("click", function(){
553          openModal();
554          if(drawer) drawer.style.display = "none";
555        });
556      }
557
558      document.addEventListener("click", function(e){
559        var t = e.target;
560        if(!t) return;
561        if(t.matches("[data-close='1']") || (t.closest && t.closest("[data-close='1']"))){
562          closeModal();
563        }
564      });
565
566      document.addEventListener("keydown", function(e){
567        if(e.key === "Escape"){
568          closeModal();
569        }
570      });
571    })();
572  </script>
572
573</section>
574  </head>
575
576  <body class=" " data-page-id="1964140">
577    <a href="#main" class="skip-to-content">Skip to content</a>
578
579    
580    
581
582
583    <div class="site-container">
584      <header class="primary-header layout-inline_nav branding-style-logo-text ">
585  <style>
586    :root {
587      --ss-header-background-color: #ffffff;
588      --ss-header-background-alpha: calc(100% * 1.0);
589      --ss-header-padding: 10px;
590      --ss-header-alignment: center;
591      --ss-header-logo-height: 123px;
592      --ss-header-title-color: var(--ss-color-70528);
593      --ss-header-title-font-family: 'Bevan', serif;
594      --ss-header-title-font-size: 33px;
595      --ss-header-tagline-color: var(--ss-color-70529);
596      --ss-header-tagline-font-family: 'Bevan', serif;
597      --ss-header-tagline-font-size: 18px;
598      --ss-navigation-1-color: var(--ss-color-70528);
599      --ss-navigation-2-color: #ffffff;
600    }
601  </style>
602
603  <div class="primary-header__content">
604
605
606
607        <a class="branding" href="/">
608                    <img alt="JP Tree Service" src="https://d14tal8bchn59o.cloudfront.net/3lmGpicZGclu4KtSGUSf20QLNBANUolL5AulKFnGu_Q/w:1920/fn:911cafe2-a3f4-4c41-8573-f400b708336a/plain/s3://multisiteadmin-production/zno87ux2bnm1ty787ge0d25iylsd" />
609
610</a>
611      <nav class="primary-navigation" aria-label="Site">
612  <div class="inner-wrap">
613
614    <button type="button" aria-label="View Menu" title="View Menu" class="menu-toggle "></button>
615
616            <ul class="page-listing" data-behavior="site-navigation">
617      <li>
618
619
620          <a class="active" href="/">
621            <div>
622              Home
623
624            </div>
625</a>
626      </li>
627      <li>
628
629
630          <a class="" href="/about-us">
631            <div>
632              About Us
633
634            </div>
635</a>
636      </li>
637      <li>
638
639
640          <a class="" href="/our-services">
641            <div>
642              Our Services
643
644            </div>
645</a>
646      </li>
647      <li>
648
649
650          <a class="" href="/gallery">
651            <div>
652              Gallery
653
654            </div>
655</a>
656      </li>
657      <li>
658
659
660          <a class="" href="/reviews">
661            <div>
662              Reviews
663
664            </div>
665</a>
666      </li>
667      <li>
668
669
670          <a class="" href="/contact-us">
671            <div>
672              Contact Us
673
674            </div>
675</a>
676      </li>
677
678  </ul>
679
680
681  </div>
682</nav>
683
684
685  </div>
686
687
688    <ul class="location-quick-links clearfix">
689
690      <li>
691        <a title="Call us" href="tel:+16105072386">
692          <i class="fas fa-phone"></i>
693          Call
694</a>      </li>
695
696
697      <li>
698        <a title="View on a map" target="_blank" aria-label="View Map (opens in new window)" data-track="/a/track_map_view" href="https://maps.google.com/maps?q=17+Elm+Ave%2C+Upper+Darby%2C+PA+19082&amp;z=15&amp;mrt=loc">
699          <i class="fas fa-map-marker-alt"></i>
700          Map
701</a>      </li>
702
703      <li>
704        <a title="View hours" data-modal="true" href="/a/locations/hours">
705          <i class="far fa-clock"></i>
706          Hours
707</a>      </li>
708
709
710      <li>
711        <a title="Contact us" data-modal="true" href="/a/locations/contact/191639?return_to=%2F">
712          <i class="fas fa-envelope"></i>
713          Email
714</a>      </li>
715
716  </ul>
717
718</header>
719
720
721      <main class="posts-container" id="main">
722
723        
724
725
726<div class="posts">
727
728		
729<div class="post-container">
730  <article class="post post-html max-width" id="post_12958532" data-id="12958532" data-type="Html">
731
732    <div class="post-body">
733        <article class="post post-html full-width visible" id="post_11611095" data-id="11611095" data-type="Html">
734  <div class="post-body">
735
736    <section class="jp-home-hero">
737
738      <div class="jp-hero-overlay"></div>
739
740      <div class="jp-hero-container">
741
742        <!-- LEFT SIDE: HERO CONTENT -->
743        <div class="jp-content-column">
744
745          <div class="jp-hero-badge">
746            Affordable • Fast Response • Fully Insured
747          </div>
748
749          <h1>Tree Removal &amp; Tree Service in Upper Darby, PA</h1>
750
751          <p class="jp-hero-sub">
752            JP Tree Service provides professional tree removal, tree trimming, stump grinding, storm cleanup, and routine tree care in Upper Darby, PA. We help homeowners protect their property with safe, affordable, and dependable tree services.
753          </p>
754
755          <div class="jp-hero-cta">
756
757            <a class="jp-btn jp-btn-primary" href="tel:6105072386">
758              📞 Call (610) 507-2386
759            </a>
760
761            <a class="jp-btn jp-btn-secondary" href="#jp-estimate">
762              🌳 Get a Free Estimate
763            </a>
764
765          </div>
766
767          <div class="jp-trust-grid">
768
769            <div class="jp-trust-item">
770              <span class="jp-check">✓</span>
771              <div>
772                <strong>Free Estimates</strong>
773                <small>Know what to expect before work begins.</small>
774              </div>
775            </div>
776
777            <div class="jp-trust-item">
778              <span class="jp-check">✓</span>
779              <div>
780                <strong>Emergency Tree Service</strong>
781                <small>Help with fallen, damaged, or hazardous trees.</small>
782              </div>
783            </div>
784
785            <div class="jp-trust-item">
786              <span class="jp-check">✓</span>
787              <div>
788                <strong>Local Upper Darby Crew</strong>
789                <small>Professional tree service in your local area.</small>
790              </div>
791            </div>
792
793            <div class="jp-trust-item">
794              <span class="jp-check">✓</span>
795              <div>
796                <strong>Safe &amp; Professional</strong>
797                <small>Property safety comes first on every project.</small>
798              </div>
799            </div>
800
801          </div>
802
803          <div class="jp-services-line">
804            <strong>Our Services:</strong>
805            Tree Removal • Tree Trimming • Stump Grinding • Storm Damage Cleanup • Roof Line Clearing
806          </div>
807
808        </div>
809
810
811        <!-- RIGHT SIDE: CONTACT FORM -->
812        <div class="jp-contact-column" id="jp-estimate">
813
814          <div class="jp-form-card">
815
816            <div class="jp-form-heading">
817
818              <span class="jp-form-mini">
819                FAST • FREE • NO OBLIGATION
820              </span>
821
822              <h2>Get Your Free Quote For Tree Removal & Pruning Services</h2>
823
824              <p>
825                Let us know what you need help with and a member of our local team will get back to you as soon as possible.
826              </p>
827
828            </div>
829
830
831            <div class="jp-form-wrap">
832
833              <!-- Elfsight Contact Form -->
834              
834<script src="https://elfsightcdn.com/platform.js" async></script>
834
835
836              <div class="elfsight-app-7f2da393-c592-4591-9b77-2d3da609ebb6"></div>
837
838            </div>
839
840
841            <div class="jp-form-call">
842
843              <span>Prefer to speak with someone?</span>
844
845              <a href="tel:6105072386">
846                📞 (610) 507-2386
847              </a>
848
849            </div>
850
851          </div>
852
853        </div>
854
855      </div>
856
857
858      <!-- BOTTOM TRUST BAR -->
859      <div class="jp-bottom-bar">
860
861        <div>
862          <strong>Need Tree Service?</strong>
863          Request your free estimate today.
864        </div>
865
866        <a href="tel:6105072386">
867          Call Now →
868        </a>
869
870      </div>
871
872    </section>
873
874  </div>
875
876
877  <style>
878
879    /* ==============================
880       RESET
881    ============================== */
882
883    #post_11611095{
884      --ss-post-vertical-spacing:0px;
885      --ss-post-background-color:#ffffff;
886      margin:0;
887      padding:0;
888    }
889
890    #post_11611095 *{
891      box-sizing:border-box;
892    }
893
894
895    /* ==============================
896       MAIN HERO
897    ============================== */
898
899    #post_11611095 .jp-home-hero{
900      width:100vw;
901      position:relative;
902      left:50%;
903      transform:translateX(-50%);
904      overflow:hidden;
905
906      padding:55px 22px 0;
907
908      color:#ffffff;
909
910      background:
911        linear-gradient(
912          110deg,
913          rgba(5,25,10,.94) 0%,
914          rgba(8,39,17,.88) 45%,
915          rgba(0,0,0,.66) 100%
916        ),
917        url('https://besuretocook.org/wp-content/uploads/2026/08/2022-09-05_original.webp')
918        center center / cover no-repeat;
919    }
920
921
922    #post_11611095 .jp-hero-overlay{
923      position:absolute;
924      inset:0;
925
926      pointer-events:none;
927
928      background:
929        radial-gradient(
930          circle at 15% 20%,
931          rgba(75,190,90,.16),
932          transparent 32%
933        ),
934        radial-gradient(
935          circle at 90% 78%,
936          rgba(255,193,7,.12),
937          transparent 35%
938        );
939    }
940
941
942    /* ==============================
943       DESKTOP LAYOUT
944    ============================== */
945
946    #post_11611095 .jp-hero-container{
947      position:relative;
948      z-index:2;
949
950      width:100%;
951      max-width:1280px;
952
953      margin:0 auto;
954
955      display:grid;
956
957      grid-template-columns:
958        minmax(0,1.05fr)
959        minmax(390px,.95fr);
960
961      gap:55px;
962
963      align-items:center;
964
965      padding-bottom:55px;
966    }
967
968
969    #post_11611095 .jp-content-column{
970      grid-column:1;
971      grid-row:1;
972    }
973
974
975    #post_11611095 .jp-contact-column{
976      grid-column:2;
977      grid-row:1;
978    }
979
980
981    /* ==============================
982       HERO BADGE
983    ============================== */
984
985    #post_11611095 .jp-hero-badge{
986      display:inline-block;
987
988      margin:0 0 18px;
989
990      padding:9px 15px;
991
992      border-radius:999px;
993
994      background:rgba(255,255,255,.10);
995
996      border:1px solid rgba(255,255,255,.16);
997
998      color:#ffffff;
999
1000      font-size:.88rem;
1001
1002      font-weight:800;
1003
1004      letter-spacing:.03em;
1005    }
1006
1007
1008    /* ==============================
1009       H1
1010    ============================== */
1011
1012    #post_11611095 h1{
1013      max-width:720px;
1014
1015      margin:0 0 18px;
1016
1017      color:#ffffff;
1018
1019      font-size:clamp(2.5rem,4.5vw,4.4rem);
1020
1021      line-height:1.04;
1022
1023      font-weight:900;
1024
1025      letter-spacing:-.04em;
1026    }
1027
1028
1029    /* ==============================
1030       HERO TEXT
1031    ============================== */
1032
1033    #post_11611095 .jp-hero-sub{
1034      max-width:700px;
1035
1036      margin:0 0 27px;
1037
1038      color:rgba(255,255,255,.91);
1039
1040      font-size:1.08rem;
1041
1042      line-height:1.72;
1043    }
1044
1045
1046    /* ==============================
1047       BUTTONS
1048    ============================== */
1049
1050    #post_11611095 .jp-hero-cta{
1051      display:flex;
1052
1053      flex-wrap:wrap;
1054
1055      gap:12px;
1056
1057      margin-bottom:28px;
1058    }
1059
1060
1061    #post_11611095 .jp-btn{
1062      display:inline-flex;
1063
1064      align-items:center;
1065
1066      justify-content:center;
1067
1068      min-height:54px;
1069
1070      padding:14px 23px;
1071
1072      border-radius:11px;
1073
1074      text-decoration:none !important;
1075
1076      font-size:1rem;
1077
1078      font-weight:900;
1079
1080      transition:
1081        transform .2s ease,
1082        box-shadow .2s ease,
1083        background .2s ease;
1084    }
1085
1086
1087    #post_11611095 .jp-btn:hover{
1088      transform:translateY(-2px);
1089    }
1090
1091
1092    #post_11611095 .jp-btn-primary{
1093      background:#2faf4b;
1094
1095      color:#ffffff !important;
1096
1097      box-shadow:
1098        0 14px 32px rgba(46,175,74,.26);
1099    }
1100
1101
1102    #post_11611095 .jp-btn-primary:hover{
1103      background:#27953f;
1104    }
1105
1106
1107    #post_11611095 .jp-btn-secondary{
1108      background:#ffc107;
1109
1110      color:#111111 !important;
1111
1112      box-shadow:
1113        0 14px 32px rgba(255,193,7,.20);
1114    }
1115
1116
1117    #post_11611095 .jp-btn-secondary:hover{
1118      background:#dfa906;
1119    }
1120
1121
1122    /* ==============================
1123       TRUST GRID
1124    ============================== */
1125
1126    #post_11611095 .jp-trust-grid{
1127      display:grid;
1128
1129      grid-template-columns:
1130        repeat(2,minmax(0,1fr));
1131
1132      gap:12px;
1133
1134      max-width:700px;
1135
1136      margin-bottom:24px;
1137    }
1138
1139
1140    #post_11611095 .jp-trust-item{
1141      display:flex;
1142
1143      gap:11px;
1144
1145      align-items:flex-start;
1146
1147      padding:13px;
1148
1149      border-radius:11px;
1150
1151      background:
1152        rgba(255,255,255,.075);
1153
1154      border:
1155        1px solid rgba(255,255,255,.10);
1156    }
1157
1158
1159    #post_11611095 .jp-check{
1160      display:flex;
1161
1162      align-items:center;
1163
1164      justify-content:center;
1165
1166      flex:0 0 25px;
1167
1168      width:25px;
1169
1170      height:25px;
1171
1172      border-radius:50%;
1173
1174      background:#2faf4b;
1175
1176      color:#ffffff;
1177
1178      font-size:.82rem;
1179
1180      font-weight:900;
1181    }
1182
1183
1184    #post_11611095 .jp-trust-item strong{
1185      display:block;
1186
1187      margin-bottom:2px;
1188
1189      color:#ffffff;
1190
1191      font-size:.91rem;
1192    }
1193
1194
1195    #post_11611095 .jp-trust-item small{
1196      display:block;
1197
1198      color:rgba(255,255,255,.71);
1199
1200      font-size:.77rem;
1201
1202      line-height:1.42;
1203    }
1204
1205
1206    /* ==============================
1207       SERVICE LINE
1208    ============================== */
1209
1210    #post_11611095 .jp-services-line{
1211      max-width:700px;
1212
1213      padding-top:17px;
1214
1215      border-top:
1216        1px solid rgba(255,255,255,.15);
1217
1218      color:rgba(255,255,255,.82);
1219
1220      font-size:.92rem;
1221
1222      line-height:1.7;
1223    }
1224
1225
1226    #post_11611095 .jp-services-line strong{
1227      color:#ffffff;
1228    }
1229
1230
1231    /* ==============================
1232       CONTACT FORM CARD
1233       DARK SO WHITE ELFSIGHT FORM
1234       REMAINS VISIBLE
1235    ============================== */
1236
1237    #post_11611095 .jp-contact-column{
1238      position:relative;
1239    }
1240
1241
1242    #post_11611095 .jp-form-card{
1243      width:100%;
1244
1245      max-width:510px;
1246
1247      margin-left:auto;
1248
1249      overflow:hidden;
1250
1251      border-radius:18px;
1252
1253      background:
1254        linear-gradient(
1255          160deg,
1256          rgba(10,48,22,.98),
1257          rgba(4,27,12,.99)
1258        );
1259
1260      border:
1261        1px solid rgba(255,255,255,.15);
1262
1263      color:#ffffff;
1264
1265      box-shadow:
1266        0 30px 80px rgba(0,0,0,.43);
1267    }
1268
1269
1270    #post_11611095 .jp-form-card:before{
1271      content:"";
1272
1273      display:block;
1274
1275      width:100%;
1276
1277      height:6px;
1278
1279      background:
1280        linear-gradient(
1281          90deg,
1282          #2faf4b,
1283          #ffc107
1284        );
1285    }
1286
1287
1288    /* ==============================
1289       FORM HEADER
1290    ============================== */
1291
1292    #post_11611095 .jp-form-heading{
1293      padding:26px 25px 10px;
1294
1295      text-align:center;
1296    }
1297
1298
1299    #post_11611095 .jp-form-mini{
1300      display:inline-block;
1301
1302      margin-bottom:9px;
1303
1304      color:#ffc107;
1305
1306      font-size:.74rem;
1307
1308      font-weight:900;
1309
1310      letter-spacing:.11em;
1311    }
1312
1313
1314    #post_11611095 .jp-form-heading h2{
1315      margin:0 0 10px;
1316
1317      color:#ffffff;
1318
1319      font-size:1.68rem;
1320
1321      line-height:1.18;
1322
1323      font-weight:900;
1324
1325      letter-spacing:-.02em;
1326    }
1327
1328
1329    #post_11611095 .jp-form-heading p{
1330      max-width:410px;
1331
1332      margin:0 auto;
1333
1334      color:
1335        rgba(255,255,255,.80);
1336
1337      font-size:.92rem;
1338
1339      line-height:1.55;
1340    }
1341
1342
1343    /* ==============================
1344       ELFSIGHT FORM AREA
1345    ============================== */
1346
1347    #post_11611095 .jp-form-wrap{
1348      width:100%;
1349
1350      min-height:320px;
1351
1352      padding:5px 10px 12px;
1353    }
1354
1355
1356    /*
1357      Make the embedded form area stay
1358      transparent so the dark green
1359      card shows behind it.
1360    */
1361
1362    #post_11611095 .jp-form-wrap,
1363    #post_11611095 .jp-form-wrap > div{
1364      background:transparent !important;
1365    }
1366
1367
1368    /* ==============================
1369       PHONE BAR
1370    ============================== */
1371
1372    #post_11611095 .jp-form-call{
1373      display:flex;
1374
1375      align-items:center;
1376
1377      justify-content:center;
1378
1379      flex-wrap:wrap;
1380
1381      gap:8px;
1382
1383      padding:16px 20px;
1384
1385      background:
1386        rgba(0,0,0,.22);
1387
1388      border-top:
1389        1px solid rgba(255,255,255,.12);
1390
1391      color:
1392        rgba(255,255,255,.80);
1393
1394      font-size:.88rem;
1395
1396      font-weight:600;
1397    }
1398
1399
1400    #post_11611095 .jp-form-call a{
1401      color:#ffc107 !important;
1402
1403      text-decoration:none !important;
1404
1405      font-weight:900;
1406    }
1407
1408
1409    /* ==============================
1410       BOTTOM BAR
1411    ============================== */
1412
1413    #post_11611095 .jp-bottom-bar{
1414      position:relative;
1415
1416      z-index:2;
1417
1418      width:calc(100% + 44px);
1419
1420      margin-left:-22px;
1421
1422      display:flex;
1423
1424      align-items:center;
1425
1426      justify-content:center;
1427
1428      gap:38px;
1429
1430      padding:18px 22px;
1431
1432      background:
1433        rgba(3,18,7,.95);
1434
1435      border-top:
1436        1px solid rgba(255,255,255,.10);
1437
1438      color:
1439        rgba(255,255,255,.84);
1440
1441      text-align:center;
1442
1443      font-size:.94rem;
1444    }
1445
1446
1447    #post_11611095 .jp-bottom-bar strong{
1448      color:#ffffff;
1449    }
1450
1451
1452    #post_11611095 .jp-bottom-bar a{
1453      color:#ffc107 !important;
1454
1455      text-decoration:none !important;
1456
1457      font-weight:900;
1458
1459      white-space:nowrap;
1460    }
1461
1462
1463    /* ==============================
1464       TABLET
1465    ============================== */
1466
1467    @media screen and (max-width:1050px){
1468
1469      #post_11611095 .jp-hero-container{
1470        grid-template-columns:
1471          minmax(0,1fr)
1472          minmax(350px,.9fr);
1473
1474        gap:30px;
1475      }
1476
1477      #post_11611095 h1{
1478        font-size:
1479          clamp(2.2rem,4vw,3.5rem);
1480      }
1481
1482    }
1483
1484
1485    /* ==============================
1486       MOBILE
1487       CONTACT FORM SHOWS FIRST
1488    ============================== */
1489
1490    @media screen and (max-width:800px){
1491
1492      #post_11611095 .jp-home-hero{
1493        padding:
1494          18px 15px 0;
1495      }
1496
1497
1498      #post_11611095 .jp-hero-container{
1499        display:flex;
1500
1501        flex-direction:column;
1502
1503        gap:30px;
1504
1505        padding-bottom:35px;
1506      }
1507
1508
1509      #post_11611095 .jp-contact-column{
1510        order:1;
1511
1512        width:100%;
1513      }
1514
1515
1516      #post_11611095 .jp-content-column{
1517        order:2;
1518
1519        width:100%;
1520
1521        text-align:center;
1522      }
1523
1524
1525      #post_11611095 .jp-form-card{
1526        max-width:590px;
1527
1528        margin:0 auto;
1529      }
1530
1531
1532      #post_11611095 .jp-form-heading{
1533        padding:
1534          22px 18px 9px;
1535      }
1536
1537
1538      #post_11611095 .jp-form-heading h2{
1539        font-size:1.45rem;
1540      }
1541
1542
1543      #post_11611095 .jp-form-heading p{
1544        font-size:.88rem;
1545      }
1546
1547
1548      #post_11611095 .jp-form-wrap{
1549        min-height:300px;
1550      }
1551
1552
1553      #post_11611095 .jp-hero-badge{
1554        margin-bottom:14px;
1555      }
1556
1557
1558      #post_11611095 h1{
1559        max-width:600px;
1560
1561        margin-left:auto;
1562
1563        margin-right:auto;
1564
1565        font-size:2.15rem;
1566
1567        line-height:1.08;
1568      }
1569
1570
1571      #post_11611095 .jp-hero-sub{
1572        max-width:600px;
1573
1574        margin-left:auto;
1575
1576        margin-right:auto;
1577
1578        font-size:.98rem;
1579
1580        line-height:1.65;
1581      }
1582
1583
1584      #post_11611095 .jp-hero-cta{
1585        justify-content:center;
1586      }
1587
1588
1589      #post_11611095 .jp-trust-grid{
1590        max-width:600px;
1591
1592        margin-left:auto;
1593
1594        margin-right:auto;
1595
1596        text-align:left;
1597      }
1598
1599
1600      #post_11611095 .jp-services-line{
1601        max-width:600px;
1602
1603        margin-left:auto;
1604
1605        margin-right:auto;
1606      }
1607
1608    }
1609
1610
1611    /* ==============================
1612       SMALL MOBILE
1613    ============================== */
1614
1615    @media screen and (max-width:520px){
1616
1617      #post_11611095 .jp-home-hero{
1618        padding-top:12px;
1619      }
1620
1621
1622      #post_11611095 .jp-form-card{
1623        border-radius:14px;
1624      }
1625
1626
1627      #post_11611095 .jp-form-heading h2{
1628        font-size:1.35rem;
1629      }
1630
1631
1632      #post_11611095 h1{
1633        font-size:1.9rem;
1634      }
1635
1636
1637      #post_11611095 .jp-hero-sub{
1638        font-size:.95rem;
1639      }
1640
1641
1642      #post_11611095 .jp-hero-cta{
1643        flex-direction:column;
1644      }
1645
1646
1647      #post_11611095 .jp-btn{
1648        width:100%;
1649      }
1650
1651
1652      #post_11611095 .jp-trust-grid{
1653        grid-template-columns:1fr;
1654      }
1655
1656
1657      #post_11611095 .jp-bottom-bar{
1658        flex-direction:column;
1659
1660        gap:4px;
1661
1662        padding:15px;
1663      }
1664
1665    }
1666
1667  </style>
1668
1669</article>
1670
1671    </div>
1672
1673
1674
1675    <style>
1676      #post_12958532 {
1677        --ss-post-vertical-spacing: 0px;
1678        --ss-post-background-color: #ffffff;
1679
1680
1681
1682
1683        
1684      }
1685    </style>
1686
1687</article></div>
1688
1689		
1690<div class="post-container">
1691  <article class="post post-html max-width" id="post_12549561" data-id="12549561" data-type="Html">
1692
1693    <div class="post-body">
1694        <section class="jp-about-section">
1695  <div class="jp-about-wrap">
1696    <div class="jp-about-intro">
1697      <span class="jp-about-eyebrow">Local • Reliable • Fully Insured</span>
1698      <h2>About JP Tree Service</h2>
1699      <p>
1700        JP Tree Service proudly provides professional tree service in Upper Darby, PA and nearby communities. With years of hands-on experience, our team specializes in tree removal, tree trimming, pruning, stump grinding, storm cleanup, and routine tree maintenance for residential and commercial properties.
1701      </p>
1702      <p>
1703        Our goal is to help property owners keep their trees safe, healthy, and well-maintained while protecting homes, roofs, driveways, and surrounding landscapes. Whether you need a hazardous tree removed, overgrown limbs trimmed back, or dependable emergency tree service after a storm, JP Tree Service is ready to help with fast response times and affordable pricing.
1704      </p>
1705    </div>
1706
1707    <div class="jp-about-grid">
1708      <div class="jp-about-card">
1709        <h3>Why Homeowners Choose Us</h3>
1710        <ul>
1711          <li>Experienced local tree care professionals</li>
1712          <li>Affordable pricing and free estimates</li>
1713          <li>Fully insured for your peace of mind</li>
1714          <li>Fast scheduling and dependable service</li>
1715          <li>Emergency storm damage tree service available</li>
1716        </ul>
1717      </div>
1718
1719      <div class="jp-about-card">
1720        <h3>Services We Provide</h3>
1721        <ul>
1722          <li>Tree removal</li>
1723          <li>Tree trimming and pruning</li>
1724          <li>Stump grinding</li>
1725          <li>Roof line clearing</li>
1726          <li>Brush and log removal</li>
1727        </ul>
1728      </div>
1729    </div>
1730  </div>
1731
1732  <style>
1733    .jp-about-section{
1734      background:linear-gradient(180deg, #f7f7f4 0%, #eef4ec 100%);
1735      padding:80px 20px;
1736    }
1737
1738    .jp-about-section *{
1739      box-sizing:border-box;
1740    }
1741
1742    .jp-about-wrap{
1743      max-width:1100px;
1744      margin:0 auto;
1745    }
1746
1747    .jp-about-intro{
1748      max-width:900px;
1749      margin:0 auto 34px;
1750      text-align:center;
1751    }
1752
1753    .jp-about-eyebrow{
1754      display:inline-block;
1755      margin-bottom:14px;
1756      padding:8px 14px;
1757      border-radius:999px;
1758      background:#e4efe2;
1759      color:#0d4b18;
1760      font-size:.9rem;
1761      font-weight:800;
1762      letter-spacing:.04em;
1763      text-transform:uppercase;
1764    }
1765
1766    .jp-about-section h2{
1767      margin:0 0 18px;
1768      font-size:clamp(2rem, 4vw, 2.8rem);
1769      line-height:1.15;
1770      color:#0a3d0a;
1771      font-family:'Arial Black', sans-serif;
1772    }
1773
1774    .jp-about-intro p{
1775      margin:0 auto 16px;
1776      font-size:1.08rem;
1777      line-height:1.85;
1778      color:#2f2f2f;
1779      font-family:'Segoe UI', sans-serif;
1780      max-width:880px;
1781    }
1782
1783    .jp-about-grid{
1784      display:grid;
1785      grid-template-columns:repeat(2, minmax(0, 1fr));
1786      gap:22px;
1787      align-items:stretch;
1788    }
1789
1790    .jp-about-card{
1791      background:#ffffff;
1792      border:1px solid rgba(10,61,10,.08);
1793      border-radius:20px;
1794      padding:28px 24px;
1795      box-shadow:0 14px 40px rgba(0,0,0,0.06);
1796      text-align:left;
1797    }
1798
1799    .jp-about-card h3{
1800      margin:0 0 14px;
1801      color:#0a3d0a;
1802      font-size:1.3rem;
1803      font-family:'Arial Black', sans-serif;
1804    }
1805
1806    .jp-about-card ul{
1807      list-style:none;
1808      padding:0;
1809      margin:0;
1810    }
1811
1812    .jp-about-card li{
1813      position:relative;
1814      padding:0 0 0 24px;
1815      margin:0 0 12px;
1816      color:#333;
1817      font-size:1rem;
1818      line-height:1.65;
1819      font-family:'Segoe UI', sans-serif;
1820    }
1821
1822    .jp-about-card li:before{
1823      content:"✔";
1824      position:absolute;
1825      left:0;
1826      top:0;
1827      color:#2e9e45;
1828      font-weight:900;
1829    }
1830
1831    .jp-about-card li:last-child{
1832      margin-bottom:0;
1833    }
1834
1835    @media screen and (max-width: 767px){
1836      .jp-about-section{
1837        padding:56px 16px;
1838      }
1839
1840      .jp-about-grid{
1841        grid-template-columns:1fr;
1842        gap:16px;
1843      }
1844
1845      .jp-about-card{
1846        padding:22px 18px;
1847        border-radius:16px;
1848      }
1849
1850      .jp-about-intro p{
1851        font-size:1rem;
1852        line-height:1.72;
1853      }
1854    }
1855  </style>
1856</section>
1857
1858    </div>
1859
1860
1861
1862    <style>
1863      #post_12549561 {
1864        --ss-post-vertical-spacing: 0px;
1865        --ss-post-background-color: #ffffff;
1866
1867
1868
1869
1870        
1871      }
1872    </style>
1873
1874</article></div>
1875
1876		
1877<div class="post-container">
1878  <article class="post post-html max-width" id="post_11611315" data-id="11611315" data-type="Html">
1879
1880    <div class="post-body">
1881        <section style="position: relative; width: 100vw; left: 50%; transform: translateX(-50%); padding: 80px 20px; box-sizing: border-box; text-align: center; overflow-x: hidden;">
1882  <div style="
1883    position: absolute;
1884    top: 0; left: 0; right: 0; bottom: 0;
1885    background: url('https://besuretocook.org/wp-content/uploads/2026/08/2021-07-28_original.webp') center center/cover no-repeat;
1886    filter: blur(6px) brightness(0.8);
1887    z-index: 1;
1888  "></div>
1889
1890  <div style="position: relative; z-index: 2; max-width: 1200px; margin: 0 auto;">
1891    <h2 style="font-size: 2.7em; color: #ffffff; font-family: 'Arial Black', sans-serif; text-shadow: 0 0 8px #28a745;">
1892      Our Tree Services
1893    </h2>
1894
1895    <p style="color: #ffffff; font-size: 1.3em; line-height: 1.8; font-family: 'Segoe UI', sans-serif; max-width: 900px; margin: 20px auto 50px;">
1896      We specialize in expert-level tree removal, trimming, stump grinding, and routine care services to protect your property and beautify your landscape.
1897    </p>
1898
1899    <div class="service-grid">
1900      <div class="service-badge" onclick="showPopup('Tree Removal')">
1901        <img src="https://cdn-icons-png.flaticon.com/512/427/427735.png" alt="Tree Removal">
1902        <p>Tree Removal</p>
1903      </div>
1904      <div class="service-badge" onclick="showPopup('Stump Grinding')">
1905        <img src="https://cdn-icons-png.flaticon.com/512/3079/3079164.png" alt="Stump Grinding">
1906        <p>Stump Grinding</p>
1907      </div>
1908      <div class="service-badge" onclick="showPopup('Tree Trimming')">
1909        <img src="https://cdn-icons-png.flaticon.com/512/1632/1632670.png" alt="Tree Trimming">
1910        <p>Tree Trimming</p>
1911      </div>
1912      <div class="service-badge" onclick="showPopup('Low Maintenance')">
1913        <img src="https://cdn-icons-png.flaticon.com/512/5783/5783441.png" alt="Low Maintenance">
1914        <p>Low Maintenance</p>
1915      </div>
1916      <div class="service-badge" onclick="showPopup('Affordable Pricing')">
1917        <img src="https://cdn-icons-png.flaticon.com/512/3135/3135706.png" alt="Affordable Pricing">
1918        <p>Affordable Pricing</p>
1919      </div>
1920    </div>
1921  </div>
1922</section>
1923
1924<!-- Popup -->
1925<div id="popupBox" style="display:none; position:fixed; top:0; left:0; width:100vw; height:100vh; background:rgba(0,0,0,0.8); z-index:9999;
1925 align-items:center; justify-content:center; padding: 20px; box-sizing: border-box;">
1926  <div id="popupContent" style="background:white; padding:30px 20px; max-width:480px; width:100%; border-radius:10px; box-shadow:0 0 20px rgba(0,0,0,0.5); font-family:'Segoe UI',sans-serif; text-align:center; position:relative;">
1927    <span onclick="hidePopup()" style="position:absolute; top:10px; right:15px; font-size:1.5em; cursor:pointer;">&times;</span>
1928    <h3 id="popupTitle" style="color:#0a3d0a; margin-bottom:15px;"></h3>
1929    <p id="popupDescription" style="font-size:1em; color:#333; margin-bottom:20px;"></p>
1930    <p style="color:#555;">
1931      📧 <a href="mailto:[email protected]">[email protected]</a><br>
1932      📞 <a href="tel:6105072386">(610) 507-2386</a>
1933    </p>
1934  </div>
1935</div>
1936
1937<!-- Styles -->
1938<style>
1939.service-grid {
1940  display: flex;
1941  flex-wrap: wrap;
1942  justify-content: center;
1943  gap: 25px;
1944  padding: 0 10px;
1945  box-sizing: border-box;
1946}
1947
1948.service-badge {
1949  background-color: rgba(40, 167, 69, 0.95);
1950  border-radius: 50%;
1951  width: 130px;
1952  height: 130px;
1953  display: flex;
1954  flex-direction: column;
1955  align-items: center;
1956  justify-content: center;
1957  box-shadow: 0 6px 16px rgba(0,0,0,0.2);
1958  transition: transform 0.3s ease;
1959  cursor: pointer;
1960  padding: 10px;
1961  animation: floatBadge 4s ease-in-out infinite;
1962  box-sizing: border-box;
1963}
1964
1965.service-badge:hover {
1966  transform: scale(1.07);
1967}
1968
1969.service-badge img {
1970  width: 36px;
1971  height: 36px;
1972  margin-bottom: 8px;
1973  filter: brightness(0) invert(1);
1974}
1975
1976.service-badge p {
1977  color: white;
1978  font-size: 0.9em;
1979  margin: 0;
1980}
1981
1982/* Popup */
1983#popupBox {
1984  display: none;
1985  flex-direction: column;
1986  justify-content: center;
1987  align-items: center;
1988}
1989
1990@keyframes floatBadge {
1991  0%, 100% { transform: translateY(0); }
1992  50% { transform: translateY(-6px); }
1993}
1994
1995/* Mobile */
1996@media screen and (max-width: 768px) {
1997  .service-badge {
1998    width: 110px;
1999    height: 110px;
2000  }
2001  .service-badge img {
2002    width: 28px;
2003    height: 28px;
2004  }
2005  .service-badge p {
2006    font-size: 0.8em;
2007  }
2008  #popupContent {
2009    max-width: 90vw;
2010    font-size: 0.95em;
2011  }
2012}
2013</style>
2014
2015<!-- Script with Full Descriptions -->
2016<script>
2017function showPopup(service) {
2018  const descriptions = {
2019    "Tree Removal": "JP Tree Service offers professional and safe tree removal for dead, hazardous, or unwanted trees. Whether it's a storm-damaged tree or one too close to your home, we remove it efficiently, minimizing impact to your property.",
2020    "Stump Grinding": "Our stump grinding service eliminates unsightly stumps from your yard, restoring a clean, even landscape. We grind deep below the surface to prevent regrowth and make your outdoor space safer and more usable.",
2021    "Tree Trimming": "We provide expert tree trimming to remove overgrowth, dead limbs, and hazardous branches. Regular trimming improves tree health, boosts curb appeal, and keeps your family and property safe.",
2022    "Low Maintenance": "JP Tree Service helps homeowners and businesses maintain tidy, low-maintenance green spaces with trimming, shaping, and scheduled care to keep everything neat without constant upkeep.",
2023    "Affordable Pricing": "We believe professional tree care shouldn’t break the bank. That’s why JP Tree Service offers competitive, transparent pricing on all services, backed by fully insured, quality workmanship."
2024  };
2025
2026  document.getElementById('popupBox').style.display = 'flex';
2027  document.getElementById('popupTitle').textContent = service;
2028  document.getElementById('popupDescription').textContent = descriptions[service];
2029}
2030
2031function hidePopup() {
2032  document.getElementById('popupBox').style.display = 'none';
2033}
2034</script>
2034
2035
2036
2037    </div>
2038
2039
2040
2041    <style>
2042      #post_11611315 {
2043        --ss-post-vertical-spacing: 0px;
2044        --ss-post-background-color: #ffffff;
2045
2046
2047
2048
2049        
2050      }
2051    </style>
2052
2053</article></div>
2054
2055		
2056<div class="post-container">
2057  <article class="post post-html max-width" id="post_11611166" data-id="11611166" data-type="Html">
2058
2059    <div class="post-body">
2060        <!-- Elfsight Google Reviews | JP Tree Service -->
2061<script src="https://static.elfsight.com/platform/platform.js" async></script>
2061
2062<div class="elfsight-app-74702cc2-3453-4d0f-83e7-0fe2008c8a58" data-elfsight-app-lazy></div>
2063
2064    </div>
2065
2066
2067
2068    <style>
2069      #post_11611166 {
2070        --ss-post-vertical-spacing: 0px;
2071        --ss-post-background-color: #ffffff;
2072
2073
2074
2075
2076        
2077      }
2078    </style>
2079
2080</article></div>
2081
2082		
2083<div class="post-container">
2084  <article class="post post-html max-width" id="post_11611095" data-id="11611095" data-type="Html">
2085
2086    <div class="post-body">
2087        <section class="jp-guarantee-faq-section">
2088  <div class="jp-guarantee-faq-wrap">
2089
2090    <div class="jp-guarantee-top">
2091      <span class="jp-guarantee-eyebrow">Trusted Tree Care in Upper Darby, PA</span>
2092      <h2>All of Our Tree Services Are Backed by Our 100% Satisfaction Guarantee</h2>
2093      <p>
2094        JP Tree Service proudly provides professional tree removal, tree trimming, stump grinding, storm cleanup, and property clearing in Upper Darby, PA and surrounding areas. We are committed to safe work, affordable pricing, dependable service, and customer satisfaction on every job.
2095      </p>
2096    </div>
2097
2098    <div class="jp-guarantee-content">
2099      <div class="jp-guarantee-badge-card">
2100        <img src="https://besuretocook.org/wp-content/uploads/2026/08/satisfaction-guarantee-2109235_1920_960x_original.webp" alt="100% Satisfaction Guarantee JP Tree Service" />
2101        <div class="jp-guarantee-badge-text">
2102          <strong>Quality Tree Work You Can Trust</strong>
2103          <span>Safe service, honest pricing, and dependable results for homes and properties throughout Upper Darby.</span>
2104        </div>
2105      </div>
2106
2107      <div class="jp-guarantee-services">
2108        <div class="jp-service-col">
2109          <h3>Core Tree Services</h3>
2110          <ul>
2111            <li>Tree Removal</li>
2112            <li>Tree Trimming &amp; Pruning</li>
2113            <li>Stump Grinding</li>
2114            <li>Roof Line Clearing</li>
2115            <li>Hazard Tree Removal</li>
2116            <li>Routine Tree Maintenance</li>
2117          </ul>
2118        </div>
2119
2120        <div class="jp-service-col">
2121          <h3>Property &amp; Cleanup Services</h3>
2122          <ul>
2123            <li>Land Clearing</li>
2124            <li>Bush &amp; Brush Removal</li>
2125            <li>Log Removal</li>
2126            <li>Property Cleanup</li>
2127            <li>Bobcat Services</li>
2128            <li>Land Grading</li>
2129          </ul>
2130        </div>
2131
2132        <div class="jp-service-col">
2133          <h3>Specialty Services</h3>
2134          <ul>
2135            <li>Storm Damage Cleanup</li>
2136            <li>Emergency Tree Service</li>
2137            <li>Tree Disease Control</li>
2138            <li>Root Pruning</li>
2139            <li>Lightning Protection</li>
2140            <li>Aerial Bucket Services</li>
2141          </ul>
2142        </div>
2143      </div>
2144    </div>
2145
2146    <div class="jp-guarantee-cta">
2147      <a href="tel:6105072386" class="jp-guarantee-btn jp-guarantee-btn-primary">📞 Call (610) 507-2386</a>
2148      <a href="/contact-us" class="jp-guarantee-btn jp-guarantee-btn-secondary">🌳 Get a Free Estimate</a>
2149    </div>
2150
2151    <div class="jp-faq-block">
2152      <div class="jp-faq-head">
2153        <span class="jp-faq-eyebrow">Helpful Answers</span>
2154        <h2>Frequently Asked Questions</h2>
2155        <p>
2156          Learn more about our tree services in Upper Darby, PA, including pricing, emergency work, trimming, stump grinding, and what to expect when you hire JP Tree Service.
2157        </p>
2158      </div>
2159
2160      <div class="jp-faq-list">
2161        <details class="jp-faq-item" open>
2162          <summary>How much does tree removal cost in Upper Darby, PA?</summary>
2163          <div class="jp-faq-answer">
2164            Tree removal pricing depends on the size of the tree, its condition, location on the property, and how difficult it is to remove safely. JP Tree Service provides free estimates in Upper Darby, PA so you can get clear pricing before any work begins.
2165          </div>
2166        </details>
2167
2168        <details class="jp-faq-item">
2169          <summary>Do you offer emergency tree service?</summary>
2170          <div class="jp-faq-answer">
2171            Yes. We provide emergency tree service for storm damage, fallen trees, dangerous hanging limbs, and other urgent tree-related issues. If a tree is threatening your home, driveway, roof, or power lines, call us right away.
2172          </div>
2173        </details>
2174
2175        <details class="jp-faq-item">
2176          <summary>Do you provide tree trimming and pruning?</summary>
2177          <div class="jp-faq-answer">
2178            Yes. JP Tree Service offers professional tree trimming and pruning to help improve tree health, reduce overgrowth, clear roof lines, and make your property safer and more attractive.
2179          </div>
2180        </details>
2181
2182        <details class="jp-faq-item">
2183          <summary>Can you remove tree stumps too?</summary>
2184          <div class="jp-faq-answer">
2185            Yes. We offer stump grinding and stump removal services to help clean up your yard, improve appearance, and eliminate tripping hazards or obstacles for landscaping.
2186          </div>
2187        </details>
2188
2189        <details class="jp-faq-item">
2190          <summary>Are you fully insured?</summary>
2191          <div class="jp-faq-answer">
2192            Yes. JP Tree Service is fully insured, giving property owners peace of mind when hiring us for tree removal, trimming, storm cleanup, and other tree care services.
2193          </div>
2194        </details>
2195
2196        <details class="jp-faq-item">
2197          <summary>What areas do you serve besides Upper Darby?</summary>
2198          <div class="jp-faq-answer">
2199            In addition to Upper Darby, we serve nearby communities and surrounding service areas. Contact us to confirm availability for your location and to request a free estimate.
2200          </div>
2201        </details>
2202      </div>
2203    </div>
2204
2205  </div>
2206
2207  <style>
2208    .jp-guarantee-faq-section{
2209      padding:80px 20px;
2210      background:linear-gradient(180deg, #f7f7f7 0%, #eeeeee 100%);
2211    }
2212
2213    .jp-guarantee-faq-section *{
2214      box-sizing:border-box;
2215    }
2216
2217    .jp-guarantee-faq-wrap{
2218      max-width:1200px;
2219      margin:0 auto;
2220    }
2221
2222    .jp-guarantee-top{
2223      text-align:center;
2224      max-width:950px;
2225      margin:0 auto 40px;
2226    }
2227
2228    .jp-guarantee-eyebrow,
2229    .jp-faq-eyebrow{
2230      display:inline-block;
2231      margin-bottom:14px;
2232      padding:8px 14px;
2233      border-radius:999px;
2234      background:#e8f3e6;
2235      color:#0b4b15;
2236      font-size:.9rem;
2237      font-weight:800;
2238      letter-spacing:.04em;
2239      text-transform:uppercase;
2240    }
2241
2242    .jp-guarantee-top h2,
2243    .jp-faq-head h2{
2244      margin:0 0 18px;
2245      font-size:clamp(2rem, 4vw, 3rem);
2246      line-height:1.15;
2247      color:#222;
2248      font-family:'Arial Black', sans-serif;
2249    }
2250
2251    .jp-guarantee-top p,
2252    .jp-faq-head p{
2253      margin:0 auto;
2254      max-width:860px;
2255      font-size:1.08rem;
2256      line-height:1.8;
2257      color:#444;
2258      font-family:'Segoe UI', sans-serif;
2259    }
2260
2261    .jp-guarantee-content{
2262      display:grid;
2263      grid-template-columns:320px 1fr;
2264      gap:28px;
2265      align-items:start;
2266    }
2267
2268    .jp-guarantee-badge-card{
2269      background:#fff;
2270      border-radius:22px;
2271      padding:26px 20px;
2272      box-shadow:0 18px 45px rgba(0,0,0,0.08);
2273      border:1px solid rgba(0,0,0,0.06);
2274      text-align:center;
2275      height:100%;
2276    }
2277
2278    .jp-guarantee-badge-card img{
2279      max-width:220px;
2280      width:100%;
2281      height:auto;
2282      display:block;
2283      margin:0 auto 18px;
2284    }
2285
2286    .jp-guarantee-badge-text{
2287      display:flex;
2288      flex-direction:column;
2289      gap:8px;
2290    }
2291
2292    .jp-guarantee-badge-text strong{
2293      font-size:1.15rem;
2294      color:#1d1d1d;
2295      font-family:'Arial Black', sans-serif;
2296    }
2297
2298    .jp-guarantee-badge-text span{
2299      font-size:.98rem;
2300      line-height:1.65;
2301      color:#555;
2302      font-family:'Segoe UI', sans-serif;
2303    }
2304
2305    .jp-guarantee-services{
2306      display:grid;
2307      grid-template-columns:repeat(3, minmax(0, 1fr));
2308      gap:20px;
2309    }
2310
2311    .jp-service-col{
2312      background:#fff;
2313      border-radius:20px;
2314      padding:24px 22px;
2315      box-shadow:0 14px 36px rgba(0,0,0,0.06);
2316      border:1px solid rgba(0,0,0,0.05);
2317    }
2318
2319    .jp-service-col h3{
2320      margin:0 0 14px;
2321      color:#0a3d0a;
2322      font-size:1.2rem;
2323      font-family:'Arial Black', sans-serif;
2324    }
2325
2326    .jp-service-col ul{
2327      list-style:none;
2328      padding:0;
2329      margin:0;
2330    }
2331
2332    .jp-service-col li{
2333      position:relative;
2334      padding-left:24px;
2335      margin-bottom:14px;
2336      font-size:1rem;
2337      line-height:1.55;
2338      color:#2f2f2f;
2339      font-family:'Segoe UI', sans-serif;
2340      font-weight:600;
2341    }
2342
2343    .jp-service-col li:last-child{
2344      margin-bottom:0;
2345    }
2346
2347    .jp-service-col li:before{
2348      content:"✔";
2349      position:absolute;
2350      left:0;
2351      top:0;
2352      color:#2ea043;
2353      font-weight:900;
2354    }
2355
2356    .jp-guarantee-cta{
2357      display:flex;
2358      justify-content:center;
2359      flex-wrap:wrap;
2360      gap:12px;
2361      margin-top:34px;
2362      margin-bottom:60px;
2363    }
2364
2365    .jp-guarantee-btn{
2366      display:inline-flex;
2367      align-items:center;
2368      justify-content:center;
2369      min-width:220px;
2370      padding:14px 24px;
2371      border-radius:12px;
2372      text-decoration:none;
2373      font-size:1rem;
2374      font-weight:800;
2375      transition:transform .2s ease, background .2s ease, box-shadow .2s ease;
2376    }
2377
2378    .jp-guarantee-btn:hover{
2379      transform:translateY(-2px);
2380    }
2381
2382    .jp-guarantee-btn-primary{
2383      background:#2eaf4a;
2384      color:#fff;
2385      box-shadow:0 12px 28px rgba(46,175,74,0.24);
2386    }
2387
2388    .jp-guarantee-btn-primary:hover{
2389      background:#27953e;
2390    }
2391
2392    .jp-guarantee-btn-secondary{
2393      background:#ffc107;
2394      color:#111;
2395      box-shadow:0 12px 28px rgba(255,193,7,0.22);
2396    }
2397
2398    .jp-guarantee-btn-secondary:hover{
2399      background:#e3ab05;
2400    }
2401
2402    .jp-faq-block{
2403      max-width:1000px;
2404      margin:0 auto;
2405    }
2406
2407    .jp-faq-head{
2408      text-align:center;
2409      margin-bottom:28px;
2410    }
2411
2412    .jp-faq-list{
2413      display:flex;
2414      flex-direction:column;
2415      gap:14px;
2416    }
2417
2418    .jp-faq-item{
2419      background:#fff;
2420      border:1px solid rgba(0,0,0,0.07);
2421      border-radius:18px;
2422      box-shadow:0 10px 26px rgba(0,0,0,0.05);
2423      overflow:hidden;
2424    }
2425
2426    .jp-faq-item summary{
2427      list-style:none;
2428      cursor:pointer;
2429      padding:20px 22px;
2430      font-size:1.06rem;
2431      font-weight:800;
2432      color:#1f1f1f;
2433      font-family:'Segoe UI', sans-serif;
2434      position:relative;
2435      padding-right:54px;
2436    }
2437
2438    .jp-faq-item summary::-webkit-details-marker{
2439      display:none;
2440    }
2441
2442    .jp-faq-item summary:after{
2443      content:"+";
2444      position:absolute;
2445      right:20px;
2446      top:50%;
2447      transform:translateY(-50%);
2448      font-size:1.4rem;
2449      font-weight:900;
2450      color:#2e9e45;
2451    }
2452
2453    .jp-faq-item[open] summary:after{
2454      content:"–";
2455    }
2456
2457    .jp-faq-answer{
2458      padding:0 22px 22px;
2459      font-size:1rem;
2460      line-height:1.75;
2461      color:#444;
2462      font-family:'Segoe UI', sans-serif;
2463    }
2464
2465    @media (max-width: 1024px){
2466      .jp-guarantee-content{
2467        grid-template-columns:1fr;
2468      }
2469
2470      .jp-guarantee-badge-card{
2471        max-width:420px;
2472        margin:0 auto;
2473      }
2474
2475      .jp-guarantee-services{
2476        grid-template-columns:repeat(2, minmax(0, 1fr));
2477      }
2478    }
2479
2480    @media (max-width: 767px){
2481      .jp-guarantee-faq-section{
2482        padding:56px 16px;
2483      }
2484
2485      .jp-guarantee-top{
2486        margin-bottom:28px;
2487      }
2488
2489      .jp-guarantee-top p,
2490      .jp-faq-head p{
2491        font-size:1rem;
2492        line-height:1.7;
2493      }
2494
2495      .jp-guarantee-services{
2496        grid-template-columns:1fr;
2497        gap:16px;
2498      }
2499
2500      .jp-service-col{
2501        padding:20px 18px;
2502        border-radius:16px;
2503      }
2504
2505      .jp-guarantee-badge-card{
2506        padding:22px 16px;
2507        border-radius:18px;
2508      }
2509
2510      .jp-guarantee-badge-card img{
2511        max-width:180px;
2512      }
2513
2514      .jp-guarantee-btn{
2515        width:100%;
2516        min-width:0;
2517      }
2518
2519      .jp-faq-item summary{
2520        padding:18px 18px;
2521        padding-right:46px;
2522        font-size:1rem;
2523      }
2524
2525      .jp-faq-answer{
2526        padding:0 18px 18px;
2527      }
2528    }
2529  </style>
2530</section>
2531
2532    </div>
2533
2534
2535
2536    <style>
2537      #post_11611095 {
2538        --ss-post-vertical-spacing: 0px;
2539        --ss-post-background-color: #ffffff;
2540
2541
2542
2543
2544        
2545      }
2546    </style>
2547
2548</article></div>
2549
2550		
2551<div class="post-container">
2552  <article class="post post-html max-width" id="post_12003545" data-id="12003545" data-type="Html">
2553      <div class="bg-outer" data-video-provider="">
2554          <div class="bg-inner"></div>
2555      </div>
2556
2557    <div class="post-body">
2558        <!-- Elfsight Contact Form | Untitled Contact Form 5 -->
2559<script src="https://elfsightcdn.com/platform.js" async></script>
2559
2560<div class="elfsight-app-7f2da393-c592-4591-9b77-2d3da609ebb6" data-elfsight-app-lazy></div>
2561
2562    </div>
2563
2564
2565
2566    <style>
2567      #post_12003545 {
2568        --ss-post-vertical-spacing: 0px;
2569        --ss-post-background-color: var(--ss-color-70529);
2570
2571          --ss-post-overlay: color-mix(in srgb, var(--ss-color-70529) calc(100% * 0.85), transparent);
2572
2573          --ss-post-background-image: url('https://d14tal8bchn59o.cloudfront.net/rnC72F_J3J2rjj19lvMhGh8Xyvtwujl2TgJJul0WbOc/w:960/fn:jan-huber-4OhFZSAT3sw-unsplash/plain/s3://multisiteadmin-production/pwnkltia61jvjzx9wahfebi7lyqf');
2574          --ss-post-background-image-large: url('https://d14tal8bchn59o.cloudfront.net/AkNy-TKsOl38Xxu9Mpv9dIplbxLCFiqcCCSD2nNBZ3M/w:1920/fn:jan-huber-4OhFZSAT3sw-unsplash/plain/s3://multisiteadmin-production/pwnkltia61jvjzx9wahfebi7lyqf');
2575
2576
2577        
2578      }
2579    </style>
2580
2581</article></div>
2582
2583</div>
2584
2585
2586
2587<style>
2588:root {
2589  --ss-posts-count: 6;
2590}
2591</style>
2592
2593      </main>
2594
2595        <footer class="footer-container ">
2596          <div class="footer-inner-container">
2597            <div class="footer">
2598
2599              <div class="footer__content footer__content--two_column">
2600  <style>
2601    :root {
2602        --ss-footer-color: var(--ss-color-70528);
2603        --ss-footer-background-opacity: 0.89;
2604        --ss-footer-headings-color: #ffffff;
2605        --ss-footer-text-color: #ffffff;
2606        --ss-footer-navigation-color: #ffffff;
2607        --ss-footer-social-icon-color: var(--ss-color-70528);
2608        --ss-footer-social-icon-background-color: #ffffff;
2609    }
2610  </style>
2611
2612
2613  <div class="footer__column">
2614    <div class="about">
2615      <div class="about-title wysiwyg-text"><div>About Our Company</div></div>
2616      <div class="about-content wysiwyg-text">
2617        <span class="font-size-s">Trees do so much for our homes and places of business. For instance, they provide shade and clean, fresh air for us to breathe. They can also contribute to the value of your home. On the other hand, a sick or dead tree can be dangerous and cause extensive damage to your property. Thus, doesn’t it make sense to invest in the care and maintenance of your trees?</span><br><br><br><span class="font-size-s"><a href="/privacy-policy"><span style="color:#ffffff;">Privacy Policy</span></a></span>
2618      </div>
2619    </div>
2620
2621          <div class="social-icons">
2622
2623        <div class="social-icons__networks">
2624            <a target="_blank" title="Visit JP Tree Service on Facebook Page" aria-label="Visit JP Tree Service on Facebook Page (opens in new window)" href="https://www.facebook.com/profile.php?id=61582449833551">
2625              <i class="fab fa-facebook-f"></i>
2626</a>            <a target="_blank" title="Visit JP Tree Service on Instagram" aria-label="Visit JP Tree Service on Instagram (opens in new window)" href="https://www.instagram.com/jptree.service/">
2627              <i class="fab fa-instagram"></i>
2628</a>        </div>
2629    </div>
2630
2631  </div>
2632
2633  <div class="footer__column">
2634    <div class="locations">
2635        <div class="location font-size-s">
2636            <div class="location__item">
2637              <div class="location__icon"><i class="fa-solid fa-map-marker-alt"></i></div>
2638              <div class="location__content">
2639                <a target="_blank" aria-label="View Map for 17 Elm Ave Upper Darby, PA 19082 (opens in new window)" data-track="/a/track_map_view" href="https://maps.google.com/maps?q=17+Elm+Ave%2C+Upper+Darby%2C+PA+19082&amp;z=15&amp;mrt=loc">17 Elm Ave Upper Darby, PA 19082</a>
2640              </div>
2641            </div>
2642
2643            <div class="location__item">
2644              <div class="location__icon">
2645                <i class="fa-solid fa-phone"></i>
2646              </div>
2647              <div class="location__content">
2648                    Phone:
2649
2650                  <a href="tel:%201%20%28610%29%20507-2386"> 1 (610) 507-2386</a><br>
2651              </div>
2652            </div>
2653
2654            <div class="location__item">
2655              <div class="location__icon"><i class="fa-solid fa-envelope"></i></div>
2656              <div class="location__content">
2657                  <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;
2657%4a%70%74%72%65%65%73%65%72%76%69%63%65%6a@%67%6d%61%69%6c.%63%6f%6d">&#74;&#112;&#116;&#114;&#101;&#101;&#115;&#101;&#114;&#118;&#105;&#99;&#101;&#106;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;</a><br>
2658              </div>
2659            </div>
2660
2661            <div class="location__item">
2662              <div class="location__icon">
2663                <i class="fa-solid fa-clock"></i>
2664              </div>
2665              <div class="location__content">
2666                  <span class="location-hours-day">Monday - Sunday:</span> Open 24 hours<br>
2667              </div>
2668            </div>
2669        </div>
2670    </div>
2671  </div>
2672
2673</div>
2674
2675            </div>
2676
2677            <nav aria-label="Site">
2678                <ul class="page-listing" data-behavior="site-navigation">
2679      <li>
2680
2681
2682          <a class="active" href="/">
2683            <div>
2684              Home
2685
2686            </div>
2687</a>
2688      </li>
2689      <li>
2690
2691
2692          <a class="" href="/about-us">
2693            <div>
2694              About Us
2695
2696            </div>
2697</a>
2698      </li>
2699      <li>
2700
2701
2702          <a class="" href="/our-services">
2703            <div>
2704              Our Services
2705
2706            </div>
2707</a>
2708      </li>
2709      <li>
2710
2711
2712          <a class="" href="/gallery">
2713            <div>
2714              Gallery
2715
2716            </div>
2717</a>
2718      </li>
2719      <li>
2720
2721
2722          <a class="" href="/reviews">
2723            <div>
2724              Reviews
2725
2726            </div>
2727</a>
2728      </li>
2729      <li>
2730
2731
2732          <a class="" href="/contact-us">
2733            <div>
2734              Contact Us
2735
2736            </div>
2737</a>
2738      </li>
2739
2740  </ul>
2741
2742            </nav>
2743
2744            <div class="copyright">
2745              Copyright &copy;2026 JP Tree Service. All Rights Reserved.
2746
2747            </div>
2748
2749
2750          </div>
2751        </footer>
2752    </div>
2753
2754    
2754<script>
2755      window.enable_paypal_online_store = false;
2756    </script>
2756
2757
2758    
2758<script src="/assets/application-1cf07c91de70aa1b855b2499925454311b288a4620f2ffe1907920add879d2d6.js"></script>
vendor: 119 bytes, lines 2758-2761
2758
2759
2760    <script src='https://www.google.com/recaptcha/api.js?render=explicit&onload=recaptchaLoadCallback'></script>
2761    
2761<script>
2762      window.recaptchaSiteKey = '6Lfj9UUUAAAAAE4AjXBcpuxOxAmq9-Nl6asnEbR6';
2763    </script>
2763
2764
2765    
2765<script>
2766      window.slideshowBreakpoints = [[480,3],[640,4],[800,5],[960,6]];
2767    </script>
2767
2768
2769    <!--[if (gte IE 10)|!(IE)]><!-->
2770
2771
2772    <!--<![endif]-->
2773
2774    
2775
2776    
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788<style>
2789  .post.post-html.full-width.visible {
2790    --ss-post-vertical-spacing: 0 !important;
2791    padding: 0 !important;
2792    margin: 0 !important;
2793    background: transparent !important;
2794  }
2795  .post.post-html.full-width.visible .post-body {
2796    padding: 0 !important;
2797    margin: 0 !important;
2798    background: transparent !important;
2799  }
2800</style>
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810<!-- =====================================================
2811     SITESWAN FULL-WIDTH HTML FIX
2812     Restores full-width custom HTML sections
2813====================================================== -->
2814
2815<style>
2816
2817/* SiteSwan HTML Post — Force Full Width */
2818article.post.post-html,
2819article.post.post-html.max-width,
2820.post.post-html.max-width,
2821.post-html.max-width {
2822    width: 100% !important;
2823    max-width: none !important;
2824    margin-left: 0 !important;
2825    margin-right: 0 !important;
2826    padding-left: 0 !important;
2827    padding-right: 0 !important;
2828}
2829
2830/* Remove width restriction from HTML post body */
2831article.post.post-html > .post-body,
2832.post.post-html > .post-body,
2833.post-html .post-body {
2834    width: 100% !important;
2835    max-width: none !important;
2836    margin-left: 0 !important;
2837    margin-right: 0 !important;
2838    padding-left: 0 !important;
2839    padding-right: 0 !important;
2840}
2841
2842/* Make custom HTML content use the full available width */
2843article.post-html .post-body > section,
2844article.post-html .post-body > header,
2845article.post-html .post-body > footer,
2846article.post-html .post-body > main {
2847    max-width: none !important;
2848}
2849
2850/* Prevent accidental horizontal scrollbar */
2851html,
2852body {
2853    overflow-x: hidden;
2854}
2855
2856</style>
2857  </body>
2858</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.