{"id":5913,"date":"2026-02-12T21:47:03","date_gmt":"2026-02-12T21:47:03","guid":{"rendered":"https:\/\/patriotsinactiontx.com\/midland\/?page_id=5913"},"modified":"2026-02-18T23:21:29","modified_gmt":"2026-02-18T23:21:29","slug":"tv","status":"publish","type":"page","link":"https:\/\/patriotsinactiontx.com\/midland\/tv\/","title":{"rendered":"TV"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_6 1_6 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:16.666666666667%;--awb-margin-top-large:0px;--awb-spacing-right-large:11.52%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:11.52%;--awb-width-medium:16.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:11.52%;--awb-spacing-left-medium:11.52%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- LEFT SIDEBAR ADS (paste this whole block into the LEFT codeblock) -->\n<div class=\"pia-sidepanel-ads pia-sidepanel-ads--left\"\n     data-pia-sidepanel-ads=\"left\"\n     data-pia-count=\"10\"\n     aria-label=\"Sidebar ads (left)\">\n  <div class=\"pia-sidepanel-ads__status\">Loading\u2026<\/div>\n<\/div>\n\n<script>\n(function(){\n  var PIA_BLOG_ID = 13;\n  var PIA_GROUP_IDS = [109, 112, 113];\n\n  function stripTrailingSlashes(u){ return String(u || '').replace(\/\\\/+$\/, ''); }\n  function wpBaseUrl(){\n    var link = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\n    if (link && link.href) return stripTrailingSlashes(link.href.replace(\/\\\/wp-json\\\/?$\/, ''));\n    return stripTrailingSlashes((window.location.origin || '') + (window.location.pathname || '').split('\/').slice(0,2).join('\/'));\n  }\n  function ajaxUrl(){ return wpBaseUrl() + '\/wp-admin\/admin-ajax.php'; }\n\n  function looksLikeAdvancedAdsInlineJs(text){\n    var t = String(text || '').replace(\/^\\s+|\\s+$\/g, '');\n    if (!t) return false;\n    if (t.indexOf('advanced_ads_ready') !== -1) return true;\n    if (t.indexOf('advads') !== -1 && t.indexOf('jQuery') !== -1 && \/function\\s*\\(\/.test(t)) return true;\n    return false;\n  }\n\n  function ensurePatriGridCss(){\n    if (document.getElementById('pia-patri-grid-css')) return;\n    var css = [\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]{list-style:none;margin:0;padding:0;overflow:hidden;}',\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]>li{float:left;width:17%;min-width:175px;list-style:none;margin:0 3% 3% 0;padding:0;overflow:hidden;}',\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]>li.last{margin-right:0;}',\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]>li.last+li{clear:both;}'\n    ].join('');\n    var style = document.createElement('style');\n    style.id = 'pia-patri-grid-css';\n    style.textContent = css;\n    (document.head || document.documentElement).appendChild(style);\n  }\n\n  function removeVisibleInlineCodeArtifacts(slotEl){\n    if (!slotEl) return;\n\n    function isArtifactNode(el, kind){\n      if (!el || el.nodeType !== 1) return false;\n      var txt = String(el.textContent || '').trim();\n      if (!txt) return false;\n      if (txt.length > 80000) return false;\n\n      \/\/ Don't remove real ad markup.\n      if (el.querySelector && el.querySelector('img,iframe,video,svg,canvas,form,input,textarea,select,button')) return false;\n\n      if (kind === 'js') {\n        return txt.indexOf('advanced_ads_ready') !== -1 && txt.indexOf('unslider') !== -1;\n      }\n      if (kind === 'css') {\n        return (txt.indexOf('#patri-grid-') !== -1 || txt.indexOf('patri-grid-') !== -1) && txt.indexOf('{') !== -1 && txt.indexOf('}') !== -1;\n      }\n      return false;\n    }\n\n    \/\/ Remove inline scripts\/styles that belong to patri grid\/slider to avoid \u201cshowing code as text\u201d.\n    var scripts = slotEl.querySelectorAll('script');\n    for (var i = scripts.length - 1; i >= 0; i--) {\n      var s = scripts[i];\n      var t = String(s.text || s.textContent || '');\n      if (t.indexOf('advanced_ads_ready') !== -1 && t.indexOf('unslider') !== -1) s.remove();\n    }\n    var styles = slotEl.querySelectorAll('style');\n    for (var j = styles.length - 1; j >= 0; j--) {\n      var st = styles[j];\n      var ct = String(st.textContent || '');\n      if (ct.indexOf('#patri-grid-') !== -1 || ct.indexOf('patri-grid-') !== -1) st.remove();\n    }\n\n    \/\/ Remove sanitizer-wrapped JS\/CSS that is being rendered as normal text.\n    var all = slotEl.querySelectorAll('*');\n    for (var k = all.length - 1; k >= 0; k--) {\n      var el = all[k];\n      if (isArtifactNode(el, 'js') || isArtifactNode(el, 'css')) {\n        el.remove();\n      }\n    }\n  }\n\n  function initPatriSliders(slotEl){\n    if (!slotEl || !window.jQuery) return;\n    if (!jQuery.fn || !jQuery.fn.unslider) return;\n\n    var sliders = slotEl.querySelectorAll('.custom-slider[class*=\"patri-slider-\"]');\n    for (var i = 0; i < sliders.length; i++) {\n      var el = sliders[i];\n      if (!el || el.getAttribute('data-pia-unslider') === '1') continue;\n      el.setAttribute('data-pia-unslider', '1');\n\n      var $s = jQuery(el);\n      if ($s.data('unslider')) continue;\n\n      $s.on('unslider.ready', function() {\n        jQuery('div.custom-slider ul li').css('display', 'block');\n      });\n\n      $s.unslider({ delay: 10000, autoplay: true, nav: false, arrows: false, infinite: true });\n\n      $s.on('mouseover', function() { $s.unslider('stop'); })\n        .on('mouseout', function() { $s.unslider('start'); });\n    }\n  }\n\n  function postProcessSlot(slotEl){\n    ensurePatriGridCss();\n    removeVisibleInlineCodeArtifacts(slotEl);\n\n    \/\/ Unslider may load late; retry a bit.\n    var tries = 0;\n    (function retry(){\n      tries++;\n      initPatriSliders(slotEl);\n      if (tries < 15 && (!window.jQuery || !jQuery.fn || !jQuery.fn.unslider)) {\n        setTimeout(retry, 200);\n      }\n    })();\n  }\n\n  function activateAdScriptsIn(slotEl){\n    if (!slotEl) return;\n\n    function isSliderInitJs(text){\n      var t = String(text || '');\n      return t.indexOf('advanced_ads_ready') !== -1 && t.indexOf('unslider') !== -1;\n    }\n\n    function normalizeInlineJsText(js){\n      \/\/ Sometimes sanitizers leave literal \"\\n\" sequences in text nodes.\n      return String(js || '')\n        .replace(\/\\\\r\\\\n\/g, '\\n')\n        .replace(\/\\\\n\/g, '\\n')\n        .replace(\/\\\\t\/g, '\\t');\n    }\n\n    function hasForbiddenDescendants(el){\n      \/\/ If these are present, this isn't just \"displayed text\".\n      return !!(el.querySelector && el.querySelector('img,iframe,video,svg,canvas,form,input,textarea,select,button,a,ul,ol,li,table'));\n    }\n\n    function isTextyLineElement(el){\n      if (!el || el.nodeType !== 1) return false;\n      var tn = (el.tagName || '').toUpperCase();\n      if (tn === 'SCRIPT' || tn === 'STYLE' || tn === 'NOSCRIPT' || tn === 'TEXTAREA') return false;\n      if (hasForbiddenDescendants(el)) return false;\n      \/\/ Must not contain structural markup besides BR\/SPAN\/CODE.\n      var kids = el.childNodes || [];\n      for (var i = 0; i < kids.length; i++) {\n        var k = kids[i];\n        if (!k) continue;\n        if (k.nodeType === 3) continue;\n        if (k.nodeType !== 1) return false;\n        var kt = (k.tagName || '').toUpperCase();\n        if (kt !== 'BR' && kt !== 'SPAN' && kt !== 'CODE') return false;\n      }\n      return String(el.textContent || '').trim().length > 0;\n    }\n\n    function tryJoinSiblingLinesIntoScript(startEl){\n      if (!startEl || startEl.nodeType !== 1) return false;\n      if (!isTextyLineElement(startEl)) return false;\n\n      var parent = startEl.parentNode;\n      if (!parent || parent.nodeType !== 1) return false;\n      if ((parent.tagName || '').toUpperCase() === 'SCRIPT') return false;\n\n      var js = '';\n      var nodesToRemove = [];\n      var cur = startEl;\n      var maxNodes = 80;\n\n      while (cur && maxNodes-- > 0) {\n        if (cur.nodeType === 1) {\n          if (!isTextyLineElement(cur)) break;\n          js += String(cur.textContent || '') + '\\n';\n          nodesToRemove.push(cur);\n        } else if (cur.nodeType === 3) {\n          if (String(cur.nodeValue || '').trim()) {\n            js += String(cur.nodeValue || '') + '\\n';\n            nodesToRemove.push(cur);\n          }\n        } else if (cur.nodeType === 1 && (cur.tagName || '').toUpperCase() === 'BR') {\n          js += '\\n';\n          nodesToRemove.push(cur);\n        }\n\n        var norm = normalizeInlineJsText(js);\n        if (isSliderInitJs(norm) && (norm.indexOf('});});') !== -1 || norm.indexOf('}); });') !== -1 || norm.indexOf('unslider(\"start\")') !== -1)) {\n          js = norm;\n          break;\n        }\n\n        if (js.length > 50000) {\n          js = normalizeInlineJsText(js);\n          break;\n        }\n\n        cur = cur.nextSibling;\n      }\n\n      js = normalizeInlineJsText(js).trim();\n      if (!isSliderInitJs(js)) return false;\n\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = js;\n\n      \/\/ Insert before the first node, then remove the run.\n      var first = nodesToRemove[0];\n      if (first && first.parentNode) first.parentNode.insertBefore(s, first);\n      for (var i = 0; i < nodesToRemove.length; i++) {\n        var n = nodesToRemove[i];\n        if (n && n.parentNode) n.parentNode.removeChild(n);\n      }\n      return true;\n    }\n\n    function isAllowedJsWrapper(el){\n      if (!el || el.nodeType !== 1) return false;\n      var tn = (el.tagName || '').toUpperCase();\n      if (tn === 'SCRIPT' || tn === 'STYLE' || tn === 'NOSCRIPT' || tn === 'TEXTAREA') return false;\n      \/\/ Wrapper must contain only BR\/SPAN and text (common sanitizers).\n      var kids = el.childNodes || [];\n      for (var i = 0; i < kids.length; i++) {\n        var k = kids[i];\n        if (!k) continue;\n        if (k.nodeType === 3) continue; \/\/ text\n        if (k.nodeType !== 1) return false;\n        var kt = (k.tagName || '').toUpperCase();\n        if (kt !== 'BR' && kt !== 'SPAN') return false;\n      }\n      var txt = String(el.textContent || '').trim();\n      if (!txt) return false;\n      if (txt.length > 50000) return false;\n      txt = normalizeInlineJsText(txt);\n      \/\/ Only treat as \"whole script\" if it looks complete; otherwise we'll join siblings.\n      if (isSliderInitJs(txt) && (txt.indexOf('});});') !== -1 || txt.indexOf('}); });') !== -1 || txt.indexOf('unslider(\"start\")') !== -1)) return true;\n      return false;\n    }\n\n    function replaceWrapperWithScript(el){\n      var js = String(el.textContent || '');\n      if (!js) return false;\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = js;\n      if (el.parentNode) el.parentNode.replaceChild(s, el);\n      return true;\n    }\n\n    \/\/ Phase 1: handle sanitizer-wrapped inline JS blocks like <p><span>..<\/span><br>..<\/p>\n    try {\n      var all = slotEl.querySelectorAll('*');\n      for (var ai = 0; ai < all.length; ai++) {\n        var el = all[ai];\n        if (!el || el.getAttribute && el.getAttribute('data-pia-activated') === '1') continue;\n        \/\/ First try joining line-split blocks (e.g. multiple <p> siblings).\n        if (String(el.textContent || '').indexOf('advanced_ads_ready') !== -1) {\n          if (tryJoinSiblingLinesIntoScript(el)) continue;\n        }\n        if (!isAllowedJsWrapper(el)) continue;\n        replaceWrapperWithScript(el);\n      }\n    } catch (e) { \/* ignore *\/ }\n\n    \/\/ Some Advanced Ads outputs return raw JS outside <script> tags; convert to <script>.\n    function collectTextNodes(root, out){\n      if (!root || !out) return;\n      \/\/ Never treat real script\/style contents as \"visible text\".\n      if (root.nodeType === 1) {\n        var tn = (root.tagName || '').toUpperCase();\n        if (tn === 'SCRIPT' || tn === 'STYLE' || tn === 'NOSCRIPT' || tn === 'TEXTAREA') return;\n      }\n      var kids = root.childNodes;\n      if (!kids || !kids.length) return;\n      for (var i = 0; i < kids.length; i++) {\n        var n = kids[i];\n        if (!n) continue;\n        if (n.nodeType === 3) out.push(n);\n        else if (n.nodeType === 1) collectTextNodes(n, out);\n      }\n    }\n\n    function upgradeIfWrappedJsText(textNode){\n      var p = textNode && textNode.parentNode;\n      if (!p || p.nodeType !== 1) return false;\n      var tag = (p.tagName || '').toUpperCase();\n      if (tag === 'SCRIPT' || tag === 'STYLE' || tag === 'NOSCRIPT' || tag === 'TEXTAREA') return false;\n\n      \/\/ Only do this when the wrapper is basically \"just text\" (optionally with <br>).\n      var kids = p.childNodes || [];\n      for (var i = 0; i < kids.length; i++) {\n        var k = kids[i];\n        if (!k) continue;\n        if (k.nodeType === 1 && (k.tagName || '').toUpperCase() !== 'BR') return false;\n      }\n\n      var js = String(p.textContent || '');\n      if (!looksLikeAdvancedAdsInlineJs(js)) return false;\n\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = js;\n      if (p.parentNode) p.parentNode.replaceChild(s, p);\n      return true;\n    }\n\n    var textNodes = [];\n    collectTextNodes(slotEl, textNodes);\n    for (var i = 0; i < textNodes.length; i++) {\n      var n = textNodes[i];\n      var v = n && n.nodeValue;\n      if (!v) continue;\n      if (!looksLikeAdvancedAdsInlineJs(v)) continue;\n      if (upgradeIfWrappedJsText(n)) continue;\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = String(v);\n      if (n.parentNode) n.parentNode.replaceChild(s, n);\n    }\n\n    \/\/ Phase 2b: if JS got split across multiple text\/BR siblings, join and replace as one script.\n    try {\n      var more = [];\n      collectTextNodes(slotEl, more);\n      for (var mi = 0; mi < more.length; mi++) {\n        var tn = more[mi];\n        if (!tn || !tn.nodeValue) continue;\n        if (!isSliderInitJs(tn.nodeValue) && !looksLikeAdvancedAdsInlineJs(tn.nodeValue)) continue;\n        var p = tn.parentNode;\n        if (!p || p.nodeType !== 1) continue;\n        if ((p.tagName || '').toUpperCase() === 'SCRIPT') continue;\n\n        var js = '';\n        var run = [];\n        var cur = tn;\n        while (cur) {\n          if (cur.nodeType === 3) {\n            js += cur.nodeValue;\n            run.push(cur);\n          } else if (cur.nodeType === 1 && (cur.tagName || '').toUpperCase() === 'BR') {\n            js += '\\n';\n            run.push(cur);\n          } else {\n            break;\n          }\n          cur = cur.nextSibling;\n          if (js.length > 50000) break;\n          if (js.indexOf('});});') !== -1 || js.indexOf('}); });') !== -1) break;\n        }\n\n        js = String(js || '').trim();\n        if (!js) continue;\n        if (!isSliderInitJs(js) && !looksLikeAdvancedAdsInlineJs(js)) continue;\n\n        var sc = document.createElement('script');\n        sc.setAttribute('data-pia-activated', '1');\n        sc.text = js;\n        if (run.length) {\n          var first = run[0];\n          if (first.parentNode) first.parentNode.insertBefore(sc, first);\n          for (var ri = 0; ri < run.length; ri++) {\n            var r = run[ri];\n            if (r && r.parentNode) r.parentNode.removeChild(r);\n          }\n        }\n      }\n    } catch (e2) { \/* ignore *\/ }\n\n    \/\/ Scripts inserted via innerHTML don't reliably execute; re-insert them to run.\n    var scripts = slotEl.querySelectorAll('script');\n    for (var j = 0; j < scripts.length; j++) {\n      var old = scripts[j];\n      if (!old || old.getAttribute('data-pia-activated') === '1') continue;\n\n      var type = (old.getAttribute('type') || '').toLowerCase();\n      if (type && type !== 'text\/javascript' && type !== 'application\/javascript' && type !== 'module') continue;\n\n      var neu = document.createElement('script');\n      for (var k = 0; k < old.attributes.length; k++) {\n        var a = old.attributes[k];\n        if (a && a.name) neu.setAttribute(a.name, a.value);\n      }\n      neu.setAttribute('data-pia-activated', '1');\n\n      if (old.src) {\n        neu.src = old.src;\n      } else {\n        neu.text = old.text || old.textContent || '';\n      }\n\n      if (old.parentNode) old.parentNode.replaceChild(neu, old);\n    }\n  }\n\n  function buildGroupPickList(targetCount){\n    var out = [];\n    var groups = (PIA_GROUP_IDS || []).filter(Boolean);\n    if (!groups.length) return out;\n    for (var i=0; i<targetCount; i++){\n      out.push(groups[i % groups.length]);\n    }\n    return out;\n  }\n\n  function fetchGroupsHtml(groupIds, side){\n    var ids = (groupIds || []).slice();\n    if (!ids.length) return Promise.resolve([]);\n\n    var body = new URLSearchParams();\n    body.set('action', 'advads_ad_select');\n\n    for (var i = 0; i < ids.length; i++) {\n      body.set('deferedAds[' + i + '][ad_method]', 'group');\n      body.set('deferedAds[' + i + '][ad_id]', String(ids[i]));\n      body.set('deferedAds[' + i + '][blog_id]', String(PIA_BLOG_ID));\n      body.set('deferedAds[' + i + '][elementId]', 'pia-sidepanel-' + side + '-g' + String(ids[i]) + '-' + i);\n    }\n\n    return fetch(ajaxUrl(), {\n      method: 'POST',\n      credentials: 'same-origin',\n      headers: { 'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8' },\n      body: body.toString()\n    })\n    .then(function(r){ return r.json(); })\n    .then(function(json){ return Array.isArray(json) ? json : []; })\n    .catch(function(){ return []; });\n  }\n\n  function appendRendered(container, results, targetCount){\n    var frag = document.createDocumentFragment();\n    var added = 0;\n    var newSlots = [];\n\n    for (var i=0; i<results.length; i++) {\n      var res = results[i];\n      if (!res || res.status !== 'success' || !res.item) continue;\n\n      var slot = document.createElement('div');\n      slot.className = 'pia-ad-slot';\n      slot.innerHTML = String(res.item);\n\n      frag.appendChild(slot);\n      newSlots.push(slot);\n      added++;\n      if (added >= targetCount) break;\n    }\n\n    if (frag.childNodes.length) {\n      container.appendChild(frag);\n      \/\/ Must happen after insertion into the live DOM to guarantee execution.\n      for (var s = 0; s < newSlots.length; s++) {\n        activateAdScriptsIn(newSlots[s]);\n        postProcessSlot(newSlots[s]);\n      }\n    }\n    return added;\n  }\n\n  function renderInto(container, side){\n    if (!container || container.getAttribute('data-pia-loaded') === '1') return;\n    container.setAttribute('data-pia-loaded', '1');\n\n    var target = parseInt(container.getAttribute('data-pia-count') || '10', 10);\n    if (!target || target < 1) target = 10;\n\n    Array.prototype.slice.call(container.querySelectorAll('.pia-ad-slot')).forEach(function(n){ n.remove(); });\n\n    var statusEl = container.querySelector('.pia-sidepanel-ads__status');\n    if (statusEl) statusEl.textContent = 'Loading ads\u2026';\n\n    function done(){\n      if (statusEl) statusEl.remove();\n    }\n\n    var groupPicks = buildGroupPickList(target);\n\n    fetchGroupsHtml(groupPicks, side).then(function(results){\n      appendRendered(container, results, target);\n      done();\n    });\n  }\n\n  function init(){\n    var el = document.querySelector('.pia-sidepanel-ads[data-pia-sidepanel-ads=\"left\"]');\n    renderInto(el, 'left');\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n})();\n<\/script>\n\n<style>\n  \/* LEFT\/RIGHT share the same styling *\/\n  .pia-sidepanel-ads{\n    --pia-ad-gap: 48px;\n    --pia-edge-gap: 48px;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-start;\n    align-items: stretch;\n    gap: var(--pia-ad-gap);\n\n    max-width: 100%;\n    padding-top: var(--pia-edge-gap);\n    padding-bottom: var(--pia-edge-gap);\n  }\n\n  .pia-sidepanel-ads .pia-ad-slot{\n    display: block;\n    width: 100%;\n    clear: both;\n    margin: 0 !important;\n    padding: 0 !important;\n    background: transparent !important;\n    box-shadow: none !important;\n    border-radius: 0 !important;\n    max-width: 100%;\n    overflow: hidden;\n  }\n\n  .pia-sidepanel-ads .pia-ad-slot > *{\n    display: block;\n    width: 100%;\n    max-width: 100%;\n    margin-left: auto;\n    margin-right: auto;\n    float: none !important;\n  }\n\n  \/* Existing \"single column\" coercion *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-group,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item,\n  .pia-sidepanel-ads .pia-ad-slot .advads-ad-wrapper,\n  .pia-sidepanel-ads .pia-ad-slot .advads-ad{\n    display: block !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    float: none !important;\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  \/* \u2705 NEW: force multi-item groups to stack vertically (no columns) *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-group{\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: stretch !important;\n    justify-content: flex-start !important;\n    gap: 28px !important;                  \/* spacing BETWEEN ads inside the group *\/\n    width: 100% !important;\n    grid-template-columns: 1fr !important; \/* neutralize grid layouts *\/\n  }\n\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item{\n    display: block !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    float: none !important;\n    clear: both !important;\n    margin: 0 !important;\n  }\n\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item .advads-ad-wrapper,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item .advads-ad{\n    display: block !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    float: none !important;\n  }\n\n  .pia-sidepanel-ads .pia-ad-slot .advads-group *{\n    float: none !important;\n  }\n\n  .pia-sidepanel-ads img,\n  .pia-sidepanel-ads iframe{\n    display: block;\n    max-width: 100%;\n    height: auto;\n    margin: 0 auto;\n    border-radius: 0 !important;\n  }\n\n  .pia-sidepanel-ads__status{\n    opacity: .8;\n    text-align: center;\n    font-size: 14px;\n  }\n\n  \/* ============================\n     HARD OVERRIDE: force any \"grid\" groups to 1-column\n     Only inside .pia-sidepanel-ads\n     ============================ *\/\n\n  \/* Kill CSS multi-columns if a group uses them *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-group,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group *{\n    column-count: 1 !important;\n    column-gap: 0 !important;\n    column-width: auto !important;\n  }\n\n  \/* Target common Advanced Ads grid wrappers (names vary by version\/settings) *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-grid,\n  .pia-sidepanel-ads .pia-ad-slot .advads-grid-wrapper,\n  .pia-sidepanel-ads .pia-ad-slot .advads-ad-grid,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-grid,\n  .pia-sidepanel-ads .pia-ad-slot [class*=\"grid\"]{\n    display: flex !important;\n    flex-direction: column !important;\n    flex-wrap: nowrap !important;\n    align-items: stretch !important;\n    justify-content: flex-start !important;\n    width: 100% !important;\n    max-width: 100% !important;\n\n    grid-template-columns: 1fr !important;\n    grid-auto-flow: row !important;\n  }\n\n  \/* Force every possible \"item\" in those wrappers to be full width *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-grid > *,\n  .pia-sidepanel-ads .pia-ad-slot .advads-grid-wrapper > *,\n  .pia-sidepanel-ads .pia-ad-slot .advads-ad-grid > *,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-grid > *,\n  .pia-sidepanel-ads .pia-ad-slot [class*=\"grid\"] > *,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item{\n    width: 100% !important;\n    max-width: 100% !important;\n    flex: 0 0 100% !important;\n    float: none !important;\n    clear: both !important;\n    display: block !important;\n    box-sizing: border-box !important;\n  }\n\n  \/* If a theme sets inline-block tiles, kill that too *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-item *{\n    display: block !important;\n    float: none !important;\n  }\n\n  \/* Optional: consistent spacing BETWEEN items inside a group *\/\n  .pia-sidepanel-ads .pia-ad-slot .advads-group,\n  .pia-sidepanel-ads .pia-ad-slot .advads-grid,\n  .pia-sidepanel-ads .pia-ad-slot .advads-grid-wrapper,\n  .pia-sidepanel-ads .pia-ad-slot .advads-ad-grid,\n  .pia-sidepanel-ads .pia-ad-slot .advads-group-grid,\n  .pia-sidepanel-ads .pia-ad-slot [class*=\"grid\"]{\n    gap: 28px !important;\n  }\n\n  \/* If inline widths (50%\/33%\/25%) are used, stomp them *\/\n  .pia-sidepanel-ads .pia-ad-slot [style*=\"50%\"],\n  .pia-sidepanel-ads .pia-ad-slot [style*=\"33%\"],\n  .pia-sidepanel-ads .pia-ad-slot [style*=\"25%\"]{\n    width: 100% !important;\n    flex-basis: 100% !important;\n    max-width: 100% !important;\n  }\n<\/style>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_2_3 2_3 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:66.666666666667%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.88%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.88%;--awb-width-medium:66.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:2.88%;--awb-spacing-left-medium:2.88%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div id=\"pia-vimeo-feed\">\n  <h2 class=\"pia-feed-title\">Patriots In Action TV<\/h2>\n  <div class=\"pia-status\">Loading videos...<\/div>\n  <div class=\"pia-list\"><\/div>\n<\/div>\n\n<style>\n  \/* Layout + safe spacing from sticky headers on mobile *\/\n  #pia-vimeo-feed{\n    max-width: 980px;\n    margin: 0 auto;\n    width: 100%;\n    padding: 12px 16px 0;         \/* side padding keeps it centered on narrow screens *\/\n    box-sizing: border-box;\n    scroll-margin-top: 140px;      \/* helps when jumping to #video-* anchors *\/\n  }\n\n  \/* Title: center + add top spacing so it won't kiss the header on mobile *\/\n  #pia-vimeo-feed .pia-feed-title{\n    margin: 22px 0 12px;           \/* pushes title down *\/\n    padding-top: 6px;              \/* extra breathing room *\/\n    text-align: center;\n    line-height: 1.2;\n  }\n\n  #pia-vimeo-feed .pia-status{\n    text-align:center;\n    opacity:.85;\n    margin: 8px 0 14px;\n  }\n\n  #pia-vimeo-feed .pia-list{\n    display:flex;\n    flex-direction:column;\n    gap:22px;\n    align-items: center;           \/* ensures cards stay centered *\/\n  }\n\n  \/* Cards always centered + full-width on mobile *\/\n  #pia-vimeo-feed .pia-card{\n    width: 100%;\n    max-width: 980px;\n    border: 1px solid rgba(0,0,0,.10);\n    border-radius: 12px;\n    padding: 18px;\n    background: transparent !important;\n    box-shadow: none !important;\n    box-sizing: border-box;\n    scroll-margin-top: 140px;      \/* anchor jumps land below sticky header *\/\n  }\n\n  #pia-vimeo-feed .pia-title{\n    margin: 0 0 12px 0;\n    font-size: 22px;\n    line-height: 1.25;\n    text-align: center;\n  }\n  #pia-vimeo-feed .pia-title a{ color: inherit; text-decoration: none; }\n  #pia-vimeo-feed .pia-title a:hover{ text-decoration: underline; }\n\n  \/* Responsive 16:9 embed *\/\n  #pia-vimeo-feed .pia-embed{\n    position: relative;\n    width: 100%;\n    aspect-ratio: 16 \/ 9;\n    border-radius: 12px;\n    overflow: hidden;\n    background: rgba(0,0,0,.06);\n  }\n\n  #pia-vimeo-feed .pia-embed iframe{\n    position: absolute !important;\n    inset: 0 !important;\n    display:block;\n    width: 100% !important;\n    height: 100% !important;\n    border: 0;\n  }\n\n  #pia-vimeo-feed .pia-desc{\n    margin-top: 12px;\n    white-space: pre-wrap;\n    line-height: 1.55;\n  }\n\n  #pia-vimeo-feed .pia-actions{\n    display:flex;\n    gap:10px;\n    flex-wrap:wrap;\n    margin-top:14px;\n    justify-content:center;\n  }\n\n  #pia-vimeo-feed .pia-btn{\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    padding: 12px 16px;\n    border-radius: 8px;\n    border: 1px solid rgba(0,0,0,.14);\n    background: #0b3a6f;\n    color: #fff;\n    cursor: pointer;\n    font-weight: 700;\n    text-decoration: none;\n    user-select: none;\n    transition: background .15s ease, transform .05s ease, box-shadow .15s ease;\n    box-shadow: 0 6px 16px rgba(11,58,111,.18);\n    min-width: 240px;\n    text-align:center;\n  }\n  #pia-vimeo-feed .pia-btn:hover{ background:#092f59; box-shadow: 0 8px 18px rgba(11,58,111,.22); }\n  #pia-vimeo-feed .pia-btn:active{ transform: translateY(1px); }\n\n  @media (max-width: 768px){\n    #pia-vimeo-feed{\n      padding: 14px 12px 0;\n      scroll-margin-top: 160px;\n    }\n\n    #pia-vimeo-feed .pia-feed-title{\n      margin-top: 34px;\n    }\n\n    #pia-vimeo-feed .pia-card{\n      padding: 14px;\n      scroll-margin-top: 160px;\n    }\n\n    #pia-vimeo-feed .pia-title{ font-size: 20px; }\n    #pia-vimeo-feed .pia-btn{ min-width: 100%; }\n  }\n<\/style>\n\n<script>\n(function(){\n  var SHOWCASE_ID = \"12047150\";\n  var VIMEO_SHOWCASE_URL = \"\/wp-json\/pia\/v1\/vimeo-showcase?showcase_id=\" + encodeURIComponent(SHOWCASE_ID) + \"&page=1&per_page=50\";\n  var NETWORK_URL = \"https:\/\/community.patriotsinaction.com\/share\/Pw_KGVpesTKkKrNI?utm_source=manual\";\n\n  \/\/ Keep in sync with the CSS scroll-margin-top for best results\n  var HEADER_OFFSET_PX = 140;\n\n  var root = document.getElementById(\"pia-vimeo-feed\");\n  if (!root) return;\n\n  var statusEl = root.querySelector(\".pia-status\");\n  var listEl = root.querySelector(\".pia-list\");\n\n  function fetchJson(url){\n    return fetch(url, { credentials: \"same-origin\" }).then(function(r){\n      if(!r.ok) throw new Error(\"Fetch failed: \" + r.status);\n      return r.json();\n    });\n  }\n\n  function getVimeoIdFromUriOrLink(obj){\n    \/\/ obj.uri: \"\/videos\/1164792589\" OR obj.link: \"https:\/\/vimeo.com\/1164792589\"\n    var u = (obj && obj.uri) ? String(obj.uri) : \"\";\n    var l = (obj && obj.link) ? String(obj.link) : \"\";\n    var m = u.match(\/\\\/videos\\\/(\\d+)\/) || l.match(\/vimeo\\.com\\\/(\\d+)\/);\n    return m ? m[1] : null;\n  }\n\n  function buildShareUrlByAnchor(anchorId){\n    var base = window.location.origin + window.location.pathname;\n    return base + \"#\" + anchorId;\n  }\n\n  function copyToClipboard(text){\n    if (navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard.writeText(text);\n    var ta = document.createElement(\"textarea\");\n    ta.value = text;\n    ta.style.position = \"fixed\";\n    ta.style.left = \"-9999px\";\n    document.body.appendChild(ta);\n    ta.select();\n    try { document.execCommand(\"copy\"); } catch (e) {}\n    document.body.removeChild(ta);\n    return Promise.resolve();\n  }\n\n  function buildPlayerSrc(video){\n    \/\/ Prefer the API-provided player_embed_url (already includes h= hash)\n    var src = (video && video.player_embed_url) ? String(video.player_embed_url) : \"\";\n    var id = getVimeoIdFromUriOrLink(video);\n\n    if (!src && id) src = \"https:\/\/player.vimeo.com\/video\/\" + encodeURIComponent(id);\n    return src || \"\";\n  }\n\n  function renderSingleIframe(embed, src, titleText){\n    if (!embed) return;\n\n    while (embed.firstChild) embed.removeChild(embed.firstChild);\n\n    if (!src) {\n      embed.textContent = \"Video could not be embedded.\";\n      return;\n    }\n\n    var iframe = document.createElement(\"iframe\");\n    iframe.src = src;\n    iframe.setAttribute(\"frameborder\", \"0\");\n    iframe.setAttribute(\"allow\", \"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\");\n    iframe.setAttribute(\"referrerpolicy\", \"strict-origin-when-cross-origin\");\n    iframe.setAttribute(\"loading\", \"lazy\");\n    iframe.allowFullscreen = true;\n    iframe.setAttribute(\"allowfullscreen\", \"\");\n    if (titleText) iframe.title = titleText;\n\n    embed.appendChild(iframe);\n  }\n\n  function makeCard(video, index){\n    var id = getVimeoIdFromUriOrLink(video) || \"\";\n    var link = (video && video.link) ? String(video.link) : (id ? (\"https:\/\/vimeo.com\/\" + id) : \"\");\n    var title = (video && video.name) ? String(video.name).trim() : \"Untitled\";\n    var descText = (video && video.description) ? String(video.description).trim() : \"\";\n\n    var card = document.createElement(\"article\");\n    card.className = \"pia-card\";\n    card.setAttribute(\"data-loaded\", \"0\");\n    card.setAttribute(\"data-vimeo-id\", id);\n    card.setAttribute(\"data-player-src\", buildPlayerSrc(video));\n    card.setAttribute(\"data-url\", link);\n\n    var shortAnchorId = \"video-\" + index;\n    card.id = shortAnchorId;\n\n    var h3 = document.createElement(\"h3\");\n    h3.className = \"pia-title\";\n\n    var titleLink = document.createElement(\"a\");\n    titleLink.href = \"#\" + shortAnchorId;\n    titleLink.textContent = title;\n    titleLink.title = \"Copy\/share link to this video section\";\n    h3.appendChild(titleLink);\n\n    var embed = document.createElement(\"div\");\n    embed.className = \"pia-embed\";\n    embed.setAttribute(\"aria-busy\", \"true\");\n\n    var desc = document.createElement(\"div\");\n    desc.className = \"pia-desc\";\n    desc.textContent = descText || \"\";\n\n    var actions = document.createElement(\"div\");\n    actions.className = \"pia-actions\";\n\n    var joinBtn = document.createElement(\"a\");\n    joinBtn.className = \"pia-btn\";\n    joinBtn.href = NETWORK_URL;\n    joinBtn.target = \"_blank\";\n    joinBtn.rel = \"noopener\";\n    joinBtn.textContent = \"Join Your County Patriot Network\";\n    actions.appendChild(joinBtn);\n\n    var shareBtn = document.createElement(\"button\");\n    shareBtn.type = \"button\";\n    shareBtn.className = \"pia-btn\";\n    shareBtn.textContent = \"Share this video\";\n    shareBtn.addEventListener(\"click\", function(){\n      var shareUrl = buildShareUrlByAnchor(shortAnchorId);\n      if (navigator.share) {\n        navigator.share({ title: title || \"Patriots In Action TV\", url: shareUrl }).catch(function(){});\n        return;\n      }\n      copyToClipboard(shareUrl).then(function(){\n        var old = shareBtn.textContent;\n        shareBtn.textContent = \"Link copied!\";\n        setTimeout(function(){ shareBtn.textContent = old; }, 1200);\n      });\n    });\n    actions.appendChild(shareBtn);\n\n    card.appendChild(h3);\n    card.appendChild(embed);\n    card.appendChild(desc);\n    card.appendChild(actions);\n\n    return card;\n  }\n\n  function hydrateCard(card){\n    if (!card || card.getAttribute(\"data-loaded\") === \"1\") return Promise.resolve();\n    card.setAttribute(\"data-loaded\", \"1\");\n\n    var embed = card.querySelector(\".pia-embed\");\n    if (!embed) return Promise.resolve();\n\n    var src = card.getAttribute(\"data-player-src\") || \"\";\n    var titleText = (card.querySelector(\".pia-title a\") || {}).textContent || \"\";\n    renderSingleIframe(embed, src, titleText.trim());\n    embed.setAttribute(\"aria-busy\", \"false\");\n    return Promise.resolve();\n  }\n\n  function getTargetFromHash(){\n    var hash = window.location.hash || \"\";\n    if (!hash) return null;\n\n    var raw = hash.slice(1);\n    if (raw.indexOf(\"video-\") !== 0) return null;\n\n    var el = document.getElementById(raw);\n    if (el) return el;\n\n    var maybeId = raw.replace(\"video-\", \"\");\n    if (\/^\\d+$\/.test(maybeId)) {\n      var match = root.querySelector('[data-vimeo-id=\"' + maybeId + '\"]');\n      if (match) return match;\n    }\n    return null;\n  }\n\n  function scrollToTarget(el){\n    if (!el) return;\n\n    var top1 = el.getBoundingClientRect().top + window.pageYOffset - HEADER_OFFSET_PX;\n    window.scrollTo({ top: Math.max(0, top1), behavior: \"auto\" });\n\n    hydrateCard(el)[\"catch\"](console.error);\n\n    var attempts = 0;\n    function retry(){\n      attempts++;\n      var top = el.getBoundingClientRect().top + window.pageYOffset - HEADER_OFFSET_PX;\n      window.scrollTo({ top: Math.max(0, top), behavior: attempts === 1 ? \"auto\" : \"smooth\" });\n      if (attempts >= 4) return;\n      setTimeout(function(){ requestAnimationFrame(retry); }, 250);\n    }\n    setTimeout(function(){ requestAnimationFrame(retry); }, 150);\n  }\n\n  function onHash(){\n    var el = getTargetFromHash();\n    if (el) scrollToTarget(el);\n  }\n\n  statusEl.textContent = \"Loading videos...\";\n\n  fetchJson(VIMEO_SHOWCASE_URL)\n    .then(function(json){\n      var videos = (json && Array.isArray(json.data)) ? json.data : [];\n      if (!videos.length) {\n        statusEl.textContent = \"No videos found in this showcase.\";\n        return;\n      }\n\n      \/\/ Optional: sort newest first by created_time (your API may already return in order)\n      videos.sort(function(a,b){\n        var at = Date.parse(a && a.created_time ? a.created_time : \"\") || 0;\n        var bt = Date.parse(b && b.created_time ? b.created_time : \"\") || 0;\n        return bt - at;\n      });\n\n      statusEl.textContent = videos.length + \" videos\";\n\n      var cards = [];\n      for (var i=0; i<videos.length; i++){\n        var c = makeCard(videos[i], i + 1);\n        cards.push(c);\n        listEl.appendChild(c);\n      }\n\n      var observer = (\"IntersectionObserver\" in window) ? new IntersectionObserver(function(entries){\n        for (var k=0; k<entries.length; k++){\n          var e = entries[k];\n          if (e.isIntersecting){\n            observer.unobserve(e.target);\n            hydrateCard(e.target)[\"catch\"](console.error);\n          }\n        }\n      }, { rootMargin: \"700px 0px\" }) : null;\n\n      if (observer) {\n        for (var x=0; x<cards.length; x++) observer.observe(cards[x]);\n      } else {\n        for (var y=0; y<Math.min(6, cards.length); y++) hydrateCard(cards[y])[\"catch\"](console.error);\n      }\n\n      onHash();\n      window.addEventListener(\"hashchange\", onHash);\n    })\n    .catch(function(err){\n      console.error(err);\n      statusEl.textContent = \"Could not load the showcase feed. Check console for details.\";\n    });\n})();\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_6 1_6 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:16.666666666667%;--awb-margin-top-large:0px;--awb-spacing-right-large:11.52%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:11.52%;--awb-width-medium:16.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:11.52%;--awb-spacing-left-medium:11.52%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- RIGHT SIDEBAR ADS (paste this whole block into the RIGHT codeblock) -->\n<div class=\"pia-sidepanel-ads pia-sidepanel-ads--right\"\n     data-pia-sidepanel-ads=\"right\"\n     data-pia-count=\"10\"\n     aria-label=\"Sidebar ads (right)\">\n  <div class=\"pia-sidepanel-ads__status\">Loading\u2026<\/div>\n<\/div>\n\n<script>\n(function(){\n  var PIA_BLOG_ID = 13;\n  var PIA_GROUP_IDS = [109, 112, 113];\n\n  function stripTrailingSlashes(u){ return String(u || '').replace(\/\\\/+$\/, ''); }\n  function wpBaseUrl(){\n    var link = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\n    if (link && link.href) return stripTrailingSlashes(link.href.replace(\/\\\/wp-json\\\/?$\/, ''));\n    return stripTrailingSlashes((window.location.origin || '') + (window.location.pathname || '').split('\/').slice(0,2).join('\/'));\n  }\n  function ajaxUrl(){ return wpBaseUrl() + '\/wp-admin\/admin-ajax.php'; }\n\n  function looksLikeAdvancedAdsInlineJs(text){\n    var t = String(text || '').replace(\/^\\s+|\\s+$\/g, '');\n    if (!t) return false;\n    if (t.indexOf('advanced_ads_ready') !== -1) return true;\n    if (t.indexOf('advads') !== -1 && t.indexOf('jQuery') !== -1 && \/function\\s*\\(\/.test(t)) return true;\n    return false;\n  }\n\n  function ensurePatriGridCss(){\n    if (document.getElementById('pia-patri-grid-css')) return;\n    var css = [\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]{list-style:none;margin:0;padding:0;overflow:hidden;}',\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]>li{float:left;width:17%;min-width:175px;list-style:none;margin:0 3% 3% 0;padding:0;overflow:hidden;}',\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]>li.last{margin-right:0;}',\n      '.pia-sidepanel-ads ul[id^=\"patri-grid-\"]>li.last+li{clear:both;}'\n    ].join('');\n    var style = document.createElement('style');\n    style.id = 'pia-patri-grid-css';\n    style.textContent = css;\n    (document.head || document.documentElement).appendChild(style);\n  }\n\n  function removeVisibleInlineCodeArtifacts(slotEl){\n    if (!slotEl) return;\n\n    function isArtifactNode(el, kind){\n      if (!el || el.nodeType !== 1) return false;\n      var txt = String(el.textContent || '').trim();\n      if (!txt) return false;\n      if (txt.length > 80000) return false;\n\n      \/\/ Don't remove real ad markup.\n      if (el.querySelector && el.querySelector('img,iframe,video,svg,canvas,form,input,textarea,select,button')) return false;\n\n      if (kind === 'js') {\n        return txt.indexOf('advanced_ads_ready') !== -1 && txt.indexOf('unslider') !== -1;\n      }\n      if (kind === 'css') {\n        return (txt.indexOf('#patri-grid-') !== -1 || txt.indexOf('patri-grid-') !== -1) && txt.indexOf('{') !== -1 && txt.indexOf('}') !== -1;\n      }\n      return false;\n    }\n\n    \/\/ Remove inline scripts\/styles that belong to patri grid\/slider to avoid \u201cshowing code as text\u201d.\n    var scripts = slotEl.querySelectorAll('script');\n    for (var i = scripts.length - 1; i >= 0; i--) {\n      var s = scripts[i];\n      var t = String(s.text || s.textContent || '');\n      if (t.indexOf('advanced_ads_ready') !== -1 && t.indexOf('unslider') !== -1) s.remove();\n    }\n    var styles = slotEl.querySelectorAll('style');\n    for (var j = styles.length - 1; j >= 0; j--) {\n      var st = styles[j];\n      var ct = String(st.textContent || '');\n      if (ct.indexOf('#patri-grid-') !== -1 || ct.indexOf('patri-grid-') !== -1) st.remove();\n    }\n\n    \/\/ Remove sanitizer-wrapped JS\/CSS that is being rendered as normal text.\n    var all = slotEl.querySelectorAll('*');\n    for (var k = all.length - 1; k >= 0; k--) {\n      var el = all[k];\n      if (isArtifactNode(el, 'js') || isArtifactNode(el, 'css')) {\n        el.remove();\n      }\n    }\n  }\n\n  function initPatriSliders(slotEl){\n    if (!slotEl || !window.jQuery) return;\n    if (!jQuery.fn || !jQuery.fn.unslider) return;\n\n    var sliders = slotEl.querySelectorAll('.custom-slider[class*=\"patri-slider-\"]');\n    for (var i = 0; i < sliders.length; i++) {\n      var el = sliders[i];\n      if (!el || el.getAttribute('data-pia-unslider') === '1') continue;\n      el.setAttribute('data-pia-unslider', '1');\n\n      var $s = jQuery(el);\n      if ($s.data('unslider')) continue;\n\n      $s.on('unslider.ready', function() {\n        jQuery('div.custom-slider ul li').css('display', 'block');\n      });\n\n      $s.unslider({ delay: 10000, autoplay: true, nav: false, arrows: false, infinite: true });\n\n      $s.on('mouseover', function() { $s.unslider('stop'); })\n        .on('mouseout', function() { $s.unslider('start'); });\n    }\n  }\n\n  function postProcessSlot(slotEl){\n    ensurePatriGridCss();\n    removeVisibleInlineCodeArtifacts(slotEl);\n\n    \/\/ Unslider may load late; retry a bit.\n    var tries = 0;\n    (function retry(){\n      tries++;\n      initPatriSliders(slotEl);\n      if (tries < 15 && (!window.jQuery || !jQuery.fn || !jQuery.fn.unslider)) {\n        setTimeout(retry, 200);\n      }\n    })();\n  }\n\n  function activateAdScriptsIn(slotEl){\n    if (!slotEl) return;\n\n    function isSliderInitJs(text){\n      var t = String(text || '');\n      return t.indexOf('advanced_ads_ready') !== -1 && t.indexOf('unslider') !== -1;\n    }\n\n    function normalizeInlineJsText(js){\n      \/\/ Sometimes sanitizers leave literal \"\\n\" sequences in text nodes.\n      return String(js || '')\n        .replace(\/\\\\r\\\\n\/g, '\\n')\n        .replace(\/\\\\n\/g, '\\n')\n        .replace(\/\\\\t\/g, '\\t');\n    }\n\n    function hasForbiddenDescendants(el){\n      \/\/ If these are present, this isn't just \"displayed text\".\n      return !!(el.querySelector && el.querySelector('img,iframe,video,svg,canvas,form,input,textarea,select,button,a,ul,ol,li,table'));\n    }\n\n    function isTextyLineElement(el){\n      if (!el || el.nodeType !== 1) return false;\n      var tn = (el.tagName || '').toUpperCase();\n      if (tn === 'SCRIPT' || tn === 'STYLE' || tn === 'NOSCRIPT' || tn === 'TEXTAREA') return false;\n      if (hasForbiddenDescendants(el)) return false;\n      \/\/ Must not contain structural markup besides BR\/SPAN\/CODE.\n      var kids = el.childNodes || [];\n      for (var i = 0; i < kids.length; i++) {\n        var k = kids[i];\n        if (!k) continue;\n        if (k.nodeType === 3) continue;\n        if (k.nodeType !== 1) return false;\n        var kt = (k.tagName || '').toUpperCase();\n        if (kt !== 'BR' && kt !== 'SPAN' && kt !== 'CODE') return false;\n      }\n      return String(el.textContent || '').trim().length > 0;\n    }\n\n    function tryJoinSiblingLinesIntoScript(startEl){\n      if (!startEl || startEl.nodeType !== 1) return false;\n      if (!isTextyLineElement(startEl)) return false;\n\n      var parent = startEl.parentNode;\n      if (!parent || parent.nodeType !== 1) return false;\n      if ((parent.tagName || '').toUpperCase() === 'SCRIPT') return false;\n\n      var js = '';\n      var nodesToRemove = [];\n      var cur = startEl;\n      var maxNodes = 80;\n\n      while (cur && maxNodes-- > 0) {\n        if (cur.nodeType === 1) {\n          if (!isTextyLineElement(cur)) break;\n          js += String(cur.textContent || '') + '\\n';\n          nodesToRemove.push(cur);\n        } else if (cur.nodeType === 3) {\n          if (String(cur.nodeValue || '').trim()) {\n            js += String(cur.nodeValue || '') + '\\n';\n            nodesToRemove.push(cur);\n          }\n        } else if (cur.nodeType === 1 && (cur.tagName || '').toUpperCase() === 'BR') {\n          js += '\\n';\n          nodesToRemove.push(cur);\n        }\n\n        var norm = normalizeInlineJsText(js);\n        if (isSliderInitJs(norm) && (norm.indexOf('});});') !== -1 || norm.indexOf('}); });') !== -1 || norm.indexOf('unslider(\"start\")') !== -1)) {\n          js = norm;\n          break;\n        }\n\n        if (js.length > 50000) {\n          js = normalizeInlineJsText(js);\n          break;\n        }\n\n        cur = cur.nextSibling;\n      }\n\n      js = normalizeInlineJsText(js).trim();\n      if (!isSliderInitJs(js)) return false;\n\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = js;\n\n      \/\/ Insert before the first node, then remove the run.\n      var first = nodesToRemove[0];\n      if (first && first.parentNode) first.parentNode.insertBefore(s, first);\n      for (var i = 0; i < nodesToRemove.length; i++) {\n        var n = nodesToRemove[i];\n        if (n && n.parentNode) n.parentNode.removeChild(n);\n      }\n      return true;\n    }\n\n    function isAllowedJsWrapper(el){\n      if (!el || el.nodeType !== 1) return false;\n      var tn = (el.tagName || '').toUpperCase();\n      if (tn === 'SCRIPT' || tn === 'STYLE' || tn === 'NOSCRIPT' || tn === 'TEXTAREA') return false;\n      \/\/ Wrapper must contain only BR\/SPAN and text (common sanitizers).\n      var kids = el.childNodes || [];\n      for (var i = 0; i < kids.length; i++) {\n        var k = kids[i];\n        if (!k) continue;\n        if (k.nodeType === 3) continue; \/\/ text\n        if (k.nodeType !== 1) return false;\n        var kt = (k.tagName || '').toUpperCase();\n        if (kt !== 'BR' && kt !== 'SPAN') return false;\n      }\n      var txt = String(el.textContent || '').trim();\n      if (!txt) return false;\n      if (txt.length > 50000) return false;\n      txt = normalizeInlineJsText(txt);\n      \/\/ Only treat as \"whole script\" if it looks complete; otherwise we'll join siblings.\n      if (isSliderInitJs(txt) && (txt.indexOf('});});') !== -1 || txt.indexOf('}); });') !== -1 || txt.indexOf('unslider(\"start\")') !== -1)) return true;\n      return false;\n    }\n\n    function replaceWrapperWithScript(el){\n      var js = String(el.textContent || '');\n      if (!js) return false;\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = js;\n      if (el.parentNode) el.parentNode.replaceChild(s, el);\n      return true;\n    }\n\n    \/\/ Phase 1: handle sanitizer-wrapped inline JS blocks like <p><span>..<\/span><br>..<\/p>\n    try {\n      var all = slotEl.querySelectorAll('*');\n      for (var ai = 0; ai < all.length; ai++) {\n        var el = all[ai];\n        if (!el || el.getAttribute && el.getAttribute('data-pia-activated') === '1') continue;\n        \/\/ First try joining line-split blocks (e.g. multiple <p> siblings).\n        if (String(el.textContent || '').indexOf('advanced_ads_ready') !== -1) {\n          if (tryJoinSiblingLinesIntoScript(el)) continue;\n        }\n        if (!isAllowedJsWrapper(el)) continue;\n        replaceWrapperWithScript(el);\n      }\n    } catch (e) { \/* ignore *\/ }\n\n    \/\/ Some Advanced Ads outputs return raw JS outside <script> tags; convert to <script>.\n    function collectTextNodes(root, out){\n      if (!root || !out) return;\n      \/\/ Never treat real script\/style contents as \"visible text\".\n      if (root.nodeType === 1) {\n        var tn = (root.tagName || '').toUpperCase();\n        if (tn === 'SCRIPT' || tn === 'STYLE' || tn === 'NOSCRIPT' || tn === 'TEXTAREA') return;\n      }\n      var kids = root.childNodes;\n      if (!kids || !kids.length) return;\n      for (var i = 0; i < kids.length; i++) {\n        var n = kids[i];\n        if (!n) continue;\n        if (n.nodeType === 3) out.push(n);\n        else if (n.nodeType === 1) collectTextNodes(n, out);\n      }\n    }\n\n    function upgradeIfWrappedJsText(textNode){\n      var p = textNode && textNode.parentNode;\n      if (!p || p.nodeType !== 1) return false;\n      var tag = (p.tagName || '').toUpperCase();\n      if (tag === 'SCRIPT' || tag === 'STYLE' || tag === 'NOSCRIPT' || tag === 'TEXTAREA') return false;\n\n      \/\/ Only do this when the wrapper is basically \"just text\" (optionally with <br>).\n      var kids = p.childNodes || [];\n      for (var i = 0; i < kids.length; i++) {\n        var k = kids[i];\n        if (!k) continue;\n        if (k.nodeType === 1 && (k.tagName || '').toUpperCase() !== 'BR') return false;\n      }\n\n      var js = String(p.textContent || '');\n      if (!looksLikeAdvancedAdsInlineJs(js)) return false;\n\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = js;\n      if (p.parentNode) p.parentNode.replaceChild(s, p);\n      return true;\n    }\n\n    var textNodes = [];\n    collectTextNodes(slotEl, textNodes);\n    for (var i = 0; i < textNodes.length; i++) {\n      var n = textNodes[i];\n      var v = n && n.nodeValue;\n      if (!v) continue;\n      if (!looksLikeAdvancedAdsInlineJs(v)) continue;\n      if (upgradeIfWrappedJsText(n)) continue;\n      var s = document.createElement('script');\n      s.setAttribute('data-pia-activated', '1');\n      s.text = String(v);\n      if (n.parentNode) n.parentNode.replaceChild(s, n);\n    }\n\n    \/\/ Phase 2b: if JS got split across multiple text\/BR siblings, join and replace as one script.\n    try {\n      var more = [];\n      collectTextNodes(slotEl, more);\n      for (var mi = 0; mi < more.length; mi++) {\n        var tn = more[mi];\n        if (!tn || !tn.nodeValue) continue;\n        if (!isSliderInitJs(tn.nodeValue) && !looksLikeAdvancedAdsInlineJs(tn.nodeValue)) continue;\n        var p = tn.parentNode;\n        if (!p || p.nodeType !== 1) continue;\n        if ((p.tagName || '').toUpperCase() === 'SCRIPT') continue;\n\n        var js = '';\n        var run = [];\n        var cur = tn;\n        while (cur) {\n          if (cur.nodeType === 3) {\n            js += cur.nodeValue;\n            run.push(cur);\n          } else if (cur.nodeType === 1 && (cur.tagName || '').toUpperCase() === 'BR') {\n            js += '\\n';\n            run.push(cur);\n          } else {\n            break;\n          }\n          cur = cur.nextSibling;\n          if (js.length > 50000) break;\n          if (js.indexOf('});});') !== -1 || js.indexOf('}); });') !== -1) break;\n        }\n\n        js = String(js || '').trim();\n        if (!js) continue;\n        if (!isSliderInitJs(js) && !looksLikeAdvancedAdsInlineJs(js)) continue;\n\n        var sc = document.createElement('script');\n        sc.setAttribute('data-pia-activated', '1');\n        sc.text = js;\n        if (run.length) {\n          var first = run[0];\n          if (first.parentNode) first.parentNode.insertBefore(sc, first);\n          for (var ri = 0; ri < run.length; ri++) {\n            var r = run[ri];\n            if (r && r.parentNode) r.parentNode.removeChild(r);\n          }\n        }\n      }\n    } catch (e2) { \/* ignore *\/ }\n\n    \/\/ Scripts inserted via innerHTML don't reliably execute; re-insert them to run.\n    var scripts = slotEl.querySelectorAll('script');\n    for (var j = 0; j < scripts.length; j++) {\n      var old = scripts[j];\n      if (!old || old.getAttribute('data-pia-activated') === '1') continue;\n\n      var type = (old.getAttribute('type') || '').toLowerCase();\n      if (type && type !== 'text\/javascript' && type !== 'application\/javascript' && type !== 'module') continue;\n\n      var neu = document.createElement('script');\n      for (var k = 0; k < old.attributes.length; k++) {\n        var a = old.attributes[k];\n        if (a && a.name) neu.setAttribute(a.name, a.value);\n      }\n      neu.setAttribute('data-pia-activated', '1');\n\n      if (old.src) {\n        neu.src = old.src;\n      } else {\n        neu.text = old.text || old.textContent || '';\n      }\n\n      if (old.parentNode) old.parentNode.replaceChild(neu, old);\n    }\n  }\n\n  function buildGroupPickList(targetCount){\n    var out = [];\n    var groups = (PIA_GROUP_IDS || []).filter(Boolean);\n    if (!groups.length) return out;\n    for (var i=0; i<targetCount; i++){\n      out.push(groups[i % groups.length]);\n    }\n    return out;\n  }\n\n  function fetchGroupsHtml(groupIds, side){\n    var ids = (groupIds || []).slice();\n    if (!ids.length) return Promise.resolve([]);\n\n    var body = new URLSearchParams();\n    body.set('action', 'advads_ad_select');\n\n    for (var i = 0; i < ids.length; i++) {\n      body.set('deferedAds[' + i + '][ad_method]', 'group');\n      body.set('deferedAds[' + i + '][ad_id]', String(ids[i]));\n      body.set('deferedAds[' + i + '][blog_id]', String(PIA_BLOG_ID));\n      body.set('deferedAds[' + i + '][elementId]', 'pia-sidepanel-' + side + '-g' + String(ids[i]) + '-' + i);\n    }\n\n    return fetch(ajaxUrl(), {\n      method: 'POST',\n      credentials: 'same-origin',\n      headers: { 'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8' },\n      body: body.toString()\n    })\n    .then(function(r){ return r.json(); })\n    .then(function(json){ return Array.isArray(json) ? json : []; })\n    .catch(function(){ return []; });\n  }\n\n  function appendRendered(container, results, targetCount){\n    var frag = document.createDocumentFragment();\n    var added = 0;\n    var newSlots = [];\n\n    for (var i=0; i<results.length; i++) {\n      var res = results[i];\n      if (!res || res.status !== 'success' || !res.item) continue;\n\n      var slot = document.createElement('div');\n      slot.className = 'pia-ad-slot';\n      slot.innerHTML = String(res.item);\n\n      frag.appendChild(slot);\n      newSlots.push(slot);\n      added++;\n      if (added >= targetCount) break;\n    }\n\n    if (frag.childNodes.length) {\n      container.appendChild(frag);\n      \/\/ Must happen after insertion into the live DOM to guarantee execution.\n      for (var s = 0; s < newSlots.length; s++) {\n        activateAdScriptsIn(newSlots[s]);\n        postProcessSlot(newSlots[s]);\n      }\n    }\n    return added;\n  }\n\n  function renderInto(container, side){\n    if (!container || container.getAttribute('data-pia-loaded') === '1') return;\n    container.setAttribute('data-pia-loaded', '1');\n\n    var target = parseInt(container.getAttribute('data-pia-count') || '10', 10);\n    if (!target || target < 1) target = 10;\n\n    Array.prototype.slice.call(container.querySelectorAll('.pia-ad-slot')).forEach(function(n){ n.remove(); });\n\n    var statusEl = container.querySelector('.pia-sidepanel-ads__status');\n    if (statusEl) statusEl.textContent = 'Loading ads\u2026';\n\n    function done(){\n      if (statusEl) statusEl.remove();\n    }\n\n    var groupPicks = buildGroupPickList(target);\n\n    fetchGroupsHtml(groupPicks, side).then(function(results){\n      appendRendered(container, results, target);\n      done();\n    });\n  }\n\n  function init(){\n    var el = document.querySelector('.pia-sidepanel-ads[data-pia-sidepanel-ads=\"right\"]');\n    renderInto(el, 'right');\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n})();\n<\/script>\n<\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"footnotes":""},"class_list":["post-5913","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TV - Midland<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/patriotsinactiontx.com\/midland\/tv\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TV - Midland\" \/>\n<meta property=\"og:url\" content=\"https:\/\/patriotsinactiontx.com\/midland\/tv\/\" \/>\n<meta property=\"og:site_name\" content=\"Midland\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-18T23:21:29+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/patriotsinactiontx.com\/midland\/tv\/\",\"url\":\"https:\/\/patriotsinactiontx.com\/midland\/tv\/\",\"name\":\"TV - Midland\",\"isPartOf\":{\"@id\":\"https:\/\/patriotsinactiontx.com\/midland\/#website\"},\"datePublished\":\"2026-02-12T21:47:03+00:00\",\"dateModified\":\"2026-02-18T23:21:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/patriotsinactiontx.com\/midland\/tv\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/patriotsinactiontx.com\/midland\/tv\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/patriotsinactiontx.com\/midland\/tv\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/patriotsinactiontx.com\/midland\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TV\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/patriotsinactiontx.com\/midland\/#website\",\"url\":\"https:\/\/patriotsinactiontx.com\/midland\/\",\"name\":\"Midland\",\"description\":\"Making Our Founders Proud.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/patriotsinactiontx.com\/midland\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TV - Midland","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/patriotsinactiontx.com\/midland\/tv\/","og_locale":"en_US","og_type":"article","og_title":"TV - Midland","og_url":"https:\/\/patriotsinactiontx.com\/midland\/tv\/","og_site_name":"Midland","article_modified_time":"2026-02-18T23:21:29+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/patriotsinactiontx.com\/midland\/tv\/","url":"https:\/\/patriotsinactiontx.com\/midland\/tv\/","name":"TV - Midland","isPartOf":{"@id":"https:\/\/patriotsinactiontx.com\/midland\/#website"},"datePublished":"2026-02-12T21:47:03+00:00","dateModified":"2026-02-18T23:21:29+00:00","breadcrumb":{"@id":"https:\/\/patriotsinactiontx.com\/midland\/tv\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/patriotsinactiontx.com\/midland\/tv\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/patriotsinactiontx.com\/midland\/tv\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/patriotsinactiontx.com\/midland\/"},{"@type":"ListItem","position":2,"name":"TV"}]},{"@type":"WebSite","@id":"https:\/\/patriotsinactiontx.com\/midland\/#website","url":"https:\/\/patriotsinactiontx.com\/midland\/","name":"Midland","description":"Making Our Founders Proud.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/patriotsinactiontx.com\/midland\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/pages\/5913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/comments?post=5913"}],"version-history":[{"count":6,"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/pages\/5913\/revisions"}],"predecessor-version":[{"id":5921,"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/pages\/5913\/revisions\/5921"}],"wp:attachment":[{"href":"https:\/\/patriotsinactiontx.com\/midland\/wp-json\/wp\/v2\/media?parent=5913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}