Boostez votre SEO : Techniques et Astuces High-Tech à Connaître

Dans le monde du marketing en ligne, le SEO, ou optimisation pour les moteurs de recherche, est devenu un levier indispensable pour gagner en visibilité et attirer un trafic de qualité. Avec la montée en puissance de la technologie, de nouvelles technologiques high-tech viennent enrichir les stratégies SEO traditionnelles. Notre objectif dans cet article est de vous présenter ces techniques innovantes qui vous aideront à améliorer votre SEO.

1. Comprendre les Fondamentaux du SEO

1.1. Définition et principes de base

Le SEO est l’art et la science d’optimiser vos pages web pour les moteurs de recherche comme Google. Il repose sur trois piliers principaux : la pertinence du contenu, la technique du site et l’autorité du domaine.

1.2. Importance de la recherche de mots-clés

Les mots-clés sont le pont entre ce que les gens recherchent et le contenu que vous fournissez. Une bonne recherche de mots-clés vous permet de comprendre ce que votre audience cible recherche et comment aligner votre contenu pour répondre à ces besoins.

1.3. Rôle du contenu de qualité

Un contenu de qualité non seulement attire et engage les visiteurs, mais il est aussi fortement valorisé par les moteurs de recherche. Publiez régulièrement des articles, des vidéos ou des infographies pertinents pour votre audience afin de garder leur intérêt.

2. Techniques High-Tech pour Améliorer le SEO

2.1. Utilisation de l’Intelligence Artificielle

L’Intelligence Artificielle transforme le paysage du SEO en permettant d’automatiser et d’optimiser de nombreuses tâches.

  • Outils d’IA pour la recherche de mots-clés : Des plateformes comme Semrush et Ahrefs utilisent l’IA pour analyser les tendances de recherche et recommander des mots-clés efficaces.
  • IA pour la création de contenu optimisé : Des outils comme Jasper (anciennement Jarvis) génèrent du contenu SEO-friendly basé sur vos mots-clés principaux.

2.2. SEO basé sur les Données

Exploiter les données pour améliorer votre SEO est désormais plus simple grâce aux outils de collecte et d’analyse avancés.

  • Utilisation de Google Analytics : Cet outil fournit des insights précieux sur le comportement des visiteurs, les pages les plus visitées, et les sources de trafic.
  • Analyse des comportements des visiteurs : Des outils comme Hotjar vous montrent comment les utilisateurs interagissent avec votre site grâce à des cartes de chaleur et des enregistrements de sessions.

3. Optimisation On-Page Avancée

3.1. Structuration et Balises HTML

