1<!DOCTYPE html> 2<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 3<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 4<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> 5<!--[if IE 9]> <html class="no-js ie9"> <![endif]--> 6<!--[if gt IE 8]><!--> 7<html class="no-js" lang="en-US"> <!--<![endif]--> 8 9<head> 10 11 <meta charset="UTF-8" /> 12 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
12<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:"1386154133",accountID:"4372814",trustKey:"66686",xpid:"UAUAU15SDBABV1BaAgMDVVAB",licenseKey:"NRJS-ffbc3c15bbce2bcb1ca",applicationID:"1318524340",browserID:"1386154133"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */ 13(()=>{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.322.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};
13e.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;
13const 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);
13if(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$:()=>
13o,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])}
13(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}
13;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.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
13{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-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};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.322.0.PROD"]=self["webpackChunk:NRBA-1.322.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
13ine_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()=>
13{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)=>
13null==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
13dTimingMethod(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
13imeToRegister: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})})}
13return 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=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}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"
13!==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);
13if(!(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)}
13);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)})});
13class 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
13h(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>
13 14 15 <meta name="viewport" content="width=device-width, initial-scale=1"> 16 17 <title>Philadelphia 2026: Celebrate America's 250th Anniversary</title> 18 19 <link rel="profile" href="http://gmpg.org/xfn/11" /> 20 <link rel="pingback" href="https://www.discoverphl.com/xmlrpc.php" /> 21
21<script> 22 // Vanilla JS Defer helper method for elimnating render blocking js including jQuery 23 function defer(method) { 24 if (window.jQuery) { 25 method(); 26 } else { 27 setTimeout(function() { 28 defer(method) 29 }, 50); 30 } 31 } 32 </script>
32 33 <!-- Start cookieyes banner --> 34 <!--
34<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/37c27265c6259f66a0b40337/script.js"></script>
34 End cookieyes banner --> 35 <!-- recaptcha enterprise --> 36
36<script src=https://www.google.com/recaptcha/enterprise.js?render=6LfAHssZAAAAAClKikT6P7e4Ip0vpLNbQsAbGrf4></script>
36 37 <!-- recaptcha enterprise --> 38 <!-- consent helper script, gtm/cookieyes --> 39
39<script> 40 window.dataLayer = window.dataLayer || []; 41 42 function gtag() { 43 dataLayer.push(arguments); 44 } 45 gtag("consent", "default", { 46 ad_storage: "denied", 47 ad_user_data: "denied", 48 ad_personalization: "denied", 49 analytics_storage: "denied", 50 functionality_storage: "denied", 51 personalization_storage: "denied", 52 security_storage: "granted", 53 wait_for_update: 2000, 54 }); 55 gtag("set", "ads_data_redaction", true); 56 gtag("set", "url_passthrough", true); 57 </script>
57 58 <!-- consent helper script, gtm/cookieyes --> 59 60 61 <!-- Google Tag Manager --> 62
62<script>
vendor: 554 bytes, lines 62-76
62 63 (function(w, d, s, l, i) { 64 w[l] = w[l] || []; 65 w[l].push({ 66 'gtm.start': new Date().getTime(), 67 event: 'gtm.js' 68 }); 69 var f = d.getElementsByTagName(s)[0], 70 j = d.createElement(s), 71 dl = l != 'dataLayer' ? '&l=' + l : ''; 72 j.async = true; 73 j.src = 74 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 75 f.parentNode.insertBefore(j, f); 76 })(window, document, 'script', 'dataLayer', '
76GTM-WV69RX
vendor: 8 bytes, lines 76-77
76'); 77
77</script>
77 78 <!-- End Google Tag Manager --> 79 80 81 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
82<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/37c27265c6259f66a0b40337/script.js"></script>
82 83 <!-- This site is optimized with the Yoast SEO plugin v28.5 - https://yoast.com/product/yoast-seo-wordpress/ --> 84 <meta name="description" content="As Americaâs birthplace, Philadelphia 2026 will be the centerpiece of the United Statesâ 250th birthday in Philadelphia 2026." /> 85 <link rel="canonical" href="https://www.discoverphl.com/blog-post/philadelphia-2026/" /> 86 <meta property="og:locale" content="en_US" /> 87 <meta property="og:type" content="article" /> 88 <meta property="og:title" content="Philadelphia 2026: Celebrate America's 250th Anniversary" /> 89 <meta property="og:description" content="As Americaâs birthplace, Philadelphia 2026 will be the centerpiece of the United Statesâ 250th birthday in Philadelphia 2026." /> 90 <meta property="og:url" content="https://www.discoverphl.com/blog-post/philadelphia-2026/" /> 91 <meta property="og:site_name" content="DiscoverPHL" /> 92 <meta property="article:modified_time" content="2026-06-25T13:39:46+00:00" /> 93 <meta property="og:image" content="https://www.discoverphl.com/wp-content/uploads/2024/06/July4th22-G.Widman_1sm-1920x1080-1.jpg" /> 94 <meta property="og:image:width" content="1920" /> 95 <meta property="og:image:height" content="1080" /> 96 <meta property="og:image:type" content="image/jpeg" /> 97 <meta name="twitter:card" content="summary_large_image" /> 98 <meta name="twitter:label1" content="Est. reading time" /> 99 <meta name="twitter:data1" content="14 minutes" /> 100
100<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/","url":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/","name":"Philadelphia 2026: Celebrate America's 250th Anniversary","isPartOf":{"@id":"https:\/\/www.discoverphl.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#primaryimage"},"image":{"@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#primaryimage"},"thumbnailUrl":"https:\/\/www.discoverphl.com\/wp-content\/uploads\/2024\/06\/July4th22-G.Widman_1sm-1920x1080-1.jpg","datePublished":"2026-06-18T12:12:53+00:00","dateModified":"2026-06-25T13:39:46+00:00","description":"As Americaâs birthplace, Philadelphia 2026 will be the centerpiece of the United Statesâ 250th birthday in Philadelphia 2026.","breadcrumb":{"@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#primaryimage","url":"https:\/\/www.discoverphl.com\/wp-content\/uploads\/2024\/06\/July4th22-G.Widman_1sm-1920x1080-1.jpg","contentUrl":"https:\/\/www.discoverphl.com\/wp-content\/uploads\/2024\/06\/July4th22-G.Widman_1sm-1920x1080-1.jpg","width":1920,"height":1080,"caption":"Photo by G. Widman for Visit Philadelphia®"},{"@type":"BreadcrumbList","@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.discoverphl.com\/"},{"@type":"ListItem","position":2,"name":"Blog Posts","item":"https:\/\/www.discoverphl.com\/blog-post\/"},{"@type":"ListItem","position":3,"name":"Philadelphia Celebrates Americaâs 250th Birthday With So Much to Do"}]},{"@type":"WebSite","@id":"https:\/\/www.discoverphl.com\/#website","url":"https:\/\/www.discoverphl.com\/","name":"DiscoverPHL","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.discoverphl.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
100 101 <!-- / Yoast SEO plugin. --> 102 103 104<link rel='dns-prefetch' href='//api.mapbox.com' /> 105<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 106<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.discoverphl.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.discoverphl.com%2Fblog-post%2Fphiladelphia-2026%2F" /> 107<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.discoverphl.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.discoverphl.com%2Fblog-post%2Fphiladelphia-2026%2F&format=xml" /> 108<style id="wp-img-auto-sizes-contain-inline-css"> 109img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 110/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 111</style> 112<link rel='stylesheet' id='map_style-css' href='https://api.mapbox.com/mapbox-gl-js/v2.9.1/mapbox-gl.css?ver=1' media='all' /> 113<link rel='stylesheet' id='map_geo_style-css' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v4.7.0/mapbox-gl-geocoder.css?ver=1' media='all' /> 114<link rel='stylesheet' id='main_style-css' href='https://www.discoverphl.com/wp-content/themes/pcvb/assets/dist/main.min.css?ver=1790721207' media='all' /> 115<link rel='stylesheet' id='custom_style-css' href='https://www.discoverphl.com/wp-content/themes/pcvb/assets/stylesheets/custom_style.css?ver=1790721207' media='all' /> 116<link rel='stylesheet' id='pcvb-newsletter-pop-out-style-css' href='https://www.discoverphl.com/wp-content/themes/pcvb/newsletter-pop-out/pcvb-newsletter-popout.css?ver=1790721207' media='all' /> 117<style id="wp-emoji-styles-inline-css"> 118 119 img.wp-smiley, img.emoji { 120 display: inline !important; 121 border: none !important; 122 box-shadow: none !important; 123 height: 1em !important; 124 width: 1em !important; 125 margin: 0 0.07em !important; 126 vertical-align: -0.1em !important; 127 background: none !important; 128 padding: 0 !important; 129 } 130/*# sourceURL=wp-emoji-styles-inline-css */ 131</style> 132 133 134<link rel='stylesheet' id='simple-favorites-css' href='https://www.discoverphl.com/wp-content/plugins/favorites/assets/css/favorites.css?ver=2.3.4' media='all' /> 135<link rel='stylesheet' id='tablepress-default-css' href='https://www.discoverphl.com/wp-content/plugins/tablepress/css/build/default.css?ver=3.3.4' media='all' /> 136<link rel='stylesheet' id='p10eb-styles-css' href='https://www.discoverphl.com/wp-content/plugins/p10-essential-blocks//assets/assets/dist/main.min.css?ver=7.1.2' media='all' />
137<script id="jquery-core-js" src="https://www.discoverphl.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 137
137
138<script id="favorites-js-extra"> 139var favorites_data = {"ajaxurl":"https://www.discoverphl.com/wp-admin/admin-ajax.php","nonce":"e2e92fa41e","favorite":"\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"35\" viewBox=\"0 0 40 35\" fill=\"none\"\u003E\u003Cpath d=\"M38.0526 10.4856C38.0526 5.17704 33.8007 1 28.5611 1C24.3303 1 20.7512 3.86864 19.5253 7.74468C18.2983 3.86915 14.7193 1.09983 10.4884 1.09983C5.24786 1.09983 1 5.15779 1 10.4684C1 13.148 2.08488 15.0412 3.83087 17.0671L19.534 33L35.2192 17.0671C36.9667 15.0412 38.0526 13.1632 38.0526 10.4856Z\" stroke=\"#fff\" stroke-width=\"2\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Cspan\u003EAdd to Favorites\u003C/span\u003E","favorited":"\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"35\" viewBox=\"0 0 40 35\" fill=\"none\"\u003E\u003Cpath d=\"M38.0526 10.4856C38.0526 5.17704 33.8007 1 28.5611 1C24.3303 1 20.7512 3.86864 19.5253 7.74468C18.2983 3.86915 14.7193 1.09983 10.4884 1.09983C5.24786 1.09983 1 5.15779 1 10.4684C1 13.148 2.08488 15.0412 3.83087 17.0671L19.534 33L35.2192 17.0671C36.9667 15.0412 38.0526 13.1632 38.0526 10.4856Z\" stroke=\"#fff\" stroke-width=\"2\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Cspan\u003EAdded to Favorites\u003C/span\u003E","includecount":"","indicate_loading":"","loading_text":"Loading","loading_image":"","loading_image_active":"","loading_image_preload":"","cache_enabled":"1","button_options":{"button_type":"custom","custom_colors":false,"box_shadow":false,"include_count":false,"default":{"background_default":false,"border_default":false,"text_default":false,"icon_default":false,"count_default":false},"active":{"background_active":false,"border_active":false,"text_active":false,"icon_active":false,"count_active":false}},"authentication_modal_content":"\u003Cp\u003EPlease login to add favorites.\u003C/p\u003E\n\u003Cp\u003E\u003Ca href=\"#\" data-favorites-modal-close\u003EDismiss this notice\u003C/a\u003E\u003C/p\u003E\n","authentication_redirect":"","dev_mode":"","logged_in":"","user_id":"0","authentication_redirect_url":"https://www.discoverphl.com/wp-login.php"}; 140//# sourceURL=favorites-js-extra 141</script>
vendor: 1 bytes, line 141
141
142<script id="favorites-js" src="https://www.discoverphl.com/wp-content/plugins/favorites/assets/js/favorites.min.js?ver=2.3.4"></script>
vendor: 1 bytes, line 142
142
143<script id="p10eb-essential-js" src="https://www.discoverphl.com/wp-content/plugins/p10-essential-blocks//assets/js/global.js?ver=7.1.2"></script>
143 144<link rel="https://api.w.org/" href="https://www.discoverphl.com/wp-json/" /><link rel='shortlink' href='https://www.discoverphl.com/?p=53978' /> 145<link rel="shortcut icon" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/favicon.ico?10/1/26-09:39:08" type="image/x-icon" /> 146<link rel="apple-touch-icon-precomposed" sizes="152x152" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-152x152.png?10/1/26-09:39:08" /> 147<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-144x144.png?10/1/26-09:39:08" /> 148<link rel="apple-touch-icon-precomposed" sizes="120x120" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-120x120.png?10/1/26-09:39:08" /> 149<link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-114x114.png?10/1/26-09:39:08" /> 150<link rel="apple-touch-icon-precomposed" sizes="76x76" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-76x76.png?10/1/26-09:39:08" /> 151<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-72x72.png?10/1/26-09:39:08" /> 152<link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-57x57.png?10/1/26-09:39:08" /> 153<link rel="apple-touch-icon-precomposed" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon.png?10/1/26-09:39:08" /> 154<style id="wp-custom-css"> 155/* Link styles in p text */ 156 157p > a { 158 font-size: 20px !important; 159} 160 161 162 163/* Tablepress Font Styles */ 164 165table.tablepress > tbody > tr td, table.tablepress > tbody > tr td a { 166 font-size: 18px !important; 167 line-height: 22px !important; 168} 169 170/* Other */ 171@media (min-width:768px){ 172 section.cb20-gravity-form{ 173 min-height:880px; 174 } 175} 176#p10-tutorial-container { 177 display: grid; 178 grid-template-columns: repeat(2, 40%)!important; 179 grid-gap: 15px; 180 margin-top: 75px; 181} 182p.wysiwyg-summary > * { 183 color: var(--Blue,#3256a6) !important; 184} 185 186/* Newsletter in Footer */ 187 188@media (min-width: 767px) { 189 footer .eb02-footer .footer-right-col a:first-of-type { 190 margin-left: 50px; 191 } 192} 193@media (max-width: 767px) { 194 body.page-id-12603 .sub-footer ul { 195 display: block !important; 196 margin: 0; 197} 198 body.page-id-12603 .cb24-favorites-modal { 199 display:none; 200 } 201} 202@media (max-width: 768px){ 203 204 205#michelinBannerWrapper #michelinBannerContent .text-after-anim *{ 206 opacity:1; 207} 208} 209 210/* michelin */ 211 212@media only screen and (max-width: 768px) { 213 #michelinPopup { 214 bottom: 0% !important; 215 } 216#michelinPopup.active { 217 width: fit-content; 218 height: -webkit-fill-available !important; 219 } 220} 221#michelinPopup p.restaurant-michelin-stars { 222 display: flex; 223 flex-direction: row; 224 justify-content: left; 225 align-items: center; 226} 227#michelinPopup div..michelin-popup-content span#michelinPopupBanner { 228 font-size: 18px; 229} 230 231@media (max-width: 1024px) { 232 .restaurants-pagination { 233 align-items: baseline; 234} 235 .restaurants-pagination .pagination-dots-wrapper { 236 margin-top: 25px; 237 } 238} 239 240/* 241 * 2025-10-27 fix for simpleview forms showing labels next to submit and reset buttons 242 */ 243form[name^="frm_"] label.label_hidden { 244 position: absolute; 245 width: 1px; 246 height: 1px; 247 padding: 0; 248 overflow: hidden; 249 clip: rect(0, 0, 0, 0); 250 white-space: nowrap; 251 border: 0; 252} 253 254/* World Cup Blocks */ 255@media screen and (max-width: 991.5px) { 256 .world-cup-background .slick-slide > div, .world-cup-background .slick-slide .game-slide { 257 max-width: 560px; 258 } 259 .game-schedule-slider .slick-slide { 260 max-width: 560px; 261 } 262} 263 264/* 12 June */ 265body.page-id-58291 section.p10-block.p10-bg-block.cb13-repeater-block .cb13-banner-image { 266 width: 100%; 267} 268body.page-id-58291 .cb05-related-content-columns svg { 269 width: 100% !important; 270} 271body.page-id-58291 section.p10-block.p10-bg-block.cb13-repeater-block .parallax-bg { 272 width: 100%; 273} 274</style> 275 276 <!-- Hotjar Tracking Code for Discover PHL --> 277
277<script>
vendor: 202 bytes, lines 277-283
277 278 (function(h, o, t, j, a, r) { 279 h.hj = h.hj || function() { 280 (h.hj.q = h.hj.q || []).push(arguments) 281 }; 282 h._hjSettings = { 283 hjid:
2835011875
vendor: 343 bytes, lines 283-292
283, 284 hjsv: 6 285 }; 286 a = o.getElementsByTagName('head')[0]; 287 r = o.createElement('script'); 288 r.async = 1; 289 r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv; 290 a.appendChild(r); 291 })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv='); 292
292</script>
292 293 <!-- Hotjar Tracking Code for Discover PHL --> 294 295
295<script> 296 (function(w, d, n){ 297 if (w.MAI) return; 298 w.MAI = w.MAI || {emit: function() {(w.MAI.q = w.MAI.q || []).push(arguments);}}; 299 var e = d.createElement(n); 300 e.async = 1; 301 e.src = 'https://cdn.mgln.ai/pixel.min.js'; 302 var s = d.getElementsByTagName(n)[0]; 303 s.parentNode.insertBefore(e, s); 304 })(window, document, 'script'); 305 MAI.emit('conf', '01a0cf79e8507e9e94dbefbc7e89364f'); 306 MAI.emit('view'); 307 </script>
307 308</head> 309<body class="wp-singular blog-post-template-default single single-blog-post postid-53978 wp-theme-pcvb interior-page" style="opacity:0.01; transition:all 0.5s"> 310 311 312 313 314 315 316 317 318 <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 318-319
318 319 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
319GTM-WV69RX
vendor: 87 bytes, lines 319-320
319" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 320
320<!-- End Google Tag Manager (noscript) --> 321 <div id="site"> 322 <div id="skip-container" role="region" aria-label="skip to content"> 323 <a id="skip-to-content" href="#main" tabindex="0" aria-label="skip to content"> 324 Skip to content 325 </a> 326 </div> 327 328 <div class="searchform-wrap" id="global-search" aria-modal="true" aria-label="sitewide search" role="dialog"> 329 <div class="large-frame"> 330 331 <form role="search" method="get" id="searchform" class="searchform" aria-label="sitewide search popup" action="https://www.discoverphl.com/"> 332 <div> 333 <!-- <label class="screen-reader-text" for="s">Search for:</label> --> 334 335 <input type="text" value="" name="s" placeholder="Search" id="s"> 336 <div class="search-submit-wrap"> 337 <svg width="56" height="55" viewBox="0 0 56 55" fill="none" xmlns="http://www.w3.org/2000/svg"> 338<circle cx="21.1763" cy="20.8867" r="12.7694" transform="rotate(-45 21.1763 20.8867)" stroke="#3256A6" stroke-width="4.00012"/> 339<line x1="44.5623" y1="44.4943" x2="34.1187" y2="34.0507" stroke="#3256A6" stroke-width="4.00012"/> 340</svg> 341 <input type="submit" id="searchsubmit" aria-label="search submit" value=""> 342 </div> 343 </div> 344 <div class="form-close"> 345 <a href="javascript:void(0)" class="form-close-btn nav-close-icon">Close <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 346 <path d="M18.6807 1L0.999999 19M19 19L1.31932 0.999999" stroke="#3256A6" stroke-width="2" /> 347 </svg></a> 348 </div> 349 </form> 350 <a href="javascript:void(0)" class="form-close-btn nav-close-icon mobile-close-form" aria-label="close search input"> 351 <svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 352 <path d="M1.125 1.9455L18.2778 19.2048M18.2778 1.63379L1.125 18.8931" stroke="white" stroke-width="2" /> 353 </svg> 354 </a> 355 </div> 356 </div> 357 <header> 358 <div class="large-frame flex-wrapper space-between center"> 359 <div class="nav-wrap"> 360 361 362 <div class="main-nav"> 363 <ul class="convention_"> 364 <li id="menu-item-12065" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-12065"><a href="https://www.discoverphl.com/meet/">Meet</a> 365<ul class="sub-menu"> 366 <li id="menu-item-6346" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6346"><a href="https://www.discoverphl.com/meet/">Start Planning</a></li> 367 <li id="menu-item-12933" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12933"><a href="https://www.discoverphl.com/meet/venues/">Search Venues & Services</a></li> 368 <li id="menu-item-6522" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6522"><a href="https://www.discoverphl.com/meet/toolkit/">Planner Tools & Resources</a></li> 369 <li id="menu-item-12873" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12873"><a href="https://www.discoverphl.com/meet/recent-developments/">What’s New</a></li> 370 <li id="menu-item-6523" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6523"><a href="https://www.discoverphl.com/meet/pa-convention-center/">PA Convention Center</a></li> 371 <li id="menu-item-6525" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6525"><a href="https://www.discoverphl.com/meet/expertise/">Business Divisions: <br />Diversity, Life Sciences, Sports</a></li> 372</ul> 373</li> 374<li id="menu-item-15485" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-15485"><a href="https://www.discoverphl.com/travel-trade/">Travel Trade</a> 375<ul class="sub-menu"> 376 <li id="menu-item-15486" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15486"><a href="https://www.discoverphl.com/travel-trade/">International Travel</a></li> 377 <li id="menu-item-59322" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-59322"><a href="https://www.discoverphl.com/travel-trade/visitor-guides/">International Visitors Guides</a></li> 378 <li id="menu-item-6527" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6527"><a href="https://www.discoverphl.com/travel-trade/group-tours/">Group Tours</a></li> 379 <li id="menu-item-55274" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55274"><a href="https://www.discoverphl.com/travel-trade/contact/">Global Tourism Team</a></li> 380</ul> 381</li> 382<li id="menu-item-11968" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-11968"><a href="https://www.discoverphl.com/partner-overview/">Partners</a> 383<ul class="sub-menu"> 384 <li id="menu-item-6528" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6528"><a href="https://www.discoverphl.com/partner-overview/">Join</a></li> 385 <li id="menu-item-6530" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6530"><a target="_blank" href="https://philadelphiapa.extranet.simpleviewcrm.com/login/">Partner Login</a></li> 386 <li id="menu-item-58121" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-58121"><a href="https://www.discoverphl.com/partner-overview/events/">Partner Events</a></li> 387 <li id="menu-item-6529" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6529"><a href="https://www.discoverphl.com/business-directory/">Partner Directory</a></li> 388</ul> 389</li> 390<li id="menu-item-6531" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-6531"><a href="https://www.discoverphl.com/discover/">Discover</a> 391<ul class="sub-menu"> 392 <li id="menu-item-12357" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12357"><a href="https://www.discoverphl.com/discover/">Plan Your Visit</a></li> 393 <li id="menu-item-55005" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55005"><a href="https://www.discoverphl.com/discover/highlighted-experiences/">Curated Experiences</a></li> 394 <li id="menu-item-12361" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12361"><a href="https://www.discoverphl.com/discover/explore-philadelphia-neighborhoods/">Neighborhoods</a></li> 395 <li id="menu-item-12359" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12359"><a href="https://www.discoverphl.com/discover/where-to-eat/">Where to Eat</a></li> 396 <li id="menu-item-12358" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12358"><a href="https://www.discoverphl.com/discover/where-to-stay/">Where to Stay</a></li> 397 <li id="menu-item-12360" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12360"><a href="https://www.discoverphl.com/discover/things-to-do/">Things to Do</a></li> 398</ul> 399</li> 400<li id="menu-item-6532" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-6532"><a href="https://www.discoverphl.com/contact-our-team/">Contact</a></li> 401 </ul> 402 403 404 <div id="p10-lang-selector-mobile" class="lang-selector p10-lang-selector menu-item mobile"> 405 <a href="javascript:void(0);" class="p10-lang-select-btn" aria-label="language selector"> 406 <svg class="world" width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"> 407<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1248 2.88513C13.2994 2.95076 12.0089 3.24713 10.9607 3.6117C10.285 3.84672 8.81795 4.5806 8.19568 4.99492C5.38699 6.86494 3.35595 9.74705 2.52697 13.039C2.2633 14.0863 2.2009 14.6605 2.20242 16.0273C2.20347 16.9904 2.23131 17.5173 2.30578 17.9827C2.75027 20.7621 3.9931 23.2129 6.00439 25.2763C8.69613 28.0378 12.3081 29.4404 16.117 29.2033C17.9564 29.0888 19.39 28.7261 20.972 27.975C24.5742 26.2648 27.2833 22.9451 28.2392 19.0703C28.4849 18.0742 28.5834 17.2765 28.5933 16.2031C28.6032 15.1342 28.5293 14.3751 28.3252 13.4492C27.6664 10.4603 26.0389 7.79207 23.6724 5.82109C22.7099 5.01941 21.109 4.10646 19.8377 3.6342C18.9522 3.30519 17.5604 2.97414 16.7725 2.905C16.1303 2.84869 14.7169 2.83808 14.1248 2.88513ZM11.9275 5.71779C10.9303 6.05318 10.2426 6.38283 9.43728 6.9114C8.86008 7.29027 7.97244 7.97974 7.97244 8.04924C7.97244 8.07109 8.03174 8.12617 8.10428 8.1717C8.3666 8.33629 9.84539 9.05465 9.92191 9.05465C9.96504 9.05465 10.1746 8.70525 10.3877 8.27828C10.9933 7.06433 11.6016 6.32043 12.4799 5.71955C12.7193 5.55584 12.8907 5.42195 12.8608 5.42201C12.8309 5.42213 12.4109 5.55525 11.9275 5.71779ZM17.8169 5.47363C17.8172 5.49349 17.9779 5.59779 18.1738 5.70543C18.9609 6.13785 19.8187 7.15732 20.431 8.38808C20.7495 9.02834 20.7739 9.06033 20.9173 9.02459C21.1325 8.97092 22.4462 8.3149 22.6209 8.17381L22.7674 8.0555L22.4451 7.76049C21.6816 7.06158 20.1507 6.17418 19.0281 5.77967C18.4591 5.57974 17.8158 5.4172 17.8169 5.47363ZM14.1995 6.68388C13.4623 6.88246 12.7494 7.3876
4075 12.2269 8.08181C11.9252 8.48277 11.4881 9.29799 11.4881 9.45982C11.4881 9.49357 11.5606 9.53705 11.6492 9.55644C11.7378 9.5759 11.8477 9.60361 11.8934 9.61808C12.057 9.67 13.5524 9.87531 14.0388 9.91269L14.5349 9.95084V8.2723C14.5349 7.34904 14.5283 6.59547 14.5203 6.59758C14.5123 6.59968 14.3679 6.63853 14.1995 6.68388ZM16.2342 8.28543V9.93355H16.5162C17.0593 9.93355 19.0469 9.63185 19.2237 9.52263C19.2917 9.48056 19.2563 9.37099 19.0308 8.92597C18.3807 7.64236 17.4577 6.83295 16.4627 6.67386L16.2342 6.6373V8.28543ZM23.582 9.58603C23.0941 9.9373 22.4673 10.2678 21.8112 10.5197C21.4191 10.6703 21.3311 10.7259 21.3613 10.8036C21.5464 11.28 21.8681 13.0312 22.0027 14.295C22.0539 14.7764 22.1107 15.1851 22.1288 15.2032C22.1469 15.2214 23.0941 15.2438 24.2337 15.253L26.3056 15.2699L26.275 15.048C26.0085 13.1161 25.4091 11.4467 24.4491 9.96285C24.3032 9.73726 24.1393 9.4948 24.0848 9.42402L23.9859 9.29529L23.582 9.58603ZM6.49066 9.71383C5.43574 11.2158 4.69394 13.1639 4.53797 14.8417L4.49859 15.2656H6.58441H8.67023L8.69994 15.0752C8.71623 14.9704 8.759 14.5683 8.79492 14.1816C8.87437 13.3259 9.10101 11.9717 9.28822 11.2337L9.42656 10.6883L9.30011 10.6415C9.23051 10.6158 9.01541 10.5365 8.82205 10.4652C8.31879 10.2796 7.59246 9.9025 7.16396 9.60437C6.96099 9.46316 6.78433 9.34761 6.77144 9.34761C6.75849 9.34761 6.63217 9.51244 6.49066 9.71383ZM10.8789 11.2666C10.6868 11.8986 10.3963 13.6803 10.3391 14.5771L10.2989 15.207H12.4462H14.5935V13.4528V11.6986L14.3445 11.6676C14.2075 11.6507 13.9109 11.6208 13.6853 11.6012C13.2042 11.5595 12.4646 11.4459 11.6054 11.2816C10.8643 11.1399 10.917 11.1411 10.8789 11.2666ZM19.2224 11.2567C18.6988 11.3711 17.3668 11.5608 16.7469 11.609L16.2342 11.6489V13.428V15.207H18.3505H20.4669L20.426 14.6357C20.4035 14.3215 20.3747 13.9853 20.3621 13.8886C20.3495 13.792 20.3105 13.4887 20.2754 13.2148C20.2112 12.7132 20.0386 11.818 19.9242 11.3933C19.8534 11.1304 19.825 11.1248 19.2224 11.2567ZM4.77551 16.9011L4.47896 16.9355L4.55502 17.4628C4.73256 18.6938 5.13228 19.9677 5.68799 21.0735C5.9775 21.6495 6.61863 22.6601 6.74355 22.7372C6.77812 22.7587 6.99627 22.6467 7.2283 22.4884C7.84834 22.0656 8.14207 21.9076 8.77793 21.6545C9.44455 21.3892 9.41349 21.4783 9.18709 20.4804C9.02912 19.7845 8.77336 18.099 8.70469 17.3017L8.66554 16.8476L6.86883 16.8572C5.88058 16.8624 4.93863 16.8822 4.77551 16.9011ZM10.3168 17.0966C10.3185 17.7798 10.5484 19.4102 10.792 20.4673C10.8939 20.9096 10.935 21.0055 11.0122 20.9819C11.4385 20.852 14.0333 20.4804 14.5138 20.4804C14.5254 20.4804 14.5349 19.663 14.5349 18.664V16.8476H12.4256H10.3162L10.3168 17.0966ZM16.2342 18.6847V20.5217L16.8549 20.5619C17.5268 20.6054 18.453 20.7248 19.1849 20.8625C19.8811 20.9935 19.8358 21.0163 19.9734 20.4658C20.2023 19.5504 20.4529 17.7162 20.4529 16.9563C20.4529 16.8525 20.3588 16.8476 18.3435 16.8476H16.2342V18.6847ZM22.0689 16.9795C22.054 17.052 22.0278 17.3618 22.0106 17.6679C21.9567 18.6246 21.5786 20.7423 21.3598 21.3125C21.3362 21.3739 21.4807 21.4558 21.901 21.6193C22.5274 21.8631 23.1253 22.1867 23.5998 22.5391C23.7676 22.6636 23.9317 22.7656 23.9645 22.7656C24.0536 22.7656 24.6916 21.7912 25.0494 21.1089C25.632 19.9977 26.1352 18.3801 26.2275 17.3215L26.2688 16.8476H24.1823H22.0958L22.0689 16.9795ZM13.6267 22.2191C12.4784 22.3619 11.4881 22.5689 11.4881 22.666C11.4881 22.6944 11.6105 22.9547 11.7601 23.2444C12.0991 23.9008 12.5506 24.4834 12.9725 24.8089C13.3127 25.0714 13.9438 25.3649 14.3152 25.4334L14.5349 25.474V23.8268V22.1796L14.1687 22.1884C13.9673 22.1932 13.7234 22.2071 13.6267 22.2191ZM16.2342 23.8249V25.4702L16.4246 25.4296C17.2333 25.2573 18.0102 24.7426 18.4888 24.0621C18.8172 23.5952 19.3159 22.6637 19.2648 22.6127C19.1681 22.516 16.9863 22.1796 16.4556 22.1796H16.2342V23.8249ZM20.5309 23.5175C19.9568 24.7696 19.0235 25.9158 18.1678 26.4197C17.7918 26.641 17.7899 26.6434 18.0213 26.6039C18.3792 26.5427 19.3065 26.2345 19.8774 25.9868C20.7046 25.6281 21.6572 25.0129 22.5002 24.2934L22.804 24.034L22.4634 23.8369C22.1046 23.6294 21.1628 23.1614 20.9118 23.0659C20.769 23.0116 20.7556 23.0275 20.5309 23.5175ZM9.54896 23.1962C9.23086 23.327 8.28053 23.8227 8.0768 23.9639C7.98592 24.027 8.00021 24.0566 8.22328 24.2673C8.84508 24.8546 9.74215 25.4505 10.6811 25.8999C11.5721 26.3263 13.4027 26.878 12.6892 26.5051C12.292 26.2974 11.7366 25.8207 11.3805 25.3818C10.8725 24.7555 10.6901 24.4671 10.3353 23.7293C10.1579 23.3604 9.9822 23.0592 9.94476 23.06C9.90732 23.0607 9.72926 23.122 9.54896 23.1962Z" fill="white"/> 408</svg> 409 Language <svg class="arrow" width="8" height="5" viewB
409ox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg"> 410 <path d="M4 4.66699L0.535899 0.666991L7.4641 0.666992L4 4.66699Z" fill="#FAF6F2" /> 411 </svg> 412 </a> 413 <div class="gtranslate_wrapper" id="gt-wrapper-60558940"></div> <a href="javascript:void(0);" class="p10-lang-select-mob-close"> 414 <svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 415 <path d="M1.125 1.9455L18.2778 19.2048M18.2778 1.63379L1.125 18.8931" stroke="white" stroke-width="2" /> 416 </svg> 417 </a> 418 419 </div> 420 </div> 421 422 423 <div id="logo"> 424 <a aria-label="Home" href="https://www.discoverphl.com" id="logo-link"><img data-mobopen="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/Plan-your-next-event-in-Philadelphia.svg" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/pcvb-logo.svg" data-src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/pcvb-logo.svg" alt="Logo" id="logo-img" /></a> 425 426 <div class="mobile-controls"> 427 <a href="javascript:void(0)" class="search-icon mob nav-search-icon" aria-label="Sitewide Search"> 428 <svg width="29" height="32" viewBox="0 0 29 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 429<circle cx="11.4433" cy="11.2363" r="6.38452" transform="rotate(-45 11.4433 11.2363)" stroke="white" stroke-width="2"/> 430<line x1="23.1376" y1="23.0391" x2="17.916" y2="17.8175" stroke="white" stroke-width="2"/> 431</svg> 432 </a> 433 <a href="javascript:void(0)" aria-label="activate mobile menu" class="mobile-toggle"> 434 <span class="bar-1"></span> 435 <span class="bar-2"></span> 436 <span class="bar-3"></span> 437 </a> 438 439 </div> 440 </div> 441 <div class="util-nav"> 442 443 <a href="javascript:void(0)" class="nav-search-icon search-icon" aria-label="Sitewide Search"> 444 <svg width="29" height="32" viewBox="0 0 29 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 445<circle cx="11.4433" cy="11.2363" r="6.38452" transform="rotate(-45 11.4433 11.2363)" stroke="white" stroke-width="2"/> 446<line x1="23.1376" y1="23.0391" x2="17.916" y2="17.8175" stroke="white" stroke-width="2"/> 447</svg> 448 </a> 449 <a href="https://www.discoverphl.com/submit-rfp/" target="_self" class="btn-base light-blue arrow"><span>Submit RFP</span><svg xmlns="http://www.w3.org/2000/svg" width="22" height="9" viewBox="0 0 22 9" fill="none"><path d="M22 4.5L14.5 0.169873V8.83013L22 4.5ZM0 5.25H15.25V3.75H0V5.25Z" fill="#FF4D00"/></svg></a><a href="javascript:void(0)" target="_self" class="btn-base white favorite view-my-favorites"><span>View My Favorites</span><svg xmlns="http://www.w3.org/2000/svg" width="14" height="13" viewBox="0 0 14 13" fill="none"><path d="M6.52326 3.18121L6.99984 4.67521L7.476 3.18108C7.87729 1.92189 9.04617 1 10.4137 1C12.1236 1 13.5 2.34885 13.5 4.05711C13.5 4.88567 13.1777 5.47478 12.5627 6.18491L7.00272 11.7902L1.43634 6.18488C0.822806 5.47576 0.5 4.88086 0.5 4.05065C0.5 2.34951 1.86674 1.03744 3.58511 1.03744C4.96079 1.03744 6.12416 1.93009 6.52326 3.18121Z" stroke="white"/></svg></a> <div id="p10-lang-selector" class="lang-selector p10-lang-selector menu-item desktop"> 450 <a href="javascript:void(0);" class="p10-lang-select-btn" aria-label="Language Selector"> 451 <svg class="world" width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"> 452<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1248 2.88513C13.2994 2.95076 12.0089 3.24713 10.9607 3.6117C10.285 3.84672 8.81795 4.5806 8.19568 4.99492C5.38699 6.86494 3.35595 9.74705 2.52697 13.039C2.2633 14.0863 2.2009 14.6605 2.20242 16.0273C2.20347 16.9904 2.23131 17.5173 2.30578 17.9827C2.75027 20.7621 3.9931 23.2129 6.00439 25.2763C8.69613 28.0378 12.3081 29.4404 16.117 29.2033C17.9564 29.0888 19.39 28.7261 20.972 27.975C24.5742 26.2648 27.2833 22.9451 28.2392 19.0703C28.4849 18.0742 28.5834 17.2765 28.5933 16.2031C28.6032 15.1342 28.5293 14.3751 28.3252 13.4492C27.6664 10.4603 26.0389 7.79207 23.6724 5.82109C22.7099 5.01941 21.109 4.10646 19.8377 3.6342C18.9522 3.30519 17.5604 2.97414 16.7725 2.905C16.1303 2.84869 14.7169 2.83808 14.1248 2.88513ZM11.9275 5.71779C10.9303 6.05318 10.2426 6.38283 9.43728 6.9114C8.86008 7.29027 7.97244 7.97974 7.97244 8.04924C7.97244 8.07109 8.03174 8.12617 8.10428 8.1717C8.3666 8.33629 9.84539 9.05465 9.92191 9.05465C9.96504 9.05465 10.1746 8.70525 10.3877 8.27828C10.9933 7.06433 11.6016 6.32043 12.4799 5.71955C12.7193 5.55584 12.8907 5.42195 12.8608 5.42201C12.8309 5.42213 12.4109 5.55525 11.9275 5.71779ZM17.8169 5.47363C17.8172 5.49349 17.9779 5.59779 18.1738 5.70543C18.9609 6.13785 19.8187 7.15732 20.431 8.38808C20.7495 9.02834 20.7739 9.06033 20.9173 9.02459C21.1325 8.97092 22.4462 8.3149 22.6209 8.17381L22.7674 8.0555L22.4451 7.76049C21.6816 7.06158 20.1507 6.17418 19.0281 5.77967C18.4591 5.57974 17.8158 5.4172 17.8169 5.47363ZM14.1995 6.68388C13.4623 6.88246 12.7494 7.3876
4525 12.2269 8.08181C11.9252 8.48277 11.4881 9.29799 11.4881 9.45982C11.4881 9.49357 11.5606 9.53705 11.6492 9.55644C11.7378 9.5759 11.8477 9.60361 11.8934 9.61808C12.057 9.67 13.5524 9.87531 14.0388 9.91269L14.5349 9.95084V8.2723C14.5349 7.34904 14.5283 6.59547 14.5203 6.59758C14.5123 6.59968 14.3679 6.63853 14.1995 6.68388ZM16.2342 8.28543V9.93355H16.5162C17.0593 9.93355 19.0469 9.63185 19.2237 9.52263C19.2917 9.48056 19.2563 9.37099 19.0308 8.92597C18.3807 7.64236 17.4577 6.83295 16.4627 6.67386L16.2342 6.6373V8.28543ZM23.582 9.58603C23.0941 9.9373 22.4673 10.2678 21.8112 10.5197C21.4191 10.6703 21.3311 10.7259 21.3613 10.8036C21.5464 11.28 21.8681 13.0312 22.0027 14.295C22.0539 14.7764 22.1107 15.1851 22.1288 15.2032C22.1469 15.2214 23.0941 15.2438 24.2337 15.253L26.3056 15.2699L26.275 15.048C26.0085 13.1161 25.4091 11.4467 24.4491 9.96285C24.3032 9.73726 24.1393 9.4948 24.0848 9.42402L23.9859 9.29529L23.582 9.58603ZM6.49066 9.71383C5.43574 11.2158 4.69394 13.1639 4.53797 14.8417L4.49859 15.2656H6.58441H8.67023L8.69994 15.0752C8.71623 14.9704 8.759 14.5683 8.79492 14.1816C8.87437 13.3259 9.10101 11.9717 9.28822 11.2337L9.42656 10.6883L9.30011 10.6415C9.23051 10.6158 9.01541 10.5365 8.82205 10.4652C8.31879 10.2796 7.59246 9.9025 7.16396 9.60437C6.96099 9.46316 6.78433 9.34761 6.77144 9.34761C6.75849 9.34761 6.63217 9.51244 6.49066 9.71383ZM10.8789 11.2666C10.6868 11.8986 10.3963 13.6803 10.3391 14.5771L10.2989 15.207H12.4462H14.5935V13.4528V11.6986L14.3445 11.6676C14.2075 11.6507 13.9109 11.6208 13.6853 11.6012C13.2042 11.5595 12.4646 11.4459 11.6054 11.2816C10.8643 11.1399 10.917 11.1411 10.8789 11.2666ZM19.2224 11.2567C18.6988 11.3711 17.3668 11.5608 16.7469 11.609L16.2342 11.6489V13.428V15.207H18.3505H20.4669L20.426 14.6357C20.4035 14.3215 20.3747 13.9853 20.3621 13.8886C20.3495 13.792 20.3105 13.4887 20.2754 13.2148C20.2112 12.7132 20.0386 11.818 19.9242 11.3933C19.8534 11.1304 19.825 11.1248 19.2224 11.2567ZM4.77551 16.9011L4.47896 16.9355L4.55502 17.4628C4.73256 18.6938 5.13228 19.9677 5.68799 21.0735C5.9775 21.6495 6.61863 22.6601 6.74355 22.7372C6.77812 22.7587 6.99627 22.6467 7.2283 22.4884C7.84834 22.0656 8.14207 21.9076 8.77793 21.6545C9.44455 21.3892 9.41349 21.4783 9.18709 20.4804C9.02912 19.7845 8.77336 18.099 8.70469 17.3017L8.66554 16.8476L6.86883 16.8572C5.88058 16.8624 4.93863 16.8822 4.77551 16.9011ZM10.3168 17.0966C10.3185 17.7798 10.5484 19.4102 10.792 20.4673C10.8939 20.9096 10.935 21.0055 11.0122 20.9819C11.4385 20.852 14.0333 20.4804 14.5138 20.4804C14.5254 20.4804 14.5349 19.663 14.5349 18.664V16.8476H12.4256H10.3162L10.3168 17.0966ZM16.2342 18.6847V20.5217L16.8549 20.5619C17.5268 20.6054 18.453 20.7248 19.1849 20.8625C19.8811 20.9935 19.8358 21.0163 19.9734 20.4658C20.2023 19.5504 20.4529 17.7162 20.4529 16.9563C20.4529 16.8525 20.3588 16.8476 18.3435 16.8476H16.2342V18.6847ZM22.0689 16.9795C22.054 17.052 22.0278 17.3618 22.0106 17.6679C21.9567 18.6246 21.5786 20.7423 21.3598 21.3125C21.3362 21.3739 21.4807 21.4558 21.901 21.6193C22.5274 21.8631 23.1253 22.1867 23.5998 22.5391C23.7676 22.6636 23.9317 22.7656 23.9645 22.7656C24.0536 22.7656 24.6916 21.7912 25.0494 21.1089C25.632 19.9977 26.1352 18.3801 26.2275 17.3215L26.2688 16.8476H24.1823H22.0958L22.0689 16.9795ZM13.6267 22.2191C12.4784 22.3619 11.4881 22.5689 11.4881 22.666C11.4881 22.6944 11.6105 22.9547 11.7601 23.2444C12.0991 23.9008 12.5506 24.4834 12.9725 24.8089C13.3127 25.0714 13.9438 25.3649 14.3152 25.4334L14.5349 25.474V23.8268V22.1796L14.1687 22.1884C13.9673 22.1932 13.7234 22.2071 13.6267 22.2191ZM16.2342 23.8249V25.4702L16.4246 25.4296C17.2333 25.2573 18.0102 24.7426 18.4888 24.0621C18.8172 23.5952 19.3159 22.6637 19.2648 22.6127C19.1681 22.516 16.9863 22.1796 16.4556 22.1796H16.2342V23.8249ZM20.5309 23.5175C19.9568 24.7696 19.0235 25.9158 18.1678 26.4197C17.7918 26.641 17.7899 26.6434 18.0213 26.6039C18.3792 26.5427 19.3065 26.2345 19.8774 25.9868C20.7046 25.6281 21.6572 25.0129 22.5002 24.2934L22.804 24.034L22.4634 23.8369C22.1046 23.6294 21.1628 23.1614 20.9118 23.0659C20.769 23.0116 20.7556 23.0275 20.5309 23.5175ZM9.54896 23.1962C9.23086 23.327 8.28053 23.8227 8.0768 23.9639C7.98592 24.027 8.00021 24.0566 8.22328 24.2673C8.84508 24.8546 9.74215 25.4505 10.6811 25.8999C11.5721 26.3263 13.4027 26.878 12.6892 26.5051C12.292 26.2974 11.7366 25.8207 11.3805 25.3818C10.8725 24.7555 10.6901 24.4671 10.3353 23.7293C10.1579 23.3604 9.9822 23.0592 9.94476 23.06C9.90732 23.0607 9.72926 23.122 9.54896 23.1962Z" fill="white"/> 453</svg> 454 455 </a> 456 <div class="gtranslate_wrapper" id="gt-wrapper-53978902"></div> 457 </div> 458 </div> 459 </div> 460 461 462 </div> 463 </header> 464 465 <div id="cb24-favorites-modal" class="cb24-favorites-modal" aria-label="Favorites List" aria-modal="true" role="dialog"> 466 <div class="blue-section"> 467 468 <div class="frame"> 469 <a href="javascript:void(0);" id="close-favorites" aria-label="Close Favorites Popup"> 470 471 <svg width="69" height="54" viewBox="0 0 69 54" fill="none" xmlns="http://www.w3.org/2000/svg"> 472<path d="M17.25 8.37272L53.6667 45.0156M53.6667 7.71094L17.25 44.3538" stroke="white" stroke-width="8"/> 473</svg> 474 </a> 475 <div class="cb24-header"> 476 <h2>favorites</h2> 477 <a href="/meet/venues/" class="btn-base white"><span>Search More Venues</span></a> 478 479 <a id="email-favorites" href="mailto:?subject=test&body=message%0Ahere" class="btn-base white"><span><svg width="15" height="13" viewBox="0 0 15 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 480 <path d="M1.10769 12.5C0.812308 12.5 0.553846 12.3875 0.332308 12.1625C0.110769 11.9375 0 11.675 0 11.375V1.625C0 1.325 0.110769 1.0625 0.332308 0.8375C0.553846 0.6125 0.812308 0.5 1.10769 0.5H13.661
4805C13.9569 0.5 14.2154 0.6125 14.4369 0.8375C14.6585 1.0625 14.7692 1.325 14.7692 1.625V11.375C14.7692 11.675 14.6585 11.9375 14.4369 12.1625C14.2154 12.3875 13.9569 12.5 13.6615 12.5H1.10769ZM7.38462 6.8375L13.6615 2.65625V1.625L7.38462 5.7125L1.10769 1.625V2.65625L7.38462 6.8375Z" fill="white" /> 481 </svg> 482 Email List</span></a> 483 <a id="clear-favorites-cookie" href="javascript:void(0)" class="reverse-underline white"><span>Clear Favorites</span></a> 484 </div> 485 </div> 486 <svg class="cb24-wave-bottom" width="1601" height="128" viewBox="0 0 1601 128" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 487 <path d="M0 0H1602V75.4694C1602 75.4694 1336.67 178.927 834.542 95.4613C332.415 11.9951 0 75.4694 0 75.4694V0Z" fill="#3256A6" /> 488 </svg> 489 490 </div> 491 <div class="frame"> 492 <ul class="favorites-list " data-userid="" data-siteid="1" data-includebuttons="false" data-includelinks="true" data-includethumbnails="false" data-includeexcerpts="false" data-thumbnailsize="thumbnail" data-nofavoritestext="<h2> You haven't favorited anything yet!</h2> <span>Favorited Listings will appear here once you do.</span>" data-posttypes="post,page,attachment,blog-post,coupons,neighborhoods,people,press-release,partners"><ul data-postid="0" data-nofavorites class="no-favorites"><h2> You haven't favorited anything yet!</h2> <span>Favorited Listings will appear here once you do.</span></ul></ul> 493 </div> 494 </div> 495 496 <main id="main"> 497 498 499<section class="p10-block p10-banner-block cb02-hero-banner" role="group"> 500 <div class="cb02-gradient-top"> 501 502 </div> 503 <div class="cb02-gradient-bottom"> 504 505 </div> 506 <div class="video-wrap"> 507 <video class="videojs" style="position:absolute;top:0;left:0;overflow:hidden;z-index:-998" playsinline="playsinline" muted loop autoplay> 508 <source src="https://www.discoverphl.com/wp-content/uploads/2025/09/website_2026_hero_video_v3-1080p.mp4" type="video/mp4"> 509 </video> 510 511 </div> 512 513 <div class="frame cb02-wrap"> 514 <div class="cb02-content"> 515 516 <h1>Philadelphia Celebrates Americaâs 250th Birthday With So Much to Do</h1> <div class="cta-links"> 517 518 </div> 519 </div> 520 </div> 521 <div class="frame wave-inner-content-wrap "> 522 523 <div class="wave-inner-content"> 524 525 <a class="cb02-play-video inactive" href="" data-fancybox><svg xmlns="http://www.w3.org/2000/svg" width="61" height="61" viewBox="0 0 61 61" fill="none"> 526 <circle cx="30.5" cy="30.5" r="30.5" fill="#3256A6" /> 527 <path d="M39.3112 30.5001L26.0945 38.1307L26.0945 22.8694L39.3112 30.5001Z" fill="white" /> 528 </svg>Play Video</a> 529 530 531 </div> 532 </div> 533 <div class=" wave-wrap"> 534 <a class="pause-banner" href="javascript:void(0)" aria-label="pause banner video" style="z-index:999999999999"> 535 536 <svg id="pause-btn" xmlns="http://www.w3.org/2000/svg" width="19" height="23" viewBox="0 0 19 23" fill="none"> 537 <rect width="7" height="23" fill="#FAF6F2" /> 538 <rect x="12" width="7" height="23" fill="#FAF6F2" /> 539 </svg> 540 </a> 541 <svg class="cb02-mob-wave" width="375" height="162" viewBox="0 0 375 162" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 542<rect y="43" width="375" height="119" fill="#fff"/> 543<path d="M0 39.4453V44H375V2.31108C375 2.31108 308.906 -9.47216 199.688 20.1746C90.4688 49.8214 0 39.4453 0 39.4453Z" fill="#fff"/> 544</svg> 545 <svg class="cb02-bottom-wave" width="1596" height="266" viewBox="0 0 1596 266" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 546<path d="M-4 181.986V203H1596V10.6625C1596 10.6625 1314 -43.7011 848 93.0783C382 229.858 -4 181.986 -4 181.986Z" fill="white"/> 547<rect x="-5" y="195" width="1601" height="71" fill="white"/> 548</svg> 549 </div> 550</section> 551<section class="p10-block cb23-wysiwyg" role="group"> 552 <div class="frame toc-wysiwyg-wrap has-toc"> 553 <div class="toc-wrapper"><div class="toc js-sticky-widget"><span class="small-label toc-label">Table of Contents</span><a href="#what-is-the-semiquincentennial">What is the semiquincentennial?</a><a href="#celebrating-250-years-philly-style">Events</a><a href="#the-eyes-of-the-sports-world-on-philly-in-2026">Sports</a><a href="#new-philadelphia-museums-art-and-exhibitions">New Museums and Exhibitions</a></div></div> <div class="wysiwyg has-toc"> 554 <div class="wysiwyg-info"> 555 556 <div class="date">
557 <span class="small-label">Date</span> 558 <span>June 18, 2026</span> 559 </div> 560 <div class="share"> 561 <span class="small-label">Share</span> 562 <div class="icons"> 563 564 <a aria-label="facebook share link" href="https://www.facebook.com/sharer/sharer.php?u=https://www.discoverphl.com/blog-post/philadelphia-2026/"><svg width="7" height="16" viewBox="0 0 7 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 565<path d="M1.75 5.33333H0V8H1.75V16H4.66667V8H6.79117L7 5.33333H4.66667V4.222C4.66667 3.58533 4.77867 3.33333 5.31708 3.33333H7V0H4.77867C2.681 0 1.75 1.05533 1.75 3.07667V5.33333Z" fill="#3256A6"/> 566</svg> 567</a> 568 <a aria-label="twitter share link" href="https://twitter.com/intent/tweet?text=https://www.discoverphl.com/blog-post/philadelphia-2026/"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 569<rect width="18" height="18" fill="url(#pattern0)"/> 570<defs> 571<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1"> 572<use xlink:href="#image0_8631_30434" transform="scale(0.00520833)"/> 573</pattern> 574<image id="image0_8631_30434" width="192" height="192" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAABGdBTUEAALGPC/xhBQAACktpQ0NQc1JHQiBJRUM2MTk2Ni0yLjEAAEiJnVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4BUaaISkgChhBgSQOyIqMCIoiKCFRkUccDREZCxIoqFQbH3AXkIKOPgKDZU3g/eGn2z5r03b/avvfY5Z53vnH0+AEZgsESahaoBZEoV8ogAHzw2Lh4ndwMKVCCBA4BAmC0LifSPAgDg+/Hw7IgAH/gCBODNbUAAAG7YBIbhOPx/UBfK5AoAJAwApovE2UIApBAAMnIVMgUAMgoA7KR0mQIAJQAAWx4bFw+AagEAO2WSTwMAdtIk9wIAtihTKgJAowBAJsoUiQDQDgBYl6MUiwCwYAAoypGIcwGwmwBgkqHMlABg7wCAnSkWZAMQGABgohALUwEI9gDAkEdF8AAIMwEojJSveNJXXCHOUwAA8LJki+WSlFQFbiG0xB1cXbl4oDg3Q6xQ2IQJhOkCuQjnZWXKBNLFAJMzAwCARnZEgA/O9+M5O7g6O9s42jp8taj/GvyLiI2L/5c/r8IBAQCE0/VF+7O8rBoA7hgAtvGLlrQdoGUNgNb9L5rJHgDVQoDmq1/Nw+H78fBUhULmZmeXm5trKxELbYWpX/X5nwl/AV/1s+X78fDf14P7ipMFygwFHhHggwuzMrKUcjxbJhCKcZs/HvHfLvzzd0yLECeL5WKpUIxHS8S5EmkKzsuSiiQKSZYUl0j/k4l/s+wPmLxrAGDVfgb2QltQu8oG7JcuILDogCXsAgDkd9+CqdEQBgAxBoOTdw8AMPmb/x1oGQCg2ZIUHACAFxGFC5XynMkYAQCACDRQBTZogz4YgwXYgCO4gDt4gR/MhlCIgjhYAEJIhUyQQy4shVVQBCWwEbZCFeyGWqiHRjgCLXACzsIFuALX4BY8gF4YgOcwCm9gHEEQMsJEWIg2YoCYItaII8JFZiF+SDASgcQhiUgKIkWUyFJkNVKClCNVyF6kHvkeOY6cRS4hPcg9pA8ZRn5DPqAYykDZqB5qhtqhXNQbDUKj0PloCroIzUcL0Q1oJVqDHkKb0bPoFfQW2os+R8cwwOgYBzPEbDAuxsNCsXgsGZNjy7FirAKrwRqxNqwTu4H1YiPYewKJwCLgBBuCOyGQMJcgJCwiLCeUEqoIBwjNhA7CDUIfYZTwmcgk6hKtiW5EPjGWmELMJRYRK4h1xGPE88RbxAHiGxKJxCGZk1xIgaQ4UhppCamUtJPURDpD6iH1k8bIZLI22ZrsQQ4lC8gKchF5O/kQ+TT5OnmA/I5CpxhQHCn+lHiKlFJAqaAcpJyiXKcMUsapalRTqhs1lCqiLqaWUWupbdSr1AHqOE2dZk7zoEXR0miraJW0Rtp52kPaKzqdbkR3pYfTJfSV9Er6YfpFeh/9PUODYcXgMRIYSsYGxn7GGcY9xismk2nG9GLGMxXMDcx65jnmY+Y7FZaKrQpfRaSyQqVapVnlusoLVaqqqaq36gLVfNUK1aOqV1VH1KhqZmo8NYHacrVqteNqd9TG1FnqDuqh6pnqpeoH1S+pD2mQNcw0/DREGoUa+zTOafSzMJYxi8cSslazalnnWQNsEtuczWensUvY37G72aOaGpozNKM18zSrNU9q9nIwjhmHz8nglHGOcG5zPkzRm+I9RTxl/ZTGKdenvNWaquWlJdYq1mrSuqX1QRvX9tNO196k3aL9SIegY6UTrpOrs0vnvM7IVPZU96nCqcVTj0y9r4vqWulG6C7R3afbpTump68XoCfT2653Tm9En6PvpZ+mv0X/lP6wActgloHEYIvBaYNnuCbujWfglXgHPmqoaxhoqDTca9htOG5kbjTXqMCoyeiRMc2Ya5xsvMW43XjUxMAkxGSpSYPJfVOqKdc01XSbaafpWzNzsxiztWYtZkPmWuZ883zzBvOHFkwLT4tFFjUWNy1JllzLdMudltesUCsnq1Sraqur1qi1s7XEeqd1zzTiNNdp0mk10+7YMGy8bXJsGmz6bDm2wbYFti22L+xM7OLtNtl12n22d7LPsK+1f+Cg4TDbocChzeE3RytHoWO1483pzOn+01dMb53+cob1DPGMXTPuOrGcQpzWOrU7fXJ2cZY7NzoPu5i4JLrscLnDZXPDuKXci65EVx/XFa4nXN+7Obsp3I64/epu457uftB9aKb5TPHM2pn9HkYeAo+9Hr2z8FmJs/bM6vU09BR41ng+8TL2EnnVeQ16W3qneR/yfuFj7yP3OebzlufGW8Y744v5BvgW+3b7afjN9avye+xv5J/i3+A/GuAUsCTgTCAxMChwU+Advh5fyK/nj852mb1sdkcQIygyqCroSbBVsDy4LQQNmR2yOeThHNM50jktoRDKD90c+ijMPGxR2I/hpPCw8OrwpxEOEUsjOiNZkQsjD0a+ifKJKot6MNdirnJue7RqdEJ0ffTbGN+Y8pjeWLvYZbFX4nTiJHGt8eT46Pi6+LF5fvO2zhtIcEooSrg933x+3vxLC3QWZCw4uVB1oWDh0URiYkziwcSPglBBjWAsiZ+0I2lUyBNuEz4XeYm2iIbFHuJy8WCyR3J58lCKR8rmlOFUz9SK1BEJT1IleZkWmLY77W16aPr+9ImMmIymTEpmYuZxqYY0XdqRpZ+Vl9Ujs5YVyXoXuS3aumhUHiSvy0ay52e3KtgKmaJLaaFco+zLmZVTnfMuNzr3aJ56njSva7HV4vWLB/P9879dQlgiXNK+1HDpqqV9y7yX7V2OLE9a3r7CeEXhioGVASsPrKKtSl/1U4F9QXnB69Uxq9sK9QpXFvavCVjTUKRSJC+6s9Z97e51hHWSdd3rp6/fvv5zsaj4col9SUXJx1Jh6eVvHL6p/GZiQ/KG7jLnsl0bSRulG29v8tx0oFy9PL+8f3PI5uYt+JbiLa+3Ltx6qWJGxe5ttG3Kbb2VwZWt2022b9z+sSq16la1T3XTDt0d63e83SnaeX2X167G3Xq7S3Z/2CPZc3dvwN7mGrOain2kfTn7ntZG13Z+y/22vk6nrqTu037p/t4DEQc66l3q6w/qHixrQBuUDcOHEg5d+873u9ZGm8a9TZymksNwWHn42feJ398+EnSk/Sj3aOMPpj/sOMY6VtyMNC9uHm1JbeltjWvtOT77eHube9uxH21/3H/C8ET1Sc2TZadopwpPTZzOPz12RnZm5GzK2f72he0PzsWeu9kR3tF9Puj8xQv+F851eneevuhx8cQlt0vHL3Mvt1xxvtLc5dR17Cenn451O3c3X3W52nrN9Vpbz8yeU9c9r5+94Xvjwk3+zSu35tzquT339t07CXd674ruDt3LuPfyfs798QcrHxIfFj9Se1TxWPdxzc+WPzf1Ovee7PPt63oS+eRBv7D/+T+y//FxoPAp82nFoMFg/ZDj0Ilh/+Frz+Y9G3guez4+UvSL+i87Xli8+OFXr1+7RmNHB17KX078VvpK+9X+1zNet4+FjT1+k/lm/G3xO+13B95z33d+iPkwOJ77kfyx8pPlp7bPQZ8fTmROTPwTA5jz/IzFdaUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAEhNJREFUeJzt3Xt0lOWdwPHvTBJyIfcLYZJMbgREAwSCgFC5iPWy7W71NMelxa6KdavbVt1uL9uzR9euPd1Tzx53ba3bY7VYhepRids91W6VSxAFpYKES8QDuZA7ksmVJOQ6z/4xM5KmAgnzvPPOO+/v80/rm+R5f2Tye37zPvP83tehlEIIu3KaHYAQZpIEELYmCSBsTRJA2JokgLA1SQBha5IAwtYkAYStSQIIW5MEELYmCSBsTRJA2JokgLA1SQBha5IAwtYkAYStSQIIW5MEELYmCSBsTRJA2JokgLA1SQBha5IAwtaidQ/ocDgAyFv8tY0AWSU3/hbA4dR+KkP1tB74AKB+738uNzuWcJSzcIMLlDM1b8VJgLgkV7yOcXtbDx5QKHWh37vu+1hJBRC25tCdUYEKEFC08v7tAGnulZ/XeiKj+X8vHbVvfQ+g+dDzj5saT5hwlVbMAJxJ2QtPASRmzsvWMe6A58QZQPV9cjQfoL2mcuSzvk8qgBAaGV4BXKUV0QApOeUdAAlpRalaT2iw0aGecYDO+qq5AG3HXm0wNyLzuEornAnpxdUAKa4lC3WMOdTXOohSdLfsLwJor6k8c7HvlwoghEaGL82011SOATijZtwCEJvk2g0QFR3nuMiPhY2YuNQogJkZc3f6DxWbGI5pCld863eAQ9fMPzrUOw6KnraD6+DSM79RpAIIWzP8GmCygmX3bgbIKFq7SeuJQ8RTv+tJgKYDzz5gdiyh4C7f9AjgyJxz/SMADkdwc6Z3bFiBwlO/awNAS/XWV6fz83INIIRGIa8AAXPXPdQMkDTrqjytARhsfHRQAXjqdq4CaD3y0vvmRmSM3LLbv+pwOByZxddvBXBGxwZ1zaaUF1B01lf9BKDp4OaHLm8cqQBCaGNaBchZuGEeQEbRuuMAMXEplkrGga66LoC+9uosgPaaSq+5EemRs+grSwBnRuGa/XB+FSw4iq7GvdsATu3/79uCGkkqgBD6mLZFs+3oyycAomLiHwLIKrnh331fscTHA8xMn
5745MOMHy2fZv/0JdNDCdoOQs3ZAPO1Nyr94KumR/62quPAyrYmd8oUgGErZl2DTDZnNXfPwqQ4lqyQGtABlPeUQDOnHyrAqD18G9fMzWgaTq/u3NBA0Bi5hWzdYw70FnrAaX6Th8J7O4c0jGuXAMIoVHYtGkNdtWvBohLcp0GiE2cHWtuRFPjcMYAkOJavBXAOzY0C6C9prLfxLCmxFVa4UxIK/4T6Jv5h/tPDwPq7Jlj5aBv5jeKVABha2FTAdprKnsAomLi7wbr9RLHJefGA8Sn5G/3H1ppYjiXVLjiHyrB4UjJWVKmY7zRoV4voHpaPlgH0Hb0lWYd4xpNKoCwtbBZBZqsaOX9OwDS3Cuv1zJgqJzvJf4OQPOh558wM5zJ3OWbHgacmXPW/wjA4Qhuud87PgIoPHW7vg7QUr1lc5AhXpSsAgmhUdhWgAm9xB6AhLSiFC0Dh8joua4xgM5TewoB2o6+0mpmPLllt98KODOL128DiIqJD+6FUgrl2935GEDTwV//MOggp3RaqQBCaBO2SywTeom/BBDn7yV2WqWXOD49GiAhrXi3/9BcM+LIWbhhMQ6HIz1/lZ6ZHwBFV/O+30PoZn6jSAUQtha21wCTFSy79zcAGUVr7zTkBAbz1O96AqDpwLPfCcX5XKUVmYAzNW95PUB8inumjnH7Th8+AajaPY/N1zHedMk1gBAaWaYCBFi1l3hspN8L4KnbuRSg7ejL1Uacx7965kyaVdoIkJg1X8sen8Huhh5A9bZ9GNjdacpeJ6kAQmgUtqtAFzLQefJ6gLjkXEv1EkfPSHQCJGUv2AHg8o4Fdo1q6yX27e4s/AD0zfzD/Z8MA/SdPrwYrLHLdTos8ccjhFEsVwEioJc4A2C4r+1F/6Gv6Bi3YPl9LwCOlJyli3WMF7hm6Wn50xcB2o6+0qhj3HAjFUDYmuVWgSabs/r7xwBSXEtKQ3riIHnHfb3EHbVv3grQevjF/72ccdzldz0EDkfmnPWPgo7dnaP47935DYCWQy88E9SAmskqkBAaWe4aYLLBrvp1AHHJua0AsTNnzTA1oClyRgV6iZe8COAdG86Gqa+y5JZtvAUcjvSC1VpmflCgoKvx3acg/GZ+o0gFELZm+QrQXlPpAYiKid8EkFVyk7+XWMuNzQwXl5ybABCfkvd//kOrL/b953d3fk7r7s7upve3AzQdeObbwY9nHVIBhK1ZfhVosqKVD+wESHNfs97UQKbL/zqcqX3zAYCWQy88OfHLrtKKdHy7O0+Bzt2dR2oBVbvnp/N0jGc0WQUSQiPLXwNMNtTXehPAYHeDtXqJ/ZUzNffqxwG8Y8PbAJR3rAPf7s5joG/mH+w+1QuKgc6TS3WMZ1VSAYStRVwF+LSXODr2FoC4JFeV77+t0Us8IyEzBiAhrbAKQHnHBgASs+a7dIw/MugZRSn6Th9eDtBeU9mnY1yrkgogbC3iVoEmK1h27/MAGUVr7zA7FjMFdnd21lfdCNB65KWd5kZ0eWQVSAiNIr4CBMy77uFmgMSsKy3VSxws5R3Dt7uz6p8Amj/8zX+ZHFJQpAIIoVHErQJdSL/nxJ/1EkfHJkd48n+6u/NpsP7Mb5QI/yMQ4uJscw0Q4C6/618Askpu+InvSHjHe7m6m/e/DdDw3s/WmRuJXnINIIRGtqsAAXNW/6AGIMW1+CqzY9Hp7JmPmgHV33G8CPTedygcSAUQQiPbrAJNNthVtxYgLjnHUr3EF3Kup7FPKUV/x/EFEHkzv1GkAghbs20FmNBLfB9A1tybNoOOuyuE1uhQ7zgoeturl4Hs7pwuqQDC1mxbAQJaqrc+BxATn/53AGnua64zN6LpiY5NjEKBM2rGtf5DJ0wNyGKkAghbs+3nAJO5SiviAFJzl50BiE/NTzI3oukJdHp1Ne1zA7QdffkTs2MygnwOIC7MopOPmWx/DRDQXlM5BOCMjv0bgNjEWZbsJY5PzQ90ei0wMRzLkAogbE2uAS7Aur3Evtezo27nowDNBzc/Ymo4msk1gBAaSQW4BKv2Eo8Nn/U9l7h+VxlA29GXj5kbkR5SAYTQSFaBLsGqvcTRsUlOgMTMK7b7D2m5s1ykscSLKYRR5BpgiqzeS9zZ8PZzAI0fPH232bEEQ64BhNBIKsA0lfh7iZMt1kvsHRsGoKP2rcC9Qbdf9AfClFQAITSSVaBpGhn0/I///1qqAjijYwFInr1oG4B3fCQLoL2mcsTEsEwnCTBNSqpmRJEEmKLcso1fBEjPX/VDs2MJRnxqQTLAUF/b6/5DN5oYjukkAaZOZv4IJKtAl5CzcMM8gPT8VccAZszMijE3Ij2UGgeg4+Sbd8P53uhwp/vvVSrApcnMH8GkAlyAq7QiFSA1d1kTWK9HeKqG+z8ZAehqfDcXzt8vKVxJBQgdmfltQBJgEldphW8XZdb8gxC5M39AbGL2DICEtOJAL3GZieGEnCTAX5KZ30YkASaJT8l/ByBpVmmhyaGEVErO4kUA7vJNjwA0f/jcv5kbUWjIbCdsTVaB/AqW3ftrgIyitZbeLx+swN2mO+urrgRoO/bqSbNjmkhWgYyjOXMDL5Q1JwS7sH0CuJfc+V2A9IJrN+kYTynfg1m6Tr3zHEBKTvmdcL5HN9zFxKVEASRmzd/ln23d5kZkLNsngP73bJNLtN6SLfSy7TVAbtnGLwBkFq9/HSAqJkFL4F2N77wGcGr/LysA3OV3PQSQVXLDj33fYY3fj4+is+HtXwE0fvCre82OBuQaQCcr/SUKg9iuAuQsuG0uQHrBtTWgb3dn3+nDHwPU7nnsys/6esnqH3wEkOxa/JlfD1fjY0MKpfDU7VgD0HrkpXfNjEcqQLAcTmMy9NKvjFwMhCHbJEBgd2eKa/EB0DfzD3TWegAGuurKL/p9XXXXAcQl5zb7z2+J5xJH+Z+PkDx70RtKKVylkdVLbJsEwLBPvadXk5UUgrAS8Qnw6e7OzCv8uzsLtOzuHO7/ZBjg7JmapXD+CTMX0l5TeQYgKib+6wBZJTdtAXA4rfFcYl8vsWL4bPvv/Ie+YGY8ukR8AmDczG/yzwsdIn4VqHjVP+4FSM1bvkrHeGPDfV6Azoa3PwfQeuSl9y9nnKKVD1YBpLlXrNMRV6go7zig6KjdfgdAS/WWLSE9v6wCmUv3CyDMFbEJULDsG8+CvpnfO+5b9Ohu2vf3cPkzf8BQX8tfAZzrcXUAxKfmJwYZYkgErllScsqfAcX46OAbAO01lV2mBnaZIjYB9D8017CZX0qKiSIuAfKW3HE/QHrBKj37+v1vebpOvfsfAC3VWzbrGNbqzyWOTcyOBUhIK9yBL4mXmhvR5Ym4BHBonvlDtW4vZcAcEbMKlFu28WaAzOL1fwB9uzu7m/a9AdDw/i/+Wsd4F1Kw/L4tABmFa75m5Hn0U6Cgo27HvwI0f/jcjw09mzwf4IKcRNa/x2os+bu3fAUwbnfnkRMAtXt+eoWO8aZq3vofnQZIzJyXHcrzBmt0qGccoLO+6gqAtmOv1hlxHvkcYDKjdnea9q7c8h80WKoSWDYBXKUViQDJsxftB30z/2B3Qw/AQGetKasa/R0f+3aNJrlqwDrPJY6JS/X3El+525/EeeZGNDWWTQAsNtNMl7U/cQ6z/TAXYblrgAm7O2sBkrIXFOkYN7C7s7tpX+B+OA06xr1cVu8l9tTvfgqg6cAz39Y6sqwCyWqPRVjiNbJcBShe9eAegNS8Fat1jDc20u/b3VlfFXh+7s6L/0RoWbaXePScAoWnbue1AK1HXtqnY1xZBbIfK18MQJhXAsskQP7V9/wcIDVvuZaZ3zs+CkBX47vfhPCb+QMs20scE+8ASMpe+DooXKUVsyD8eoktkwAYdu9Oa5BeYmOEfQLkLbnjWwAZhav9qwnB5oF/d2fj3l8CtBx64ekgBzSU1XuJE9IKU0AxdLZtm//Ql0wNaJKwTwB0v4eUiVRMELarQLmLvnodQEbxdTsAomckakmE7ub3dgA0vPfkDTrGC7WilQ/uBkhzr1hrcijToryjKAWeuu1/C9BSvfXVyxrHRp8DyHp/ZAqr1zTs3gIFdnemua/5A+ib+c+eqWkCGOpru0nHeGYZ6mu5GazYSxyDA0jJWfq8r5f43HaA9prKHjPjCrsEMG53Z8S9+7f6v8cJeM0OImwSYMLuzvdB33r3YPepXoD+jo8XAbTXVJr+Sw/Gp73EUTNuAYhNnLUTrNdLHJ9a8Ed8SbzCzHjCJgEI2zu4hTeL/+tMT1rTV4Em7O48CZCUvaBYRxwjg55RgK7GvYsA2o6+/LGOccNNwfL7tgJkFK653exYpkUpFApP7fbvATQfev7xqf2YfVaBhB2YfC9N0yuA7nXt8ZEBBeBpqLoZoPXwi2/pGDfcWbqXWCk6G3bPhUv3Ychu0Euw754ZS7eQgUmrQqYlQP7V9zwBkOZermXm9921GLqb9n0X7DPzB1i9l3hmxtzAHea0XANOlZkVQPMLZPUJUGDCqlDIrwHyltzxTYCsOdc/Bb5PCIPjiz/cnmdrFnf5pocBsko+/6jviOkrjdOg8NRXPQnQdODZBz7zOyJgFciBtV4VEVoh/dsIWQXILdu4FiCjaN0u0Lm7c/8egIb3fmap3ZFGK1nzz8cBkmeXzTc7lukYHx30reLV7VwFf/kcBuuuAillVLWRN/+fxdo3FoIQrQoZngA5C26bA5DqXvFH0Lm786MWgKG+lvU6xos0A11168CKvcS+u3onzrrq94Ca0EtsSDKEogLIzG8ii38uYvj1gGEJ4CqtSABInl22HyB25iwtM9C53uYBgP6O4+Vg/d2dRjnfS5xwD0BWyY0vgHV6iWemz0n3P5c40Ev8ZSPOY2QFsMQHMSLsOTCw2mtPgAm7O6sBEtKL03SMO3quawygt+3D5QDtNZUeHeNGusBzfGP
574i0+8BSHOvWGNuRNPhIM294lalIHeoN1ABXtN5BsMqgFKBdyZ6ktf6ixqmU3/2Pxbhe9mNi1n75wBCWIm8Txe2JgkgbE0SQNiaJICwNUkAYWuSAMLWJAGErUkCCFuTBBC2JgkgbE0SQNiaJICwNUkAYWuSAMLWJAGErUkCCFuTBBC2JgkgbE0SQNiaJICwNUkAYWuSAMLWJAGErf0/IVEfrF+BKdMAAAAASUVORK5CYII="/> 575</defs> 576</svg> 577</a> 578 <a aria-label="linkedin share link" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.discoverphl.com/blog-post/philadelphia-2026/"><svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 579<path d="M15.2441 0H1.60972C0.956592 0 0.428467 0.515625 0.428467 1.15313V14.8438C0.428467 15.4813 0.956592 16 1.60972 16H15.2441C15.8972 16 16.4285 15.4813 16.4285 14.8469V1.15313C16.4285 0.515625 15.8972 0 15.2441 0ZM5.17534 13.6344H2.80034V5.99687H5.17534V13.6344ZM3.98784 4.95625C3.22534 4.95625 2.60972 4.34062 2.60972 3.58125C2.60972 2.82188 3.22534 2.20625 3.98784 2.20625C4.74722 2.20625 5.36284 2.82188 5.36284 3.58125C5.36284 4.3375 4.74722 4.95625 3.98784 4.95625ZM14.0628 13.6344H11.691V9.92188C11.691 9.0375 11.6753 7.89687 10.4566 7.89687C9.22222 7.89687 9.03472 8.8625 9.03472 9.85938V13.6344H6.66597V5.99687H8.94097V7.04063H8.97222C9.28784 6.44063 10.0628 5.80625 11.216 5.80625C13.6191 5.80625 14.0628 7.3875 14.0628 9.44375V13.6344Z" fill="#3256A6"/> 580</svg> 581</a> 582 </div> 583 </div> 584 </div> 585 <div class="wysiwyg-header image"> 586 <div class="text"> <h2>Philadelphia Celebrates Americaâs 250th Birthday With So Much to Do</h2> </div> 587 <div class="image"><img loading="lazy" src="https://www.discoverphl.com/wp-content/uploads/2024/06/July4th22-G.Widman_1sm-1920x1080-1.jpg" alt="A huge fireworks display over the Philadelphia Museum of art. The Parkway is full of people and lights." /> </div> 588 </div> 589 <p class="wysiwyg-summary">As Americaâs birthplace, <strong>Philadelphia</strong> is the centerpiece of the United Statesâ 250th birthday celebration.</p> 590<p>Few cities celebrate July 4th like Philadelphia, but in 2026, every day is Independence Day as the city celebrates <strong>Americaâs Semiquincentennial</strong> â the 250th Anniversary of the signing of the Declaration of Independence. As Americaâs birthplace, Philadelphia will be the centerpiece of this monumental birthday celebration. But the action doesnât stop there. In 2026, Philadelphia takes center stage for some of the worldâs greatest events.</p> 591<h2>The Ultimate Guide to America 250 in Philadelphia</h2> 592<h3><strong>1. Festivals & Firsts</strong></h3> 593<ul> 594<li><strong>Wawa Welcome America (June 19 â July 4):</strong> The nationâs largest free festival features 16 days of concerts, fireworks, and community events. Don’t miss <strong>Wawa Hoagie Day</strong> and the massive <strong>July 4th Party on the Parkway</strong>.</li> 595<li><strong>52 Weeks of Firsts:</strong> Every Saturday in 2026, a different neighborhood hosts a <strong>“Firstival,”</strong> celebrating Philadelphia’s legacy of innovation.</li> 596</ul> 597<h3><strong>2. Historic District Highlights</strong></h3> 598<ul> 599<li><strong>The Red, White, & Blue To-Do (July 2):</strong> A day of “pomp and parade” in the <strong>Old City</strong> historic district featuring an All-American Block Party, concerts, and extended hours at iconic sites.</li> 600<li><strong>The Liberty Medal Ceremony (July 3):</strong> Watch as <strong>Pope Leo XIV</strong> receives this prestigious honor at the <strong>National Constitution Center</strong>, overlooking <strong>Independence Hall</strong>.</li> 601<li><strong>Examining the Declaration, Revolution</strong>: New exhibitions at the <strong>Museum of the American Revolution</strong>, Constitution Center, and <strong>Weitzman National Museum of American Jewish History </strong>focus on Americaâs 250<sup>th</sup></li> 602</ul> 603<h3><strong>3. Signature 2026 Sports Events</strong></h3> 604<ul> 605<li><strong>MLB All-Star Game (July 14):</strong> The Midsummer Classic returns to <strong>Citizens Bank Park</strong>, accompanied by the <strong>Capital One All-Star Village</strong> at the Convention Center and a week of baseball events.</li> 606<li><strong>FIFA World Cup 26â¢:</strong> Philadelphia hosts six matches of the worldâs biggest sporting event, with the <strong>FIFA Fan Festivalâ¢</strong> at <strong>Lemon Hill</strong> running for 39 consecutive days.</li> 607</ul> 608<h3><strong>Pro-Traveler Tips for 2026:</strong></h3> 609<ul> 610<li><strong>Transportation:</strong> Skip the traffic and use <strong>SEPTA </strong> The <strong>Blue Line (Market-Frankford)</strong> is your best bet for getting between the <strong>Historic District</strong> and <strong>Center City</strong>.</li> 611<li><strong>Booking:</strong> Because 2026 is a milestone year, timed tickets for <strong>Independence Hall</strong> and the <strong>Museum of the American Revolution</strong> should be booked weeks, if not months, in advance.</li> 612<li><strong>Official App:</strong> Download the <a href="https://apps.apple.com/in/app/2026-access-philly/id6757433765" target="_blank" rel="noopener"><strong>2026 Access Philly App</strong></a> for real-time updates.</li> 613<li><strong>Visitors Guide: </strong>Check out the <strong><a href="https://www.discoverphl.com/discover/official-visitors-guide/250-guide/" rel="noopener">Philadelphia 250 Commemorative Guide</a>!</strong></li> 614</ul> 615<h2><span id="what-is-the-semiquincentennial" class="wysiwyg-anchor" data-title="What is the semiquincentennial?">What is the  Semiquincentennial?<strong></span></strong></h2> 616<p>The Semiquincentennial is the 250th anniversary of Americaâs Founders declaring the countryâs independence right here in Philadelphia. In 1776, Benjamin Franklin, Thomas Jefferson, and delegates from the 13 Colonies signed the Declaration of Independence at <
616a href="https://www.nps.gov/inde/planyourvisit/independencehall.htm" target="_blank" rel="noopener"><strong>Independence Hall</strong></a><strong>.</strong> The document proclaimed their separation from British colonial rule. The signing is referred to as the birth of the United States and is celebrated in America each year on the Fourth of July.</p> 617<p><img fetchpriority="high" decoding="async" class="alignnone size-large wp-image-59252" src="https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-1024x682.jpg" alt="Independence Hall sits behind a garden of tulips." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /></p> 618<h2><span id="celebrating-250-years-philly-style" class="wysiwyg-anchor" data-title="Events">Celebrating 250 Years Philly Style!</span></h2> 619<p>These events highlight Philadelphiaâs role in the founding of our nation, and our love for the arts and partying!</p> 620<h3>52 weeks of Philly firsts</h3> 621<p>Philadelphia is celebrating the entire year by spotlighting its many historic âfirstsâ in 2026 through <a href="https://www.visitphilly.com/things-to-do/events/52-weeks-of-firsts-in-philadelphia/" target="_blank" rel="noopener"><strong>52 Weeks of Firsts</strong></a> â a citywide series of weekly events, storytelling, and experiences. Every week features Saturday â<strong>Firstivals</strong>â featuring live entertainment, music, family fun, giveaways, art, and more in neighborhoods around the city. Some historic firsts include the Slinky, the inaugural Motherâs Day celebration, the nationâs first Thanksgiving Day Parade, Americaâs first zoo, lending library, and the American flag (thanks Betsy Ross).</p> 622<h3>16 Days of Free Fun with WaWa Welcome America</h3> 623<p>Philadelphia will amplify and expand its already electrifying series of summer celebrations for the Semiquincentennial. The annual <a href="https://july4thphilly.com/"><strong>Wawa Welcome America</strong></a> festival returns with 16 days of electrifying programming of concerts, block parties, and free hoagies (of course) from <a href="https://www.discoverphl.com/blog-post/juneteenth-celebrations-in-philadelphia/"><strong>Juneteenth</strong></a> through the <a href="https://www.discoverphl.com/blog-post/celebrate-july-fourth-in-philadelphia/"><strong>Fourth of July</strong></a>. Â Some highlights this summer include:</p> 624<ul> 625<li><strong>The </strong><a href="https://july4thphilly.com/event/kidchella-music-festival/" target="_blank" rel="noopener"><strong>Kidchella Music Festival</strong></a></li> 626<li><strong>Concilioâs Annual Hispanic Fiesta</strong></li> 627<li><a href="https://july4thphilly.com/event/celebration-of-black-music-month-and-fireworks/" target="_blank" rel="noopener"><strong>Celebration of Black Music Month + Fireworks,</strong></a> featuring Phillyâs own Eve</li> 628<li><a href="https://july4thphilly.com/event/wawa-hoagie-day/" target="_blank" rel="noopener"><strong>Wawa Hoagie Day,</strong></a></li> 629<li><strong>July 4<sup>th</sup> Party on the Parkway</strong>, concluding with a massive free concert and fireworks display along the Benjamin Franklin Parkway.</li> 630</ul> 631<div id="attachment_2953" style="width: 1010px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-2953" decoding="async" class="size-full wp-image-2953" src="https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1.jpg" alt="A person holds up an American flag in a crowd at the Wawa Welcome American Parkway concert." width="1000" height="600" srcset="https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1.jpg 1000w, https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1-300x180.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1-768x461.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1-860x516.jpg 860w" sizes="(max-width: 1000px) 100v
631w, 1000px" /><p id="caption-attachment-2953" class="wp-caption-text">People enjoy the Party of the Parkway in Philadelphia during the Wawa Welcome America Festival. Photo courtesy of Wawa Welcome America Photo/ Joseph Kaczmarek</p></div> 632<h3>Philly Fair 250</h3> 633<p>Wawa Welcome America festivities this year include <a href="https://july4thphilly.com/event/philly-fair-250-day-1/" target="_blank" rel="noopener"><strong>Philly Fair 250</strong></a>. The multi-day festival in the Centennial District features jazz performances, a trapeze, hot air balloon rides, and âfood trucks representing flavors from the original 13 colonies.â Local institutions are partnering really ramp up the free family fun with the <a href="https://www.libertymuseum.org/" target="_blank" rel="noopener">National Liberty Museum</a> displaying a life-sized replica of the Liberty Bell.</p> 634<div id="attachment_59253" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59253" decoding="async" class="size-large wp-image-59253" src="https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-1024x682.jpg" alt="A replica of the Liberty Bell at the National Liberty Museum" width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59253" class="wp-caption-text">National Liberty Museum</p></div> 635<p>As part of Wawa Welcome America, the Philadelphia Historic District will host the <a href="https://www.phlvisitorcenter.com/red-white-blue-to-do-philadelphia-pa" target="_blank" rel="noopener"><strong>Red, White, & Blue To-Do</strong></a> on July 2. Inspired by John Adamsâs call for âpomp and parade,â the event invites visitors to Americaâs most historic square mile for a patriotic parade, the All-American Block Party, plenty of family fun at historic attractions. The Red, White, & Blue To-Do wraps up with a Salute to Service concert as The United States Army Field Band and Soldiersâ Chorus, featuring Queen Latifah, perform on Independence Mall.</p> 636<h3>Liberty Medal Presentation to Pope Leo</h3> 637<p>Pope Leo XIV, the first leader of the Roman Catholic Church born in the United States, will return to Philadelphia â where he attended Villanova University â to accept <a href="https://constitutioncenter.org/about/liberty-medal" target="_blank" rel="noopener">the 2026 <strong>Liberty Medal</strong></a> on July 3. The medal is presented annually by the <strong>National Constitution Center</strong> to persons âof courage and conviction who strive to secure the blessings of liberty for people around the globe.â The ceremony will be held outside the Old City museum on Independence Hall.</p> 638<h3>Bells Across PA</h3> 639<p>America250PAâsart series â<a href="https://america250pa.org/PPE:_Bells_Across_PA" target="_blank" rel="noopener"><strong>Bells Across PA</strong></a>â commemorates the 250th anniversary of the United States throughout Pennsylvania. Selected artists transform fiberglass bell sculptures that are on display in each of <strong>Pennsylvania</strong>âs 67 counties, including Philadelphia and the Countryside.</p> 640<blockquote class="instagram-media" style="background: #FFF; border: 0; border-radius: 3px; box-shadow: 0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width: 540px; min-width: 326px; padding: 0; width: calc(100% - 2px);" data-instgrm-captioned="" data-instgrm-permalink="https://www.instagram.com/reel/DTlNbKLDVEV/?utm_source=ig_embed&utm_campaign=loading" data-instgrm-version="14"> 641<div style="padding: 16px;"> 642<p> </p> 643<div style="display: flex; flex-direction: row; align-items: center;"> 644<div style="background-color: #f4f4f4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> 645<div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> 646<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> 647<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div> 648</div> 649</div> 650<div style="padding: 19% 0;"></div> 651<div style="display: block; height: 50px; margin: 0 auto 12px; width: 50px;"></div> 652<div style="padding-top: 8px;"> 653<div style="color: #3897f0; font-family: Arial,sans-serif; font-size: 14px; font-style: normal; font-weight: 550; line-height: 18px;">View this post on Instagram</div> 654</div> 655<div style="padding: 12.5% 0;"></div> 656<div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"> 657<div> 658<div style="background-color: #f4f4f4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> 659<div style="background-color: #f4f4f4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> 660<div style="background-color: #f4f4f4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div> 661</div> 662<div style="margin-left: 8px;"> 663<div style="background-color: #f4f4f4; border-radius: 50%; flex-grow: 0; height: 20px;
663 width: 20px;"></div> 664<div style="width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg);"></div> 665</div> 666<div style="margin-left: auto;"> 667<div style="width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> 668<div style="background-color: #f4f4f4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> 669<div style="width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div> 670</div> 671</div> 672<div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> 673<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> 674<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div> 675</div> 676<p> </p> 677<p style="color: #c9c8cd; font-family: Arial,sans-serif; font-size: 14px; line-height: 17px; margin-bottom: 0; margin-top: 8px; overflow: hidden; padding: 8px 0 7px; text-align: center; text-overflow: ellipsis; white-space: nowrap;"><a style="color: #c9c8cd; font-family: Arial,sans-serif; font-size: 14px; font-style: normal; font-weight: normal; line-height: 17px; text-decoration: none;" href="https://www.instagram.com/reel/DTlNbKLDVEV/?utm_source=ig_embed&utm_campaign=loading" target="_blank" rel="noopener">A post shared by PHLCVB (@discover_phl)</a></p> 678</div> 679</blockquote> 680<p>
680<script async src="//www.instagram.com/embed.js"></script>
680</p> 681<h3><strong>Art Philly’s What Now</strong></h3> 682<p>Launching in May 2026, <a href="https://www.artphilly.org/what-we-do" target="_blank" rel="noopener"><strong>ArtPhilly</strong></a> presents <strong>What Now</strong>, a citywide, multidisciplinary arts festival. This collaborative festival will showcase Philadelphia artists and neighborhoods, sparking civic dialogue on the nationâs evolution since 1776. Through What Now, commissioned artists will interpret Philadelphiaâs legacy, reflecting on the cityâs complex history and future.</p> 683<span class="cb23-responsive-iframe"><iframe loading="lazy" title="YouTube video player" src="https://www.youtube.com/embed/mCKIM6p9Ryc?si=a9o1lcQ0-cJuVrkB" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></span> 684<h2><span id="the-eyes-of-the-sports-world-on-philly-in-2026" class="wysiwyg-anchor" data-title="Sports">The Eyes of the Sports World on Philly in 2026</span></h2> 685<p>2026 is already a giant year for sports in Philadelphia.</p> 686<p>It all started with the return of <strong>March Madness</strong> to Xfinity Mobile Arena, as Philly hosted Round of 64 and 32 games in the National Collegiate Athletic Associationâs (NCAA) menâs basketball tournament on March 20 and 22. The annual <strong>Penn Relays</strong> followed, bringing track athletes of all ages to the University of Pennsylvaniaâs Franklin Field in late April.</p> 687<h3>PGA Championship, US Amateur Championship land in countryside</h3> 688<p>Just beyond the city limits, the <a href="https://www.pgachampionship.com/" target="_blank" rel="noopener">2026 <strong>PGA Championship</strong></a> is celebrated  a homecoming at <strong>Aronimink Golf Club</strong> in Newtown Square from May 11â17. One of golfâs four major menâs championships featured 150 of golfâs best trying to claim the title as the historic club hosted the championship for the first time since 1962.  Englishman Aaron Rai won the title.</p> 689<div id="attachment_58392" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-58392" loading="lazy" decoding="async" class="size-large wp-image-58392" src="https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-1024x682.jpg" alt="A golfer raises his arms in triumph on the field." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-58392" class="wp-caption-text">LOUISVILLE, KY – MAY 19: Xander Schauffele celebrates winning the 2024 PGA Championship on the 18th hole during the final round of the PGA Championship at Valhalla Golf Club on Sunday, May 19, 2024 in Louisville, Kentucky. (Photo by Maddie Meyer/PGA of America)</p></div> 690<p>Later this summer, <strong>Merion Golf Club</strong> in Ardmore on the Main Line will host golfâs future stars for the <a href="https://championships.usga.org/usamateur.html" target="_blank" rel="noopener"><strong>United States Amateur Championship</strong></a> from August 10â16. The event brings together the nationâs top menâs amateur golfers for one of the sportâs most prestigious competitions. And, just like at the PGA, you can <a href="https://championships.usga.org/usamateur/2026/articles/126th-us-amateur-tickets-available-merion.html" target="_blank" rel="noopener">buy tickets</a> to line the fairways and greens to get up close to the action.</p> 691<h3>Soccer’s Best Coming to Philly for FIFA World Cup 26â¢</h3> 692<p>The beautiful game is on display in Philly this summer. The city is one of the North American host cities for the <a href="https://www.discoverphl.com/discover/fifa-world-cup/"><strong>FIFA World Cup 26â¢</strong></a><strong>,</strong> and will hold six matches at Lincoln Financial Field  (renamed <strong>Philadelphia Stadium</strong> for the duration of the tournament). The schedule includes five group stage matches featuring traditional world football powerhouses,<strong> Brazil</strong> and <strong>France</strong>, alongside Cote DâIvoire, Ecuador, Haiti, Iraq, Curaçao, Croatia, and Ghana. The action wraps up (appropriately) with a July 4<sup>th</sup> Round of 16 match..</p> 693<div id="attachment_59203" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59203" loading="lazy" decoding="async" class="size-large wp-image-59203" src="https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-1024x682.jpg" alt="The stands at Philadelphia Stadium are full for the FIFA World Cup" width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59203" class="wp-caption-text">Ecuador v.s. Ivory Coast at Philadelphia Stadium</p></div> 694<h3>Philadelphia’s FIFA Fan Festival<strong>â¢</strong></h3> 695<p>Promising to be âunlike any other visitor experience in the United States in 2026,â <a href="https://phillyfwc26.com/fifa-fan-fest"><strong>Philadelphiaâs FIFA Fan Festival</strong></a><strong>â¢</strong>
695 kicks its way into <strong>Fairmount Park</strong> with nearly six weeks of food, football, festivities, and free fun. Â It takes place for the duration of the tournament, from Thursday, June 11, to Sunday, July 19, 2026, at <strong>Lemon Hill</strong> park. Registration for FREE entry to the festival <a href="https://www.eventim.com/artist/philadelphia-fifa-fan-festival/?affiliate=7FI" target="_blank" rel="noopener">is available online</a>.</p> 696<div id="attachment_59254" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59254" loading="lazy" decoding="async" class="size-large wp-image-59254" src="https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-1024x682.jpg" alt="A France Fan watches the big screen at FIFA Fan Festival with his teamflag draped over him." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59254" class="wp-caption-text">FIFA Fan Festival Philadelphia</p></div> 697<p>We have your full guide to getting tickets, getting around during the tournament, <a href="https://www.discoverphl.com/blog-post/philadelphia-between-world-cup-matches/?_gl=1*1rq8hj9*_up*MQ..*_ga*MTcwMzI2ODY5My4xNzc3MDQ4NDQ5*_ga_YG74SVF2M6*czE3NzcwNDg0NDkkbzEkZzAkdDE3NzcwNDg0NDkkajYwJGwwJGgw">places to check out around the city</a>, and just how awesome this football city can be. We also have so you can get a taste of home while in Philly.</p> 698<h3>Baseball’s best swing into town for Mis-Summer Classic</h3> 699<p>Whatâs more American than baseball? <strong>Major League Baseball</strong>âs superstars are heading to Philadelphia for the 2026 <a href="https://www.mlb.com/phillies/fans/all-star-game" target="_blank" rel="noopener"><strong>MLB All-Star Game</strong></a> at <strong>Citizens Bank Park</strong>. The 96th Midsummer Classic takes place Tuesday, July 14, at the <strong>Phillies</strong>â home ballpark. In the days leading up to the game, fans can enjoy the <strong>Capital One All-Star Village</strong> at the <strong>Pennsylvania Convention Center</strong>, the <strong>HBCU Swingman Classic</strong>, <strong>T-Mobile Home Run Derby</strong>, and other baseball-themed events at the ballpark as part of <a href="https://allstargame.com/" target="_blank" rel="noopener"><strong>MLB All-Star Week</strong>, starting July 10</a>. Our <a href="https://www.discoverphl.com/blog-post/mlb-all-star-2026/">guide to the week of baseball</a> will ensure you donât miss any action.</p> 700<p><strong>Donât have tickets, but donât want to miss the action?</strong> Check out <a href="https://www.discoverphl.com/blog-post/top-philadelphia-sports-bars/">our list of some of the <strong>best Philly sports bars</strong></a> for fans to flock to.</p> 701<h3>Cyclists return to take on ‘The Wall’</h3> 702<p>The <a href="https://www.philadelphiacyclingclassic.com/" target="_blank" rel="noopener"><strong>Philadelphia Cycling Classic</strong></a> returns in August for the first time in a decade. The race starts and ends on the Benjamin Franklin Parkway, and will include the infamous hill in Manayunk known as âThe Wallâ that has humbled many a professional cyclist over the previous iterations of this favorite event simply know as âThe Bike Race.â</p> 703<h2><span id="new-philadelphia-museums-art-and-exhibitions" class="wysiwyg-anchor" data-title="New Museums and Exhibitions">New Philadelphia Museums, Art, and Exhibitions</span></h2> 704<p>This might as well be called the year of exhibitions in Philadelphia. In 2026, Philly will debut landmark art, science, and history experiences that celebrate American creativity and the cityâs legacy of storytelling.</p> 705<h3>A Nation of Artists</h3> 706<p>Leading the way is <a href="https://www.philamuseum.org/exhibitions/nation-artists" target="_blank" rel="noopener"><strong><em>A Nation of Artists</em></strong></a>, a joint exhibition from the <a href="https://philamuseum.org/" target="_blank" rel="noopener"><strong>Philadelphia Museum of Art</strong></a> and <a href="https://www.pafa.org/" target="_blank" rel="noopener"><strong>PAFA</strong></a> featuring over 1,000 works of art. The exhibition that runs until July 2027ncludes rarely seen pieces from the Middleton Family Collection, highlighting diverse artists â from Mary Cassatt to Thomas Eakins to Horace Pippin to Charles Willson Peale to Mark Rothko â and overlooked voices in American art history.</p> 707<p><img loading="lazy" decoding="async" class="alignnone size-large wp-image-59255" src="https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-1024x682.jpg" alt="Museum visitors look at the paintings hung on the walls." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p> 708<h3>Focusing on Rocky at the Rocky Steps</h3> 709<p><a href="https://www.philamuseum.org/exhibitions/rising-up-rocky" target="_blank" rel="noopener"><strong><em>Rising Up: Rocky and the Making of Monuments</em></strong></a> puts the focus on the Philadelphia Museum of Artâs connection to âRocky.â âIn a moment of reckoning and reimagining for monuments, why do millions of people from around the world visit the Rocky
709statue by the steps at the Philadelphia Museum of Art?â the art museum asks. The exhibit looks at millennia of artistâs putting a focus on boxing and celebrity. The values on display include âperseverance, spirit, and grit.â</p> 710<h3>Ministry of Awe</h3> 711<p>Expanding the cityâs immersive art offerings, muralist Meg Saligman debuted <a href="https://moaphilly.org/" target="_blank" rel="noopener"><strong><em>Ministry of Awe</em></strong></a> inside a restored Old City bank. The six-story installation will blend visual art, sound, and live performance, inviting visitors to explore âaweâ through interactive and evolving environments.</p> 712<h3>Icons of Independence</h3> 713<p>Enjoy the city of murals like youâve never seen before. From the Liberty Bell, famous figures, the American flag, iconic architecture, and much more, <a href="https://muralarts.org/stories/announcing-mural-arts-spring-2026-tour-season/" target="_blank" rel="noopener"><strong>Mural Arts Philadelphia</strong> is offering</a> a <a href="https://muralarts.org/tours/" target="_blank" rel="noopener">Semiquincentennial tour</a> specifically geared to a âtrail of historic symbols.â</p> 714<h3>Celebrating 50 Years of Music</h3> 715<p><a href="https://highmarkmann.org/" target="_blank" rel="noopener"><strong>The Highmark Mann Center for the Performing Arts</strong></a> in Fairmount Park is celebrating 50 years of music and performances with a summer slate of shows. The open-air venue is <a href="https://highmarkmann.org/50th-anniversary/journey-through-time" target="_blank" rel="noopener">looking back on its first 50 years</a> and focused on the future. Among the performances: On June 18, the <strong>Philadelphia Orchestra</strong> will celebrate <a href="https://highmarkmann.org/events/2026-06-18/50-years-of-music-in-the-park" target="_blank" rel="noopener"><em>50 Years of Music in the Park</em></a>, and on July 5, music legend <strong>Paul Simon</strong> will take the stage.</p> 716<h3>Universal Theme Parks come to Philly</h3> 717<p><a href="https://fi.edu/en" target="_blank" rel="noopener"><strong>The Franklin Institute</strong></a> is featuring the world premiere of <a href="https://fi.edu/en/exhibits-and-experiences/universal-theme-parks-exhibition" target="_blank" rel="noopener"><strong><em>Universal Theme Parks: The Exhibition</em></strong></a>. Opened in February, the premier exhibition showcases how Universal parks are created, premiering at the museum before traveling. Entirely designed, built, and toured by The Franklin Institute, the exhibit highlights key milestones of Universal Destinations and Experiences, from the early Studio Tram tour to the new Epic Universe. <a href="https://tickets.fi.edu/webstore/shop/viewitems.aspx?cg=11&c=utp&_gl=1*6zzq65*_gcl_au*MTgxNTMzNjYxMC4xNzYxODQ3OTE5" target="_blank" rel="noopener">Tickets are on sale now</a>.</p> 718<div id="attachment_59153" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59153" loading="lazy" decoding="async" class="wp-image-59153 size-large" src="https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-1024x682.jpg" alt="Some kids laugh a scream looking at a replica of a dinosaur in the Franklin Institute." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59153" class="wp-caption-text">Photo courtesy of ©The Franklin Institute</p></div> 719<h3>
719Kids get a civics lesson</h3> 720<p>The <a href="https://www.pleasetouchmuseum.org/"><strong>Please Touch Museum</strong></a>, which occupies Memorial Hallâan art gallery built for Americaâs 1876 Centennial Expositionânow features for the Semiquincentennial, <a href="https://www.pleasetouchmuseum.org/discovering-democracy-2/" target="_blank" rel="noopener"><strong>Discovering Democracy</strong></a>. The play-based civics field trip aims to introduce children to the concept of democracy and how it plays a role in their everyday lives. For everyday visits, check out special exhibits featuring the prementioned Slinky, Daniel Tiger, and Paw Patrol.</p> 721<h3>Enter Bear Country</h3> 722<p>The <a href="https://www.philadelphiazoo.org/" target="_blank" rel="noopener"><strong>Philadelphia Zoo</strong></a> â the nationâs first zoo â has announced its largest exhibition project in over a decade with a $20M transformation of <a href="https://www.philadelphiazoo.org/bearcountry/" target="_blank" rel="noopener"><strong><em>Bear Country</em></strong></a>, set for debut in 2026. The expanded exhibit will feature the Zoo360 trail for bears, an off-exhibit space for cub rearing, and enhanced water features and landscaping.</p> 723<h3>The Declaration’s Journey</h3> 724<p>The <a href="https://www.amrevmuseum.org/" target="_blank" rel="noopener"><strong>Museum of the American Revolution</strong></a>âs exhibition <a href="https://www.amrevmuseum.org/exhibits/the-declaration-s-journey" target="_blank" rel="noopener"><strong><em>The Declarationâs Journey</em></strong></a> celebrates the Declaration of Independenceâs 250-year legacy and global influence on independence movements through rare artifacts and stories. Beyond the exhibit, which runs into January 2027, the museum is running <a href="https://www.amrevmuseum.org/2026-and-beyond" target="_blank" rel="noopener">public programming</a> to examine the idea of independence, revolution, and freedom.</p> 725<div id="attachment_57423" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-57423" loading="lazy" decoding="async" class="size-large wp-image-57423" src="https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-1024x683.jpg" alt="A woman and a child look over a Museum exhibit case" width="1024" height="683" srcset="https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-1024x683.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1.jpg 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-57423" class="wp-caption-text">©JPG Photography</p></div> 726<h3>Examining America’s Founding</h3> 727<p>The 250th birthday is a monumental milestone for the <a href="https://constitutioncenter.org/museum" target="_blank" rel="noopener"><strong>National Constitution Center</strong></a>. The Old City institutionâs newest exhibit, <a href="https://constitutioncenter.org/museum/exhibits-programs/americas-founding" target="_blank" rel="noopener"><strong><em>Americaâs Founding</em></strong></a>, (and its expanded <strong>Americaâs Founding</strong> gallery), offers a dynamic, interactive exploration of the American Revolution and the creation of the Constitution and Bill of Rights. In addition to awarding the 2026 <strong>Liberty Medal</strong> to <strong>Pope Leo XIV </strong>(see above), the NCC has launched a comprehensive <a href="https://constitutioncenter.org/america-at-250" target="_blank" rel="noopener">digital toolkit</a> that examines the revolutionary ideas of 1776.</p> 728<h3>Untold moments of American Jews during the American Revolution</h3> 729<p>The <a href="https://theweitzman.org/" target="_blank" rel="noopener"><strong>Weitzman National Museum of American Jewish History</strong></a> kicked off its celebrations with a mock cannon salute to mark the opening of its latest exhibition, <a href="https://theweitzman.org/exhibitions/first-salute/" target="_blank" rel="noopener"><em>First Salute,</em></a> in April. This immersive experience tells the story of the tiny Caribbean island of St. Eustatius and its pivotal role in the Revolution. As the museum describes it: âThink Hamilton meets Pirates of the Caribbean.â Visitors can learn how Jewish merchants and Caribbean trade routes helped sustain the Continental Army during the fight for independence.</p> 730<h3>America’s first bank gets a new look</h3> 731<p>Following a massive restoration project, the <strong>First Bank of the United States</strong> is expected to reopen its doors to the public just ahead of the July 4th festivities. This architectural landmark will serve as a new museum space, focusing on the early American economy and the vision of Alexander Hamilton.</p> 732<p>Start planning a trip for you and your group to Philadelphia in 2026 today! Use our <a href="https://www.discoverphl.com/discover/">plan your trip</a> page to start organizing your Philadelphia adventure now.</p> 733 </div> 734 </div> 735</section> 736<style> 737 .cb05-related-content-columns .cb05-intro {position: relative; z-index: 3;} 738 .cb05-related-content-columns .cb05-intro a {font-size:18px !important; } 739 @media (max-width:767px) { 740 .cb05-related-content-columns .cb05-intro a { 741 font-size: 16px !important; 742 } 743 } 744 745 746</style> 747 748<section class="p10-block cb05-related-content-columns green-background has-wave-top has-wave-bottom " role="group"> 749 <svg class="green-wave-top" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg">
750 <path d="M1600 128.052H0V52.5518C0 52.5518 265 -50.9482 766.5 32.5518C1268 116.052 1600 52.5518 1600 52.5518V128.052Z" fill="#054E41" /> 751 </svg> 752 <svg class="green-wave-top mobile" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="xMinYMax" fill="none" xmlns="http://www.w3.org/2000/svg"> 753 <path d="M1600 128.052H0V52.5518C0 52.5518 265 -50.9482 766.5 32.5518C1268 116.052 1600 52.5518 1600 52.5518V128.052Z" fill="#054E41" /> 754 </svg> 755 <div class="cb05-background-wrap"> 756 <div class="cb05-headline-wrap green-background"> 757 758 759 </div> 760 <div class="cb05-headline headline-default green-background"> 761 <div class="frame"> 762 <h2 class="cb05-title"><span class="underline">Discover More</span></h2> </div> 763 </div> 764 765 766 <div class="frame"> 767 <div class="cb05-content green-background"> 768 <a href="https://www.discoverphl.com/blog-post/fifa-world-cup-2026-in-philadelphia/" class="cb05-post related-content-card green-background"> 769 770 <div class="related-content-post-img"> 771 <img src="https://www.discoverphl.com/wp-content/uploads/2024/02/Mexico-vs.-Germany-Game-12-scaled.jpg" alt="" /> 772 </div> 773 <div class="related-content-card-info"> 774 775 <span class="post-label-placeholder"></span> <h3 class="related-content-post-heading">FIFA World Cup 2026⢠in Philadelphia</h3> <div class="related-content-description"><p>Philadelphia was selected as one of 11 Host Cities in the United States for FIFA World Cup 2026⢠matches....</p><svg xmlns="http://www.w3.org/2000/svg" width="25" height="12" viewBox="0 0 25 12" fill="none"><path d="M25 6L15 0.226497V11.7735L25 6ZM0 7H16V5H0V7Z" fill="white"/></svg></div> 776 </div> 777 </a> 778 <a href="https://www.discoverphl.com/blog-post/mlb-all-star-2026/" class="cb05-post related-content-card green-background"> 779 780 <div class="related-content-post-img"> 781 <img src="https://www.discoverphl.com/wp-content/uploads/2024/06/2026-MLB-All-Star-Game-Logo-Reveal-Celebration.jpg" alt="" /> 782 </div> 783 <div class="related-content-card-info"> 784 785 <span class="post-label-placeholder"></span> <h3 class="related-content-post-heading">Philadelphia Hosts 2026 MLB All-Star Gameâ¯: What to Know</h3> <div class="related-content-description"><p>The MLB All-Star Game is coming to Philadelphia in 2026, another canât miss event during the nationâs semiquincentennial celebra...</p><svg xmlns="http://www.w3.org/2000/svg" width="25" height="12" viewBox="0 0 25 12" fill="none"><path d="M25 6L15 0.226497V11.7735L25 6ZM0 7H16V5H0V7Z" fill="white"/></svg></div> 786 </div> 787 </a> 788 <a href="https://www.discoverphl.com/blog-post/celebrate-july-fourth-in-philadelphia/" class="cb05-post related-content-card green-background"> 789 790 <div class="related-content-post-img"> 791 <img src="https://www.discoverphl.com/wp-content/uploads/2023/10/Fireworks-photo-credit-Ed-Newton-for-Live-Nation-2-1440x500x72.jpg" alt="" /> 792 </div> 793 <div class="related-content-card-info"> 794 795 <span class="post-label-placeholder"></span> <h3 class="related-content-post-heading">Celebrate July Fourth in Philadelphia</h3> <div class="related-content-description"><p>There is no better place to celebrate Americaâs birthday than in the city where it all began....</p><svg xmlns="http://www.w3.org/2000/svg" width="25" height="12" viewBox="0 0 25 12" fill="none"><path d="M25 6L15 0.226497V11.7735L25 6ZM0 7H16V5H0V7Z" fill="white"/></svg></div> 796 </div> 797 </a> 798 799 </div> 800 </div> 801 </div> 802 <svg class="green-wave-bottom" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 803 <path d="M0 0.0517578H1600V75.5518C1600 75.5518 1335 179.052 833.5 95.5518C332 12.0518 0 75.5518 0 75.5518V0.0517578Z" fill="#054E41" /> 804 </svg> 805 <svg class="green-wave-bottom mobile" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="xMidYMin" fill="none" xmlns="http://www.w3.org/2000/svg"> 806 <path d="M0 0.0517578H1600V75.5518C1600 75.5518 1335 179.052 833.5 95.5518C332 12.0518 0 75.5518 0 75.5518V0.0517578Z" fill="#054E41" /> 807 </svg> 808 809</section></main> 810 811<footer role="contentinfo"> 812
812<script async src="https://js.adsrvr.org/up_loader.3.0.0.js"></script>
812 813
813<script> 814 window.ttdConversionEventsLayer = window.ttdConversionEventsLayer || []; 815 816 function ttdConversionEvents() { 817 window.ttdConversionEventsLayer.push(arguments); 818 } 819 820 ttdConversionEvents("init", { 821 advertiserId: "7lhyd1g", 822 pixelIds: ["z17df3x"] 823 }); 824 825 ttdConversionEvents("event", { 826 advertiserId: "7lhyd1g", 827 pixelIds: ["z17df3x"] 828 }); 829 </script>
829 830 831 <div class="large-frame"> 832 833 834 <div class="eb02-footer"> 835 836 <div class="footer-left-col"> 837 <div class="footer-contact-info"> 838 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/pcvb-logo-full.svg" alt="PCVB Logo" /> 839 <p>1601 Market St, Suite 200â¨Philadelphia, PA 19103 840</p> <a href="tel:215-636-3300">215-636-3300</a> 841 </div> 842 </div> 843 <div class="footer-mid-col"> 844 <ul> 845 <li id="menu-item-6536" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6536"><a href="https://www.discoverphl.com/about/">About</a></li> 846<li id="menu-item-12550" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12550"><a href="https://www.discoverphl.com/contact-our-team/">Contact Our Team</a></li> 847<li id="menu-item-12551" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12551"><a href="https://www.discoverphl.com/about/employment/">Employment</a></li> 848<li id="menu-item-12549" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12549"><a href="https://www.discoverphl.com/about/phlcvb-board/">PHLCVB Board</a></li> 849<li id="menu-item-12547" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12547"><a href="https://www.discoverphl.com/about/phlcvb-foundation/">PHLCVB Foundation</a></li> 850<li id="menu-item-6538" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6538"><a href="https://www.discoverphl.com/press-room/">Press Room</a></li> 851<li id="menu-item-12548" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12548"><a href="https://www.discoverphl.com/about/research/">Research and Resources</a></li> 852 </ul> 853 </div> 854 <div class="footer-right-col"> 855 <h2>Sign up for <em>Key to Meetings</em></h2> <div class="callout-info"> 856 <p>Get exclusive news and updates in our monthly meetings newsletter.</p> <a href="https://discoverphl.com/newsletter-sign-up/" target="" class="btn-base light-blue arrow"><span>Sign Up</span><svg xmlns="http://www.w3.org/2000/svg" width="22" height="9" viewBox="0 0 22 9" fill="none"><path d="M22 4.5L14.5 0.169873V8.83013L22 4.5ZM0 5.25H15.25V3.75H0V5.25Z" fill="#FF4D00"/></svg></a> </div> 857 858 </div> 859 <div class="footer-partner-logos"> 860 <p>Strategic Partners</p> 861 <div class="logos-wrap"> 862 <a href="https://www.paconvention.com/" class="partner-url" target="_self"> 863 <img src="https://www.discoverphl.com/wp-content/uploads/2025/10/PCC-Large-White.png" alt="PCC logo" /> 864 </a> 865 866 <a href="https://www.visitpa.com/" class="partner-url" target="_self"> 867 <img src="https://www.discoverphl.com/wp-content/uploads/2024/05/Full-Logo-One-Color-White.png" alt="Pennsylvania The Great American Getaway" /> 868 </a> 869 870 <a href="https://www.phila.gov/" class="partner-url" target="_self"> 871 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/Group.png" alt="" /> 872 </a> 873 874 <a href="https://www.phl.org/" class="partner-url" target="_self"> 875 <img src="https://www.discoverphl.com/wp-content/uploads/2025/10/Combined-logo-primary-white-2.png" alt="" /> 876 </a> 877 878 <a href="https://www.ovpm.org/city/philadelphia-united-states/" class="partner-url" target="_self"> 879 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/World_Heritage-1.png" alt="" /> 880 </a> 881 882 <a href="https://www.visittheusa.com/" class="partner-url" target="_self"> 883 <img src="https://www.discoverphl.com/wp-content/uploads/2025/09/VisitTheUSA_Wordmark_RGB_White-1-1.png" alt="Brand USA logo" /> 884 </a> 885 886 <a href="https://www.ustravel.org/" class="partner-url" target="_self"> 887 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/US-Travel.png" alt="" /> 888 </a> 889 890 <a href="https://www.visitphilly.com/" class="partner-url" target="_self"> 891 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/Visit-1.png" alt="" /> 892 </a> 893 894 </div> 895 </div> 896 </div> 897 <div class="sub-footer"> 898 899 <p class="copyright">© 2026. Philadelphia Convention & Visitors Bureau</p> 900 <ul><li id="menu-item-6539" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-6539"><span class="seperator">|</span><a rel="privacy-policy" href="https://www.discoverphl.com/privacy-policy/">Privacy Policy</a></li> 901<li id="menu-item-54452" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54452"><span class="seperator">|</span><a href="https://www.discoverphl.com/terms/">Terms</a></li> 902 <li class="menu-item"><span class="seperator">|</span><a href="https://push10.com" rel="noopener" target="_blank"> Web Design by Push10 Branding Agency.</a></li> 903 </ul> 904 <div class="sm-icons-links"> 905 906 <a href="https://www.facebook.com/discoverPHL" target="_blank" aria-label="fb"> 907 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/facebook.png" alt="facebook account link" /> 908 </a> 909 <a href="https://www.instagram.com/discover_PHL/" target="_blank" aria-label="ig"> 910 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/instagram_logo.png" alt="instagram account link" /> 911 </a> 912 <a href="https://www.linkedin.com/company/56174" target="_blank" aria-label="li"> 913 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/linkedin.png" alt="linkedin account link" /> 914 </a> 915 916 </div> 917 </div> 918 </div> 919</footer> 920 921 <div id="pcvbNewsletterPopout" data-targetdepth="30"> 922 <button id="pcvbNewsletterPopoutClose" aria-label="close pop-up"></button> 923 <h2>Key to Meetings</h2> 924 <div class="description">Sign up exclusive news and updates in our monthly meetings newsletter.</div> 925 <div class="popout-form-container"> 926 927 928 <form action="" method="post" name="frm_8" class="pcvbForm" onsubmit="return svcrm.formBuilderScripts.validateForm(this);"> 929 <input id="formid" name="formid" type="hidden" value="8"> 930 <input id="groupid" name="groupid" type="hidden" value="5"> 931 <input id="isSubmitted" name="isSubmitted" value="1" type="hidden"> 932 933 934 <h3>Contact Information</h3> 935
936 <div id="rowcontainer_contact_fname" class="pcvbFormRow"> 937 938 <div id="labelcontainer_contact_fname" class="pcvbFormLabelContainer"> 939 <div id="td_contact_fname"> 940 <label id="label_contact_fname" for="contact_fname" class="pcvbFormLabel pcvbFormLabelRequired">First Name*:</label> 941 942 </div> 943 </div> 944 945 <div id="fieldcontainer_contact_fname" class="pcvbFormFieldContainer"> 946 947 948 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_fname" name="contact_fname" type="text" maxlength="50" size="25" value=""> 949 950 </div> 951 </div> 952 953 <div id="rowcontainer_contact_lname" class="pcvbFormRow"> 954 955 <div id="labelcontainer_contact_lname" class="pcvbFormLabelContainer"> 956 <div id="td_contact_lname"> 957 <label id="label_contact_lname" for="contact_lname" class="pcvbFormLabel pcvbFormLabelRequired">Last Name*:</label> 958 959 </div> 960 </div> 961 962 <div id="fieldcontainer_contact_lname" class="pcvbFormFieldContainer"> 963 964 965 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_lname" name="contact_lname" type="text" maxlength="50" size="25" value=""> 966 967 </div> 968 </div> 969 970 <div id="rowcontainer_contact_email" class="pcvbFormRow"> 971
972 <div id="labelcontainer_contact_email" class="pcvbFormLabelContainer"> 973 <div id="td_contact_email"> 974 <label id="label_contact_email" for="contact_email" class="pcvbFormLabel pcvbFormLabelRequired">Email*:</label> 975 976 </div> 977 </div> 978 979 <div id="fieldcontainer_contact_email" class="pcvbFormFieldContainer"> 980 981 982 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_email" name="contact_email" type="text" maxlength="200" size="25" value="" onblur="svcrm.formBuilderScripts.checkEmail(this); "> 983 984 </div> 985 </div> 986 987 <div id="rowcontainer_contact_title" class="pcvbFormRow"> 988 989 <div id="labelcontainer_contact_title" class="pcvbFormLabelContainer"> 990 <div id="td_contact_title"> 991 <label id="label_contact_title" for="contact_title" class="pcvbFormLabel pcvbFormLabelRequired">Title*:</label> 992 993 </div> 994 </div> 995 996 <div id="fieldcontainer_contact_title" class="pcvbFormFieldContainer"> 997 998 999 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_title" name="contact_title" type="text" maxlength="100" size="25" value=""> 1000 1001 </div> 1002 </div> 1003 1004 <div id="rowcontainer_contact_company" class="pcvbFormRow"> 1005
1006 <div id="labelcontainer_contact_company" class="pcvbFormLabelContainer"> 1007 <div id="td_contact_company"> 1008 <label id="label_contact_company" for="contact_company" class="pcvbFormLabel pcvbFormLabelRequired">Company*:</label> 1009 1010 </div> 1011 </div> 1012 1013 <div id="fieldcontainer_contact_company" class="pcvbFormFieldContainer"> 1014 1015 1016 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_company" name="contact_company" type="text" maxlength="200" size="25" value=""> 1017 1018 </div> 1019 </div> 1020 1021 <div id="rowcontainer_udf_180" class="pcvbFormRow"> 1022 1023 <div id="labelcontainer_udf_180" class="pcvbFormLabelContainer"> 1024 <div id="td_udf_180"> 1025 <label id="label_udf_180" for="udf_180" class="pcvbFormLabel pcvbFormLabelRequired">Industry*:</label> 1026 1027 </div> 1028 </div> 1029 1030 <div id="fieldcontainer_udf_180" class="pcvbFormFieldContainer"> 1031 1032 <select class="pcvbFormField pcvbFormFieldRequired" id="udf_180" name="udf_180" > 1033 <option value="">--None--</option> 1034 <option value="815">Other</option> 1035 1036 <option value="814">Affinity/Hobby</option> 1037 1038 <option value="813">Fraternal</option> 1039 1040 <option value="812">Religious</option> 1041 1042 <option value="811">Tech</option> 1043 1044 <option value="810">Finance</option> 1045 1046 <option value="809">Education</option> 1047 1048 <option value="808">Healthcare</option> 1049 1050 </select> 1051 1052 </div> 1053 </div> 1054 1055 <h3>Privacy Policy</h3> 1056 1057 <div id="rowcontainer_udf_114" class="pcvbFormRow"> 1058 1059 <div id="labelcontainer_udf_114" class="pcvbFormLabelContainer"> 1060 <div id="td_udf_114"> 1061 <label id="label_udf_114" class="pcvbFormLabel pcvbFormLabelRequired">I agree to the <a href="https://www.discoverphl.com/about-phlcvb/privacy-policy/" target="_blank" rel="noopener">Privacy Policy</a>*:</label> 1062 1063 </div> 1064 </div> 1065 1066 <div id="fieldcontainer_udf_114" class="pcvbFormFieldContainer"> 1067 1068 <fieldset style='border:0px;'> 1069 <legend style="display:none;">udf_114</legend> 1070 <input class="pcvbFormField pcvbFormFieldRequired" id="udf_114_1" name="udf_114" type="radio" value="1"><label class="pcvbFormLabel pcvbFormLabelRequired" for="udf_114_1"> Yes </label> 1071 <input class="pcvbFormField pcvbFormFieldRequired" id="udf_114_0" name="udf_114" type="radio" value="0"><label class="pcvbFormLabel pcvbFormLabelRequired" for="udf_114_0"> No </label> 1072 </fieldset> 1073 1074 </div> 1075 </div> 1076 1077 1078 <p class="pcvbFormHint formreq text-center">* Indicates a required field.</p> 1079 <hr size="1" color="cccccc" width="100%"> 1080 <div class="pcvbFormCaptchaRow"> 1081 <div class="pcvbFormCaptchaContainer"> 1082 1083 </div> 1084 </div> 1085 1086 <hr size="1" color="cccccc" width="100%"> 1087 <div class="pcvbFormButtonRow"> 1088 <div class="pcvbFormButtonContainer"> 1089 <label for="savefrm_button" class="label_hidden">Submit</label> 1090 <input class="pcvbFormButton" id="savefrm_button" name="savefrm" type="Submit" value="Submit"> 1091 <label for="resetfrm_button" class="label_hidden">Reset</label> 1092 <input class="pcvbFormButton" id="resetfrm_button" type="Reset" value="Reset"> 1093 </div> 1094 </div> 1095 </form> 1096 1097 1098
1098<script type="text/javascript"> 1099 /* IP Address Tracking enabled. IP addresses are being tracked in order to ensure compliance with local privacy laws */ 1100 var __sv = __sv || {}; 1101 1102 1103 (function(){ 1104 function ___onload_function(){ 1105 1106 }; 1107 1108 1109 1110 if(window.addEventListener){ 1111 window.addEventListener('load',___onload_function,false); 1112 }else if(window.attachEvent){ 1113 window.attachEvent('onload',___onload_function); 1114 } 1115 })(); 1116 </script>
1116 1117 1118
1118<script type="text/javascript"> 1119 function AoProcessForm(frm){ 1120 var changeSaveFrmButtonTypeAndSubmit = function(frm){ 1121 try{ 1122 if(frm && 'savefrm' in frm && 'type' in frm.savefrm){ 1123 frm.savefrm.style.opacity = '0'; 1124 frm.savefrm.setAttribute("type","input"); 1125 } 1126 frm.submit(); 1127 }catch(e){ 1128 if(console && 'log' in console){ 1129 console.log("Error trying to pass the save button", e); 1130 } 1131 } 1132 }; 1133 1134 var serializeForm = function serialize(form){if(!form||form.nodeName!=="FORM"){return }var i,j,q=[];for(i=form.elements.length-1;i>=0;i=i-1){if(form.elements[i].name==="" || form.elements[i].name==="g-recaptcha-response"){continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"text":case"hidden":case"password":case"button":case"reset":case"submit":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"checkbox":case"radio":if(form.elements[i].checked){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value))}break;case"file":break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"select-multiple":for(j=form.elements[i].options.length-1;j>=0;j=j-1){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break}}return q.join("&")}; 1135 var iframe = document.createElement('iframe'); 1136 1137 iframe.id = "A42FD915_E964_6EA1_D022E782190EEDFB"; 1138 iframe.style.width = '0'; 1139 iframe.style.height = '0'; 1140 iframe.style.position='absolute'; 1141 iframe.src= 'https://marketing.discoverphl.com/acton/eform/45609/d1c253ff-8d0f-4769-b0a1-c61bc9cc4b23/d-ext-0001'; 1142 iframe.src += '?' + serializeForm(frm); 1143 document.body.appendChild(iframe); 1144 1145 1146 try{ 1147 var elm = document.getElementById("A42FD915_E964_6EA1_D022E782190EEDFB"); 1148 var hasLoaded = false; 1149 var timesChecked = 0; 1150 1151 var checkForLoadedInterval = window.setInterval(function(){ 1152 timesChecked++; 1153 if(timesChecked > 3 || hasLoaded){ 1154 window.clearInterval(checkForLoadedInterval); 1155 if(!hasLoaded){ 1156 1157 try{ 1158 if(elm.removeEventListener){ 1159 elm.removeEventListener("load", weHaveLoadedFunc); 1160 }else if(elm.detachEvent){ 1161 elm.detachEvent("onload",weHaveLoadedFunc) 1162 } 1163 }catch(e){} 1164 1165 changeSaveFrmButtonTypeAndSubmit(frm); 1166 } 1167 } 1168 },1000); 1169 1170 var weHaveLoadedFunc = function(){ 1171 hasLoaded = true; 1172 1173 try{window.clearInterval(checkForLoadedInterval);}catch(e){console.log("Error clearing interval",e);} 1174 changeSaveFrmButtonTypeAndSubmit(frm); 1175 } 1176 1177 if (elm.addEventListener) { 1178 elm.addEventListener("load",weHaveLoadedFunc, false); 1179 } else if (elm.attachEvent) { 1180 elm.attachEvent("onload", weHaveLoadedFunc); 1181 } 1182 }catch(e){ 1183 1184 changeSaveFrmButtonTypeAndSubmit(frm); 1185 } 1186 1187 } 1188 </script>
1188 1189
1189<script type="text/javascript"> 1190 (function(){ 1191 1192 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1193 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1194 1195 svcrm.formBuilderScripts.chkBoxes = function(fld){ 1196 var i = 0; 1197 var cnt = 0; 1198 if(fld.length==undefined && fld.checked == true) return true; 1199 for (i = 0; i < fld.length; i++) { 1200 if (fld[i].checked) { 1201 cnt++; 1202 break; 1203 } 1204 } 1205 if (cnt == 0) 1206 return false; 1207 else 1208 return true; 1209 }; 1210 1211 svcrm.formBuilderScripts.updReq = function(){ 1212 var i = 0; 1213 var st = new Array(); 1214 var zp = new Array(); 1215 1216 1217 1218 return true; 1219 }; 1220 1221 // removes the leading and trailing spaces from a string, 1222 // similar to the java.lang.String.trim() function 1223 // added by lturetsky, taken from http://www.voy.com/1888/58.html 1224 svcrm.formBuilderScripts.trim = function(st){ 1225 var len = st.length 1226 var begin = 0, end = len - 1; 1227 while (st.charAt(begin) == " " && begin < len) { 1228 begin++; 1229 } 1230 while (st.charAt(end) == " " && begin < end) { 1231 end--; 1232 } 1233 return st.substring(begin, end+1); 1234 }; 1235 1236 1237 svcrm.formBuilderScripts.validateForm = function(frm){ 1238 var errMsg = '', reqMsg = '', fmtMsg = ''; 1239 1240 1241 1242 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_fname').value).length == 0) 1243 1244 reqMsg += ' First Name\n'; 1245 1246 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_lname').value).length == 0) 1247 1248 reqMsg += ' Last Name\n'; 1249 1250 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_email').value).length == 0) 1251 1252 reqMsg += ' Email\n'; 1253 1254 if (!svcrm.formBuilderScripts.checkEmail(document.getElementById('contact_email'))) 1255 fmtMsg += ' Please enter a valid email address for: Email\n'; 1256 1257 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_title').value).length == 0) 1258 1259 reqMsg += ' Title\n'; 1260 1261 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_company').value).length == 0) 1262 1263 reqMsg += ' Company\n'; 1264 1265 if (document.getElementById('udf_180').selectedIndex == 0) 1266 1267 reqMsg += ' Industry\n'; 1268 1269 if (!document.getElementById('udf_114_1').checked && !(document.getElementById('udf_114_0').checked)) 1270 1271 reqMsg += ' I agree to the <a href=\"https://www.discoverphl.com/about-phlcvb/privacy-policy/\" target=\"_blank\" rel=\"noopener\">Privacy Policy</a>\n'; 1272 1273 1274 //only validate the captcha if it is there 1275 var cdElm = document.getElementById('code'); 1276 if (cdElm !== null && cdElm.value.length == 0){ 1277 reqMsg += ' Image Code\n'; 1278 } 1279 1280 //allow a hook in for custom validations 1281 var customValidations = svcrm.formBuilderScripts.processCustomValidations(); 1282 if('reqMsg' in customValidations && customValidations.reqMsg.length){ 1283 reqMsg += customValidations.reqMsg; 1284 } 1285 if('fmtMsg' in customValidations && customValidations.fmtMsg.length){ 1286 fmtMsg += customValidations.fmtMsg; 1287 } 1288 1289 return svcrm.formBuilderScripts.processValidationMessages(reqMsg,fmtMsg,frm); 1290 }; 1291 1292 //core will do nothing but gives devs a hook 1293 svcrm.formBuilderScripts.processCustomValidations = function(){ 1294 var rtnvar = {reqMsg:'',fmtMsg:''}; 1295 return rtnvar; 1296 }; 1297 1298 //might as well split this out so customizations can be made 1299 svcrm.formBuilderScripts.processValidationMessages = function(reqMsg,fmtMsg,frm){ 1300 var errMsg = ''; 1301 Array.prototype.forEach.call(document.getElementsByName("savefrm"), function(e){e.disabled=true}); 1302 if ((reqMsg.length + fmtMsg.length) != 0) { 1303 errMsg = 'This information cannot be sent at this time!\n\n'; 1304 if (reqMsg.length > 0) 1305 errMsg += 'The following fields are required!\n' + reqMsg + '\n'; 1306 1307 if (fmtMsg.length > 0)
1308 errMsg += 'The following information is invalid!\n' + fmtMsg + '\n'; 1309 1310 svcrm.formBuilderScripts.showValidationErrorMsg(errMsg); 1311 Array.prototype.forEach.call(document.getElementsByName("savefrm"), function(e){e.disabled=false}); 1312 return false; 1313 }else{ 1314 AoProcessForm(frm); 1315 return false; 1316 } 1317 }; 1318 1319 //why not :) 1320 svcrm.formBuilderScripts.showValidationErrorMsg = function(msg){ 1321 alert(msg); 1322 }; 1323 1324 svcrm.formBuilderScripts.updateDOB = function(monthFld,dayFld) { 1325 var days = 0; 1326 if (monthFld.selectedIndex == 0) return true; 1327 1328 switch (monthFld.selectedIndex) { 1329 case 2: 1330 days = 30; 1331 break; 1332 case 4: 1333 case 6: 1334 case 9: 1335 case 11: 1336 days = 31; 1337 break; 1338 default: 1339 days = 32; 1340 break; 1341 } 1342 1343 if (dayFld.options[dayFld.selectedIndex].value >= days) 1344 dayFld.selectedIndex = days - 1; 1345 1346 dayFld.length = days; 1347 for (var i = 28; i < days; i++) { 1348 dayFld.options[i].value = String(i); 1349 dayFld.options[i].text = String(i); 1350 } 1351 return true; 1352 } 1353 1354 })(); 1355 </script>
1355 1356 1357
1357<script type="text/javascript"> 1358 1359 1360 (function(){ 1361 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1362 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1363 1364 1365 window.svcrm.formBuilderScripts.states = [{"STATES":"**** - **","COUNTRYNAME":"AFGHANISTAN","COUNTRYID":239},{"STATES":"**** - **","COUNTRYNAME":"Ã LAND ISLANDS","COUNTRYID":272},{"STATES":"**** - **","COUNTRYNAME":"ALBANIA","COUNTRYID":1},{"STATES":"**** - **","COUNTRYNAME":"ALGERIA","COUNTRYID":2},{"STATES":"**** - **","COUNTRYNAME":"AMERICAN SAMOA","COUNTRYID":3},{"STATES":"**** - **","COUNTRYNAME":"ANDORRA","COUNTRYID":4},{"STATES":"**** - **","COUNTRYNAME":"ANGOLA","COUNTRYID":250},{"STATES":"**** - **","COUNTRYNAME":"ANGUILLA","COUNTRYID":5},{"STATES":"**** - **","COUNTRYNAME":"ANTARCTICA","COUNTRYID":256},{"STATES":"**** - **","COUNTRYNAME":"ANTIGUA AND BARBUDA","COUNTRYID":6},{"STATES":"**** - **","COUNTRYNAME":"ARGENTINA","COUNTRYID":7},{"STATES":"**** - **","COUNTRYNAME":"ARMENIA","COUNTRYID":251},{"STATES":"**** - **","COUNTRYNAME":"ARUBA","COUNTRYID":8},{"STATES":"**** - ** NSWNSW - New South Wales QldQld - Queensland SASA - South Australia TasTas - Tasmania VicVic - Victoria WAWA - Western Australia","COUNTRYNAME":"AUSTRALIA","COUNTRYID":9},{"STATES":"**** - **","COUNTRYNAME":"AUSTRIA","COUNTRYID":10},{"STATES":"**** - **","COUNTRYNAME":"AZERBAIJAN","COUNTRYID":252},{"STATES":"**** - **","COUNTRYNAME":"BAHAMAS","COUNTRYID":12},{"STATES":"**** - **","COUNTRYNAME":"BAHRAIN","COUNTRYID":13},{"STATES":"**** - **","COUNTRYNAME":"BANGLADESH","COUNTRYID":14},{"STATES":"**** - **","COUNTRYNAME":"BARBADOS","COUNTRYID":15},{"STATES":"**** - **","COUNTRYNAME":"BELARUS","COUNTRYID":18},{"STATES":"**** - **","COUNTRYNAME":"BELGIUM","COUNTRYID":16},{"STATES":"**** - **","COUNTRYNAME":"BELIZE","COUNTRYID":17},{"STATES":"**** - **","COUNTRYNAME":"BENIN","COUNTRYID":19},{"STATES":"**** - **","COUNTRYNAME":"BERMUDA","COUNTRYID":20},{"STATES":"**** - **","COUNTRYNAME":"BHUTAN","COUNTRYID":240},{"STATES":"**** - **","COUNTRYNAME":"BOLIVIA, PLURINATIONAL STATE OF","COUNTRYID":21},{"STATES":"**** - **","COUNTRYNAME":"BOSNIA AND HERZEGOVINA","COUNTRYID":23},{"STATES":"**** - **","COUNTRYNAME":"BOTSWANA","COUNTRYID":24},{"STATES":"**** - **","COUNTRYNAME":"BOUVET ISLAND","COUNTRYID":253},{"STATES":"**** - **","COUNTRYNAME":"BRAZIL","COUNTRYID":25},{"STATES":"**** - **","COUNTRYNAME":"BRITISH INDIAN OCEAN TERRITORY","COUNTRYID":278},{"STATES":"**** - **","COUNTRYNAME":"BRUNEI DARUSSALAM","COUNTRYID":27},{"STATES":"**** - **","COUNTRYNAME":"BULGARIA","COUNTRYID":28},{"STATES":"**** - **","COUNTRYNAME":"BURKINA FASO","COUNTRYID":29},{"STATES":"**** - **","COUNTRYNAME":"BURUNDI","COUNTRYID":30},{"STATES":"**** - **","COUNTRYNAME":"CAMBODIA","COUNTRYID":31},{"STATES":"**** - **","COUNTRYNAME":"CAMEROON","COUNTRYID":32},{"STATES":"**** - ** ABAB - Alberta BCBC - British Columbia MBMB - Manitoba NBNB - New Brunswick NLNL - Newfoundland and Labrador NTNT - Northwest Territory NSNS - Nova Scotia NUNU - Nunavut ONON - Ontario PEPE - Prince Edward Island QCQC - Quebec SKSK - Saskatchewan YTYT - Yukon","COUNTRYNAME":"CANADA","COUNTRYID":33},{"STATES":"**** - **","COUNTRYNAME":"CANARY ISLANDS","COUNTRYID":34},{"STATES":"**** - **","COUNTRYNAME":"CAPE VERDE","COUNTRYID":35},{"STATES":"**** - **","COUNTRYNAME":"CAYMAN ISLANDS","COUNTRYID":36},{"STATES":"**** - **","COUNTRYNAME":"CENTRAL AFRICAN REPUBLIC","COUNTRYID":37},{"STATES":"**** - **","COUNTRYNAME":"CHAD","COUNTRYID":38},{"STATES":"**** - ** SANSAN - Santiago","COUNTRYNAME":"CHILE","COUNTRYID":40},{"STATES":"**** - **","COUNTRYNAME":"CHINA","COUNTRYID":41},{"STATES":"**** - **","COUNTRYNAME":"CHRISTMAS ISLAND","COUNTRYID":254},{"STATES":"**** - **","COUNTRYNAME":"COCOS (KEELING) ISLANDS","COUNTRYID":241},{"STATES":"**** - **","COUNTRYNAME":"COLOMBIA","COUNTRYID":42},{"STATES":"**** - **","COUNTRYNAME":"COMOROS","COUNTRYID":255},{"STATES":"**** - **","COUNTRYNAME":"CONGO","COUNTRYID":43},{"STATES":"**** - **","COUNTRYNAME":"CONGO, THE DEMOCRATIC REPUBLIC OF THE","COUNTRYID":274},{"STATES":"**** - **","COUNTRYNAME":"COOK ISLANDS","COUNTRYID":44},{"STATES":"**** - **","COUNTRYNAME":"COSTA RICA","COUNTRYID":45},{"STATES":"**** - **","COUNTRYNAME":"CÃTE D'IVOIRE","COUNTRYID":94},{"STATES":"**** - **","COUNTRYNAME":"CROATIA","COUNTRYID":46},{"STATES":"**** - **","COUNTRYNAME":"CUBA","COUNTRYID":242},{"STATES":"**** - **","COUNTRYNAME":"CURACAO","COUNTRYID":47},{"STATES":"**** - **","COUNTRYNAME":"CYPRUS","COUNTRYID":48},{"STATES":"**** - **","COUNTRYNAME":"CZECH REPUBLIC","COUNTRYID":49},{"STATES":"**** - **","COUNTRYNAME":"DENMARK","COUNTRYID":50},{"STATES":"**** - **","COUNTRYNAME":"DJIBOUTI","COUNTRYID":51},{"STATES":"**** - **","COUNTRYNAME":"DOMINICA","COUNTRYID":52},{"STATES":"**** - **","COUNTRYNAME":"DOMINICAN REPUBLIC","COUNTRYID":53},{"STATES":"**** - **","COUNTRYNAME":"ECUADOR","COUNTRYID":54},{"STATES":"**** - **","COUNTRYNAME":"EGYPT","COUNTRYID":55},{"STATES":"**** - **","COUNTRYNAME":"EL SALVADOR","COUNTRYID":56},{"STATES":"**** - **","COUNTRYNAME":"EQUATORIAL GUINEA","COUNTRYID":58},{"STATES":"**** - **","COUNTRYNAME":"ERITREA","COUNTRYID":59},{"STATES":"**** - **","COUNTRYNAME":"ESTONIA","COUNTRYID":60},{"STATES":"**** - **","COUNTRYNAME":"ETHIOPIA","COUNTRYID":61},{"STATES":"**** - **","COUNTRYNAME":"FALKLAND ISLANDS (MALVINAS)","COUNTRYID":258},{"STATES":"**** - **","COUNTRYNAME":"FAROE ISLANDS","COUNTRYID":62},{"STATES":"**** - **","COUNTRYNAME":"FIJI","COUNTRYID":64},{"STATES":"**** - **","COUNTRYNAME":"FINLAND","COUNTRYID":65},{"STATES":"**** - **","COUNTRYNAME":"FRANCE","COUNTRYID":66},{"STATES":"**** - **","COUNTRYNAME":"FRENCH GUIANA","COUNTRYID":67},{"STATES":"**** - **","COUNTRYNAME":"FRENCH POLYNESIA","COUNTRYID":197},{"STATES":"**** - **","COUNTRYNAME":"FRENCH SOUTHERN TERRITORIES","COUNTRYID":283},{"STATES":"**** - **","COUNTRYNAME":"GABON","COUNTRYID":69},{"STATES":"**** - **","COUNTRYNAME":"GAMBIA","COUNTRYID":70},{"STATES":"**** - **","COUNTRYNAME":"GEORGIA","COUNTRYID":71},{"STATES":"**** - **","COUNTRYNAME":"GERMANY","COUNTRYID":72},{"STATES":"**** - **","COUNTRYNAME":"GHANA","COUNTRYID":73},{"STATES":"**** - **","COUNTRYNAME":"GIBRALTAR","COUNTRYID":74},{"STATES":"**** - **","COUNTRYNAME":"GREECE","COUNTRYID":75},{"STATES":"**** - **","COUNTRYNAME":"GREENLAND","COUNTRYID":76},{"STATES":"**** - **","COUNTRYNAME":"GRENADA","COUNTRYID":77},{"STATES":"**** - **","COUNTRYNAME":"GUADELOUPE","COUNTRYID":78},{"STATES":"**** - **","COUNTRYNAME":"GUAM","COUNTRYID":79},{"STATES":"**** - **","COUNTRYNAME":"GUATEMALA","COUNTRYID":80},{"STATES":"**** - **","COUNTRYNAME":"GUERNSEY","COUNTRYID":275},{"STATES":"**** - **","COUNTRYNAME":"GUINEA","COUNTRYID":81},{"STATES":"**** - **","COUNTRYNAME":"GUINEA-BISSAU","COUNTRYID":82},{"STATES":"**** - **","COUNTRYNAME":"GUYANA","COUNTRYID":83},{"STATES":"**** - **","COUNTRYNAME":"HAITI","COUNTRYID":84},{"STATES":"**** - **","COUNTRYNAME":"HEARD ISLAND AND MCDONALD ISLANDS","COUNTRYID":276},{"STATES":"**** - **","COUNTRYNAME":"HOLY SEE (VATICAN CITY STATE)","COUNTRYID":236},{"STATES":"**** - **","COUNTRYNAME":"HONDURAS","COUNTRYID":86},{"STATES":"**** - **","COUNTRYNAME":"HONG KONG","COUNTRYID":87},{"STATES":"**** - **","COUNTRYNAME":"HUNGARY","COUNTRYID":88},{"STATES":"**** - **","COUNTRYNAME":"ICELAND","COUNTRYID":89},{"STATES":"**** - **","COUNTRYNAME":"INDIA","COUNTRYID":90},{"STATES":"**** - **","COUNTRYNAME":"INDONESIA","COUNTRYID":91},{"STATES":"**** - **","COUNTRYNAME":"IRAN, ISLAMIC REPUBLIC OF","COUNTRYID":235},{"STATES":"**** - **","COUNTRYNAME":"IRAQ","COUNTRYID":238},{"STATES":"**** - **","COUNTRYNAME":"IRELAND","COUNTRYID":234},{"STATES":"**** - **","COUNTRYNAME":"ISLE OF MAN","COUNTRYID":277},{"STATES":"**** - **","COUNTRYNAME":"ISRAEL","COUNTRYID":92},{"STATES":"**** - **","COUNTRYNAME":"ITALY","COUNTRYID":93},{"STATES":"**** - **","COUNTRYNAME":"JAMAICA","COUNTRYID":95},{"STATES":"**** - **","COUNTRYNAME":"JAPAN","COUNTRYID":96},{"STATES":"**** - **","COUNTRYNAME":"JERSEY","COUNTRYID":279},{"STATES":"**** - **","COUNTRYNAME":"JORDAN","COUNTRYID":97},{"STATES":"**** - **","COUNTRYNAME":"KAZAKHSTAN","COUNTRYID":98},{"STATES":"**** - **","COUNTRYNAME":"KENYA","COUNTRYID":99},{"STATES":"**** - **","COUNTRYNAME":"KIRIBATI","COUNTRYID":100},{"STATES":"**
1365** - **","COUNTRYNAME":"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF","COUNTRYID":264},{"STATES":"**** - **","COUNTRYNAME":"KOREA, REPUBLIC OF","COUNTRYID":177},{"STATES":"**** - **","COUNTRYNAME":"KOSRAE","COUNTRYID":101},{"STATES":"**** - **","COUNTRYNAME":"KUWAIT","COUNTRYID":102},{"STATES":"**** - **","COUNTRYNAME":"KYRGYZSTAN","COUNTRYID":103},{"STATES":"**** - **","COUNTRYNAME":"LAO PEOPLE'S DEMOCRATIC REPUBLIC","COUNTRYID":104},{"STATES":"**** - **","COUNTRYNAME":"LATVIA","COUNTRYID":105},{"STATES":"**** - **","COUNTRYNAME":"LEBANON","COUNTRYID":106},{"STATES":"**** - **","COUNTRYNAME":"LESOTHO","COUNTRYID":107},{"STATES":"**** - **","COUNTRYNAME":"LIBERIA","COUNTRYID":108},{"STATES":"**** - **","COUNTRYNAME":"LIBYAN ARAB JAMAHIRIYA","COUNTRYID":259},{"STATES":"**** - **","COUNTRYNAME":"LIECHTENSTEIN","COUNTRYID":109},{"STATES":"**** - **","COUNTRYNAME":"LITHUANIA","COUNTRYID":110},{"STATES":"**** - **","COUNTRYNAME":"LUXEMBOURG","COUNTRYID":111},{"STATES":"**** - **","COUNTRYNAME":"MACAO","COUNTRYID":112},{"STATES":"**** - **","COUNTRYNAME":"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF","COUNTRYID":113},{"STATES":"**** - **","COUNTRYNAME":"MADAGASCAR","COUNTRYID":114},{"STATES":"**** - **","COUNTRYNAME":"MALAWI","COUNTRYID":116},{"STATES":"**** - **","COUNTRYNAME":"MALAYSIA","COUNTRYID":117},{"STATES":"**** - **","COUNTRYNAME":"MALDIVES","COUNTRYID":118},{"STATES":"**** - **","COUNTRYNAME":"MALI","COUNTRYID":119},{"STATES":"**** - **","COUNTRYNAME":"MALTA","COUNTRYID":120},{"STATES":"**** - ** MHMH - Marshall Islands","COUNTRYNAME":"MARSHALL ISLANDS","COUNTRYID":121},{"STATES":"**** - **","COUNTRYNAME":"MARTINIQUE","COUNTRYID":122},{"STATES":"**** - **","COUNTRYNAME":"MAURITANIA","COUNTRYID":123},{"STATES":"**** - **","COUNTRYNAME":"MAURITIUS","COUNTRYID":124},{"STATES":"**** - **","COUNTRYNAME":"MAYOTTE","COUNTRYID":260},{"STATES":"**** - **","COUNTRYNAME":"MEXICO","COUNTRYID":125},{"STATES":"**** - **","COUNTRYNAME":"MICRONESIA, FEDERATED STATES OF","COUNTRYID":63},{"STATES":"**** - **","COUNTRYNAME":"MOLDOVA, REPUBLIC OF","COUNTRYID":126},{"STATES":"**** - **","COUNTRYNAME":"MONACO","COUNTRYID":127},{"STATES":"**** - **","COUNTRYNAME":"MONGOLIA","COUNTRYID":261},{"STATES":"**** - **","COUNTRYNAME":"MONTENEGRO","COUNTRYID":115},{"STATES":"**** - **","COUNTRYNAME":"MONTSERRAT","COUNTRYID":128},{"STATES":"**** - **","COUNTRYNAME":"MOROCCO","COUNTRYID":129},{"STATES":"**** - **","COUNTRYNAME":"MOZAMBIQUE","COUNTRYID":130},{"STATES":"**** - **","COUNTRYNAME":"MYANMAR","COUNTRYID":131},{"STATES":"**** - **","COUNTRYNAME":"NAMIBIA","COUNTRYID":132},{"STATES":"**** - **","COUNTRYNAME":"NAURU","COUNTRYID":262},{"STATES":"**** - **","COUNTRYNAME":"NEPAL","COUNTRYID":133},{"STATES":"**** - **","COUNTRYNAME":"NETHERLANDS","COUNTRYID":134},{"STATES":"**** - **","COUNTRYNAME":"NETHERLANDS ANTILLES","COUNTRYID":135},{"STATES":"**** - **","COUNTRYNAME":"NEW CALEDONIA","COUNTRYID":136},{"STATES":"**** - **","COUNTRYNAME":"NEW ZEALAND","COUNTRYID":137},{"STATES":"**** - **","COUNTRYNAME":"NICARAGUA","COUNTRYID":138},{"STATES":"**** - **","COUNTRYNAME":"NIGER","COUNTRYID":139},{"STATES":"**** - **","COUNTRYNAME":"NIGERIA","COUNTRYID":140},{"STATES":"**** - **","COUNTRYNAME":"NIUE","COUNTRYID":263},{"STATES":"**** - **","COUNTRYNAME":"NORFOLK ISLAND","COUNTRYID":141},{"STATES":"**** - **","COUNTRYNAME":"NORTHERN MARIANA ISLANDS","COUNTRYID":143},{"STATES":"**** - **","COUNTRYNAME":"NORWAY","COUNTRYID":144},{"STATES":"**** - **","COUNTRYNAME":"OMAN","COUNTRYID":145},{"STATES":"**** - **","COUNTRYNAME":"PAKISTAN","COUNTRYID":146},{"STATES":"**** - **","COUNTRYNAME":"PALAU","COUNTRYID":147},{"STATES":"**
1365** - **","COUNTRYNAME":"PALESTINIAN TERRITORY, OCCUPIED","COUNTRYID":281},{"STATES":"**** - **","COUNTRYNAME":"PANAMA","COUNTRYID":148},{"STATES":"**** - **","COUNTRYNAME":"PAPUA NEW GUINEA","COUNTRYID":149},{"STATES":"**** - **","COUNTRYNAME":"PARAGUAY","COUNTRYID":150},{"STATES":"**** - **","COUNTRYNAME":"PERU","COUNTRYID":151},{"STATES":"**** - **","COUNTRYNAME":"PHILIPPINES","COUNTRYID":152},{"STATES":"**** - **","COUNTRYNAME":"PITCAIRN","COUNTRYID":265},{"STATES":"**** - **","COUNTRYNAME":"POLAND","COUNTRYID":153},{"STATES":"**** - **","COUNTRYNAME":"PONAPE","COUNTRYID":154},{"STATES":"**** - **","COUNTRYNAME":"PORTUGAL","COUNTRYID":155},{"STATES":"**** - **","COUNTRYNAME":"PUERTO RICO","COUNTRYID":156},{"STATES":"**** - **","COUNTRYNAME":"QATAR","COUNTRYID":157},{"STATES":"**** - **","COUNTRYNAME":"RÃUNION","COUNTRYID":160},{"STATES":"**** - **","COUNTRYNAME":"ROMANIA","COUNTRYID":161},{"STATES":"**** - **","COUNTRYNAME":"RUSSIAN FEDERATION","COUNTRYID":163},{"STATES":"**** - **","COUNTRYNAME":"RWANDA","COUNTRYID":164},{"STATES":"**** - **","COUNTRYNAME":"SABA","COUNTRYID":165},{"STATES":"**** - **","COUNTRYNAME":"SAINT BARTHÃLEMY","COUNTRYID":273},{"STATES":"**** - **","COUNTRYNAME":"SAINT HELENA","COUNTRYID":245},{"STATES":"**** - **","COUNTRYNAME":"SAINT KITTS AND NEVIS","COUNTRYID":185},{"STATES":"**** - **","COUNTRYNAME":"SAINT LUCIA","COUNTRYID":186},{"STATES":"**** - **","COUNTRYNAME":"SAINT MARTIN","COUNTRYID":280},{"STATES":"**** - **","COUNTRYNAME":"SAINT PIERRE AND MIQUELON","COUNTRYID":269},{"STATES":"**** - **","COUNTRYNAME":"SAINT VINCENT AND THE GRENADINES","COUNTRYID":190},{"STATES":"**** - **","COUNTRYNAME":"SAIPAN","COUNTRYID":166},{"STATES":"**** - **","COUNTRYNAME":"SAMOA","COUNTRYID":228},{"STATES":"**** - **","COUNTRYNAME":"SAN MARINO","COUNTRYID":266},{"STATES":"**** - **","COUNTRYNAME":"SAO TOME AND PRINCIPE","COUNTRYID":267},{"STATES":"**** - **","COUNTRYNAME":"SAUDI ARABIA","COUNTRYID":167},{"STATES":"**** - **","COUNTRYNAME":"SCOTLAND","COUNTRYID":168},{"STATES":"**** - **","COUNTRYNAME":"SENEGAL","COUNTRYID":169},{"STATES":"**** - **","COUNTRYNAME":"SERBIA","COUNTRYID":284},{"STATES":"**** - **","COUNTRYNAME":"SEYCHELLES","COUNTRYID":170},{"STATES":"**** - **","COUNTRYNAME":"SIERRA LEONE","COUNTRYID":171},{"STATES":"**** - **","COUNTRYNAME":"SINGAPORE","COUNTRYID":172},{"STATES":"**** - **","COUNTRYNAME":"SLOVAKIA","COUNTRYID":173},{"STATES":"**** - **","COUNTRYNAME":"SLOVENIA","COUNTRYID":174},{"STATES":"**** - **","COUNTRYNAME":"SOLOMON ISLANDS","COUNTRYID":175},{"STATES":"**** - **","COUNTRYNAME":"SOMALIA","COUNTRYID":244},{"STATES":"**** - **","COUNTRYNAME":"SOUTH AFRICA","COUNTRYID":176},{"STATES":"**** - **","COUNTRYNAME":"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS","COUNTRYID":268},{"STATES":"**** - **","COUNTRYNAME":"SPAIN","COUNTRYID":178},{"STATES":"**** - **","COUNTRYNAME":"SRI LANKA","COUNTRYID":179},{"STATES":"**** - **","COUNTRYNAME":"ST. BARTHELEMY","COUNTRYID":180},{"STATES":"**** - **","COUNTRYNAME":"ST. CHRISTOPHER","COUNTRYID":181},{"STATES":"**** - **","COUNTRYNAME":"ST. CROIX","COUNTRYID":182},{"STATES":"**** - **","COUNTRYNAME":"ST. EUSTATIUS","COUNTRYID":183},{"STATES":"**** - **","COUNTRYNAME":"ST. JOHN","COUNTRYID":184},{"STATES":"**** - **","COUNTRYNAME":"ST. MAARTEN","COUNTRYID":187},{"STATES":"**** - **","COUNTRYNAME":"ST. MARTIN","COUNTRYID":188},{"STATES":"**** - **","COUNTRYNAME":"ST. THOMAS","COUNTRYID":189},{"STATES":"**** - **","COUNTRYNAME":"SUDAN","COUNTRYID":191},{"STATES":"**** - **","COUNTRYNAME":"SURINAME","COUNTRYID":192},{"STATES":"**** - **","COUNTRYNAME":"SVALBARD AND JAN MAYEN","COUNTRYID":282},{"STATES":"**** - **","COUNTRYNAME":"SWAZILAND","COUNTRYID":193},{"STATES":"**** - **","COUNTRYNAME":"SWEDEN","COUNTRYID":194},{"STATES":"**** - **","COUNTRYNAME":"SWITZERLAND","COUNTRYID":195},{"STATES":"**** - **","COUNTRYNAME":"SYRIAN ARAB REPUBLIC","COUNTRYID":196},{"STATES":"**** - **","COUNTRYNAME":"TAIWAN, PROVINCE OF CHINA","COUNTRYID":198},{"STATES":"**** - **","COUNTRYNAME":"TAJIKISTAN","COUNTRYID":199},{"STATES":"**** - **","COUNTRYNAME":"TANZANIA, UNITED REPUBLIC OF","COUNTRYID":200},{"STATES":"**** - **","COUNTRYNAME":"THAILAND","COUNTRYID":201},{"STATES":"**** - **","COUNTRYNAME":"TIMOR-LESTE","COUNTRYID":257},{"STATES":"**** - **","COUNTRYNAME":"TINIAN","COUNTRYID":202},{"STATES":"**** - **","COUNTRYNAME":"TOGO","COUNTRYID":203},{"STATES":"**** - **","COUNTRYNAME":"TOKELAU","COUNTRYID":270},{"STATES":"**** - **","COUNTRYNAME":"TONGA","COUNTRYID":204},{"STATES":"**** - **","COUNTRYNAME":"TORTOLA","COUNTRYID":205},{"STATES":"**** - **","COUNTRYNAME":"TRINIDAD AND TOBAGO","COUNTRYID":206},{"STATES":"**** - **","COUNTRYNAME":"TRUK","COUNTRYID":207},{"STATES":"**** - **","COUNTRYNAME":"TUNISIA","COUNTRYID":208},{"STATES":"**** - **","COUNTRYNAME":"TURKEY","COUNTRYID":209},{"STATES":"**** - **","COUNTRYNAME":"TURKMENISTAN","COUNTRYID":271},{"STATES":"**** - **","COUNTRYNAME":"TURKS AND CAICOS ISLANDS","COUNTRYID":210},{"STATES":"**** - **","COUNTRYNAME":"TUVALU","COUNTRYID":211},{"STATES":"**** - **","COUNTRYNAME":"UGANDA","COUNTRYID":212},{"STATES":"**** - **","COUNTRYNAME":"UKRAINE","COUNTRYID":213},{"STATES":"**** - **","COUNTRYNAME":"UNION ISLAND","COUNTRYID":214},{"STATES":"**** - **","COUNTRYNAME":"UNITED ARAB EMIRATES","COUNTRYID":215},{"STATES":"**** - **","COUNTRYNAME":"UNITED KINGDOM","COUNTRYID":57},{"STATES":"**** - ** ALAL - Alabama AKAK - Alaska AZAZ - Arizona ARAR - Arkansas CACA - California COCO - Colorado CTCT - Connecticut DEDE - Delaware DCDC - District of Columbia FLFL - Florida GAGA - Georgia HIHI - Hawaii IDID - Idaho ILIL - Illinois ININ - Indiana IAIA - Iowa KSKS - Kansas KYKY - Kentucky LALA - Louisiana MEME - Maine MDMD - Maryland MAMA - Massachusetts MIMI - Michigan MNMN - Minnesota MSMS - Mississippi MOMO - Missouri MTMT - Montana NENE - Nebraska NVNV - Nevada NHNH - New Hampshire NJNJ - New Jersey NMNM - New Mexico NYNY - New York NCNC - North Carolina NDND - North Dakota OHOH - Ohio OKOK - Oklahoma OROR - Oregon PAPA - Pennsylvania RIRI - Rhode Island SCSC - South Carolina SDSD - South Dakota TNTN - Tennessee TXTX - Texas UTUT - Utah VTVT - Vermont VAVA - Virginia WAWA - Washington WVWV - West Virginia WIWI - Wisconsin WYWY - Wyoming","COUNTRYNAME":"UNITED STATES","COUNTRYID":217},{"STATES":"**** - **","COUNTRYNAME":"UNITED STATES MINOR OUTLYING ISLANDS","COUNTRYID":225},{"STATES":"**** - **","COUNTRYNAME":"URUGUAY","COUNTRYID":218},{"STATES":"**** - **","COUNTRYNAME":"UZBEKISTAN","COUNTRYID":220},{"STATES":"**** - **","COUNTRYNAME":"VANUATU","COUNTRYID":221},{"STATES":"**** - **","COUNTRYNAME":"VENEZUELA, BOLIVARIAN REPUBLIC OF","COUNTRYID":222},{"STATES":"**** - **","COUNTRYNAME":"VIET NAM","COUNTRYID":223},{"STATES":"**** - **","COUNTRYNAME":"VIRGIN ISLANDS, BRITISH","COUNTRYID":26},{"STATES":"**** - **","COUNTRYNAME":"VIRGIN ISLANDS, U.S.","COUNTRYID":219},{"STATES":"**** - **","COUNTRYNAME":"WALES","COUNTRYID":226},{"STATES":"**** - **","COUNTRYNAME":"WALLIS AND FUTUNA","COUNTRYID":227},{"STATES":"**** - **","COUNTRYNAME":"WESTERN SAHARA","COUNTRYID":246},{"STATES":"**** - **","COUNTRYNAME":"YAP","COUNTRYID":229},{"STATES":"**** - **","COUNTRYNAME":"YEMEN","COUNTRYID":247},{"STATES":"**** - **","COUNTRYNAME":"ZAIRE","COUNTRYID":231},{"STATES":"**** - **","COUNTRYNAME":"ZAMBIA","COUNTRYID":232},{"STATES":"**** - **","COUNTRYNAME":"ZIMBABWE","COUNTRYID":233}]; 1366 1367 svcrm.formBuilderScripts.countryChanged = function(domElm){ 1368 1369 1370 var oldSelIndexVal = state.value; //$F('contact_state'); 1371 var myStates = new Array(); 1372 1373 // $('contact_state').options.length = 0; 1374 state.options.length = 0; 1375 1376 for (var i = 0; i < window.svcrm.formBuilderScripts.states.length; i++) {
1377 if (window.svcrm.formBuilderScripts.states[i].COUNTRYNAME == domElm.options[domElm.selectedIndex].value || window.svcrm.formBuilderScripts.states[i].COUNTRYNAME == '') { 1378 var myObj = new Object(); 1379 1380 var tmp = window.svcrm.formBuilderScripts.states[i].STATES.split(''); 1381 for (var x = 0; x < tmp.length; x = x + 2) { 1382 var myObj = new Object(); 1383 myObj.statecode = tmp[x - 1]; 1384 myObj.statename = tmp[x]; 1385 if (tmp[x - 1] == oldSelIndexVal) { 1386 myObj.selected = true; 1387 } else { 1388 myObj.selected = false; 1389 } 1390 1391 if(!myObj.statecode){ 1392 myObj.statecode = ''; 1393 } 1394 myStates.push(myObj); 1395 } 1396 } 1397 } 1398 1399 if (myStates.length > 0) { 1400 for (var i = 0; i < myStates.length; i++) { 1401 // $('contact_state').options[$('state').options.length] = new Option(myStates[i].statename, myStates[i].statecode, myStates[i].selected, myStates[i].selected); 1402 state.options[state.options.length] = new Option(myStates[i].statename, myStates[i].statecode, myStates[i].selected, myStates[i].selected); 1403 1404 } 1405 } else { 1406 // $('contact_state').options.length = 0; 1407 state.options.length = 0; 1408 //$('contact_state').options[$('contact_state').options.length] = new Option("** - **", ""); 1409 state.options[state.options.length] = new Option("** - **", ""); 1410 } 1411 } 1412 1413 1414 })(); 1415 1416 </script>
1416 1417 1418
1418<script type="text/javascript"> 1419 1420 1421 (function(){ 1422 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1423 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1424 1425 1426 window.svcrm.formBuilderScripts._____fileInpElmsRemoved = {}; //being lazy, need a place to store the file inputs that get removed from the form 1427 window.svcrm.formBuilderScripts._____filesUploading = 0; //if this is greater than 0, a file is still uploading. 1428 1429 //this function is called when a file upload input has a file selected 1430 window.svcrm.formBuilderScripts.submitFileUpload = function(frmname,fldname){ 1431 //kill off the old temp input that is used by formbuilder_fileAdd.cfm to know which form element to upload 1432 var oldinp = document.getElementById('thefileweneedtoupload'); 1433 if(oldinp){ oldinp.parentNode.removeChild(oldinp); } 1434 1435 //create the temp input that is used by formbuilder_fileAdd.cfm to know which form element to upload 1436 var inp = document.createElement('input'); inp.type = 'hidden'; inp.name = 'thefileweneedtoupload'; inp.id = 'thefileweneedtoupload'; inp.value = fldname; 1437 document[frmname].appendChild(inp); 1438 1439 //need to get some things from this input before it is killed so we will it so we can recreate it 1440 var fld = document.getElementById(fldname); 1441 window.svcrm.formBuilderScripts._____fileInpElmsRemoved[fldname] = { id:fld.id, name:fld.name, className:fld.className, tabIndex:fld.tabIndex, onchange:fld.onchange }; 1442 1443 //kill iframe element if one exists 1444 window.svcrm.formBuilderScripts.killFileInputIframeElm(fldname); 1445 1446 //create iframe to submit to 1447 var iframe = document.createElement('iframe'); iframe.id = 'fileUploaderIframe_'+fldname; iframe.name = 'fileUploaderIframe_'+fldname; iframe.style.display = 'none'; 1448 document.body.appendChild(iframe); 1449 1450 //store the form action before it is changed 1451 var origFormAttributes = {action: document[frmname].action, enctype: document[frmname].enctype}; 1452 1453 //change the form so that it will submit to the webapi and iframe target 1454 document[frmname].action = 'https://PhiladelphiaPA.simpleviewcrm.com/webapi/formbuilder/formbuilder_fileAdd.cfm'; 1455 document[frmname].target = 'fileUploaderIframe_'+fldname; 1456 document[frmname].enctype = 'multipart/form-data'; 1457 document[frmname].submit(); 1458 1459 //add to filesUploading so we don't allow form submissions while files are uploading 1460 window.svcrm.formBuilderScripts._____filesUploading = window.svcrm.formBuilderScripts._____filesUploading + 1; 1461 1462 //reset the form to submit to where it was originally intended to submit to and remove the target so it doesn't go to the iframe 1463 document[frmname].setAttribute('action',origFormAttributes.action); 1464 document[frmname].setAttribute('enctype',origFormAttributes.enctype); 1465 document[frmname].removeAttribute('target'); 1466 1467 // Disable the submit button and add a tool tip to the disabled element so it is clear why you can't submit yet -- useful for large files or slow connections 1468 document.getElementById('savefrm_button').disabled = true; 1469 var tt = document.getElementById('submit_tooltiptext'); 1470 if(tt){ 1471 //Make the tool tip show up 1472 tt.style.visibility = 'visible'; 1473 } else { 1474 // create a new element 1475 var toolTip = document.createElement("span"); 1476 var newContent = document.createTextNode("Unable to submit, file upload in progress."); 1477 toolTip.appendChild(newContent); 1478 toolTip.style.backgroundColor = "black"; 1479 toolTip.style.color = "white"; 1480 toolTip.style.textAlign = "center"; 1481 toolTip.style.borderRadius = "6px"; 1482 toolTip.style.padding = "4px 2px"; 1483 toolTip.setAttribute('id', 'submit_tooltiptext'); 1484 1485 // add the newly created element and its content into the DOM 1486 currentDiv = document.getElementById('resetfrm_button'); 1487 var br = document.createElement("br"); // but put it on a new line first 1488 currentDiv.parentElement.insertBefore(br, null); 1489 currentDiv.parentElement.insertBefore(toolTip, null); 1490 } 1491 }; 1492 1493 //this function is called by either the formbuilder_fileAdd.cfm window.parent.addFile() call or from the _handlePostMessage() function 1494 //it will take the filename that is returned and set it in the display element and hidden input 1495 //if success==true is not returned we will try to grab the message from errorMsg if passed otherwise will display a generic error message and will try to remove the file input and recreate it 1496 //it is possible that the IIS request filtering will kick
1496in and prevent us from knowing if it failed but the overall submission will end up getting blocked because the file inputs will still exist 1497 window.svcrm.formBuilderScripts.addFile = function(addFileArgs){ 1498 if(typeof addFileArgs.success && addFileArgs.success){ 1499 //set the hidden input with the new filename so we can process upon save 1500 document.getElementById(addFileArgs.fldname+'_formbuilder_hidden').value = addFileArgs.newfilename; 1501 1502 //subtract from filesUploading, if we're at 0 all files are finished 1503 window.svcrm.formBuilderScripts._____filesUploading = window.svcrm.formBuilderScripts._____filesUploading - 1; 1504 if (window.svcrm.formBuilderScripts._____filesUploading <= 0) { 1505 //Re-enable submit button 1506 document.getElementById('savefrm_button').disabled = false; 1507 //hide tooltip 1508 var ttip = document.getElementById('submit_tooltiptext'); 1509 if (ttip) { 1510 ttip.style.visibility = "hidden"; 1511 } 1512 } 1513 1514 //create the delete button for this file 1515 var newBtn = document.createElement('img'); 1516 newBtn.src = 'https://PhiladelphiaPA.simpleviewcrm.com/core_crm/webapi/forms/images/delete.png'; 1517 newBtn.onclick = function(){window.svcrm.formBuilderScripts.removeFile(addFileArgs.fldname);}; 1518 newBtn.alt = 'Remove File?'; 1519 newBtn.title = 'Remove File?'; 1520 newBtn.style.paddingTop = '5px'; 1521 newBtn.style.paddingRight = '5px'; 1522 newBtn.style.float = 'left'; 1523 1524 //create the element that will show the file name 1525 var newDiv = document.createElement('div'); 1526 newDiv.innerHTML = addFileArgs.newfilename; 1527 newDiv.style.paddingTop = '4px'; 1528 newDiv.style.float = 'left'; 1529 1530 //get this file inputs display element and append the delete button and name display elements in it 1531 var dispElm = document.getElementById(addFileArgs.fldname+'_display'); 1532 dispElm.appendChild(newBtn); 1533 dispElm.appendChild(newDiv); 1534 1535 //create an empty div to fix the float for the delete and filename element 1536 var newDiv2 = document.createElement('div'); 1537 newDiv2.style.clear = 'both'; 1538 dispElm.appendChild(newDiv2); 1539 dispElm.style.display = 'block'; //turn on the display element 1540 1541 //kill the file input we don't want it anymore unless they remove this file 1542 window.svcrm.formBuilderScripts.killFileInputElm(addFileArgs.fldname); 1543 1544 }else{ 1545 //kill and recreate the element if we can 1546 if(typeof addFileArgs.fldname && addFileArgs.fldname.length){ 1547 window.svcrm.formBuilderScripts.killFileInputElm(addFileArgs.fldname); 1548 window.svcrm.formBuilderScripts.recreateFileInputElm(addFileArgs.fldname); 1549 } 1550 1551 //if we have a good message display it 1552 alert('There was a problem uploading your file:\n'+((typeof addFileArgs.errorMsg != 'undefined') ? addFileArgs.errorMsg : 'There was a problem uploading your file!' ) ); 1553 1554 //subtract from filesUploading, if we're at 0 all files are finished 1555 window.svcrm.formBuilderScripts._____filesUploading = window.svcrm.formBuilderScripts._____filesUploading - 1; 1556 1557 //Need to make sure that we re-enable the submit button in case it didn't happen above in the IF block 1558 // otherwise, they can't submit until they fix the issue; we should give them the option to abandon the file upload. 1559 if (window.svcrm.formBuilderScripts._____filesUploading <= 0) { 1560 //Re-enable submit button 1561 document.getElementById('savefrm_button').disabled = false; 1562 //hide tooltip 1563 var ttip = document.getElementById('submit_tooltiptext'); 1564 if (ttip) { 1565 ttip.style.visibility = "hidden"; 1566 } 1567 } 1568 } 1569 1570 //kill iframe element if it is still around 1571 window.svcrm.formBuilderScripts.killFileInputIframeElm(addFileArgs.fldname); 1572 }; 1573 1574 //this function will delete the file input element from the form, it is called when a file input is selected and the form submitted off to the iframe 1575 window.svcrm.formBuilderScripts.killFileInputElm = function(fldId){ 1576 var fileInpElmToRemove = document.getElementById(fldId); 1577 fileInpElmToRemove.parentNode.removeChild(fileInpElmToRemove); 1578 }; 1579 1580 //this function will re-create the file input element that was removed when a file was uploaded, this is called when a user clicks the delete button on an image or if we had an erorr upon file upload we wipe the input and recreate so it is empty 1581 window.svcrm.formBuilderScripts.recreateFileInputElm = function(fldId){ 1582 var elmstored = window.svcrm.formBuilderScripts._____fileInpElmsRemoved[fldId]; 1583 var recreatedElm = document.createElement('input'); 1584 recreatedElm.type = 'file'; 1585 recreatedElm.id = elmstored.id; 1586 recreatedElm.name = elmstored.name; 1587 recreatedElm.className = elmstored.className; 1588 recreatedElm.tabIndex = elmstored.tabIndex; 1589 recreatedElm.onchange = function(){ 1590 document.getElementById(fldId + '_formbuilder_hidden').value = this.value; 1591 window.svcrm.formBuilderScripts.submitFileUpload('frm_'+document.getElementById('formid').value, fldId); 1592 }; 1593 document.getElementById(fldId+'_container').appendChild(recreatedElm); 1594 } 1595 1596 //this function will kill off the iframe element if it exists 1597 window.svcrm.formBuilderScripts.killFileInputIframeElm = function(fldname){ 1598 var iframeElm = document.getElementById('fileUploaderIframe_'+fldname); 1599 if(iframeElm){iframeElm.parentNode.removeChild(iframeElm);} 1600 }; 1601 1602 //this function will remove the file it will wipe the display and hidden input and recreate the file upload input element 1603 window.svcrm.formBuilderScripts.removeFile = function(fldId){ 1604 //try to remove delete this file from temp if exists 1605 try{ 1606 //create an iframe and form with a hidden input field that has the name of the file we are trying to wipe 1607 var html = '<html><body onload="document.fileDeleterIframeForm.submit();">'; 1608 html += '<form name="fileDeleterIframeForm" action="https://PhiladelphiaPA.simpleviewcrm.com/webapi/formbuilder/formbuilder_fileDelete.cfm" method="post">'; 1609 html += '<input type="hidden" name="filenamevalue" id="filenamevalue" value="'+document.getElementById(fldId+'_formbuilder_hidden').value+'" />'; 1610 html += '</form>'; 1611 html += '<' + '/' + 'body' + '>' + '<' + '/' + 'html' + '>'; 1612 1613 var iframeElm = document.getElementById('fileDeleterIframe_'+fldId); 1614 if(iframeElm){iframeElm.parentNode.removeChild(iframeElm);} 1615 1616 var iframe = document.createElement('iframe'); 1617 iframe.id = 'fileDeleterIframe_'+fldId; 1618 iframe.style.display = 'none'; 1619 document.body.appendChild(iframe); 1620 iframe.contentWindow.document.open(); 1621 iframe.contentWindow.document.write(html); 1622 iframe.contentWindow.document.close(); 1623 1624 }catch(e){ 1625 //nothing for now 1626 } 1627 1628 document.getElementById(fldId+'_formbuilder_hidden').value = ''; 1629 var dispElm = document.getElementById(fldId+'_display'); 1630 dispElm.innerHTML = ''; 1631 dispElm.style.display = 'none'; 1632 1633 //recreate the element 1634 window.svcrm.formBuilderScripts.recreateFileInputElm(fldId); 1635 1636 }; 1637 1638 //this function will handle the postMessage's it will make sure that it is coming from the valid crm domain, it will then call the addFile() function passing along the returned json object 1639 var _handlePostMessage = function(evt){
1640 //check for correct postMessage source 1641 if(typeof evt.origin != 'undefined'){ 1642 //only run this if we are from the correct domain 1643 var _fixedOrigin = evt.origin + ( (evt.origin.substring(evt.origin.length-1,evt.origin.length) != '/') ? '/' : ''); 1644 var crmappurl = 'https://PhiladelphiaPA.simpleviewcrm.com/'; 1645 if(_fixedOrigin.toLowerCase().indexOf(crmappurl.toLowerCase()) != -1){ 1646 var _postMsgRtn = {}; 1647 try { 1648 _postMsgRtn = JSON.parse(evt.data); //json parse the returned data 1649 } catch (e) { 1650 return false; 1651 } 1652 window.svcrm.formBuilderScripts.addFile(_postMsgRtn); //we will let the addFile handle any errors the same way as call from within crm form 1653 } 1654 } 1655 }; 1656 if (window.addEventListener) { 1657 window.addEventListener('message', _handlePostMessage, false); 1658 } else if (window.attachEvent) { 1659 window.attachEvent('onmessage', _handlePostMessage); 1660 } 1661 1662 1663 })(); 1664 1665 </script>
1665 1666 1667
1667<script type="text/javascript"> 1668 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS loadCRMForm +++++++++++++++++++++++++++++++++++++*/ 1669 (function(){ 1670 var crm_locale = {"SEPARATOR_GROUPING":3,"YAHOO_MDY_MONTH_POSITION":1,"CURRENCY_DECIMALPLACES":2,"DATEFMT_MDONLY":"mm\/dd","NUMBERFORMATTER":"standard","YAHOO_MDY_YEAR_POSITION":3,"ANGULAR_FORMAT_FILE":"en-us","YAHOO_DATE_FIELD_DELIMITER":"\/","YAHOO_START_WEEKDAY":0,"YAHOO_MDY_DAY_POSITION":2,"DOLLARFMT_MASK":"","THOUSANDS_SEPARATOR":",","LOCALE":"en_US","DOLLARFMT":0,"DOLLARFMT_PREFIX":"","NUMBERFMT_MASK":"0,000.00","DATEFMT":"mm\/dd\/yyyy","DECIMAL_SEPARATOR":".","DOLLARFMT_SUFFIX":""}; 1671 1672 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1673 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1674 1675 svcrm.formBuilderScripts.captchaValid = false; 1676 svcrm.formBuilderScripts.validCodeElement = document.getElementById('code'); 1677 1678 svcrm.formBuilderScripts.curPopupWindow = null; 1679 svcrm.formBuilderScripts.lastMouseX = null; 1680 svcrm.formBuilderScripts.lastMouseY = null; 1681 1682 svcrm.formBuilderScripts.__onload_function = function(){ 1683 svcrm.formBuilderScripts.updReq(); 1684 1685 if (svcrm.formBuilderScripts.validCodeElement.addEventListener) { 1686 svcrm.formBuilderScripts.validCodeElement.addEventListener('keyup', svcrm.formBuilderScripts.checkCapMatch, false); 1687 } else if (validCodeElement.attachEvent) { 1688 svcrm.formBuilderScripts.validCodeElement.attachEvent('onkeyup', svcrm.formBuilderScripts.checkCapMatch); 1689 } 1690 1691 var elm = svcrm.formBuilderScripts.validCodeElement; 1692 var found = false; 1693 while(elm.parentNode && !found){ 1694 if(elm.parentNode.getElementsByTagName('form') && elm.parentNode.getElementsByTagName('form')[0] && elm.parentNode.getElementsByTagName('form')[0].name.indexOf('frm_') != -1){ 1695 elm = elm.parentNode.getElementsByTagName('form')[0]; 1696 found = true; 1697 }else{ 1698 elm = elm.parentNode; 1699 } 1700 } 1701 1702 var the_crmform = elm; 1703 the_crmform.id = 'the_crmform'; 1704 the_crmform.onsubmit = function(e){ 1705 svcrm.formBuilderScripts.checkCapMatch(); 1706 if (svcrm.formBuilderScripts.captchaValid !== true){ 1707 1708 alert('This information cannot be sent at this time!\n\nThe 4 character string you entered does not match the image shown.'); 1709 1710 return false; 1711 }else 1712 { 1713 return svcrm.formBuilderScripts.validateForm(the_crmform); 1714 } 1715 return false; 1716 }; 1717 }; 1718 1719 svcrm.formBuilderScripts.checkCapMatch = function(){ 1720 var scriptID = 'captchaCheckJSONP'; 1721 1722 //kill the existing one if we have one 1723 if(document.getElementById(scriptID)){ 1724 document.getElementById(scriptID).parentNode.removeChild(document.getElementById(scriptID)); 1725 } 1726 1727 var validCode = svcrm.formBuilderScripts.validCodeElement.value; 1728 var checkCode = escape( document.getElementById('code_key').value ); 1729 if(validCode.length != 4){ 1730 svcrm.formBuilderScripts.setCaptchaImg(false); 1731 return false; 1732 }else{ 1733 //jsonP this thing over 1734 var s = document.createElement('script'); 1735 s.id = scriptID; 1736 s.type = 'application/javascript'; 1737 s.src = 'https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/checkcaptcha.cfm?validCode='+validCode+'&checkCode='+c
1737heckCode+'&jsonp=svcrm.formBuilderScripts.getCaptchaLookupResults' 1738 document.body.appendChild(s); 1739 } 1740 }; 1741 1742 svcrm.formBuilderScripts.getCaptchaLookupResults = function(rtn){ 1743 if (rtn) { 1744 svcrm.formBuilderScripts.setCaptchaImg(true); 1745 }else { 1746 svcrm.formBuilderScripts.setCaptchaImg(false); 1747 } 1748 }; 1749 1750 svcrm.formBuilderScripts.setCaptchaImg = function(ok) { 1751 var existingCIMG = document.getElementById('capimage'); 1752 if (!existingCIMG || existingCIMG.length == 0){ 1753 var cimgtag = document.createElement('IMG'); 1754 cimgtag.id = 'capimage'; 1755 cimgtag.alt= "Verification"; 1756 1757 svcrm.formBuilderScripts.validCodeElement.parentNode.appendChild(cimgtag); 1758 existingCIMG = document.getElementById('capimage'); 1759 } 1760 1761 if (ok) { 1762 existingCIMG.src = 'https://philadelphiapa.simpleviewcrm.com/core_crm/resources/images/true_ico.gif'; 1763 svcrm.formBuilderScripts.captchaValid = true; 1764 }else { 1765 existingCIMG.src = 'https://philadelphiapa.simpleviewcrm.com/core_crm/resources/images/false_ico.gif'; 1766 svcrm.formBuilderScripts.captchaValid = false; 1767 } 1768 }; 1769 1770 1771 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS /includes/scripts/formValidations.js +++++++++++++++++++++++++++++++++++++*/ 1772 /*Utility Functions, namespaced for nodejs cms sites*/ 1773 //Function to format floats 1774 //returns false if invalid 1775 //dec = number of decimal places to show 1776 svcrm.formBuilderScripts.fmtFloat = function(obj, dec){ 1777 var lt = "", rt = "", str = "" 1778 var inc = 0, num = 0, tmp = 0 1779 1780 if (obj.value.length == 0) 1781 obj.value = "0"; 1782 1783 if (!svcrm.formBuilderScripts.checkChars(obj.value, ".,0123456789")) return false; 1784 1785 // Check for valid number 1786 svcrm.formBuilderScripts.stripChars(obj, ","); 1787 if (!svcrm.formBuilderScripts.checkNumber(obj.value)) return false; 1788 1789 //Split number 1790 inc = Math.pow(10, dec); 1791 num = (obj.value * 1.0); 1792 num = Math.round(num * inc) / inc; 1793 str = "" + num; 1794 1795 tmp = str.indexOf("."); 1796 if (tmp < 0) { 1797 str += "."; 1798 tmp = str.indexOf("."); 1799 } 1800 1801 if ((str.length - tmp) <= dec) 1802 for (var i = (str.length - tmp); i <= dec; i++) 1803 str += "0"; 1804 1805 obj.value = str; 1806 return true; 1807 }; 1808 1809 //Function to format integers 1810 //returns false if invalid 1811 svcrm.formBuilderScripts.fmtInt = function(obj){ 1812 if (obj.value.length == 0) { 1813 return true; 1814 } 1815 1816 return (svcrm.formBuilderScripts.checkInteger(obj.value)); 1817 }; 1818 1819 //Function to formats money fields 1820 //returns false if invalid 1821 svcrm.formBuilderScripts.fmtMoney = function(obj){ 1822 var dec = 0, num = "", sign = 0 1823 var dollars = "", cents = "" 1824 var count = 0, tmp = "" 1825 1826 if (obj.value.length == 0) { 1827 tmp = "0"; 1828 cents = ".00"; 1829 } else { 1830 if (!svcrm.formBuilderScripts.checkChars(obj.value, "$.,0123456789")) return false; 1831 1832 // Check for valid number 1833 svcrm.formBuilderScripts.stripChars(obj, ","); 1834 sign = obj.value.indexOf("$"); 1835 if (sign > 0) 1836 return false; 1837 else { 1838 if (sign == 0) 1839 num = obj.value.substring(1,obj.value.length); 1840 else 1841 num = obj.value; 1842 1843 if (!svcrm.formBuilderScripts.checkNumber(num)) 1844 return false; 1845 } 1846 1847 // Check precision, round-up if necessary 1848 if (num.indexOf(".") != -1) 1849 num = "" + (Math.round(num * 100) / 100.0); 1850 1851 dec = num.indexOf("."); 1852 cents = ((dec > 0) ? num.substring(dec,num.length) : ".00"); 1853 if (cents.length == 2) cents += "0"; 1854 1855 // Add commas 1856 dollars = "" + parseInt(num); 1857 for (var i = dollars.length - 1; i >= 0; i--) { 1858 if (count == 3) { 1859 tmp = "," + tmp; 1860 count = 1; 1861 } else 1862 count ++; 1863 1864 tmp = dollars.charAt(i) + tmp; 1865 } 1866 } 1867 1868 // Format number 1869 num = "$" + tmp + cents; 1870 obj.value = num; 1871 return true; 1872 }; 1873 1874 //Function to format phone numbers 1875 //returns false if invalid 1876 svcrm.formBuilderScripts.fmtPhone = function(obj){ 1877 var phone = ""; 1878 var oldphone = ""; 1879 1880 if (obj.value.length == 0) return true; 1881 1882 //Remove formatting 1883 oldphone = obj.value;
1884 svcrm.formBuilderScripts.stripChars(obj, "- ()"); 1885 phone = obj.value; 1886 if (!svcrm.formBuilderScripts.checkChars(phone, "0123456789")) return false; 1887 1888 if (phone.length == 10) 1889 obj.value = "(" + phone.substring(0,3) + ") " + phone.substring(3,6) +"-" + phone.substring(6,10); 1890 else { 1891 obj.value = oldphone; 1892 return false; 1893 } 1894 1895 return true; 1896 }; 1897 1898 //Function to format social security numbers 1899 //returns false if invalid 1900 svcrm.formBuilderScripts.fmtSSN = function(obj){ 1901 var ssn = "" 1902 1903 if (obj.value.length == 0) return true; 1904 1905 //Remove all dashes 1906 svcrm.formBuilderScripts.stripChars(obj, "-"); 1907 ssn = obj.value; 1908 if (!svcrm.formBuilderScripts.checkChars(ssn, "0123456789")) return false; 1909 1910 if (ssn.length == 9) 1911 obj.value = ssn.substring(0,3) + "-" + ssn.substring(3,5) + "-" + ssn.substring(5,9); 1912 else 1913 return false; 1914 1915 return true; 1916 }; 1917 1918 //Function to verify valid URL 1919 svcrm.formBuilderScripts.fmtURL = function(obj){ 1920 if (obj.value.length == 0) return true; 1921 1922 if (obj.value.substring(0,7) != "http://") 1923 obj.value = "http://" + obj.value; 1924 1925 if (obj.value.length < 10) return false; 1926 1927 return true; 1928 }; 1929 1930 //Function to format zip codes 1931 //returns false if invalid 1932 svcrm.formBuilderScripts.fmtZip = function(obj){ 1933 var numberlist = "0123456789", zip = "" 1934 1935 if (obj.value.length == 0) return true; 1936 1937 // Remove dashes 1938 svcrm.formBuilderScripts.stripChars(obj, "-"); 1939 zip = obj.value; 1940 if (!svcrm.formBuilderScripts.checkChars(zip, numberlist)) return false; 1941 1942 if (zip.length == 5) 1943 obj.value = zip; 1944 else if (zip.length == 9) 1945 obj.value = zip.substring(0,5) + "-" + zip.substring(5,9) 1946 else 1947 return false; 1948 1949 //Passed all tests 1950 return true; 1951 }; 1952 1953 //Returns true if every character is in string list 1954 //otherwise false 1955 svcrm.formBuilderScripts.checkChars = function(val, charlist){ 1956 for (var i = 0; i < val.length; i++) 1957 if (charlist.indexOf(val.charAt(i)) < 0) 1958 return false; 1959 1960 //String passed so it is valid 1961 return true; 1962 }; 1963 1964 //Returns true if valid email 1965 //otherwise returns false 1966 svcrm.formBuilderScripts.checkEmail = function(obj){ 1967 if (obj.value.length != 0) { 1968 var pattern = /^['&a-zA-Z0-9._%+-]+@(?:[&a-zA-Z0-9-]+\.)+(([a-zA-Z]{2,4})|(aero|coop|info|museum|name|travel))$/; 1969 if (!pattern.test(obj.value)) { 1970 return false; 1971 } else { 1972 return true; 1973 } 1974 } 1975 1976 // Valid, passed all tests 1977 return true; 1978 }; 1979 1980 //Returns true if valid phone 1981 //otherwise returns false 1982 svcrm.formBuilderScripts.checkPhone = function(obj){ 1983 if (obj.value.length != 0) { 1984 var pattern = /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/; 1985 if (!pattern.test(obj.value)) { 1986 return false; 1987 } else { 1988 return true; 1989 } 1990 } 1991 1992 // Valid, passed all tests 1993 return true; 1994 }; 1995 1996 //Returns true if value is a number or is NULL 1997 //otherwise returns false 1998 svcrm.formBuilderScripts.checkInteger = function(object_value){ 1999 if (object_value.length == 0) 2000 return true; 2001 2002 if (object_value.indexOf(".") < 1) 2003 return svcrm.formBuilderScripts.checkNumber(object_value); 2004 else 2005 return false; 2006 }; 2007 2008 //Returns true if value is a number or is NULL 2009 //otherwise returns false 2010 svcrm.formBuilderScripts.checkNumber = function(object_value){ 2011 if (object_value.length == 0) 2012 return true; 2013 2014 //Returns true if value is a number defined as 2015 // having an optional leading + or -. 2016 // having at most 1 decimal point. 2017 // otherwise containing only the characters 0-9. 2018 var start_format = " .+-0123456789"; 2019 var number_format = " .0123456789"; 2020 var check_char; 2021 var decimal = false; 2022 var trailing_blank = false; 2023 var digits = false; 2024 2025 //The first character can be + - . blank or a digit. 2026 check_char = start_format.indexOf(object_value.charAt(0)) 2027 //Was it a decimal? 2028 if (check_char == 1) 2029 decimal = true; 2030 else if (check_char < 1) 2031 return false; 2032 2033 //Remaining characters can be only . or a digit, but only one decimal. 2034 for (var i = 1; i < object_value.length; i++) { 2035 check_char = number_format.indexOf(object_value.charAt(i)) 2036 if (check_char < 0) 2037 return false; 2038 else if (check_char == 1) { 2039 if (decimal) // Second decimal. 2040 return false; 2041 else 2042 decimal = true; 2043 } else if (check_char == 0) { 2044 if (decimal || digits) 2045 trailing_blank = true; 2046 // ignore leading blanks 2047 } else if (trailing_blank) 2048 return false; 2049 else 2050 digits = true; 2051 } 2052 2053 //All tests passed 2054 return true 2055 }; 2056 2057 //Returns true if value is a posiitve integer or is NULL 2058 //otherwise returns false 2059 svcrm.formBuilderScripts.checkPosInteger = function(object_value){ 2060 if (object_value.indexOf("-") != -1) 2061 return false; 2062 else 2063 return (svcrm.formBuilderScripts.checkInteger(object_value)); 2064 }; 2065 2066 //Function to find any char in charlist in the passed string 2067 //Returns true if a character is found 2068 //Otherwise false
2069 svcrm.formBuilderScripts.findChars = function(str, charlist){ 2070 for (var i = 0; i < charlist.length; i++) { 2071 if (str.indexOf(charlist.charAt(i)) != -1) 2072 return true; 2073 } 2074 2075 return false; 2076 }; 2077 2078 //Function to remove all occurances of chars in charlist 2079 svcrm.formBuilderScripts.stripChars = function(obj, charlist){ 2080 var i = 0, pos = 0 2081 var val = obj.value 2082 2083 while (i < val.length) { 2084 pos = charlist.indexOf(val.charAt(i)); 2085 if (pos != -1) 2086 val = val.substring(0,i) + val.substring(i + 1, val.length); 2087 else 2088 i++; 2089 } 2090 2091 obj.value = val; 2092 return true; 2093 }; 2094 2095 svcrm.formBuilderScripts.cntChars = function(val, charlist){ 2096 var i = 0, pos = 0, cnt = 0 2097 2098 for (i = 0; i < val.length; i++) { 2099 pos = charlist.indexOf(val.charAt(i)); 2100 if (pos != -1) cnt++; 2101 } 2102 2103 return cnt; 2104 }; 2105 2106 svcrm.formBuilderScripts.fmtTime = function(fld){ 2107 var hr = 0, mn = 0; 2108 var val = fld.value; 2109 2110 if (val.length == 0) return true; 2111 2112 var tt = svcrm.formBuilderScripts.strChars(val, '0123456789: '); 2113 2114 if (tt.length > 0) { 2115 tt = tt.toUpperCase(); 2116 if (tt != 'AM' && tt != 'PM') return false; 2117 2118 val = svcrm.formBuilderScripts.strChars(val, ' ampAMP'); 2119 } 2120 2121 var sepr = val.indexOf(':') 2122 if (sepr == -1) { 2123 hr = val; 2124 mn = 0; 2125 } else { 2126 hr = val.substring(0, sepr); 2127 mn = val.substring(sepr + 1, val.length); 2128 }
2129 if (isNaN(mn)) mn = 0; 2130 2131 if (!svcrm.formBuilderScripts.chkChars(hr, '0123456789')) return false; 2132 if (!svcrm.formBuilderScripts.chkChars(mn, '0123456789')) return false; 2133 if (hr < 0 || hr > 23) return false; 2134 if (mn < 0 || mn > 59) return false; 2135 2136 if (hr > 12) { 2137 tt = 'PM'; 2138 hr = hr - 12; 2139 } else if (hr == 0) { 2140 tt = 'AM'; 2141 hr = 12; 2142 } 2143 if (mn.toString().length == 0) mn = 0; 2144 if (tt.length == 0) { 2145 if (hr == 12) 2146 tt = 'PM'; 2147 else if (hr < 7) 2148 tt = 'PM'; 2149 else 2150 tt = 'AM'; 2151 } 2152 2153 str = hr; 2154 if (mn.toString().length == 1) 2155 str = str + ':0' + mn; 2156 else 2157 str = str + ':' + mn; 2158 str = str + ' ' + tt; 2159 2160 fld.value = str; 2161 return true; 2162 }; 2163 2164 //Function to remove all occurances of chars in charlist 2165 svcrm.formBuilderScripts.strChars = function(val, charlist){ 2166 var i = 0, pos = 0 2167 2168 while (i < val.length) { 2169 pos = charlist.indexOf(val.charAt(i)); 2170 if (pos != -1) 2171 val = val.substring(0,i) + val.substring(i + 1, val.length); 2172 else 2173 i++; 2174 } 2175 2176 return val; 2177 }; 2178 2179 svcrm.formBuilderScripts.chkChars = function (val, charlist){ 2180 for (var i = 0; i < val.length; i++) 2181 if (charlist.indexOf(val.charAt(i)) < 0) 2182 return false; 2183 2184 return true; 2185 }; 2186 /* +++++++++++++++++++++++++++ END Script copied from OLD CMS /includes/scripts/formValidations.js +++++++++++++++++++++++++++++++++++++*/ 2187 2188 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS /includes/scripts/dateValidate.js +++++++++++++++++++++++++++++++++++++*/ 2189 // Author: Bill Simpson 2190 // Company: 220solutions.com 2191 // Email: [email protected] 2192 // Date Created: 02-09-2001 2193 // 2194 // Verifies and converts date strings to a valid format 2195 // 2196 // Valid input dates = 2197 // mdyy, mmdyy, mmddyy, mmmddyy, mmddyyyy, mmmddyyyy, 2198 // m/d/yy, m/dd/yy, mm/d/yy, mm/dd/yy, mmm/d/yy, mmm/dd/yy, 2199 // m/d/yyyy, m/dd/yyyy, mm/d/yyyy, mm/dd/yyyy, mmm/d/yyyy, mmm/dd/yyyy 2200 // Valid date seperators = '-./:_, ' 2201 // 2202 // Notes: Please feel free to use/edit this script. 2203 // If you do please keep comments and header 2204 // 2205 // Code based on functions from 2206 // Author: Simon Kneafsey 2207 // Email: [email protected] 2208 // WebSite: www.simonkneafsey.co.uk 2209 2210 2211 // Function to convert supplied date string 'fld' 2212 // fld: field containing date string 2213 // sep: seperator to use e.g. '-' or '/' 2214 // returns false if date string is invalid 2215 svcrm.formBuilderScripts.fmtDate = function(fld,sep){ 2216 var len = fld.value.length; 2217 var seps = new Array('-','.','/',':','_',',',' '); // Array of seperators. 2218 var d = '', m = '', y = ''; // date part holders 2219 //var div = ''; // divider holder 2220 //var outdate1 = null; // formatted date to send back to calling field holder 2221 var sepholder = new Array('0','0','0'); // array to hold positions of dividers in dates 2222 var s = String(fld.value); 2223 var outdate = ''; 2224 2225 if (len == 0 ) return true; 2226 2227 // Accept 'today' or 'now' 2228 if (fld.value.toUpperCase() == 'NOW' || fld.value.toUpperCase() == 'TODAY' ) { 2229 var newDate = new Date(); 2230 var myDay = newDate.getDate(); 2231 var myMonth = newDate.getMonth() + 1; 2232 if (navigator.appName == 'Netscape') 2233 var myYear = newDate.getYear() + 2000; 2234 else 2235 var myYear = newDate.getYear(); 2236 2237 fld.value = myMonth + "-" + myDay + "-" + myYear; 2238 // update string info 2239 len = fld.value.length; 2240 s = String(fld.value); 2241 } 2242 2243 // Check the date is a valid length 2244 if (len < 4 || len > 11) return false; 2245 2246 // Find positions of divider in the date 2247 var cnt = 0; 2248 for (var i = 0; i < 3; i++) { 2249 for (var j = 0; j < seps.length; j++) { 2250 if (s.indexOf(seps[j],cnt) != -1) { 2251 div = seps[j]; 2252 sepholder[i] = s.indexOf(seps[j],cnt); 2253 cnt = sepholder[i] + 1; 2254 break; 2255 } 2256 } 2257 } 2258 2259 // If element 2 is not 0 then more than 2 dividers have been found so date is invali
2259d. 2260 if (sepholder[2] != 0) return false; 2261 2262 // if no dividers are found strip out date parts 2263 if (sepholder[0] == 0 && sepholder[1] == 0) { 2264 switch (len) { 2265 case 4: // mdyy 2266 m = '0' + s.substring(0,1); 2267 d = '0' + s.substring(1,2); 2268 y = s.substring(2,4); 2269 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2270 break; 2271 case 5: // mmdyy 2272 m = s.substring(0,2); 2273 d = '0' + s.substring(2,3); 2274 y = s.substring(3,5); 2275 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2276 break; 2277 case 6: // mmddyy 2278 m = s.substring(0,2); 2279 d = s.substring(2,4); 2280 y = s.substring(4,6); 2281 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2282 break; 2283 case 7: //mmmddyy 2284 m = s.substring(0,3); 2285 d = s.substring(3,5); 2286 y = s.substring(5,7); 2287 if ((m = svcrm.formBuilderScripts.chkMonth(m)) == false) return false; 2288 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2289 break; 2290 case 8: //mmddyyyy 2291 m = s.substring(0,2); 2292 d = s.substring(2,4); 2293 y = s.substring(4,8); 2294 break; 2295 case 9: //mmmddyyyy 2296 m = s.substring(0,3); 2297 d = s.substring(3,5); 2298 y = s.substring(5,9); 2299 if ((m = svcrm.formBuilderScripts.chkMonth(m)) == false) return false; 2300 break; 2301 default: 2302 return false; 2303 } 2304 2305 if ((outdate = svcrm.formBuilderScripts.chkDate(m,d,y,sep)) == false) return false; 2306 2307 // valid date 2308 fld.value = outdate; 2309 return true; 2310 } else if (sepholder[0] != 0 && sepholder[1] != 0) { 2311 // process with dividers 2312 m = s.substring(0, sepholder[0]); 2313 d = s.substring(sepholder[0] + 1, sepholder[1]); 2314 y = s.substring(sepholder[1] + 1, s.length); 2315 } else 2316 // Only one divider 2317 return false; 2318 2319 // Check day and year are numeric 2320 if (isNaN(d) && isNaN(y)) return false; 2321 2322 // Make d day dd 2323 if (d.length == 1) d = '0' + d; 2324 // Make m month mm 2325 if (m.length == 1) m = '0' + m; 2326 // Make yy year yyyy 2327 if (y.length == 2) 2328 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false ) return false; 2329 2330 // Make mmm month mm 2331 if (m.length == 3 || m.length == 4) { 2332 if ((m = svcrm.formBuilderScripts.chkMonth(m)) == false) return false; 2333 } 2334 2335 // Date components are OK 2336 if (d.length != 2 || m.length != 2 || y.length != 4) return false; 2337 2338 // Validate the date 2339 if ((outdate = svcrm.formBuilderScripts.chkDate(m,d,y,sep)) == false) return false; 2340 2341 // Valid date 2342 fld.value = outdate; 2343 return true; 2344 }; 2345 2346 // checks for a valid date 2347 // m: month part (2 digit) 2348 // d: day part (2 digit) 2349 // y: year part (4 digit) 2350 // returns: date string formatted if valid, false if invalid 2351 svcrm.formBuilderScripts.chkDate = function(m, d, y, sep){ 2352 var dayArray = new Array(31,28,31,30,31,30,31,31,30,31,30,31); 2353 var dstr = m + d + y; 2354 var filter=/^[0-9]{2}[0-9]{2}[0-9]{4}$/; 2355 2356 // Check mmddyyyy date supplied 2357 if (!filter.test(dstr)) return false; 2358 2359 // Check valid month 2360 filter=/01|02|03|04|05|06|07|08|09|10|11|12/; 2361 if (!filter.test(m)) return false; 2362 2363 // Check year 2364 if (y < 1900 || y > 2078) return false; 2365 2366 // Check for leap year 2367 var n = Number(y); 2368 if (n % 4 == 0 && (n % 100 != 0 || n % 400 == 0)) dayArray[1] = 29; 2369 2370 // Check for valid days for month 2371 var mnum = Number(m); 2372 if (d > dayArray[mnum - 1] || d <= 0) return false; 2373 2374 // Valid date 2375 return m + sep + d + sep + y; 2376 }; 2377 2378 // Checks for valid month 2379 // m: month part (3 or 4 digit)
2380 // returns: 2 digit month if valid, false is invalid 2381 svcrm.formBuilderScripts.chkMonth = function(m){ 2382 var months = new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'); 2383 2384 m = m.toUpperCase(); 2385 if (m.length == 3) { 2386 for (var i = 0; i < 12; i++) { 2387 if (m == months[i]) { 2388 m = i + 1; 2389 if (i < 10) 2390 m = '0' + m; 2391 return m; 2392 } 2393 } 2394 } else if (m.length == 4 && m == 'SEPT') { 2395 m = '09'; 2396 return m; 2397 } else 2398 return false; 2399 }; 2400 2401 // Check for a valid year 2402 // y: year part (2 digit) 2403 // returns: 4 digit year if valid, false if invalid 2404 svcrm.formBuilderScripts.chkYear = function(y){ 2405 if (y < 75) { 2406 y = "20" + y; 2407 return y; 2408 } else if (y >= 75) { 2409 y = "19" + y; 2410 return y; 2411 } else 2412 return false; 2413 }; 2414 2415 svcrm.formBuilderScripts.showDate = function(baseURL, fld, frm) { 2416 var urlSeparator = '?'; 2417 2418 if("https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/formbuilder.cfm".indexOf('?') != -1){ 2419 urlSeparator = '&'; 2420 } 2421 2422 var str = "https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/formbuilder.cfm" + urlSeparator + "action=popupCal&frm=" + frm + "&fld=" + fld + '&randid=' + new Date().getTime(); 2423 if (eval("document." + frm + "." + fld).value.length > 0) 2424 str = str + "&cdate=" + eval("document." + frm + "." + fld).value; 2425 2426 svcrm.formBuilderScripts.openPopup(str, "calwin", 210, 210, "width=210,height=210,toolbar=no,status=no,directories=no,menubar=no,resizable=no,scrollable=no", true); 2427 }; 2428 2429 svcrm.formBuilderScripts.openPopup = function(url, name, pWidth, pHeight, features, snapToLastMousePosition) { 2430 svcrm.formBuilderScripts.openPopupFocus(url, name, pWidth, pHeight, features, snapToLastMousePosition, true); 2431 }; 2432 2433 svcrm.formBuilderScripts.closePopup = function(){ 2434 if (svcrm.formBuilderScripts.curPopupWindow != null) { 2435 2436 if (!svcrm.formBuilderScripts.curPopupWindow.closed) 2437 svcrm.formBuilderScripts.curPopupWindow.close(); 2438 2439 svcrm.formBuilderScripts.curPopupWindow = null; 2440 } 2441 }; 2442 2443 svcrm.formBuilderScripts.openPopupFocus = function(url, name, pWidth, pHeight, features, snapToLastMousePosition, closeOnLoseFocus) { 2444 svcrm.formBuilderScripts.closePopup(); 2445 2446 if (snapToLastMousePosition) { 2447 if (svcrm.formBuilderScripts.lastMouseX - pWidth < 0) { 2448 svcrm.formBuilderScripts.lastMouseX = pWidth; 2449 } 2450 if (svcrm.formBuilderScripts.lastMouseY + pHeight > screen.height) { 2451 svcrm.formBuilderScripts.lastMouseY -= (svcrm.formBuilderScripts.lastMouseY + pHeight + 50) - screen.height; 2452 } 2453 svcrm.formBuilderScripts.lastMouseX -= pWidth; 2454 svcrm.formBuilderScripts.lastMouseY += 10; 2455 features += "screenX=" + svcrm.formBuilderScripts.lastMouseX + ",left=" + svcrm.formBuilderScripts.lastMouseX + "screenY=" + svcrm.formBuilderScripts.lastMouseY + ",top=" + svcrm.formBuilderScripts.lastMouseY; 2456 } 2457 2458 if (closeOnLoseFocus) { 2459 curPopupWindow = window.open(url, name, features, false); 2460 curPopupWindow.focus(); 2461 } else { 2462 win = window.open(url, name, features, false); 2463 win.focus(); 2464 } 2465 }; 2466 2467 svcrm.formBuilderScripts.setLastMousePosition = function(e) { 2468 if (navigator.appName.indexOf("Microsoft") != -1) e = window.event; 2469 svcrm.formBuilderScripts.lastMouseX = e.screenX; 2470 svcrm.formBuilderScripts.lastMouseY = e.screenY; 2471 }; 2472 /* +++++++++++++++++++++++++++ END Script copied from OLD CMS /includes/scripts/dateValidate.js +++++++++++++++++++++++++++++++++++++*/ 2473 2474 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS /includes/scripts/ziplookup.js +++++++++++++++++++++++++++++++++++++*/ 2475 svcrm.formBuilderScripts.zipLookup = function(fuseroot, zip, fldCity, fldState){ 2476 var scriptID = 'zipLookupJSONP'; 2477 2478 //kill the existing one if we have one 2479 if(document.getElementById(scriptID)){ 2480 document.getElementById(scriptID).parentNode.removeChild(document.getElementById(scriptID)); 2481 } 2482 2483 if (svcrm.formBuilderScripts.trim(zip).length != 5 || !svcrm.formBuilderScripts.checkChars(zip, "0123456789")){ 2484 return false; 2485 }else{ 2486 //jsonP this thing over 2487 var s = document.createElement('script'); 2488 s.id = scriptID; 2489 s.type = 'application/javascript'; 2490 s.src = 'https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/ziplookup.cfm?zip='+zip+'&fldCityId='+fldCity.id+'&fldStateId='+fldState.id+'&jsonp=svcrm.formBuilderScripts.processZipChange' 2491 document.body.appendChild(s); 2492 } 2493 }; 2494 2495 svcrm.formBuilderScripts.processZipChange = function(rtn){ 2496 var fldCity = document.getElementById(rtn.fldCityId); 2497 var fldState = document.getElementById(rtn.fldStateId); 2498 2499 if (rtn.city.length > 0 && fldCity != '')
2500 fldCity.value = rtn.city; 2501 else if (fldCity != '') 2502 fldCity.value = ''; 2503 2504 if (rtn.state.length > 0 && fldState != '') { 2505 for (var i = 0; i < fldState.options.length; i++) { 2506 if (fldState.options[i].value == rtn.state) { 2507 fldState.selectedIndex = i; 2508 break; 2509 } 2510 } 2511 if (i == fldState.options.length) fldState.selectedIndex = 0; 2512 } else if (fldState != '') 2513 fldState.selectedIndex = 0; 2514 }; 2515 /* +++++++++++++++++++++++++++ END Script copied from OLD CMS /includes/scripts/ziplookup.js +++++++++++++++++++++++++++++++++++++*/ 2516 2517 /* +++++++++++++++++++++++++++ START Script Calendar +++++++++++++++++++++++++++++++++++++*/ 2518 svcrm.formBuilderScripts.fbCalendar = { 2519 today: new Date(), 2520 monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 2521 dayList: ['S','M','T','W','T','F','S'], 2522 2523 dayListTds: function(){ 2524 var rtn = ''; 2525 for(var i = 0; i < this.dayList.length; i++){ 2526 rtn += '<td align="center" class="Day" width="22">' + this.dayList[i] + '</td>'; 2527 } 2528 return rtn; 2529 }, 2530 2531 getPrevMonthDate: function (curDate) { 2532 var y = curDate.getFullYear(); 2533 var m = curDate.getMonth(); 2534 if (m === 0) { y -= 1; m = 12; } 2535 if (m.toString().length == 1) { m = '0' + m.toString(); } 2536 return m + '/01/' + y; 2537 }, 2538 2539 getNextMonthDate: function (curDate) { 2540 var y = curDate.getFullYear(); 2541 var m = curDate.getMonth() + 2; 2542 if (m == 13) { y += 1; m = 1; } 2543 if (m.toString().length == 1) { m = '0' + m.toString(); } 2544 return m + '/01/' + y; 2545 }, 2546 2547 getPrevYearDate: function(curDate){ 2548 var y = curDate.getFullYear()-1; 2549 var m = curDate.getMonth()+1; 2550 if (m.toString().length == 1) { m = '0' + m.toString(); } 2551 return m + '/01/' + y; 2552 }, 2553 2554 getNextYearDate: function (curDate) { 2555 var y = curDate.getFullYear() + 1; 2556 var m = curDate.getMonth()+1; 2557 if (m.toString().length == 1) { m = '0' + m.toString(); } 2558 return m + '/01/' + y; 2559 }, 2560 2561 getCurMonthName: function (curDate) { 2562 return this.monthNames[curDate.getMonth()]; 2563 }, 2564 2565 createCal: function (id, sDate, useToday) { 2566 try{ 2567 if(sDate){ 2568 sDate = new Date(sDate); 2569 }else{ 2570 sDate = this.today; 2571 } 2572 } catch (e) { 2573 sDate = this.today; 2574 } 2575 2576 var d = { 2577 inDate: sDate, 2578 today: this.today, 2579 day: sDate.getDate(), 2580 month: sDate.getMonth() + 1, 2581 year: sDate.getFullYear(), 2582 prevMonth: this.getPrevMonthDate(sDate), 2583 nextMonth: this.getNextMonthDate(sDate), 2584 2585 calendar: ' '+ 2586 '<div id="fbCalendar" align="center"> ' + 2587 '<div class="fbCalCloseBtn" onclick="svcrm.formBuilderScripts.fbCalendar.showDatePicker(document.getElementById(' + "'datepicker_" + id + "'" + '));"> </div> '+ 2588 '<table border="0" cellpadding="2" cellspacing="1" width="154"> '+ 2589 '<tr> '+ 2590 '<td class="CH"> '+ 2591 '<a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getPrevMonthDate(sDate) + '\');"><<</a> ' + this.getCurMonthName(sDate) + ' <a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getNextMonthDate(sDate) + '\');">>></a> '+ 2592 '</td> '+ 2593 '<td align="right" class="CH"> '+ 2594 '<a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getPrevYearDate(sDate) + '\');"><<</a> ' + sDate.getFullYear() + ' <a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getNextYearDate(sDate) + '\');">>></a>'+ 2595 '</td> '+ 2596 '</tr> '+ 2597 '</table> '+ 2598 '<table border="0" cellpadding="2" cellspacing="1" width="154"> '+ 2599 '<tr bgcolor="#ffffff">' + this.dayListTds() + '</tr>' + this.calDays(id, sDate, useToday) + 2600 '</table> '+ 2601 '</div>' 2602 }; 2603 2604 return d.calendar; 2605 }, 2606 2607 calDays: function(id, curDate, useToday){ 2608 var rtnvar = ''; 2609 var numDaysInMonth = new Date(curDate.getFullYear(), curDate.getMonth()+1, 0).getDate();
2610 var startofmonth = new Date(); 2611 startofmonth = new Date(curDate.getFullYear(),curDate.getMonth(),1); 2612 var rows = Math.ceil((startofmonth.getDay()+numDaysInMonth)/7); 2613 var cday = 1; 2614 var firstday = startofmonth.getDay()+1; 2615 var lastday = numDaysInMonth; 2616 2617 2618 var loopstart = 0; 2619 var loopend = 0; 2620 var currentDate = new Date(); 2621 currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); 2622 2623 for(var i = 1; i <= rows; i++){ 2624 rtnvar += '<tr bgcolor="#ffffff">'; 2625 loopstart = ((i-1)*7)+1; 2626 loopend = loopstart+6; 2627 for(var d = loopstart; d <= loopend; d++){ 2628 rtnvar += '<td align="center" bgcolor="#ffffff" class="Day">'; 2629 if(d >= firstday && cday <= lastday){ 2630 var dt = new Date(curDate.getFullYear(), curDate.getMonth(), cday); 2631 var tmpDt = new Date(curDate.getFullYear(), curDate.getMonth(), curDate.getDate()); 2632 var className = (dt.getTime() == tmpDt.getTime() && useToday) ? 'today' : 'Day'; 2633 className += dt.getTime() == currentDate.getTime() ? ' currentDay' : ''; 2634 2635 var thisdate = this.convertToUserDate(parseInt(dt.getMonth()+1,10) +'/'+parseInt(dt.getDate(),10)+'/'+parseInt(dt.getFullYear(), 10)); 2636 2637 rtnvar += '<a class="' + className + '" href="javascript:svcrm.formBuilderScripts.fbCalendar.updateDate(\'' + id + '\',\'' + thisdate + '\');">' + cday + '</a><br>'; 2638 cday++; 2639 }else{ 2640 rtnvar += ' <br />'; 2641 } 2642 } 2643 rtnvar += '</tr>'; 2644 } 2645 2646 return rtnvar; 2647 }, 2648 2649 replaceCal: function (id, sDate) { 2650 var cal = this.createCal(id, sDate, false); 2651 if (document.getElementById(id + '_calendar')) { 2652 document.getElementById(id + '_calendar').innerHTML = cal; 2653 } else { 2654 var newDomElm = document.createElement('div'); 2655 newDomElm.style.position = 'absolute'; 2656 newDomElm.innerHTML = cal; 2657 newDomElm.id = id + '_calendar'; 2658 if (document.getElementById('fieldcontainer_' + id)) { 2659 document.getElementById('fieldcontainer_' + id).appendChild(newDomElm); 2660 } 2661 } 2662 2663 return; 2664 }, 2665 2666 updateDate: function(id, curDate){ 2667 document.getElementById(id).value = curDate; 2668 //document.getElementById(id).onchange(); 2669 if(document.getElementById(id + '_calendar')){ 2670 document.getElementById('fieldcontainer_' + id).removeChild(document.getElementById(id + '_calendar')); 2671 } 2672 2673 if(document.getElementById('datepicker_' + id)){ 2674 document.getElementById('datepicker_' + id).onclick = function(){ 2675 svcrm.formBuilderScripts.fbCalendar.showDatePicker(document.getElementById(id), document.getElementById(id).value); 2676 }; 2677 } 2678 2679 }, 2680 2681 showDatePicker: function(domElm, curDate){ 2682 var cleanID = domElm.id.replace('datepicker_', ''); 2683 var sDate = new Date(); 2684 if(!document.getElementById(cleanID + '_calendar')){ 2685 if(document.getElementById(cleanID)){ 2686 try{ 2687 if(curDate){ 2688 sDate = this.convertToUSDate(curDate); 2689 if(sDate == 'Invalid Date'){ 2690 sDate = new Date(); 2691 } 2692 } 2693 }catch(e){ 2694 sDate = new Date(); 2695 } 2696 this.getCalendar(cleanID, sDate); 2697 } 2698 }else{ 2699 document.getElementById('fieldcontainer_' + cleanID).removeChild(document.getElementById(cleanID + '_calendar')); 2700 } 2701 }, 2702 2703 getCalendar: function(id, curDate){ 2704 var newDomElm = document.createElement('div'); 2705 newDomElm.style.position = 'absolute'; 2706 newDomElm.innerHTML = this.createCal(id, curDate, true); 2707 newDomElm.id = id + '_calendar'; 2708 newDomElm.className = 'svcrm_datepicker'; 2709 document.getElementById('fieldcontainer_' + id).appendChild(newDomElm); 2710 }, 2711 2712 convertToUSDate: function(dte){ 2713 var rtnvar = false; 2714 var wrk = dte.split(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2715 var wrkdate = []; 2716 var mydate = ''; 2717 if(wrk.length > 0){ 2718 wrkdate[0] = parseInt(wrk[crm_locale.YAHOO_MDY_DAY_POSITION-1],10); //always holds the day 2719 wrkdate[1] = parseInt(wrk[crm_locale.YAHOO_MDY_MONTH_POSITION-1],10); //always holds the month 2720 wrkdate[2] = parseInt(wrk[crm_locale.YAHOO_MDY_YEAR_POSITION-1],10); //always holds the year 2721 2722 if(wrkdate[1] > 0 && wrkdate[1] < 13){ //Validate the months 2723 var monthsWithDaysRegExp = new RegExp("(4|6|9|11)", "gi"); 2724 var numdays = 31; 2725 if(wrkdate[1] == 2){//feb 2726 numdays = 28; 2727 //check if leap year 2728 if (wrkdate[2] % 4 === 0 && (wrkdate[2] % 100 !== 0 || wrkdate[2] % 400 === 0)){ 2729 numdays = 29; 2730 } 2731 }else if(monthsWithDaysRegExp.test(wrkdate[1])){ 2732 numdays = 30; 2733 } 2734 2735 if(wrkdate[0] > 0 && wrkdate[0] <= numdays){ //validate the days in this month 2736 if(wrkdate[2].toString().length == 2){ //if we have a two digit year pad it 2737 wrkdate[2] = chkYear(wrkdate[2]); 2738 } 2739 2740 if(wrkdate[2].toString().length == 4 && !isNaN(wrkdate[2])){ //validate the year, could expand this 2741 /* 2742 we are here we have a valid month 2743 and we have a valid day for that month 2744 and we have a valid 4 digit year 2745 */ 2746 //fld.value = wrkdate.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2747 wrk[1] = wrkdate[0]; //put the day back where it should be 2748 wrk[0] = wrkdate[1]; //put the month back where it should be 2749 wrk[2] = wrkdate[2]; //put the year back where it should be 2750 wrkdate = wrk.join("/"); //join on the us delim and return valid 2751 rtnvar = true; 2752 } 2753 } 2754 } 2755 } 2756 2757 if(!rtnvar){ //if we didn't get a good date from above we use today 2758 wrkdate = new Date(); 2759 } 2760 return wrkdate; 2761 }, 2762 2763 convertToUserDate: function(dte){ 2764 var rtnvar = false; 2765 var wrk = dte.split("/"); 2766 var wrkdate = []; 2767 var mydate = ''; 2768 if(wrk.length > 0){ 2769 wrkdate[0] = parseInt(wrk[1],10); //always holds the day 2770 wrkdate[1] = parseInt(wrk[0],10); //always holds the month 2771 wrkdate[2] = parseInt(wrk[2],10); //always holds the year 2772 2773 if(wrkdate[1] > 0 && wrkdate[1] < 13){ //Validate the months 2774 var monthsWithDaysRegExp = new RegExp("(4|6|9|11)", "gi"); 2775 var numdays = 31; 2776 if(wrkdate[1] == 2){//feb 2777 numdays = 28; 2778 //check if leap year 2779 if (wrkdate[2] % 4 === 0 && (wrkdate[2] % 100 !== 0 || wrkdate[2] % 400 === 0)){ 2780 numdays = 29; 2781 } 2782 }else if(monthsWithDaysRegExp.test(wrkdate[1])){ 2783 numdays = 30; 2784 } 2785 2786 if(wrkdate[0] > 0 && wrkdate[0] <= numdays){ //validate the days in this month 2787 if(wrkdate[2].toString().length == 2){ //if we have a two digit year pad it 2788 wrkdate[2] = chkYear(wrkdate[2]); 2789 } 2790 2791 if(wrkdate[2].toString().length == 4 && !isNaN(wrkdate[2])){ //validate the year, could expand this 2792 /* 2793 we are here we have a valid month 2794 and we have a valid day for that month 2795 and we have a valid 4 digit year 2796 */ 2797 //fld.value = wrkdate.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2798 wrk[crm_locale.YAHOO_MDY_DAY_POSITION-1] = wrkdate[0]; //put the day back where it should be 2799 wrk[crm_locale.YAHOO_MDY_MONTH_POSITION-1] = wrkdate[1]; //put the month back where it should be 2800 wrk[crm_locale.YAHOO_MDY_YEAR_POSITION-1] = wrkdate[2]; //put the year back where it should be 2801 wrkdate = wrk.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); //join on the correct delim and return valid 2802 rtnvar = true; 2803 } 2804 } 2805 } 2806 } 2807 2808 if(!rtnvar){ //I dont really know what to do here i guess just use today and convert to their date 2809 var t = new Date(); 2810 t = t.getMonth()+1 + '/' + t.getDay() + '/' + t.getFullYear(); 2811 wrkdate = this.convertToUserDate(t); 2812 } 2813 return wrkdate; 2814 }, 2815 2816 convertToUserMDOnlyDate: function(dte){ 2817 var dateFormat_MDOnly = crm_locale.DATEFMT_MDONLY.split(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2818 var _day = dte.getDate().toString();
2819 var _month = (dte.getMonth() + 1).toString(); 2820 var _dayFormat = ''; 2821 var _monthFormat = ''; 2822 var _dayPostion = ''; 2823 var _monthPostion = ''; 2824 2825 if(dateFormat_MDOnly[0].indexOf('d') != -1){ 2826 _dayFormat = dateFormat_MDOnly[0]; 2827 _monthFormat = dateFormat_MDOnly[1]; 2828 _dayPostion = 0; 2829 _monthPostion = 1; 2830 }else{ 2831 _dayFormat = dateFormat_MDOnly[1]; 2832 _monthFormat = dateFormat_MDOnly[0]; 2833 _dayPostion = 1; 2834 _monthPostion = 0; 2835 } 2836 2837 if(_dayFormat == 'dd' && _day.length != 2){ 2838 _day = '0' + _day; 2839 } 2840 if(_monthFormat == 'mm' && _month.length != 2){ 2841 _month = '0' + _month; 2842 } 2843 2844 var dsp = []; 2845 dsp[_dayPostion] = _day; 2846 dsp[_monthPostion] = _month; 2847 dsp = dsp.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2848 return dsp; 2849 } 2850 2851 }; 2852 /* +++++++++++++++++++++++++++ END Script Calendar +++++++++++++++++++++++++++++++++++++*/ 2853 2854 if (window.addEventListener) { 2855 window.addEventListener('load', svcrm.formBuilderScripts.__onload_function, false); 2856 } else if (window.attachEvent) { 2857 window.attachEvent('onload', svcrm.formBuilderScripts.__onload_function); 2858 } 2859 })(); 2860 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS loadCRMForm +++++++++++++++++++++++++++++++++++++*/ 2861 </script>
2861 2862 2863 <style type="text/css"> 2864 /*** Styling for Forms ***/ 2865 form.simpleForm {} 2866 form.simpleForm fieldset {} 2867 form.simpleForm legend {} 2868 form.simpleForm label {} 2869 form.simpleForm label.label_hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;} 2870 form.simpleForm .formreq { color: #B30000;} 2871 form.simpleForm input[type="radio"], form.simpleForm input[type="checkbox"] {} 2872 form.simpleForm input[type="text"] {} 2873 form.simpleForm input.date { cursor: pointer;} 2874 form.simpleForm select {} 2875 form.simpleForm table { background: none; border: none; margin: 0;} 2876 form.simpleForm table tr td { padding: 0;} 2877 form.simpleForm .captcha {} 2878 2879 #capimage { height: 17px; width:17px;} 2880 2881 form.simpleForm .svcrm_datepicker { 2882 z-index: 3; 2883 } 2884 #fbCalendar{ 2885 background-color: white; 2886 border:1px solid #336699; 2887 border-radius:2px; 2888 box-shadow: #336699 1px 1px; 2889 } 2890 #fbCalendar TD { font-size: 12px; font-family: Arial } 2891 #fbCalendar .Day { font-size: 12px; color: #000000; border:1px solid transparent;} 2892 #fbCalendar .CH { font-size: 12px; color: #336699; font-weight: bold; bgcolor: #cccccc; } 2893 #fbCalendar A.today:link, #fbCalendar A.today:visited{text-decoration:none; color:#000000; font-weight: bold;} 2894 #fbCalendar A.today:hover{text-decoration:none; color:#CC3300; font-weight: bold;} 2895 #fbCalendar A.Day:link, #fbCalendar A.Day:visited{text-decoration:none; color:#990000; font-weight: normal;} 2896 #fbCalendar A.Day:hover{text-decoration:none; color:#CC3300; font-weight: normal; border:1px solid #000000;} 2897 #fbCalendar A.CH:link, #fbCalendar A.CH:visited{text-decoration:none; color:#336699;} 2898 #fbCalendar A.CH:hover{text-decoration:none; color:#0033FF;} 2899 #fbCalendar A.close:link, #fbCalendar A.close:visited{font-size: 10px; text-decoration:none; color:#666666;} 2900 #fbCalendar A.close:hover{font-size: 10px; text-decoration:underline; color:#666666;} 2901 #fbCalendar A:link, #fbCalendar A:visited{text-decoration:none; color:#000099;} 2902 #fbCalendar A:hover{text-decoration:none; color:#0000FF;} 2903 #fbCalendar .currentDay{border:1px solid #336699; padding: 2px;} 2904 #fbCalendar div.fbCalCloseBtn{ 2905 background:transparent url(http://PhiladelphiaPA.simpleviewcrm.com/core_crm/Resources/images/calx.gif) no-repeat; 2906 width:17px; 2907 height:13px; 2908 float:right; 2909 border:2px solid #ffffff; 2910 } 2911 #fbCalendar div.fbCalCloseBtn:hover{ 2912 cursor: pointer; 2913 border:2px solid #336699; 2914 } 2915 2916 /*** Mobile ***/ 2917 @media only screen and (max-width: 40em) {} 2918 /*** Tablet ***/ 2919 @media only screen and (min-width: 40.063em) and (max-width: 64em) {} 2920 2921 /*** Desktop ***/ 2922 @media only screen and (min-width: 64.063em) { 2923 form.simpleForm label { max-width: 430px; text-align: right;} 2924 } 2925 </style> 2926 </div> 2927 </div> 2928 2929</div><!-- close #site --> 2930 2931
2932<script type="speculationrules"> 2933{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/pcvb/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2934</script>
vendor: 1 bytes, line 2934
2934
2935<script id="ajax-map-js-extra"> 2936var myAjax = {"ajaxurl":"https://www.discoverphl.com/wp-admin/admin-ajax.php"}; 2937//# sourceURL=ajax-map-js-extra 2938</script>
vendor: 1 bytes, line 2938
2938
2939<script id="ajax-map-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/js/map/ajax-map.js?ver=7.2"></script>
vendor: 1 bytes, line 2939
2939
2940<script id="push10-ajax-handler-js-extra"> 2941var myAjax = {"ajaxurl":"https://www.discoverphl.com/wp-admin/admin-ajax.php"}; 2942//# sourceURL=push10-ajax-handler-js-extra 2943</script>
vendor: 1 bytes, line 2943
2943
2944<script id="push10-ajax-handler-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/Push10AjaxHandler/js/ajax/push10-ajax.js?ver=1"></script>
vendor: 1 bytes, line 2944
2944
2945<script id="map-js" src="https://api.mapbox.com/mapbox-gl-js/v2.9.2/mapbox-gl.js?ver=1"></script>
vendor: 1 bytes, line 2945
2945
2946<script id="map_geo-js" src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v4.7.0/mapbox-gl-geocoder.min.js?ver=1"></script>
vendor: 1 bytes, line 2946
2946
2947<script id="simple_pagination-js" src="https://cdnjs.cloudflare.com/ajax/libs/simplePagination.js/1.6/jquery.simplePagination.js?ver=1"></script>
vendor: 1 bytes, line 2947
2947
2948<script id="custom-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/dist/javascript.min.js?ver=1790721207"></script>
vendor: 1 bytes, line 2948
2948
2949<script id="pcvb-newsletter-pop-out-script-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/newsletter-pop-out/pcvb-newsletter-popout.js?ver=1790721207"></script>
vendor: 1 bytes, line 2949
2949
2950<script id="gt_widget_script_60558940-js-before"> 2951window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['60558940'] = {"default_language":"en","languages":["zh-CN","nl","en","fr","de","it","pt","ru","es"],"url_structure":"none","detect_browser_language":1,"wrapper_selector":"#gt-wrapper-60558940","horizontal_position":"inline","flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"}; 2952//# sourceURL=gt_widget_script_60558940-js-before 2953</script>
2953<script src="https://www.discoverphl.com/wp-content/plugins/gtranslate/js/ln.js?ver=5.0.1" data-no-optimize="1" data-no-minify="1" data-gt-orig-url="/blog-post/philadelphia-2026/" data-gt-orig-domain="www.discoverphl.com" data-gt-widget-id="60558940" defer></script>
2953<script id="gt_widget_script_53978902-js-before"> 2954window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['53978902'] = {"default_language":"en","languages":["zh-CN","nl","en","fr","de","it","pt","ru","es"],"url_structure":"none","detect_browser_language":1,"wrapper_selector":"#gt-wrapper-53978902","horizontal_position":"inline","flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"}; 2955//# sourceURL=gt_widget_script_53978902-js-before 2956</script>
2956<script src="https://www.discoverphl.com/wp-content/plugins/gtranslate/js/ln.js?ver=5.0.1" data-no-optimize="1" data-no-minify="1" data-gt-orig-url="/blog-post/philadelphia-2026/" data-gt-orig-domain="www.discoverphl.com" data-gt-widget-id="53978902" defer></script>
2956<script id="cb05_related_content_columns-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/js/blocks/cb05_related_content_columns.js?ver=1790721207"></script>
vendor: 1 bytes, line 2956
2956
2957<script id="wp-emoji-settings" type="application/json"> 2958{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.discoverphl.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 2959</script>
vendor: 1 bytes, line 2959
2959
2960<script type="module"> 2961/*! This file is auto-generated */ 2962var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 2963//# sourceURL=https://www.discoverphl.com/wp-includes/js/wp-emoji-loader.min.js 2964</script>
2964 2965
2966<script> 2967 /*<![CDATA[*/ 2968 (function(w, a, b, d, s) { 2969 w[a] = w[a] || {}; 2970 w[a][b] = w[a][b] || { 2971 q: [], 2972 track: function(r, e, t) { 2973 this.q.push({ 2974 r: r, 2975 e: e, 2976 t: t || +new Date 2977 }); 2978 } 2979 }; 2980 var e = d.createElement(s); 2981 var f = d.getElementsByTagName(s)[0]; 2982 e.async = 1; 2983 e.src = '//marketing.discoverphl.com/cdnr/forpci85/acton/bn/tracker/45609'; 2984 f.parentNode.insertBefore(e, f); 2985 })(window, 'ActOn', 'Beacon', document, 'script'); 2986 ActOn.Beacon.track(); /*]]>*/ 2987</script>
vendor: 1 bytes, line 2987
2987
2988<script type="text/javascript"> 2989 ! function() { 2990 if (!document.querySelector("[src*='7512D3C0-5EF5-ABB9-7FDD-7C76C78FA269']")) { 2991 var e = document.createElement("script"); 2992 e.type = "text/javascript", e.async = !0, e.src = "//www.rtb123.com/tags/7512D3C0-5EF5-ABB9-7FDD-7C76C78FA269/btp.js"; 2993 var t = document.getElementsByTagName("head")[0]; 2994 t ? t.appendChild(e, t) : (t = document.getElementsByTagName("script")[0]).parentNode.insertBefore(e, t) 2995 } 2996 }(); 2997</script>
2997 2998 2999
3000<script> 3001 document.addEventListener('DOMContentLoaded', function() { 3002 var popup = document.getElementById('popup'); 3003 var closePopupBtn = document.getElementById('closePopupBtn'); 3004 var popupButton = document.getElementById('popupButton'); 3005 3006 function showPopup() { 3007 if (popup) { 3008 3009 popup.style.display = 'flex'; 3010 } 3011 } 3012 3013 function hidePopup() { 3014 if (popup) { 3015 3016 popup.style.display = 'none'; 3017 } 3018 localStorage.setItem('popupDisplayed', new Date().toISOString()); 3019 } 3020 3021 function shouldShowPopup() { 3022 var lastDisplayed = localStorage.getItem('popupDisplayed'); 3023 if (!lastDisplayed) return true; 3024 3025 var lastDisplayedDate = new Date(lastDisplayed); 3026 var now = new Date(); 3027 3028 return lastDisplayedDate.toDateString() !== now.toDateString(); 3029 } 3030 3031 if (shouldShowPopup()) { 3032 showPopup(); 3033 } 3034 3035 closePopupBtn.onclick = hidePopup; 3036 popupButton.onclick = hidePopup; 3037 3038 window.onclick = function(event) { 3039 if (event.target == popup) { 3040 hidePopup(); 3041 } 3042 } 3043 }); 3044 3045 function clickready() { 3046 jQuery("#cb27-keyword-clear").on('click', function() { 3047 jQuery('#cb27-keyword-submit')[0].click(); 3048 }) 3049 } 3050 3051 setTimeout(clickready, 3000); 3052</script>
3052 3053
3054<script> 3055 document.addEventListener("DOMContentLoaded", function() { 3056 if (document.body.classList.contains('page-id-12466')) { 3057 // Detect iOS Safari only 3058 3059 3060 // Only run on iOS devices 3061 const isIOS = /iphone|ipad|ipod/i.test(navigator.userAgent) && !!navigator.maxTouchPoints; 3062 if (!isIOS) return; 3063 3064 const tables = document.querySelectorAll(".page-id-12466.interior-page .wysiwyg .tablepress"); 3065 3066 tables.forEach(function(table) { 3067 3068 // Create track + thumb 3069 const track = document.createElement("div"); 3070 track.classList.add("ios-scroll-track"); 3071 3072 const thumb = document.createElement("div"); 3073 thumb.classList.add("ios-scroll-thumb"); 3074 3075 track.appendChild(thumb); 3076 table.parentNode.insertBefore(track, table.nextSibling); 3077 3078 // Calculate and update thumb width + position 3079 function updateThumb() { 3080 const ratio = table.clientWidth / table.scrollWidth; 3081 if (ratio >= 1) { 3082 track.style.display = "none"; // Hide if no scroll needed 3083 return; 3084 } 3085 track.style.display = "block"; 3086 const thumbWidth = Math.max(ratio * track.offsetWidth, 30); 3087 const maxScroll = table.scrollWidth - table.clientWidth; 3088 const scrollRatio = maxScroll > 0 ? table.scrollLeft / maxScroll : 0; 3089 const maxThumbLeft = track.offsetWidth - thumbWidth; 3090 3091 thumb.style.width = thumbWidth + "px"; 3092 thumb.style.left = (scrollRatio * maxThumbLeft) + "px"; 3093 } 3094 3095 // Small delay so layout is fully rendered before first calculation 3096 setTimeout(updateThumb, 100); 3097 window.addEventListener("resize", updateThumb); 3098 3099 // Sync table scroll â thumb 3100 table.addEventListener("scroll", updateThumb); 3101 3102 // Click on track â jump table scroll 3103 track.addEventListener("click", function(e) { 3104 if (e.target === thumb) return; // ignore clicks on thumb itself 3105 const rect = track.getBoundingClientRect(); 3106 const clickX = e.clientX - rect.left; 3107 const ratio = clickX / track.offsetWidth; 3108 table.scrollLeft = ratio * (table.scrollWidth - table.clientWidth); 3109 }); 3110 3111 // Drag thumb to scroll table 3112 let isDragging = false; 3113 let startX = 0; 3114 let startScrollLeft = 0; 3115 3116 thumb.addEventListener("touchstart", function(e) { 3117 isDragging = true; 3118 startX = e.touches[0].clientX; 3119 startScrollLeft = table.scrollLeft; 3120 e.preventDefault(); // Prevent page scroll while dragging thumb 3121 }, { 3122 passive: false 3123 }); 3124 3125 document.addEventListener("touchmove", function(e) { 3126 if (!isDragging) return; 3127 const dx = e.touches[0].clientX - startX; 3128 const trackScrollableWidth = track.offsetWidth - thumb.offsetWidth; 3129 if (trackScrollableWidth <= 0) return; 3130 const scrollRatio = (table.scrollWidth - table.clientWidth) / trackScrollableWidth; 3131 table.scrollLeft = startScrollLeft + (dx * scrollRatio); 3132 updateThumb(); 3133 }, { 3134 passive: true 3135 }); 3136 3137 document.addEventListener("touchend", function() { 3138 isDragging = false; 3139 }); 3140 3141 }); 3142 3143 3144 } 3145 }); 3146</script>
3146 3147
3148<script id='satisfiScript' src='https://chat.satis.fi/popup/embedder?popupId=18789'></script>
3148 3149<img src="//advertiser-conversion.clicktripz.com/api/advertisers/v2/conversions?advertiserID=682&format=image" />
3150<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-ffbc3c15bbce2bcb1ca","applicationID":"1318524340","transactionName":"bgNbbUtRWUVVBRIMDldJeFpNWVhYGxUPCwZVAw==","queueTime":0,"applicationTime":2576,"atts":"QkRYGwNLSks=","errorBeacon":"bam.nr-data.net","agent":""}</script>
3150</body> 3151
3152<script type="text/javascript" src="https://snapsea.fra1.cdn.digitaloceanspaces.com/assets/12162022-gallery.js" async></script>
3152 3153 3154</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.