PageSourceSearch

https://wefer.com/fgc-la-historia/

html wefer.com collected 2026-09-24 22:48:35 UTC 51,191 bytes, 744 lines download raw bytes

1<!DOCTYPE html><html lang="ca"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Història de FGC, ferrocarrils de la Generalitat de Catalunya</title><meta name="description" content="Història de Ferrocarrils de la Generalitat de Catalunya. Línies Catalans (Llobregat Anoia) i Catalunya (Sabadell Terrassa). Brill, Naval, vapor, etc."><meta name="generator" content="Publii Open-Source CMS for Static Site"><link rel="canonical" href="https://wefer.com/fgc-la-historia/"><link rel="alternate" type="application/atom+xml" href="https://wefer.com/feed.xml" title="wefer.com, Web Ferroviària - RSS"><link rel="alternate" type="application/json" href="https://wefer.com/feed.json" title="wefer.com, Web Ferroviària - JSON"><meta property="og:title" content="FGC: la història"><meta property="og:image" content="https://wefer.com/media/posts/11/18-Brill-Pl-Catalunya-01-19-09-04.jpg"><meta property="og:image:width" content="2048"><meta property="og:image:height" content="1536"><meta property="og:site_name" content="wefer.com, Web Ferroviària"><meta property="og:description" content="Història de Ferrocarrils de la Generalitat de Catalunya. Línies Catalans (Llobregat Anoia) i Catalunya (Sabadell Terrassa). Brill, Naval, vapor, etc."><meta property="og:url" content="https://wefer.com/fgc-la-historia/"><meta property="og:type" content="article"><link rel="shortcut icon" href="https://wefer.com/media/website/logo-2020-ico.png" type="image/png"><link rel="stylesheet" href="https://wefer.com/assets/css/style.css?v=6d6cf38d016e094e9cdc73e9152b6d30">
1<script type="application/ld+json">{"@context":"http://schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https://wefer.com/fgc-la-historia/"},"headline":"FGC: la història","datePublished":"2020-04-01T13:07+02:00","dateModified":"2025-11-19T01:26+01:00","image":{"@type":"ImageObject","url":"https://wefer.com/media/posts/11/18-Brill-Pl-Catalunya-01-19-09-04.jpg","height":1536,"width":2048},"description":"Història de Ferrocarrils de la Generalitat de Catalunya. Línies Catalans (Llobregat Anoia) i Catalunya (Sabadell Terrassa). Brill, Naval, vapor, etc.","author":{"@type":"Person","name":"Marçal Guardiola","url":"https://wefer.com/authors/marcal-guardiola/"},"publisher":{"@type":"Organization","name":"Marçal Guardiola","logo":{"@type":"ImageObject","url":"https://wefer.com/media/website/logo-2020-b-2.gif","height":81,"width":320}}}</script>
1<noscript><style>img[loading] {
2                    opacity: 1;
3                }</style></noscript><meta name="author" content="Marçal Guardiola Sanchez">
vendor: 63 bytes, line 3
3<script async src="https://www.googletagmanager.com/gtag/js?id=
3G-5G2469F4EE
vendor: 11 bytes, line 3
3"></script>
3<script>
vendor: 134 bytes, lines 3-7
3window.dataLayer = window.dataLayer || [];
4  function gtag(){dataLayer.push(arguments);}
5  gtag('js', new Date());
6
7  gtag('config', '
7G-5G2469F4EE
vendor: 3 bytes, line 7
7');
7</script>
7<script>document.onmousedown = right;
8	document.onmouseup = right;
9	function right(e) {
10		var msg = "© WEFER 1997-2025\n\nEl contenido de esta página se encuentra protegido por Copyright y registrado.\nCualquier uso sin autorización será perseguido legalmente.\nEn caso de querer usar este contenido, contacte con el autor en:\n\[email protected]\n";
11		if (navigator.appName == 'Netscape' && e.which == 3) {
12			alert(msg);
13			return false;
14		}
15		if (navigator.appName == 'Microsoft Internet Explorer' && event.button==2) {
16			alert(msg);
17			return false;
18		}
19		else return true;
20	}</script>
20<script>document.ondragstart = function () { return false; };
21  	document.onselectstart = function () { return false; };</script>
21<script>document.onmousedown = right;
22	document.onmouseup = right;
23	function right(e) {
24		var msg = "© WEFER 1997-2025\n\nEl contenido de esta página se encuentra protegido por Copyright y registrado.\nCualquier uso sin autorización será perseguido legalmente.\nEn caso de querer usar este contenido, contacte con el autor en:\n\[email protected]\n";
25		if (navigator.appName == 'Netscape' && e.which == 3) {
26			alert(msg);
27			return false;
28		}
29		if (navigator.appName == 'Microsoft Internet Explorer' && event.button==2) {
30			alert(msg);
31			return false;
32		}
33		else return true;
34	}</script>
34<script>document.ondragstart = function () { return false; };
35  	document.onselectstart = function () { return false; };</script>
35<script>document.addEventListener("DOMContentLoaded", function() {
36    // Inicializar el selector de idioma según los divs presentes
37    function initLanguageSelector() {
38    var languageSelector = document.getElementById("languageSelector");
39    
40    if (!languageSelector) {
41        console.error("Error: No s'ha trobat l'element #languageSelector.");
42        return;
43    }
44
45    // Esborrar totes les opcions existents
46    while (languageSelector.firstChild) {
47        languageSelector.removeChild(languageSelector.firstChild);
48    }
49
50    var availableLangs = [];
51
52    if (document.getElementById("textCat")) {
53        availableLangs.push({value: "ca", text: "Català"});
54    }
55    if (document.getElementById("textEsp")) {
56        availableLangs.push({value: "es", text: "Español"});
57    }
58    if (document.getElementById("textEng")) {
59        availableLangs.push({value: "en", text: "English"});
60    }
61    if (document.getElementById("textFra")) {
62        availableLangs.push({value: "fr", text: "Français"});
63    }
64
65    if (availableLangs.length > 0) {
66        availableLangs.forEach(function(lang) {
67            var option = document.createElement("option");
68            option.value = lang.value;
69            option.text = lang.text;
70            languageSelector.appendChild(option);
71        });
72    } else {
73        languageSelector.style.display = "none";
74    }
75}
76
77
78    initLanguageSelector();
79
80    // Detectar el idioma del navegador y actualizar el selector
81    var userLang = navigator.language || navigator.userLanguage;
82    updateLanguage(userLang.substring(0, 2));
83
84    // Listener para cambios en el selector de idioma
85    document.getElementById("languageSelector").addEventListener("change", function() {
86        updateLanguage(this.value);
87    });
88});
89
90// Función para actualizar el idioma
91function updateLanguage(lang) {
92    // Esconder todos los divs
93    var langs = ['Cat', 'Esp', 'Eng', 'Fra'];
94    langs.forEach(function(l) {
95        var element = document.getElementById("text" + l);
96        if (element) {
97            element.style.display = "none";
98        }
99    });
100
101    // Mostrar el div correspondiente al nuevo idioma
102    var selectedElement;
103    switch(lang) {
104        case "ca":
105            selectedElement = document.getElementById("textCat");
106            break;
107        case "es":
108            selectedElement = document.getElementById("textEsp");
109            break;
110        case "fr":
111            selectedElement = document.getElementById("textFra");
112            break;
113        default:
114            selectedElement = document.getElementById("textEng");
115            break;
116    }
117    
118    if (selectedElement) {
119        selectedElement.style.display = "block";
120    } else {
121        selectedElement = document.getElementById("textEng");
122        selectedElement.style.display = "block";
123    }
124
125    // Actualizar el selector para reflejar el cambio
126    var languageSelector = document.getElementById("languageSelector");
127    if (languageSelector) {
128        languageSelector.value = lang;
129    }
130}
131
132function capitalizeFirstLetter(string) {
133    return string.charAt(0).toUpperCase() + string.slice(1);
134}</script>
134<script async src="https://cse.google.com/cse.js?cx=901ea5833fa8e41bf"></script>
134</head><body class="post-template"><div class="container js-container"><nav class="menu"><ul class="navbar__menu"><li><a href="https://wefer.com/renfe-adif-historia-de-la-via-ampla/" target="_self">Renfe / ADIF: història</a></li><li><a href="https://wefer.com/renfe-adif-el-material-mobil/" target="_self">Renfe / ADIF: material mòbil</a></li><li class="has-submenu"><a href="https://wefer.com/renfe-adif-les-estacions/" target="_self">Renfe / ADIF: estacions</a><ul class="navbar__submenu"><li><span>----</span></li></ul></li><li class="active"><a href="https://wefer.com/fgc-la-historia/" target="_self">FGC: història</a></li><li><a href="https://wefer.com/fgc-les-estacions/" target="_self">FGC: estacions</a></li><li><a href="https://wefer.com/fgc-el-material-mobil/" target="_self">FGC: material mòbil</a></li><li><span>----</span></li><li><a href="https://wefer.com/metro-de-barcelona-les-estacions-2/" target="_self">Metro de Barcelona: història</a></li><li><a href="https://wefer.com/metro-de-barcelona-les-estacions/" target="_self">Metro de Barcelona: estacions</a></li><li class="has-submenu"><a href="https://wefer.com/metro-de-barcelona-material-mobil/" target="_self">Metro de Barcelona: material mòbil</a><ul class="navbar__submenu"><li><span>----</span></li></ul></li><li><a href="https://wefer.com/historia-del-ferrocarril-espanol/" target="_self">El ferrocarril espanyol abans de 1941</a></li><li><a href="https://wefer.com/maquetismo-ferroviario-escala-h0-n-etc/" target="_self">Modelisme ferroviari (ferromodelisme)</a></li><li><a href="https://wefer.com/museos-ferroviarios/" target="_self">Museus ferroviaris</a></li></ul></nav><div class="container__content"><header class="top"><div class="top__item"><a class="logo" href="https://wefer.com/"><img src="https://wefer.com/media/website/logo-2020-b-2.gif" alt="wefer.com, Web Ferroviària" width="320" height="81"></a></div><div class="top__item top__item--right"><button class="menu-toggle js-menu-toggle" aria-label="Menu" aria-expanded="false"><span class="menu-toggle-box"><span class="menu-toggle-inner">Menu</span></span></button></div></header><main class="main post"><article class="content"><div class="main__left"><figure class="hero"><img src="https://wefer.com/media/posts/11/18-Brill-Pl-Catalunya-01-19-09-04.jpg" srcset="https://wefer.com/media/posts/11/responsive/18-Brill-Pl-Catalunya-01-19-09-04-xs.jpg 300w, https://wefer.com/media/posts/11/responsive/18-Brill-Pl-Catalunya-01-19-09-04-sm.jpg 480w, https://wefer.com/media/posts/11/responsive/18-Brill-Pl-Catalunya-01-19-09-04-md.jpg 768w, https://wefer.com/media/posts/11/responsive/18-Brill-Pl-Catalunya-01-19-09-04-lg.jpg 1024w, https://wefer.com/media/posts/11/responsive/18-Brill-Pl-Catalunya-01-19-09-04-xl.jpg 1280w, https://wefer.com/media/posts/11/responsive/18-Brill-Pl-Catalunya-01-19-09-04-2xl.jpg 1600w" sizes="(min-width: 1800px) 50vw, (min-width: 900px) 40vw, 100vw" loading="eager" height="1536" width="2048" alt=""><figcaption class="hero__caption">FGC, Ferrocarrils de la Generalitat de Catalunya</figcaption></figure><header><h1>FGC: la història</h1></header></div><div class="main__right"><div class="banner banner--before-content"><div id="simple_website_translator"></div><p></p></div><div class="content__entry"><p><em><a href="https://wefer.com/">Inici</a> --&gt; </em><strong>FGC: la historia</strong></p><div id="simple_website_translator"></div><h3>Introducció</h3><p data-start="16" data-end="664"><a href="https://www.fgc.cat/" target="_blank" rel="noopener noreferrer">Ferrocarrils de la Generalitat de Catalunya (FGC)</a> és un operador de transport ferroviari de l’àrea metropolitana de Barcelona, gestionat pel govern autònom de Catalunya. Es va crear l’any 1979 arran del traspàs de diverses línies ferroviàries estatals (abans gestionades per FEVE) a la Generalitat de Catalunya. Actualment, FGC forma part de l’Autoritat del Transport Metropolità (ATM) de Barcelona, el consorci que coordina les xarxes de transport públic de FGC, TMB, Renfe i altres operadors, amb un sistema tarifari integrat vigent des de 2001 que permet utilitzar diferents transports amb el mateix bitllet.</p><p data-start="666" data-end="792">FGC compta actualment amb dues xarxes principals amb característiques diferenciades per la seva diversa procedència històrica:</p><ul data-start="794" data-end="1423"><li data-start="794" data-end="1102"><p data-start="796" data-end="1102"><strong data-start="796" data-end="822">Línia Barcelona-Vallès</strong>: connecta Barcelona (estació de Plaça de Catalunya) amb el Vallès Occidental (Sant Cugat del Vallès, Terrassa i Sabadell). Prové de l’antic Ferrocarril de Barcelona a Sarrià (inaugurat el 1863) i utilitza via d’ample estàndard (1435 mm), fet que la diferencia de l’altra xarxa.</p></li><li data-start="1103" data-end="1423"><p data-start="1105" data-end="1423"><strong data-start="1105" data-end="1130">Línia Llobregat-Anoia</strong>: connecta Barcelona (Plaça d’Espanya) amb les comarques del Baix Llobregat, l’Anoia i el Bages (arribant fins a Martorell, Igualada i Manresa). Prové de l’antic “Tren dels Catalans” (inaugurat el 1892) i utilitza via d’ample mètric (1000 mm), incompatible amb l’ample de la línia del Vallès.</p></li></ul><p data-start="1425" data-end="2161">En les darreres dècades, FGC ha experimentat millores i ampliacions a la seva xarxa metropolitana. L’any 2015 es va inaugurar el perllongament del ramal de Terrassa amb tres noves estacions, i el 2017 el de Sabadell amb quatre estacions addicionals, fet que va incrementar notablement el nombre d’usuaris de les línies S1 (Terrassa) i S2 (Sabadell). A més, està en marxa l’extensió de la línia Llobregat-Anoia (actual <strong data-start="1843" data-end="1849">L8</strong> del metro) per connectar Plaça Espanya amb l’estació de Gràcia, creant tres noves estacions (Hospital Clínic, Francesc Macià i Gràcia) en un nou túnel de 4 km. Aquesta obra, prevista per al 2029-2030, permetrà enllaçar per primera vegada les dues xarxes d’FGC i millorarà la connectivitat interna de Barcelona.</p><p data-start="2163" data-end="3072" data-is-last-node="" data-is-only-node="">Fora de l’àrea de Barcelona, FGC també opera altres serveis ferroviaris a Catalunya. Entre aquests hi ha la línia regional de <strong data-start="2289" data-end="2319">Lleida – La Pobla de Segur</strong> (de via ampla, transferida a FGC l’any 2005) i diverses línies ferroviàries turístiques i de muntanya, com el <strong data-start="2430" data-end="2458">cremallera de Montserrat</strong>, el <strong data-start="2463" data-end="2486">cremallera de Núria</strong> i el <strong data-start="2492" data-end="2511">Tren del Ciment</strong> (Alt Llobregat).</p><p data-start="2163" data-end="3072" data-is-last-node="" data-is-only-node="">En total, la xarxa d’FGC abasta 6 línies ferroviàries (2 de rodalies, 1 regional i 3 turístiques), amb uns 110 estacions en servei. FGC transportava prop de 75 milions de viatgers anuals el 2004, xifra que ha anat augmentant any rere any. L’any 2018 ja es va assolir un rècord de <strong data-start="2809" data-end="2836">87,2 milions de viatges</strong>, i abans de la pandèmia de 2020 el ritme anual superava els 90 milions. El 2022 el volum de passatgers es va situar al voltant dels <strong data-start="2969" data-end="2985">92,7 milions</strong> de viatgers anuals, reflex del creixement sostingut de la demanda de les línies d’FGC.</p><h3>La línia CATALUNYA (Pl. Catalunya - Vallès)</h3><p>(Vegeu plànols detallats) Aquesta línia inclou un tram final subterrani (actualment L6 i L7) que funciona com a ferrocarril metropolità (Metro). Del mateix tronc parteix la prolongació cap a les afores de la ciutat de Barcelona i arriba, en forma d’Y, fins a Terrassa (S1) i fins a Sabadell (S2). Totes les línies tenen el seu final a l’estació de Pl. Catalunya. Clica sobre la imatge per conèixer més de prop les estacions.</p><p> </p><figure class="post__image post__image--center"><img loading="lazy" src="https://wefer.com/media/posts/11/fgc-linies-valles-9.gif" width="694" height="267"><figcaption>Plànol de la xarxa a principis dels 2000</figcaption></figure><p>Tècnicament, tota la línia és de doble via, excepte algun petit tram de la línia de Sabadell. L’ample és el normal UIC d’1.435 mm i es troba totalment electrificada a 1.500 V=, arribant a una longitud de traçat propera als 50 km. Actualment només s’hi dóna servei de viatgers amb automotors elèctrics, amb freqüències de pas que van en hora punta des dels 2 minuts al tram final de Pl. Catalunya fins als 12 minuts a Terrassa i Sabadell. Aquesta xarxa va passar a mans del govern català a finals dels anys 70 a causa dels problemes econòmics de l’empresa privada que l’havia construït i explotat durant més de 50 anys.</p><h3>La línia CATALANS (Pl. Espanya - Llobregat)</h3><p>(Vegeu plànols detallats) Aquesta línia té un caràcter més interurbà que la xarxa anteriorment comentada, encara que al seu tram subterrani final fins a Pl. Espanya també funciona de manera similar a un ferrocarril metropolità. També té forma d’Y amb un tronc central entre Barcelona i Martorell, des d’on surt una línia cap a Igualada (R6) i una altra cap a Manresa (R5), finalitzant totes a l’estació de Pl. Espanya.</p><p>Tècnicament, es tracta d’una xarxa de via mètrica (1.000 mm) de més de 100 km de traçat. Tot és en via doble, excepte els trams Martorell-Igualada i Olesa de Montserrat-Manresa.</p><p>Totes les línies on es dóna servei regular de viatgers estan electrificades. Clica sobre la imatge per conèixer més de prop les estacions.</p><p> </p><figure class="post__image post__image--center"><a href="https://wefer.com/fgc-les-estacions/"><img loading="lazy" src="https://wefer.com/media/posts/11/fgc-linies-llobregat-9.gif" width="690" height="527"></a></figure><p></p><p> </p><p>A més, hi ha una línia de via única sense electrificar que arriba fins al port de Barcelona, així com una altra que constitueix la prolongació de la línia de Manresa fins a les mines de Sallent. Aquestes línies tenen un trànsit exclusivament de mercaderies. Aquesta xarxa havia estat molt més extensa, ja que havia arribat fins al Berguedà, cosa que feia que s’apropés als 200 km de traçat en els seus millors temps. Però als anys 70 es va clausurar tot el tram Manresa-Olvan i l’empresa privada que explotava tota la xarxa va fer fallida, passant la línia primer a mans de FEVE (Ferrocarriles Españoles de Vía Estrecha) i posteriorment a la Generalitat de Catalunya. Avui dia, s’està fent un gran esforç de modernització tant d’infraestructures com de material per poder donar freqüències de pas iguals a les que s’ofereixen a la línia de Pl. Catalunya.</p><footer><div class="content__tag-share"><ul class="content__tag"><li><a href="https://wefer.com/tag/fgc/">Ferrocarrils de la Generalitat de Catalunya (FGC)</a></li><li><a href="https://wefer.com/tag/fgc-linea-llobregat/">FGC Línia Llobregat</a></li><li><a href="https://wefer.com/tag/fgc-linea-valles/">FGC Línia Vallès</a></li><li><a href="https://wefer.com/tag/historia/">història</a></li></ul><div class="content__share"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwefer.com%2Ffgc-la-historia%2F" class="js-share facebook" aria-label="Share with Facebook" rel="nofollow noopener noreferrer"><svg class="icon"><use xlink:href="https://wefer.com/assets/svg/svg-map.svg#facebook"/></svg> </a><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwefer.com%2Ffgc-la-historia%2F&amp;via=wefer.com%2C%20Web%20Ferrovi%C3%A0ria&amp;text=FGC%3A%20la%20hist%C3%B2ria" class="js-share twitter" aria-label="Share with Twitter" rel="nofollow noopener noreferrer"><svg class="icon"><use xlink:href="https://wefer.com/assets/svg/svg-map.svg#twitter"/></svg> </a><a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fwefer.com%2Ffgc-la-historia%2F&amp;media=https%3A%2F%2Fwefer.com%2Fmedia%2Fposts%2F11%2F18-Brill-Pl-Catalunya-01-19-09-04.jpg&amp;description=FGC%3A%20la%20hist%C3%B2ria" class="js-share pinterest" aria-label="Share with Pinterest" rel="nofollow noopener noreferrer"><svg class="icon"><use xlink:href="https://wefer.com/assets/svg/svg-map.svg#pinterest"/></svg></a></div></div></footer></div></div></article>
134<div class="main__right main__right--bottom"><div class="related"><h2 class="related__title">Related posts:</h2><ul class="related__items"><li class="related__item"><h3 class="h5"><a href="https://wefer.com/fgc-estacion-igualada/">FGC: estació Igualada</a></h3></li><li class="related__item"><h3 class="h5"><a href="https://wefer.com/fgc-estacion-de-provenca-bcn/">FGC: estació de Provença (BCN)</a></h3></li><li class="related__item"><h3 class="h5"><a href="https://wefer.com/fgc-estacion-de-barcelona-pl-catalunya/">FGC: estació de Barcelona Pl. Catalunya</a></h3></li><li class="related__item"><h3 class="h5"><a href="https://wefer.com/historia-del-ferrocarril-espanol/">Història del ferrocarril a Espanya: 1848 a 1941</a></h3></li><li class="related__item"><h3 class="h5"><a href="https://wefer.com/metro-de-barcelona-les-estacions-2/">Metro de Barcelona: la història</a></h3></li></ul></div><div class="banner banner--after-content"><a href="https://www.wefer.com"><div align="center"><img src="/media/files/wefer-logo.gif" alt="WEFER, Web ferroviaria. Fotos e historia del ferrocarril en Cataluña y España"></div></a><hr><h6 align="center">WEFER, web ferroviaria - El ferrocarril en España - Marçal Guardiola Sánchez - Copyright 1997-2025</h6><hr><p align="center">Si te ha interesado esta página, también pueden interesarte:<br><a href="https://railmotif.es" target="_blank"><b>railmotif.es</b><i> - Modelismo ferroviario en escala H0 y N</i></a><br><a href="https://transport.cat" target="_blank"><b>transport.cat</b><i> - Foro del transporte en Cataluña</i></a></p></div></div></main><footer class="footer"><div class="footer__copyright"><p>Powered by Publii</p><p>Copyright Marçal Guardiola Sánchez 1997 - 2025</p></div></footer></div></div>
134<script defer="defer" src="https://wefer.com/assets/js/scripts.min.js?v=1ea8317abae2e05fa2a65ed7bbff7ba7"></script>
134<script>var images = document.querySelectorAll('img[loading]');
135   
136           for (var i = 0; i < images.length; i++) {
137               if (images[i].complete) {
138                   images[i].classList.add('is-loaded');
139               } else {
140                   images[i].addEventListener('load', function () {
141                       this.classList.add('is-loaded');
142                   }, false);
143               }
144           }</script>
144<script type="text/javascript">async function SimpleWebsiteTranslator(){new google.translate.TranslateElement({pageLanguage:"es",includedLanguages:"ca,es,en,fr,de,eu,gl,pt,it,nl,zh,ja,eo,ru,id,ko",layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL,autoDisplay:false},"simple_website_translator");}</script>
144<script type="text/javascript" src="https://translate.google.com/translate_a/element.js?cb=SimpleWebsiteTranslator"></script>
144<div class="pcb" data-behaviour="badge" data-behaviour-link="#cookie-settings" data-revision="1" data-config-ttl="90" data-debug-mode="false"><div role="dialog" aria-modal="true" aria-hidden="true" aria-labelledby="pcb-title" aria-describedby="pcb-txt" class="pcb__banner"><div class="pcb__inner"><div id="pcb-title" role="heading" aria-level="2" class="pcb__title">la ley nos obliga a molestarte avisándote de que esta página usa "Cookies"</div><div id="pcb-txt" class="pcb__txt">Selecciona las cookies que quieres permitir mediante las casillas de verificación a continuación; nuestro sitio web utiliza cookies para examinar el tráfico del sitio y la actividad del usuario mientras se encuentra en nuestro sitio y para proporcionar funcionalidad de redes sociales. <a href="#not-specified">More details...</a></div><div class="pcb__buttons"><button type="button" class="pcb__btn pcb__btn--link pcb__btn--configure" aria-haspopup="dialog">Editar preferencias</button> <button type="button" class="pcb__btn pcb__btn--solid pcb__btn--accept">Guardar</button></div></div></div><div class="pcb__popup" role="dialog" aria-modal="true" aria-hidden="true" aria-labelledby="pcb-popup-title"><div class="pcb__popup__wrapper"><div class="pcb__inner pcb__popup__inner"><div class="pcb__popup__heading"><div id="pcb-popup-title" role="heading" aria-level="2" class="pcb__title">Preferencias de "cookies"</div><button class="pcb__popup__close" aria-label="Close"></button></div><div class="pcb__popup__content"><div class="pcb__txt pcb__popup__txt">Usamos cookies para mejorar su experiencia de navegación, mostrar anuncios o contenido personalizados y analizar nuestro tráfico. Al hacer clic en "Aceptar todo", usted acepta nuestro uso de cookies. <a href="#not-specified">More details...</a></div><ul class="pcb__groups"><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Requeridas</summary></details><div class="pcb__popup__switch is-checked"><input type="checkbox" data-group-name="" id="pcb-group-0" checked="checked"> <label for="pcb-group-0">Requeridas</label></div></li><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Funcionales</summary></details><div class="pcb__popup__switch"><input type="checkbox" data-group-name="functions" id="functions-cookies"> <label for="functions-cookies">Funcionales</label></div></li><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Analíticas</summary></details><div class="pcb__popup__switch"><input type="checkbox" data-group-name="analytics" id="analytics-cookies"> <label for="analytics-cookies">Analíticas</label></div></li></ul></div><div class="pcb__buttons pcb__popup__buttons"><button type="button" class="pcb__btn pcb__btn--solid pcb__btn--accept">Aceptar todo</button> <button type="button" class="pcb__btn pcb__btn--reject">Denegar todo</button> <button type="button" class="pcb__btn pcb__btn--save">Guardar preferencias</button></div></div></div></div><div class="pcb__overlay" aria-hidden="true"></div><button class="pcb__badge" aria-label="Política de cookies" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" width="40" height="40" viewBox="0 0 23 23" fill="currentColor"><path d="M21.41 12.71c-.08-.01-.15 0-.22 0h-.03c-.03 0-.05 0-.08.01-.07 0-.13.01-.19.04-.52.21-1.44.19-2.02-.22-.44-.31-.65-.83-.62-1.53a.758.758 0 0 0-.27-.61.73.73 0 0 0-.65-.14c-1.98.51-3.49.23-4.26-.78-.82-1.08-.73-2.89.24-4.49.14-.23.14-.52 0-.75a.756.756 0 0 0-.67-.36c-.64.03-1.11-.1-1.31-.35-.19-.26-.13-.71-.01-1.29.04-.18.06-.38.03-.59-.05-.4-.4-.7-.81-.66C5.1 1.54 1 6.04 1 11.48 1 17.28 5.75 22 11.6 22c5.02 0 9.39-3.54 10.39-8.42.08-.4-.18-.78-.58-.87Zm-9.81 7.82c-5.03 0-9.12-4.06-9.12-9.06 0-4.34 3.05-8 7.25-8.86-.08.7.05 1.33.42 1.81.24.32.66.67 1.38.84-.76 1.86-.65 3.78.36 5.11.61.81 2.03 2 4.95 1.51.18.96.71 1.54 1.18 1.87.62.43 1.38.62 2.1.62.05 0 .09 0 .13-.01-1.23 3.64-4.7 6.18-8.64 6.18ZM13 17c0 .55-.45 1-1 1s-1-.45-1-1 .45-1 1-1 1 .45 1 1Zm5.29-12.3a.99.99 0 0 1-.29-.71c0-.55.45-.99 1-.99a1 1 0 0 1 .71.3c.19.19.29.44.29.71 0 .55-.45.99-1 .99a1 1 0 0 1-.71-.3ZM9 13.5c0 .83-.67 1.5-1.5 1.5S6 14.33 6 13.5 6.67 12 7.5 12s1.5.67 1.5 1.5Zm3.25.81a.744.744 0 0 1-.06-1.05c.28-.32.75-.34 1.05-.06.31.28.33.75.05 1.06-.15.16-.35.25-.56.25-.18 0-.36-.06-.5-.19ZM8.68 7.26c.41.37.44 1 .07 1.41-.2.22-.47.33-.75.33a.96.96 0 0 1-.67-.26c-.41-.37-.44-1-.07-1.41.37-.42 1-.45 1.41-.08Zm11.48 1.88c.18-.19.52-.19.7 0 .05.04.09.1.11.16.03.06.04.12.04.19 0 .13-.05.26-.15.35-.09.1-.22.15-.35.15s-.26-.05-.35-.15a.355.355 0 0 1-.11-.
14416.433.433 0 0 1-.04-.19c0-.13.05-.26.15-.35Zm-4.93-1.86a.75.75 0 1 1 1.059-1.06.75.75 0 0 1-1.059 1.06Z"/></svg></button></div>
144<script>(function(win) {
145       if (!document.querySelector('.pcb')) {
146           return;
147       }
148   
149       var cbConfig = {
150           behaviour: document.querySelector('.pcb').getAttribute('data-behaviour'),
151           behaviourLink: document.querySelector('.pcb').getAttribute('data-behaviour-link'),
152           revision: document.querySelector('.pcb').getAttribute('data-revision'),
153           configTTL: parseInt(document.querySelector('.pcb').getAttribute('data-config-ttl'), 10),
154           debugMode: document.querySelector('.pcb').getAttribute('data-debug-mode') === 'true',
155           initialState: null,
156           initialLsState: null,
157           previouslyAccepted: []
158       };
159   
160       var cbUI = {
161           wrapper: document.querySelector('.pcb'),
162           banner: {
163               element: null,
164               btnAccept: null,
165               btnReject: null,
166               btnConfigure: null
167           },
168           popup: {
169               element: null,
170               btnClose: null,
171               btnSave: null,
172               btnAccept: null,
173               btnReject: null,
174               checkboxes: null,
175           },
176           overlay: null,
177           badge: null,
178           blockedScripts: document.querySelectorAll('script[type^="gdpr-blocker/"]'),
179           triggerLinks: cbConfig.behaviourLink ? document.querySelectorAll('a[href*="' + cbConfig.behaviourLink + '"]') : null
180       };
181   
182       function initUI () {
183           // setup banner elements
184           cbUI.banner.element = cbUI.wrapper.querySelector('.pcb__banner');
185           cbUI.banner.btnAccept = cbUI.banner.element.querySelector('.pcb__btn--accept');
186           cbUI.banner.btnReject = cbUI.banner.element.querySelector('.pcb__btn--reject');
187           cbUI.banner.btnConfigure = cbUI.banner.element.querySelector('.pcb__btn--configure');
188   
189           // setup popup elements
190           if (cbUI.wrapper.querySelector('.pcb__popup')) {
191               cbUI.popup.element = cbUI.wrapper.querySelector('.pcb__popup');
192               cbUI.popup.btnClose = cbUI.wrapper.querySelector('.pcb__popup__close');
193               cbUI.popup.btnSave = cbUI.popup.element.querySelector('.pcb__btn--save');
194               cbUI.popup.btnAccept = cbUI.popup.element.querySelector('.pcb__btn--accept');
195               cbUI.popup.btnReject = cbUI.popup.element.querySelector('.pcb__btn--reject');
196               cbUI.popup.checkboxes = cbUI.popup.element.querySelector('input[type="checkbox"]');
197               // setup overlay
198               cbUI.overlay = cbUI.wrapper.querySelector('.pcb__overlay');
199           }
200   
201           cbUI.badge = cbUI.wrapper.querySelector('.pcb__badge');
202   
203           if (cbConfig.behaviour.indexOf('link') > -1) {
204               for (var i = 0; i < cbUI.triggerLinks.length; i++) {
205                   cbUI.triggerLinks[i].addEventListener('click', function(e) {
206                       e.preventDefault();
207                       showBannerOrPopup();
208                   });
209               }
210           }
211       }
212   
213       function initState () {
214           var lsKeyName = getConfigName();
215           var currentConfig = localStorage.getItem(lsKeyName);
216           var configIsFresh = checkIfConfigIsFresh();
217   
218           if (!configIsFresh || currentConfig === null) {
219               if (cbConfig.debugMode) {
220                   console.log('🍪 Config not found, or configuration expired');
221               }
222   
223               if (window.publiiCBGCM) {
224                   gtag('consent', 'default', {
225                       'ad_storage': window.publiiCBGCM.defaultState.ad_storage ? 'granted' : 'denied',
226                       'ad_personalization': window.publiiCBGCM.defaultState.ad_personalization ? 'granted' : 'denied',
227                       'ad_user_data': window.publiiCBGCM.defaultState.ad_user_data ? 'granted' : 'denied',
228                       'analytics_storage': window.publiiCBGCM.defaultState.analytics_storage ? 'granted' : 'denied',
229                       'personalization_storage': window.publiiCBGCM.defaultState.personalization_storage ? 'granted' : 'denied',
230                       'functionality_storage': window.publiiCBGCM.defaultState.functionality_storage ? 'granted' : 'denied',
231                       'security_storage': window.publiiCBGCM.defaultState.security_storage ? 'granted' : 'denied'
232                   });  
233                   
234                   if (cbConfig.debugMode) {
235                       console.log('🍪 GCMv2 DEFAULT STATE: ' + JSON.stringify({
236                           'ad_storage': window.publiiCBGCM.defaultState.ad_storage ? 'granted' : 'denied',
237                           'ad_personalization': window.publiiCBGCM.defaultState.ad_personalization ? 'granted' : 'denied',
238                           'ad_user_data': window.publiiCBGCM.defaultState.ad_user_data ? 'granted' : 'denied',
239                           'analytics_storage': window.publiiCBGCM.defaultState.analytics_storage ? 'granted' : 'denied',
240                           'personalization_storage': window.publiiCBGCM.defaultState.personalization_storage ? 'granted' : 'denied',
241                           'functionality_storage': window.publiiCBGCM.defaultState.functionality_storage ? 'granted' : 'denied',
242                           'security_storage': window.publiiCBGCM.defaultState.security_storage ? 'granted' : 'denied'
243                       }));
244                   }
245               }
246   
247               showBanner();
248           } else if (typeof currentConfig === 'string') {
249               if (cbConfig.debugMode) {
250                   console.log('🍪 Config founded');
251               }
252   
253               cbConfig.initialLsState = currentConfig.split(',');
254   
255               if (window.publiiCBGCM) {
256                   gtag('consent', 'default', {
257                       'ad_storage': getDefaultConsentState(currentConfig, 'ad_storage'),
258                       'ad_personalization': getDefaultConsentState(currentConfig, 'ad_personalization'),
259                       'ad_user_data': getDefaultConsentState(currentConfig, 'ad_user_data'),
260                       'analytics_storage': getDefaultConsentState(currentConfig, 'analytics_storage'),
261                       'personalization_storage': getDefaultConsentState(currentConfig, 'personalization_storage'),
262                       'functionality_storage': getDefaultConsentState(currentConfig, 'functionality_storage'),
263                       'security_storage': getDefaultConsentState(currentConfig, 'security_storage')
264                   });
265                   
266                   if (cbConfig.debugMode) {
267                       console.log('🍪 GCMv2 DEFAULT STATE: ' + JSON.stringify({
268                           'ad_storage': getDefaultConsentState(currentConfig, 'ad_storage'),
269                           'ad_personalization': getDefaultConsentState(currentConfig, 'ad_personalization'),
270                           'ad_user_data': getDefaultConsentState(currentConfig, 'ad_user_data'),
271                           'analytics_storage': getDefaultConsentState(currentConfig, 'analytics_storage'),
272                           'personalization_storage': getDefaultConsentState(currentConfig, 'personalization_storage'),
273                           'functionality_storage': getDefaultConsentState(currentConfig, 'functionality_storage'),
274                           'security_storage': getDefaultConsentState(currentConfig, 'security_storage')
275                       }));
276                   }
277               }
278   
279               showBadge();
280   
281               if (cbUI.popup.element) {
282                   var allowedGroups = currentConfig.split(',');
283                   var checkedCheckboxes = cbUI.popup.element.querySelectorAll('input[type="checkbox"]:checked');
284   
285                   for (var j = 0; j < checkedCheckboxes.length; j++) {
286                       var name = checkedCheckboxes[j].getAttribute('data-group-name');
287   
288                       if (name && name !== '-' && allowedGroups.indexOf(name) === -1) {
289                           checkedCheckboxes[j].checked = false;
290                       }
291                   }
292   
293                   for (var i = 0; i < allowedGroups.length; i++) {
294                       var checkbox = cbUI.popup.element.querySelector('input[type="checkbox"][data-group-name="' + allowedGroups[i] + '"]');
295   
296                       if (checkbox) {
297                           checkbox.checked = true;
298                       }
299   
300                       allowCookieGroup(allowedGroups[i]);
301                   }
302               }
303           }
304   
305           setTimeout(function () {
306               cbConfig.initialState = getInitialStateOfConsents();
307           }, 0);
308       }
309   
310       function checkIfConfigIsFresh () {
311           var lastConfigSave = localStorage.getItem('publii-gdpr-cookies-config-save-date');
312   
313           if (lastConfigSave === null) {
314               return false;
315           }
316   
317           lastConfigSave = parseInt(lastConfigSave, 10);
318   
319           if (lastConfigSave === 0) {
320               return true;
321           }
322   
323           if (+new Date() - lastConfigSave < cbConfig.configTTL * 24 * 60 * 60 * 1000) {
324               return true;
325           }
326   
327           return false;
328       }
329   
330       function getDefaultConsentState (currentConfig, consentGroup) {
331           let configGroups = currentConfig.split(',');
332   
333           for (let i = 0; i < configGroups.length; i++) {
334               let groupName = configGroups[i];
335               let group = window.publiiCBGCM.groups.find(group => group.cookieGroup === groupName);
336   
337               if (group && group[consentGroup]) {
338                   return 'granted';
339               }
340           }  
341           
342           if (window.publiiCBGCM.defaultState[consentGroup]) {
343               return 'granted'; 
344           }
345           
346           return 'denied';
347       }
348   
349       function initBannerEvents () {
350           cbUI.banner.btnAccept.addEventListener('click', function (e) {
351               e.preventDefault();
352               acceptAllCookies('banner');
353               showBadge();
354           }, false);
355   
356           if (cbUI.banner.btnReject) {
357               cbUI.banner.btnReject.addEventListener('click', function (e) {
358                   e.preventDefault();
359                   rejectAllCookies();
360                   showBadge();
361               }, false);
362           }
363   
364           if (cbUI.banner.btnConfigure) {
365               cbUI.banner.btnConfigure.addEventListener('click', function (e) {
366                   e.preventDefault();
367                   hideBanner();
368                   showAdvancedPopup();
369                   showBadge();
370               }, false);
371           }
372       }
373   
374       function initPopupEvents () {
375           if (!cbUI.popup.element) {
376               return;
377           }
378   
379           cbUI.overlay.addEventListener('click', function (e) {
380               hideAdvancedPopup();
381           }, false);
382   
383           cbUI.popup.element.addEventListener('click', function (e) {
384               e.stopPropagation();
385           }, false);
386   
387           cbUI.popup.btnAccept.addEventListener('click', function (e) {
388               e.preventDefault();
389               acceptAllCookies('popup');
390           }, false);
391   
392           cbUI.popup.btnReject.addEventListener('click', function (e) {
393               e.preventDefault();
394               rejectAllCookies();
395           }, false);
396   
397           cbUI.popup.btnSave.addEventListener('click', function (e) {
398               e.preventDefault();
399               saveConfiguration();
400           }, false);
401   
402           cbUI.popup.btnClose.addEventListener('click', function (e) {
403               e.preventDefault();
404               hideAdvancedPopup();
405           }, false);
406       }
407   
408       function initBadgeEvents () {
409           if (!cbUI.badge) {
410               return;
411           }
412   
413           cbUI.badge.addEventListener('click', function (e) {
414               showBannerOrPopup();
415           }, false);
416       }
417   
418       initUI();
419       initState();
420       initBannerEvents();
421       initPopupEvents();
422       initBadgeEvents();
423   
424       /**
425        * API
426        */
427       function addScript (src, inline) {
428           var newScript = document.createElement('script');
429   
430           if (src) {
431               newScript.setAttribute('src', src);
432           }
433   
434           if (inline) {
435               newScript.text = inline;
436           }
437   
438           document.body.appendChild(newScript);
439       }
440   
441       function allowCookieGroup (allowedGroup) {
442           var scripts = document.querySelectorAll('script[type="gdpr-blocker/' + allowedGroup + '"]');
443           cbConfig.previouslyAccepted.push(allowedGroup);
444       
445           for (var j = 0; j < scripts.length; j++) {
446               addScript(scripts[j].src, scripts[j].text);
447           }
448   
449           var groupEvent = new Event('publii-cookie-banner-unblock-' + allowedGroup);
450           document.body.dispatchEvent(groupEvent);
451           unlockEmbeds(allowedGroup);
452   
453           if (cbConfig.debugMode) {
454               console.log('🍪 Allowed group: ' + allowedGroup);
455           }
456   
457           if (window.publiiCBGCM && (!cbConfig.initialLsState || cbConfig.initialLsState.indexOf(allowedGroup) === -1)) {
458               let consentResult = {};
459               let group = window.publiiCBGCM.groups.find(group => group.cookieGroup === allowedGroup);
460   
461               if (group) {
462                   let foundSomeConsents = false;
463   
464                   Object.keys(group).forEach(key => {
465                       if (key !== 'cookieGroup' && group[key] === true) {
466                           consentResult[key] = 'granted';
467                           foundSomeConsents = true;
468                       }
469                   });
470   
471                   if (foundSomeConsents) {
472                       gtag('consent', 'update', consentResult);   
473   
474                       if (cbConfig.debugMode) {
475                           console.log('🍪 GCMv2 UPDATE: ' + JSON.stringify(consentResult));
476                       }
477                   }
478               }
479           }
480       }
481   
482       function showBannerOrPopup () {
483           if (cbUI.popup.element) {
484               showAdvancedPopup();
485           } else {
486               showBanner();
487           }
488       }
489   
490       function showAdvancedPopup () {
491           cbUI.popup.element.classList.add('is-visible');
492           cbUI.overlay.classList.add('is-visible');
493           cbUI.popup.element.setAttribute('aria-hidden', 'false');
494           cbUI.overlay.setAttribute('aria-hidden', 'false');
495       }
496   
497       function hideAdvancedPopup () {
498           cbUI.popup.element.classList.remove('is-visible');
499           cbUI.overlay.classList.remove('is-visible');
500           cbUI.popup.element.setAttribute('aria-hidden', 'true');
501           cbUI.overlay.setAttribute('aria-hidden', 'true');
502       }
503   
504       function showBanner () {
505           cbUI.banner.element.classList.add('is-visible');
506           cbUI.banner.element.setAttribute('aria-hidden', 'false');
507       }
508   
509       function hideBanner () {
510           cbUI.banner.element.classList.remove('is-visible');
511           cbUI.banner.element.setAttribute('aria-hidden', 'true');
512       }
513   
514       function showBadge () {
515           if (!cbUI.badge) {
516               return;
517           }
518   
519           cbUI.badge.classList.add('is-visible');
520           cbUI.badge.setAttribute('aria-hidden', 'false');
521       }
522   
523       function getConfigName () {
524           var lsKeyName = 'publii-gdpr-allowed-cookies';
525   
526           if (cbConfig.revision) {
527               lsKeyName = lsKeyName + '-v' + parseInt(cbConfig.revision, 10);
528           }
529   
530           return lsKeyName;
531       }
532   
533       function storeConfiguration (allowedGroups) {
534           var lsKeyName = getConfigName();
535           var dataToStore = allowedGroups.join(',');
536           localStorage.setItem(lsKeyName, dataToStore);
537   
538           if (cbConfig.configTTL === 0) {
539               localStorage.setItem('publii-gdpr-cookies-config-save-date', 0);
540   
541               if (cbConfig.debugMode) {
542                   console.log('🍪 Store never expiring configuration');
543               }
544           } else {
545               localStorage.setItem('publii-gdpr-cookies-config-save-date', +new Date());
546           }
547       }
548   
549       function getInitialStateOfConsents () {
550           if (!cbUI.popup.element) {
551               return [];
552           }
553   
554           var checkedGroups = cbUI.popup.element.querySelectorAll('input[type="checkbox"]:checked');
555           var groups = [];
556   
557           for (var i = 0; i < checkedGroups.length; i++) {
558               var allowedGroup = checkedGroups[i].getAttribute('data-group-name');
559   
560               if (allowedGroup !== '') {
561                   groups.push(allowedGroup);
562               }
563           }
564   
565           if (cbConfig.debugMode) {
566               console.log('🍪 Initial state: ' + groups.join(', '));
567           }
568   
569           return groups;
570       }
571   
572       function getCurrentStateOfConsents () {
573           if (!cbUI.popup.element) {
574               return [];
575           }
576   
577           var checkedGroups = cbUI.popup.element.querySelectorAll('input[type="checkbox"]:checked');
578           var groups = [];
579   
580           for (var i = 0; i < checkedGroups.length; i++) {
581               var allowedGroup = checkedGroups[i].getAttribute('data-group-name');
582   
583               if (allowedGroup !== '') {
584                   groups.push(allowedGroup);
585               }
586           }
587   
588           if (cbConfig.debugMode) {
589               console.log('🍪 State to save: ' + groups.join(', '));
590           }
591   
592           return groups;
593       }
594   
595       function getAllGroups () {
596           if (!cbUI.popup.element) {
597               return [];
598           }
599   
600           var checkedGroups = cbUI.popup.element.querySelectorAll('input[type="checkbox"]');
601           var groups = [];
602   
603           for (var i = 0; i < checkedGroups.length; i++) {
604               var allowedGroup = checkedGroups[i].getAttribute('data-group-name');
605   
606               if (allowedGroup !== '') {
607                   groups.push(allowedGroup);
608               }
609           }
610   
611           return groups;
612       }
613   
614       function acceptAllCookies (source) {
615           var groupsToAccept = getAllGroups();
616           storeConfiguration(groupsToAccept);
617   
618           for (var i = 0; i < groupsToAccept.length; i++) {
619               var group = groupsToAccept[i];
620   
621               if (cbConfig.initialState.indexOf(group) > -1 || cbConfig.previouslyAccepted.indexOf(group) > -1) {
622                   if (cbConfig.debugMode) {
623                       console.log('🍪 Skip previously activated group: ' + group);
624                   }
625   
626                   continue;
627               }
628   
629               allowCookieGroup(group);
630           }
631   
632           if (cbUI.popup.element) {
633               var checkboxesToCheck = cbUI.popup.element.querySelectorAll('input[type="checkbox"]');
634   
635               for (var j = 0; j < checkboxesToCheck.length; j++) {
636                   checkboxesToCheck[j].checked = true;
637               }
638           }
639   
640           if (cbConfig.debugMode) {
641               console.log('🍪 Accept all cookies: ', groupsToAccept.join(', '));
642           }
643   
644           if (source === 'popup') {
645               hideAdvancedPopup();
646           } else if (source === 'banner') {
647               hideBanner();
648           }
649       }
650   
651       function rejectAllCookies () {
652           if (cbConfig.debugMode) {
653               console.log('🍪 Reject all cookies');
654           }
655   
656           storeConfiguration([]);
657           setTimeout(function () {
658               window.location.reload();
659           }, 100);
660       }
661   
662       function saveConfiguration () {
663           var groupsToAccept = getCurrentStateOfConsents();
664           storeConfiguration(groupsToAccept);
665   
666           if (cbConfig.debugMode) {
667               console.log('🍪 Save new config: ', groupsToAccept.join(', '));
668           }
669   
670           if (reloadIsNeeded(groupsToAccept)) {
671               setTimeout(function () {
672                   window.location.reload();
673               }, 100);
674               return;
675           }
676   
677           for (var i = 0; i < groupsToAccept.length; i++) {
678               var group = groupsToAccept[i];
679   
680               if (cbConfig.initialState.indexOf(group) > -1 || cbConfig.previouslyAccepted.indexOf(group) > -1) {
681                   if (cbConfig.debugMode) {
682                       console.log('🍪 Skip previously activated group: ' + group);
683                   }
684   
685                   continue;
686               }
687   
688               allowCookieGroup(group);
689           }
690   
691           hideAdvancedPopup();
692       }
693   
694       function reloadIsNeeded (groupsToAccept) {
695           // check if user rejected consent for initial groups
696           var initialGroups = cbConfig.initialState;
697           var previouslyAcceptedGroups = cbConfig.previouslyAccepted;
698           var groupsToCheck = initialGroups.concat(previouslyAcceptedGroups);
699   
700           for (var i = 0; i < groupsToCheck.length; i++) {
701               var groupToCheck = groupsToCheck[i];
702   
703               if (groupToCheck !== '' && groupsToAccept.indexOf(groupToCheck) === -1) {
704                   if (cbConfig.debugMode) {
705                       console.log('🍪 Reload is needed due lack of: ', groupToCheck);
706                   }
707   
708                   return true;
709               }
710           }
711   
712           return false;
713       }
714   
715       function unlockEmbeds (cookieGroup) {
716           var iframesToUnlock = document.querySelectorAll('.pec-wrapper[data-consent-group-id="' + cookieGroup + '"]');
717   
718           for (var i = 0; i < iframesToUnlock.length; i++) {
719               var iframeWrapper = iframesToUnlock[i];
720               iframeWrapper.querySelector('.pec-overlay').classList.remove('is-active');
721               iframeWrapper.querySelector('.pec-overlay').setAttribute('aria-hidden', 'true');
722               var iframe = iframeWrapper.querySelector('iframe');
723               iframe.setAttribute('src', iframe.getAttribute('data-consent-src'));
724           }
725       }
726   
727       win.publiiEmbedConsentGiven = function (cookieGroup) {
728           // it will unlock embeds
729           allowCookieGroup(cookieGroup);
730   
731           var checkbox = cbUI.popup.element.querySelector('input[type="checkbox"][data-group-name="' + cookieGroup + '"]');
732   
733           if (checkbox) {
734               checkbox.checked = true;
735           }
736   
737           var groupsToAccept = getCurrentStateOfConsents();
738           storeConfiguration(groupsToAccept);
739   
740           if (cbConfig.debugMode) {
741               console.log('🍪 Save new config: ', groupsToAccept.join(', '));
742           }
743       }
744   })(window);</script>
744</body></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.