La structuration correcte des balises HTML est cruciale pour l’optimisation on-page.

  • Utilisation optimale des balises titre : Assurez-vous que vos balises </code> sont uniques et contiennent les mots-clés principaux.</li> <li><strong>Meta descriptions</strong> : Rédigez des descriptions attrayantes pour inciter les utilisateurs à cliquer.</li> <li><strong>Balises alt</strong> : Utilisez des balises <code><alt></code> descriptives pour vos images, facilitant ainsi l’accessibilité et l’indexation des moteurs de recherche.</li> </ul> <h3>3.2. Amélioration de la Vitesse du Site</h3> <p>Un site rapide offre une meilleure expérience utilisateur et est favorisé par les moteurs de recherche.</p> <ul> <li><strong>Techniques de compression</strong> : Utilisez des outils comme Gzip pour réduire la taille de vos fichiers.</li> <li><strong>Mise en cache</strong> : Implémenter des solutions de cache pour diminuer les temps de chargement.</li> <li><strong>Optimisation mobile</strong> : Assurez-vous que votre site est responsive et offre une expérience fluide sur tous les appareils.</li> </ul> </section> <section> <h2>4. Techniques Off-Page Modernes</h2> <h3>4.1. Backlinks de Qualité</h3> <p>Les backlinks indiquent aux moteurs de recherche que votre site est une source fiable et respectée. Mais comment obtenir des liens entrants pertinents ?</p> <ul> <li><strong>Stratégies de création de backlinks</strong> : Publiez des articles invités sur des sites de renommée ou collaborez avec des blogueurs influents.</li> <li><strong>Outils de vérification de backlinks</strong> : Utilisez des outils comme Ahrefs pour surveiller vos backlinks et ceux de vos concurrents.</li> </ul> <h3>4.2. Réseaux Sociaux et SEO</h3> <p>Les réseaux sociaux jouent un rôle crucial dans le SEO moderne.</p> <ul> <li><strong>Influence des partages sur le classement</strong> : Des partages fréquents sur les réseaux sociaux augmentent la visibilité de votre contenu et peuvent indirectement améliorer votre SEO.</li> <li><strong>Intégration des profils sociaux</strong> : Créez et optimisez des profils sociaux pour renforcer votre présence en ligne et améliorer la confiance des utilisateurs.</li> </ul> </section> <section> <h2>5. Mesurer et Améliorer en Continu</h2> <h3>5.1. Importance du Suivi et de l’Analyse</h3> <p>Pour évaluer l’efficacité de vos efforts SEO, il est crucial de disposer des bons outils de mesure.</p> <ul> <li><strong>Outils de mesure du SEO</strong> : Google Search Console et Moz vous aident à surveiller vos performances et à identifier des domaines à améliorer.</li> </ul> <h3>5.2. Ajustements et Mise à Jour</h3> <p>Le SEO n’est pas une activité ponctuelle; il requiert une adaptation continue.</p> <ul> <li><strong>Adaptation aux changements d’algorithmes</strong> : Restez informé des mises à jour des algorithmes des moteurs de recherche.</li> <li><strong>Actualisation du contenu</strong> : Mettez régulièrement à jour votre contenu pour qu’il reste pertinent et informatif.</li> </ul> </section> <section> <p>Pour conclure, nous avons exploré plusieurs techniques high-tech qui peuvent considérablement améliorer votre SEDe l’utilisation de l’IA à l’analyse des comportements des visiteurs, en passant par les optimisations on-page et off-page, ces stratégies modernes sont essentielles pour améliorer son SEN’attendez plus, commencez à implémenter ces astuces dès aujourd’hui pour booster votre présence en ligne.</p> </div> <div class="elementor-element elementor-element-a3068f5 elementor-position-left elementor-vertical-align-top elementor-position-top elementor-widget elementor-widget-image-box" data-id="a3068f5" data-element_type="widget" data-widget_type="image-box.default"> <div class="elementor-image-box-wrapper"><figure class="elementor-image-box-img"><img loading="lazy" width="300" height="300" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2024/11/SEORennes_SarahMeunon.jpg" class="attachment-full size-full wp-image-960" alt="SEORennes_SarahMeunon" /></figure><div class="elementor-image-box-content"><h3 class="elementor-image-box-title">Sarah Meunon</h3><p class="elementor-image-box-description">Sarah Meunon, experte en SEO à Rennes, travaille avec des entreprises locales pour les aider à se démarquer sur le web. Sa compréhension approfondie du référencement naturel et son approche analytique permettent à ses clients de bénéficier de stratégies SEO puissantes pour améliorer leur positionnement sur les moteurs de recherche. Marion adapte chaque stratégie selon les besoins spécifiques du marché local.</p></div></div> </div> </div> <div data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-element elementor-element-2ba94a0 e-con-full e-flex e-con e-child" data-id="2ba94a0" data-element_type="container"> <div class="elementor-element elementor-element-520ea7d elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents" data-id="520ea7d" data-element_type="widget" data-settings="{"headings_by_tags":["h2"],"exclude_headings_by_selector":[],"marker_view":"bullets","icon":{"value":"fas fa-angle-double-right","library":"fa-solid","rendered_tag":"<svg class=\"e-font-icon-svg e-fas-angle-double-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"><\/path><\/svg>"},"no_headings_message":"Aucun titre n\u2019a \u00e9t\u00e9 trouv\u00e9 sur cette page.","minimize_box":"yes","minimized_on":"tablet","hierarchical_view":"yes","min_height":{"unit":"px","size":"","sizes":[]},"min_height_widescreen":{"unit":"px","size":"","sizes":[]},"min_height_tablet":{"unit":"px","size":"","sizes":[]},"min_height_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="table-of-contents.default"> <div class="elementor-toc__header"> <h4 class="elementor-toc__header-title"> Navigation </h4> <div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand" role="button" tabindex="0" aria-controls="elementor-toc__520ea7d" aria-expanded="true" aria-label="Ouvrir la table des matières"><svg aria-hidden="true" class="e-font-icon-svg e-fas-chevron-down" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"></path></svg></div> <div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse" role="button" tabindex="0" aria-controls="elementor-toc__520ea7d" aria-expanded="true" aria-label="Fermer la table des matières"><svg aria-hidden="true" class="e-font-icon-svg e-fas-chevron-up" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"></path></svg></div> </div> <div id="elementor-toc__520ea7d" class="elementor-toc__body"> <div class="elementor-toc__spinner-container"> <svg class="elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading" aria-hidden="true" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z"></path></svg> </div> </div> </div> <div class="elementor-element elementor-element-0c8f686 elementor-grid-1 elementor-grid-widescreen-1 elementor-grid-tablet-1 elementor-posts--thumbnail-left elementor-grid-mobile-1 elementor-widget elementor-widget-posts" data-id="0c8f686" data-element_type="widget" data-settings="{"classic_columns":"1","classic_columns_widescreen":"1","classic_columns_tablet":"1","classic_columns_mobile":"1","classic_row_gap":{"unit":"px","size":35,"sizes":[]},"classic_row_gap_widescreen":{"unit":"px","size":"","sizes":[]},"classic_row_gap_tablet":{"unit":"px","size":"","sizes":[]},"classic_row_gap_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="posts.classic"> <div class="elementor-widget-container"> <div class="elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid"> <article class="elementor-post elementor-grid-item post-1027 post type-post status-publish format-standard has-post-thumbnail hentry category-blog"> <a class="elementor-post__thumbnail__link" href="https://www.agence-seo-rennes.fr/metier-seo/" tabindex="-1" > <div class="elementor-post__thumbnail"><img loading="lazy" width="300" height="171" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2025/07/Travailler_dans_le_referencement_naturel__les_enjeux_caches_dun_metier_high_tech_passionnant-300x171.webp" class="attachment-medium size-medium wp-image-1028" alt="metier seo" /></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.agence-seo-rennes.fr/metier-seo/" > Travailler dans le référencement naturel : les enjeux cachés d’un métier high-tech passionnant </a> </h3> </div> </article> <article class="elementor-post elementor-grid-item post-1025 post type-post status-publish format-standard has-post-thumbnail hentry category-blog"> <a class="elementor-post__thumbnail__link" href="https://www.agence-seo-rennes.fr/c-est-quoi-amp/" tabindex="-1" > <div class="elementor-post__thumbnail"><img loading="lazy" width="300" height="171" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2025/07/Comprendre_le_metier_daide_medico_psychologique_pour_accompagner_le_handicap_au_quotidien-300x171.webp" class="attachment-medium size-medium wp-image-1026" alt="c est quoi amp" /></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.agence-seo-rennes.fr/c-est-quoi-amp/" > Comprendre le métier d’aide médico-psychologique pour accompagner le handicap au quotidien </a> </h3> </div> </article> <article class="elementor-post elementor-grid-item post-1023 post type-post status-publish format-standard has-post-thumbnail hentry category-blog"> <a class="elementor-post__thumbnail__link" href="https://www.agence-seo-rennes.fr/rapport-seo/" tabindex="-1" > <div class="elementor-post__thumbnail"><img loading="lazy" width="300" height="171" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2025/07/Analyse_pratique_dun_rapport_seo_high_tech_pour_reveler_les_vraies_opportunites_techniques-300x171.webp" class="attachment-medium size-medium wp-image-1024" alt="rapport seo" /></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.agence-seo-rennes.fr/rapport-seo/" > Analyse pratique d’un rapport seo high-tech pour révéler les vraies opportunités techniques </a> </h3> </div> </article> <article class="elementor-post elementor-grid-item post-1021 post type-post status-publish format-standard has-post-thumbnail hentry category-blog"> <a class="elementor-post__thumbnail__link" href="https://www.agence-seo-rennes.fr/seo-e-commerce/" tabindex="-1" > <div class="elementor-post__thumbnail"><img loading="lazy" width="300" height="171" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2025/07/Comment_un_referencement_naturel_adapte_high_tech_peut_doubler_la_visibilite_de_votre_boutique_en_ligne-300x171.webp" class="attachment-medium size-medium wp-image-1022" alt="seo e-commerce" /></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.agence-seo-rennes.fr/seo-e-commerce/" > Comment un référencement naturel adapté high-tech peut doubler la visibilité de votre boutique en ligne </a> </h3> </div> </article> <article class="elementor-post elementor-grid-item post-1005 post type-post status-publish format-standard has-post-thumbnail hentry category-blog"> <a class="elementor-post__thumbnail__link" href="https://www.agence-seo-rennes.fr/seo-longue-traine/" tabindex="-1" > <div class="elementor-post__thumbnail"><img loading="lazy" width="300" height="171" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2025/06/Rediger_des_contenus_high_tech_qui_cartonnent_grace_aux_requetes_de_longue_traine_SEO-300x171.webp" class="attachment-medium size-medium wp-image-1006" alt="seo longue traine" /></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.agence-seo-rennes.fr/seo-longue-traine/" > Rédiger des contenus high-tech qui cartonnent grâce aux requêtes de longue traîne SEO </a> </h3> </div> </article> <article class="elementor-post elementor-grid-item post-1003 post type-post status-publish format-standard has-post-thumbnail hentry category-blog"> <a class="elementor-post__thumbnail__link" href="https://www.agence-seo-rennes.fr/techniques-seo/" tabindex="-1" > <div class="elementor-post__thumbnail"><img loading="lazy" width="300" height="171" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2025/06/L_impact_du_netlinking_sur_votre_strategie_SEO_high_tech-300x171.webp" class="attachment-medium size-medium wp-image-1004" alt="techniques seo" /></div> </a> <div class="elementor-post__text"> <h3 class="elementor-post__title"> <a href="https://www.agence-seo-rennes.fr/techniques-seo/" > L’impact du netlinking sur votre stratégie SEO high-tech </a> </h3> </div> </article> </div> </div> </div> </div> </div> </div> <div data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-element elementor-element-57c68d2 e-flex e-con-boxed e-con e-parent" data-id="57c68d2" data-element_type="container"> <div class="e-con-inner"> <div class="elementor-element elementor-element-920e925 elementor-widget elementor-widget-text-editor" data-id="920e925" data-element_type="widget" data-widget_type="text-editor.default"> <p><strong>PARTAGER SUR :</strong></p> </div> <div class="elementor-element elementor-element-6e33f07 elementor-share-buttons--view-icon-text elementor-share-buttons--skin-gradient elementor-share-buttons--shape-square elementor-grid-0 elementor-share-buttons--color-official elementor-widget elementor-widget-share-buttons" data-id="6e33f07" data-element_type="widget" data-widget_type="share-buttons.default"> <div class="elementor-grid" role="list"> <div class="elementor-grid-item" role="listitem"> <div class="elementor-share-btn elementor-share-btn_facebook" role="button" tabindex="0" aria-label="Partager sur facebook"> <span class="elementor-share-btn__icon"> <svg class="e-font-icon-svg e-fab-facebook" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg> </span> <div class="elementor-share-btn__text"> <span class="elementor-share-btn__title"> Facebook </span> </div> </div> </div> <div class="elementor-grid-item" role="listitem"> <div class="elementor-share-btn elementor-share-btn_twitter" role="button" tabindex="0" aria-label="Partager sur twitter"> <span class="elementor-share-btn__icon"> <svg class="e-font-icon-svg e-fab-twitter" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg> </span> <div class="elementor-share-btn__text"> <span class="elementor-share-btn__title"> Twitter </span> </div> </div> </div> <div class="elementor-grid-item" role="listitem"> <div class="elementor-share-btn elementor-share-btn_linkedin" role="button" tabindex="0" aria-label="Partager sur linkedin"> <span class="elementor-share-btn__icon"> <svg class="e-font-icon-svg e-fab-linkedin" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg> </span> <div class="elementor-share-btn__text"> <span class="elementor-share-btn__title"> LinkedIn </span> </div> </div> </div> </div> </div> </div> </div> </div> <div data-elementor-type="footer" data-elementor-id="48" class="elementor elementor-48 elementor-location-footer" data-elementor-post-type="elementor_library"> <section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-488f12bd elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="488f12bd" data-element_type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-412d8c47" data-id="412d8c47" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-40d02506 elementor-invisible elementor-widget elementor-widget-image" data-id="40d02506" data-element_type="widget" data-settings="{"_animation":"fadeInUp"}" data-widget_type="image.default"> <img loading="lazy" width="800" height="300" src="https://www.agence-seo-rennes.fr/wp-content/uploads/2023/05/4Agence-seo-rennes.png" class="attachment-full size-full wp-image-207" alt="" srcset="https://www.agence-seo-rennes.fr/wp-content/uploads/2023/05/4Agence-seo-rennes.png 800w, https://www.agence-seo-rennes.fr/wp-content/uploads/2023/05/4Agence-seo-rennes-300x113.png 300w, https://www.agence-seo-rennes.fr/wp-content/uploads/2023/05/4Agence-seo-rennes-768x288.png 768w" sizes="(max-width: 800px) 100vw, 800px" /> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-7f67dff4" data-id="7f67dff4" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-2c1710c elementor-invisible elementor-widget elementor-widget-heading" data-id="2c1710c" data-element_type="widget" data-settings="{"_animation":"fadeInUp"}" data-widget_type="heading.default"> <h6 class="elementor-heading-title elementor-size-default">COntact</h6> </div> <div class="elementor-element elementor-element-10d9f218 elementor-align-left elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-invisible elementor-widget elementor-widget-icon-list" data-id="10d9f218" data-element_type="widget" data-settings="{"_animation":"fadeInUp"}" data-widget_type="icon-list.default"> <ul class="elementor-icon-list-items"> <li class="elementor-icon-list-item"> <a href="mailto:contact@agence-seo-rennes.fr"> <span class="elementor-icon-list-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-far-envelope" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"></path></svg> </span> <span class="elementor-icon-list-text">contact@agence-seo-rennes.fr</span> </a> </li> <li class="elementor-icon-list-item"> <a href="tel:02%2055%2002%2075%2012"> <span class="elementor-icon-list-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-phone-alt" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"></path></svg> </span> <span class="elementor-icon-list-text">02 55 02 75 12</span> </a> </li> </ul> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-7b187b2b" data-id="7b187b2b" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-4b98956a elementor-invisible elementor-widget elementor-widget-heading" data-id="4b98956a" data-element_type="widget" data-settings="{"_animation":"fadeInUp"}" data-widget_type="heading.default"> <h6 class="elementor-heading-title elementor-size-default">Informations</h6> </div> <div class="elementor-element elementor-element-eb92589 elementor-nav-menu--dropdown-none elementor-widget elementor-widget-nav-menu" data-id="eb92589" data-element_type="widget" data-settings="{"layout":"vertical","submenu_icon":{"value":"<svg class=\"e-font-icon-svg e-fas-caret-down\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"}}" data-widget_type="nav-menu.default"> <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-vertical e--pointer-none"> <ul id="menu-1-eb92589" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"><a rel="nofollow" href="https://www.agence-seo-rennes.fr/nous-contacter/" class="elementor-item">Nous contacter</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31"><a rel="nofollow" href="https://www.agence-seo-rennes.fr/mentions-legales/" class="elementor-item">Mentions légales</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32"><a href="https://www.agence-seo-rennes.fr/sitemap.xml" class="elementor-item">Sitemap</a></li> </ul> </nav> <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> <ul id="menu-2-eb92589" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"><a rel="nofollow" href="https://www.agence-seo-rennes.fr/nous-contacter/" class="elementor-item" tabindex="-1">Nous contacter</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31"><a rel="nofollow" href="https://www.agence-seo-rennes.fr/mentions-legales/" class="elementor-item" tabindex="-1">Mentions légales</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32"><a href="https://www.agence-seo-rennes.fr/sitemap.xml" class="elementor-item" tabindex="-1">Sitemap</a></li> </ul> </nav> </div> <div class="elementor-element elementor-element-6562835 elementor-widget__width-initial elementor-fixed elementor-hidden-mobile elementor-widget elementor-widget-button" data-id="6562835" data-element_type="widget" data-settings="{"_position":"fixed"}" data-widget_type="button.default"> <a class="elementor-button elementor-button-link elementor-size-sm" href="tel:02%2055%2002%2075%2012"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-icon"> <svg aria-hidden="true" class="e-font-icon-svg e-fas-phone-alt" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"></path></svg> </span> <span class="elementor-button-text">02 55 02 75 12</span> </span> </a> </div> </div> </div> <div class="elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-67c35689" data-id="67c35689" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-1a3aefd elementor-invisible elementor-widget elementor-widget-heading" data-id="1a3aefd" data-element_type="widget" data-settings="{"_animation":"fadeInUp"}" data-widget_type="heading.default"> <h6 class="elementor-heading-title elementor-size-default">Lien utiles</h6> </div> <div class="elementor-element elementor-element-f9b6599 elementor-nav-menu--dropdown-none elementor-widget elementor-widget-nav-menu" data-id="f9b6599" data-element_type="widget" data-settings="{"layout":"vertical","submenu_icon":{"value":"<svg class=\"e-font-icon-svg e-fas-caret-down\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"}}" data-widget_type="nav-menu.default"> <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-vertical e--pointer-none"> <ul id="menu-1-f9b6599" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-736"><a href="/" class="elementor-item">Agence SEO Rennes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-735"><a href="/consultant-seo-rennes/" class="elementor-item">Consultant SEO Rennes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-734"><a href="/referencement-internet-rennes/" class="elementor-item">Référencement internet Rennes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-737"><a href="/audit-referencement-rennes/" class="elementor-item">Audit référencement Rennes</a></li> </ul> </nav> <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> <ul id="menu-2-f9b6599" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-736"><a href="/" class="elementor-item" tabindex="-1">Agence SEO Rennes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-735"><a href="/consultant-seo-rennes/" class="elementor-item" tabindex="-1">Consultant SEO Rennes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-734"><a href="/referencement-internet-rennes/" class="elementor-item" tabindex="-1">Référencement internet Rennes</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-737"><a href="/audit-referencement-rennes/" class="elementor-item" tabindex="-1">Audit référencement Rennes</a></li> </ul> </nav> </div> </div> </div> </div> </section> <section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-3ba66a73 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3ba66a73" data-element_type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6099fbcb" data-id="6099fbcb" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-3ad70c8a elementor-widget-divider--view-line elementor-invisible elementor-widget elementor-widget-divider" data-id="3ad70c8a" data-element_type="widget" data-settings="{"_animation":"fadeIn"}" data-widget_type="divider.default"> <div class="elementor-divider"> <span class="elementor-divider-separator"> </span> </div> </div> </div> </div> </div> </section> <section data-particle_enable="false" data-particle-mobile-disabled="false" class="elementor-section elementor-top-section elementor-element elementor-element-1ce44c25 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1ce44c25" data-element_type="section" data-settings="{"background_background":"classic"}"> <div class="elementor-container elementor-column-gap-default"> <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ef6e18e" data-id="3ef6e18e" data-element_type="column"> <div class="elementor-widget-wrap elementor-element-populated"> <div class="elementor-element elementor-element-7c29c87a elementor-invisible elementor-widget elementor-widget-text-editor" data-id="7c29c87a" data-element_type="widget" data-settings="{"_animation":"fadeInUp"}" data-widget_type="text-editor.default"> <p>Copyright 2025 – Tous droit réservé – Agence SEO Rennes – <span data-teams="true">81 Mail François Mitterrand, 35000 Rennes</span></p> </div> </div> </div> </div> </section> </div> <script type="speculationrules">{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <script type="text/phast">const lazyloadRunObserver=()=>{const lazyloadBackgrounds=document.querySelectorAll(`.e-con.e-parent:not(.e-lazyloaded)`);const lazyloadBackgroundObserver=new IntersectionObserver((entries)=>{entries.forEach((entry)=>{if(entry.isIntersecting){let lazyloadBackground=entry.target;if(lazyloadBackground){lazyloadBackground.classList.add('e-lazyloaded');} lazyloadBackgroundObserver.unobserve(entry.target);}});},{rootMargin:'200px 0px 200px 0px'});lazyloadBackgrounds.forEach((lazyloadBackground)=>{lazyloadBackgroundObserver.observe(lazyloadBackground);});};const events=['DOMContentLoaded','elementor/lazyload/observe',];events.forEach((event)=>{document.addEventListener(event,lazyloadRunObserver);});</script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-includes/js/dist/hooks.min.js?ver=4d63a3d491d11ffd8ac6" data-phast-params='{"ref":"n0pdA4MEAbQ"}' type="text/phast" id="wp-hooks-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" data-phast-params='{"ref":"5gjObYOEJQY"}' type="text/phast" id="wp-i18n-js"></script> <script type="text/phast" id="wp-i18n-js-after">wp.i18n.setLocaleData({'text direction\u0004ltr':['ltr']});</script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1" data-phast-params='{"ref":"snXUgcAK-zQ"}' type="text/phast" id="swv-js"></script> <script type="text/phast" id="contact-form-7-js-before">var wpcf7={"api":{"root":"https:\/\/www.agence-seo-rennes.fr\/wp-json\/","namespace":"contact-form-7\/v1"},"cached":1};</script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1" data-phast-params='{"ref":"IvCuww2CHSY"}' type="text/phast" id="contact-form-7-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/themes/hello-elementor/assets/js/hello-frontend.js?ver=3.4.4" data-phast-params='{"ref":"FuKA5I5WpQM"}' type="text/phast" id="hello-theme-frontend-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.30.2" data-phast-params='{"ref":"700tRG3u-SY"}' type="text/phast" id="elementor-webpack-runtime-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.30.2" data-phast-params='{"ref":"BvpTMxB0V7Q"}' type="text/phast" id="elementor-frontend-modules-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" data-phast-params='{"ref":"FWFN7x3aQL8"}' type="text/phast" id="jquery-ui-core-js"></script> <script type="text/phast" id="elementor-frontend-js-before">var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":1600,"default_value":2400,"direction":"min","is_enabled":true}},"hasCustomBreakpoints":true},"version":"3.30.2","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"nested-elements":true,"e_element_cache":true,"home_screen":true,"global_classes_should_enforce_capabilities":true,"cloud-library":true,"e_opt_in_v4_page":true,"mega-menu":true},"urls":{"assets":"https:\/\/www.agence-seo-rennes.fr\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/www.agence-seo-rennes.fr\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/www.agence-seo-rennes.fr\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"ff9c51c4c7"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet","viewport_widescreen"],"viewport_widescreen":1600,"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"title","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":476,"title":"Boostez%20votre%20SEO%20%3A%20Techniques%20et%20Astuces%20High-Tech","excerpt":"","featuredImage":"https:\/\/www.agence-seo-rennes.fr\/wp-content\/uploads\/2024\/08\/Boostez_votre_SEO__Techniques_et_Astuces_High_Tech_a_Connaitre-1024x578.webp"}};</script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.30.2" data-phast-params='{"ref":"xRiIQvqfplk"}' type="text/phast" id="elementor-frontend-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.29.2" data-phast-params='{"ref":"hqFr3e7eANg"}' type="text/phast" id="e-sticky-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.2.1" data-phast-params='{"ref":"Pa1i3z4236A"}' type="text/phast" id="smartmenus-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-includes/js/imagesloaded.min.js?ver=5.0.0" data-phast-params='{"ref":"0SOmqYjH-5I"}' type="text/phast" id="imagesloaded-js"></script> <script type="text/phast" id="eael-general-js-extra">var localize = {"ajaxurl":"https:\/\/www.agence-seo-rennes.fr\/wp-admin\/admin-ajax.php","nonce":"aa59aaf4e3","i18n":{"added":"Added ","compare":"Compare","loading":"Loading..."},"eael_translate_text":{"required_text":"is a required field","invalid_text":"Invalid","billing_text":"Billing","shipping_text":"Shipping","fg_mfp_counter_text":"of"},"page_permalink":"https:\/\/www.agence-seo-rennes.fr\/boostez-votre-seo-techniques-et-astuces-high-tech-a-connaitre\/","cart_redirectition":"","cart_page_url":"","el_breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":1600,"default_value":2400,"direction":"min","is_enabled":true}},"ParticleThemesData":{"default":"{\"particles\":{\"number\":{\"value\":160,\"density\":{\"enable\":true,\"value_area\":800}},\"color\":{\"value\":\"#ffffff\"},\"shape\":{\"type\":\"circle\",\"stroke\":{\"width\":0,\"color\":\"#000000\"},\"polygon\":{\"nb_sides\":5},\"image\":{\"src\":\"img\/github.svg\",\"width\":100,\"height\":100}},\"opacity\":{\"value\":0.5,\"random\":false,\"anim\":{\"enable\":false,\"speed\":1,\"opacity_min\":0.1,\"sync\":false}},\"size\":{\"value\":3,\"random\":true,\"anim\":{\"enable\":false,\"speed\":40,\"size_min\":0.1,\"sync\":false}},\"line_linked\":{\"enable\":true,\"distance\":150,\"color\":\"#ffffff\",\"opacity\":0.4,\"width\":1},\"move\":{\"enable\":true,\"speed\":6,\"direction\":\"none\",\"random\":false,\"straight\":false,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":1200}}},\"interactivity\":{\"detect_on\":\"canvas\",\"events\":{\"onhover\":{\"enable\":true,\"mode\":\"repulse\"},\"onclick\":{\"enable\":true,\"mode\":\"push\"},\"resize\":true},\"modes\":{\"grab\":{\"distance\":400,\"line_linked\":{\"opacity\":1}},\"bubble\":{\"distance\":400,\"size\":40,\"duration\":2,\"opacity\":8,\"speed\":3},\"repulse\":{\"distance\":200,\"duration\":0.4},\"push\":{\"particles_nb\":4},\"remove\":{\"particles_nb\":2}}},\"retina_detect\":true}","nasa":"{\"particles\":{\"number\":{\"value\":250,\"density\":{\"enable\":true,\"value_area\":800}},\"color\":{\"value\":\"#ffffff\"},\"shape\":{\"type\":\"circle\",\"stroke\":{\"width\":0,\"color\":\"#000000\"},\"polygon\":{\"nb_sides\":5},\"image\":{\"src\":\"img\/github.svg\",\"width\":100,\"height\":100}},\"opacity\":{\"value\":1,\"random\":true,\"anim\":{\"enable\":true,\"speed\":1,\"opacity_min\":0,\"sync\":false}},\"size\":{\"value\":3,\"random\":true,\"anim\":{\"enable\":false,\"speed\":4,\"size_min\":0.3,\"sync\":false}},\"line_linked\":{\"enable\":false,\"distance\":150,\"color\":\"#ffffff\",\"opacity\":0.4,\"width\":1},\"move\":{\"enable\":true,\"speed\":1,\"direction\":\"none\",\"random\":true,\"straight\":false,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":600}}},\"interactivity\":{\"detect_on\":\"canvas\",\"events\":{\"onhover\":{\"enable\":true,\"mode\":\"bubble\"},\"onclick\":{\"enable\":true,\"mode\":\"repulse\"},\"resize\":true},\"modes\":{\"grab\":{\"distance\":400,\"line_linked\":{\"opacity\":1}},\"bubble\":{\"distance\":250,\"size\":0,\"duration\":2,\"opacity\":0,\"speed\":3},\"repulse\":{\"distance\":400,\"duration\":0.4},\"push\":{\"particles_nb\":4},\"remove\":{\"particles_nb\":2}}},\"retina_detect\":true}","bubble":"{\"particles\":{\"number\":{\"value\":15,\"density\":{\"enable\":true,\"value_area\":800}},\"color\":{\"value\":\"#1b1e34\"},\"shape\":{\"type\":\"polygon\",\"stroke\":{\"width\":0,\"color\":\"#000\"},\"polygon\":{\"nb_sides\":6},\"image\":{\"src\":\"img\/github.svg\",\"width\":100,\"height\":100}},\"opacity\":{\"value\":0.3,\"random\":true,\"anim\":{\"enable\":false,\"speed\":1,\"opacity_min\":0.1,\"sync\":false}},\"size\":{\"value\":50,\"random\":false,\"anim\":{\"enable\":true,\"speed\":10,\"size_min\":40,\"sync\":false}},\"line_linked\":{\"enable\":false,\"distance\":200,\"color\":\"#ffffff\",\"opacity\":1,\"width\":2},\"move\":{\"enable\":true,\"speed\":8,\"direction\":\"none\",\"random\":false,\"straight\":false,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":1200}}},\"interactivity\":{\"detect_on\":\"canvas\",\"events\":{\"onhover\":{\"enable\":false,\"mode\":\"grab\"},\"onclick\":{\"enable\":false,\"mode\":\"push\"},\"resize\":true},\"modes\":{\"grab\":{\"distance\":400,\"line_linked\":{\"opacity\":1}},\"bubble\":{\"distance\":400,\"size\":40,\"duration\":2,\"opacity\":8,\"speed\":3},\"repulse\":{\"distance\":200,\"duration\":0.4},\"push\":{\"particles_nb\":4},\"remove\":{\"particles_nb\":2}}},\"retina_detect\":true}","snow":"{\"particles\":{\"number\":{\"value\":450,\"density\":{\"enable\":true,\"value_area\":800}},\"color\":{\"value\":\"#fff\"},\"shape\":{\"type\":\"circle\",\"stroke\":{\"width\":0,\"color\":\"#000000\"},\"polygon\":{\"nb_sides\":5},\"image\":{\"src\":\"img\/github.svg\",\"width\":100,\"height\":100}},\"opacity\":{\"value\":0.5,\"random\":true,\"anim\":{\"enable\":false,\"speed\":1,\"opacity_min\":0.1,\"sync\":false}},\"size\":{\"value\":5,\"random\":true,\"anim\":{\"enable\":false,\"speed\":40,\"size_min\":0.1,\"sync\":false}},\"line_linked\":{\"enable\":false,\"distance\":500,\"color\":\"#ffffff\",\"opacity\":0.4,\"width\":2},\"move\":{\"enable\":true,\"speed\":6,\"direction\":\"bottom\",\"random\":false,\"straight\":false,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":1200}}},\"interactivity\":{\"detect_on\":\"canvas\",\"events\":{\"onhover\":{\"enable\":true,\"mode\":\"bubble\"},\"onclick\":{\"enable\":true,\"mode\":\"repulse\"},\"resize\":true},\"modes\":{\"grab\":{\"distance\":400,\"line_linked\":{\"opacity\":0.5}},\"bubble\":{\"distance\":400,\"size\":4,\"duration\":0.3,\"opacity\":1,\"speed\":3},\"repulse\":{\"distance\":200,\"duration\":0.4},\"push\":{\"particles_nb\":4},\"remove\":{\"particles_nb\":2}}},\"retina_detect\":true}","nyan_cat":"{\"particles\":{\"number\":{\"value\":150,\"density\":{\"enable\":false,\"value_area\":800}},\"color\":{\"value\":\"#ffffff\"},\"shape\":{\"type\":\"star\",\"stroke\":{\"width\":0,\"color\":\"#000000\"},\"polygon\":{\"nb_sides\":5},\"image\":{\"src\":\"http:\/\/wiki.lexisnexis.com\/academic\/images\/f\/fb\/Itunes_podcast_icon_300.jpg\",\"width\":100,\"height\":100}},\"opacity\":{\"value\":0.5,\"random\":false,\"anim\":{\"enable\":false,\"speed\":1,\"opacity_min\":0.1,\"sync\":false}},\"size\":{\"value\":4,\"random\":true,\"anim\":{\"enable\":false,\"speed\":40,\"size_min\":0.1,\"sync\":false}},\"line_linked\":{\"enable\":false,\"distance\":150,\"color\":\"#ffffff\",\"opacity\":0.4,\"width\":1},\"move\":{\"enable\":true,\"speed\":14,\"direction\":\"left\",\"random\":false,\"straight\":true,\"out_mode\":\"out\",\"bounce\":false,\"attract\":{\"enable\":false,\"rotateX\":600,\"rotateY\":1200}}},\"interactivity\":{\"detect_on\":\"canvas\",\"events\":{\"onhover\":{\"enable\":false,\"mode\":\"grab\"},\"onclick\":{\"enable\":true,\"mode\":\"repulse\"},\"resize\":true},\"modes\":{\"grab\":{\"distance\":200,\"line_linked\":{\"opacity\":1}},\"bubble\":{\"distance\":400,\"size\":40,\"duration\":2,\"opacity\":8,\"speed\":3},\"repulse\":{\"distance\":200,\"duration\":0.4},\"push\":{\"particles_nb\":4},\"remove\":{\"particles_nb\":2}}},\"retina_detect\":true}"},"eael_login_nonce":"1f7b383d2d","eael_register_nonce":"58ea6089ab","eael_lostpassword_nonce":"665487a12d","eael_resetpassword_nonce":"304bdcabfc"};</script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/js/view/general.min.js?ver=6.2.0" data-phast-params='{"ref":"xMMQym-EDQw"}' type="text/phast" id="eael-general-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.29.2" data-phast-params='{"ref":"HbhwrRSzqMU"}' type="text/phast" id="elementor-pro-webpack-runtime-js"></script> <script type="text/phast" id="elementor-pro-frontend-js-before">var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/www.agence-seo-rennes.fr\/wp-admin\/admin-ajax.php","nonce":"ac182e2b22","urls":{"assets":"https:\/\/www.agence-seo-rennes.fr\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/www.agence-seo-rennes.fr\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":false},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"fr_FR","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/www.agence-seo-rennes.fr\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}};</script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.29.2" data-phast-params='{"ref":"poHpxedLbt8"}' type="text/phast" id="elementor-pro-frontend-js"></script> <script data-phast-original-src="https://www.agence-seo-rennes.fr/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.29.2" data-phast-params='{"ref":"OrmJUA3vFD0"}' type="text/phast" id="pro-elements-handlers-js"></script> <style>.unlimited-elements-background-overlay{position:absolute;top:0px;left:0px;width:100%;height:100%;z-index:0;}.unlimited-elements-background-overlay.uc-bg-front{z-index:999;}</style> <script data-phast-original-type="text/javascript" type="text/phast">jQuery(document).ready(function(){function ucBackgroundOverlayPutStart(){var objBG=jQuery(".unlimited-elements-background-overlay").not(".uc-bg-attached");if(objBG.length==0) return(false);objBG.each(function(index,bgElement){var objBgElement=jQuery(bgElement);var targetID=objBgElement.data("forid");var location=objBgElement.data("location");switch(location){case"body":case"body_front":var objTarget=jQuery("body");break;case"layout":case"layout_front":var objLayout=jQuery("*[data-id=\""+targetID+"\"]");var objTarget=objLayout.parents(".elementor");if(objTarget.length>1) objTarget=jQuery(objTarget[0]);break;default:var objTarget=jQuery("*[data-id=\""+targetID+"\"]");break;} if(objTarget.length==0) return(true);var objVideoContainer=objTarget.children(".elementor-background-video-container");if(objVideoContainer.length==1) objBgElement.detach().insertAfter(objVideoContainer).show();else objBgElement.detach().prependTo(objTarget).show();var objTemplate=objBgElement.children("template");if(objTemplate.length){var clonedContent=objTemplate[0].content.cloneNode(true);var objScripts=jQuery(clonedContent).find("script");if(objScripts.length) objScripts.attr("type","text/javascript");objBgElement.append(clonedContent);objTemplate.remove();} objBgElement.trigger("bg_attached");objBgElement.addClass("uc-bg-attached");});} ucBackgroundOverlayPutStart();jQuery(document).on('elementor/popup/show',ucBackgroundOverlayPutStart);jQuery("body").on('uc_dom_updated',ucBackgroundOverlayPutStart);});</script> <style>.unlimited-elements-background-overlay{position:absolute;top:0px;left:0px;width:100%;height:100%;z-index:0;}.unlimited-elements-background-overlay.uc-bg-front{z-index:999;}</style> <script data-phast-original-type="text/javascript" type="text/phast">jQuery(document).ready(function(){function ucBackgroundOverlayPutStart(){var objBG=jQuery(".unlimited-elements-background-overlay").not(".uc-bg-attached");if(objBG.length==0) return(false);objBG.each(function(index,bgElement){var objBgElement=jQuery(bgElement);var targetID=objBgElement.data("forid");var location=objBgElement.data("location");switch(location){case"body":case"body_front":var objTarget=jQuery("body");break;case"layout":case"layout_front":var objLayout=jQuery("*[data-id=\""+targetID+"\"]");var objTarget=objLayout.parents(".elementor");if(objTarget.length>1) objTarget=jQuery(objTarget[0]);break;default:var objTarget=jQuery("*[data-id=\""+targetID+"\"]");break;} if(objTarget.length==0) return(true);var objVideoContainer=objTarget.children(".elementor-background-video-container");if(objVideoContainer.length==1) objBgElement.detach().insertAfter(objVideoContainer).show();else objBgElement.detach().prependTo(objTarget).show();var objTemplate=objBgElement.children("template");if(objTemplate.length){var clonedContent=objTemplate[0].content.cloneNode(true);var objScripts=jQuery(clonedContent).find("script");if(objScripts.length) objScripts.attr("type","text/javascript");objBgElement.append(clonedContent);objTemplate.remove();} objBgElement.trigger("bg_attached");objBgElement.addClass("uc-bg-attached");});} ucBackgroundOverlayPutStart();jQuery(document).on('elementor/popup/show',ucBackgroundOverlayPutStart);jQuery("body").on('uc_dom_updated',ucBackgroundOverlayPutStart);});</script> <script type="text/phast">document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("h2, h3").forEach((title)=>{let prevElement=title.previousElementSibling;let nextElement=title.nextElementSibling;while(prevElement&&prevElement.tagName==="P"&&prevElement.textContent.trim()===""){let toRemove=prevElement;prevElement=prevElement.previousElementSibling;toRemove.remove();} while(nextElement&&nextElement.tagName==="P"&&nextElement.textContent.trim()===""){let toRemove=nextElement;nextElement=nextElement.nextElementSibling;toRemove.remove();}});document.querySelectorAll("h2, h3, h4, h5").forEach((title)=>{let nextElement=title.nextElementSibling;if(nextElement&&(nextElement.tagName.toLowerCase()==="table"||(nextElement.tagName.toLowerCase()==="figure"&&nextElement.classList.contains("table")))){let caption=document.createElement("caption");caption.textContent=title.textContent;caption.style.fontWeight="bold";caption.style.textAlign="center";if(nextElement.tagName.toLowerCase()==="table"){nextElement.prepend(caption);}else if(nextElement.tagName.toLowerCase()==="figure"){let table=nextElement.querySelector("table");if(table){table.prepend(caption);}} title.remove();}});});</script> <script data-phast-compiled-js-names="ScriptsProxyService/rewrite-function.js,CSSInlining/ie-fallback.js,CSSInlining/inlined-css-retriever.js,ScriptsDeferring/scripts-loader.js,ScriptsDeferring/rewrite.js">(function phastScripts(phast){phast.scripts=[(function(){phast.config=JSON.parse(atob(phast.config));while(phast.scripts.length){phast.scripts.shift()()} }),(function(){(function(a,b){typeof exports==="object"&&typeof module!=="undefined"?module.exports=b():typeof define==="function"&&define.amd?define(b):a.ES6Promise=b()})(phast,function(){"use strict";function c(ia){var ja=typeof ia;return ia!==null&&(ja==="object"||ja==="function")}function d(ka){return typeof ka==="function"}var e=void 0;if(Array.isArray){e=Array.isArray}else{e=function(la){return Object.prototype.toString.call(la)==="[object Array]"}}var f=e;var g=0;var h=void 0;var i=void 0;var j=function ma(na,oa){w[g]=na;w[g+1]=oa;g+=2;if(g===2){if(i){i(x)}else{z()}}};function k(pa){i=pa}function l(qa){j=qa}var m=typeof window!=="undefined"?window:undefined;var n=m||{};var o=n.MutationObserver||n.WebKitMutationObserver;var p=typeof self==="undefined"&&typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var q=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function r(){return function(){return process.nextTick(x)}}function s(){if(typeof h!=="undefined"){return function(){h(x)}}return v()}function t(){var ra=0;var sa=new o(x);var ta=document.createTextNode("");sa.observe(ta,{characterData:true});return function(){ta.data=ra=++ra%2}}function u(){var ua=new MessageChannel;ua.port1.onmessage=x;return function(){return ua.port2.postMessage(0)}}function v(){var va=setTimeout;return function(){return va(x,1)}}var w=new Array(1e3);function x(){for(var wa=0;wa<g;wa+=2){var xa=w[wa];var ya=w[wa+1];xa(ya);w[wa]=undefined;w[wa+1]=undefined}g=0}function y(){try{var za=Function("return this")().require("vertx");h=za.runOnLoop||za.runOnContext;return s()}catch(Aa){return v()}}var z=void 0;if(p){z=r()}else if(o){z=t()}else if(q){z=u()}else if(m===undefined&&typeof require==="function"){z=y()}else{z=v()}function A(Ba,Ca){var Da=this;var Ea=new this.constructor(D);if(Ea[C]===undefined){$(Ea)}var Fa=Da._state;if(Fa){var Ga=arguments[Fa-1];j(function(){return W(Fa,Ea,Ga,Da._result)})}else{T(Da,Ea,Ba,Ca)}return Ea}function B(Ha){var Ia=this;if(Ha&&typeof Ha==="object"&&Ha.constructor===Ia){return Ha}var Ja=new Ia(D);P(Ja,Ha);return Ja}var C=Math.random().toString(36).substring(2);function D(){}var E=void 0;var F=1;var G=2;var H={error:null};function I(){return new TypeError("You cannot resolve a promise with itself")}function J(){return new TypeError("A promises callback cannot return that same promise.")}function K(Ka){try{return Ka.then}catch(La){H.error=La;return H}}function L(Ma,Na,Oa,Pa){try{Ma.call(Na,Oa,Pa)}catch(Qa){return Qa}}function M(Ra,Sa,Ta){j(function(Ua){var Va=false;var Wa=L(Ta,Sa,function(Xa){if(Va){return}Va=true;if(Sa!==Xa){P(Ua,Xa)}else{R(Ua,Xa)}},function(Ya){if(Va){return}Va=true;S(Ua,Ya)},"Settle: "+(Ua._label||" unknown promise"));if(!Va&&Wa){Va=true;S(Ua,Wa)}},Ra)}function N(Za,$a){if($a._state===F){R(Za,$a._result)}else if($a._state===G){S(Za,$a._result)}else{T($a,undefined,function(_a){return P(Za,_a)},function(a0){return S(Za,a0)})}}function O(b0,c0,d0){if(c0.constructor===b0.constructor&&d0===A&&c0.constructor.resolve===B){N(b0,c0)}else{if(d0===H){S(b0,H.error);H.error=null}else if(d0===undefined){R(b0,c0)}else if(d(d0)){M(b0,c0,d0)}else{R(b0,c0)}}}function P(e0,f0){if(e0===f0){S(e0,I())}else if(c(f0)){O(e0,f0,K(f0))}else{R(e0,f0)}}function Q(g0){if(g0._onerror){g0._onerror(g0._result)}U(g0)}function R(h0,i0){if(h0._state!==E){return}h0._result=i0;h0._state=F;if(h0._subscribers.length!==0){j(U,h0)}}function S(j0,k0){if(j0._state!==E){return}j0._state=G;j0._result=k0;j(Q,j0)}function T(l0,m0,n0,o0){var p0=l0._subscribers;var q0=p0.length;l0._onerror=null;p0[q0]=m0;p0[q0+F]=n0;p0[q0+G]=o0;if(q0===0&&l0._state){j(U,l0)}}function U(r0){var s0=r0._subscribers;var t0=r0._state;if(s0.length===0){return}var u0=void 0,v0=void 0,w0=r0._result;for(var x0=0;x0<s0.length;x0+=3){u0=s0[x0];v0=s0[x0+t0];if(u0){W(t0,u0,v0,w0)}else{v0(w0)}}r0._subscribers.length=0}function V(y0,z0){try{return y0(z0)}catch(A0){H.error=A0;return H}}function W(B0,C0,D0,E0){var F0=d(D0),G0=void 0,H0=void 0,I0=void 0,J0=void 0;if(F0){G0=V(D0,E0);if(G0===H){J0=true;H0=G0.error;G0.error=null}else{I0=true}if(C0===G0){S(C0,J());return}}else{G0=E0;I0=true}if(C0._state!==E){}else if(F0&&I0){P(C0,G0)}else if(J0){S(C0,H0)}else if(B0===F){R(C0,G0)}else if(B0===G){S(C0,G0)}}function X(K0,L0){try{L0(function M0(N0){P(K0,N0)},function O0(P0){S(K0,P0)})}catch(Q0){S(K0,Q0)}}var Y=0;function Z(){return Y++}function $(R0){R0[C]=Y++;R0._state=undefined;R0._result=undefined;R0._subscribers=[]}function _(){return new Error("Array Methods must be provided an Array")}var aa=function(){function S0(T0,U0){this._instanceConstructor=T0;this.promise=new T0(D);if(!this.promise[C]){$(this.promise)}if(f(U0)){this.length=U0.length;this._remaining=U0.length;this._result=new Array(this.length);if(this.length===0){R(this.promise,this._result)}else{this.length=this.length||0;this._enumerate(U0);if(this._remaining===0){R(this.promise,this._result)}}}else{S(this.promise,_())}}S0.prototype._enumerate=function V0(W0){for(var X0=0;this._state===E&&X0<W0.length;X0++){this._eachEntry(W0[X0],X0)}};S0.prototype._eachEntry=function Y0(Z0,$0){var _0=this._instanceConstructor;var ab=_0.resolve;if(ab===B){var bb=K(Z0);if(bb===A&&Z0._state!==E){this._settledAt(Z0._state,$0,Z0._result)}else if(typeof bb!=="function"){this._remaining--;this._result[$0]=Z0}else if(_0===ga){var cb=new _0(D);O(cb,Z0,bb);this._willSettleAt(cb,$0)}else{this._willSettleAt(new _0(function(db){return db(Z0)}),$0)}}else{this._willSettleAt(ab(Z0),$0)}};S0.prototype._settledAt=function eb(fb,gb,hb){var ib=this.promise;if(ib._state===E){this._remaining--;if(fb===G){S(ib,hb)}else{this._result[gb]=hb}}if(this._remaining===0){R(ib,this._result)}};S0.prototype._willSettleAt=function jb(kb,lb){var mb=this;T(kb,undefined,function(nb){return mb._settledAt(F,lb,nb)},function(ob){return mb._settledAt(G,lb,ob)})};return S0}();function ba(pb){return new aa(this,pb).promise}function ca(qb){var rb=this;if(!f(qb)){return new rb(function(sb,tb){return tb(new TypeError("You must pass an array to race."))})}else{return new rb(function(ub,vb){var wb=qb.length;for(var xb=0;xb<wb;xb++){rb.resolve(qb[xb]).then(ub,vb)}})}}function da(yb){var zb=this;var Ab=new zb(D);S(Ab,yb);return Ab}function ea(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function fa(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var ga=function(){function Bb(Cb){this[C]=Z();this._result=this._state=undefined;this._subscribers=[];if(D!==Cb){typeof Cb!=="function"&&ea();this instanceof Bb?X(this,Cb):fa()}}Bb.prototype.catch=function Db(Eb){return this.then(null,Eb)};Bb.prototype.finally=function Fb(Gb){var Hb=this;var Ib=Hb.constructor;return Hb.then(function(Jb){return Ib.resolve(Gb()).then(function(){return Jb})},function(Kb){return Ib.resolve(Gb()).then(function(){throw Kb})})};return Bb}();ga.prototype.then=A;ga.all=ba;ga.race=ca;ga.resolve=B;ga.reject=da;ga._setScheduler=k;ga._setAsap=l;ga._asap=j;function ha(){var Lb=void 0;if(typeof global!=="undefined"){Lb=global}else if(typeof self!=="undefined"){Lb=self}else{try{Lb=Function("return this")()}catch(Ob){throw new Error("polyfill failed because global object is unavailable in this environment")}}var Mb=Lb.Promise;if(Mb){var Nb=null;try{Nb=Object.prototype.toString.call(Mb.resolve())}catch(Pb){}if(Nb==="[object Promise]"&&!Mb.cast){return}}Lb.Promise=ga}ga.polyfill=ha;ga.Promise=ga;return ga}); }),(function(){function murmurhash3_32_gc(a,b){var c,d,e,f,g,h,i,j,k,l;c=a.length&3;d=a.length-c;e=b;g=3432918353;i=461845907;l=0;while(l<d){k=a.charCodeAt(l)&255|(a.charCodeAt(++l)&255)<<8|(a.charCodeAt(++l)&255)<<16|(a.charCodeAt(++l)&255)<<24;++l;k=(k&65535)*g+(((k>>>16)*g&65535)<<16)&4294967295;k=k<<15|k>>>17;k=(k&65535)*i+(((k>>>16)*i&65535)<<16)&4294967295;e^=k;e=e<<13|e>>>19;f=(e&65535)*5+(((e>>>16)*5&65535)<<16)&4294967295;e=(f&65535)+27492+(((f>>>16)+58964&65535)<<16)}k=0;switch(c){case 3:k^=(a.charCodeAt(l+2)&255)<<16;case 2:k^=(a.charCodeAt(l+1)&255)<<8;case 1:k^=a.charCodeAt(l)&255;k=(k&65535)*g+(((k>>>16)*g&65535)<<16)&4294967295;k=k<<15|k>>>17;k=(k&65535)*i+(((k>>>16)*i&65535)<<16)&4294967295;e^=k}e^=a.length;e^=e>>>16;e=(e&65535)*2246822507+(((e>>>16)*2246822507&65535)<<16)&4294967295;e^=e>>>13;e=(e&65535)*3266489909+(((e>>>16)*3266489909&65535)<<16)&4294967295;e^=e>>>16;return e>>>0}phast.hash=murmurhash3_32_gc; }),(function(){phast.buildServiceUrl=function(a,b){if(a.pathInfo){return appendPathInfo(a.serviceUrl,buildQuery(b))}else{return appendQueryString(a.serviceUrl,buildQuery(b))}};function buildQuery(c){if(typeof c==="string"){return c}var d=[];for(var e in c){if(c.hasOwnProperty(e)){d.push(encodeURIComponent(e)+"="+encodeURIComponent(c[e]))}}return d.join("&")}function appendPathInfo(f,g){var h=btoa(g).replace(/=/g,"").replace(/\//g,"_").replace(/\+/g,"-");var i=j(h+".q.js");return f.replace(/\?.*$/,"").replace(/\/__p__\.js$/,"")+"/"+i;function j(l){return k(k(l).match(/[\s\S]{1,255}/g).join("/"))}function k(m){return m.split("").reverse().join("")}}function appendQueryString(n,o){var p=n.indexOf("?")>-1?"&":"?";return n+p+o} }),(function(){var Promise=phast.ES6Promise.Promise;phast.ResourceLoader=function(a,b){this.get=function(c){return b.get(c).then(function(d){if(typeof d!=="string"){throw new Error("response should be string")}return d}).catch(function(){var e=a.get(c);e.then(function(f){b.set(c,f)});return e})}};phast.ResourceLoader.RequestParams={};phast.ResourceLoader.RequestParams.FaultyParams={};phast.ResourceLoader.RequestParams.fromString=function(g){try{return JSON.parse(g)}catch(h){return phast.ResourceLoader.RequestParams.FaultyParams}};phast.ResourceLoader.BundlerServiceClient=function(i,j,k){var l=phast.ResourceLoader.BundlerServiceClient.RequestsPack;var m=l.PackItem;var n;this.get=function(q){if(q===phast.ResourceLoader.RequestParams.FaultyParams){return Promise.reject(new Error("Parameters did not parse as JSON"))}return new Promise(function(r,s){if(n===undefined){n=new l(j)}n.add(new m({success:r,error:s},q));setTimeout(o);if(n.toQuery().length>4500){console.log("[Phast] Resource loader: Pack got too big; flushing early...");o()}})};function o(){if(n===undefined){return}var t=n;n=undefined;p(t)}function p(u){var v=phast.buildServiceUrl({serviceUrl:i,pathInfo:k},"service=bundler&"+u.toQuery());var w=function(){console.error("[Phast] Request to bundler failed with status",y.status);console.log("URL:",v);u.handleError()};var x=function(){if(y.status>=200&&y.status<300){u.handleResponse(y.responseText)}else{u.handleError()}};var y=new XMLHttpRequest;y.open("GET",v);y.addEventListener("error",w);y.addEventListener("abort",w);y.addEventListener("load",x);y.send()}};phast.ResourceLoader.BundlerServiceClient.RequestsPack=function(z){var A={};this.getLength=function(){var F=0;for(var G in A){F++}return F};this.add=function(H){var I;if(H.params.token){I="token="+H.params.token}else if(H.params.ref){I="ref="+H.params.ref}else{I=""}if(!A[I]){A[I]={params:H.params,requests:[H.request]}}else{A[I].requests.push(H.request)}};this.toQuery=function(){var J=[],K=[],L="";B().forEach(function(M){var N,O;for(var P in A[M].params){if(P==="cacheMarker"){K.push(A[M].params.cacheMarker);continue}N=z[P]?z[P]:P;if(P==="strip-imports"){O=encodeURIComponent(N)}else if(P==="src"){O=encodeURIComponent(N)+"="+encodeURIComponent(C(A[M].params.src,L));L=A[M].params.src}else{O=encodeURIComponent(N)+"="+encodeURIComponent(A[M].params[P])}J.push(O)}});if(K.length>0){J.unshift("c="+phast.hash(K.join("|"),23045))}return E(J.join("&"))};function B(){return Object.keys(A).sort(function(R,S){return Q(R,S)?1:Q(S,R)?-1:0});function Q(T,U){if(typeof A[T].params.src!=="undefined"&&typeof A[U].params.src!=="undefined"){return A[T].params.src>A[U].params.src}return T>U}}function C(V,W){var X=0,Y=Math.pow(36,2)-1;while(X<W.length&&V[X]===W[X]){X++}X=Math.min(X,Y);return D(X)+""+V.substr(X)}function D(Z){var $=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];var _=Z%36;var aa=Math.floor((Z-_)/36);return $[aa]+$[_]}function E(ba){if(!/(^|&)s=/.test(ba)){return ba}return ba.replace(/(%..)|([A-M])|([N-Z])/gi,function(ca,da,ea,fa){if(da){return ca}return String.fromCharCode(ca.charCodeAt(0)+(ea?13:-13))})}this.handleResponse=function(ga){try{var ha=JSON.parse(ga)}catch(ja){this.handleError();return}var ia=B();if(ha.length!==ia.length){console.error("[Phast] Requested",ia.length,"items from bundler, but got",ha.length,"response(s)");this.handleError();return}ha.forEach(function(ka,la){if(ka.status===200){A[ia[la]].requests.forEach(function(ma){ma.success(ka.content)})}else{A[ia[la]].requests.forEach(function(na){na.error(new Error("Got from bundler: "+JSON.stringify(ka)))})}})}.bind(this);this.handleError=function(){for(var oa in A){A[oa].requests.forEach(function(pa){pa.error()})}}};phast.ResourceLoader.BundlerServiceClient.RequestsPack.PackItem=function(qa,ra){this.request=qa;this.params=ra};phast.ResourceLoader.IndexedDBStorage=function(sa){var ta=phast.ResourceLoader.IndexedDBStorage;var ua=ta.logPrefix;var va=ta.requestToPromise;var wa;Ba();this.get=function(Ca){return xa("readonly").then(function(Da){return va(Da.get(Ca)).catch(ya("reading from store"))})};this.store=function(Ea){return xa("readwrite").then(function(Fa){return va(Fa.put(Ea)).catch(ya("writing to store"))})};this.clear=function(){return xa("readwrite").then(function(Ga){return va(Ga.clear())})};this.iterateOnAll=function(Ha){return xa("readonly").then(function(Ia){return za(Ha,Ia.openCursor()).catch(ya("iterating on all"))})};function xa(Ja){return wa.get().then(function(Ka){try{return Ka.transaction(sa.storeName,Ja).objectStore(sa.storeName)}catch(La){console.error(ua,"Could not open store; recreating database:",La);Aa();throw La}})}function ya(Ma){return function(Na){console.error(ua,"Error "+Ma+":",Na);Aa();throw Na}}function za(Oa,Pa){return new Promise(function(Qa,Ra){Pa.onsuccess=function(Sa){var Ta=Sa.target.result;if(Ta){Oa(Ta.value);Ta.continue()}else{Qa()}};Pa.onerror=Ra})}function Aa(){var Ua=wa.dropDB().then(Ba);wa={get:function(){return Promise.reject(new Error("Database is being dropped and recreated"))},dropDB:function(){return Ua}}}function Ba(){wa=new phast.ResourceLoader.IndexedDBStorage.Connection(sa)}};phast.ResourceLoader.IndexedDBStorage.logPrefix="[Phast] Resource loader:";phast.ResourceLoader.IndexedDBStorage.requestToPromise=function(Va){return new Promise(function(Wa,Xa){Va.onsuccess=function(){Wa(Va.result)};Va.onerror=function(){Xa(Va.error)}})};phast.ResourceLoader.IndexedDBStorage.ConnectionParams=function(){this.dbName="phastResourcesCache";this.dbVersion=1;this.storeName="resources"};phast.ResourceLoader.IndexedDBStorage.StoredResource=function(Ya,Za){this.token=Ya;this.content=Za};phast.ResourceLoader.IndexedDBStorage.Connection=function($a){var _a=phast.ResourceLoader.IndexedDBStorage.logPrefix;var a0=phast.ResourceLoader.IndexedDBStorage.requestToPromise;var b0;this.get=c0;this.dropDB=d0;function c0(){if(!b0){b0=e0($a)}return b0}function d0(){return c0().then(function(g0){console.error(_a,"Dropping DB");g0.close();b0=null;return a0(window.indexedDB.deleteDatabase($a.dbName))})}function e0(h0){if(typeof window.indexedDB==="undefined"){return Promise.reject(new Error("IndexedDB is not available"))}var i0=window.indexedDB.open(h0.dbName,h0.dbVersion);i0.onupgradeneeded=function(){f0(i0.result,h0)};return a0(i0).then(function(j0){j0.onversionchange=function(){console.debug(_a,"Closing DB");j0.close();if(b0){b0=null}};return j0}).catch(function(k0){console.log(_a,"IndexedDB cache is not available. This is usually due to using private browsing mode.");throw k0})}function f0(l0,m0){l0.createObjectStore(m0.storeName,{keyPath:"token"})}};phast.ResourceLoader.StorageCache=function(n0,o0){var p0=phast.ResourceLoader.IndexedDBStorage.StoredResource;this.get=function(x0){return s0(r0(x0))};this.set=function(y0,z0){return t0(r0(y0),z0,false)};var q0=null;function r0(A0){return JSON.stringify(A0)}function s0(B0){return o0.get(B0).then(function(C0){if(C0){return Promise.resolve(C0.content)}return Promise.resolve()})}function t0(D0,E0,F0){return w0().then(function(G0){var H0=E0.length+G0;if(H0>n0.maxStorageSize){return F0||E0.length>n0.maxStorageSize?Promise.reject(new Error("Storage quota will be exceeded")):u0(D0,E0)}q0=H0;var I0=new p0(D0,E0);return o0.store(I0)})}function u0(J0,K0){return v0().then(function(){return t0(J0,K0,true)})}function v0(){return o0.clear().then(function(){q0=0})}function w0(){if(q0!==null){return Promise.resolve(q0)}var L0=0;return o0.iterateOnAll(function(M0){L0+=M0.content.length}).then(function(){q0=L0;return Promise.resolve(q0)})}};phast.ResourceLoader.StorageCache.StorageCacheParams=function(){this.maxStorageSize=4.5*1024*1024};phast.ResourceLoader.BlackholeCache=function(){this.get=function(){return Promise.reject()};this.set=function(){return Promise.reject()}};phast.ResourceLoader.make=function(N0,O0,P0){var Q0=S0();var R0=new phast.ResourceLoader.BundlerServiceClient(N0,O0,P0);return new phast.ResourceLoader(R0,Q0);function S0(){var T0=window.navigator.userAgent;if(/safari/i.test(T0)&&!/chrome|android/i.test(T0)){console.log("[Phast] Not using IndexedDB cache on Safari");return new phast.ResourceLoader.BlackholeCache}else{var U0=new phast.ResourceLoader.IndexedDBStorage.ConnectionParams;var V0=new phast.ResourceLoader.IndexedDBStorage(U0);var W0=new phast.ResourceLoader.StorageCache.StorageCacheParams;return new phast.ResourceLoader.StorageCache(W0,V0)}}}; }),(function(){var Promise=phast.ES6Promise;phast.ResourceLoader.instance=phast.ResourceLoader.make(phast.config.resourcesLoader.serviceUrl,phast.config.resourcesLoader.shortParamsMappings,phast.config.resourcesLoader.pathInfo);phast.forEachSelectedElement=function(a,b){Array.prototype.forEach.call(window.document.querySelectorAll(a),b)};phast.once=function(c){var d=false;return function(){if(!d){d=true;c.apply(this,Array.prototype.slice(arguments))}}};phast.on=function(e,f){return new Promise(function(g){e.addEventListener(f,g)})};phast.wait=function(h){return new Promise(function(i){setTimeout(i,h)})};phast.on(document,"DOMContentLoaded").then(function(){var j,k;function l(n){return n&&n.nodeType===8&&/^\s*\[Phast\]/.test(n.textContent)}function m(o){while(o){if(l(o)){return o}o=o.nextSibling}return false}k=m(document.documentElement.nextSibling);if(k===false){k=m(document.body.firstChild)}if(k){j=k.textContent.replace(/^\s+|\s+$/g,"").split("\n");console.groupCollapsed(j.shift());console.log(j.join("\n"));console.groupEnd()}});phast.on(document,"DOMContentLoaded").then(function(){var p=performance.timing;var q=[];q.push(["Downloading phases:"]);q.push([" Look up hostname in DNS + %s ms",t(p.domainLookupEnd-p.fetchStart)]);q.push([" Establish connection + %s ms",t(p.connectEnd-p.domainLookupEnd)]);q.push([" Send request + %s ms",t(p.requestStart-p.connectEnd)]);q.push([" Receive first byte + %s ms",t(p.responseStart-p.requestStart)]);q.push([" Download page + %s ms",t(p.responseEnd-p.responseStart)]);q.push([""]);q.push(["Totals:"]);q.push([" Time to first byte %s ms",t(p.responseStart-p.fetchStart)]);q.push([" (since request start) %s ms",t(p.responseStart-p.requestStart)]);q.push([" Total request time %s ms",t(p.responseEnd-p.fetchStart)]);q.push([" (since request start) %s ms",t(p.responseEnd-p.requestStart)]);q.push([" "]);var r=[];var s=[];q.forEach(function(u){r.push(u.shift());s=s.concat(u)});console.groupCollapsed("[Phast] Client-side performance metrics");console.log.apply(console,[r.join("\n")].concat(s));console.groupEnd();function t(v){v=""+v;while(v.length<4){v=" "+v}return v}}); }),(function(){var config=phast.config["script-proxy-service"];var urlPattern=/^(https?:)?\/\//;var typePattern=/^\s*(application|text)\/(x-)?(java|ecma|j|live)script/i;var cacheMarker=Math.floor((new Date).getTime()/1e3/config.urlRefreshTime);var whitelist=compileWhitelistPatterns(config.whitelist);phast.scripts.push(function(){overrideDOMMethod("appendChild");overrideDOMMethod("insertBefore")});function compileWhitelistPatterns(a){var b=/^(.)(.*)\1([a-z]*)$/i;var c=[];a.forEach(function(d){var e=b.exec(d);if(!e){window.console&&window.console.log("Phast: Not a pattern:",d);return}try{c.push(new RegExp(e[2],e[3]))}catch(f){window.console&&window.console.log("Phast: Failed to compile pattern:",d)}});return c}function checkWhitelist(g){for(var h=0;h<whitelist.length;h++){if(whitelist[h].exec(g)){return true}}return false}function overrideDOMMethod(i){var j=Element.prototype[i];var k=function(){var l=processNode(arguments[0]);var m=j.apply(this,arguments);l();return m};Element.prototype[i]=k;window.addEventListener("load",function(){if(Element.prototype[i]===k){delete Element.prototype[i]}})}function processNode(n){if(!n||n.nodeType!==Node.ELEMENT_NODE||n.tagName!=="SCRIPT"||!urlPattern.test(n.src)||n.type&&!typePattern.test(n.type)||n.src.substr(0,config.serviceUrl.length)===config.serviceUrl||!checkWhitelist(n.src)){return function(){}}var o=n.src;n.src=phast.buildServiceUrl(config,{service:"scripts",src:o,cacheMarker:cacheMarker});n.setAttribute("data-phast-rewritten","");return function(){n.src=o}} }),(function(){(function(){var a=function(){if(!("FontFace"in window)){return false}var b=new FontFace("t",'url( "data:font/woff2;base64,d09GMgABAAAAAADwAAoAAAAAAiQAAACoAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAALAogOAE2AiQDBgsGAAQgBSAHIBuDAciO1EZ3I/mL5/+5/rfPnTt9/9Qa8H4cUUZxaRbh36LiKJoVh61XGzw6ufkpoeZBW4KphwFYIJGHB4LAY4hby++gW+6N1EN94I49v86yCpUdYgqeZrOWN34CMQg2tAmthdli0eePIwAKNIIRS4AGZFzdX9lbBUAQlm//f262/61o8PlYO/D1/X4FrWFFgdCQD9DpGJSxmFyjOAGUU4P0qigcNb82GAAA" ) format( "woff2" )',{});b.load()["catch"](function(){});return b.status=="loading"||b.status=="loaded"}();if(a){return}console.log("[Phast] Browser does not support WOFF2, falling back to original stylesheets");Array.prototype.forEach.call(document.querySelectorAll("style[data-phast-ie-fallback-url]"),function(c){var d=document.createElement("link");if(c.hasAttribute("media")){d.setAttribute("media",c.getAttribute("media"))}d.setAttribute("rel","stylesheet");d.setAttribute("href",c.getAttribute("data-phast-ie-fallback-url"));c.parentNode.insertBefore(d,c);c.parentNode.removeChild(c)});Array.prototype.forEach.call(document.querySelectorAll("style[data-phast-nested-inlined]"),function(e){e.parentNode.removeChild(e)})})(); }),(function(){phast.stylesLoading=0;var resourceLoader=phast.ResourceLoader.instance;phast.forEachSelectedElement("style[data-phast-params]",function(a){var b=a.getAttribute("data-phast-params");var c=phast.ResourceLoader.RequestParams.fromString(b);phast.stylesLoading++;resourceLoader.get(c).then(function(d){a.textContent=d;a.removeAttribute("data-phast-params")}).catch(function(e){console.warn("[Phast] Failed to load CSS",c,e);var f=a.getAttribute("data-phast-original-src");if(!f){console.error("[Phast] No data-phast-original-src on <style>!",a);return}console.info("[Phast] Falling back to <link> element for",f);var g=document.createElement("link");g.href=f;g.media=a.media;g.rel="stylesheet";g.addEventListener("load",function(){if(a.parentNode){a.parentNode.removeChild(a)}});a.parentNode.insertBefore(g,a.nextSibling)}).finally(function(){phast.stylesLoading--;if(phast.stylesLoading===0&&phast.onStylesLoaded){phast.onStylesLoaded()}})});(function(){var h=[];phast.forEachSelectedElement("style[data-phast-original-id]",function(i){var j=i.getAttribute("data-phast-original-id");if(h[j]){return}h[j]=true;console.warn("[Phast] The style element with id",j,"has been split into multiple style tags due to @import statements and the id attribute has been removed. Normally, this does not cause any issues.")})})(); }),(function(){var Promise=phast.ES6Promise;var hasCurrentScript=!!document.currentScript;phast.ScriptsLoader={};phast.ScriptsLoader.getScriptsInExecutionOrder=function(a,b){var c=Array.prototype.slice.call(a.querySelectorAll('script[type="text/phast"]')).filter(g);var d=[],e=[];for(var f=0;f<c.length;f++){if(getSrc(c[f])!==undefined&&isDefer(c[f])){e.push(c[f])}else{d.push(c[f])}}return d.concat(e).map(function(j){return b.makeScriptFromElement(j)});function g(k){try{var l=phast.config.scriptsLoader.csp}catch(m){return true}if(l.nonce==null){return true}if(k.nonce===l.nonce){return true}try{h(l,k)}catch(n){console.error("Could not send CSP report due to error:",n)}if(l.reportOnly){console.warn("Script with missing or invalid nonce would not be executed (but report-only mode is enabled):",k);return true}console.warn("Script with missing or invalid nonce will not be executed:",k);return false}function h(o,p){var q={"blocked-uri":getSrc(p),disposition:o.reportOnly?"report":"enforce","document-uri":location.href,referrer:a.referrer,"script-sample":i(p),implementation:"phast"};try{p.dispatchEvent(new SecurityPolicyViolationEvent("securitypolicyviolation",{blockedURI:q["blocked-uri"],disposition:q["disposition"],documentURI:q["document-uri"],effectiveDirective:"script-src-elem",originalPolicy:"phast",referrer:q["referrer"],sample:q["script-sample"],statusCode:200,violatedDirective:"script-src-elem"}))}catch(s){console.error("[Phast] Could not dispatch securitypolicyviolation event",s)}if(!o.reportUri){return}var r={"csp-report":q};fetch(o.reportUri,{method:"POST",headers:{"Content-Type":"application/csp-report"},credentials:"same-origin",redirect:"error",keepalive:true,body:JSON.stringify(r)})}function i(t){if(!t.hasAttribute("src")){return t.textContent.substr(0,40)}}};phast.ScriptsLoader.executeScripts=function(u){var v=u.map(function(x){return x.init()});var w=Promise.resolve();u.forEach(function(y){w=phast.ScriptsLoader.chainScript(w,y)});return w.then(function(){return Promise.all(v).catch(function(){})})};phast.ScriptsLoader.chainScript=function(z,A){var B;try{if(A.describe){B=A.describe()}else{B="unknown script"}}catch(C){B="script.describe() failed"}return z.then(function(){var D=A.execute();D.then(function(){console.debug("✓",B)});return D}).catch(function(E){console.error("✘",B);if(E){console.log(E)}})};var insertBefore=window.Element.prototype.insertBefore;phast.ScriptsLoader.Utilities=function(F){this._document=F;var G=0;function H(R){return new Promise(function(S){var T="PhastCompleteScript"+ ++G;var U=I(R);var V=I(T+"()");window[T]=W;F.body.appendChild(U);F.body.appendChild(V);function W(){S();F.body.removeChild(U);F.body.removeChild(V);delete window[T]}})}function I(X){var Y=F.createElement("script");Y.textContent=X;Y.nonce=phast.config.scriptsLoader.csp.nonce;return Y}function J(Z){var $=F.createElement(Z.nodeName);Array.prototype.forEach.call(Z.attributes,function(_){$.setAttribute(_.nodeName,_.nodeValue)});return $}function K(aa){aa.removeAttribute("data-phast-params");var ba={};Array.prototype.map.call(aa.attributes,function(ca){return ca.nodeName}).map(function(da){var ea=da.match(/^data-phast-original-(.*)/i);if(ea){ba[ea[1].toLowerCase()]=aa.getAttribute(da);aa.removeAttribute(da)}});Object.keys(ba).sort().map(function(fa){aa.setAttribute(fa,ba[fa])});if(!("type"in ba)){aa.removeAttribute("type")}}function L(ga,ha){return new Promise(function(ia,ja){var ka=ha.getAttribute("src");ha.addEventListener("load",ia);ha.addEventListener("error",ja);ha.removeAttribute("src");insertBefore.call(ga.parentNode,ha,ga);ga.parentNode.removeChild(ga);if(ka){ha.setAttribute("src",ka)}})}function M(la,ma){return O(la,function(){return P(la,function(){return H(ma)})})}function N(na,oa){return O(oa,function(){return L(na,oa)})}function O(pa,qa){var ra=pa.nextElementSibling;var sa=Promise.resolve();var ta;if(isAsync(pa)){ta="async"}else if(isDefer(pa)){ta="defer"}F.write=function(xa){if(ta){console.warn("document.write call from "+ta+" script ignored");return}ua(xa)};F.writeln=function(ya){if(ta){console.warn("document.writeln call from "+ta+" script ignored");return}ua(ya+"\n")};function ua(za){var Aa=F.createElement("div");Aa.innerHTML=za;var Ba=va(Aa);if(ra&&ra.parentNode!==pa.parentNode){ra=pa.nextElementSibling}while(Aa.firstChild){pa.parentNode.insertBefore(Aa.firstChild,ra)}Ba.map(wa)}function va(Ca){return Array.prototype.slice.call(Ca.getElementsByTagName("script")).filter(function(Da){var Ea=Da.getAttribute("type");return!Ea||/^(text|application)\/javascript(;|$)/i.test(Ea)})}function wa(Fa){var Ga=new phast.ScriptsLoader.Scripts.Factory(F);var Ha=Ga.makeScriptFromElement(Fa);sa=phast.ScriptsLoader.chainScript(sa,Ha)}return qa().then(function(){return sa}).finally(function(){delete F.write;delete F.writeln})}function P(Ia,Ja){if(hasCurrentScript){try{Object.defineProperty(F,"currentScript",{configurable:true,get:function(){return Ia}})}catch(Ka){console.error("[Phast] Unable to override document.currentScript on this browser: ",Ka)}}return Ja().finally(function(){if(hasCurrentScript){delete F.currentScript}})}function Q(La){var Ma=F.createElement("link");Ma.setAttribute("rel","preload");Ma.setAttribute("as","script");Ma.setAttribute("href",La);F.head.appendChild(Ma)}this.executeString=H;this.copyElement=J;this.restoreOriginals=K;this.replaceElement=L;this.writeProtectAndExecuteString=M;this.writeProtectAndReplaceElement=N;this.addPreload=Q};phast.ScriptsLoader.Scripts={};phast.ScriptsLoader.Scripts.InlineScript=function(Na,Oa){this._utils=Na;this._element=Oa;this.init=function(){return Promise.resolve()};this.execute=function(){var Pa=Oa.textContent.replace(/^\s*<!--.*\n/i,"");Na.restoreOriginals(Oa);return Na.writeProtectAndExecuteString(Oa,Pa)};this.describe=function(){return"inline script"}};phast.ScriptsLoader.Scripts.AsyncBrowserScript=function(Qa,Ra){var Sa;this._utils=Qa;this._element=Ra;this.init=function(){Qa.addPreload(getSrc(Ra));return new Promise(function(Ta){Sa=Ta})};this.execute=function(){var Ua=Qa.copyElement(Ra);Qa.restoreOriginals(Ua);Qa.replaceElement(Ra,Ua).then(Sa).catch(Sa);return Promise.resolve()};this.describe=function(){return"async script at "+getSrc(Ra)}};phast.ScriptsLoader.Scripts.SyncBrowserScript=function(Va,Wa){this._utils=Va;this._element=Wa;this.init=function(){Va.addPreload(getSrc(Wa));return Promise.resolve()};this.execute=function(){var Xa=Va.copyElement(Wa);Va.restoreOriginals(Xa);return Va.writeProtectAndReplaceElement(Wa,Xa)};this.describe=function(){return"sync script at "+getSrc(Wa)}};phast.ScriptsLoader.Scripts.AsyncAJAXScript=function(Ya,Za,$a,_a){this._utils=Ya;this._element=Za;this._fetch=$a;this._fallback=_a;var a0;var b0;this.init=function(){a0=$a(Za);return new Promise(function(c0){b0=c0})};this.execute=function(){a0.then(function(d0){Ya.restoreOriginals(Za);return Ya.writeProtectAndExecuteString(Za,d0).then(b0)}).catch(function(){_a.init();return _a.execute().then(b0)});return Promise.resolve()};this.describe=function(){return"bundled async script at "+Za.getAttribute("data-phast-original-src")}};phast.ScriptsLoader.Scripts.SyncAJAXScript=function(e0,f0,g0,h0){this._utils=e0;this._element=f0;this._fetch=g0;this._fallback=h0;var i0;this.init=function(){i0=g0(f0);return i0};this.execute=function(){return i0.then(function(j0){e0.restoreOriginals(f0);return e0.writeProtectAndExecuteString(f0,j0)}).catch(function(){h0.init();return h0.execute()})};this.describe=function(){return"bundled sync script at "+f0.getAttribute("data-phast-original-src")}};phast.ScriptsLoader.Scripts.Factory=function(k0,l0){var m0=phast.ScriptsLoader.Scripts;var n0=new phast.ScriptsLoader.Utilities(k0);this.makeScriptFromElement=function(q0){var r0;if(q0.getAttribute("data-phast-debug-force-method")&&window.location.host.match(/\.test$/)){return new m0[q0.getAttribute("data-phast-debug-force-method")](n0,q0)}if(o0(q0)){if(isAsync(q0)){r0=new m0.AsyncBrowserScript(n0,q0);return l0?new m0.AsyncAJAXScript(n0,q0,l0,r0):r0}r0=new m0.SyncBrowserScript(n0,q0);return l0?new m0.SyncAJAXScript(n0,q0,l0,r0):r0}if(p0(q0)){return new m0.InlineScript(n0,q0)}if(isAsync(q0)){return new m0.AsyncBrowserScript(n0,q0)}return new m0.SyncBrowserScript(n0,q0)};function o0(s0){return s0.hasAttribute("data-phast-params")}function p0(t0){return!t0.hasAttribute("src")}};function getSrc(u0){if(u0.hasAttribute("data-phast-original-src")){return u0.getAttribute("data-phast-original-src")}else if(u0.hasAttribute("src")){return u0.getAttribute("src")}}function isAsync(v0){return v0.hasAttribute("async")||v0.hasAttribute("data-phast-async")}function isDefer(w0){return w0.hasAttribute("defer")||w0.hasAttribute("data-phast-defer")} }),(function(){var Promise=phast.ES6Promise;var go=phast.once(loadScripts);phast.on(document,"DOMContentLoaded").then(function(){if(phast.stylesLoading){phast.onStylesLoaded=go;setTimeout(go,4e3)}else{Promise.resolve().then(go)}});var loadFiltered=false;window.addEventListener("load",function(a){if(!loadFiltered){a.stopImmediatePropagation()}loadFiltered=true});document.addEventListener("readystatechange",function(b){if(document.readyState==="loading"){b.stopImmediatePropagation()}});var didSetTimeout=false;var originalSetTimeout=window.setTimeout;window.setTimeout=function(c,d){if(!d||d<0){didSetTimeout=true}return originalSetTimeout.apply(window,arguments)};function loadScripts(){var e=new phast.ScriptsLoader.Scripts.Factory(document,fetchScript);var f=phast.ScriptsLoader.getScriptsInExecutionOrder(document,e);if(f.length===0){return}setReadyState("loading");phast.ScriptsLoader.executeScripts(f).then(restoreReadyState)}function setReadyState(g){try{Object.defineProperty(document,"readyState",{configurable:true,get:function(){return g}})}catch(h){console.warn("[Phast] Unable to override document.readyState on this browser: ",h)}}function restoreReadyState(){i().then(function(){setReadyState("interactive");triggerEvent(document,"readystatechange");return i()}).then(function(){triggerEvent(document,"DOMContentLoaded");return i()}).then(function(){delete document["readyState"];triggerEvent(document,"readystatechange");if(loadFiltered){triggerEvent(window,"load")}loadFiltered=true});function i(){return new Promise(function(j){(function k(l){if(didSetTimeout&&l<10){didSetTimeout=false;originalSetTimeout.call(window,function(){k(l+1)})}else{requestAnimationFrame(j)}})(0)})}}function triggerEvent(m,n){var o=document.createEvent("Event");o.initEvent(n,true,true);m.dispatchEvent(o)}function fetchScript(p){return phast.ResourceLoader.instance.get(phast.ResourceLoader.RequestParams.fromString(p.getAttribute("data-phast-params")))} })];(phast.scripts.shift())();})({"config":"eyJyZXNvdXJjZXNMb2FkZXIiOnsic2VydmljZVVybCI6Imh0dHBzOi8vd3d3LmFnZW5jZS1zZW8tcmVubmVzLmZyL3dwLWNvbnRlbnQvcGx1Z2lucy9waGFzdHByZXNzL3BoYXN0LnBocD8iLCJzaG9ydFBhcmFtc01hcHBpbmdzIjp7InNyYyI6InMiLCJzdHJpcC1pbXBvcnRzIjoiaSIsImNhY2hlTWFya2VyIjoiYyIsInRva2VuIjoidCIsImlzU2NyaXB0IjoiaiIsInJlZiI6InIifSwicGF0aEluZm8iOmZhbHNlfSwic2NyaXB0LXByb3h5LXNlcnZpY2UiOnsic2VydmljZVVybCI6Imh0dHBzOi8vd3d3LmFnZW5jZS1zZW8tcmVubmVzLmZyL3dwLWNvbnRlbnQvcGx1Z2lucy9waGFzdHByZXNzL3BoYXN0LnBocCIsInBhdGhJbmZvIjpmYWxzZSwidXJsUmVmcmVzaFRpbWUiOjcyMDAsIndoaXRlbGlzdCI6WyJ+Xmh0dHBzPzovL3d3d1xcLmFnZW5jZVxcLXNlb1xcLXJlbm5lc1xcLmZyL34iXX0sInNjcmlwdHNMb2FkZXIiOnsiY3NwIjp7Im5vbmNlIjpudWxsLCJyZXBvcnRPbmx5IjpmYWxzZSwicmVwb3J0VXJpIjpudWxsfX19"});</script></body> </html> <!-- [Phast] Document optimized in 16ms -->