PageSourceSearch

https://goldenrod-pigeon-420491.hostingersite.com/actualites/

html goldenrod-pigeon-420491.hostingersite.com collected 2026-10-03 04:25:27 UTC 308,061 bytes, 3,966 lines download raw bytes

1<!DOCTYPE html>
2<html lang="fr-FR" prefix="og: https://ogp.me/ns#">
3<head>
4	<meta charset="UTF-8">
5	<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
6	<link rel="profile" href="https://gmpg.org/xfn/11">
7	
8	
9	
10<!-- Optimisation des moteurs de recherche par Rank Math - https://rankmath.com/ -->
11<title>Actualités | ATI Export</title>
12<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
13<link rel="canonical" href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/" />
14<meta property="og:locale" content="fr_FR" />
15<meta property="og:type" content="article" />
16<meta property="og:title" content="Actualités | ATI Export" />
17<meta property="og:url" content="https://goldenrod-pigeon-420491.hostingersite.com/actualites/" />
18<meta property="og:site_name" content="ATI Export" />
19<meta property="og:updated_time" content="2026-07-08T23:09:05+00:00" />
20<meta name="twitter:card" content="summary_large_image" />
21<meta name="twitter:title" content="Actualités | ATI Export" />
22<meta name="twitter:label1" content="Temps de lecture" />
23<meta name="twitter:data1" content="Moins d’une minute" />
24<!-- /Extension Rank Math WordPress SEO -->
25
26<link rel='dns-prefetch' href='//cdn-reach.hostinger.com' />
27<link rel='dns-prefetch' href='//fonts.googleapis.com' />
28<link rel="alternate" type="application/rss+xml" title="ATI Export &raquo; Flux" href="https://goldenrod-pigeon-420491.hostingersite.com/feed/" />
29<link rel="alternate" type="application/rss+xml" title="ATI Export &raquo; Flux des commentaires" href="https://goldenrod-pigeon-420491.hostingersite.com/comments/feed/" />
30<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fgoldenrod-pigeon-420491.hostingersite.com%2Factualites%2F" />
31<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fgoldenrod-pigeon-420491.hostingersite.com%2Factualites%2F&#038;format=xml" />
32<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}</style>
33
34<link data-optimized="1" rel='stylesheet' id='sbr_styles-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/4379f6e28e86bc5f150332002d2e87f5.css?ver=96711' type='text/css' media='all' />
35<link data-optimized="1" rel='stylesheet' id='sbi_styles-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/a5775f4c7650c1eb1e084ab9eee84401.css?ver=7e756' type='text/css' media='all' />
36<link data-optimized="1" rel='stylesheet' id='dripicons-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/59172adc99a0d9c758b286b7da3679df.css?ver=28266' type='text/css' media='all' />
37<link data-optimized="1" rel='stylesheet' id='elegant-icons-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/640166e99eb672c820167ffa6caec035.css?ver=13b3e' type='text/css' media='all' />
38<link data-optimized="1" rel='stylesheet' id='font-awesome-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/c030b719f5cfb2a1d7303f3c9f074025.css?ver=0a214' type='text/css' media='all' />
39<link data-optimized="1" rel='stylesheet' id='ionicons-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/3da2feeabf81c1e2dfe2178f92413fd1.css?ver=da323' type='text/css' media='all' />
40<link data-optimized="1" rel='stylesheet' id='linea-icons-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/f49c3f14dd4a9e0869dca3914d0f4bd9.css?ver=686fd' type='text/css' media='all' />
41<link data-optimized="1" rel='stylesheet' id='linear-icons-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/740554c86d334eea0f32a64c00f70c1a.css?ver=0d4ee' type='text/css' media='all' />
42<link data-optimized="1" rel='stylesheet' id='material-icons-css' href='https://golde
42nrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/19d74a1c61d9b084018bd4466ea0a8e4.css?ver=0a8e4' type='text/css' media='all' />
43<link data-optimized="1" rel='stylesheet' id='simple-line-icons-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/9ad9f484c4bffc487da52850381b0e46.css?ver=3d6ab' type='text/css' media='all' />
44<link data-optimized="1" rel='stylesheet' id='sb-elementor-shared-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/cacca1ef7df0496221129c653e8a580b.css?ver=4f3ec' type='text/css' media='all' />
45<link data-optimized="1" rel='stylesheet' id='cff-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/ae57a3a3474bcb5a84a1a82f773b79ce.css?ver=71773' type='text/css' media='all' />
46<link data-optimized="1" rel='stylesheet' id='sb-font-awesome-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/61ed74f4a9d460e14eeeafa1d904971f.css?ver=f1cdb' type='text/css' media='all' />
47<link data-optimized="1" rel='stylesheet' id='ctf_styles-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/09e3b6cdf3512fcf8b7515a9d4a36c1b.css?ver=bac3c' type='text/css' media='all' />
48<link data-optimized="1" rel='stylesheet' id='sby_common_styles-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/aad8491c6b58b6fdcd216ec49d3ef7bb.css?ver=36a2d' type='text/css' media='all' />
49<link data-optimized="1" rel='stylesheet' id='sby_styles-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/19edfdae125bb79c3e2ce5ac5e426670.css?ver=ee3bb' type='text/css' media='all' />
50<style id='wp-emoji-styles-inline-css' type='text/css'>img.wp-smiley,img.emoji{display:inline!important;border:none!important;box-shadow:none!important;height:1em!important;width:1em!important;margin:0 0.07em!important;vertical-align:-0.1em!important;background:none!important;padding:0!important}</style>
51<link data-optimized="1" rel='stylesheet' id='wp-block-library-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/f559e509c7e5fbbf00be82af66f842cc.css?ver=65949' type='text/css' media='all' />
52<style id='classic-theme-styles-inline-css' type='text/css'>
53/*! This file is auto-generated */
54.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}</style>
55<style id='safe-svg-svg-icon-style-inline-css' type='text/css'>.wp-block-safe-svg-svg-icon a{align-self:center}.safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{fill:currentColor;height:100%;max-height:100%;max-width:100%;width:100%}</style>
56<link data-optimized="1" rel='stylesheet' id='hostinger-reach-subscription-block-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/43c2adfb68d59066ca7e5483240c3b7f.css?ver=44a13' type='text/css' media='all' />
57<style id='global-styles-inline-css' type='text/css'>:root{--wp--preset--aspect-ratio--square:1;--wp--preset--aspect-ratio--4-3:4/3;--wp--preset--aspect-ratio--3-4:3/4;--wp--preset--aspect-ratio--3-2:3/2;--wp--preset--aspect-ratio--2-3:2/3;--wp--preset--aspect-ratio--16-9:16/9;--wp--preset--aspect-ratio--9-16:9/16;--wp--preset--color--black:#000000;--wp--preset--color--cyan-bluish-gray:#abb8c3;--wp--preset--color--white:#ffffff;--wp--preset--color--pale-pink:#f78da7;--wp--preset--color--vivid-red:#cf2e2e;--wp--preset--color--luminous-vivid-orange:#ff6900;--wp--preset--color--luminous-vivid-amber:#fcb900;--wp--preset--color--light-green-cyan:#7bdcb5;--wp--preset--color--vivid-green-cyan:#00d084;--wp--preset--color--pale-cyan-blue:#8ed1fc;
57--wp--preset--color--vivid-cyan-blue:#0693e3;--wp--preset--color--vivid-purple:#9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple:linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan:linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange:linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red:linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray:linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum:linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple:linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux:linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk:linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean:linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass:linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight:linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small:13px;--wp--preset--font-size--medium:20px;--wp--preset--font-size--large:36px;--wp--preset--font-size--x-large:42px;--wp--preset--font-family--inter:"Inter", sans-serif;--wp--preset--font-family--cardo:Cardo;--wp--preset--spacing--20:0.44rem;--wp--preset--spacing--30:0.67rem;--wp--preset--spacing--40:1rem;--wp--preset--spacing--50:1.5rem;--wp--preset--spacing--60:2.25rem;--wp--preset--spacing--70:3.38rem;--wp--preset--spacing--80:5.06rem;--wp--preset--shadow--natural:6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep:12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp:6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined:6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp:6px 6px 0px rgb(0, 0, 0)}:where(.is-layout-flex){gap:.5em}:where(.is-layout-grid){gap:.5em}body .is-layout-flex{display:flex}.is-layout-flex{flex-wrap:wrap;align-items:center}.is-layout-flex>:is(*,div){margin:0}body .is-layout-grid{display:grid}.is-layout-grid>:is(*,div){margin:0}:where(.wp-block-columns.is-layout-flex){gap:2em}:where(.wp-block-columns.is-layout-grid){gap:2em}:where(.wp-block-post-template.is-layout-flex){gap:1.25em}:where(.wp-block-post-template.is-layout-grid){gap:1.25em}.has-black-color{color:var(--wp--preset--color--black)!important}.has-cyan-bluish-gray-color{color:var(--wp--preset--color--cyan-bluish-gray)!important}.has-white-color{color:var(--wp--preset--color--white)!important}.has-pale-pink-color{color:var(--wp--preset--color--pale-pink)!important}.has-vivid-red-color{color:var(--wp--preset--color--vivid-red)!important}.has-luminous-vivid-orange-color{color:var(--wp--preset--color--luminous-vivid-orange)!important}.has-luminous-vivid-amber-color{color:var(--wp--preset--color--luminous-vivid-amber)!important}.has-light-green-cyan-color{color:var(--wp--preset--color--light-green-cyan)!important}.has-vivid-green-cyan-color{color:var(--wp--preset--color--vivid-green-cyan)!important}.has-pale-cyan-blue-color{color:var(--wp--preset--color--pale-cyan-blue)!important}.has-vivid-cyan-blue-color{color:var(--wp--preset--color--vivid-cyan-blue)!important}.has-vivid-purple-color{color:var(--wp--preset--color--vivid-purple)!important}.has-black-background-color{background-color:var(--wp--preset--color--black)!important}.has-cyan-bluish-gray-background-color{background-color:var(--wp--preset--color--cyan-bluish-gray)!important}.has-white-background-color{background-color:var(--wp--preset--color--white)!important}.has-pale-pink-background-color{background-color:var(--wp--preset--color--pale-pink)!important}.has-vivid-red-background-color{background-color:var(--wp--preset--color--vivid-red)!important}.has-luminous-vivid-orange-background-color{background-color:var(--wp--preset--color--luminous-vivid-orange)!important}.has-luminous-vivid-amber-background-color{background-color:var(--wp--preset--color--luminous-vivid-amber)!important}.has-light-green-cyan-background-color{background-color:var(--wp--preset--color--light-green-cyan)!important}.has-vivid-green-cyan-background-color{background-color:var(--wp--preset--color--vivid-green-cyan)!important}.has-pale-cyan-blue-background-color{background-color:var(--wp--preset--color--pale-cyan-blue)!important}.has-vivid-cyan-blue-background-color{background-color:var(--wp--preset--color--vivid-cyan-blue)!important}.has-vivid-purple-background-color{background-color:var(--wp--preset--color--vivid-purple)!important}.has-black-border-color{border-color:var(--wp--preset--color--black)!important}.has-cyan-bluish-gray-border-color{border-color:var(--wp--preset--color--cyan-bluish-gray)!important}.has-white-border-color{border-color:var(--wp--preset--color--white)!important}.has-pale-pink-border-color{border-color:var(--wp--preset--color--pale-pink)!important}.has-vivid-red-border-color{border-color:var(--wp--preset--color--vivid-red)!important}.has-luminous-vivid-orange-border-color{border-color:var(--wp--preset--color--luminous-vivid-orange)!important}.has-luminous-vivid-amber-border-color{border-color:var(--wp--preset--color--luminous-vivid-amber)!important}.has-light-green-cyan-border-color{border-color:var(--wp--preset--color--light-green-cyan)!important}.has-vivid-green-cyan-border-color{border-color:var(--wp--preset--color--vivid-green-cyan)!important}.has-pale-cyan-blue-border-color{border-color:var(--wp--preset--color--pale-cyan-blue)!important}.has-vivid-cyan-blue-border-color{border-color:var(--wp--preset--color--vivid-cyan-blue)!important}.has-vivid-purple-border-color{border-color:var(--wp--preset--color--vivid-purple)!important}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background:var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple)!important}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background:var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan)!important}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background:var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange)!important}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background:var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red)!important}
57.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background:var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray)!important}.has-cool-to-warm-spectrum-gradient-background{background:var(--wp--preset--gradient--cool-to-warm-spectrum)!important}.has-blush-light-purple-gradient-background{background:var(--wp--preset--gradient--blush-light-purple)!important}.has-blush-bordeaux-gradient-background{background:var(--wp--preset--gradient--blush-bordeaux)!important}.has-luminous-dusk-gradient-background{background:var(--wp--preset--gradient--luminous-dusk)!important}.has-pale-ocean-gradient-background{background:var(--wp--preset--gradient--pale-ocean)!important}.has-electric-grass-gradient-background{background:var(--wp--preset--gradient--electric-grass)!important}.has-midnight-gradient-background{background:var(--wp--preset--gradient--midnight)!important}.has-small-font-size{font-size:var(--wp--preset--font-size--small)!important}.has-medium-font-size{font-size:var(--wp--preset--font-size--medium)!important}.has-large-font-size{font-size:var(--wp--preset--font-size--large)!important}.has-x-large-font-size{font-size:var(--wp--preset--font-size--x-large)!important}:where(.wp-block-post-template.is-layout-flex){gap:1.25em}:where(.wp-block-post-template.is-layout-grid){gap:1.25em}:where(.wp-block-term-template.is-layout-flex){gap:1.25em}:where(.wp-block-term-template.is-layout-grid){gap:1.25em}:where(.wp-block-columns.is-layout-flex){gap:2em}:where(.wp-block-columns.is-layout-grid){gap:2em}:root :where(.wp-block-pullquote){font-size:1.5em;line-height:1.6}</style>
58<link data-optimized="1" rel='stylesheet' id='contact-form-7-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/3c362ee193a362565cf2464555559021.css?ver=8368d' type='text/css' media='all' />
59<link data-optimized="1" rel='stylesheet' id='sr7css-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/9c5d63ce4d0c5b53082294b1ddc4cea0.css?ver=5d0bc' type='text/css' media='all' />
60<style id='woocommerce-inline-inline-css' type='text/css'>.woocommerce form .form-row .required{visibility:visible}</style>
61<link data-optimized="1" rel='stylesheet' id='qi-addons-for-elementor-grid-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/96a0673959d276f846217b39e84b277c.css?ver=9b06d' type='text/css' media='all' />
62<link data-optimized="1" rel='stylesheet' id='qi-addons-for-elementor-helper-parts-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/7ac2cc97abfeb9e70d3682a3742808b7.css?ver=1e35a' type='text/css' media='all' />
63<link data-optimized="1" rel='stylesheet' id='qi-addons-for-elementor-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/bc1e3bc2c88edabc93a28376f6d958d4.css?ver=cd477' type='text/css' media='all' />
64<link data-optimized="1" rel='stylesheet' id='perfect-scrollbar-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/a437f993ad4f3c4e2fb9d0f308852c9d.css?ver=11bd5' type='text/css' media='all' />
65<link data-optimized="1" rel='stylesheet' id='stal-main-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/95e621a337095dd54f7ed513de514286.css?ver=f26d3' type='text/css' media='all' />
66<link data-optimized="1" rel='stylesheet' id='stal-core-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/08845ad365342fa90fba7254c2c35d33.css?ver=7a410' type='text/css' media='all' />
67<link data-optimized="1" rel='stylesheet' id='stal-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/d59331fb285e2cc152b95be7a117c6ee.css?ver=38eff' type='text/css' media='all' />
68<style id='stal-style-inline-css' type='text/css'>.qodef-h1 a:hover,h1 a:hover,.qodef-h2 a:hover,h2 a:hover,.qodef-h3 a:hover,h3 a:hover,.qodef-h4 a:hover,h4 a:hover,.qodef-h5 a:hover,h5 a:hover,.qodef-h6 a:hover,h6 a:hover,a:hover,p a:hover,a.qodef-gray-link:hover,blockquote:before,input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus,body .select2-container--default.select2-container--open .select2-selection--multiple,body .select2-container--default.select2-container--open .select2-selection--single,body .select2-container--default .select2-results__option[aria-selected=true],body .select2-container--default .select2-results__option[data-selected=true],body .select2-container--default .select2-results__option--highlighted[aria-selected],#qodef-page-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-item-toggle:hover,#qodef-page-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-item-toggle:hover,#qodef-page-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-header .widget_icl_lang_sel_widget .wpml-ls-legacy-list-horizontal ul li a:hover,#qodef-page-header .widget_icl_lang_sel_widget .wpml-ls-legacy-list-vertical ul li a:hover,#qodef-page-mobile-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-item-toggle:hover,#qodef-page-mobile-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-item-toggle:hover,#qodef-page-mobile-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-mobile-header .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-mobile-header .widget_icl_lang_sel_widget .wpml-ls-legacy-list-horizontal ul li a:hover,#qodef-page-mobile-header .widget_icl_lang_sel_widget .wpml-ls-legacy-list-vertical ul li a:hover,#qodef-page-sidebar .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-item-toggle:hover,#qodef-page-sidebar .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-item-toggle:hover,#qodef-page-sidebar .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-sidebar .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-sidebar .widget_icl_lang_sel_widget .wpml-ls-legacy-list-horizontal ul li a:hover,#qodef-page-sidebar .widget_icl_lang_sel_widget .wpml-ls-legacy-list-vertical ul li a:hover,#qodef-page-footer .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-item-toggle:hover,#qodef-page-footer .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-item-toggle:hover,#qodef-page-footer .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-page-footer .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-side-area .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-item-toggle:hover,#qodef-side-area .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-item-toggle:hover,#qodef-side-area .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown .wpml-ls-sub-menu .wpml-ls-item a:hover,#qodef-side-area .widget_icl_lang_sel_widget .wpml-ls-legacy-dropdown-click .wpml-ls-sub-menu .wpml-ls-item a:hover,.qodef-blog article .qodef-e-info .qodef-e-info-item a:hover,.qodef-blog article .qodef-e-info .qodef-e-info-item.qodef-e-info-category:before,.qodef-blog article .qodef-e-info .qodef-e-info-item.qodef-e-info-date:before,.qodef-blog article .qodef-e-info .qodef-e-info-item.qodef-e-info-tags:before,.qodef-blog article.format-link .qodef-icon-linea-icons,.qodef-blog article.format-quote .qodef-icon-linea-icons,.qodef-blog article.format-quote .qodef-e-quote-author-position,#qodef-page-comments-list .qodef-comment-item .qodef-e-links>.comment-reply-link:after:hover,.qodef-m-filter .qodef-m-filter-item.qodef--active,.qodef-m-filter .qodef-m-filter-item:hover,.wp-block-button.is-style-outline .wp-block-button__link,.wp-block-archives li a:hover,.wp-block-categories li a:hover,.wp-block-latest-posts li a:hover,blockquote.wp-block-pullquote:before,.wp-block-pullquote blockquote:before,.wp-block-quote:before,#qodef-mobile-header-navigation ul li:hover>a,#qodef-mobile-header-navigation ul li.current-menu-ancestor>a,#qodef-mobile-header-navigation ul li.current-menu-item>
68a,.qodef-header-navigation ul li.qodef-menu-item--narrow ul li.current-menu-item>a,.qodef-header-navigation ul li.qodef-menu-item--narrow ul li:hover>a,.qodef-blog.qodef-item-layout--simple article .qodef-e-title a:hover,#qodef-author-info .qodef-m-author-position,.qodef-fullscreen-menu-holder nav.qodef-fullscreen-menu ul li ul li a:hover,.qodef-header--vertical .qodef-header-vertical-navigation ul li a:hover,.qodef-header--vertical .qodef-header-vertical-navigation ul li.current-menu-ancestor>a,.qodef-header--vertical .qodef-header-vertical-navigation ul li.current-menu-item>a,.qodef-header--vertical .qodef-header-vertical-navigation ul li.current_page_item>a,#qodef-page-mobile-header .qodef-mobile-header-logo-link,.qodef-header-navigation ul li.qodef-menu-item--wide .qodef-drop-down-second .qodef-drop-down-second-inner>ul>li ul li.current-menu-item>a,.qodef-header-navigation ul li.qodef-menu-item--wide .qodef-drop-down-second .qodef-drop-down-second-inner>ul>li ul li:hover>a,.qodef-portfolio-single-item .qodef-portfolio-info a:not(.qodef-share-link):hover,.qodef-ps-related-posts-holder .qodef-ps-related-text .qodef-ps-related-categories,.qodef-portfolio-list .qodef-e-info-category a,.qodef-portfolio-list.qodef-item-layout--info-on-hover .qodef-e-content .qodef-e-content-inner .qodef-e-info-category a,.qodef-team-list .qodef-e-role,.qodef-team-list.qodef-item-layout--info-on-hover .qodef-e-social-content.opened .qodef-team-member-social-icon-opener,.qodef-testimonials-list .qodef-e-author-job,.qodef-header--dark .qodef-search-opener.search-icon-in-box .qodef-search-opener-inner,.qodef-accordion.qodef-layout--simple .qodef-accordion-title.ui-state-active,.qodef-accordion.qodef-layout--simple .qodef-accordion-title.ui-state-hover,.qodef-banner .qodef-m-text-field,.qodef-button.qodef-layout--outlined,.qodef-contact-info .qodef-m-vertical-text,.qodef-contact-info .qodef-m-info>div span,.qodef-icon-list-item .qodef-e-title a:hover,.qodef-image-with-text.qodef--with-link .qodef-m-image:hover+.qodef-m-content .qodef-m-title,.qodef-image-with-text.qodef--with-link .qodef-m-title:hover,.qodef-pricing-table .qodef-m-title p,.qodef-pricing-table .qodef-m-content .qodef-icon-ionicons,.qodef-section-title.qodef-title-with-tagline .qodef-m-title-tagline,.qodef-swapping-image-gallery.qodef-title-with-tagline .qodef-m-title-tagline,.qodef-video-button .qodef-m-play,.qodef-side-area-opener:hover,.qodef-social-share.qodef-layout--dropdown .qodef-social-share-dropdown-opener,#qodef-top-area .qodef-woo-dropdown-cart .qodef-woo-dropdown-items a:hover,.qodef-woo-dropdown-cart .qodef-m-order-details .qodef-m-order-amount,.qodef-woo-dropdown-cart .qodef-m-order-details .qodef-m-order-label,.qodef-working-hours-list .qodef-e-day-icon,.qodef-working-hours-list .qodef-e-time.qodef--closed,.qodef-working-hours-list .qodef-m-footer-icon{color:#fdec01}.qodef-theme-button,button[type=submit],input[type=submit],.swiper-button-next:hover,.swiper-button-prev:hover,#qodef-404-page button,.qodef-blog article.format-audio .mejs-controls .mejs-time-rail .mejs-time-current,.qodef-blog.qodef--single article .qodef-e-info.qodef-info--bottom .qodef-e-info-tags a:hover,.wp-block-button .wp-block-button__link,.wp-block-button.is-style-outline .wp-block-button__link:hover,.wp-block-file .wp-block-file__button,.has-primary-background-color,#qodef-back-to-top,#qodef-author-info .qodef-m-social-icons a,#qodef-single-post-navigation .qodef-m-nav.qodef--next:hover .qodef-icon-linea-icons,#qodef-single-post-navigation .qodef-m-nav.qodef--prev:hover .qodef-icon-linea-icons,.qodef-fullscreen-menu-opener.qodef-fullscreen-menu-opener--predefined,#qodef-page-mobile-header #qodef-mobile-header-opener,.qodef-clients-list.qodef-item-layout--image-only.qodef-hover-animation--fade-in .qodef-e .qodef-e-hover-logo .qodef-m-split,.qodef-team-list.qodef-item-layout--info-on-hover .qodef-e-social-content .qodef-team-member-social-icon,.qodef-team-list.qodef-item-layout--info-on-hover .qodef-e-social-content .qodef-team-member-social-icon-opener,.qodef-testimonials-list .swiper-pagination-bullets .swiper-pagination-bullet:before,.qodef-testimonials-l
68ist .swiper-button-next,.qodef-search-opener.search-icon-in-box .qodef-search-opener-inner,.qodef-accordion.qodef-layout--simple .qodef-accordion-title.ui-state-active .qodef-accordion-mark span.qodef-icon,.qodef-accordion.qodef-layout--simple .qodef-accordion-title.ui-state-hover .qodef-accordion-mark span.qodef-icon,.qodef-button.qodef-layout--filled.qodef-html--link,.qodef-button.qodef-layout--outlined:hover,.qodef-button.qodef-layout--splitted,.qodef-button.qodef-layout--splitted:hover,.qodef-icon-list-item .qodef-m-square,.qodef-icon-list-item.qodef-icon--predefined a:before,.qodef-icon-holder.qodef-layout--circle,.qodef-icon-holder.qodef-layout--square,.qodef-image-gallery .swiper-button-next:hover,.qodef-image-gallery .swiper-button-prev:hover,.qodef-side-area-opener.qodef-side-area-opener--predefined,.qodef-social-share.qodef-layout--dropdown.qodef-dropdown--left .qodef-social-share-dropdown li a,.qodef-social-share.qodef-layout--list li a,.qodef-woo-dropdown-cart .qodef-m-opener .qodef-m-opener-count,.qodef-woo-dropdown-cart .qodef-e-quantity,.qodef-woo-dropdown-cart .qodef-m-action-link{background-color:#fdec01}.qodef-header--light #qodef-page-header .qodef-header-logo-link.qodef-textual-logo.has-background-color .qodef-logo-text{background-color:#fdec01!important}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus,.wp-block-button.is-style-outline .wp-block-button__link,.wp-block-button.is-style-outline .wp-block-button__link:hover,#qodef-back-to-top .qodef-back-to-top-icon,.qodef-button.qodef-layout--outlined,.qodef-button.qodef-layout--outlined:hover{border-color:#fdec01}.qodef-mobile-header--standard #qodef-mobile-header-navigation .qodef-m-inner{background-color:#000}.qodef-mobile-header--standard #qodef-page-mobile-header{background-color:#000}</style>
69<link data-optimized="1" rel='stylesheet' id='swiper-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/4643c7dc2ecf8fa66a6f4df4b4f4dd61.css?ver=092cf' type='text/css' media='all' />
70<link data-optimized="1" rel='stylesheet' id='magnific-popup-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/99080f6a1a273e2c9563f784c11f2a29.css?ver=08c4a' type='text/css' media='all' />
71<link data-optimized="1" rel='stylesheet' id='stal-google-fonts-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/17c70bb96ccea51698b5cf1aa59bde1e.css?ver=bde1e' type='text/css' media='all' />
72<link data-optimized="1" rel='stylesheet' id='select2-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/fcaf03bc13b10e63c41f0967a6da8ce6.css?ver=98e77' type='text/css' media='all' />
73<link data-optimized="1" rel='stylesheet' id='stal-core-dashboard-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/927039c37ad4e293196b7ecf65eb7319.css?ver=e8bf9' type='text/css' media='all' />
74<link data-optimized="1" rel='stylesheet' id='trp-language-switcher-v2-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/48827b291eb0de6492ce6145b3522a31.css?ver=5a1ac' type='text/css' media='all' />
75<script type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 75
75
76<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/4bddaeaf30111f51e3ab83faadfc7fe5.js?ver=792ce" id="jquery-migrate-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 76
76
77<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/3e030734c9a08f71c57f85b294d1e01b.js?ver=a236d" id="tp-tools-js" data-wp-strategy="async" defer data-deferred="1"></script>
vendor: 1 bytes, line 77
77
78<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/9d796fd104c068c1881bfc02038a331c.js?ver=415c9" id="sr7-js" data-wp-strategy="async" defer data-deferred="1"></script>
vendor: 1 bytes, line 78
78
79<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/68cf03e6ec9d590ce8508e74943f378a.js?ver=ff08b" id="wc-jquery-blockui-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 79
79
80<script data-optimized="1" type="text/javascript" id="wc-add-to-cart-js-extra" src="data:text/javascript;base64,dmFyIHdjX2FkZF90b19jYXJ0X3BhcmFtcz17ImFqYXhfdXJsIjoiL3dwLWFkbWluL2FkbWluLWFqYXgucGhwIiwid2NfYWpheF91cmwiOiIvP3djLWFqYXg9JSVlbmRwb2ludCUlIiwiaTE4bl92aWV3X2NhcnQiOiJWb2lyIGxlIHBhbmllciIsImNhcnRfdXJsIjoiaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9jYXJ0LyIsImlzX2NhcnQiOiIiLCJjYXJ0X3JlZGlyZWN0X2FmdGVyX2FkZCI6Im5vIn0=" defer></script>
vendor: 1 bytes, line 80
80
81<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/7eb407cb044e4f1b46dee3aec4555b5f.js?ver=f93f8" id="wc-add-to-cart-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 81
81
82<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/50be434e7bb06aa1ad7e8b097eaf7163.js?ver=21fd5" id="wc-js-cookie-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 82
82
83<script data-optimized="1" type="text/javascript" id="woocommerce-js-extra" src="data:text/javascript;base64,dmFyIHdvb2NvbW1lcmNlX3BhcmFtcz17ImFqYXhfdXJsIjoiL3dwLWFkbWluL2FkbWluLWFqYXgucGhwIiwid2NfYWpheF91cmwiOiIvP3djLWFqYXg9JSVlbmRwb2ludCUlIiwiaTE4bl9wYXNzd29yZF9zaG93IjoiQWZmaWNoZXIgbGUgbW90IGRlIHBhc3NlIiwiaTE4bl9wYXNzd29yZF9oaWRlIjoiTWFzcXVlciBsZSBtb3QgZGUgcGFzc2UifQ==" defer></script>
vendor: 1 bytes, line 83
83
84<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/967d9a72fa71473bae72b6ffebba5c02.js?ver=a008c" id="woocommerce-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 84
84
85<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/daacbef64f1c4b1c34090007f40d0d78.js?ver=f0f33" id="trp-frontend-compatibility-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 85
85
86<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/8e02bf272fec46091d4307ee9c1c7043.js?ver=08f02" id="wc-select2-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 86
86
87<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/8de4e67d6e8d62951ba3cbc4347a99db.js?ver=ccf70" id="trp-language-switcher-js-v2-js" defer data-deferred="1"></script>
87
88<link rel="https://api.w.org/" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-json/wp/v2/pages/10087" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://goldenrod-pigeon-420491.hostingersite.com/xmlrpc.php?rsd" />
89<meta name="generator" content="WordPress 6.9.9" />
90<meta name="generator" content="WooCommerce 10.7.0" />
91<link rel='shortlink' href='https://goldenrod-pigeon-420491.hostingersite.com/?p=10087' />
92<link rel="alternate" hreflang="fr-FR" href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/"/>
93<link rel="alternate" hreflang="en-GB" href="https://goldenrod-pigeon-420491.hostingersite.com/en/actualites/"/>
94<link rel="alternate" hreflang="fr" href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/"/>
95<link rel="alternate" hreflang="en" href="https://goldenrod-pigeon-420491.hostingersite.com/en/actualites/"/>
96	<noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript>
97	<meta name="generator" content="Elementor 4.1.4; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap">
98			<style>.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) *{background-image:none!important}@media screen and (max-height:1024px){.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) *{background-image:none!important}}@media screen and (max-height:640px){.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) *{background-image:none!important}}</style>
99			
99<script data-optimized="1" src="data:text/javascript;base64,ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucW9kZWYtaWItaXRlbScpLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7Y29uc3QgbGluaz1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5xb2RlZi1pYi1pdGVtLWJ0bi1ob2xkZXIgYScpO2lmKGxpbmspe2l0ZW0uc3R5bGUuY3Vyc29yPSdwb2ludGVyJztpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPWxpbmsuaHJlZn0pfX0pfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXt2YXIgaXNFbmdsaXNoPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nLnN0YXJ0c1dpdGgoJ2VuJyk7dmFyIGRldmlzSHJlZj1pc0VuZ2xpc2g/J2h0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vZW4vY29udGFjdC11cy8nOidodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL2NvbnRhY3QtdXMvJzt2YXIgZGV2aXNUZXh0PWlzRW5nbGlzaD8nUkVRVUVTVCBBIFFVT1RFJzonREVNQU5ERVIgVU4gREVWSVMnO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5xb2RlZi13aWRnZXQtaG9sZGVyJykuZm9yRWFjaChmdW5jdGlvbihob2xkZXIpe2lmKCFob2xkZXIucXVlcnlTZWxlY3RvcignLmRldmlzLWZhYicpKXt2YXIgYnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtidG4uaHJlZj1kZXZpc0hyZWY7YnRuLmNsYXNzTmFtZT0nZGV2aXMtZmFiJztidG4udGV4dENvbnRlbnQ9ZGV2aXNUZXh0O2hvbGRlci5pbnNlcnRCZWZvcmUoYnRuLGhvbGRlci5maXJzdENoaWxkKX19KX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7dmFyIGNvbnRhY3RIcmVmPSdodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3F1aS1zb21tZXMtbm91cy8jd3BjZjctZjk0NzItcDIxNzQtbzEnO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5xb2RlZi13aWRnZXQtaG9sZGVyJykuZm9yRWFjaChmdW5jdGlvbihob2xkZXIpe2lmKGhvbGRlci5xdWVyeVNlbGVjdG9yKCcuY29udGFjdC1mYWInKSlyZXR1cm47dmFyIGxpbms9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO2xpbmsuaHJlZj1jb250YWN0SHJlZjtsaW5rLmNsYXNzTmFtZT0nY29udGFjdC1mYWInO2xpbmsuaWQ9J2luamVjdGVkLWNvbnRhY3QtYnRuJztsaW5rLnRpdGxlPSdOb3VzIGNvbnRhY3Rlcic7bGluay5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCdOb3VzIGNvbnRhY3RlcicpO2xpbmsuaW5uZXJIVE1MPSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiI+PC9yZWN0PjxwYXRoIGQ9Ik0yMiA2bC0xMCA3TDIgNiI+PC9wYXRoPjwvc3ZnPic7dmFyIGRldmlzQnRuPWhvbGRlci5xdWVyeVNlbGVjdG9yKCcuZGV2aXMtZmFiJyk7aWYoZGV2aXNCdG4pe2RldmlzQnRuLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLGxpbmspfWVsc2V7aG9sZGVyLmluc2VydEJlZm9yZShsaW5rLGhvbGRlci5maXJzdENoaWxkKX19KX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7dmFyIENPTlRBQ1RfSEFTSD0nI3dwY2Y3LWY5NDcyLXAyMTc0LW8xJztmdW5jdGlvbiBzY3JvbGxUb0NvbnRhY3RGb3JtKCl7dmFyIGZvcm09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dwY2Y3LWY5NDcyLXAyMTc0LW8xJyk7aWYoZm9ybSlmb3JtLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSl9CmlmKHdpbmRvdy5sb2NhdGlvbi5oYXNoPT09Q09OVEFDVF9IQVNIKXt2YXIgZG9TY3JvbGw9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KHNjcm9sbFRvQ29udGFjdEZvcm0sMzAwKX07aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSdjb21wbGV0ZScpe2RvU2Nyb2xsKCl9ZWxzZXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsZG9TY3JvbGwpfX0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmKj0iJytDT05UQUNUX0hBU0grJyJdJykuZm9yRWFjaChmdW5jdGlvbihsaW5rKXtsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXt2YXIgZm9ybT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3BjZjctZjk0NzItcDIxNzQtbzEnKTtpZighZm9ybSlyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpO2hpc3RvcnkucHVzaFN0YXRlKG51bGwsJycsQ09OVEFDVF9IQVNIKTtzY3JvbGxUb0NvbnRhY3RGb3JtKCl9KX0pfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXt2YXIgQlJPQ0hVUkVfUERGX1VSTD0naHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9ERVBMSUFOVC0zLVZPTEVUUy0yLnBkZic7dmFyIGlzRW5nbGlzaD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZy5zdGFydHNXaXRoKCdlbicpO3ZhciBJQ09OPSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDN2MTIiPjwvcGF0aD48cGF0aCBkPSJNNyAxMGw1IDUgNS01Ij48L3BhdGg+PHBhdGggZD0iTTQgMTloMTYiPjwvcGF0aD48L3N2Zz4nO2Z1bmN0aW9uIG1ha2VCdXR0b24oZXh0cmFDbGFzcyl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO2EuaHJlZj1CUk9DSFVSRV9QREZfVVJMO2EudGFyZ2V0PSdfYmxhbmsnO2EucmVsPSdub29wZW5lcic7YS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywnJyk7YS5jbGFzc05hbWU9J2Jyb2NodXJlLWJ0bicrKGV4dHJhQ2xhc3M/JyAnK2V4dHJhQ2xhc3M6JycpO2EuaW5uZXJIVE1MPUlDT04rJzxzcGFuPicrKGlzRW5nbGlzaD8nRG93bmxvYWQgYnJvY2h1cmUnOidUw6lsw6ljaGFyZ2VyIGxhIGJyb2NodXJlJykrJzwvc3Bhbj4nO3JldHVybiBhfQpmdW5jdGlvbiBvd25FbGVtZW50b3JBbmNlc3RvcihlbCl7d2hpbGUoZWwmJiEoZWwuY2xhc3NMaXN0JiZlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2VsZW1lbnRvci1lbGVtZW50JykpKXtlbD1lbC5wYXJlbnRFbGVtZW50fQpyZXR1cm4gZWx9CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gyJykuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgdGV4dD1oLnRleHRDb250ZW50LnRyaW0oKS5yZXBsYWNlKC86XHMqJC8sJycpLnRvVXBwZXJDYXNlKCk7aWYodGV4dCE9PSdOT1MgUEFSVEVOQUlSRVMnJiZ0ZXh0IT09J09VUiBQQVJUTkVSUycpcmV0dXJuO3ZhciBoZWFkaW5nQm94PW93bkVsZW1lbnRvckFuY2VzdG9yKGgpO3ZhciBsb2dvc0JveD1oZWFkaW5nQm94JiZoZWFkaW5nQm94Lm5leHRFbGVtZW50U2libGluZztpZighbG9nb3NCb3h8fGxvZ29zQm94LnF1ZXJ5U2VsZWN0b3IoJy5icm9jaHVyZS1idG4nKSlyZXR1cm47bG9nb3NCb3guYXBwZW5kQ2hpbGQobWFrZUJ1dHRvbigpKX0pO2lmKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdwYWdlLWlkLTEwNDc2Jykpe3ZhciBjb3ZlcjE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmVsZW1lbnRvci1lbGVtZW50LTczNzMwODEnKTt2YXIgcGFuZWw9Y292ZXIxJiZjb3ZlcjEuY2xvc2VzdCgnLmF0aS12c3MtcGFuZWwtaXMtdW5pZmllZCcpO2lmKHBhbmVsJiYhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJyb2NodXJlLWJ0bi0tY292ZXInKSl7dmFyIGNvdmVyQnRuPW1ha2VCdXR0b24oJ2Jyb2NodXJlLWJ0bi0tY292ZXInKTt2YXIgYXR0ZW1wdHM9MDsoZnVuY3Rpb24gYnVpbGRQYWlyKCl7dmFyIGhpbnQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbC1kb3duLWhpbnQnKTtpZighaGludCl7aWYoYXR0ZW1wdHMrKzwzMClzZXRUaW1lb3V0KGJ1aWxkUGFpciwxNTApO3JldHVybn0KaWYoaGludC5wYXJlbnROb2RlJiZoaW50LnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdhdGktcGlsbC1wYWlyJykpcmV0dXJuO3ZhciB3cmFwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3dyYXAuY2xhc3NOYW1lPSdhdGktcGlsbC1wYWlyJztoaW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXAsaGludCk7d3JhcC5hcHBlbmRDaGlsZChoaW50KTt3cmFwLmFwcGVuZENoaWxkKGNvdmVyQnRu
99KTtoaW50LnN0eWxlLm9wYWNpdHk9Jyc7aGludC5zdHlsZS50cmFuc2l0aW9uPScnfSkoKX19fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXt2YXIgaGludD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2Nyb2xsLWRvd24taGludCcpO3ZhciB2aWRlbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVyby12aWRlby1jb250YWluZXIgdmlkZW8uZS1zZWxmLWhvc3RlZC12aWRlby1iYXNlJyk7aWYoIWhpbnR8fCF2aWRlbylyZXR1cm47d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT4xMDApe2hpbnQuc3R5bGUub3BhY2l0eT0nMCc7aGludC5zdHlsZS5wb2ludGVyRXZlbnRzPSdub25lJ31lbHNle2hpbnQuc3R5bGUub3BhY2l0eT0nMSc7aGludC5zdHlsZS5wb2ludGVyRXZlbnRzPSdhdXRvJ319KX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7dmFyIHNwbGl0U2xpZGVyUGFnZXM9WzcwMzAsMTAyNyw1NjY3LDU2NjUsNTY2Nl07dmFyIGJvZHlDbGFzc2VzPWRvY3VtZW50LmJvZHkuY2xhc3NOYW1lO3ZhciBvblNwbGl0UGFnZT1zcGxpdFNsaWRlclBhZ2VzLnNvbWUoZnVuY3Rpb24oaWQpe3JldHVybiBib2R5Q2xhc3Nlcy5pbmRleE9mKCdwYWdlLWlkLScraWQpIT09LTF9KTtpZighb25TcGxpdFBhZ2UpcmV0dXJuO3ZhciBvcGVuZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnFvZGVmLWZ1bGxzY3JlZW4tbWVudS1vcGVuZXInKTt2YXIgaGVhZGVySW5uZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3FvZGVmLXBhZ2UtaGVhZGVyLWlubmVyJyk7aWYoIW9wZW5lcnx8IWhlYWRlcklubmVyKXJldHVybjtvcGVuZXIuc3R5bGUuZGlzcGxheT0nbm9uZSc7aGVhZGVySW5uZXIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLGAKICAgIDxuYXYgY2xhc3M9InFvZGVmLWhlYWRlci1uYXZpZ2F0aW9uIiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJUb3AgTWVudSI+CiAgICAgIDx1bCBpZD0icW9kZWYtbWFpbi1uYXZpZ2F0aW9uLW1lbnUiIGNsYXNzPSJtZW51Ij4KICAgICAgICA8bGkgY2x
99hc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS1ob21lIG1lbnUtaXRlbS02MDY4Ij48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tLyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5BY2N1ZWlsPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS01MzY2Ij48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3F1aS1zb21tZXMtbm91cy8iPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0taW5uZXIiPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0tdGV4dCI+UXVpIFNvbW1lcyBOb3VzPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gbWVudS1pdGVtLTU1OTcgcW9kZWYtbWVudS1pdGVtLS1uYXJyb3ciPjxhIGhyZWY9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vbm9zLXNlcnZpY2VzLyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5Ob3MgU2VydmljZXM8L3NwYW4+PC9zcGFuPjwvYT48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1hcnJvdyI+PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icW9kZWYtZHJvcC1kb3duLXNlY29uZCI+PGRpdiBjbGFzcz0icW9kZWYtZHJvcC1kb3duLXNlY29uZC1pbm5lciI+PHVsIGNsYXNzPSJzdWItbWVudSI+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTcwMzYiPjxhIGhyZWY9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vYWNoYXQtaW5kdXN0cmllbC8iPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0taW5uZXIiPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0tdGV4dCI+QWNoYXQgSW5kdXN0cmllbDwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTU2NzUiPjxhIGhyZWY9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vc291cmNpbmcvIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLWlubmVyIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLXRleHQiPlNvdXJjaW5nPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLTU2NjUiPjxhIGhyZWY9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vbG9naXN0aXF1ZS8iPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0taW5uZXIiPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0tdGV4dCI+TG9naXN0aXF1ZTwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS01NjY3Ij48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL2V4cG9ydC1pbnRlcm5hdGlvbmFsLXRyYW5zcG9ydC8iPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0taW5uZXIiPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0tdGV4dCI+RXhwb3J0IEludGVybmF0aW9uYWwvVHJhbnNwb3J0PC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tNTY3NyI+PGEgaHJlZj0iaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9zdXBwbHktY2hhaW4vIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLWlubmVyIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLXRleHQiPlN1cHBseSBjaGFpbjwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICA8L3VsPjwvZGl2PjwvZGl2PgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0taGFzLWNoaWxkcmVuIG1lbnUtaXRlbS02NzA4IHFvZGVmLW1lbnUtaXRlbS0tbmFycm93Ij48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3NlY3RldXJzLyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5TZWN0ZXVycyBkJ2FjdGl2aXRlPC9zcGFuPjwvc3Bhbj48L2E+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtYXJyb3ciPjwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InFvZGVmLWRyb3AtZG93bi1zZWNvbmQiPjxkaXYgY2xhc3M9InFvZGVmLWRyb3AtZG93bi1zZWNvbmQtaW5uZXIiPjx1bCBjbGFzcz0ic3ViLW1lbnUiPgogICAgICAgICAgICA8bGkgY2x
99hc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS01NTg3Ij48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL2Fncm9hbGltZW50YWlyZS8iPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0taW5uZXIiPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0tdGV4dCI+QWdyb2FsaW1lbnRhaXJlPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tNTY1NCI+PGEgaHJlZj0iaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9idHAvIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLWlubmVyIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLXRleHQiPkJUUDwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTU2NTMiPjxhIGhyZWY9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vbWluaWVyLyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5NaW5pZXI8L3NwYW4+PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICA8bGkgY2x
99hc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS01NjUyIj48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3BldHJvbGllci8iPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0taW5uZXIiPjxzcGFuIGNsYXNzPSJxb2RlZi1tZW51LWl0ZW0tdGV4dCI+UGV0cm9saWVyPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tNTY1NSI+PGEgaHJlZj0iaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9lbmVyZ2llLyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5FbmVyZ2llPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tNjMxNyI+PGEgaHJlZj0iaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9hdXRvbW9iaWxlLyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5BdXRvbW9iaWxlPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tNjMxNiI+PGEgaHJlZj0iaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9hZXJvbmF1dGlxdWUvIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLWlubmVyIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLXRleHQiPkFlcm9uYXV0aXF1ZTwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTYzMTgiPjxhIGhyZWY9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vZmVycm92aWFpcmUvIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLWlubmVyIj48c3BhbiBjbGFzcz0icW9kZWYtbWVudS1pdGVtLXRleHQiPkZlcnJvdmlhaXJlPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgIDwvdWw+PC9kaXY+PC9kaXY+CiAgICAgICAgPC9saT4KICAgICAgICA8bGkgY2x
99hc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS02NjAyIj48YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3JlY3J1dGVtZW50LyI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS1pbm5lciI+PHNwYW4gY2xhc3M9InFvZGVmLW1lbnUtaXRlbS10ZXh0Ij5SZWNydXRlbWVudDwvc3Bhbj48L3NwYW4+PC9hPjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L25hdj4KICAgIDxkaXYgY2xhc3M9InFvZGVmLXdpZGdldC1ob2xkZXIiPgogICAgICA8YSBocmVmPSJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL2NvbnRhY3QtdXMvIiBjbGFzcz0iZGV2aXMtZmFiIiBpZD0iaW5qZWN0ZWQtZGV2aXMtYnRuIj5ERU1BTkRFUiBVTiBERVZJUzwvYT4KICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0IHdpZGdldF9zdGFsX2NvcmVfc2lkZV9hcmVhX29wZW5lciBxb2RlZi1oZWFkZXItd2lkZ2V0LWFyZWEtb25lIj4KICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0icW9kZWYtc2lkZS1hcmVhLW9wZW5lciBxb2RlZi1zaWRlLWFyZWEtb3BlbmVyLS1wcmVkZWZpbmVkIiBocmVmPSIjIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJxb2RlZi1saW5lcyI+PHNwYW4gY2xhc3M9InFvZGVmLWxpbmUgcW9kZWYtbGluZS0xIj48L3NwYW4+PHNwYW4gY2xhc3M9InFvZGVmLWxpbmUgcW9kZWYtbGluZS0yIj48L3NwYW4+PHNwYW4gY2xhc3M9InFvZGVmLWxpbmUgcW9kZWYtbGluZS0zIj48L3NwYW4+PHNwYW4gY2xhc3M9InFvZGVmLWxpbmUgcW9kZWYtbGluZS00Ij48L3NwYW4+PHNwYW4gY2xhc3M9InFvZGVmLWxpbmUgcW9kZWYtbGluZS01Ij48L3NwYW4+PC9zcGFuPgogICAgICAgIDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGlzRW5nbGlzaD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZy5zdGFydHNXaXRoKCdlbicpO3ZhciBiYXNlVXJsPSdodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tJzt2YXIgZW5CYXNlPWJhc2VVcmwrJy9lbic7aWYoaXNFbmdsaXNoKXtoZWFkZXJJbm5lci5xdWVyeVNlbGVjdG9yQWxsKCcucW9kZWYtaGVhZGVyLW5hdmlnYXRpb24gYVtocmVmXScpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGhyZWY9YS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtpZihocmVmJiZocmVmLnN0YXJ0c1dpdGgoYmFzZVVybCkmJiFocmVmLnN0YXJ0c1dpdGgoZW5CYXNlKSl7YS5ocmVmPWhyZWYucmVwbGFjZShiYXNlVXJsLGVuQmFzZSl9fSk7dmFyIGRldmlzQnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmplY3RlZC1kZXZpcy1idG4nKTtpZihkZXZpc0J0bil7ZGV2aXNCdG4uaHJlZj0naHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS9lbi9jb250YWN0LXVzLyc7ZGV2aXNCdG4udGV4dENvbnRlbnQ9J1JFUVVFU1QgQSBRVU9URSd9fQp2YXIgY3VycmVudFVybD13aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKC9cLyQvLCcnKTt2YXIgbmF2TGlua3M9aGVhZGVySW5uZXIucXVlcnlTZWxlY3RvckFsbCgnLnFvZGVmLWhlYWRlci1uYXZpZ2F0aW9uIC5tZW51LWl0ZW0gPiBhJyk7bmF2TGlua3MuZm9yRWFjaChmdW5jdGlvbihsaW5rKXt2YXIgbGlua1VybD1saW5rLmhyZWYucmVwbGFjZSgvXC8kLywnJyk7aWYobGlua1VybD09PWN1cnJlbnRVcmwpe2xpbmsucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjdXJyZW50LW1lbnUtaXRlbScpfQp2YXIgc3ViTGlua3M9bGluay5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdWItbWVudSAubWVudS1pdGVtID4gYScpO3N1YkxpbmtzLmZvckVhY2goZnVuY3Rpb24oc3ViTGluayl7aWYoc3ViTGluay5ocmVmLnJlcGxhY2UoL1wvJC8sJycpPT09Y3VycmVudFVybCl7bGluay5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2N1cnJlbnQtbWVudS1hbmNlc3RvcicpO3N1YkxpbmsucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjdXJyZW50LW1lbnUtaXRlbScpfX0pfSl9LDEwMCl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYmFubmVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xb2RlZi1pbnRlcmFjdGl2ZS1iYW5uZXJzJyk7aWYoIWJhbm5lcilyZXR1cm47aWYoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdob21lJykpcmV0dXJuO2lmKHdpbmRvdy5pbm5lcldpZHRoPD0xMDI0KXJldHVybjt2YXIgaXRlbXM9YmFubmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5xb2RlZi1pYi1pdGVtJyk7aWYoaXRlbXMubGVuZ3RoPT09MClyZXR1cm47dmFyIGltYWdlc0hvbGRlcj1iYW5uZXIucXVlcnlTZWxlY3RvcignLnFvZGVmLWliLWltYWdlcy1ob2xkZXInKTt2YXIgY29udGVudEhvbGRlcj1iYW5uZXIucXVlcnlTZWxlY3RvcignLnFvZGVmLWliLWNvbnRlbnQtaG9sZGVyJyk7aWYoIWNvbnRlbnRIb2xkZXIpcmV0dXJuO3ZhciB0b3RhbD1pdGVtcy5sZW5ndGg7dmFyIHZpc2libGU9NTt2YXIgY3VycmVudD0wO3ZhciBiYW5uZXJXaWR0aD1iYW5uZXIub2Zmc2V0V2lkdGg7dmFyIGNvbHVtblB4PWJhbm5lcldpZHRoL3Zpc2libGU7aXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKXtpdGVtLnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsY29sdW1uUHgrJ3B4JywnaW1wb3J0YW50Jyk7aXRlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWF4LXdpZHRoJyxjb2x1bW5QeCsncHgnLCdpbXBvcnRhbnQnKTtpdGVtLnN0eWxlLnNldFByb3BlcnR5KCdmbGV4JywnMCAwICcrY29sdW1uUHgrJ3B4JywnaW1wb3J0YW50Jyl9KTtjb250ZW50SG9sZGVyLnN0eWxlLnNldFByb3BlcnR5KCdkaXNwbGF5J
99ywnZmxleCcsJ2ltcG9ydGFudCcpO2NvbnRlbnRIb2xkZXIuc3R5bGUuc2V0UHJvcGVydHkoJ2ZsZXgtZGlyZWN0aW9uJywncm93JywnaW1wb3J0YW50Jyk7Y29udGVudEhvbGRlci5zdHlsZS5zZXRQcm9wZXJ0eSgnZmxleC13cmFwJywnbm93cmFwJywnaW1wb3J0YW50Jyk7Y29udGVudEhvbGRlci5zdHlsZS5zZXRQcm9wZXJ0eSgndHJhbnNpdGlvbicsJ3RyYW5zZm9ybSAwLjRzIGVhc2UnLCdpbXBvcnRhbnQnKTtjb250ZW50SG9sZGVyLnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsKGNvbHVtblB4KnRvdGFsKSsncHgnLCdpbXBvcnRhbnQnKTtjb250ZW50SG9sZGVyLnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsJ3JlbGF0aXZlJywnaW1wb3J0YW50Jyk7Y29udGVudEhvbGRlci5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lsbC1jaGFuZ2UnLCd0cmFuc2Zvcm0nLCdpbXBvcnRhbnQnKTtiYW5uZXIuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywnaGlkZGVuJywnaW1wb3J0YW50Jyk7YmFubmVyLnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsJ3JlbGF0aXZlJywnaW1wb3J0YW50Jyk7dmFyIGl0ZW1IZWlnaHQ9d2luZG93LmlubmVySGVpZ2h0LTg2LTM1O2l0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7aXRlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JyxpdGVtSGVpZ2h0KydweCcsJ2ltcG9ydGFudCcpO2l0ZW0uc3R5bGUuc2V0UHJvcGVydHkoJ21pbi1oZWlnaHQnLGl0ZW1IZWlnaHQrJ3B4JywnaW1wb3J0YW50Jyl9KTtiYW5uZXIuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsaXRlbUhlaWdodCsncHgnLCdpbXBvcnRhbnQnKTtpZihpbWFnZXNIb2xkZXIpe2ltYWdlc0hvbGRlci5zdHlsZS5kaXNwbGF5PSdub25lJ30KaWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYW5uZXItbG9nby1vdmVybGF5Jykpe3ZhciBvdmVybGF5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO292ZXJsYXkuaWQ9J2Jhbm5lci1sb2dvLW92ZXJsYXknO292ZXJsYXkuaW5uZXJIVE1MPSc8aW1nIHNyYz0iaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNi9sb2dvLXNsb2dhbi1zY2FsZWQucG5nIiBhbHQ9IkFUSSBFeHBvcnQiIC8+JztiYW5uZXIuYXBwZW5kQ2hpbGQob3ZlcmxheSl9CnZhciBjb2x1bW5CZ3M9W107aXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGluZGV4KXtpdGVtLnN0eWxlLnBvc2l0aW9uPSdyZWxhdGl2ZSc7dmFyIGJnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2JnLmNsYXNzTmFtZT0naWItY29sdW1uLWJnJztiZy5zdHlsZS5jc3NUZXh0PSdwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MDtwb2ludGVyLWV2ZW50czpub25lOycrJ2JhY2tncm91bmQtaW1hZ2U6dXJsKCJodHRwczovL2lrLmltYWdla2l0LmlvL3JubG9ubWd1by9QYWdlJTIwZGUlMjBndWFyZGUlMjA1MS5wbmciKTsnKydiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7JztpdGVtLmluc2VydEJlZm9yZShiZyxpdGVtLmZpcnN0Q2hpbGQpO2NvbHVtbkJncy5wdXNoKGJnKX0pO3ZhciBkaW1tZXJzPVtdO2l0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7dmFyIGRpbW1lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtkaW1tZXIuc3R5bGUuY3NzVGV4dD0ncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3MgZWFzZTt6LWluZGV4OjU7cG9pbnRlci1ldmVudHM6bm9uZSc7aXRlbS5hcHBlbmRDaGlsZChkaW1tZXIpO2RpbW1lcnMucHVzaChkaW1tZXIpfSk7aXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGluZGV4KXtpdGVtLnN0eWxlLnRyYW5zaXRpb249J3RyYW5zZm9ybSAwLjM1cyBlYXNlLCBib3gtc2hhZG93IDAuMzVzIGVhc2UnO2l0ZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsZnVuY3Rpb24oKXtpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKG90aGVyLGkpe2lmKGkhPT1pbmRleCl7ZGltbWVyc1tpXS5zdHlsZS5iYWNrZ3JvdW5kPSdyZ2JhKDAsMCwwLDAuODUpJ31lbHNle2RpbW1lcnNbaV0uc3R5bGUuYmFja2dyb3VuZD0ncmdiYSgwLDAsMCwwKSc7b3RoZXIuc3R5bGUudHJhbnNmb3JtPSdzY2FsZSgxLjA0KSc7b3RoZXIuc3R5bGUuekluZGV4PScxMCc7b3RoZXIuc3R5bGUub3ZlcmZsb3c9J3Zpc2libGUnO290aGVyLnN0eWxlLmJveFNoYWRvdz0nMCAwIDMwcHggcmdiYSgwLDAsMCwwLjgpJ319KX0pO2l0ZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXtpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKG90aGVyLGkpe2RpbW1lcnNbaV0uc3R5bGUuYmFja2dyb3VuZD0ncmdiYSgwLDAsMCwwKSc7b3RoZXIuc3R5bGUudHJhbnNmb3JtPScnO290aGVyLnN0eWxlLnpJbmRleD0nJztvdGhlci5zdHlsZS5vdmVyZmxvdz0naGlkZGVuJztvdGhlci5zdHlsZS5ib3hTaGFkb3c9Jyd9KX0pfSk7dmFyIHByZXZCdG4sbmV4dEJ0bjtpZighYmFubmVyLnF1ZXJ5U2VsZWN0b3IoJy5pYi1uYXYtcHJldicpKXtwcmV2QnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO3ByZXZCdG4uaW5uZXJIVE1MPSdTQ1JPTEwnO3ByZXZCdG4uY2xhc3NOYW1lPSdpYi1zY3JvbGwtcGlsbCBpYi1uYXYtcHJldic7cHJldkJ0bi5zdHlsZS5jc3NUZXh0PSdwb3NpdGlvbjpmaXhlZDt0b3A6NTAlO2xlZnQ6MTBweDt6LWluZGV4Ojk5OTk7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojZmRlYzAxO2NvbG9yOiMwMDA7cGFkZGluZzoxNXB4IDEwcHg7Ym9yZGVyLXJhZGl1czo1MHB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzoycHg7Ym9yZGVyOm5vbmU7d3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyO3RleHQtb3JpZW50YXRpb246dXByaWdodDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTthbmltYXRpb246c2Nyb2xsQm91bmNlTGVmdCAwLjlzIGVhc2UtaW4tb3V0IGluZmluaXRlOyc7bmV4dEJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtuZXh0QnRuLmlubmVySFRNTD0nU0NST0xMJztuZXh0QnRuLmNsYXNzTmFtZT0naWItc2Nyb2xsLXBpbGwgaWItbmF2LW5leHQnO25leHRCdG4uc3R5bGUuY3NzVGV4dD0ncG9zaXRpb246Zml4ZWQ7dG9wOjUwJTtyaWdodDoxMHB4O3otaW5kZXg6OTk5OTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZGVjMDE7Y29sb3I6IzAwMDtwYWRkaW5nOjE1cHggMTBweDtib3JkZXItcmFkaXVzOjUwcHg7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOjJweDtib3JkZXI6bm9uZTt3cml0aW5nLW1vZGU6dmVydGljYWwtbHI7dGV4dC1vcmllbnRhdGlvbjp1cHJpZ2h0O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2FuaW1hdGlvbjpzY3JvbGxCb3VuY2VSaWdodCAwLjlzIGVhc2UtaW4tb3V0IGluZmluaXRlOyc7YmFubmVyLmFwcGVuZENoaWxkKHByZXZCdG4pO2Jhbm5lci5hcHBlbmRDaGlsZChuZXh0QnRuKX1lbHNle3ByZXZCdG49YmFubmVyLnF1ZXJ5U2VsZWN0b3IoJy5pYi1uYXYtcHJldicpO25leHRCdG49YmFubmVyLnF1ZXJ5U2VsZWN0b3IoJy5pYi1uYXYtbmV4dCcpfQpmdW5jdGlvbiBhcHBseUxheW91dCgpe2Jhbm5lcldpZHRoPWJhbm5lci5vZmZzZXRXaWR0aDtjb2x1bW5QeD1iYW5uZXJXaWR0aC92aXNpYmxlO2l0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7aXRlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lkdGgnLGNvbHVtblB4KydweCcsJ2ltcG9ydGFudCcpO2l0ZW0uc3R5bGUuc2V0UHJvcGVydHkoJ21heC13aWR0aCcsY29sdW1uUHgrJ3B4JywnaW1wb3J0YW50Jyk7aXRlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnZmxleCcsJzAgMCAnK2NvbHVtblB4KydweCcsJ2ltcG9ydGFudCcpfSk
997Y29udGVudEhvbGRlci5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lkdGgnLChjb2x1bW5QeCp0b3RhbCkrJ3B4JywnaW1wb3J0YW50Jyk7Y29udGVudEhvbGRlci5zdHlsZS5zZXRQcm9wZXJ0eSgndHJhbnNmb3JtJywndHJhbnNsYXRlWCgtJysoY3VycmVudCpjb2x1bW5QeCkrJ3B4KScsJ2ltcG9ydGFudCcpO3ZhciBuZXdJdGVtSGVpZ2h0PXdpbmRvdy5pbm5lckhlaWdodC04Ni0zNTtpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pe2l0ZW0uc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsbmV3SXRlbUhlaWdodCsncHgnLCdpbXBvcnRhbnQnKTtpdGVtLnN0eWxlLnNldFByb3BlcnR5KCdtaW4taGVpZ2h0JyxuZXdJdGVtSGVpZ2h0KydweCcsJ2ltcG9ydGFudCcpfSk7YmFubmVyLnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLG5ld0l0ZW1IZWlnaHQrJ3B4JywnaW1wb3J0YW50Jyk7Y29sdW1uQmdzLmZvckVhY2goZnVuY3Rpb24oYmcsaSl7Ymcuc3R5bGUuYmFja2dyb3VuZFNpemU9KGNvbHVtblB4KnRvdGFsKSsncHggMTAwJSc7Ymcuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPS0oY29sdW1uUHgqaSkrJ3B4IDAlJ30pO3ByZXZCdG4uc3R5bGUuZGlzcGxheT1jdXJyZW50PT09MD8nbm9uZSc6J2ZsZXgnO25leHRCdG4uc3R5bGUuZGlzcGxheT1jdXJyZW50Pj10b3RhbC12aXNpYmxlPydub25lJzonZmxleCd9CnByZXZCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7aWYoY3VycmVudD4wKXtjdXJyZW50LS07YXBwbHlMYXlvdXQoKX19KTtuZXh0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2lmKGN1cnJlbnQ8dG90YWwtdmlzaWJsZSl7Y3VycmVudCsrO2FwcGx5TGF5b3V0KCl9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsYXBwbHlMYXlvdXQpO3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JlcXVlc3RBbmltYXRpb25GcmFtZShhcHBseUxheW91dCl9KX0sNjAwKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdxb2RlZi1oZWFkZXItYXBwZWFyYW5jZS0tc3RpY2t5Jykpe2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgncW9kZWYtaGVhZGVyLWFwcGVhcmFuY2UtLXN0aWNreScpO2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgncW9kZWYtY29udGVudC1iZWhpbmQtaGVhZGVyJyl9fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3BhZ2UtaWQtMTAyNycpKXJldHVybjt2YXIgaGludD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtoaW50LmNsYXNzTmFtZT0nc2Nyb2xsLWRvd24taGludCc7aGludC5pbm5lckhUTUw9J1NDUk9MTCBET1dOJztoaW50LnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoaW50KTtmdW5jdGlvbiB1cGRhdGVIaW50KCl7aWYoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ21zLXZpZXdpbmctMicpKXtoaW50LnN0eWxlLm9wYWNpdHk9JzAnO2hpbnQuc3R5bGUucG9pbnRlckV2ZW50cz0nbm9uZSd9ZWxzZXtoaW50LnN0eWxlLm9wYWNpdHk9JzEnO2hpbnQuc3R5bGUucG9pbnRlckV2ZW50cz0nYXV0byd9fQpoaW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3ZhciBldmVudD1uZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicse2tleUNvZGU6NDAsd2hpY2g6NDAsYnViYmxlczohMH0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpfSk7dmFyIG9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZUhpbnQpO29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WydjbGFzcyddfSk7dXBkYXRlSGludCgpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3BhZ2UtaWQtNzAzMCcpKXJldHVybjt2YXIgaGludD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtoaW50LmNsYXNzTmFtZT0nc2Nyb2xsLWRvd24taGludCc7aGludC5pbm5lckhUTUw9J1NDUk9MTCBET1dOJztoaW50LnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoaW50KTtmdW5jdGlvbiB1cGRhdGVIaW50KCl7aWYoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ21zLXZpZXdpbmctMScpKXtoaW50LnN0eWxlLm9wYWNpdHk9JzAnO2hpbnQuc3R5bGUucG9pbnRlckV2ZW50cz0nbm9uZSd9ZWxzZXtoaW50LnN0eWxlLm9wYWNpdHk9JzEnO2hpbnQuc3R5bGUucG9pbnRlckV2ZW50cz0nYXV0byd9fQpoaW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3ZhciBldmVudD1uZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicse2tleUNvZGU6NDAsd2hpY2g6NDAsYnViYmxlczohMH0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpfSk7dmFyIG9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZUhpbnQpO29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WydjbGFzcyddfSk7dXBkYXRlSGludCgpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3BhZ2UtaWQtNTY2NycpKXJldHVybjt2YXIgaGludD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtoaW50LmNsYXNzTmFtZT0nc2Nyb2xsLWRvd24taGludCc7aGludC5pbm5lckhUTUw9J1NDUk9MTCBET1dOJztoaW50LnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoaW50KTtmdW5jdGlvbiB1cGRhdGVIaW50KCl7aWYoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ21zLXZpZXdpbmctMScpKXtoaW50LnN0eWxlLm9wYWNpdHk9JzAnO2hpbnQuc3R5bGUucG9pbnRlckV2ZW50cz0nbm9uZSd9ZWxzZXtoaW50LnN0eWxlLm9wYWNpdHk9JzEnO2hpbnQuc3R5bGUucG9pbnRlckV2ZW50cz0nYXV0byd9fQpoaW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3ZhciBldmVudD1uZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicse2tleUNvZGU6NDAsd2hpY2g6NDAsYnViYmxlczohMH0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpfSk7dmFyIG9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKHVwZGF0ZUhpbnQpO29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WydjbGFzcyddfSk7dXBkYXRlSGludCgpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3BhZ2UtaWQtMjE3NCcpKXJldHVybjt2YXIgaGludD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtoaW50LmNsYXNzTmFtZT0nc2Nyb2xsLWRvd24taGludCc7aGludC5pbm5lckhUTUw9J1NDUk9MTCBET1dOJztoaW50LnN0eWxlLmN1cnNvcj0ncG9pbnRlcic7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoaW50KTtoaW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3dpbmRvdy5zY3JvbGxCeSh7dG9wOndpbmRvdy5pbm5lckhlaWdodCxiZWhhdmlvcjonc21vb3RoJ30pfSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT4xMDApe2hpbnQuc3R5bGUub3BhY2l0eT0nMCc7aGludC5zdHlsZS5wb2ludGVyRXZlbnRzPSdub25lJ31lbHNle2hpbnQuc3R5bGUub3BhY2l0eT0nMSc7aGludC5zdHlsZS5wb2ludGVyRXZlbnRzPSdhdXRvJ319KX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdwYWdlLWlkLTU2NjUnKSlyZXR1cm47dmFyIHN0eWxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7c3R5bGUuaW5uZXJIVE1MPScubXMtc2VjdGlvbiB7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOyB9Jztkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1zLXNlY3Rpb24nKS5mb3JFYWNoKGZ1bmN0aW9uKHNlY3Rpb24pe3NlY3Rpb24uc3R5bGUub3BhY2l0eT0nMSd9KX0sNjAwKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdwYWdlLWlkLTkyMycpKXJldHVybjtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHNlbGVjdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0Jyk7aWYoIXNlbGVjdClyZXR1cm47WzEsMjNdLmZvckVhY2goZnVuY3Rpb24oaWQpe3ZhciBvcHRpb249c2VsZWN0LnF1ZXJ5U2VsZWN0b3IoJ29wdGlvblt2YWx1ZT0iJytpZCsnIl0nKTtpZihvcHRpb24pb3B0aW9uLnJlbW92ZSgpO30pfSw1MDApfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGxpbmtzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJhbHRlcm5hdGUiXVtocmVmbGFuZ10nKTt2YXIgdXJscz17fTtsaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe2lmKGwuaHJlZmxhbmc9PT0nZnItRlInfHxsLmhyZWZsYW5nPT09J2ZyJyl1cmxzLmZyPWwuaHJlZjtpZihsLmhyZWZsYW5nPT09J2VuLUdCJ3x8bC5ocmVmbGFuZz09PSdlbicpdXJscy5lbj1sLmhyZWZ9KTtpZighdXJscy5mcnx8IXVybHMuZW4pcmV0dXJuO3ZhciBpc0ZSPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nLnN0YXJ0c1dpdGgoJ2ZyJyk7dmFyIHRhcmdldFVybD1pc0ZSP3VybHMuZW46dXJscy5mcjt2YXIgdGFyZ2V0TGFiZWw9aXNGUj8nRU4nOidGUic7dmFyIGZsYWdTcmM9aXNGUj8naHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3BsdWdpbnMvdHJhbnNsYXRlcHJlc3MtbXVsdGlsaW5ndWFsL2Fzc2V0cy9mbGFncy8xeDEvZW5fR0Iuc3ZnJzonaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3BsdWdpbnMvdHJhbnNsYXRlcHJlc3MtbXVsdGlsaW5ndWFsL2Fzc2V0cy9mbGFncy8xeDEvZnJfRlIuc3ZnJztmdW5jdGlvbiBidWlsZFN3aXRjaGVyKGV4dHJhQ2xhc3Mpe3ZhciBuYXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO25hdi5ocmVmPXRhcmdldFVybDtuYXYuY2xhc3NOYW1lPSdxb2RlZi1sYW5nLXN3aXRjaGVyICcrZXh0cmFDbGFzcztuYXYuc2V0QXR0cmlidXRlKCdkYXRhLW5vLXRyYW5zbGF0aW9uJywnJyk7bmF2LmlubmVySFRNTD0nPGltZyBzcmM9IicrZmxhZ1NyYysnIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHN0eWxlPSJib3JkZXItcmFkaXVzOjJweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IiAvPjxzcGFuPicrdGFyZ2V0TGFiZWwrJzwvc3Bhbj4nO3JldHVybiBuYXZ9CnZhciBtb2JpbGVIZWFkZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3FvZGVmLXBhZ2UtbW9iaWxlLWhlYWRlci1pbm5lcicpO3ZhciBoYW1idXJnZXI9bW9iaWxlSGVhZGVyP21vYmlsZUhlYWRlci5xdWVyeVNlbGVjdG9yKCcucW9kZWYtZnVsbHNjcmVlbi1tZW51LW9wZW5lcicpOm51bGw7aWYobW9iaWxlSGVhZGVyJiZoYW1idXJnZXIpe21vYmlsZUhlYWRlci5pbnNlcnRCZWZvcmUoYnVpbGRTd2l0Y2hlcigncW9kZWYtbGFuZy1tb2JpbGUnKSxoYW1idXJnZXIpfQp2YXIgZGVza3RvcEhlYWRlcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncW9kZWYtcGFnZS1oZWFkZXItaW5uZXInKTtpZihkZXNrdG9wSGVhZGVyKXtkZXNrdG9wSGVhZGVyLmFwcGVuZENoaWxkKGJ1aWxkU3dpdGNoZXIoJ3FvZGVmLWxhbmctZGVza3RvcCcpKX0KdmFyIHN0aWNreUhlYWRlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucW9kZWYtaGVhZGVyLXN0aWNreS1pbm5lcicpO2lmKHN0aWNreUhlYWRlcil7c3RpY2t5SGVhZGVyLmFwcGVuZENoaWxkKGJ1aWxkU3dpdGNoZXIoJ3FvZGVmLWxhbmctZGVza3RvcCcpKX19LDYwMCl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxmdW5jdGlvbigpe2lmKHdpbmRvdy5pbm5lcldpZHRoPjEwMjQpcmV0dXJuO3ZhciBpbWFnZXM9WydodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L0Fncm8tbW9iaWxlLnBuZycsJ2h0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDYvQlRQLW1vYmlsZS5wbmcnLCdodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L01pbmllci1tb2JpbGUucG5nJywnaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNi9QZXRyb2xpZXItbW9iaWxlLnBuZycsJ2h0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDYvRW5lcmdpZS1tb2JpbGUucG5nJywnaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNi9BdXRvLW1vYmlsZS5wbmcnLCdodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L0Flcm8tbW9iaWxlLnBuZycsJ2h0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDYvRmVycm8tbW9iaWxlLnBuZyddO3ZhciBpc0lQYWQ9d2luZG93LmlubmVyV2lkdGg+PTc2ODt2YXIgaXRlbUhlaWdodD1pc0lQYWQ/JzcwMHB4JzonNTAwcHgnO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucW9kZWYtaWItaXRlbScpLmZvckVhY2goZnVuY3Rpb24oZWwpe2VsLnN0eWxlLnNldFByb3BlcnR5KCdtaW4taGVpZ2h0JyxpdGVtSGVpZ2h0LCdpbXBvcnRhbnQnKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5xb2RlZi1pYi1pbWFnZS1ob2xkZXItcmVzcG9uc2l2ZScpLmZvckVhY2goZnVuY3Rpb24oZWwsaSl7aWYoaW1hZ2VzW2ldKXtlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZC1pbWFnZScsJ3VybCgnK2ltYWdlc1tpXSsnKScsJ2ltcG9ydGFudCcpO2VsLnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLGl0ZW1IZWlnaHQsJ2ltcG9ydGFudCcpO2VsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLXNpemUnLCdjb3ZlcicsJ2ltcG9ydGFudCcpO2VsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLXBvc2l0aW9uJywnY2VudGVyIGNlbnRlcicsJ2ltcG9ydGFudCcpO2VsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLXJlcGVhdCcsJ25vLXJlcGVhdCcsJ2ltcG9ydGFudCcpfX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5xb2RlZi1pYi1pdGVtLXNtYWxsLWltYWdlIGltZycpLmZvckVhY2goZnVuY3Rpb24oaW1nKXtpbWcuc3R5bGUuc2V0UHJvcGVydHkoJ2Rpc3BsYXknLCdub25lJywnaW1wb3J0YW50Jyl9KX0sNjAwKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7aWYod2luZG93LmlubmVyV2lkdGg+MTAyNClyZXR1cm47ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNjcm9sbC1kb3duLWhpbnQnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXtlbC5zdHlsZS5zZXRQcm9wZXJ0eSgnZGlzcGxheScsJ25vbmUnLCdpbXBvcnRhbnQnKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pYi1zY3JvbGwtcGlsbCcpLmZvckVhY2goZnVuY3Rpb24oZWwpe2VsLnN0eWxlLnNldFByb3BlcnR5KCdkaXNwbGF5J
99ywnbm9uZScsJ2ltcG9ydGFudCcpfSl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxmdW5jdGlvbigpe2lmKHdpbmRvdy5pbm5lcldpZHRoPjEwMjQpcmV0dXJuO2lmKCFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygncGFnZS1pZC0xMDI3JykpcmV0dXJuO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdnNzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xb2RlZi12c3MtcmVzcG9uc2l2ZScpO2lmKCF2c3MpcmV0dXJuO3ZhciBjaGlsZHJlbj1BcnJheS5mcm9tKHZzcy5jaGlsZHJlbik7dmFyIGxhc3Q9Y2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoLTFdO3ZhciBzZWNvbmRMYXN0PWNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aC0yXTtpZihsYXN0JiZzZWNvbmRMYXN0KXt2c3MuaW5zZXJ0QmVmb3JlKGxhc3Qsc2Vjb25kTGFzdCl9fSw2MDApfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHN3aXBlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZWxlbWVudG9yLWVsZW1lbnQtYzJlMzJlZSAucW9kZWYtcWktc3dpcGVyLWNvbnRhaW5lcicpO2lmKHN3aXBlciYmc3dpcGVyLnN3aXBlcil7c3dpcGVyLnN3aXBlci5zbGlkZVRvTG9vcCgwLDAsITEpfX0sMTIwMCl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxmdW5jdGlvbigpe3ZhciBzcGxpdFNsaWRlclBhZ2VzPVs3MDMwLDEwMjcsNTY2Nyw1NjY1LDU2NjZdO3ZhciBvblNwbGl0UGFnZT1zcGxpdFNsaWRlclBhZ2VzLnNvbWUoZnVuY3Rpb24oaWQpe3JldHVybiBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5pbmRleE9mKCdwYWdlLWlkLScraWQpIT09LTF9KTtpZighb25TcGxpdFBhZ2UpcmV0dXJuO2Z1bmN0aW9uIHN5bmNWaWRlb1Zpc2liaWxpdHkoKXt2YXIgc2VjdGlvbnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1zLXJpZ2h0IC5tcy1zZWN0aW9uJyk7c2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzZWN0aW9uKXt2YXIgdmlkZW89c2VjdGlvbi5xdWVyeVNlbGVjdG9yKCd2aWRlbycpO2lmKCF2aWRlbylyZXR1cm47aWYoc2VjdGlvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpKXt2aWRlby5zdHlsZS5zZXRQcm9wZXJ0eSgndmlzaWJpbGl0eScsJ3Zpc2libGUnLCdpbXBvcnRhbnQnKTt2aWRlby5zdHlsZS5zZXRQcm9wZXJ0eSgnb3BhY2l0eScsJzEnLCdpbXBvcnRhbnQnKTtpZih2aWRlby5wYXVzZWQpdmlkZW8ucGxheSgpO31lbHNle3ZpZGVvLnN0eWxlLnNldFByb3BlcnR5KCd2aXNpYmlsaXR5JywnaGlkZGVuJywnaW1wb3J0YW50Jyk7dmlkZW8uc3R5bGUuc2V0UHJvcGVydHkoJ29wYWNpdHknLCcwJywnaW1wb3J0YW50Jyk7dmlkZW8ucGF1c2UoKX19KX0KdmFyIG9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKHN5bmNWaWRlb1Zpc2liaWxpdHkpO29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WydjbGFzcyddfSk7c2V0VGltZW91dChzeW5jVmlkZW9WaXNpYmlsaXR5LDYwMCk7c2V0VGltZW91dChzeW5jVmlkZW9WaXNpYmlsaXR5LDE1MDApO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJyxzeW5jVmlkZW9WaXNpYmlsaXR5KX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7dmFyIHNwbGl0U2xpZGVyUGFnZXM9WzcwMzAsMTAyNyw1NjY3LDU2NjUsNTY2Nl07dmFyIG9uU3BsaXRQYWdlPXNwbGl0U2xpZGVyUGFnZXMuc29tZShmdW5jdGlvbihpZCl7cmV0dXJuIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lLmluZGV4T2YoJ3BhZ2UtaWQtJytpZCkhPT0tMX0pO2lmKCFvblNwbGl0UGFnZSlyZXR1cm47ZnVuY3Rpb24gaGFuZGxlVW5pZmllZExheW91dCgpe3ZhciBhY3RpdmVTZWN0aW9uPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tcy1sZWZ0IC5tcy1zZWN0aW9uLmFjdGl2ZScpO2lmKCFhY3RpdmVTZWN0aW9uKXJldHVybjt2YXIgaXNVbmlmaWVkPWFjdGl2ZVNlY3Rpb24uY2xhc3NMaXN0LmNvbnRhaW5zKCdxb2RlZi1tLXNsaWRlLXVuaWZpZWQnKTt2YXIgbXNMZWZ0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tcy1sZWZ0Jyk7dmFyIG1zUmlnaHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1zLXJpZ2h0Jyk7aWYoIW1zTGVmdHx8IW1zUmlnaHQpcmV0dXJuO2lmKGlzVW5pZmllZCl7bXNMZWZ0LnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsJzEwMCUnLCdpbXBvcnRhbnQnKTttc1JpZ2h0LnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsJzUwJScsJ2ltcG9ydGFudCcpO21zUmlnaHQuc3R5bGUuc2V0UHJvcGVydHkoJ29wYWNpdHknLCcwJywnaW1wb3J0YW50Jyk7bXNSaWdodC5zdHlsZS5zZXRQcm9wZXJ0eSgndmlzaWJpbGl0eScsJ2hpZGRlbicsJ2ltcG9ydGFudCcpO21zUmlnaHQuc3R5bGUuc2V0UHJvcGVydHkoJ3BvaW50ZXItZXZlbnRzJywnbm9uZScsJ2ltcG9ydGFudCcpfWVsc2V7bXNMZWZ0LnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsJzUwJScsJ2ltcG9ydGFudCcpO21zUmlnaHQuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywnNTAlJywnaW1wb3J0YW50Jyk7bXNSaWdodC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3BhY2l0eScsJzEnLCdpbXBvcnRhbnQnKTttc1JpZ2h0LnN0eWxlLnNldFByb3BlcnR5KCd2aXNpYmlsaXR5JywndmlzaWJsZScsJ2ltcG9ydGFudCcpO21zUmlnaHQuc3R5bGUuc2V0UHJvcGVydHkoJ3BvaW50ZXItZXZlbnRzJywnYXV0bycsJ2ltcG9ydGFudCcpfX0KdmFyIG9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKGhhbmRsZVVuaWZpZWRMYXlvdXQpO29ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WydjbGFzcyddfSk7c2V0VGltZW91dChoYW5kbGVVbmlmaWVkTGF5b3V0LDYwMCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGhhbmRsZVVuaWZpZWRMYXlvdXQpfSk7KGZ1bmN0aW9uKCl7dmFyIHZzc1BhZ2VJZHM9WydwYWdlLWlkLTEwMTU4JywncGFnZS1pZC0xMDQ3NicsJ3BhZ2UtaWQtMTA0NzcnLCdwYWdlLWlkLTEwNDc4J107aWYoIXZzc1BhZ2VJZHMuc29tZShmdW5jdGlvbihpZCl7cmV0dXJuIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKGlkKX0pKXJldHVybjt2YXIgdnNzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdGktdnNzJyk7dmFyIHRyYWNrTGVmdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXRpLXZzcy10cmFjay1pcy1sZWZ0Jyk7dmFyIHRyYWNrUmlnaHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF0aS12c3MtdHJhY2staXMtcmlnaHQnKTt2YXIgcGFuZWxzVW5pZmllZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYXRpLXZzcy1wYW5lbC1pcy11bmlmaWVkJyk7dmFyIHBhbmVsQ292ZXIxPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbGVtZW50b3ItZWxlbWVudC03MzczMDgxJyl8fHBhbmVsc1VuaWZ
99pZWRbMF18fG51bGw7dmFyIHBhbmVsQ292ZXIyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lbGVtZW50b3ItZWxlbWVudC04ZTQ1MjhhJyl8fG51bGw7aWYoIXZzc3x8IXRyYWNrTGVmdHx8IXRyYWNrUmlnaHQpcmV0dXJuO3ZhciBtcURlc2t0b3A9d2luZG93Lm1hdGNoTWVkaWEoJyhtaW4td2lkdGg6IDEwMjVweCknKTtmdW5jdGlvbiBpc0Rlc2t0b3AoKXtyZXR1cm4gbXFEZXNrdG9wLm1hdGNoZXN9CmZ1bmN0aW9uIGNsZWFySW5saW5lTW90aW9uKCl7W3RyYWNrTGVmdCx0cmFja1JpZ2h0LHBhbmVsQ292ZXIxLHBhbmVsQ292ZXIyXS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXtpZighZWwpcmV0dXJuO2VsLnN0eWxlLnRyYW5zZm9ybT0nJztlbC5zdHlsZS5vcGFjaXR5PScnO2VsLnN0eWxlLnBvaW50ZXJFdmVudHM9Jyd9KTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZPScnfQp2YXIgY3VycmVudFNuYXA9MDt2YXIgdG90YWxTbmFwcz1wYW5lbENvdmVyMj8yOjE7dmFyIGlzU25hcHBpbmc9ITE7dmFyIG1vdGlvbkNsZWFyZWQ9ITE7ZnVuY3Rpb24gZ2V0VnNzRG9jVG9wKCl7cmV0dXJuIHZzcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ard2luZG93LnBhZ2VZT2Zmc2V0fQpmdW5jdGlvbiBlYXNlSW5PdXRDdWJpYyh0KXtyZXR1cm4gdDwwLjU/NCp0KnQqdDoxLU1hdGgucG93KC0yKnQrMiwzKS8yfQpmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMoKXtpZighaXNEZXNrdG9wKCkpe2lmKCFtb3Rpb25DbGVhcmVkKXtjbGVhcklubGluZU1vdGlvbigpO21vdGlvbkNsZWFyZWQ9ITB9CnJldHVybn0KbW90aW9uQ2xlYXJlZD0hMTt2YXIgcHJvZ3Jlc3M9TWF0aC5tYXgoMCxNYXRoLm1pbigtdnNzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC93aW5kb3cuaW5uZXJIZWlnaHQsdG90YWxTbmFwcykpO3ZhciBwQT1NYXRoLm1pbihwcm9ncmVzcywxKTt2YXIgcEI9TWF0aC5tYXgoMCxwcm9ncmVzcy0xKTt2YXIgZUE9ZWFzZUluT3V0Q3ViaWMocEEpO3ZhciBlQj1lYXNlSW5PdXRDdWJpYyhwQik7dHJhY2tMZWZ0LnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgwKSc7dHJhY2tSaWdodC5zdHlsZS50cmFuc2Zvcm09J3RyYW5zbGF0ZVkoLTIwMHZoKSc7aWYocGFuZWxDb3ZlcjEpe3BhbmVsQ292ZXIxLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgnKygoMS1lQSkqMTAwKSsndmgpJztwYW5lbENvdmVyMS5zdHlsZS5vcGFjaXR5PScxJztwYW5lbENvdmVyMS5zdHlsZS5wb2ludGVyRXZlbnRzPShlQT4wLjg1JiZwQjw9MCk/J2F1dG8nOidub25lJ30KaWYocGFuZWxDb3ZlcjIpe3BhbmVsQ292ZXIyLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgnKygoMS1lQikqMTAwKSsndmgpJztwYW5lbENvdmVyMi5zdHlsZS5vcGFjaXR5PScxJztwYW5lbENvdmVyMi5zdHlsZS5wb2ludGVyRXZlbnRzPWVCPjAuODU/J2F1dG8nOidub25lJ30KaWYocHJvZ3Jlc3M+PS0wLjEmJnByb2dyZXNzPD10b3RhbFNuYXBzKzAuNSl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93WT0naGlkZGVuJ31lbHNle2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1k9Jyd9fQpmdW5jdGlvbiBzbmFwVG8oaW5kZXgpe2lmKCFpc0Rlc2t0b3AoKSlyZXR1cm47aWYoaXNTbmFwcGluZylyZXR1cm47aW5kZXg9TWF0aC5tYXgoMCxNYXRoLm1pbih0b3RhbFNuYXBzLGluZGV4KSk7aWYoaW5kZXg9PT1jdXJyZW50U25hcClyZXR1cm47Y3VycmVudFNuYXA9aW5kZXg7aXNTbmFwcGluZz0hMDt2YXIgdmg9d2luZG93LmlubmVySGVpZ2h0O3ZhciB0YXJnZXQ9Z2V0VnNzRG9jVG9wKCkrKGluZGV4KnZoKTt3aW5kb3cuc2Nyb2xsVG8oe3RvcDp0YXJnZXQsYmVoYXZpb3I6J3Ntb290aCd9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aXNTbmFwcGluZz0hMTt1cGRhdGVIaW50KCl9LDcwMCl9CnZhciBpc0xvZ2lzdGlxdWUyPWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdwYWdlLWlkLTEwNDc3Jyk7dmFyIHZzc0hpbnQ9bnVsbDtpZighaXNMb2dpc3RpcXVlMil7dnNzSGludD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt2c3NIaW50LmNsYXNzTmFtZT0nc2Nyb2xsLWRvd24taGludCc7dnNzSGludC50ZXh0Q29udGVudD0nU0NST0xMIERPV04nO3Zzc0hpbnQuc3R5bGUub3BhY2l0eT0nMCc7dnNzSGludC5zdHlsZS50cmFuc2l0aW9uPSdvcGFjaXR5IDAuM3MgZWFzZSc7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2c3NIaW50KTt2c3NIaW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe3NuYXBUbyhjdXJyZW50U25hcCsxKX0pfQpmdW5jdGlvbiB1cGRhdGVIaW50KCl7aWYoIXZzc0hpbnQpcmV0dXJuO3ZhciBwcm9ncmVzcz0tdnNzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC93aW5kb3cuaW5uZXJIZWlnaHQ7dmFyIGluc2lkZVpvbmU9cHJvZ3Jlc3M+LTAuMiYmcHJvZ3Jlc3M8dG90YWxTbmFwcyswLjU7dmFyIG9uTGFzdFNuYXA9cHJvZ3Jlc3M+PXRvdGFsU25hcHMtMC4wNTt2YXIgc2hvdz1pc0Rlc2t0b3AoKSYmaW5zaWRlWm9uZSYmIW9uTGFzdFNuYXA7dmFyIHBhaXI9dnNzSGludC5wYXJlbnROb2RlJiZ2c3NIaW50LnBhcmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdhdGktcGlsbC1wYWlyJyk/dnNzSGludC5wYXJlbnROb2RlOm51bGw7dmFyIGhvc3Q9cGFpcnx8dnNzSGludDtob3N0LnN0eWxlLm9wYWNpdHk9c2hvdz8nMSc6JzAnO2hvc3Quc3R5bGUucG9pbnRlckV2ZW50cz1zaG93PydhdXRvJzonbm9uZSc7aWYocGFpcilwYWlyLmNsYXNzTGlzdC50b2dnbGUoJ2F0aS1waWxsLXBhaXItLXBhaXJlZCcscHJvZ3Jlc3M+PTAuNSk7fQp2YXIgd2hlZWxUaW1lcj1udWxsO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsZnVuY3Rpb24oZSl7aWYoIWlzRGVza3RvcCgpKXJldHVybjt2YXIgcmVjdD12c3MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHZoPXdpbmRvdy5pbm5lckhlaWdodDt2YXIgcHJvZ3Jlc3M9LXJlY3QudG9wL3ZoO2lmKHByb2dyZXNzPC0wLjJ8fHByb2dyZXNzPnRvdGFsU25hcHMrMC41KXJldHVybjtlLnByZXZlbn
99REZWZhdWx0KCk7aWYod2hlZWxUaW1lcilyZXR1cm47d2hlZWxUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2hlZWxUaW1lcj1udWxsfSwxMzApO3NuYXBUbyhlLmRlbHRhWT4wP2N1cnJlbnRTbmFwKzE6Y3VycmVudFNuYXAtMSl9LHtwYXNzaXZlOiExfSk7dmFyIHRvdWNoU3RhcnRZPTA7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLGZ1bmN0aW9uKGUpe3RvdWNoU3RhcnRZPWUudG91Y2hlc1swXS5jbGllbnRZfSx7cGFzc2l2ZTohMH0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsZnVuY3Rpb24oZSl7aWYoIWlzRGVza3RvcCgpKXJldHVybjt2YXIgcmVjdD12c3MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHZoPXdpbmRvdy5pbm5lckhlaWdodDt2YXIgcHJvZ3Jlc3M9LXJlY3QudG9wL3ZoO2lmKHByb2dyZXNzPC0wLjJ8fHByb2dyZXNzPnRvdGFsU25hcHMrMC41KXJldHVybjt2YXIgZHk9dG91Y2hTdGFydFktZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZO2lmKE1hdGguYWJzKGR5KTwzMClyZXR1cm47c25hcFRvKGR5PjA/Y3VycmVudFNuYXArMTpjdXJyZW50U25hcC0xKX0se3Bhc3NpdmU6ITB9KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZnVuY3Rpb24oZSl7aWYoIWlzRGVza3RvcCgpKXJldHVybjt2YXIgcmVjdD12c3MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHZoPXdpbmRvdy5pbm5lckhlaWdodDt2YXIgcHJvZ3Jlc3M9LXJlY3QudG9wL3ZoO2lmKHByb2dyZXNzPC0wLjJ8fHByb2dyZXNzPnRvdGFsU25hcHMrMC41KXJldHVybjtpZihlLmtleT09PSdBcnJvd0Rvd24nfHxlLmtleT09PSdQYWdlRG93bid8fGUua2V5PT09JyAnKXtlLnByZXZlbnREZWZhdWx0KCk7c25hcFRvKGN1cnJlbnRTbmFwKzEpfWVsc2UgaWYoZS5rZXk9PT0nQXJyb3dVcCd8fGUua2V5PT09J1BhZ2VVcCcpe2UucHJldmVudERlZmF1bHQoKTtzbmFwVG8oY3VycmVudFNuYXAtMSl9fSk7dmFyIHRpY2tpbmc9ITE7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsZnVuY3Rpb24oKXtpZih0aWNraW5nKXJldHVybjt0aWNraW5nPSEwO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt1cGRhdGVQb3NpdGlvbnMoKTt1cGRhdGVIaW50KCk7dGlja2luZz0hMX0pfSx7cGFzc2l2ZTohMH0pO2Z1bmN0aW9uIHN5bmNUb1Njcm9sbFBvc2l0aW9uKCl7aWYoIWlzRGVza3RvcCgpKXtjbGVhcklubGluZU1vdGlvbigpO3JldHVybn0KdmFyIHZoPXdpbmRvdy5pbm5lckhlaWdodDt2YXIgcmVjdD12c3MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHByb2dyZXNzPU1hdGgubWF4KDAsLXJlY3QudG9wL3ZoKTtjdXJyZW50U25hcD1NYXRoLnJvdW5kKE1hdGgubWluKHByb2dyZXNzLHRvdGFsU25hcHMpKTt1cGRhdGVQb3NpdGlvbnMoKTt1cGRhdGVIaW50KCl9CmlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0nY29tcGxldGUnKXtzeW5jVG9TY3JvbGxQb3NpdGlvbigpfWVsc2V7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLHN5bmNUb1Njcm9sbFBvc2l0aW9uKX0Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsdXBkYXRlUG9zaXRpb25zKTtpZihtcURlc2t0b3AuYWRkRXZlbnRMaXN0ZW5lcil7bXFEZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZnVuY3Rpb24oKXtjdXJyZW50U25hcD0wO2lmKGlzRGVza3RvcCgpKXtzeW5jVG9TY3JvbGxQb3NpdGlvbigpfWVsc2V7Y2xlYXJJbmxpbmVNb3Rpb24oKTt1cGRhdGVIaW50KCl9fSl9fSkoKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygncGFnZS1pZC0xMDIyMicpKXJldHVybjt2YXIgYmFubmVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xb2RlZi1pbnRlcmFjdGl2ZS1iYW5uZXJzJyk7aWYoIWJhbm5lcilyZXR1cm47dmFyIHdpZGdldENvbnRhaW5lcj1iYW5uZXIuY2xvc2VzdCgnLmVsZW1lbnRvci13aWRnZXQtY29udGFpbmVyJyk7aWYoIXdpZGdldENvbnRhaW5lcilyZXR1cm47dmFyIGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtjb250YWluZXIuY2xhc3NOYW1lPSdhdGktaG9tZS12aWRlby1jb250YWluZXInO3ZhciB2aWRlbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpO3ZpZGVvLnNyYz0naHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOC9ub3V2ZWxsZS12aWRlby1kZS1nYXJkZTQubXA0Jzt2aWRlby5hdXRvcGxheT0hMDt2aWRlby5tdXRlZD0hMDt2aWRlby5sb29wPSEwO3ZpZGVvLnBsYXlzSW5saW5lPSEwO2NvbnRhaW5lci5hcHBlbmRDaGlsZCh2aWRlbyk7d2lkZ2V0Q29udGFpbmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lcil9KQ==" defer></script>
99<style class="wpcode-css-snippet">/* ============================================================
100   ATI EXPORT - ADDITIONAL CSS
101   Breakpoints: 480px | 768px | 1024px | 1279px | 1280px+
102   Brand: Yellow #fdec01 | Red #e1312d | Black #000000
103   ------------------------------------------------------------
104   HOW TO FIND THINGS IN THIS FILE
105   Every rule block carries a [TAG]. Ctrl+F the tag to jump to it.
106   Tag format: [AREA-WHAT]  - AREA = page/section, WHAT = the job.
107
108   TAG INDEX
109     [GLOBAL-*]   1.  Global / page wrapper
110     [HDR-*]      2.  Header desktop
111     [STICKY-*]   3.  Header sticky
112     [MOBHDR-*]   4.  Header mobile
113     [LANG-*]     5.  Language switcher
114     [DEVIS-*]    6.  Demande de devis button
115     [BANNER-*]   7.  Homepage banner (sector cards)
116     [MARQUEE-*]  8.  Logos carousel
117     [HERO-*]     9.  Inner page heroes
118     [SPLIT-*]    10. Split slider pages (old stack - delete Phase 7)
119     [QSN-*]      11. Qui Sommes Nous
120     [ICONS-*]    12. Sector pages icon rows
121     [SIDENAV-*]  13. Secteurs sidebar nav
122     [FORM-*]     14. Forms (CF7)
123     [JOBS-*]     15. Recrutement jobs table
124     [FOOTER-*]   16. Footer
125     [ACTU-*]     17. Actualites page
126     [VSS-*]      18. New VSS pages (10158)
127     [VIDHOME-*]  19. Homepage video variant (10222)
128   ============================================================ */
129
130
131/* ============================================================
132   1. GLOBAL / PAGE WRAPPER
133   ============================================================ */
134
135/* [GLOBAL-MINHEIGHT] Fill full viewport to prevent gap at bottom */
136#qodef-page-wrapper {
137  min-height: 100vh !important;
138}
139
140/* [GLOBAL-GAPFIX] Remove theme gap below inner page hero.
141   NOTE: the 10px here is what VSS must zero out - see [VSS-PADRESET]. */
142#qodef-page-content {
143  padding-top: 10px !important;
144}
145#qodef-page-inner {
146  padding-top: 0 !important;
147}
148.qodef-page-content-section {
149  padding-top: 0 !important;
150}
151
152/* [GLOBAL-STRETCHFLASH] Fix Elementor full-width section flash on load */
153.elementor-section.elementor-section-stretched {
154  width: 100vw !important;
155  max-width: 100vw !important;
156  margin-left: calc(-1 * (100vw - 100%) / 2) !important;
157}
158
159/* [GLOBAL-BACKTOTOP] Back to top button - moved to bottom left */
160#qodef-back-to-top {
161  left: 30px !important;
162  right: auto !important;
163}
164
165
166/* ============================================================
167   2. HEADER - DESKTOP
168   ============================================================ */
169
170/* [HDR-HIDETOP] Hide theme top bar and search icon */
171#qodef-top-area {
172  display: none !important;
173}
174.qodef-header-search-opener,
175.qodef-search-opener,
176#qodef-search-opener {
177  display: none !important;
178}
179
180/* [HDR-INNERFLEX] Header inner: flex row, logo pinned left.
181   Session 38: extended to .qodef-header-sticky-inner too. The sticky header
182   is a separate DOM subtree from the standard one (see [HDR-LOGO-VSS]'s
183   note) and was never given this flex/alignment treatment. Standard is the
184   source of truth here (opposite direction from [DEVIS-BASE]'s Session 38
185   resize, where sticky was the source). CONFIRMED CORRECT AND NECESSARY by
186   live measurement: with this in place, `#qodef-page-header-inner` and
187   `.qodef-header-sticky-inner` measured pixel-identical (same left/width/
188   display/position). It just wasn't the *whole* fix - see [STICKY-NAVHOME]
189   for the other, separate 26px this session tracked down the same way. */
190#qodef-page-header-inner,
191.qodef-header-sticky-inner {
192  display: flex !important;
193  align-items: center !important;
194  justify-content: flex-start !important;
195  position: relative !important;
196}
197
198/* [HDR-INNERWIDTH] Fix header width on inner pages (not homepage).
199   Session 38: same extension to .qodef-header-sticky-inner as above. */
200.page:not(.home) #qodef-page-header-inner,
201.single #qodef-page-header-inner,
202.page:not(.home) .qodef-header-sticky-inner,
203.single .qodef-header-sticky-inner {
204  width: 100% !important;
205  max-width: 100% !important;
206}
207
208/* [HDR-LOGO] Logo sizing and spacing */
209.qodef-header-logo-link {
210  flex-shrink: 0 !important;
211  margin-right: 30px !important;
212}
213.qodef-header-logo-link img {
214  max-width: 80px !important;
215  height: auto !important;
216}
217.home .qodef-header-logo-link {
218  margin-left: -40px !important;
219}
220/* [HDR-LOGO-VSS] Session 35 - the VSS pages are :not(.home), so they miss the
221   homepage's -40px logo pull and their STANDARD header logo sits 40px too far
222   right. Match the homepage on the 4 VSS pages, plus Mentions Legales
223   (page-id-10926, Session 41).
224   REVERTED a broader `body:not(.home)` version same session, same day - it
225   regressed Supply Chain (page-id-2504) and likely every other normal inner
226   page (Qui Sommes Nous, sector pages, etc.): those pages were NEVER broken
227   without the pull, so ":not(.home)" was the wrong root cause. Whatever
228   actually makes VSS pages + this new page need the pull isn't simply
229   "not home" - most :not(.home) pages are fine without it. Back to an
230   explicit list until the real shared cause is found; add new page IDs here
231   ONE AT A TIME, only after confirming that page's logo is actually
232   crowding its nav, not preemptively.
233   Session 35b: scoped to `#qodef-page-header-inner` (the STANDARD header inner)
234   ONLY. The first version targeted a bare `.qodef-header-logo-link`, which also
235   hit the STICKY header's own logo (a separate `.qodef-header-sticky` subtree,
236   already correctly positioned) and pulled it off the left edge. The sticky
237   header must stay untouched - do not broaden this selector again. */
238body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478, .page-id-10926) #qodef-page-header-inner .qodef-header-logo-link {
239  margin-left: -40px !important;
240}
241
242/* [HDR-NAV] Navigation container.
243   WARNING: padding-right:400px below is the source of the site-wide
244   66px horizontal overflow. Normally clipped by #qodef-page-wrapper
245   overflow:hidden - but VSS pages remove that, see [VSS-OVERFLOWCLIP]. */
246.qodef-header-navigation {
247  flex: 1 !important;
248  width: auto !important;
249  box-sizing: border-box !important;
250  padding-right: 175px !important;
251}
252.qodef-header-navigation .menu {
253  display: flex !important;
254  justify-content: flex-end !important;
255  gap: 30px !important;
256  padding: 0 !important;
257  margin: 0 !important;
258  list-style: none !important;
259}
260.qodef-header-navigation .menu > li {
261  flex: 0 0 auto !important;
262  text-align: left !important;
263}
264.qodef-header-navigation .menu > li > a {
265  color: #ffffff !important;
266  opacity: 1 !important;
267}
268.qodef-header-navigation .menu > li > a:hover {
269  color: #fdec01 !important;
270}
271
272/* [HDR-NAVPAD] Inner pages - extra right padding for the extra nav item */
273#qodef-page-header-inner .qodef-header-navigation {
274  padding-right: 400px !important;
275}
276
277/* [HDR-WIDGETHOLDER] Widget holder - the Devis button + headset icon area */
278.qodef-widget-holder {
279  display: flex !important;
280  align-items: center !important;
281  gap: 10px !important;
282  position: absolute !important;
283  right: 55px !important;
284  z-index: 10 !important;
285  flex-shrink: 0 !important;
286}
287
288/* [HDR-HEADSET] Headset icon - hide theme's line-bars, inject FA icon */
289.qodef-side-area-opener--predefined {
290  display: none !important;
291}
292.qodef-side-area-opener--predefined .qodef-lines {
293  display: none !important;
294}
295.qodef-side-area-opener--predefined::before {
296  font-family: "Font Awesome 5 Free" !important;
297  content: "\f590" !important;
298  font-weight: 900 !important;
299  font-size: 20px !important;
300  color: #000000 !important;
301}
302
303/* [HDR-BLACKBG] Header background - black on all pages */
304#qodef-page-header {
305  background-color: #000000 !important;
306}
307.home #qodef-page-header-inner .qodef-header-navigation {
308  padding-right: 300px !important;
309}
310
311/* [HDR-DROPDOWN] Dropdown arrow + hover colors */
312.qodef-header-sticky .qodef-menu-arrow {
313  color: #1a1a1a !important;
314}
315.qodef-drop-down-second .menu-item a:hover .qodef-menu-item-text,
316.qodef-drop-down-second .current-menu-item > a .qodef-menu-item-text {
317  color: #e1312d !important;
318}
319
320/* [HDR-SPLITPAGES] Split-slider pages - nav padding + widget holder reset.
321   TO DELETE in Phase 7 once old stack is gone. */
322body.page-id-7030 #qodef-page-header-inner .qodef-header-navigation,
323body.page-id-1027 #qodef-page-header-inner .qodef-header-navigation,
324body.page-id-5667 #qodef-page-header-inner .qodef-header-navigation,
325body.page-id-5665 #qodef-page-header-inner .qodef-header-navigation,
326body.page-id-5666 #qodef-page-header-inner .qodef-header-navigation {
327  padding-right: 400px !important;
328}
329body.page-id-7030 .qodef-widget-holder,
330body.page-id-1027 .qodef-widget-holder,
331body.page-id-5667 .qodef-widget-holder,
332body.page-id-5665 .qodef-widget-holder,
333body.page-id-5666 .qodef-widget-holder {
334  margin-right: 0 !important;
335}
336
337
338/* ============================================================
339   3. HEADER - STICKY
340   ============================================================ */
341
342/* [STICKY-BG] Sticky header background - black */
343.qodef-header-sticky,
344.qodef-header-sticky-inner {
345  background-color: #000000 !important;
346}
347
348/* [STICKY-NAV] Sticky header nav colors + padding */
349.qodef-header-sticky .qodef-header-navigation .menu > li > a {
350  color: #ffffff !important;
351}
352.qodef-header-sticky .qodef-header-navigation {
353  padding-right: 400px !important;
354}
355
356/* [STICKY-NAVHOME] Session 38 - the actual, confirmed-by-measurement cause
357   of "sticky header nav sits right of the standard header's": the theme
358   gives every top-level nav <li> `padding: 0 26px` by default, and only the
359   STANDARD header has a theme rule zeroing the first item's padding-left
360   (confirmed live: identical "Accueil" markup in both headers, but computed
361   padding-left was 0 on standard vs 26px on sticky - every other item was
362   byte-identical between the two). That one extra 26px on "Accueil" was the
363   entire gap. Fixes it directly instead of guessing at the container/flex
364   properties again (see [HDR-INNERFLEX]/[HDR-INNERWIDTH], which fixed a
365   real but separate issue earlier this session - the two header containers
366   are now confirmed pixel-identical; this was the one remaining piece). */
367.qodef-header-sticky .qodef-header-navigation .menu > li:first-child {
368  padding-left: 0 !important;
369}
370
371/* [STICKY-DEVIS] RETIRED Session 38 - the sticky and standard headers now
372   share one .devis-fab size (see [DEVIS-BASE]), so this override became a
373   no-op. Left as a marker in case a future session wants the sticky button
374   smaller again; nothing currently depends on it. */
375
376/* [STICKY-CONTACTICON] Contact icon shrinks in the sticky header, same
377   treatment as [STICKY-DEVIS] */
378.qodef-header-sticky .contact-fab {
379  width: 32px !important;
380  height: 32px !important;
381}
382.qodef-header-sticky .contact-fab svg {
383  width: 15px !important;
384  height: 15px !important;
385}
386
387
388/* ============================================================
389   4. HEADER - MOBILE
390   ============================================================ */
391
392/* [MOBHDR-BG] Mobile header bar background */
393#qodef-page-mobile-header {
394  background-color: #000000 !important;
395}
396
397/* [MOBHDR-OPENER] Hamburger opener colors (idle / hover / open) */
398.qodef-fullscreen-menu-opener {
399  color: #ffffff !important;
400}
401.qodef-fullscreen-menu-opener:hover,
402.qodef-fullscreen-menu-opener:active,
403.qodef-fullscreen-menu-opener.qodef-menu-is-open {
404  color: #fdec01 !important;
405}
406.qodef-fullscreen-menu-opener .qodef-close-icon {
407  color: #000000 !important;
408}
409
410/* [MOBHDR-LINES] Side-area opener line-bars - force black */
411.qodef-side-area-opener .qodef-line,
412#qodef-page-mobile-header .qodef-line {
413  background-color: #000000 !important;
414}
415
416/* [MOBHDR-PANEL] Open mobile menu panel - white bg, dark text */
417#qodef-page-mobile-header .qodef-m-inner {
418  background-color: #ffffff !important;
419}
420#qodef-page-mobile-header .qodef-m-inner .qodef-menu-item-inner,
421#qodef-page-mobile-header .qodef-m-inner a {
422  color: #1a1a1a !important;
423}
424#qodef-page-mobile-header .qodef-m-inner .current-menu-item a,
425#qodef-page-mobile-header .qodef-m-inner .current-menu-ancestor > a,
426#qodef-page-mobile-header .qodef-m-inner .current-menu-parent > a {
427  color: #fdec01 !important;
428}
429
430
431/* ============================================================
432   5. LANGUAGE SWITCHER
433   Injected by Custom JS into desktop, sticky and mobile headers.
434   ============================================================ */
435
436/* [LANG-BASE] Switcher pill - shared styling */
437.qodef-lang-switcher {
438  display: flex;
439  align-items: center;
440  gap: 6px;
441  color: #ffffff !important;
442  text-decoration: none !important;
443  font-size: 13px;
444  font-weight: 700;
445  letter-spacing: 1px;
446  cursor: pointer;
447}
448.qodef-lang-switcher span {
449  color: #ffffff !important;
450}
451
452/* [LANG-MOBILE] Mobile placement - sits inline before the hamburger */
453.qodef-lang-mobile {
454  flex: 1;
455  justify-content: center;
456}
457
458/* [LANG-DESKTOP] Desktop placement - absolute, vertically centred right */
459.qodef-lang-desktop {
460  position: absolute;
461  top: 50%;
462  transform: translateY(-50%);
463  right: 26px;
464}
465
466/* [LANG-BREAKPOINT] Show one, hide the other - 1024px split */
467@media (min-width: 1025px) {
468  .qodef-lang-mobile { display: none !important; }
469}
470@media (max-width: 1024px) {
471  .qodef-lang-desktop { display: none !important; }
472}
473
474
475/* ============================================================
476   6. DEMANDE DE DEVIS BUTTON
477   Injected by Custom JS into every .qodef-widget-holder.
478   ============================================================ */
479
480/* [DEVIS-BASE] Button - yellow outline, transparent fill.
481   Session 38: resized to match what [STICKY-DEVIS] used to shrink it to in
482   the sticky header (200px/13px/15px padding -> 160px/11px/10px padding) -
483   the two headers now use one size. Requested once the contact icon was
484   added and made the standard header's larger button crowd the nav. */
485.devis-fab {
486  position: relative !important;
487  bottom: auto !important;
488  right: auto !important;
489  width: 160px !important;
490  height: 45px !important;
491  border-radius: 4px !important;
492  border: 2px solid #fdec01 !important;
493  background-color: transparent !important;
494  color: #ffffff !important;
495  font-size: 11px !important;
496  font-weight: 700 !important;
497  letter-spacing: 0.5px !important;
498  text-decoration: none !important;
499  display: inline-flex !important;
500  align-items: center !important;
501  justify-content: space-between !important;
502  padding: 0 10px !important;
503  box-shadow: none !important;
504  transition: background-color 0.2s ease, color 0.2s ease !important;
505  z-index: 10 !important;
506}
507
508/* [DEVIS-HOVER] Invert on hover - yellow fill, black text */
509.devis-fab:hover {
510  background-color: #fdec01 !important;
511  color: #000000 !important;
512}
513
514/* [DEVIS-ARROW] Trailing arrow icon. Restored Session 28 - regression: this
515   rule was entirely missing (button had zero icon markup, [DEVIS-BASE]'s
516   justify-content:space-between was pushing against nothing). Same pattern
517   as the working [HDR-HEADSET] icon - requires Font Awesome 5 Free to be
518   enqueued site-wide. DIAGNOSED Session 28: document.styleSheets currently
519   contains ZERO Font Awesome stylesheets - this and [HERO-SCROLLHINT-ARROW]
520   and [HDR-HEADSET] will all stay invisible until that's fixed in wp-admin
521   (check WPCode Code Snippets and Stal Core theme options - qode-optimizer
522   is active site-wide and is the prime suspect for stripping/deferring it
523   as "unused" CSS/JS). This CSS is correct and ready the moment FA loads. */
524.devis-fab::after {
525  font-family: "Font Awesome 5 Free" !important;
526  font-weight: 900 !important;
527  content: "\f061" !important;
528  font-size: 13px !important;
529}
530
531/* [HDR-CONTACTICON] Session 37 - circular "contact" icon in the header
532   widget holder, injected by [JS-CONTACTICON] right after the Devis button.
533   Links straight to the CF7 form on Qui Sommes Nous, reusing the form's own
534   auto-generated id (#wpcf7-f9472-p2174-o1 - the fragment CF7 already puts
535   in its own <form action> for post-submit scroll-back) instead of adding a
536   new Elementor anchor. Deliberately an inline SVG, not Font Awesome, so it
537   renders regardless of the known site-wide FA loading bug (see Known
538   Gotchas / Pending backlog) - unlike [HDR-HEADSET] and [DEVIS-ARROW], this
539   one doesn't have to wait for that fix. */
540.contact-fab {
541  display: inline-flex !important;
542  align-items: center !important;
543  justify-content: center !important;
544  width: 38px !important;
545  height: 38px !important;
546  border-radius: 50% !important;
547  border: 2px solid #fdec01 !important;
548  background-color: transparent !important;
549  color: #ffffff !important;
550  flex-shrink: 0 !important;
551  transition: background-color 0.2s ease, color 0.2s ease !important;
552}
553.contact-fab:hover {
554  background-color: #fdec01 !important;
555  color: #000000 !important;
556}
557.contact-fab svg {
558  width: 18px !important;
559  height: 18px !important;
560  display: block !important;
561}
562
563
564/* ============================================================
565   7. HOMEPAGE BANNER (SECTOR CARDS)
566   Layout is owned by Custom JS ("Homepage interactive banners"),
567   which is gated on body.home - so none of the .home rules below
568   fire on the video-variant clone (10222). See section 19.
569   ============================================================ */
570
571/* [BANNER-FULLWIDTH] Force banner section to full viewport width */
572.elementor-element-e542973 {
573  width: 100vw !important;
574  max-width: 100vw !important;
575  left: 0 !important;
576  margin-left: 0 !important;
577  position: relative !important;
578}
579.elementor-element-e542973 .elementor-container {
580  max-width: 100% !important;
581  width: 100% !important;
582}
583.elementor-element-e542973 .elementor-col-100,
584.elementor-element-e542973 .elementor-widget-wrap {
585  width: 100% !important;
586  max-width: 100% !important;
587}
588
589/* [BANNER-HEIGHT] Desktop height = viewport - header(86) - marquee(35).
590   MUST stay in sync with the same formula in Custom JS. */
591@media (min-width: 1025px) {
592  .home .qodef-interactive-banners,
593  .home .qodef-ib-item,
594  .home .qodef-ib-content-holder {
595    height: calc(100vh - 86px - 35px) !important;
596  }
597}
598
599/* [BANNER-OVERFLOW] Clip the horizontal reel + reset content offset */
600.elementor-element-e542973,
601.elementor-element-0a4b23f,
602.elementor-element-485c428,
603.home .qodef-interactive-banners {
604  overflow: hidden !important;
605}
606.home .qodef-ib-content-holder {
607  margin-left: 0 !important;
608  left: 0 !important;
609}
610
611/* [BANNER-GRIDLINES] Hide theme grid lines - JS owns the layout */
612.home .qodef-ib-grid-line {
613  display: none !important;
614}
615
616/* [BANNER-LOGOOVERLAY] Centred ATI logo over the columns (desktop only) */
617@media (min-width: 1025px) {
618  .home #banner-logo-overlay {
619    position: absolute !important;
620    top: 0 !important;
621    left: 0 !important;
622    width: 100% !important;
623    height: 100% !important;
624    display: flex !important;
625    align-items: center !important;
626    justify-content: center !important;
627    z-index: 50 !important;
628    pointer-events: none !important;
629    box-sizing: border-box !important;
630  }
631}
632#banner-logo-overlay img {
633  width: 2024px;
634  max-width: 160%;
635  height: auto;
636}
637
638/* [BANNER-NAVARROWS] Prev/next circular arrows.
639   NOTE: the live scroll pills are .ib-scroll-pill, styled inline by JS.
640   These .ib-nav-btn rules are the older round-button variant. */
641.ib-nav-btn {
642  position: absolute;
643  top: 50%;
644  transform: translateY(-50%);
645  z-index: 100;
646  background: rgba(0, 0, 0, 0.65);
647  color: #ffffff;
648  border: none;
649  width: 44px;
650  height: 44px;
651  border-radius: 50%;
652  font-size: 18px;
653  cursor: pointer;
654  display: flex;
655  align-items: center;
656  justify-content: center;
657  transition: background 0.2s ease;
658}
659.ib-nav-btn:hover {
660  background: #fdec01;
661  color: #000000;
662}
663.ib-nav-prev { left: 10px; }
664.ib-nav-next { right: 10px; }
665
666/* [BANNER-CARD] Sector card base - clip + scale origin for hover */
667.qodef-ib-item {
668  overflow: hidden !important;
669  position: relative !important;
670  transition: transform 0.3s ease !important;
671  transform-origin: bottom center !important;
672}
673
674/* [BANNER-CARDLINK] Whole card is clickable - invisible full-bleed anchor */
675.qodef-ib-item .qodef-ib-item-btn-holder a {
676  position: absolute !important;
677  inset: 0 !important;
678  z-index: 10 !important;
679  font-size: 0 !important;
680  background: transparent !important;
681}
682
683/* [BANNER-LABELS] Card tag + title chips */
684.qodef-ib-item-tag {
685  writing-mode: horizontal-tb !important;
686  transform: none !important;
687  text-orientation: mixed !important;
688  background-color: rgba(40, 40, 40, 0.75) !important;
689  padding: 4px 10px !important;
690}
691.qodef-ib-item-title h3 {
692  font-size: 15px !important;
693  white-space: nowrap !important;
694  background-color: rgba(0, 0, 0, 0.85) !important;
695  padding: 4px 12px !important;
696  display: inline-block !important;
697  text-transform: uppercase !important;
698}
699.qodef-ib-item-title h3,
700.qodef-ib-item-tag,
701.qodef-ib-item-inner {
702  font-weight: 900 !important;
703}
704
705/* [BANNER-CARDINNER] Card inner content - pinned near the bottom */
706.qodef-ib-item-inner {
707  position: absolute !important;
708  left: 0 !important;
709  right: 0 !important;
710  bottom: 20% !important;
711  width: 100% !important;
712  transform: none !important;
713  box-sizing: border-box !important;
714  padding: 0 10px !important;
715  text-align: center !important;
716  margin: 0 auto !important;
717  z-index: 2 !important;
718}
719
720/* [BANNER-DESKTOPHEIGHT] Desktop height again + 86px header offset.
721   Breakpoint 1025px matches the JS bail (innerWidth lte 1024, returns). */
722@media (min-width: 1025px) {
723  .home .qodef-interactive-banners {
724    height: calc(100vh - 86px - 35px) !important;
725    margin-top: 86px !important;
726  }
727  .home .qodef-ib-item {
728    height: calc(100vh - 86px - 35px) !important;
729  }
730}
731
732/* [BANNER-XL] 1920px+ - scale labels and icons up */
733@media (min-width: 1920px) {
734  .qodef-ib-item-title h3 { font-size: 28px !important; }
735  .qodef-ib-item-tag { font-size: 16px !important; }
736  .qodef-ib-item-small-image img { width: 90px !important; height: 90px !important; }
737}
738
739/* [BANNER-STACK] Tablet/mobile - stack cards vertically, kill the reel */
740@media (max-width: 1024px) {
741  .home .qodef-interactive-banners {
742    display: flex !important;
743    flex-direction: column !important;
744    height: auto !important;
745    min-height: unset !important;
746    overflow: visible !important;
747  }
748  .home .qodef-ib-content-holder {
749    display: flex !important;
750    flex-direction: column !important;
751    width: 100% !important;
752    transform: none !important;
753    transition: none !important;
754  }
755  .home .qodef-ib-item {
756    width: 100% !important;
757    height: 280px !important;
758    overflow: hidden !important;
759  }
760  .home .qodef-ib-image-holder-responsive {
761    background-position: center center !important;
762    background-size: cover !important;
763  }
764  .home .ib-nav-btn {
765    display: none !important;
766  }
767  #banner-logo-overlay {
768    display: none !important;
769  }
770  .qodef-ib-item-inner {
771    left: -10px !important;
772  }
773}
774
775/* [BANNER-MOBILEOFFSET] Mobile - push banner below the fixed header */
776@media (max-width: 768px) {
777  .home .elementor-widget-container:has(.qodef-interactive-banners
777) {
778    margin-top: 86px !important;
779  }
780  .home .qodef-ib-item-inner {
781    transform: none !important;
782    left: 0 !important;
783  }
784}
785
786/* [BANNER-PILLANIM] Keyframes for the yellow SCROLL pills (JS-injected) */
787@keyframes scrollBounceLeft {
788  0%, 100% { transform: translateY(-50%) translateX(0); }
789  50% { transform: translateY(-50%) translateX(-10px); }
790}
791@keyframes scrollBounceRight {
792  0%, 100% { transform: translateY(-50%) translateX(0); }
793  50% { transform: translateY(-50%) translateX(10px); }
794}
795
796
797/* ============================================================
798   8. LOGOS CAROUSEL (homepage)
799   Current component = .ati-marquee-band (pure CSS marquee, Session 21).
800   .elementor-element-c2e32ee is the RETIRED Swiper carousel it replaced.
801   ============================================================ */
802
803/* [MARQUEE-LOGOS] Logo images inside the band - fixed 35px height */
804.ati-marquee-band img {
805  height: 35px !important;
806  width: auto !important;
807}
808
809/* [MARQUEE-CONTAINER] Elementor container holding the marquee - zero padding */
810.elementor-element-7355d69 {
811  padding: 0 !important;
812}
813.elementor-element-7355d69 > .e-con-inner {
814  padding: 0 !important;
815}
816
817/* [MARQUEE-FULLWIDTH] Break the band out of the 1100px content grid */
818.ati-marquee-band {
819  width: 100vw !important;
820  max-width: 100vw !important;
821  margin-left: calc(-1 * (100vw - 100%) / 2) !important;
822  position: relative !important;
823}
824
825/* [MARQUEE-OLDSWIPER] Retired Swiper carousel (c2e32ee) - kept in case the
826   element still renders anywhere. Safe to delete once confirmed unused. */
827.elementor-element-c2e32ee {
828  width: 100vw !important;
829  max-width: 100vw !important;
830  margin-left: calc(-1 * (100vw - 100%) / 2) !important;
831  position: relative !important;
832  height: 35px !important;
833  overflow: hidden !important;
834}
835.elementor-element-c2e32ee.elementor-widget,
836.elementor-element-c2e32ee .elementor-widget-container {
837  padding: 0 !important;
838  margin: 0 !important;
839}
840.elementor-element-c2e32ee .elementor-widget-container,
841.elementor-element-c2e32ee img {
842  height: 35px !important;
843  object-fit: contain !important;
844}
845.elementor-element-c2e32ee .swiper-wrapper,
846.elementor-element-c2e32ee .swiper-slide,
847.elementor-element-c2e32ee .swiper {
848  height: 35px !important;
849  align-items: center !important;
850}
851.elementor-element-c2e32ee .qodef-e-title {
852  display: none !important;
853}
854.elementor-element-c2e32ee .qodef-e-inner,
855.elementor-element-c2e32ee .qodef-e-images-holder,
856.elementor-element-c2e32ee .qodef-e-main-image {
857  padding: 0 !important;
858  margin: 0 !important;
859  background: transparent !important;
860}
861.elementor-element-c2e32ee .swiper-slide {
862  width: 200px !important;
863}
864
865/* [MARQUEE-WRAPPER] Outer wrapper container - zero vertical padding so the
866   band sits flush against the banner above it */
867.elementor-element-4263672 > .e-con-inner {
868  padding: 0 !important;
869}
870.elementor-element-4263672 {
871  padding-top: 0 !important;
872  padding-bottom: 0 !important;
873}
874.elementor-element-4263672 > .e-con-inner {
875  padding-top: 0 !important;
876  padding-bottom: 0 !important;
877}
878
879/* [ACTU-BADGE] "Notre Actualite" floating badge/button - homepage only.
880   DISABLED Session 27 - client pulled the button (didn't like the pale
881   accent-outline pixel visible in the source PNG at bottom-right - that
882   pixel is genuine artwork, not a bug, see the pixel-scan in that
883   session's log). Kept commented, not deleted - client is known to
884   change their mind. Widget markup also still lives in
885   actu-badge-widget.html; the actual Elementor HTML widget instance was
886   removed from the live homepage, so uncommenting this alone is not
887   enough to bring it back - the widget must be re-added in Elementor too.
888
889   Links to /actualites/. Whole flattened image, animated as ONE unit.
890   SOURCE FILE: boutton-actualite.png is 1563x1563 but the actual art
891   (measured via canvas pixel-scan) only occupies a band at
892   x:[10.2%,89.8%] y:[34.4%,65.6%] - ~80% wide, ~31% tall, aspect ~2.55:1.
893   Wrapper is overflow:hidden at that aspect ratio; the img is rendered
894   oversized and shifted with negative top/left so only the art band
895   shows. If this PNG is ever replaced, re-run the pixel-scan console
896   script (see session-log.md) and redo these numbers.
897   Positioned to intentionally hang off the right edge of the viewport. */
898/*
899body.home .ati-actu-badge {
900  position: absolute;
901  right: calc(-16px - (100vw - 100%) / 2);
902  bottom: calc(100% + 40px);
903  width: 200px;
904  height: 90px;
905  overflow: hidden;
906  display: block;
907  z-index: 5;
908  cursor: pointer;
909}
910body.home .ati-actu-badge-img {
911  position: absolute;
912  top: -69px;
913  left: -14px;
914  width: 228px;
915  height: 228px;
916  animation: ati-actu-float 3.4s ease-in-out infinite;
917}
918@keyframes ati-actu-float {
919  0%, 100% { transform: translate(0, 0); }
920  50%      { transform: translate(10px, 14px); }
921}
922@media (max-width: 768px) {
923  body.home .ati-actu-badge { width: 136px; height: 61px; }
924  body.home .ati-actu-badge-img { width: 155px; height: 155px; top: -47px; left: -10px; }
925}
926*/
927
928
929/* ============================================================
930   9. INNER PAGE HEROES
931   ============================================================ */
932
933/* [HERO-HEADER] Theme's single-page header block - 80vh tall */
934.qodef-single-page-header {
935  min-height: 80vh !important;
936  margin-bottom: 10px !important;
937}
938.qodef-single-page-header .qodef-m-image {
939  height: 100% !important;
940  position: absolute !important;
941  top: 0 !important;
942  left: 0 !important;
943  width: 100% !important;
944}
945.qodef-single-page-header .qodef-m-image img {
946  width: 100% !important;
947  height: 100% !important;
948  object-fit: cover !important;
949}
950
951/* [HERO-TITLE] Page titles uppercase */
952.qodef-m-title.entry-title {
953  text-transform: uppercase !important;
954}
955
956/* [HERO-VIDEO] Qui Sommes Nous (5366) - full-bleed video hero */
957.hero-video-container {
958  width: 100% !important;
959  position: relative !important;
960  height: calc(100vh - 86px) !important;
961  overflow: hidden !important;
962  margin-top: -10px !important;
963}
964.hero-video-container video.e-self-hosted-video-base {
965  width: 100% !important;
966  height: 100% !important;
967  object-fit: cover !important;
968  display: block !important;
969}
970
971/* [HERO-QSNRESET] QSN (5366) - kill theme top padding so video sits flush */
972.page-id-5366 #qodef-page-content,
973.page-id-5366 #qodef-page-inner,
974.page-id-5366 .qodef-page-content-section {
975  padding-top: 0 !important;
976  margin-top: 0 !important;
977}
978
979/* [HERO-SCROLLHINT] Yellow SCROLL DOWN pill (JS-injected on 1027/7030/5667/2174) */
980.scroll-down-hint {
981  position: fixed;
982  bottom: 30px;
983  left: 50%;
984  transform: translateX(-50%);
985  text-align: center;
986  color: #000 !important;
987  background: #fdec01;
988  padding: 10px 28px;
989  border-radius: 50px;
990  letter-spacing: 2px;
991  font-size: 11px;
992  font-weight: 700;
993  z-index: 999;
994  text-shadow: none;
995  animation: scrollBounce 0.9s ease-in-out infinite;
996  white-space: nowrap;
997  cursor: pointer;
998  display: inline-flex !important;
999  align-items: center !important;
1000  gap: 8px !important;
1001}
1002/* [HERO-SCROLLHINT-ARROW] Trailing down-chevron. Same regression + same fix
1003   as [DEVIS-ARROW] - see that comment for the Font Awesome diagnosis. */
1004.scroll-down-hint::after {
1005  font-family: "Font Awesome 5 Free" !important;
1006  font-weight: 900 !important;
1007  content: "\f107" !important;
1008}
1009@keyframes scrollBounce {
1010  0%, 100% { transform: translateX(-50%) translateY(0); }
1011  50% { transform: translateX(-50%) translateY(10px); }
1012}
1013
1014/* [HERO-SUPPLYCHAIN] Supply chain (2504) - hide title, size the video */
1015body.page-id-2504 .qodef-page-title {
1016  display: none !important;
1017}
1018.elementor-element-bd5485f video {
1019  height: 80vh !important;
1020  width: auto !important;
1021  display: block;
1022  margin: 0 auto;
1023}
1024
1025
1026/* ============================================================
1027   10. SPLIT SLIDER PAGES (Sourcing, Logistique, etc.)
1028   OLD STACK - multiscroll.js + stal-core. ALL OF SECTION 10
1029   IS TO BE DELETED in VSS Phase 7. Pages: 7030/1027/5665/5667/5666.
1030   ============================================================ */
1031
1032/* [SPLIT-NAVDOTS] Hide multiscroll's nav dots */
1033#multiscroll-nav {
1034  display: none !important;
1035}
1036
1037/* [SPLIT-LOGISTIQUE] Logistique (5665) - slide background sizing */
1038.page-id-5665 .qodef-m-slide-image.ms-section {
1039  background-position: center 75px !important;
1040  background-size: 85% auto !important;
1041  background-repeat: no-repeat !important;
1042}
1043
1044/* [SPLIT-LOGISTIQUERIGHT] Logistique (5665) - right panel image + offset */
1045.page-id-5665 .ms-right .qodef-m-slide-image {
1046  background-size: 98% !important;
1047  background-color: transparent !important;
1048  background-position: center center !important;
1049}
1050.page-id-5665 .ms-right {
1051  right: 0 !important;
1052}
1053
1054/* [SPLIT-SOURCINGPARTNERS] Sourcing (1027) - NOS PARTENAIRES image position */
1055.page-id-1027 .ms-right .qodef-m-slide-image[style*="NOS-PARTENAIRES"] {
1056  background-position: center 40px !important;
1057  background-size: 85% auto !important;
1058  background-repeat: no-repeat !important;
1059}
1060
1061/* [SPLIT-SOURCINGRIGHT] Sourcing (1027) - right panel text top padding */
1062.page-id-1027 .ms-right .ms-tableCell {
1063  padding-top: 90px !important;
1064  vertical-align: top !important;
1065}
1066
1067/* [SPLIT-VIDEOBORDER] Sourcing - kill right-panel offset + video inline gap */
1068.ms-right {
1069  right: 0 !important;
1070}
1071.qodef-m-slide-image video {
1072  display: block;
1073}
1074
1075/* [SPLIT-SOURCINGLEFT] Sourcing (1027) - left panel vertical alignment */
1076.page-id-1027 .ms-left .qodef-m-slide-content {
1077  padding-top: -70px !important;
1078  justify-content: flex-start !important;
1079  align-items: flex-start !important;
1080}
1081.page-id-1027 .ms-left .elementor-element-960a9d9 {
1082  align-items: flex-start !important;
1083  padding-bottom: 80px !important;
1084}
1085
1086/* [SPLIT-MOBILE] Tablet/mobile - hide ms panels, show theme's vss-responsive */
1087@media (max-width: 1024px) {
1088  .qodef-ib-image-holder-responsive {
1089    background-size: contain !important;
1090    background-repeat: no-repeat !important;
1091    background-position: center !important;
1092  }
1093  .qodef-vertical-split-slider .ms-left,
1094  .qodef-vertical-split-slider .ms-right {
1095    display: none !important;
1096  }
1097  .qodef-vss-responsive {
1098    display: block !important;
1099    height: auto !important;
1100    width: 100% !important;
1101  }
1102  .qodef-vss-responsive .qodef-m-slide-content {
1103    display: block !important;
1104    height: auto !important;
1105    width: 100% !important;
1106  }
1107  .qodef-vss-responsive .qodef-m-slide-image {
1108    height: 350px !important;
1109    background-size: contain !important;
1110    background-repeat: no-repeat !important;
1111    background-position: center top !important;
1112    display: block !important;
1113    width: 100% !important;
1114  }
1115  .qodef-vss-responsive .elementor-absolute {
1116    position: relative !important;
1117    width: 100% !important;
1118    height: auto !important;
1119    top: 0 !important;
1120    left: 0 !important;
1121  }
1122  .qodef-vss-responsive,
1123  .qodef-m-slide-content {
1124    height: auto !important;
1125    min-height: 0 !important;
1126  }
1127}
1128
1129/* [SPLIT-MOBILESCROLL] Tablet - undo multiscroll's scroll trap on the wrapper */
1130@media (max-width: 1024px) {
1131  #qodef-page-wrapper {
1132    overflow: visible !important;
1133    height: auto !important;
1134  }
1135}
1136
1137
1138/* ============================================================
1139   11. QUI SOMMES NOUS PAGE
1140   ============================================================ */
1141
1142/* [QSN-FORMANCHOR] Session 38 - the header contact icon's target
1143   (#wpcf7-f9472-p2174-o1, the CF7 form) was landing in the wrong scroll
1144   position - past the form, at the footer when arriving from another page,
1145   or near the form's bottom when already on this page. Confirmed via a live
1146   fetch that the id is genuinely unique on the page (not a duplicate-id
1147   bug) - the real cause is Chrome's default CSS Scroll Anchoring, which
1148   keeps nudging the scroll position to compensate as content above the fold
1149   (this page has an autoplaying hero video) finishes loading/reflowing
1150   *after* the browser's native fragment jump already fired. The more that
1151   loads after the jump, the further the drift - which is exactly why a
1152   fresh cross-page arrival (nothing loaded yet) overshot further than a
1153   same-page click (video already settled). This turns that feature off for
1154   the whole document; see [JS-CONTACTSCROLL] in Custom-JS.js for the
1155   explicit scroll that replaces the native jump. scroll-margin-top clears
1156   the ~86px fixed header so the form's first field isn't hidden under it. */
1157html, body {
1158  overflow-anchor: none !important;
1159}
1160#wpcf7-f9472-p2174-o1 {
1161  scroll-margin-top: 100px !important;
1162}
1163
1164/* [QSN-CLIENTS] Clients carousel - band height + logo sizing */
1165.elementor-element-959f90c .qodef-qi-clients-slider {
1166  height: 85px;
1167}
1168.elementor-element-959f90c .qodef-e-main-image img {
1169  height: 70px;
1170  width: auto;
1171  max-width: none;
1172  object-fit: contain;
1173}
1174
1175/* [QSN-MOBILE] Mobile - text width + force Swiper icons to wrap into a grid.
1176   Swiper owns width/transform inline, so .swiper-wrapper must be targeted. */
1177@media (max-width: 1024px) {
1178  .page-id-2174 .e-paragraph-base {
1179    width: 100% !important;
1180    max-width: 100% !important;
1181    box-sizing: border-box !important;
1182    padding: 0 30px !important;
1183  }
1184  .page-id-2174 [data-id="5128616"] .swiper-slide {
1185    width: 50% !important;
1186    max-width: 50% !important;
1187    flex-shrink: 0 !important;
1188  }
1189  .page-id-2174 [data-id="5128616"] .swiper-wrapper {
1190    flex-wrap: wrap !important;
1191    transform: none !important;
1192    height: auto !important;
1193    justify-content: center !important;
1194  }
1195}
1196
1197
1198/* ============================================================
1199   12. SECTOR PAGES - CUSTOM ICON ROWS
1200   ============================================================ */
1201
1202/* [ICONS-ROW] Icon row container - evenly spaced flex row */
1203.custom-icons-row {
1204  display: flex;
1205  justify-content: space-between;
1206  align-items: flex-start;
1207  padding: 30px 0;
1208  gap: 10px;
1209  margin-top: -40px;
1210}
1211
1212/* [ICONS-ITEM] Single icon card - white tile, centred content */
1213.custom-icon-item {
1214  flex: 1;
1215  display: flex;
1216  flex-direction: column;
1217  align-items: center;
1218  text-align: center;
1219  gap: 12px;
1220  background: #ffffff;
1221  padding: 20px 10px;
1222  border-radius: 4px;
1223}
1224.custom-icon-item img {
1225  width: 70px;
1226  height: auto;
1227}
1228.custom-icon-item p {
1229  font-size: 13px;
1230  font-weight: 600;
1231  color: #1a1a1a;
1232  margin: 0;
1233  line-height: 1.4;
1234}
1235
1236/* [ICONS-MOBILE] 768px - 2 per row. 480px - 1 per row. */
1237@media (max-width: 768px) {
1238  .custom-icons-row {
1239    flex-wrap: wrap;
1240    justify-content: center;
1241    margin-top: 80px !important;
1242  }
1243  .custom-icon-item {
1244    flex: 0 0 45%;
1245    max-width: 45%;
1246  }
1247}
1248@media (max-width: 480px) {
1249  .custom-icon-item {
1250    flex: 0 0 100%;
1251    max-width: 100%;
1252  }
1253}
1254
1255
1256/* ============================================================
1257   13. SECTEURS SIDEBAR NAV
1258   ============================================================ */
1259
1260/* [SIDENAV-CURRENT] Hide the page you're already on from the list */
1261#nav_menu-3 .current-menu-item {
1262  display: none !important;
1263}
1264
1265/* [SIDENAV-MENU] Menu as a wrapping row of pill links */
1266#nav_menu-3 .menu {
1267  list-style: none !important;
1268  padding: 0 !important;
1269  display: flex !important;
1270  flex-wrap: wrap !important;
1271  gap: 10px !important;
1272}
1273#nav_menu-3 .menu li {
1274  padding: 0 !important;
1275  background: none !important;
1276}
1277#nav_menu-3 .menu li::before {
1278  display: none !important;
1279}
1280
1281/* [SIDENAV-PILL] Pill link styling + yellow hover */
1282#nav_menu-3 .menu li a {
1283  display: inline-block !important;
1284  padding: 6px 16px !important;
1285  border: 1px solid #cccccc !important;
1286  border-radius: 4px !important;
1287  font-size: 12px !important;
1288  font-weight: 700 !important;
1289  letter-spacing: 1px !important;
1290  text-transform: uppercase !important;
1291  color: #1a1a1a !important;
1292  text-decoration: none !important;
1293  background: transparent !important;
1294}
1295#nav_menu-3 .menu li a:hover {
1296  background: #fdec01 !important;
1297  border-color: #fdec01 !important;
1298}
1299
1300/* [SIDENAV-LOGOS] Sidebar logos - 2-column grid of grey tiles */
1301#sidebar-logos-section {
1302  margin-bottom: 30px;
1303}
1304#sidebar-logos-grid {
1305  display: grid;
1306  grid-template-columns: 1fr 1fr;
1307  gap: 12px;
1308  margin-top: 15px;
1309}
1310.sidebar-logo-item {
1311  background: #f1f3f5;
1312  border-radius: 4px;
1313  padding: 10px;
1314  display: flex;
1315  align-items: center;
1316  justify-content: center;
1317}
1318.sidebar-logo-item img {
1319  max-width: 100%;
1320  max-height: 50px;
1321  object-fit: contain;
1322  height: auto;
1323}
1324
1325/* [PARTNERS-BROCHURE] Session 38 - "Télécharger la brochure" button, added
1326   by [JS-BROCHURE] to every "Nos partenaires" section on the sector pages.
1327   Session 38 2nd follow-up: solid yellow idle / solid black hover, matching
1328   what the user asked for explicitly (not the transparent-outline pattern
1329   devis-fab/contact-fab use) - black text idle, white text on hover. Kept
1330   the earlier un-stretch fix (`align-self`+`width:fit-content` - the
1331   Elementor container it lands in is a flex row/column that stretches a
1332   lone child to fill the cross-axis by default). */
1333.brochure-btn {
1334  display: inline-flex !important;
1335  align-self: center !important;
1336  width: fit-content !important;
1337  align-items: center !important;
1338  gap: 6px !important;
1339  margin: 20px 0 0 !important;
1340  padding: 0 14px !important;
1341  height: 36px !important;
1342  border-radius: 4px !important;
1343  border: 2px solid #fdec01 !important;
1344  background-color: #fdec01 !important;
1345  color: #1a1a1a !important;
1346  font-size: 11px !important;
1347  font-weight: 700 !important;
1348  letter-spacing: 0.5px !important;
1349  text-decoration: none !important;
1350  text-transform: uppercase !important;
1351  transition: background-color 0.2s ease, color 0.2s ease !important;
1352}
1353.brochure-btn:hover {
1354  background-color: #000000 !important;
1355  color: #ffffff !important;
1356}
1357.brochure-btn svg {
1358  width: 14px !important;
1359  height: 14px !important;
1360  flex-shrink: 0 !important;
1361}
1362
1363/* [PARTNERS-BROCHURE-COVER] Sourcing (10476) - the "SCROLL DOWN" + brochure
1364   pill pair on cover 1.
1365
1366   Session 38 4th follow-up: REWRITTEN as one wrapper holding both pills,
1367   replacing three failed rounds of positioning them as two independent
1368   elements (guessed offset -> runtime-measured offset -> opposing centerline
1369   anchors + equal min-widths). Every one of those shared the same root flaw:
1370   two separately-positioned elements each running their OWN copy of the
1371   bounce animation can never stay in phase, because each animation starts
1372   whenever its element gets the property - and the two are created by
1373   different scripts at different times. That permanent phase drift is what
1374   read as "the 3D position is not the same / scroll down looks more out of
1375   the screen". No amount of matching their sizes or offsets could have fixed
1376   it; it isn't a sizing bug.
1377
1378   The wrapper fixes four separate reported problems at once, by construction
1379   rather than by tuning:
1380     1. PHASE - one animation on one element, so both pills move as one solid
1381        unit. Desync is now structurally impossible.
1382     2. CENTERING - flexbox centers the GROUP. Nothing has to know the other
1383        pill's width, so both keep their natural width (no `min-width`
1384        padding them out - that's the "still too wide" complaint) and the
1385        pair stays balanced whether one pill is showing or both.
1386     3. THE FLASH on scrolling past cover 1 - the hint used to be re-centered
1387        the instant it stopped being "paired", which happened while it was
1388        still mid-fade, so you saw it jump back to center before vanishing.
1389        Now the hint never moves at all: it sits in normal flow inside the
1390        wrapper, and only the wrapper's opacity animates.
1391     4. Panel-transform coupling - the pair is `position:fixed` on <body>,
1392        no longer absolutely positioned inside the transformed VSS panel.
1393
1394   Uses [HERO-SCROLLHINT]'s existing `scrollBounce` keyframes, which already
1395   carry the `translateX(-50%)` this wrapper needs for centering.
1396
1397   ⚠️ Do NOT put `transform: none !important` on the wrapper. An `!important`
1398   author declaration outranks a running animation's value for the same
1399   property, so the keyframes would keep playing while moving nothing - that
1400   silently killed the bounce once already this session. */
1401.ati-pill-pair {
1402  position: fixed !important;
1403  left: 50% !important;
1404  bottom: 30px !important;
1405  display: flex !important;
1406  align-items: center !important;
1407  justify-content: center !important;
1408  gap: 12px !important;
1409  z-index: 999 !important;
1410  opacity: 0;
1411  transition: opacity 0.3s ease;
1412  /* Centering fallback for if the animation never applies (reduced-motion,
1413     etc). Left non-!important on purpose: a running animation outranks a
1414     normal declaration, so scrollBounce's own translateX(-50%) still wins
1415     whenever it is playing. */
1416  transform: translateX(-50%);
1417  animation: scrollBounce 0.9s ease-in-out infinite;
1418}
1419
1420/* Both children drop to normal flow - the wrapper owns position and motion.
1421   The hint in particular has to give up [HERO-SCROLLHINT]'s fixed
1422   positioning, centering transform and its own bounce, or it would fight the
1423   wrapper for all three. */
1424.ati-pill-pair .scroll-down-hint,
1425.ati-pill-pair .brochure-btn--cover {
1426  position: static !important;
1427  left: auto !important;
1428  right: auto !important;
1429  bottom: auto !important;
1430  margin: 0 !important;
1431  transform: none !important;
1432  animation: none !important;
1433}
1434
1435/* The brochure pill only exists on cover 1, so it stays out of the flow
1436   until [JS-VSS-HINT] marks the pair as being on that slide. `display` (not
1437   `visibility`) so the wrapper re-centers around the lone hint on slide 1. */
1438.ati-pill-pair .brochure-btn--cover {
1439  display: none !important;
1440  padding: 10px 28px !important;
1441  border-radius: 50px !important;
1442  border: none !important;
1443  font-size: 11px !important;
1444  font-weight: 700 !important;
1445  letter-spacing: 2px !important;
1446  background-color: #fdec01 !important;
1447  color: #000000 !important;
1448  white-space: nowrap !important;
1449}
1450.ati-pill-pair--paired .brochure-btn--cover {
1451  display: inline-flex !important;
1452}
1453.ati-pill-pair .brochure-btn--cover:hover {
1454  background-color: #000000 !important;
1455  color: #ffffff !important;
1456}
1457
1458/* [SIDENAV-HIDEFAMILLE] Session 37 - "Famille de produit" category dropdown
1459   in the sector-page sidebar (widget id categories-2, "main-sidebar" widget
1460   area), commented out (hidden, not deleted) per the marketing team's
1461   "famille produits a retirer" decision on 3 rows of the client feedback
1462   sheet. Kept reversible - this client revisits decisions - instead of
1463   removing the widget in wp-admin. #categories-2 is a stable per-instance
1464   widget id, unique to this one widget, so no page-id scoping is needed. */
1465#categories-2 {
1466  display: none !important;
1467}
1468
1469
1470/* ============================================================
1471   14. FORMS (CF7)
1472   ============================================================ */
1473
1474/* [FORM-ROW] Two-up field rows (Devis form) */
1475.wpcf7 .dv-form-row {
1476  display: flex;
1477  gap: 16px;
1478  margin-bottom: 16px;
1479}
1480.wpcf7 .dv-form-row .wpcf7-form-control-wrap {
1481  flex: 1;
1482  display: block;
1483}
1484.wpcf7 .dv-form-row input {
1485  width: 100% !important;
1486}
1487
1488/* [FORM-FIELDS] All CF7 inputs - shared border/padding/background */
1489.wpcf7 input[type="text"],
1490.wpcf7 input[type="tel"],
1491.wpcf7 input[type="email"],
1492.wpcf7 textarea {
1493  width: 100% !important;
1494  border: 1px solid #888 !important;
1495  border-radius: 6px !important;
1496  padding: 16px !important;
1497  font-size: 15px !important;
1498  background: #ffffff !important;
1499  color: #333 !important;
1500  box-sizing: border-box !important;
1501  display: block !important;
1502}
1503.wpcf7 textarea {
1504  height: 160px !important;
1505  resize: vertical !important;
1506  margin-top: 16px !important;
1507  margin-bottom: 16px !important;
1508}
1509
1510/* [FORM-CONTACTBOX] Contact form white card wrapper */
1511.elementor-element-85ec075 .wpcf7-form {
1512  background: #ffffff !important;
1513  margin-top: 20px !important;
1514  padding: 20px !important;
1515}
1516
1517/* [FORM-MOBILE] Stack two-up rows on mobile */
1518@media (max-width: 767px) {
1519  .wpcf7 .dv-form-row {
1520    flex-direction: column !important;
1521  }
1522}
1523
1524/* [FORM-RECRUTEMENT] Recrutement form - rows, fields, file input */
1525.recrutement-form .form-row {
1526  display: flex !important;
1527  gap: 20px !important;
1528}
1529.recrutement-form .form-row .wpcf7-form-control-wrap {
1530  flex: 1 !important;
1531}
1532.recrutement-form .wpcf7-form-control-wrap input,
1533.recrutement-form .wpcf7-form-control-wrap textarea,
1534.recrutement-form input[type="text"],
1535.recrutement-form input[type="email"],
1536.recrutement-form input[type="tel"],
1537.recrutement-form textarea {
1538  border: 1px solid #cccccc !important;
1539  border-radius: 4px !important;
1540  padding: 12px 15px !important;
1541  width: 100% !important;
1542  background: #ffffff !important;
1543}
1544.recrutement-form .wpcf7-file {
1545  margin-bottom: 20px !important;
1546}
1547
1548/* [FORM-BUTTONTEXT] Theme button label colors (black, white on hover) */
1549.qodef-button .qodef-m-text,
1550.qodef-button span.qodef-m-text {
1551  color: #000000 !important;
1552  font-family: inherit !important;
1553}
1554.qodef-button:hover .qodef-m-text,
1555.qodef-button:hover span.qodef-m-text {
1556  color: #ffffff !important;
1557  font-family: inherit !important;
1558}
1559
1560
1561/* ============================================================
1562   15. RECRUTEMENT PAGE - JOBS TABLE
1563   ============================================================ */
1564
1565/* [JOBS-TABLE] Table shell */
1566.jobs-table { width: 100%; border: 1px solid #e0e0e0; border-radius: 4px; overflow: hidden; }
1567
1568/* [JOBS-HEADER] Header row - grey band, uppercase labels */
1569.jobs-header { display: grid; grid-template-columns: 2fr 1fr 1fr 150px; padding: 15px 20px; background: #f5f5f5; font-weight: 700; font-size: 13px; letter-spacing: 1px; text-transform: uppercase; border-bottom: 1px solid #e0e0e0; }
1570
1571/* [JOBS-ROW] Data row - same grid template as the header */
1572.jobs-row { display: grid; grid-template-columns: 2fr 1fr 1fr 150px; padding: 25px 20px; border-bottom: 1px solid #e0e0e0; align-items: center; }
1573.jobs-row:last-child { border-bottom: none; }
1574.jobs-cell p { margin: 5px 0 0; font-size: 14px; color: #666; }
1575
1576/* [JOBS-BUTTON] Apply button - yellow pill, red on hover */
1577.jobs-btn { background: #fdec01; color: #000; padding: 10px 25px; border-radius: 50px; font-weight: 700; text-decoration: none; font-size: 14px; }
1578.jobs-btn:hover { background: #e1312d; color: #fdec01; }
1579
1580
1581/* ============================================================
1582   16. FOOTER
1583   ============================================================ */
1584
1585/* [FOOTER-SPACING] Top area padding + widget margin resets */
1586#qodef-page-footer-top-area #qodef-page-footer-top-area-inner {
1587  padding: 20px 0 20px !important;
1588}
1589#qodef-page-footer-top-area .textwidget p {
1590  margin-bottom: 3px !important;
1591}
1592#qodef-page-footer-top-area .textwidget {
1593  margin-bottom: 0 !important;
1594}
1595#qodef-page-footer-top-area .widget {
1596  padding-top: 0 !important;
1597  margin-top: 0 !important;
1598  margin-bottom: 0 !important;
1599}
1600#qodef-page-footer-top-area .qodef-grid-item {
1601  padding-top: 0 !important;
1602  margin-top: 0 !important;
1603}
1604#qodef-page-footer-top-area h3 {
1605  margin-top: 0 !important;
1606  margin-bottom: 15px !important;
1607}
1608
1609/* [FOOTER-LOGO] Footer logo max width */
1610#qodef-page-footer-top-area img {
1611  max-width: 100px !important;
1612  height: auto !important;
1613}
1614
1615/* [FOOTER-TITLES] Widget titles - yellow, uppercase, tracked */
1616#qodef-page-footer-top-area .qodef-widget-title {
1617  color: #fdec01 !important;
1618  font-size: 14px !important;
1619  letter-spacing: 2px !important;
1620  margin-top: 0 !important;
1621  margin-bottom: 15px !important;
1622  text-transform: uppercase !important;
1623}
1624
1625/* [FOOTER-GRID] Footer columns align to the top */
1626#qodef-page-footer-top-area .qodef-grid-inner {
1627  display: flex !important;
1628  align-items: flex-start !important;
1629  flex-wrap: wrap !important;
1630}
1631
1632/* [FOOTER-NAV] Footer menu - strip theme bullets, white links */
1633#nav_menu-2 .menu li::before,
1634#nav_menu-2 .menu li::after {
1635  display: none !important;
1636  content: "" !important;
1637}
1638#nav_menu-2 ul.menu {
1639  list-style: none !important;
1640  padding-left: 0 !important;
1641}
1642#nav_menu-2 ul.menu li {
1643  list-style: none !important;
1644  padding-left: 0 !important;
1645  background: none !important;
1646}
1647#nav_menu-2 ul.menu li a {
1648  color: #ffffff !important;
1649}
1650
1651/* [FOOTER-CONTACT] Contact column - white text + links */
1652#stal_core_icon_list_item-2 .qodef-e-title-text,
1653#stal_core_icon_list_item-3 .qodef-e-title-text,
1654#stal_core_icon_list_item-4 .qodef-e-title-text {
1655  color: #ffffff !important;
1656}
1657#stal_core_icon_list_item-2 a,
1658#stal_core_icon_list_item-3 a,
1659#stal_core_icon_list_item-4 a {
1660  color: #ffffff !important;
1661}
1662
1663/* ------------------------------------------------------------
1664   NOTE: the rules below were historically parked in section 16
1665   but are NOT footer rules. Left in place to avoid churn; they
1666   belong to Achat Industriel / Sourcing.
1667   ------------------------------------------------------------ */
1668
1669/* [FOOTER-ACHATIMG] MISPLACED - Achat Industriel body image sizing */
1670.elementor-element-98fcabf img {
1671  width: 75% !important;
1672  height: auto !important;
1673  display: block !important;
1674  margin: 20px auto 0 auto !important;
1675}
1676
1677/* [FOOTER-SOURCINGSTRIP] MISPLACED - Sourcing (1027) white strip fix at the
1678   top of the ms-right video panel. Superseded once 1027 moves to new VSS. */
1679.page-id-1027 .elementor-widget-stal_vertical_split_slider {
1680  margin-top: -15px !important;
1681}
1682
1683/* [FOOTER-SOURCINGTPL] MISPLACED - Sourcing (1027) unified slide template
1684   9421: force full height + centre its content. Irrelevant post-Phase 7. */
1685.page-id-1027 [data-elementor-id="9421"] {
1686  height: 100% !important;
1687  min-height: 100% !important;
1688}
1689.page-id-1027 [data-elementor-id="9421"] .e-con,
1690.page-id-1027 [data-elementor-id="9421"] .elementor-section {
1691  height: 100% !important;
1692  min-height: 100% !important;
1693}
1694.page-id-1027 [data-elementor-id="9421"] .e-con {
1695  display: flex !important;
1696  align-items: center !important;
1697  justify-content: center !important;
1698}
1699@media (min-width: 1440px) {
1700  .page-id-1027 [data-elementor-id="9421"] .elementor-widget-html div:first-child {
1701    max-width: 900px !important;
1702    padding: 40px 80px !important;
1703  }
1704  .page-id-1027 [data-elementor-id="9421"] h2 {
1705    font-size: 42px !important;
1706  }
1707  .page-id-1027 [data-elementor-id="9421"] p,
1708  .page-id-1027 [data-elementor-id="9421"] li {
1709    font-size: 18px !important;
1710  }
1711}
1712
1713
1714/* ============================================================
1715   17. ACTUALITES PAGE
1716   Template: wp-content/themes/stal/ati-actualites-template.php
1717   (we have a local copy: ati-actualites-template.php in this folder)
1718
1719   Session 30: all styling for this page (hero image, subtitle position,
1720   card redesign) lives DIRECTLY in that template file's own inline
1721   <style> block now, not here. The template is a real PHP file we can
1722   edit and deploy (via Hostinger File Manager's file editor - re-uploading
1723   the file does NOT persist, per the template's own header comment), so
1724   there's no need to fight the cascade with !important overrides from a
1725   separate file. Nothing to see here on purpose - check the template file.
1726   ============================================================ */
1727
1728
1729/* ============================================================
1730   18. NEW VSS PAGES  -  Achat Industriel 2 (page-id-10158) +
1731       Session 31 clones: Sourcing2 (10476), Logistique2 (10477),
1732       Export international2 (10478). All 4 page IDs are grouped via
1733       `body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478)`
1734       throughout this section - a plain comma-list would have broken
1735       every rule with a descendant combinator after it (Session 31 bug,
1736       caught and reverted before deploy - see session log).
1737       The 3 clones were made via Elementor's page-duplicate action,
1738       which copies element IDs as-is (unlike copy/paste of individual
1739       elements) - so [VSS-L1BG]/[VSS-R-ORDER]/etc keep matching by the
1740       SAME hardcoded IDs on all 4 pages with no remapping needed. If a
1741       future clone is made differently and a panel goes visually wrong,
1742       re-verify content-per-ID before assuming this still holds.
1743   ------------------------------------------------------------
1744   Layout is CSS. Motion is JS ([JS-VSS] block in Custom JS).
1745   Nothing here sets `transform` on the TRACKS at runtime - JS owns
1746   that. The one CSS transform below ([VSS-INITIALPOS]) is the
1747   pre-JS starting state only, and its value MUST match what JS
1748   parks the right track at.
1749
1750   STRUCTURE AS BUILT (Phase 4 - verified in DOM):
1751     .ati-vss                      300vh, the scroll runway
1752       .ati-vss-viewport           sticky, 100vh, overflow hidden
1753         .ati-vss-track-is-left    50% wide, 300vh  [L1, L3]
1754         .ati-vss-track-is-right   50% wide, 300vh  [R3, R2-blank, R1]
1755         .ati-vss-panel-is-unified ABSOLUTE, 100vw x 100vh, z-index 10
1756                                   -- sibling of both tracks, NOT inside
1757                                      either. Slides up over them.
1758
1759   PANEL COUNTS ARE ASYMMETRIC AND THAT IS FINE:
1760     left  = 2 real panels (L1, L3) in a 300vh track
1761     right = 3 real panels (Devenir-fournisseur, R2-blank, R1) in a 300vh track
1762   Both tracks stay 300vh so they share ONE coordinate system driven
1763   by one `progress` value.
1764   DO NOT set the left track to height:auto - that decouples the two
1765   tracks and desyncs every transform. (This was the Session 26 bug.)
1766
1767   MOTION CONTRACT with [JS-VSS] - keep these in lockstep. RISE-TO-COVER STACK
1768   (Session 32 - tracks NEVER move, only cover panels animate; a track-slide
1769   attempt this session produced an opposite-direction split motion and was
1770   reverted - see CLAUDE.md Motion Law history):
1771     progress = clamp(-vssRect.top / vh, 0, 2)
1772     pA = clamp(progress,0,1); pB = clamp(progress-1,0,1); easeInOutCubic -> eA,eB
1773     left  track  : translateY(0)         <- NEVER moves
1774     right track  : translateY(-200vh)    <- NEVER moves
1775     cover 1 (logos, .elementor-element-7373081) : translateY((1-eA)*100vh),
1776       opacity 1, z-index 10 - rises progress 0->1
1777     cover 2 (slide 3, .elementor-element-8e4528a, Sourcing2 only so far) :
1778       translateY((1-eB)*100vh), opacity 1, z-index 11 (ABOVE cover 1) -
1779       rises progress 1->2, see [VSS-COVER2]
1780   Both covers share the class .ati-vss-panel-is-unified (inherit this rule's
1781   positioning), so [JS-VSS] finds them by their distinct elementor-element
1782   IDs, not by class. L3 / R2-blank / the 3rd right-track panel are still
1783   never revealed inside the TRACKS - their content was moved OUT into cover 2
1784   instead (Session 32). [VSS-L3-BG]/[VSS-R2-BG] remain defensive-only leftovers
1785   on the (now empty) track panels. Right track's -200vh keeps its at-rest
1786   child in view; [VSS-INITIALPOS] below MUST equal that -200vh.
1787
1788   THE STICKY TRAP - read before touching anything here:
1789   position:sticky dies if ANY ancestor is a scroll container, or has
1790   transform / filter / contain / will-change / perspective set.
1791   Clip horizontal bleed on the html element, NEVER on body or the wrapper.
1792
1793   REAL DOM CLASSES (Elementor Navigator labels lie - verified in DOM):
1794     left track  : .ati-vss-panel (L1) / .ati-vss-panel (L3)
1795     right track : .ati-vss-panel (R3) / .ati-vss-panel-is-blank (R2) /
1796                   .ati-vss-panel (R1)
1797     sibling     : .ati-vss-panel-is-unified (L2)
1798   L1 and L3 share .ati-vss-panel, so L1 is targeted by its Elementor
1799   element id .elementor-element-05b1eea - see [VSS-L1BG].
1800   ============================================================ */
1801
1802/* [VSS-STICKYBODY] Sticky prerequisite #1 - theme sets body{overflow-y:auto},
1803   which makes body a scroll box, so sticky binds to body not the window. */
1804body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) {
1805  overflow: visible !important;
1806  overflow-y: visible !important;
1807}
1808
1809/* [VSS-STICKYWRAPPER] Sticky prerequisite #2 - theme sets the wrapper to
1810   overflow:hidden with !important. Specificity alone loses; must be !important. */
1811body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-page-wrapper {
1812  overflow: visible !important;
1813}
1814
1815/* [VSS-PADRESET] Sticky prerequisite #3 - the global gap fix in section 1
1816   adds 10px top padding here, which offsets every panel inside the tracks
1817   and desyncs the layout from the transform math. See [GLOBAL-GAPFIX]. */
1818body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-page-content {
1819  padding-top: 0 !important;
1820}
1821
1822/* [VSS-WRAPPER] Outer wrapper - its height IS the scroll distance.
1823   300vh = 100vh to traverse slide 1, 100vh for the unified panel to
1824   slide up and cover, 100vh of hold. Also breaks out of the theme's
1825   1100px content grid. */
1826body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss {
1827  position: relative !important;
1828  height: 300vh;
1829  width: 100% !important;
1830  max-width: 100% !important;
1831  padding: 0 !important;  /* kill Elementor's default 10px container padding -
1832                             it insets the viewport + both tracks by 10px, opening
1833                             a blank sliver left of L1 and right of R1, and shifting
1834                             the absolute unified panel 10px right (Session 31). */
1835}
1836
1837/* [VSS-VIEWPORT] The pinned window. sticky + top:0 holds it at the window
1838   top for as long as .ati-vss (300vh) still has height scrolling past.
1839   position:relative is NOT needed and must NOT be added - sticky already
1840   establishes the containing block for [VSS-UNIFIED-SLOT]'s absolute panel. */
1841body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-viewport {
1842  position: sticky;
1843  top: 0;
1844  height: 100vh;         /* exactly one screen tall, never more */
1845  overflow: hidden;      /* clips the 300vh tracks inside it */
1846  padding: 0 !important; /* Elementor container default - must be zero */
1847}
1848
1849/* [VSS-TRACKS] Both tracks. Comma-grouped because Elementor's Atomic
1850   Classes field flattens multi-word classes - they share no base class.
1851   BOTH are 300vh regardless of how many real panels they hold. Do not
1852   "optimise" one down to its content height - see the header note. */
1853body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-left,
1854body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right {
1855  width: 50%;      /* half the viewport each */
1856  height: 300vh !important;   /* the full reel that JS slides past the viewport */
1857  min-height: 300vh !important;
1858  flex-shrink: 0;  /* stop flexbox squashing it into the 100vh viewport */
1859  gap: 0;
1859          /* math assumes exact 100vh steps - no gaps */
1860  padding: 0 !important;
1861  will-change: transform;  /* GPU compositing - smoother scroll motion */
1862  /* No z-index: tracks are non-positioned and STATIC. The unified panel
1863     (positioned, z-index:10) paints above them and rises to cover - see
1864     [VSS-UNIFIED-SLOT]. (Doors-reveal briefly put tracks above; reverted.) */
1865}
1866
1867/* [VSS-R-ORDER] Pin right-track visual order by stable Elementor ID, NOT DOM
1868   order. flex `order` makes this immune to reordering/content edits in the
1869   Elementor editor - whichever ID actually holds the image always renders
1870   last / at rest, regardless of DOM position.
1871   VERIFIED Session 28: DOM order was found reversed - fixed via `order`.
1872   VERIFIED Session 29 (later same day): the IMAGE ITSELF had moved to a
1873   different element ID - elementor-element-3355159 (originally R1) now
1874   holds a debug label ("Ati-vss-panel-right-2") - deliberately placed
1875   there to visually identify which panel is on screen, for catching
1876   exactly this kind of panel-identity bug - while elementor-element-ccb21ab
1877   (originally R3, "empty, never seen") now holds the handshake image.
1878   Mapping below reflects the CURRENT real content, not the original
1879   build - if R1 goes blank again, re-run the ID/content scan from that
1880   session's log before assuming this mapping is still right. */
1881body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right {
1882  display: flex !important;
1883  flex-direction: column !important;
1884}
1885body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-3355159 {
1886  order: 1 !important;  /* debug label panel - keep out of view in the reel */
1887}
1888body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-335fbf4 {
1889  order: 2 !important;  /* R2-blank */
1890}
1891body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab {
1892  order: 3 !important;  /* holds the handshake image now - render LAST */
1893}
1894
1895/* [VSS-PANELS] The four in-track panels. Each exactly one screen tall.
1896   NOTE: .ati-vss-panel-is-unified is deliberately NOT in this list -
1897   it lives outside both tracks and is sized by [VSS-UNIFIED-SLOT]. */
1898body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-left > .ati-vss-panel,
1899body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right > .ati-vss-panel,
1900body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right > .ati-vss-panel-is-blank {
1901  height: 100vh !important;
1902  flex: 0 0 100vh !important;  /* fixed - never grow or shrink */
1903  width: 100%;      /* fill the track's 50% column */
1904  margin: 0;
1905  display: flex;
1906  align-items: center;
1907  justify-content: center;
1908}
1909
1910/* [VSS-GRIDBREAK] Kill the theme's 1100px content grid on this page.
1911   #qodef-page-inner carries margin: 0 82.33px, and
1912   .qodef-page-content-section adds 15px padding each side.
1913   Both must be zeroed or the slider can never reach full viewport width. */
1914body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-page-inner {
1915  margin-left: 0 !important;
1916  margin-right: 0 !important;
1917  max-width: 100% !important;
1918  width: 100% !important;
1919}
1920body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-page-content {
1921  width: 100% !important;
1922  max-width: 100% !important;
1923}
1924body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .qodef-page-content-section {
1925  padding-left: 0 !important;
1926  padding-right: 0 !important;
1927  width: 100% !important;
1928  max-width: 100% !important;
1929}
1930/* [VSS-GRIDINNER] Zero the theme grid-gutter negative margin on
1931   .qodef-grid-inner. Measured at width 1310 / left -15 on a 1280 window;
1932   every descendant inherits it via width:100%, pushing the slider's right
1933   edge ~15px past the viewport - the "handshake sliver" on the far right. */
1934body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .qodef-grid-inner {
1935  margin-left: 0 !important;
1936  margin-right: 0 !important;
1937  max-width: 100% !important;
1938  width: 100% !important;
1939}
1940
1941/* [VSS-BEHINDHEADER] Pull content up so the slider sits BEHIND the 86px
1942   header, matching the old split-slider pages. */
1943body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-page-content {
1944  margin-top: -86px !important;
1945}
1946
1947/* [VSS-HIDETITLE] Hide the theme's page title block */
1948body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .qodef-page-title {
1949  display: none !important;
1950}
1951
1952/* [VSS-L1BG] L1 (left, slide 1) - dark bg + network overlay.
1953   Targeted by Elementor id because L1 and L3 share .ati-vss-panel.
1954   The PNG is a WHITE pattern on transparent - it is invisible without
1955   the background-color underneath it. Do not remove the color.
1956   Top padding 120px clears the overlapping header. */
1957body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea {
1958  background-color: #0a0a0a !important;
1959  background-image: url('https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2020/02/vertical-split-slider-stars-img.png') !important;
1960  background-size: cover !important;
1961  background-position: center !important;
1962  padding: 120px 60px 60px 60px !important;
1963}
1964
1965/* [VSS-L1TITLE] L1 heading - pulled up, spaced away from the body copy */
1966body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea h1 {
1967  margin-top: -30px !important;
1968}
1969body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea h1,
1970body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea h2 {
1971  margin-bottom: 40px !important;
1972}
1973
1974/* [VSS-OVERFLOWCLIP] Removing overflow:hidden from body and the wrapper
1975   (required for sticky) exposes a pre-existing 66px horizontal overflow.
1976   Sources: [HDR-NAV] padding-right:400px, and the theme's off-canvas
1977   .qodef-side-area parked off-screen right.
1978   Clip on the html element - it's the scroll container, so this contains the bleed
1979   WITHOUT creating a scroll container between the sticky element and the
1980   window. Clipping body or the wrapper would re-break sticky. */
1981body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) {
1982  max-width: 100vw;
1983}
1984html:has(body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478)) {
1985  overflow-x: hidden;
1986}
1987
1988/* [VSS-R1IMAGE] R1 right panel - kill container padding so image fills edge
1989   to edge. The 10px Elementor default here was the white strip above R1. */
1990body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .ati-vss-panel {
1991  padding: 0 !important;
1992}
1993body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .ati-vss-panel img {
1994  width: 100% !important;
1995  height: 100% !important;
1996  object-fit: cover !important;
1997  display: block !important;
1998}
1999body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .ati-vss-panel .elementor-widget-image {
2000  height: 100% !important;
2001  padding: 0 !important;
2002  margin: 0 !important;
2003}
2004body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .ati-vss-panel .elementor-widget-container {
2005  height: 100% !important;
2006  padding: 0 !important;
2007  margin: 0 !important;
2008}
2009
2010/* [VSS-R1VIDEO] R1 (elementor-element-ccb21ab) holds a hosted VIDEO widget on
2011   Sourcing2, which the img-only rules in [VSS-R1IMAGE] above never match.
2012   Elementor wraps a hosted video in `.e-hosted-video` and locks it to
2013   `aspect-ratio: 1/1` (verified via console, Session 32). That square fills the
2014   panel width but, on tall viewports (e.g. 1920x1080 -> R1 panel 960w x 1080h),
2015   can't reach the panel's height - leaving a blank strip below the video. Kill
2016   the ratio lock and force the whole chain (widget -> .e-hosted-video wrapper
2017   -> <video>) to fill the panel and cover-crop. Scoped to R1's stable id; on
2018   pages where R1 is still an image there's no video/.e-hosted-video to match,
2019   so this is a harmless no-op there. */
2020body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-ccb21ab .elementor-widget,
2021body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-ccb21ab .elementor-wrapper,
2022body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-ccb21ab .e-hosted-video {
2023  width: 100% !important;
2024  height: 100% !important;
2025  aspect-ratio: auto !important;
2026  padding: 0 !important;
2027  margin: 0 !important;
2028}
2029body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-ccb21ab video {
2030  width: 100% !important;
2031  height: 100% !important;
2032  object-fit: cover !important;
2033  display: block !important;
2034}
2035
2036/* [VSS-INITIALPOS] Right track's starting position, set in CSS so the
2037   correct panel is painted before JS parses - prevents flash on load.
2038   VALUE MUST MATCH the JS parking position: (trackProgress - 2) * vh
2039   at trackProgress 0 = -200vh. If you change one, change both.
2040   JS overwrites this on first updatePositions(), so no runtime conflict. */
2041body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right {
2042  transform: translateY(-200vh);
2043}
2044
2045/* [VSS-UNIFIED-SLOT] The unified panel (L2) is a SIBLING of both tracks,
2046   not a child of either. position:absolute lifts it out of the viewport's
2047   flex flow so it ignores the tracks' 50% width and spans the full screen.
2048   Containing block = .ati-vss-viewport (sticky counts as positioned).
2049   RISE-TO-COVER MODEL: this panel is opaque and rises from below the fold to
2050   cover the (static) split slide 1. It sits ABOVE the tracks - z-index:10 on
2051   this positioned element paints over the non-positioned, static tracks.
2052   Parked at translateY(100vh) pre-JS: if JS never runs, the panel sits below
2053   the fold and slide 1 stays visible. JS drives translateY 100vh -> 0. */
2054body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified {
2055  position: absolute !important;
2056  top: 0 !important;
2057  left: 0 !important;
2058  width: 100vw !important;
2059  height: 100vh !important;
2060  flex: none !important;      /* it is not a flex item any more */
2061  margin: 0 !important;
2062  padding: 0 !important;
2063  z-index: 10;                    /* ABOVE the non-positioned static tracks - it covers them */
2064  transform: translateY(100vh);  /* parked below the fold; JS raises it to 0 */
2065  opacity: 1;                    /* opaque - revealed by position, not fade */
2066  background-color: #fff;       /* Session 31: opaque backdrop for the panel BOX itself -
2067                                    `opacity:1` above only means this element isn't see-through
2068                                    on its own, it does NOT paint a fill color. Content that
2069                                    doesn't cover 100% of the box (e.g. an object-fit:contain
2070                                    image, which letterboxes on mismatched aspect ratios) needs
2071                                    this or the tracks underneath show through the gaps. */
2072  pointer-events: none;          /* JS flips to auto once it covers */
2073  will-change: transform;        /* GPU compositing */
2074  overflow-y: scroll;            /* infographic may be taller than 100vh */
2075  scrollbar-width: none;         /* Firefox - hide scrollbar visually */
2076  -ms-overflow-style: none;      /* IE/Edge - hide scrollbar visually */
2077}
2078body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified::-webkit-scrollbar {
2079  display: none;                 /* Chrome/Safari - hide scrollbar visually */
2080}
2081
2082/* [VSS-UNIFIED-IMAGE] Session 31 - some clone pages (Sourcing2 etc.) put a plain
2083   Elementor Image widget directly in the unified panel instead of the HTML
2084   infographic. The panel is fluid (100vw x 100vh, [VSS-UNIFIED-SLOT]) but an
2085   <img> defaults to its own natural/cropped pixel size - it will never match
2086   a fluid box on its own. object-fit:contain scales the WHOLE image to fit
2087   inside the panel with nothing cropped (may letterbox on mismatched aspect
2088   ratios - accepted tradeoff, see session log). This does NOT fix a
2089   server-side hard crop - the Elementor widget's "Image Resolution" must be
2090   set to Full/Original, not Custom, or the missing pixels are already gone
2091   before this CSS ever runs. */
2092body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .elementor-widget-image,
2093body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .elementor-widget-image .elementor-widget-container {
2094  width: 100% !important;
2095  height: 100% !important;
2096}
2097body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .elementor-widget-image img {
2098  width: 100% !important;
2099  height: 100% !important;
2100  object-fit: contain !important;
2101  display: block !important;
2102}
2103
2104/* [VSS-COVER-HEADERCLEAR] Session 32 - the whole VSS section sits BEHIND the
2105   fixed header on purpose ([VSS-BEHINDHEADER] pulls it up -86px), so the top
2106   of every full-bleed cover panel is covered by the opaque header bar. L1
2107   already compensates for exactly this with its own 120px top padding (see
2108   [VSS-L1BG]) - the cover panels never got the same treatment, so anything
2109   near the top of their content (an infographic's title, a heading) renders
2110   underneath the header and looks cut off.
2111   MUST come AFTER [VSS-UNIFIED-SLOT], which sets `padding:0 !important` -
2112   same specificity, so the later rule wins.
2113   box-sizing is forced to border-box so the 120px comes OUT of the panel's
2114   100vh rather than adding to it (which would overflow the viewport).
2115   120px matches [VSS-L1BG]'s value; if the header height ever changes, measure
2116   it with:  document.querySelector('#qodef-page-header').getBoundingClientRect().height
2117   and update both this and [VSS-L1BG] together. */
2118body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified {
2119  /* Session 33: promoted to a custom property so [VSS-FLUID] can subtract the
2120     exact same value when sizing the infographic. Hard-coding 120px in two
2121     places is how they drift apart - change it here only. Mobile/tablet zero
2122     this out in [VSS-FLOW] (the header stops overlapping once the section
2123     leaves sticky/behind-header mode). */
2124  --vss-header-clear: 120px;
2125  box-sizing: border-box !important;
2126  padding-top: var(--vss-header-clear) !important;
2127}
2128
2129/* [VSS-UNIFIED-IMGFULL] Session 35 - the unified panels now hold IMAGES (the
2130   infographic, the partner-logos grid, etc. exported as images). Two effects
2131   for image panels only:
2132   1. TOP BLANK (issue: "too much blank above NOS PARTENAIRES; push it up").
2133      The 120px clearance above is sized for a TEXT cover; an image with
2134      `object-fit:contain` also gets vertically centred, so any slack piles up
2135      as a blank band above the picture. Fixes: (a) drop the clearance to just
2136      past the ~86px header (reclaims ~30px), and (b) `object-position: center
2137      top` so the image sits at the TOP of its box - any contain slack now
2138      falls to the BOTTOM instead of above the title. Together this pushes the
2139      picture up without pulling its title behind the opaque header (which
2140      padding-top:0 WOULD do - the titles sit at the image's top edge).
2141   2. The picture also uses the reclaimed height, so it is marginally larger.
2142   `:has(> .elementor-widget-image)` matches only panels whose DIRECT child is
2143   an Image widget - so the HTML infographic still on 10478, and cover 2's
2144   "Devenir fournisseur" text, keep their normal 120px clearance.
2145   NOTE (issue 1, user chose to keep whole image): the residual LEFT/RIGHT
2146   margins on a wide desktop are the aspect gap - images are ~1.5:1, the panel
2147   is ~2:1, and `contain` letterboxes that without cropping. Edge-to-edge would
2148   need the images re-exported at ~2:1; user opted to keep the whole image. */
2149body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified:has(> .elementor-widget-image) {
2150  padding-top: 90px !important;   /* was 120px - just clears the ~86px header */
2151}
2152body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified:has(> .elementor-widget-image) .elementor-widget-image img {
2153  object-position: center top !important;
2154}
2155
2156/* [VSS-10158-IMGCOVER] Session 39 - TRIED AND REVERTED, same session.
2157   10158 got a NEW infographic image (Achat-industriel-infographic.png,
2158   ~1.6:1) and cover was tried to fill the panel edge-to-edge with no white
2159   side margins. Reverted because the panel is a fixed 100vh and very wide
2160   (2:1+) on a large desktop screen - cover has to scale the image up until
2161   it fills that width, and at that scale the image (proportionally taller
2162   than the panel) overflows the 100vh height by more than one full content
2163   row ("Nos engagements" + its 5 icons), which cover then silently crops
2164   away rather than showing. Confirmed live: the row was not just trimmed
2165   at the edges, it was entirely gone below the fold with no way to scroll
2166   to it. That's strictly worse than the letterbox tradeoff this was meant
2167   to fix, so 10158 is back on the same shared [VSS-UNIFIED-IMAGE] contain
2168   behavior as the other 3 VSS pages - see that rule and
2169   [VSS-UNIFIED-IMGFULL] above for the current (accepted) side-margin
2170   tradeoff. If edge-to-edge fill is wanted again, the real fix is
2171   re-exporting the image closer to the panel's own aspect ratio (~2:1),
2172   not forcing cover on a taller image. */
2173
2174/* [VSS-COVER2] Session 32 - the user built a 3rd cover panel (slide 3) by
2175   duplicating the logos panel and dragging the L3 image + "Devenir
2176   fournisseur" widget into it as 2 columns. It shares the SAME class
2177   (.ati-vss-panel-is-unified) as the logos panel, so it inherits all of
2178   [VSS-UNIFIED-SLOT]'s positioning/sizing for free - only 2 things need
2179   overriding here, targeted by its stable elementor-element ID (also used
2180   by [JS-VSS] to tell the two same-class panels apart):
2181   1. z-index higher than the logos panel, so it visibly rises ABOVE it.
2182   2. Elementor auto-generated flex-direction:column for this panel's
2183      children (verified via console, Session 32) - overridden to
2184      row-reverse so the widgets render in the visual order the user wants
2185      (image left, text right) - the DOM order is [text, image] because the
2186      Navigator labels ("panel3right"/"panel3left") reflect where each
2187      widget ORIGINALLY lived (right track / left track), not where they
2188      render now; row-reverse flips DOM order to visual order without
2189      needing to touch Elementor's own widget order.
2190   3. Vertically center each column's content - a plain height:100% box
2191      left-aligns content to its own top by default, which combined with
2192      point 4 below caused the HTML widget's title to clip and left a gap
2193      at the bottom.
2194   4. The image needs object-fit:cover (not the shared [VSS-UNIFIED-IMAGE]
2195      contain rule, which is correct for the logo grid but wrong for a
2196      single photo - contain letterboxes on a mismatched aspect ratio,
2197      showing empty space around the photo). Targeted via a more specific
2198      selector so it doesn't affect cover 1's logo image. */
2199body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a {
2200  z-index: 11 !important;
2201  flex-direction: row-reverse !important;
2202  /* Session 34: drive the "Devenir fournisseur" HTML widget's fluid unit.
2203     Everything in devenir-fournisseur.html is calc(var(--u,1px)*N); this
2204     makes --u track the viewport so the text GROWS on a large monitor
2205     instead of sitting tiny in a huge panel (the "html too small on large
2206     PC" report). 100vw/1220 = ~1.05px at the 1280 dev machine (≈ original
2207     size) rising to the 2px cap at ~2440px wide. The image column ignores
2208     --u, so this is harmless to it. Mobile overrides --u in [VSS-FLOW]. */
2209  --u: clamp(1.05px, 100vw / 1220, 2px);
2210  /* Session 34: cancel [VSS-COVER-HEADERCLEAR]'s 120px top padding for THIS
2211     panel only. That padding is right for a text/infographic cover, but here
2212     it insets the photo 120px from the top, leaving a blank band above the
2213     handshake instead of letting it bleed edge-to-edge behind the header the
2214     way slide 1's R1 image does. The text column is vertically centered, so
2215     it still clears the (opaque) header without the padding. */
2216  padding-top: 0 !important;
2217}
2218body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a > * {
2219  width: 50% !important;
2220  flex: 1 1 50% !important;
2221  height: 100% !important;
2222  display: flex !important;
2223  align-items: center !important;
2224  justify-content: center !important;
2225}
2226body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-element-24f5448 {
2227  padding: 0 !important;
2228  margin: 0 !important;
2229  width: 100% !important;
2230  height: 100% !important;
2231}
2232body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-widget-image {
2233  width: 100% !important;
2234  height: 100% !important;
2235  padding: 0 !important;
2236  margin: 0 !important;
2237}
2238body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-widget-container {
2239  width: 100% !important;
2240  height: 100% !important;
2241  padding: 0 !important;
2242  margin: 0 !important;
2243}
2244body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-widget-image img {
2245  width: 100% !important;
2246  height: 100% !important;
2247  object-fit: cover !important;
2248  display: block !important;
2249}
2250
2251/* [VSS-SNAPSCROLL] Prevent browser native scroll-behavior fighting JS snap */
2252body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) {
2253  scroll-behavior: auto !important;
2254}
2255
2256/* [VSS-NOBACKTOTOP] The theme's floating "back to top" button
2257   (#qodef-back-to-top, site-wide via the qodef-back-to-top--enabled body
2258   class) doesn't belong on the VSS pages - the whole point of these pages
2259   is JS-driven snap scroll, not a manual jump-to-top control, and it sits
2260   on top of the cover panels' content (Session 32: seen overlapping the
2261   slide-3 panel). Hidden here rather than disabled site-wide in theme
2262   settings, since it's still wanted on every other page. */
2263body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-back-to-top {
2264  display: none !important;
2265}
2266
2267/* [VSS-L3-BG] L3 (empty panel) gets same dark background as L1
2268   so if it briefly appears during snap transit it looks identical to L1.
2269   Session 32: scoped to `.ati-vss-track-is-left .elementor-element-24f5448`
2270   specifically (was a bare page-wide selector) - on Sourcing2 the user
2271   dragged this exact element (still carrying its original ID; Elementor
2272   doesn't reassign IDs on a drag, only on duplication) out of the left
2273   track into cover 2's slide-3 panel. The old unscoped rule followed it
2274   there, painting L1's dark background + network pattern behind the
2275   relocated photo. Scoping to the track means this rule naturally stops
2276   applying once the element is no longer inside it - no cover2-specific
2277   override needed, and pages where it's still in place (10158/10477/10478)
2278   are unaffected. */
2279body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-left .elementor-element-24f5448 {
2280  background-color: #0a0a0a !important;
2281  background-image: url('https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2020/02/vertical-split-slider-stars-img.png') !important;
2282  background-size: cover !important;
2283  background-position: center !important;
2284}
2285
2286/* [VSS-R2-BG] R2-blank gets same image as R1 so it looks identical during transit */
2287body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-335fbf4 {
2288  padding: 0 !important;
2289  background-color: #000 !important;
2290}
2291body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-335fbf4::after {
2292  content: '';
2293  display: block;
2294  width: 100%;
2295  height: 100%;
2296  position: absolute;
2297  inset: 0;
2298  background-image: url('https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/06/collaboration-suppliers-manufacturers-ensure-smooth-operations-communication.jpg');
2299  background-size: cover;
2300  background-position: center;
2301}
2302
2303/* ---- DEAD CODE WARNING (Session 33) --------------------------------------
2304   Every [VSS-L2-*] rule from here to the end of section 18 is INERT. These
2305   are plain (non-!important) declarations, and the infographic sizes itself
2306   with inline styles, which beat them - so none of this has had any effect
2307   for several sessions. Worse, the values here have silently drifted away
2308   from the ones that actually render (this block says the map is 200px tall
2309   and the eyebrow 22px; the widget really uses 105 and 14 units). Reading
2310   these numbers to understand the current design will mislead you.
2311
2312   The live sizing model is: infographic_unified.html (inline calc()) +
2313   [VSS-FLUID] in section 18b, which owns --u. Change sizes there.
2314
2315   Left in place rather than deleted because removing ~140 lines is churn
2316   unrelated to this session's task and none of it is doing harm today.
2317   Flagged in CLAUDE.md's backlog for deletion.
2318   -------------------------------------------------------------------------- */
2319
2320/* [VSS-L2-WRAP] Infographic sized to fill exactly 100vh (632px on this screen).
2321   flex column + justify:space-between pushes top/bottom sections to edges.
2322   overflow:hidden clips anything that doesn't fit. */
2323body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .vss-l2-infographic {
2324  width: 100%;
2325  height: 100vh;
2326  padding: 20px 40px 16px;
2327  box-sizing: border-box;
2328  background: #ffffff;
2329  display: flex;
2330  flex-direction: column;
2331  justify-content: space-between;
2332  overflow: hidden;
2333}
2334
2335/* [VSS-L2-TOP] Top section doesn't grow - only takes what it needs */
2336body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-top {
2337  flex: 0 0 auto;
2338}
2339
2340/* [VSS-L2-BOTTOM] Bottom section doesn't grow either */
2341body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-bottom {
2342  flex: 0 0 auto;
2343  margin-top: 10px;
2344}
2345
2346/* [VSS-L2-COMPACT] Tuned to fit 632px viewport without scroll */
2347body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-eyebrow { font-size: 14px; margin: 0 0 2px; }
2348body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-title { font-size: 17px; line-height: 1.2; margin: 0 0 10px; }
2349body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-rows { gap: 8px; }
2350body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row { gap: 12px; }
2351body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-icon { flex: 0 0 32px; width: 32px; height: 32px; }
2352body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-icon svg { width: 14px; height: 14px; }
2353body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row-text { padding-left: 10px; }
2354body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row-text strong { font-size: 12px; }
2355body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row-text span { font-size: 10px; }
2356body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-map { max-height: 200px; }
2357body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-engagements-title { font-size: 13px; margin: 0 0 8px; padding-bottom: 4px; }
2358body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-cards { gap: 8px; }
2359body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card { padding: 10px 8px; clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px)); }
2360body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card-icon { width: 28px; height: 28px; margin: 0 auto 6px; }
2361body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card h4 { font-size: 9px; margin: 0 0 4px; padding-bottom: 3px; }
2362body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card p { font-size: 9px; line-height: 1.3; }
2363
2364/* [VSS-L2-TOP] Top row: text left, map right */
2365body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-top {
2366  display: flex;
2367  gap: 40px;
2368  align-items: flex-start;
2369}
2370body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-left { flex: 0 0 46%; }
2371body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-right { flex: 1; min-width: 0; }
2372
2373/* [VSS-L2-TITLE] Eyebrow + red headline */
2374body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-eyebrow {
2375  font-size: 22px;
2376  font-weight: 800;
2377  color: #111;
2378  margin: 0 0 6px;
2379}
2380body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-title {
2381  font-size: 26px;
2382  font-weight: 800;
2383  line-height: 1.25;
2384  color: #e30613;
2385  margin: 0 0 30px;
2386}
2387
2388/* [VSS-L2-ROWS] Four icon rows */
2389body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-rows { display: flex; flex-direction: column; gap: 20px; }
2390body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row { display: flex; align-items: center; gap: 18px; }
2391body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-icon {
2392  flex: 0 0 48px;
2393  width: 48px;
2394  height: 48px;
2395  border-radius: 50%;
2396  border: 2px solid #e30613;
2397  color: #e30613;
2398  display: flex;
2399  align-items: center;
2400  justify-content: center;
2401}
2402body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-icon svg { width: 22px; height: 22px; }
2403body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row-text { display: flex; flex-direction: column; padding-left: 14px; border-left: 2px solid #e5e5e5; }
2404body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row-text strong { color: #e30613; font-size: 16px; font-weight: 800; letter-spacing: 0.3px; }
2405body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-row-text span { color: #111; font-size: 13px; font-weight: 600; }
2406
2407/* [VSS-L2-MAP] Inline SVG world map with arcs */
2408body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-map { width: 100%; height: auto; display: block; }
2409body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-arcs .arc.red { stroke: #e30613; }
2410body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-arcs .arc.orange { stroke: #f7941d; }
2411
2412/* [VSS-L2-BOTTOM] Engagements section */
2413body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-bottom { margin-top: 40px; }
2414body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-engagements-title {
2415  font-size: 22px;
2416  font-weight: 800;
2417  color: #f7941d;
2418  margin: 0 0 20px;
2419  padding-bottom: 8px;
2420  border-bottom: 2px solid #f7941d;
2421  display: inline-block;
2422}
2423
2424/* [VSS-L2-CARDS] Five engagement cards - notched corners via clip-path */
2425body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-cards {
2426  display: grid;
2427  grid-template-columns: repeat(5, 1fr);
2428  gap: 18px;
2429}
2430body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card {
2431  border: 1.5px solid #e5e5e5;
2432  padding: 24px 16px;
2433  text-align: center;
2434  clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
2435}
2436body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card-icon {
2437  width: 46px;
2438  height: 46px;
2439  margin: 0 auto 16px;
2440  color: #e30613;
2441}
2442body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card-icon svg { width: 100%; height: 100%; }
2443body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card:nth-child(2) .vss-l2-card-icon,
2444body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card:nth-child(5) .vss-l2-card-icon { color: #f7941d; }
2445body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card h4 {
2446  font-size: 13px;
2447  font-weight: 800;
2448  color: #111;
2449  margin: 0 0 10px;
2450  padding-bottom: 6px;
2451  border-bottom: 2px solid #e5e5e5;
2452  display: inline-block;
2453}
2454body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-card p {
2455  font-size: 12px;
2456  color: #444;
2457  margin: 0;
2458  line-height: 1.4;
2459}
2460
2461
2462/* ============================================================
2463   18b. VSS RESPONSIVE  (Session 33)
2464   ------------------------------------------------------------
2465   Everything in section 18 above this point was written against ONE
2466   screen: the 1280x632 dev window. This subsection makes the four VSS
2467   pages work from a 360px phone up to a 4K monitor. Three jobs:
2468
2469     [VSS-FLUID]      >=1025px - the infographic scales WITH the viewport
2470                      instead of sitting at a fixed 9px inside a giant
2471                      panel (the "too small on big screens" report).
2472     [VSS-BIGSCREEN]  >=1600px - L1's typography and padding scale too, so
2473                      the split slide doesn't go sparse on a large monitor.
2474     [VSS-FLOW]       <=1024px - the entire scroll-hijack / split-track
2475                      model is switched OFF and every panel becomes an
2476                      ordinary stacked full-width section.
2477
2478   ORDER MATTERS: this subsection must stay LAST in section 18. Several
2479   rules below deliberately re-declare properties set earlier at equal
2480   specificity and win only by source order.
2481   ============================================================ */
2482
2483/* [VSS-FLUID] One fluid unit driving the whole infographic.
2484
2485   THE BUG THIS FIXES: every size in infographic_unified.html is an inline
2486   style, and inline styles are invisible to @media queries - so the design
2487   was frozen at the window it was tuned on. On a 1440px-tall monitor the
2488   panel grew to fill the screen while the type stayed at 9px, leaving the
2489   blank space the client reported.
2490
2491   THE MECHANISM: those inline styles are now written as
2492   `calc(var(--u,1px) * N)`, where N is the original reference pixel value.
2493   A custom property CAN be changed by a media query, and an inline calc()
2494   re-evaluates when it does - so we get full responsive control of an
2495   inline-styled element without fighting specificity at all. To rescale
2496   the whole infographic for a breakpoint, change --u here; never edit the
2497   numbers in the widget.
2498
2499   THE MATH - do not change one of these without the other:
2500     panel height            = 100vh
2501     panel reserves          = var(--vss-header-clear)   (fixed header)
2502     so infographic height H = 100vh - var(--vss-header-clear)
2503     The reference design held 532px of content between 10px top and 10px
2504     bottom padding = a 552-unit budget. So u = H / 552, and the content
2505     fills H EXACTLY at every viewport height: no blank space, no overflow,
2506     at any screen size. That exact-fit property is why there is no clamp()
2507     or cap on --u - capping it would reintroduce blank space, which is the
2508     very thing being fixed.
2509
2510   `height` is forced here rather than left to the widget's inline
2511   `height:100%` because 100% would depend on every Elementor wrapper in
2512   between also being 100% tall, which is not guaranteed. Setting the
2513   computed height directly is immune to that chain; the inline 100%
2514   stays as the no-CSS fallback. */
2515@media (min-width: 1025px) {
2516  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-infographic {
2517    --u: calc((100vh - var(--vss-header-clear, 120px)) / 552);
2518    height: calc(100vh - var(--vss-header-clear, 120px)) !important;
2519    width: 100% !important;
2520  }
2521}
2522
2523/* [VSS-BIGSCREEN] L1's copy is Elementor-managed and sized in fixed px, so on
2524   anything wider than the dev machine the dark panel reads as mostly empty
2525   space around small text ("no writing gets bigger" report). This scales the
2526   heading, body copy AND padding continuously with viewport width.
2527
2528   Session 34: threshold lowered 1600 -> 1281. The 1600 gate was the actual
2529   bug behind "no writing gets bigger" - a typical "Large PC" is 1440-1536
2530   wide, i.e. BELOW 1600, so the rule never fired on the exact screens the
2531   client was looking at. 1281 keeps the 1280 dev-machine baseline untouched
2532   (it is `min-width`, so =1280 is excluded) while catching every larger
2533   screen. The clamp() vw terms do the smooth growth; the floors sit at/above
2534   the previous values so nothing shrinks. */
2535@media (min-width: 1281px) {
2536  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea {
2537    padding: clamp(120px, 9vh, 200px) clamp(60px, 4vw, 120px) clamp(60px, 6vh, 110px) !important;
2538  }
2539  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea h1,
2540  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea h2,
2541  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea .elementor-heading-title {
2542    font-size: clamp(36px, 3vw, 66px) !important;
2543    line-height: 1.15 !important;
2544  }
2545  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea p,
2546  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea li {
2547    font-size: clamp(17px, 1.3vw, 27px) !important;
2548    line-height: 1.6 !important;
2549  }
2550}
2551
2552/* [VSS-FLOW] TABLET + MOBILE - the VSS mechanism is switched OFF entirely.
2553
2554   WHY OFF, not "made smaller". Three things break below ~1025px and none of
2555   them is a sizing problem:
2556     1. Two 50%-wide tracks give ~195px columns on a 390px phone. The L1 copy
2557        is unreadable at that width no matter how the type is tuned.
2558     2. Scroll hijacking fights touch momentum scrolling and the mobile
2559        address bar's show/hide (which changes 100vh mid-gesture). It is also
2560        an accessibility problem - it removes the user's control of the page.
2561     3. 100vh is unreliable on mobile browsers for the same address-bar
2562        reason, and the entire motion model is built on 100vh steps.
2563   So below 1025px every panel becomes an ordinary full-width block in normal
2564   document flow, scrolled natively, in this order:
2565        L1 (dark copy)  ->  R1 (image/video)  ->  cover 1  ->  cover 2
2566
2567   [JS-VSS] is gated to >=1025px (Session 33) so nothing drives transforms
2568   here. That gate is what makes `transform:none` safe below - see the JS
2569   Principles note in CLAUDE.md warning never to set it while the JS is
2570   still driving the tracks. The !important also means a stale inline
2571   transform left behind by a desktop->mobile resize cannot survive. */
2572@media (max-width: 1024px) {
2573
2574  /* 1. Runway collapses - there is no scroll distance to consume any more */
2575  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss {
2576    height: auto !important;
2577    min-height: 0 !important;
2578  }
2579
2580  /* 2. Un-pin the sticky viewport */
2581  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-viewport {
2582    position: static !important;
2583    height: auto !important;
2584    min-height: 0 !important;
2585    overflow: visible !important;
2586    display: block !important;
2587  }
2588
2589  /* 3. Tracks: full width, natural height, no transform.
2590        display:block also retires [VSS-R-ORDER]'s flex `order` here - that
2591        is intentional and safe, because the only right-track child left
2592        visible below is the one holding real content (see 5). */
2593  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-left,
2594  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right {
2595    display: block !important;
2596    width: 100% !important;
2597    height: auto !important;
2598    min-height: 0 !important;
2599    transform: none !important;
2600    will-change: auto !important;
2601  }
2602
2603  /* 4. In-track panels stop being exactly one screen tall */
2604  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-left > .ati-vss-panel,
2605  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right > .ati-vss-panel,
2606  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right > .ati-vss-panel-is-blank {
2607    width: 100% !important;
2608    height: auto !important;
2609    min-height: 0 !important;
2610    flex: none !important;
2611  }
2612
2613  /* 5. Hide the never-seen filler panels. On desktop these are parked
2614        off-screen by the transform; with the transform gone they would
2615        render as large empty coloured blocks in the middle of the page.
2616        The L3 selector is scoped to .ati-vss-track-is-left ON PURPOSE - on
2617        Sourcing2 that same element ID was dragged into cover 2, and Elementor
2618        does not reassign IDs on drag, so an unscoped rule would hide real
2619        content there. Same trap that bit [VSS-L3-BG] in Session 32. */
2620  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-left .elementor-element-24f5448,
2621  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-3355159,
2622  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-335fbf4 {
2623    display: none !important;
2624  }
2625
2626  /* 6. Cover panels rejoin normal flow instead of being absolutely
2627        positioned and parked below the fold by JS. */
2628  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified {
2629    --vss-header-clear: 0px;   /* nothing overlaps once we leave sticky mode */
2630    position: static !important;
2631    transform: none !important;
2632    opacity: 1 !important;
2633    pointer-events: auto !important;
2634    width: 100% !important;
2635    height: auto !important;
2636    min-height: 0 !important;
2637    z-index: auto !important;
2638    overflow: visible !important;
2639    will-change: auto !important;
2640    padding-top: 0 !important;
2641  }
2642
2643  /* 7. The section no longer sits behind the fixed header, so undo the
2644        negative pull - otherwise L1's first lines start underneath it. */
2645  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) #qodef-page-content {
2646    margin-top: 0 !important;
2647  }
2648
2649  /* 8. Belt-and-braces: [JS-VSS] hides the page scrollbar with an inline
2650        style while inside the VSS zone. The JS gate means it should never
2651        run here, but an !important rule guarantees the page can always be
2652        scrolled even if a stale inline value survives a resize. */
2653  html:has(body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478)) {
2654    overflow-y: auto !important;
2655  }
2656
2657  /* 9. L1 - desktop's 120px/60px padding is far too generous on a phone */
2658  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea {
2659    padding: 56px 24px 48px !important;
2660    min-height: 0 !important;
2661  }
2662
2663  /* 10. R1 (image on most pages, hosted video on Sourcing2). Session 34: use
2664         NATURAL height, not an aspect-ratio box.
2665         WHY THE CHANGE: the first version gave the panel aspect-ratio:16/10
2666         and told the media height:100%. But height:100% only resolves if
2667         EVERY wrapper between the panel and the <img>/<video> is also
2668         height:100% - the Elementor widget wrappers are not, so the media
2669         collapsed to its natural height, shorter than the 16/10 box, leaving
2670         a white strip below the image (the reported bug). Letting the media
2671         set its own height makes the container wrap it exactly - a blank
2672         below is then structurally impossible, and cropping a photo on mobile
2673         was never needed anyway. `display:block` drops the panel's desktop
2674         flex-centering; the aspect-ratio/height/object-fit resets undo the
2675         global [VSS-R1IMAGE]/[VSS-R1VIDEO] sizing for this breakpoint. */
2676  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab {
2677    display: block !important;
2678    height: auto !important;
2679    aspect-ratio: auto !important;
2680  }
2681  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab .elementor-widget,
2682  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab .elementor-widget-container,
2683  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab .elementor-wrapper,
2684  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab .e-hosted-video {
2685    height: auto !important;
2686    aspect-ratio: auto !important;
2687    display: block !important;
2688  }
2689  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab img,
2690  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab video {
2691    width: 100% !important;
2692    height: auto !important;
2693    aspect-ratio: auto !important;
2694    object-fit: initial !important;
2695    display: block !important;
2696  }
2697
2698  /* 11. A plain Image widget in a cover panel (the logo grid, the Export &
2699         Transport infographic) is height:100% + object-fit:contain on
2700         desktop. In auto-height flow that collapses, so let it size to its
2701         own aspect ratio instead. Side effect worth noting: this also makes
2702         the desktop letterboxing question moot on mobile - at natural
2703         aspect there are no side margins to fill. */
2704  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .elementor-widget-image,
2705  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .elementor-widget-image .elementor-widget-container {
2706    height: auto !important;
2707    display: block !important;
2708  }
2709  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-panel-is-unified .elementor-widget-image img {
2710    width: 100% !important;
2711    height: auto !important;
2712    object-fit: initial !important;   /* natural height = container wraps it, no gap */
2713    display: block !important;
2714  }
2715
2716  /* 12. Cover 2 (Sourcing2) - desktop uses row-reverse to get image-left /
2717         text-right out of a [text, image] DOM order. column-REVERSE keeps
2718         that same reading order stacked: image on top, text beneath.
2719         --u drops to a fixed readable base here (the desktop value is
2720         viewport-derived and would be tiny at phone width); ~1.15 lands the
2721         28px title near 32px and 13-14px body near 15-16px. Image uses
2722         natural height for the same no-blank reason as rule 10. */
2723  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a {
2724    flex-direction: column-reverse !important;
2725    height: auto !important;
2726    gap: 0 !important;
2727    --u: 1.15px;
2728  }
2729  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-element-24f5448,
2730  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-element-24f5448 .elementor-widget-container {
2731    width: 100% !important;
2732    height: auto !important;
2733    aspect-ratio: auto !important;
2734    display: block !important;
2735  }
2736  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-8e4528a .elementor-element-24f5448 img {
2737    width: 100% !important;
2738    height: auto !important;
2739    object-fit: initial !important;
2740    display: block !important;
2741  }
2742
2743  /* 13. The infographic stops being a fill-the-screen layout and becomes a
2744         normal stacked document. --u switches from viewport-derived to a
2745         fixed readable base: 9px reference text lands at ~14px, which is
2746         the minimum comfortable body size on a phone. */
2747  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-infographic {
2748    --u: 1.55px;
2749    display: block !important;
2750    height: auto !important;
2751    width: 100% !important;
2752    padding: 32px 20px 40px !important;
2753    overflow: visible !important;
2754  }
2755  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-top {
2756    display: block !important;
2757  }
2758  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-left {
2759    flex: none !important;
2760    width: 100% !important;
2761  }
2762  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-right {
2763    margin-top: 26px !important;
2764  }
2765  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-map {
2766    max-height: none !important;
2767    width: 100% !important;
2768  }
2769  /* Icons are the one thing that should NOT scale with --u here - at 1.55
2770     a 32-unit circle lands near 50px, which crowds the row on a phone. */
2771  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-icon {
2772    flex: 0 0 40px !important;
2773    width: 40px !important;
2774    height: 40px !important;
2775  }
2776  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-icon svg {
2777    width: 18px !important;
2778    height: 18px !important;
2779  }
2780  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-cards {
2781    grid-template-columns: repeat(2, 1fr) !important;
2782    gap: 12px !important;
2783  }
2784}
2785
2786/* [VSS-FLOW-PHONE] Below 600px the 2-up engagement cards get too narrow for
2787   their headings (several are two words on two lines already). */
2788@media (max-width: 600px) {
2789  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-cards {
2790    grid-template-columns: 1fr !important;
2791  }
2792  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .vss-l2-infographic {
2793    --u: 1.5px;
2794    padding: 28px 16px 32px !important;
2795  }
2796  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .elementor-element-05b1eea {
2797    padding: 48px 18px 40px !important;
2798  }
2799  body:is(.page-id-10158, .page-id-10476, .page-id-10477, .page-id-10478) .ati-vss-track-is-right .elementor-element-ccb21ab {
2800    aspect-ratio: 4 / 3;
2801  }
2802}
2803
2804
2805/* ============================================================
2806   19. HOMEPAGE VIDEO VARIANT  -  clone (page-id-10222)
2807   ------------------------------------------------------------
2808   Client preview: homepage with a video instead of the interactive
2809   columns. The clone is NOT .home, so every .home rule in section 7
2810   (heights, logo overlay, nav hiding) simply never fires here -
2811   that's also why Secteurs d'activite shows in its header naturally.
2812   Video is injected by Custom JS; CSS owns the sizing.
2813   ============================================================ */
2814
2815/* [VIDHOME-HIDECOLUMNS] Remove the interactive columns widget */
2816body.page-id-10222 .qodef-interactive-banners {
2817  display: none !important;
2818}
2819
2820/* [VIDHOME-SECTIONBOX] Section = viewport - header(86) - marquee(35),
2821   pushed below the header. Same formula as [BANNER-HEIGHT]. */
2822body.page-id-10222 .elementor-element-e542973 {
2823  min-height: calc(100vh - 86px - 35px) !important;
2824  height: calc(100vh - 86px - 35px) !important;
2825  margin-top: 86px !important;
2826}
2827
2828/* [VIDHOME-FILL] Column/widget/container must stretch to the section's full
2829   height - otherwise the video centres with empty bands above and below. */
2830body.page-id-10222 .elementor-element-0a4b23f,
2831body.page-id-10222 .elementor-element-485c428,
2832body.page-id-10222 .elementor-element-485c428 > .elementor-widget-container,
2833body.page-id-10222 .ati-home-video-container {
2834  height: 100% !important;
2835  align-self: stretch !important;
2836}
2837
2838/* [VIDHOME-CONTAINER] Video container - clips the cover-cropped video */
2839body.page-id-10222 .ati-home-video-container {
2840  width: 100%;
2841  overflow: hidden;
2842  position: relative;
2843}
2844
2845/* [VIDHOME-VIDEO] The video itself - fills and crops to the container.
2846   To change the video, edit the src in the Custom JS block, not here. */
2847body.page-id-10222 .ati-home-video-container video {
2848  width: 100%;
2849  height: 100%;
2850  object-fit: cover;
2851  display: block;
2852}
2853
2854/* [COUNTER-TONNAGE] Session - the "Nos Services" counter row (Clients/Pays/
2855   Tonnes de marchandise/Fournisseurs) writes each label vertically. Client
2856   wants "TONNES DE MARCHANDISE" (2 words) where the other 3 counters have 1,
2857   and can't use a manual line break in the field, so it wraps and crowds the
2858   number ("30000") next to it.
2859
2860   TWO WRONG GUESSES BEFORE THIS, both confirmed dead live via console
2861   (getComputedStyle + getBoundingClientRect on the real page) - this is a
2862   Stal theme widget (stal_core_counter), not a native Elementor counter, so
2863   .elementor-counter-title/.elementor-counter-number-wrapper - the classes
2864   that seemed obvious - don't exist on it at all. Never landed, on either
2865   attempt. Console dump of the widget's real descendants found the actual
2866   structure:
2867     p.qodef-m-title          <- the vertical label
2868     div.qodef-m-digit-wrapper <- the number
2869   The label is `position:absolute; left:-20px; writing-mode:vertical-rl;
2870   transform:matrix(-1,0,0,-1,0,0)` (a 180deg flip), positioned relative to
2871   its parent .qodef-m-digit-wrapper (position:relative). Measured rects:
2872   title box right edge 983.9px, digit-wrapper left edge 961.6px - the label
2873   was overlapping 22.3px INTO the number, which is what "flush against the
2874   number" actually was.
2875   FIX: `left` is a normal layout offset applied before the rotation
2876   transform (the flip is centered on the box's own center via
2877   transform-origin, so it doesn't change where `left` puts that center) -
2878   moving it further negative reliably shifts the whole label left, still
2879   rotated the same way. -50px (from -20px) cleared the FR overlap.
2880
2881   FOLLOW-UP: the EN translation ("TONNES OF GOODS", 3 words vs FR's 2)
2882   wraps to more vertical-text lines, making the label box wider - at the
2883   same -50px it still measured a live 13.375px overlap into the number
2884   (getBoundingClientRect: titleRight 975.02px vs digitLeft 961.65px).
2885   -50px was tuned for FR's box width, not EN's. Since left offset is
2886   language-independent (both languages render through the same
2887   #counter-tonnage element/CSS, TranslatePress swaps only the text node),
2888   one value has to clear the widest-rendered label across every language
2889   this site's translated into - pushed to -71px (13.375 + 8px breathing
2890   room, same margin used for the original FR fix). Re-check other active
2891   languages here too if any get added later.
2892   Verify what's actually left of this counter (the PAYS widget) isn't
2893   crowded - not checked at the new offset. */
2894#counter-tonnage .qodef-m-title {
2895  left: -71px !important;
2896}
2897</style><link rel="preconnect" href="https://fonts.googleapis.com">
2898<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
2899<meta name="generator" content="Powered by Slider Revolution 6.7.40 - responsive, Mobile-Friendly Slider Plugin for WordPress with comfortable drag and drop interface." />
2900<style class='wp-fonts-local' type='text/css'>@font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:fallback;src:url(https://goldenrod-pigeon-420491.hostingersite.com/wp-content/plugins/woocommerce/assets/fonts/Inter-VariableFont_slnt,wght.woff2) format('woff2');font-stretch:normal}@font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url(https://goldenrod-pigeon-420491.hostingersite.com/wp-content/plugins/woocommerce/assets/fonts/cardo_normal_400.woff2) format('woff2')}</style>
2901<link rel="icon" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1-32x32.webp" sizes="32x32" />
2902<link rel="icon" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1-192x192.webp" sizes="192x192" />
2903<link rel="apple-touch-icon" href="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1-180x180.webp" />
2904<meta name="msapplication-TileImage" content="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1-270x270.webp" />
2905<script data-optimized="1" src="data:text/javascript;base64,d2luZG93Ll90cHQ/Pz17fTt3aW5kb3cuU1I3Pz89e307X3RwdC5SPz89e307X3RwdC5SLmZvbnRzPz89e307X3RwdC5SLmZvbnRzLmN1c3RvbUZvbnRzPz89e307U1I3LmRldk1vZGU9ITE7U1I3LkY/Pz17fTtTUjcuRz8/PXt9O1NSNy5MSUI/Pz17fTtTUjcuRT8/PXt9O1NSNy5FLmdBZGRvbnM/Pz17fTtTUjcuRS5waHA/Pz17fTtTUjcuRS5ub25jZT0nNzRhNDdmMmMwZSc7U1I3LkUuYWpheHVybD0naHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1hZG1pbi9hZG1pbi1hamF4LnBocCc7U1I3LkUucmVzdHVybD0naHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1qc29uLyc7U1I3LkUuc2x1Z19wYXRoPSdyZXZzbGlkZXIvcmV2c2xpZGVyLnBocCc7U1I3LkUuc2x1Zz0ncmV2c2xpZGVyJztTUjcuRS5wbHVnaW5fdXJsPSdodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9yZXZzbGlkZXIvJztTUjcuRS53cF9wbHVnaW5fdXJsPSdodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy8nO1NSNy5FLnJldmlzaW9uPSc2LjcuNDAnO1NSNy5FLmZvbnRCYXNlVXJsPScnO1NSNy5HLmJyZWFrUG9pbnRzPVsxMjQwLDEwMjQsNzc4LDQ4MF07U1I3LkcuZlNVVlc9ITE7U1I3LkUubW9kdWxlcz1bJ21vZHVsZScsJ3BhZ2UnLCdzbGlkZScsJ2xheWVyJywnZHJhdycsJ2FuaW1hdGUnLCdzcnRvb2xzJywnY2FudmFzJywnZGVmYXVsdHMnLCdjYXJvdXNlbCcsJ25hdmlnYXRpb24nLCdtZWRpYScsJ21vZGlmaWVycycsJ21pZ3JhdGlvbiddO1NSNy5FLmxpYnM9WydXRUJHTCddO1NSNy5FLmNzcz1bJ2Nzc2xwJywnY3NzYnRucycsJ2Nzc2ZpbHRlcnMnLCdjc3NuYXYnLCdjc3NtZWRpYSddO1NSNy5FLnJlc291cmNlcz17fTtTUjcuRS55dG5jPSExO1NSNy5KU09OPz89e307Ci8qISBTbGlkZXIgUmV2b2x1dGlvbiA3LjAgLSBQYWdlIFByb2Nlc3NvciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7d2luZG93LlNSNz8/PXt9LHdpbmRvdy5fdHB0Pz89e30sU1I3LnZlcnNpb249IlNsaWRlciBSZXZvbHV0aW9uIDYuNy4xNiIsX3RwdC5nZXRNb2JpbGVab29tPSgpPT5fdHB0LmlzX21vYmlsZT9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgvd2luZG93LmlubmVyV2lkdGg6MSxfdHB0LmdldFdpbkRpbT1mdW5jdGlvbih0KXtfdHB0LnNjcmVlbkhlaWdodFdpdGhVcmxCYXI/Pz13aW5kb3cuaW5uZXJIZWlnaHQ7bGV0IGU9U1I3LkY/Lm1vZGFsPy52aXNpYmxlJiZTUjcuTVtTUjcuRi5tb2R1bGUuZ2V0SWRCeUFsaWFzKFNSNy5GLm1vZGFsLnJlcXVlc3RlZCldO190cHQuc2Nyb2xsQmFyPXdpbmRvdy5pbm5lcldpZHRoIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHxlJiZ3aW5kb3cuaW5uZXJXaWR0aCE9PWUuYy5tb2R1bGUuY2xpZW50V2lkdGgsX3RwdC53aW5XPV90cHQuZ2V0TW9iaWxlWm9vbSgpKndpbmRvdy5pbm5lcldpZHRoLShfdHB0LnNjcm9sbEJhcnx8InByZXBhcmUiPT10P190cHQuc2Nyb2xsQmFyVz8/X3RwdC5tZXN1cmVTY3JvbGxCYXIoKTowKSxfdHB0Lndpbkg9X3RwdC5nZXRNb2JpbGVab29tKCkqd2luZG93LmlubmVySGVpZ2h0LF90cHQud2luV0FsbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh9LF90cHQuZ2V0UmVzcG9uc2l2ZUxldmVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFNSNy5HLmZTVVZXP190cHQuY2xvc2VzdEdFKHQsd2luZG93LmlubmVyV2lkdGgpOl90cHQuY2xvc2VzdEdFKHQsX3RwdC53aW5XQWxsKX0sX3RwdC5tZXN1cmVTY3JvbGxCYXI9ZnVuY3Rpb24oKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9IlJTc2Nyb2xsYmFyLW1lYXN1cmUiLHQuc3R5bGUud2lkdGg9IjEwMHB4Iix0LnN0eWxlLmhlaWdodD0iMTAwcHgiLHQuc3R5bGUub3ZlcmZsb3c9InNjcm9sbCIsdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUudG9wPSItOTk5OXB4Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLF90cHQuc2Nyb2xsQmFyVz10Lm9mZnNldFdpZHRoLXQuY2xpZW50V2lkdGgsZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxfdHB0LnNjcm9sbEJhcld9LF90cHQubG9hZENTUz1hc3luYyBmdW5jdGlvbih0LGUscyl7cmV0dXJuIHM/X3RwdC5SLmZvbnRzLnJlcXVpcmVkW2VdLnN0YXR1cz0xOihfdHB0LlJbZV0/Pz17fSxfdHB0LlJbZV0uc3RhdHVzPTEpLG5ldyBQcm9taXNlKCgoaSxuKT0+e2lmKF90cHQuaXNTdHlsZXNoZWV0TG9hZGVkKHQpKXM/X3RwdC5SLmZvbnRzLnJlcXVpcmVkW2VdLnN0YXR1cz0yOl90cHQuUltlXS5zdGF0dXM9MixpKCk7ZWxzZXtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtvLnJlbD0ic3R5bGVzaGVldCI7bGV0IGw9InRleHQiLHI9ImNzcyI7by50eXBlPWwrIi8iK3Isby5ocmVmPXQsby5vbmxvYWQ9KCk9PntzP190cHQuUi5mb250cy5yZXF1aXJlZFtlXS5zdGF0dXM9MjpfdHB0LlJbZV0uc3RhdHVzPTIsaSgpfSxvLm9uZXJyb3I9KCk9PntzP190cHQuUi5mb250cy5yZXF1aXJlZFtlXS5zdGF0dXM9MzpfdHB0LlJbZV0uc3RhdHVzPTMsbihuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIENTUzogJHt0fWApKX0sZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChvKX19KSl9LF90cHQuYWRkQ29udGFpbmVyPWZ1bmN0aW9uKHQpe2NvbnN0e3RhZzplPSJkaXYiLGlkOnMsY2xhc3M6aSxkYXRhczpuLHRleHRDb250ZW50Om8saUhUTUw6bH09dCxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7aWYocyYmIiIhPT1zJiYoci5pZD1zKSxpJiYiIiE9PWkmJihyLmNsYXNzTmFtZT1pKSxuKWZvcihjb25zdFt0LGVdb2YgT2JqZWN0LmVud
2905HJpZXMobikpInN0eWxlIj09dD9yLnN0eWxlLmNzc1RleHQ9ZTpyLnNldEF0dHJpYnV0ZShgZGF0YS0ke3R9YCxlKTtyZXR1cm4gbyYmKHIudGV4dENvbnRlbnQ9byksbCYmKHIuaW5uZXJIVE1MPWwpLHJ9LF90cHQuY29sbGVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJue2ZyYWdtZW50Om5ldyBEb2N1bWVudEZyYWdtZW50LGFkZCh0KXt2YXIgZT1fdHB0LmFkZENvbnRhaW5lcih0KTtyZXR1cm4gdGhpcy5mcmFnbWVudC5hcHBlbmRDaGlsZChlKSxlfSxhcHBlbmQodCl7dC5hcHBlbmRDaGlsZCh0aGlzLmZyYWdtZW50KX19fSxfdHB0LmlzU3R5bGVzaGVldExvYWRlZD1mdW5jdGlvbih0KXtsZXQgZT10LnNwbGl0KCI/IilbMF07cmV0dXJuIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9InN0eWxlc2hlZXQiXSwgbGlua1tyZWw9InByZWxvYWQiXScpKS5zb21lKCh0PT50LmhyZWYuc3BsaXQoIj8iKVswXT09PWUpKX0sX3RwdC5wcmVsb2FkZXI9e3JlcXVlc3RzOm5ldyBNYXAscHJlbG9hZGVyVGVtcGxhdGVzOm5ldyBNYXAsc2hvdzpmdW5jdGlvbih0LGUpe2lmKCFlfHwhdClyZXR1cm47Y29uc3R7dHlwZTpzLGNvbG9yOml9PWU7aWYoczwwfHwib2ZmIj09cylyZXR1cm47Y29uc3Qgbj1gcHJlbG9hZGVyXyR7c31gO2xldCBvPXRoaXMucHJlbG9hZGVyVGVtcGxhdGVzLmdldChuKTtvfHwobz10aGlzLmJ1aWxkKHMsaSksdGhpcy5wcmVsb2FkZXJUZW1wbGF0ZXMuc2V0KG4sbykpLHRoaXMucmVxdWVzdHMuaGFzKHQpfHx0aGlzLnJlcXVlc3RzLnNldCh0LHtjb3VudDowfSk7Y29uc3QgbD10aGlzLnJlcXVlc3RzLmdldCh0KTtjbGVhclRpbWVvdXQobC50aW1lciksbC5jb3VudCsrLDE9PT1sLmNvdW50JiYobC50aW1lcj1zZXRUaW1lb3V0KCgoKT0+e2wucHJlbG9hZGVyQ2xvbmU9by5jbG9uZU5vZGUoITApLGwuYW5pbSYmbC5hbmltLmtpbGwoKSx2b2lkIDAhPT1fdHB0LmdzYXA/bC5hbmltPV90cHQuZ3NhcC5mcm9tVG8obC5wcmVsb2FkZXJDbG9uZSwxLHtvcGFjaXR5OjB9LHtvcGFjaXR5OjF9KTpsLnByZWxvYWRlckNsb25lLmNsYXNzTGlzdC5hZGQoInNyNy1mYWRlLWluIiksdC5hcHBlbmRDaGlsZChsLnByZWxvYWRlckNsb25lKX0pLDE1MCkpfSxoaWRlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLnJlcXVlc3RzLmhhcyh0KSlyZXR1cm47Y29uc3QgZT10aGlzLnJlcXVlc3RzLmdldCh0KTtlLmNvdW50LS0sZS5jb3VudDwwJiYoZS5jb3VudD0wKSxlLmFuaW0mJmUuYW5pbS5raWxsKCksMD09PWUuY291bnQmJihjbGVhclRpbWVvdXQoZS50aW1lciksZS5wcmVsb2FkZXJDbG9uZSYmKGUucHJlbG9hZGVyQ2xvbmUuY2xhc3NMaXN0LnJlbW92ZSgic3I3LWZhZGUtaW4iKSxlLmFuaW09X3RwdC5nc2FwLnRvKGUucHJlbG9hZGVyQ2xvbmUsLjMse29wYWNpdHk6MCxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7ZS5wcmVsb2FkZXJDbG9uZS5yZW1vdmUoKX19KSkpfSxzdGF0ZTpmdW5jdGlvbih0KXtpZighdGhpcy5yZXF1ZXN0cy5oYXModCkpcmV0dXJuITE7cmV0dXJuIHRoaXMucmVxdWVzdHMuZ2V0KHQpLmNvdW50PjB9LGJ1aWxkOih0LGU9IiNmZmZmZmYiLHM9IiIpPT57aWYodDwwfHwib2ZmIj09PXQpcmV0dXJuIG51bGw7Y29uc3QgaT1wYXJzZUludCh0KTtpZih0PSJwcmx0IitpLGlzTmFOKGkpKXJldHVybiBudWxsO2lmKF90cHQubG9hZENTUyhTUjcuRS5wbHVnaW5fdXJsKyJwdWJsaWMvY3NzL3ByZWxvYWRlcnMvdCIraSsiLmNzcyIsInByZWxvYWRlcl8iK3QpLGlzTmFOKGkpfHxpPDYpe2NvbnN0IG49YGJhY2tncm91bmQtY29sb3I6JHtlfWAsbz0xPT09aXx8Mj09aT9uOiIiLGw9Mz09PWl8fDQ9PWk/bjoiIixyPV90cHQuY29sbGVjdG9yKCk7WyJkb3QxIiwiZG90MiIsImJvdW5jZTEiLCJib3VuY2UyIiwiYm91bmNlMyJdLmZvckVhY2goKHQ9PnIuYWRkKHt0YWc6ImRpdiIsY2xhc3M6dCxkYXRhczp7c3R5bGU6bH19KSkpO2NvbnN0IGQ9X3RwdC5hZGRDb250YWluZXIoe3RhZzoic3I3LXBybCIsY2xhc3M6YCR7dH0gJHtzfWAsZGF0YXM6e3N0eWxlOm99fSk7cmV0dXJuIHIuYXBwZW5kKGQpLGR9e2xldCBuPXt9O2lmKDc9PT1pKXtsZXQgdDtlLnN0YXJ0c1dpdGgoIiMiKT8odD1lLnJlcGxhY2UoIiMiLCIiKSx0PWByZ2JhKCR7cGFyc2VJbnQodC5zdWJzdHJpbmcoMCwyKSwxNil9LCAke3BhcnNlSW50KHQuc3Vic3RyaW5nKDIsNCksMTYpfSwgJHtwYXJzZUludCh0LnN1YnN0cmluZyg0LDYpLDE2KX0sIGApOmUuc3RhcnRzV2l0aCgicmdiIikmJih0PWUuc2xpY2UoZS5pbmRleE9mKCIoIikrMSxlLmxhc3RJbmRleE9mKCIpIikpLnNwbGl0KCIsIikubWFwKCh0PT50LnRyaW0oKSkpLHQ9YHJnYmEoJHt0WzBdfSwgJHt0WzFdfSwgJHt0WzJdfSwgYCksdCYmKG4uc3R5bGU9YGJvcmRlci10b3AtY29sb3I6ICR7dH0wLjY1KTsgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHt0fTAuMTUpOyBib3JkZXItbGVmdC1jb2xvcjogJHt0fTAuNjUpOyBib3JkZXItcmlnaHQtY29sb3I6ICR7dH0wLjE1KWApfWVsc2UgMTI9PT1pJiYobi5zdHlsZT1gYmFja2dyb3VuZDoke2V9YCk7Y29uc3Qgbz1bMTAsMCw0LDIsNSw5LDAsNCw0LDJdW2ktNl0sbD1fdHB0LmNvbGxlY3RvcigpLHI9bC5hZGQoe3RhZzoiZGl2IixjbGFzczoic3I3LXBybC1pbm5lciIsZGF0YXM6bn0pO0FycmF5LmZyb20oe2xlbmd0aDpvfSkuZm9yRWFjaCgoKCk9PnIuYXBwZW5kQ2hpbGQobC5hZGQoe3RhZzoic3BhbiIsZGF0YXM6e3N0eWxlOmBiYWNrZ3JvdW5kOiR7ZX1gfX0pKSkpO2NvbnN0IGQ9X3RwdC5hZGRDb250YWluZXIoe3RhZzoic3I3LXBybCIsY2xhc3M6YCR7dH0gJHtzfWB9KTtyZXR1cm4gbC5hcHBlbmQoZCksZH19fSxTUjcucHJlTG9hZGVyPXtzaG93Oih0LGUpPT57Im9mZiIhPT0oU1I3Lk1bdF0/LnNldHRpbmdzPy5wTG9hZGVyPy50eXBlPz8ib2ZmIikmJl90cHQucHJlbG9hZGVyLnNob3coZXx8U1I3Lk1bdF0uYy5tb2R1bGUsU1I3Lk1bdF0/LnNldHRpbmdzPy5wTG9hZGVyPz97Y29sb3I6IiNmZmYiLHR5cGU6MTB9KX0saGlkZToodCxlKT0+eyJvZmYiIT09KFNSNy5NW3RdPy5zZXR0aW5ncz8ucExvYWRlcj8udHlwZT8/Im9mZiIpJiZfdHB0LnByZWxvYWRlci5oaWRlKGV8fFNSNy5NW3RdLmMubW9kdWxlKX0sc3RhdGU6KHQsZSk9Pl90cHQucHJlbG9hZGVyLnN0YXRlKGV8fFNSNy5NW3RdLmMubW9kdWxlKX0sX3RwdC5wcmVwYXJlTW9kdWxlSGVpZ2h0PWZ1bmN0aW9uKHQpe3dpbmRvdy5TUjcuTT8/PXt9LHdpbmRvdy5TUjcuTVt0LmlkXT8/PXt9LCJpZ25vcmUiPT10Lmdvb2dsZUZvbnQmJihTUjcuRS5pZ25vcmVHb29nbGVGb250PSEwKTtsZXQgZT13aW5kb3cuU1I3Lk1bdC5pZF07aWYobnVsbD09X3RwdC5zY3JvbGxCYXJXJiZfdHB0Lm1lc3VyZVNjcm9sbEJhcigpLGUuYz8/PXt9LGUuc3RhdGVzPz89e30sZS5zZXR0aW5ncz8/PXt9LGUuc2V0dGluZ3Muc2l6ZT8/PXt9LHQuZml4ZWQmJihlLnNldHRpbmdzLmZpeGVkPSEwKSxlLmMubW9kdWxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNyNy1tb2R1bGUjIit0LmlkKSxlLmMuYWRqdXN0ZXI9ZS5jLm1vZHVsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3I3LWFkanVzdGVyIilbMF0sZS5jLmNvbnRlbnQ9ZS5jLm1vZHVsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3I3LWNvbnRlbnQiKVswXSwiY2Fyb3VzZWwiPT10LnR5cGUmJihlLmMuY2Fyb3VzZWw9ZS5jLmNvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNyNy1jYXJvdXNlbCIpWzBdKSxudWxsPT1lLmMubW9kdWxlfHxudWxsPT1lLmMubW9kdWxlKXJldHVybjt0LnBsVHlwZSYmdC5wbENvbG9yJiYoZS5zZXR0aW5ncy5wTG9hZGVyPXt0eXBlOnQucGxUeXBlLGNvbG9yOnQucGxDb2xvcn0pLHZvaWQgMD09PXQucGxUeXBlfHwib2ZmIj09PXQucGxUeXBlfHxTUjcucHJlTG9hZGVyLnN0YXRlKHQuaWQpJiZTUjcucHJlTG9hZGVyLnN0YXRlKHQuaWQsZS5jLm1vZHVsZSl8fFNSNy5wcmVMb2FkZXIuc2hvdyh0LmlkLGUuYy5tb2R1bGUpLF90cHQud2luV3x8X3RwdC5nZXRXaW5EaW0oInByZXBhcmUiKSxfdHB0LmdldFdpbkRpbSgpO2xldCBzPSIiK2UuYy5tb2R1bGUuZGF0YXNldD8ubW9kYWw7Im1vZGFsIj09c3x8InRydWUiPT1zfHwidW5kZWZpbmVkIiE9PXMmJiJmYWxzZSIhPT1zfHwoZS5zZXR0aW5ncy5zaXplLmZ1bGxXaWR0aD10LnNpemUuZnVsbFdpZHRoLGUuTEVWPz89X3RwdC5nZXRSZXNwb25zaXZlTGV2ZWwod2luZG93LlNSNy5HLmJyZWFrUG9pbnRzLHQuaWQpLHQudnB0PV90cHQuZmlsbEFycmF5KHQudnB0LDUpLGUuc2V0dGluZ3MudlBvcnQ9dC52cHRbZS5MRVZdLHZvaWQgMCE9PXQuZWwmJiI3MjAiPT10LmVsWzRdJiZ0LmdoWzRdIT09dC5lbFs0XSYmIjk2MCI9PXQuZWxbM10mJnQuZ2hbM10hPT10LmVsWzNdJiYiNzY4Ij09dC5lbFsyXSYmdC5naFsyXSE9PXQuZWxbMl0mJmRlbGV0ZSB0LmVsLGUuc2V0dGluZ3Muc2l6ZS5oZWlnaHQ9bnVsbD09dC5lbHx8bnVsbD09dC5lbFtlLkxFVl18fDA9PXQuZWxbZS5MRVZdfHwiYXV0byI9PXQuZWxbZS5MRVZdP190c
2905HQuZmlsbEFycmF5KHQuZ2gsNSwtMSk6X3RwdC5maWxsQXJyYXkodC5lbCw1LC0xKSxlLnNldHRpbmdzLnNpemUud2lkdGg9X3RwdC5maWxsQXJyYXkodC5ndyw1LC0xKSxlLnNldHRpbmdzLnNpemUubWluSGVpZ2h0PV90cHQuZmlsbEFycmF5KHQubWg/P1swXSw1LC0xKSxlLmNhY2hlU2l6ZT17ZnVsbFdpZHRoOmUuc2V0dGluZ3Muc2l6ZT8uZnVsbFdpZHRoLGZ1bGxIZWlnaHQ6ZS5zZXR0aW5ncy5zaXplPy5mdWxsSGVpZ2h0fSx2b2lkIDAhPT10Lm9mZiYmKHQub2ZmPy50JiYoZS5zZXR0aW5ncy5zaXplLm0/Pz17fSkmJihlLnNldHRpbmdzLnNpemUubS50PXQub2ZmLnQpLHQub2ZmPy5iJiYoZS5zZXR0aW5ncy5zaXplLm0/Pz17fSkmJihlLnNldHRpbmdzLnNpemUubS5iPXQub2ZmLmIpLHQub2ZmPy5sJiYoZS5zZXR0aW5ncy5zaXplLnA/Pz17fSkmJihlLnNldHRpbmdzLnNpemUucC5sPXQub2ZmLmwpLHQub2ZmPy5yJiYoZS5zZXR0aW5ncy5zaXplLnA/Pz17fSkmJihlLnNldHRpbmdzLnNpemUucC5yPXQub2ZmLnIpLGUub2Zmc2V0UHJlcGFyZWQ9ITApLF90cHQudXBkYXRlUE1IZWlnaHQodC5pZCx0LCEwKSl9LF90cHQudXBkYXRlUE1IZWlnaHQ9KHQsZSxzKT0+e2xldCBpPVNSNy5NW3RdO3ZhciBuPWkuc2V0dGluZ3Muc2l6ZS5mdWxsV2lkdGg/X3RwdC53aW5XOmkuYy5tb2R1bGUucGFyZW50Tm9kZS5vZmZzZXRXaWR0aDtuPTA9PT1ufHxpc05hTihuKT9fdHB0Lndpblc6bjtsZXQgbz1pLnNldHRpbmdzLnNpemUud2lkdGhbaS5MRVZdfHxpLnNldHRpbmdzLnNpemUud2lkdGhbaS5MRVYrK118fGkuc2V0dGluZ3Muc2l6ZS53aWR0aFtpLkxFVi0tXXx8bixsPWkuc2V0dGluZ3Muc2l6ZS5oZWlnaHRbaS5MRVZdfHxpLnNldHRpbmdzLnNpemUuaGVpZ2h0W2kuTEVWKytdfHxpLnNldHRpbmdzLnNpemUuaGVpZ2h0W2kuTEVWLS1dfHwwLHI9aS5zZXR0aW5ncy5zaXplLm1pbkhlaWdodFtpLkxFVl18fGkuc2V0dGluZ3Muc2l6ZS5taW5IZWlnaHRbaS5MRVYrK118fGkuc2V0dGluZ3Muc2l6ZS5taW5IZWlnaHRbaS5MRVYtLV18fDA7aWYobD0iYXV0byI9PWw/MDpsLGw9cGFyc2VJbnQobCksImNhcm91c2VsIiE9PWUudHlwZSYmKG4tPXBhcnNlSW50KGUub253Pz8wKXx8MCksaS5NUD0haS5zZXR0aW5ncy5zaXplLmZ1bGxXaWR0aCYmbjxvfHxfdHB0Lndpblc8bz9NYXRoLm1pbigxLG4vbyk6MSxlLnNpemUuZnVsbFNjcmVlbnx8ZS5zaXplLmZ1bGxIZWlnaHQpe2xldCB0PXBhcnNlSW50KGUuZmhvKXx8MCxzPSgiIitlLmZobykuaW5kZXhPZigiJSIpPi0xO2UubmV3aD1fdHB0LndpbkgtKHM/X3RwdC53aW5IKnQvMTAwOnQpfWVsc2UgZS5uZXdoPWkuTVAqTWF0aC5tYXgobCxyKTtpZihlLm5ld2grPShwYXJzZUludChlLm9uaD8/MCl8fDApKyhwYXJzZUludChlLmNhcm91c2VsPy5wdCl8fDApKyhwYXJzZUludChlLmNhcm91c2VsPy5wYil8fDApLHZvaWQgMCE9PWUuc2xpZGVkdXJhdGlvbiYmKGUubmV3aD1NYXRoLm1heChlLm5ld2gscGFyc2VJbnQoZS5zbGlkZWR1cmF0aW9uKS8zKSksZS5zaGR3JiZfdHB0LmJ1aWxkU2hhZG93KGUuaWQsZSksaS5jLmFkanVzdGVyLnN0eWxlLmhlaWdodD1lLm5ld2grInB4IixpLmMubW9kdWxlLnN0eWxlLmhlaWdodD1lLm5ld2grInB4IixpLmMuY29udGVudC5zdHlsZS5oZWlnaHQ9ZS5uZXdoKyJweCIsaS5zdGF0ZXMuaGVpZ2h0UHJlcGFyZWQ9ITAsaS5kaW1zPz89e30saS5kaW1zLm1vZHVsZVJlY3Q9aS5jLm1vZHVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpLmMuY29udGVudC5zdHlsZS5sZWZ0PSItIitpLmRpbXMubW9kdWxlUmVjdC5sZWZ0KyJweCIsIWkuc2V0dGluZ3Muc2l6ZS5mdWxsV2lkdGgpcmV0dXJuIHMmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntuIT09aS5jLm1vZHVsZS5wYXJlbnROb2RlLm9mZnNldFdpZHRoJiZfdHB0LnVwZGF0ZVBNSGVpZ2h0KGUuaWQsZSl9KSksdm9pZCBfdHB0LmJnU3R5bGUoZS5pZCxlLHdpbmRvdy5pbm5lcldpZHRoPT1fdHB0LndpblcsITApO190cHQuYmdTdHlsZShlLmlkLGUsd2luZG93LmlubmVyV2lkdGg9PV90cHQud2luVywhMCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3MmJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntuIT09aS5jLm1vZHVsZS5wYXJlbnROb2RlLm9mZnNldFdpZHRoJiZfdHB0LnVwZGF0ZVBNSGVpZ2h0KGUuaWQsZSl9KSl9KSksaS5lYXJseVJlc2l6ZXJGdW5jdGlvbnx8KGkuZWFybHlSZXNpemVyRnVuY3Rpb249ZnVuY3Rpb24oKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7X3RwdC5nZXRXaW5EaW0oKSxfdHB0Lm1vZHVsZURlZmF1bHRzKGUuaWQsZSksX3RwdC51cGRhdGVTbGlkZUJnKHQsITApfSkpfSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixpLmVhcmx5UmVzaXplckZ1bmN0aW9uKSl9LF90cHQuYnVpbGRTaGFkb3c9ZnVuY3Rpb24odCxlKXtsZXQgcz1TUjcuTVt0XTtudWxsPT1zLmMuc2hhZG93JiYocy5jLnNoYWRvdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcjctbW9kdWxlLXNoYWRvdyIpLHMuYy5zaGFkb3cuY2xhc3NMaXN0LmFkZCgic3I3LXNoZHctIitlLnNoZHcpLHMuYy5jb250ZW50LmFwcGVuZENoaWxkKHMuYy5zaGFkb3cpKX0sX3RwdC5iZ1N0eWxlPWFzeW5jKHQsZSxzLGksbik9Pntjb25zdCBvPVNSNy5NW3RdO2lmKChlPWU/P28uc2V0dGluZ3MpLmZpeGVkJiYhby5jLm1vZHVsZS5jbGFzc0xpc3QuY29udGFpbnMoInNyNy10b3AtZml4ZWQiKSYmKG8uYy5tb2R1bGUuY2xhc3NMaXN0LmFkZCgic3I3LXRvcC1maXhlZCIpLG8uYy5tb2R1bGUuc3R5bGUucG9zaXRpb249ImZpeGVkIixvLmMubW9kdWxlLnN0eWxlLndpZHRoPSIxMDAlIixvLmMubW9kdWxlLnN0eWxlLnRvcD0iMHB4IixvLmMubW9kdWxlLnN0eWxlLmxlZnQ9IjBweCIsby5jLm1vZHVsZS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixvLmMubW9kdWxlLnN0eWxlLnpJbmRleD01ZTMsby5jLmNvbnRlbnQuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIpLG51bGw9PW8uYy5iZ2NhbnZhcyl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3I3LW1vZHVsZS1iZyIpLGw9ITE7aWYoInN0cmluZyI9PXR5cGVvZiBlPy5iZz8uY29sb3ImJmU/LmJnPy5jb2xvci5pbmNsdWRlcygieyIpKWlmKF90cHQuZ3JhZGllbnQmJl90cHQuZ3NhcCllLmJnLmNvbG9yPV90cHQuZ3JhZGllbnQuY29udmVydChlLmJnLmNvbG9yKTtlbHNlIHRyeXtsZXQgdD1KU09OLnBhcnNlKGUuYmcuY29sb3IpOyh0Py5vcmlnfHx0Py5zdHJpbmcpJiYoZS5iZy5jb2xvcj1KU09OLnBhcnNlKGUuYmcuY29sb3IpKX1jYXRjaCh0KXtyZXR1cm59bGV0IHI9InN0cmluZyI9PXR5cGVvZiBlPy5iZz8uY29sb3I/ZT8uYmc/LmNvbG9yfHwidHJhbnNwYXJlbnQiOmU/LmJnPy5jb2xvcj8uc3RyaW5nPz9lPy5iZz8uY29sb3I/Lm9yaWc/P2U/LmJnPy5jb2xvcj8uY29sb3I/PyJ0cmFuc3BhcmVudCI7aWYodC5zdHlsZVsiYmFja2dyb3VuZCIrKFN0cmluZyhyKS5pbmNsdWRlcygiZ3JhZCIpPyIiOiJDb2xvciIpXT1yLCgidHJhbnNwYXJlbnQiIT09cnx8bikmJihsPSEwKSxvLm9mZnNldFByZXBhcmVkJiYodC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKSxlPy5iZz8uaW1hZ2U/LnNyYyYmKHQuc3R5bGUuYmFja2dyb3VuZEltYWdlPWB1cmwoJHtlPy5iZz8uaW1hZ2Uuc3JjfSlgLHQuc3R5bGUuYmFja2dyb3VuZFNpemU9IiI9PShlLmJnLmltYWdlPy5zaXplPz8iIik/ImNvdmVyIjplLmJnLmltYWdlLnNpemUsdC5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb249ZS5iZy5pbWFnZS5wb3NpdGlvbix0LnN0eWxlLmJhY2tncm91bmRSZXBlYXQ9IiI9PWUuYmcuaW1hZ2UucmVwZWF0fHxudWxsPT1lLmJnLmltYWdlLnJlcGVhdD8ibm8tcmVwZWF0IjplLmJnLmltYWdlLnJlcGVhdCxsPSEwKSwhbClyZXR1cm47by5jLmJnY2FudmFzPXQsZS5zaXplLmZ1bGxXaWR0aD90LnN0eWxlLndpZHRoPV90cHQud2luVy0ocyYmX3RwdC53aW5IPGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0P190cHQuc2Nyb2xsQmFyVzowKSsicHgiOmkmJih0LnN0eWxlLndpZHRoPW8uYy5tb2R1bGUub2Zmc2V0V2lkdGgrInB4IiksZS5zYnQ/LnVzZT9vLmMuY29udGVudC5hcHBlbmRDaGlsZChvLmMuYmdjYW52YXMpOm8uYy5tb2R1bGUuYXBwZW5kQ2hpbGQoby5jLmJnY2FudmFzKX1vLmMuYmdjYW52YXMuc3R5bGUuaGVpZ2h0PXZvaWQgMCE9PWUubmV3aD9lLm5ld2grInB4IjooImNhcm91c2VsIj09ZS50eXBlP28uZGltcy5tb2R1bGUuaDpvLmRpbXMuY29udGVudC5oKSsicHgiLG8uYy5iZ2NhbnZhcy5zdHlsZS5sZWZ0PSFzJiZlLnNidD8udXNlfHxvLmMuYmdjYW52YXMuY2xvc2VzdCgiU1I3LUNPTlRFTlQiKT8iMHB4IjoiLSIrKG8/LmRpbXM/Lm1vZHVsZVJlY3Q/LmxlZnQ/PzApKyJweCJ9LF90cHQudXBkYXRlU2xpZGVCZz1mdW5jdGlvbih0LGUpe2NvbnN0IHM9U1I3Lk1bdF07bGV0IGk9cy5zZXR0aW5ncztzPy5jPy5iZ2NhbnZhcyYmKGkuc2l6ZS5mdWxsV2lkdGg/cy5jLmJnY2FudmFzLnN0eWxlLndpZHRoPV90cHQud2luVy0oZSYmX3RwdC53aW5IPGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0P190cHQuc2Nyb2xsQmFyVzowKSsicHgiOnByZXBhcmluZyYmKHMuYy5iZ2NhbnZhcy5zdHlsZS53aWR0aD1zLmMubW9kdWxlLm9mZnNldFdpZHRoKyJweCIpKX0sX3RwdC5tb2R1bGVEZWZhdWx0cz0odCxlKT0+e2xldCBzPVNSNy5NW3RdO251bGwhPXMmJm51bGwhPXMuYyYmbnVsbCE9cy5jLm1vZHVsZSYmKHMuZGltcz8/PXt9LHMuZGltcy5tb2R1bGVSZWN0PXMuYy5tb2R1bGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscy5jLmNvbnRlbnQuc3R5bGUubGVmdD0iLSIrcy5kaW1zLm1vZHVsZVJlY3QubGVmdCsicHgiLHMuYy5jb250ZW50LnN0eWxlLndpZHRoPV90cHQud2luVy1fdHB0LnNjcm9sbEJhclcrInB4IiwiY2Fyb3VzZWwiPT1lLnR5cGUmJihzLmMubW9kdWxlLnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIiksX3RwdC5iZ1N0eWxlKHQsZSx3aW5kb3cuaW5uZXJXaWR0aD09X3RwdC53aW5XKSl9LF90cHQuZ2V0T2Zmc2V0PXQ9Pnt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9d2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxpPXdpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtyZXR1cm57dG9wOmUudG9wK2ksbGVmdDplLmxlZnQrc319LF90cHQuZmlsbEFycmF5PWZ1bmN0aW9uKHQsZSl7bGV0IHMsaTt0PUFycmF5LmlzQXJyYXkodCk/dDpbdF07bGV0IG49QXJyYXkoZSksbz10Lmxlbmd0aDtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKW5baSsoZS1vKV09dFtpXSxudWxsPT1zJiYiIyIhPT10W2ldJiYocz10W2ldKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXZvaWQgMCE9PW5bdF0mJiIjIiE9blt0XXx8KG5bdF09cykscz1uW3RdO3JldHVybiBufSxfdHB0LmNsb3Nlc3RHRT1mdW5jdGlvbih0LGUpe2xldCBzPU51bWJlci5NQVhfVkFMVUUsaT0tMTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl0W25dLTE+PWUmJnRbbl0tMS1lPHMmJihzPXRbbl0tMS1lLGk9bik7cmV0dXJuKytpfX0oKQ==" defer></script>
2905
2906</head>
2907<body class="wp-singular page-template page-template-ati-actualites-template page-template-ati-actualites-template-php page page-id-10087 wp-custom-logo wp-theme-stal theme-stal qode-framework-1.2.6 woocommerce-no-js translatepress-fr_FR qodef-qi--no-touch qi-addons-for-elementor-1.11.1 stal-core-1.7 qode-optimizer-1.2.2 stal-1.7 qodef-back-to-top--enabled  qodef-content-grid-1100 qodef-header--standard qodef-header-appearance--sticky qodef-mobile-header--standard qodef-mobile-header-appearance--sticky qodef-drop-down-second--full-width qodef-drop-down-second--animate-height qodef-header-standard--right qodef-search--on-side elementor-default elementor-kit-9 qodef-content-behind-header" itemscope itemtype="https://schema.org/WebPage">
2908		<div id="qodef-page-wrapper" class="">
2909		<header id="qodef-page-header">
2910		<div id="qodef-page-header-inner" >
2911		<a itemprop="url" class="qodef-header-logo-link qodef-height--set " href="https://goldenrod-pigeon-420491.hostingersite.com/" style="height:120px;color:#ffffff;" rel="home">
2912	<img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--main" alt="logo main" /><img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--dark" alt="logo dark" /><img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--light" alt="logo main" /></a>	<nav class="qodef-header-navigation" role="navigation" aria-label="Top Menu">
2913		<ul id="qodef-main-navigation-menu" class="menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-10362"><a href="https://goldenrod-pigeon-420491.hostingersite.com/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Accueil</span></span></a></li>
2914<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-5366 qodef-menu-item--narrow"><a href="https://goldenrod-pigeon-420491.hostingersite.com/qui-sommes-nous/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Qui Sommes Nous</span></span></a><span class="qodef-menu-arrow"></span>
2915<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
2916	<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-10087 current_page_item menu-item-10668"><a href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Actualités</span></span></a></li>
2917</ul></div></div>
2918</li>
2919<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-5597 qodef-menu-item--narrow"><a href="https://goldenrod-pigeon-420491.hostingersite.com/nos-services/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Nos Services</span></span></a><span class="qodef-menu-arrow"></span>
2920<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
2921	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10657"><a href="https://goldenrod-pigeon-420491.hostingersite.com/sourcing/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Sourcing</span></span></a></li>
2922	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10659"><a href="https://goldenrod-pigeon-420491.hostingersite.com/achat-industriel/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Achat Industriel</span></span></a></li>
2923	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10656"><a href="https://goldenrod-pigeon-420491.hostingersite.com/logistique/">
2923<span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Logistique</span></span></a></li>
2924	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10655"><a href="https://goldenrod-pigeon-420491.hostingersite.com/export-international-transport/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Transport/Export International</span></span></a></li>
2925	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5677"><a href="https://goldenrod-pigeon-420491.hostingersite.com/supply-chain/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Supply Chain</span></span></a></li>
2926</ul></div></div>
2927</li>
2928<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8148 qodef-menu-item--narrow"><a href="#"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Secteurs d&rsquo;activité</span></span></a><span class="qodef-menu-arrow"></span>
2929<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
2930	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5587"><a href="https://goldenrod-pigeon-420491.hostingersite.com/agroalimentaire/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Agroalimentaire</span></span></a></li>
2931	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5654"><a href="https://goldenrod-pigeon-420491.hostingersite.com/btp/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">BTP</span></span></a></li>
2932	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5653"><a href="https://goldenrod-pigeon-420491.hostingersite.com/minier/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Minier</span></span></a></li>
2933	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5652"><a href="https://goldenrod-pigeon-420491.hostingersite.com/petrolier/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Pétrolier</span></span></a></li>
2934	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5655"><a href="https://goldenrod-pigeon-420491.hostingersite.com/energie/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Énergie</span></span></a></li>
2935	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6317"><a href="https://goldenrod-pigeon-420491.hostingersite.com/automobile/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Automobile</span></span></a></li>
2936	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6316"><a href="https://goldenrod-pigeon-420491.hostingersite.com/aeronautique/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Aéronautique</span></span></a></li>
2937	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6318"><a href="https://goldenrod-pigeon-420491.hostingersite.com/ferroviaire/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Ferroviaire</span></span></a></li>
2938</ul></div></div>
2939</li>
2940<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10366"><a href="https://goldenrod-pigeon-420491.hostingersite.com/recrutement/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Recrutement</span></span></a></li>
2941</ul>	</nav>
2942<div class="qodef-widget-holder">
2943	<div id="stal_core_side_area_opener-2" class="widget widget_stal_core_side_area_opener qodef-header-widget-area-one" data-area="header-widget-one">			<a itemprop="url" class="qodef-side-area-opener qodef-side-area-opener--predefined"   href="#">
2944				<span class="qodef-lines"><span class="qodef-line qodef-line-1"></span><span class="qodef-line qodef-line-2"></span><span class="qodef-line qodef-line-3"></span><span class="qodef-line qodef-line-4"></span><span class="qodef-line qodef-line-5"></span></span>			</a>
2945			</div></div>
2946	</div>
2947	<div class="qodef-header-sticky">
2948    <div class="qodef-header-sticky-inner ">
2949        <a itemprop="url" class="qodef-header-logo-link qodef-height--set " href="https://golde
2949nrod-pigeon-420491.hostingersite.com/" style="height:120px;color:#ffffff;" rel="home">
2950	<img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--main" alt="logo main" /><img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--dark" alt="logo dark" /><img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--light" alt="logo main" /></a>	<nav class="qodef-header-navigation" role="navigation" aria-label="Top Menu">
2951		<ul id="qodef-sticky-navigation-menu" class="menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-10362"><a href="https://goldenrod-pigeon-420491.hostingersite.com/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Accueil</span></span></a></li>
2952<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-5366 qodef-menu-item--narrow"><a href="https://goldenrod-pigeon-420491.hostingersite.com/qui-sommes-nous/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Qui Sommes Nous</span></span></a><span class="qodef-menu-arrow"></span>
2953<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
2954	<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-10087 current_page_item menu-item-10668"><a href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Actualités</span></span></a></li>
2955</ul></div></div>
2956</li>
2957<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-5597 qodef-menu-item--narrow"><a href="https://goldenrod-pigeon-420491.hostingersite.com/nos-services/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Nos Services</span></span></a><span class="qodef-menu-arrow"></span>
2958<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
2959	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10657"><a href="https://goldenrod-pigeon-420491.hostingersite.com/sourcing/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Sourcing</span></span></a></li>
2960	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10659"><a href="https://goldenrod-pigeon-420491.hostingersite.com/achat-industriel/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Achat Industriel</span></span></a></li>
2961	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10656"><a href="https://goldenrod-pigeon-420491.hostingersite.com/logistique/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Logistique</span></span></a></li>
2962	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10655"><a href="https://goldenrod-pigeon-420491.hostingersite.com/export-international-transport/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Transport/Export International</span></span></a></li>
2963	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5677"><a href="https://goldenrod-pigeon-420491.hostingersite.com/supply-chain/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Supply Chain</span></span></a></li>
2964</ul></div></div>
2965</li>
2966<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8148 qodef-menu-item--narrow"><a href="#"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Secteurs d&rsquo;activité</span></span></a>
2966<span class="qodef-menu-arrow"></span>
2967<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
2968	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5587"><a href="https://goldenrod-pigeon-420491.hostingersite.com/agroalimentaire/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Agroalimentaire</span></span></a></li>
2969	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5654"><a href="https://goldenrod-pigeon-420491.hostingersite.com/btp/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">BTP</span></span></a></li>
2970	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5653"><a href="https://goldenrod-pigeon-420491.hostingersite.com/minier/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Minier</span></span></a></li>
2971	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5652"><a href="https://goldenrod-pigeon-420491.hostingersite.com/petrolier/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Pétrolier</span></span></a></li>
2972	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5655"><a href="https://goldenrod-pigeon-420491.hostingersite.com/energie/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Énergie</span></span></a></li>
2973	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6317"><a href="https://goldenrod-pigeon-420491.hostingersite.com/automobile/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Automobile</span></span></a></li>
2974	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6316"><a href="https://goldenrod-pigeon-420491.hostingersite.com/aeronautique/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Aéronautique</span></span></a></li>
2975	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6318"><a href="https://goldenrod-pigeon-420491.hostingersite.com/ferroviaire/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Ferroviaire</span></span></a></li>
2976</ul></div></div>
2977</li>
2978<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10366"><a href="https://goldenrod-pigeon-420491.hostingersite.com/recrutement/"><span class="qodef-menu-item-inner"><span class="qodef-menu-item-text">Recrutement</span></span></a></li>
2979</ul>	</nav>
2980        <div class="qodef-widget-holder">
2981            <div id="stal_core_side_area_opener-4" class="widget widget_stal_core_side_area_opener qodef-sticky-right">			<a itemprop="url" class="qodef-side-area-opener qodef-side-area-opener--predefined"   href="#">
2982				<span class="qodef-lines"><span class="qodef-line qodef-line-1"></span><span class="qodef-line qodef-line-2"></span><span class="qodef-line qodef-line-3"></span><span class="qodef-line qodef-line-4"></span><span class="qodef-line qodef-line-5"></span></span>			</a>
2983			</div>        </div>
2984
2985            </div>
2986</div></header><header id="qodef-page-mobile-header">
2987		<div id="qodef-page-mobile-header-inner">
2988		<a itemprop="url" class="qodef-mobile-header-logo-link " href="https://goldenrod-pigeon-420491.hostingersite.com/" style="height:120px;" rel="home">
2989	<img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--main" alt="logo main" />	<img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--dark" alt="logo dark" /><img width="512" height="512" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/cropped-Nouveau-logo-ATI-Export-1.webp" class="qodef-header-logo-image qodef--light" alt="logo light" /></a><a id="qodef-mobile-header-opener" href="#">
2990	<span class="qodef-lines">
2991		<span class="qodef-line qodef-line-1"></span>
2992		<span class="qodef-line qodef-line-2"></span>
2993		<span class="qodef-line qodef-line-3"></span>
2994		<span class="qodef-line qodef-line-4"></span>
2995		<span class="qodef-line qodef-line-5"></span>
2996	</span>
2997</a>	<nav id="qodef-mobile-header-navigation" class="qodef-m" role="navigation" aria-label="Mobile Menu">
2998		<div class="qodef-m-inner"><ul id="qodef-mobile-header-navigation-menu" class="qodef-content-grid"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-10362">
2998<a href="https://goldenrod-pigeon-420491.hostingersite.com/"><span class="qodef-menu-item-inner">Accueil</span></a></li>
2999<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-5366 qodef-menu-item--narrow"><a href="https://goldenrod-pigeon-420491.hostingersite.com/qui-sommes-nous/"><span class="qodef-menu-item-inner">Qui Sommes Nous</span></a><span class="qodef-menu-arrow"></span>
3000<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
3001	<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-10087 current_page_item menu-item-10668"><a href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/"><span class="qodef-menu-item-inner">Actualités</span></a></li>
3002</ul></div></div>
3003</li>
3004<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-5597 qodef-menu-item--narrow"><a href="https://goldenrod-pigeon-420491.hostingersite.com/nos-services/"><span class="qodef-menu-item-inner">Nos Services</span></a><span class="qodef-menu-arrow"></span>
3005<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
3006	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10657"><a href="https://goldenrod-pigeon-420491.hostingersite.com/sourcing/"><span class="qodef-menu-item-inner">Sourcing</span></a></li>
3007	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10659"><a href="https://goldenrod-pigeon-420491.hostingersite.com/achat-industriel/"><span class="qodef-menu-item-inner">Achat Industriel</span></a></li>
3008	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10656"><a href="https://goldenrod-pigeon-420491.hostingersite.com/logistique/"><span class="qodef-menu-item-inner">Logistique</span></a></li>
3009	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10655"><a href="https://goldenrod-pigeon-420491.hostingersite.com/export-international-transport/"><span class="qodef-menu-item-inner">Transport/Export International</span></a></li>
3010	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5677"><a href="https://goldenrod-pigeon-420491.hostingersite.com/supply-chain/"><span class="qodef-menu-item-inner">Supply Chain</span></a></li>
3011</ul></div></div>
3012</li>
3013<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8148 qodef-menu-item--narrow"><a href="#"><span class="qodef-menu-item-inner">Secteurs d&rsquo;activité</span></a><span class="qodef-menu-arrow"></span>
3014<div class="qodef-drop-down-second"><div class="qodef-drop-down-second-inner"><ul class="sub-menu">
3015	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5587"><a href="https://goldenrod-pigeon-420491.hostingersite.com/agroalimentaire/"><span class="qodef-menu-item-inner">Agroalimentaire</span></a></li>
3016	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5654"><a href="https://goldenrod-pigeon-420491.hostingersite.com/btp/"><span class="qodef-menu-item-inner">BTP</span></a></li>
3017	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5653"><a href="https://goldenrod-pigeon-420491.hostingersite.com/minier/"><span class="qodef-menu-item-inner">Minier</span></a></li>
3018	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5652"><a href="https://goldenrod-pigeon-420491.hostingersite.com/petrolier/"><span class="qodef-menu-item-inner">Pétrolier</span></a></li>
3019	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5655"><a href="https://goldenrod-pigeon-420491.hostingersite.com/energie/"><span class="qodef-menu-item-inner">Énergie</span></a></li>
3020	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6317"><a href="https://goldenrod-pigeon-420491.hostingersite.com/automobile/">
3020<span class="qodef-menu-item-inner">Automobile</span></a></li>
3021	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6316"><a href="https://goldenrod-pigeon-420491.hostingersite.com/aeronautique/"><span class="qodef-menu-item-inner">Aéronautique</span></a></li>
3022	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6318"><a href="https://goldenrod-pigeon-420491.hostingersite.com/ferroviaire/"><span class="qodef-menu-item-inner">Ferroviaire</span></a></li>
3023</ul></div></div>
3024</li>
3025<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10366"><a href="https://goldenrod-pigeon-420491.hostingersite.com/recrutement/"><span class="qodef-menu-item-inner">Recrutement</span></a></li>
3026</ul></div>	</nav>
3027	</div>
3028	</header>		<div id="qodef-page-outer">
3029			<div class="qodef-page-title qodef-m qodef-title--standard qodef-alignment--left qodef-vertical-alignment--header-bottom">
3030		<div class="qodef-m-inner">
3031		<div class="qodef-m-content qodef-content-grid ">
3032    <h1 class="qodef-m-title entry-title">
3033        Actualités    </h1>
3034    </div>	</div>
3035	</div>			<div id="qodef-page-inner" class="qodef-content-grid">
3036<style>
3037/* ═══════════════════════════════════════════════════
3038   ATI ACTUALITÉS — PAGE STYLES
3039   ═══════════════════════════════════════════════════ */
3040
3041/* Fix header logo alignment — measured: actualités pad=0px 40px,
3042   Nos Services pad=0px. Zero the sides to match. */
3043body.page-template-ati-actualites-template #qodef-page-header-inner {
3044    padding: 0 !important;
3045}
3046
3047/* Hide theme's injected page title — scoped to this page */
3048body.page-template-ati-actualites-template .qodef-page-title,
3049body.page-template-ati-actualites-template .qodef-title--standard,
3050body.page-template-ati-actualites-template #qodef-page-title {
3051    display: none !important;
3052}
3053
3054/* ── ROOT CAUSE FIX ──────────────────────────────────
3055   .qodef-content-grid is the ONLY element constraining
3056   this page. Measured: width 1100px, margin 0 82.33px,
3057   background #fff. The margin clips our content; the
3058   white background bleeds into the footer area.
3059   Scoped to this page only via body class.
3060   ──────────────────────────────────────────────────── */
3061body.page-template-ati-actualites-template .qodef-content-grid {
3062    width: 100% !important;
3063    max-width: 100% !important;
3064    margin: 0 !important;
3065    padding: 0 !important;
3066    background: transparent !important;
3067}
3068
3069/* The footer uses the same .qodef-content-grid class but needs
3070   its own constrained width. Restore it to match normal inner pages
3071   (measured: x:82px, width:1100px = max-width:1265px with 82.33px side margins). */
3072body.page-template-ati-actualites-template #qodef-page-footer .qodef-content-grid {
3073    width: auto !important;
3074    max-width: 1265px !important;
3075    margin: 0 82.33px !important;
3076    padding: 20px 0 !important;
3077    background: transparent !important;
3078}
3079
3080/* Restore grid-inner inside footer — theme sets margin: 0 -15px for column gutters */
3081body.page-template-ati-actualites-template #qodef-page-footer .qodef-grid-inner {
3082    width: auto !important;
3083    max-width: none !important;
3084    margin: 0 -15px !important;
3085    padding: 0 !important;
3086}
3087
3088/* Page wrapper */
3089.ati-actu-page {
3090    background: #fff;
3091    color: #000;
3092    font-family: inherit;
3093    min-height: 100vh;
3094    width: 100%;
3095}
3096
3097/* ── Page Header — full bleed dark band ─────────────── */
3098.ati-actu-header {
3099    padding: 140px 0 60px;
3100    background: #000 url('https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/07/person-is-holding-red-megaphone-is-standing-front-trees.jpg-1.jpeg') center/cover;
3101    border-bottom: 3px solid #fdec01;
3102    width: 100%;
3103}
3104
3105.ati-actu-header-inner {
3106    max-width: 1265px;
3107    margin: 0 auto;
3108    padding: 0 40px;
3109    display: flex;
3110    align-items: flex-end;
3111    justify-content: space-between;
3112    gap: 40px;
3113}
3114
3115.ati-actu-eyebrow {
3116    font-size: 11px;
3117    font-weight: 700;
3118    letter-spacing: 3px;
3119    text-transform: uppercase;
3120    color: #fdec01;
3121    margin-bottom: 14px;
3122}
3123
3124.ati-actu-title {
3125    font-size: clamp(42px, 5vw, 72px);
3126    font-weight: 700;
3127    text-transform: uppercase;
3128    line-height: 1;
3129    letter-spacing: -1px;
3130    color: #fff;
3131    margin: 0;
3132}
3133
3134/* Moved (Session 30) from inside .ati-actu-header-inner (black band) to
3135   between the ticker and the hero card (white page background) - restyled
3136   from white-on-black-with-shadow to centered dark text, no shadow needed. */
3137.ati-actu-subtitle {
3138    color: rgba(0,0,0,0.6);
3139    font-size: 15px;
3140    line-height: 1.7;
3141    max-width: 640px;
3142    margin: 36px auto;
3143    padding: 0 40px;
3144    text-align: center;
3145}
3146
3147/* ── Ticker strip ────────────────────────────────── */
3148.ati-actu-ticker {
3149    background: #fdec01;
3150    padding: 10px 0;
3151    overflow: hidden;
3152    white-space: nowrap;
3153    width: 100%;
3154}
3155
3156.ati-actu-ticker-track {
3157    display: inline-block;
3158    animation: atiTickerScroll 30s linear infinite;
3159}
3160
3161.ati-actu-ticker-track span {
3162    font-size: 11px;
3163    font-weight: 700;
3164    text-transform: uppercase;
3165    letter-spacing: 3px;
3166    color: #000;
3167    padding: 0 40px;
3168}
3169
3170.ati-actu-ticker-track span::before {
3171    content: '●';
3172    margin-right: 40px;
3173    color: #e1312d;
3174}
3175
3176@keyframes atiTickerScroll {
3177    from { transform: translateX(0); }
3178    to   { transform: translateX(-50%); }
3179}
3180
3181/* ── Hero card ───────────────────────────────────── */
3182.ati-actu-hero {
3183    max-width: 1265px;
3184    margin: 0 auto;
3185    padding: 60px 40px 0;
3186}
3187
3188.ati-actu-hero-card {
3189    position: relative;
3190    display: grid;
3191    grid-template-columns: 1fr 1fr;
3192    min-height: 480px;
3193    overflow: hidden;
3194    text-decoration: none;
3195    color: inherit;
3196    background: #fff;
3197    border: 1px solid rgba(0,0,0,0.08);
3198    transition: border-color 0.3s;
3199}
3200
3201.ati-actu-hero-card:hover {
3202    border-color: #fdec01;
3203}
3204
3205.ati-actu-hero-image {
3206    position: relative;
3207    overflow: hidden;
3208}
3209
3210.ati-actu-hero-image img {
3211    width: 100%;
3212    height: 100%;
3213    object-fit: cover;
3214    display: block;
3215    transition: transform 0.6s ease;
3216}
3217
3218.ati-actu-hero-card:hover .ati-actu-hero-image img {
3219    transform: scale(1.04);
3220}
3221
3222.ati-actu-hero-placeholder {
3223    width: 100%;
3224    height: 100%;
3225    background: linear-gradient(135deg, #111 0%, #1a1a1a 50%, #111 100%);
3226    display: flex;
3227    align-items: center;
3228    justify-content: center;
3229}
3230
3231.ati-actu-hero-placeholder::after {
3232    content: 'ATI';
3233    font-size: 80px;
3234    font-weight: 700;
3235    color: rgba(253,236,1,0.08);
3236    letter-spacing: 10px;
3237}
3238
3239.ati-actu-hero-content {
3240    padding: 50px 50px 50px 60px;
3241    display: flex;
3242    flex-direction: column;
3243    justify-content: flex-end;
3244    background: #fff;
3245}
3246
3247.ati-actu-hero-badge {
3248    display: inline-flex;
3249    align-items: center;
3250    gap: 8px;
3251    margin-bottom: 24px;
3252}
3253
3254.ati-actu-badge-new {
3255    background: #e1312d;
3256    color: #fff;
3257    font-size: 9px;
3258    font-weight: 700;
3259    letter-spacing: 2px;
3260    text-transform: uppercase;
3261    padding: 4px 10px;
3262}
3263
3264.ati-actu-badge-cat {
3265    color: rgba(0,0,0,0.4);
3266    font-size: 11px;
3267    font-weight: 600;
3268    letter-spacing: 2px;
3269    text-transform: uppercase;
3270}
3271
3272.ati-actu-hero-heading {
3273    font-size: clamp(22px, 2.5vw, 34px);
3274    font-weight: 700;
3275    line-height: 1.25;
3276    text-transform: uppercase;
3277    color: #0a0a0a;
3278    margin: 0 0 20px;
3279}
3280
3281.ati-actu-hero-excerpt {
3282    color: rgba(0,0,0,0.5);
3283    font-size: 15px;
3284    line-height: 1.7;
3285    margin: 0 0 36px;
3286}
3287.ati-actu-hero-excerpt:empty {
3288    display: none;
3289    margin: 0;
3290}
3291
3292.ati-actu-hero-meta {
3293    display: flex;
3294    align-items: center;
3295    justify-content: space-between;
3296    border-top: 1px solid rgba(0,0,0,0.1);
3297    padding-top: 20px;
3298}
3299
3300.ati-actu-date {
3301    font-size: 11px;
3302    font-weight: 600;
3303    letter-spacing: 2px;
3304    text-transform: uppercase;
3305    color: rgba(0,0,0,0.4);
3306}
3307
3308.ati-actu-read-more {
3309    display: inline-flex;
3310    align-items: center;
3311    gap: 10px;
3312    font-size: 11px;
3313    font-weight: 700;
3314    letter-spacing: 2px;
3315    text-transform: uppercase;
3316    color: #0a0a0a;
3317    text-decoration: none;
3318    transition: gap 0.25s;
3319}
3320
3321.ati-actu-read-more::after {
3322    content: '→';
3323    transition: transform 0.25s;
3324}
3325
3326.ati-actu-hero-card:hover .ati-actu-read-more::after {
3327    transform: translateX(4px);
3328}
3329
3330/* ── Section label ───────────────────────────────── */
3331.ati-actu-section-label {
3332    max-width: 1265px;
3333    margin: 70px auto 0;
3334    padding: 0 40px 24px;
3335    border-bottom: 1px solid rgba(0,0,0,0.1);
3336    display: flex;
3337    align-items: center;
3338    gap: 16px;
3339}
3340
3341.ati-actu-section-label::before {
3342    content: '';
3343    display: block;
3344    width: 30px;
3345    height: 2px;
3346    background: #fdec01;
3347}
3348
3349.ati-actu-section-label span {
3350    font-size: 11px;
3351    font-weight: 700;
3352    letter-spacing: 3px;
3353    text-transform: uppercase;
3354    color: rgba(0,0,0,0.35);
3355}
3356
3357/* ── Grid ────────────────────────────────────────── */
3358.ati-actu-grid {
3359    max-width: 1265px;
3360    margin: 0 auto;
3361    padding: 40px 40px 80px;
3362    display: grid;
3363    grid-template-columns: repeat(3, 1fr);
3364    gap: 16px;
3365}
3366
3367/* ── Card ────────────────────────────────────────── */
3368.ati-actu-card {
3369    display: flex;
3370    flex-direction: column;
3371    background: #fff;
3372    text-decoration: none;
3373    color: inherit;
3374    position: relative;
3375    overflow: hidden;
3376    border: 1px solid rgba(0,0,0,0.08);
3377    transition: border-color 0.25s;
3378}
3379
3380.ati-actu-card:hover {
3381    border-color: #fdec01;
3382}
3383
3384.ati-actu-card-image {
3385    position: relative;
3386    overflow: hidden;
3387    aspect-ratio: 16/9;
3388    background: #111;
3389}
3390
3391.ati-actu-card-image img {
3392    width: 100%;
3393    height: 100%;
3394    object-fit: cover;
3395    display: block;
3396    transition: transform 0.5s ease;
3397}
3398
3399.ati-actu-card:hover .ati-actu-card-image img {
3400    transform: scale(1.06);
3401}
3402
3403.ati-actu-card-placeholder {
3404    width: 100%;
3405    height: 100%;
3406    background: #111;
3407    display: flex;
3408    align-items: center;
3409    justify-content: center;
3410}
3411
3412.ati-actu-card-placeholder::after {
3413    content: 'ATI';
3414    font-size: 36px;
3415    font-weight: 700;
3416    color: rgba(253,236,1,0.05);
3417    letter-spacing: 6px;
3418}
3419
3420/* Sibling of .ati-actu-card-image (not a child of it), so its negative
3421   top margin pulls it up to straddle the image/card seam WITHOUT needing
3422   the image container's overflow to be visible - that container must stay
3423   overflow:hidden to clip the hover-zoom transform on the <img>. */
3424.ati-actu-card-cat {
3425    display: inline-block;
3426    position: relative;
3427    z-index: 2;
3428    background: #fdec01;
3429    font-size: 9px;
3430    font-weight: 700;
3431    letter-spacing: 2px;
3432    text-transform: uppercase;
3433    color: #0a0a0a;
3434    padding: 5px 10px;
3435    margin: -14px 0 14px 20px;
3436}
3437
3438.ati-actu-card-body {
3439    padding: 0 28px 28px;
3440    flex: 1;
3441    display: flex;
3442    flex-direction: column;
3443}
3444
3445.ati-actu-card-title {
3446    font-size: 16px;
3447    font-weight: 700;
3448    text-transform: uppercase;
3449    line-height: 1.35;
3450    color: #0a0a0a;
3451    margin: 0 0 14px;
3452    flex: 1;
3453}
3454
3455.ati-actu-card-excerpt {
3456    font-size: 13px;
3457    line-height: 1.65;
3458    color: rgba(0,0,0,0.5);
3459    margin: 0 0 24px;
3460    display: -webkit-box;
3461    -webkit-line-clamp: 3;
3462    -webkit-box-orient: vertical;
3463    overflow: hidden;
3464}
3465.ati-actu-card-excerpt:empty {
3466    display: none;
3467    margin: 0;
3468}
3469
3470.ati-actu-card-footer {
3471    display: flex;
3472    align-items: center;
3473    justify-content: space-between;
3474    padding-top: 16px;
3475    border-top: 1px solid rgba(0,0,0,0.1);
3476}
3477
3478/* ── No posts ────────────────────────────────────── */
3479.ati-actu-empty {
3480    max-width: 1265px;
3481    margin: 80px auto;
3482    padding: 0 40px;
3483    text-align: center;
3484}
3485
3486.ati-actu-empty h3 {
3487    font-size: 24px;
3488    font-weight: 700;
3489    text-transform: uppercase;
3490    color: rgba(0,0,0,0.2);
3491    margin-bottom: 12px;
3492}
3493
3494.ati-actu-empty p {
3495    color: rgba(0,0,0,0.3);
3496    font-size: 15px;
3497}
3498
3499/* ── Pagination ──────────────────────────────────── */
3500.ati-actu-pagination {
3501    max-width: 1265px;
3502    margin: 0 auto 80px;
3503    padding: 0 40px;
3504    display: flex;
3505    align-items: center;
3506    justify-content: center;
3507    gap: 4px;
3508}
3509
3510.ati-actu-pagination .page-numbers {
3511    display: inline-flex;
3512    align-items: center;
3513    justify-content: center;
3514    width: 44px;
3515    height: 44px;
3516    font-size: 12px;
3517    font-weight: 700;
3518    letter-spacing: 1px;
3519    color: rgba(0,0,0,0.4);
3520    border: 1px solid rgba(0,0,0,0.15);
3521    text-decoration: none;
3522    transition: all 0.2s;
3523}
3524
3525.ati-actu-pagination .page-numbers:hover,
3526.ati-actu-pagination .page-numbers.current {
3527    background: #000;
3528    border-color: #000;
3529    color: #fdec01;
3530}
3531
3532.ati-actu-pagination .page-numbers.dots {
3533    border: none;
3534    color: rgba(0,0,0,0.2);
3535}
3536
3537/* ── Responsive ──────────────────────────────────── */
3538@media (max-width: 1024px) {
3539    .ati-actu-hero-card {
3540        grid-template-columns: 1fr;
3541    }
3542    .ati-actu-hero-image {
3543        height: 280px;
3544    }
3545    .ati-actu-grid {
3546        grid-template-columns: repeat(2, 1fr);
3547    }
3548    .ati-actu-header-inner {
3549        flex-direction: column;
3550        align-items: flex-start;
3551    }
3552}
3553
3554@media (max-width: 768px) {
3555    .ati-actu-header {
3556        padding: 120px 0 40px;
3557    }
3558    .ati-actu-header-inner,
3559    .ati-actu-hero,
3560    .ati-actu-section-label,
3561    .ati-actu-grid {
3562        padding-left: 20px;
3563        padding-right: 20px;
3564    }
3565    .ati-actu-hero-content {
3566        padding: 30px 24px;
3567    }
3568    .ati-actu-grid {
3569        grid-template-columns: 1fr;
3570    }
3571    .ati-actu-subtitle {
3572        padding: 0 20px;
3573    }
3574}
3575</style>
3576
3577<div class="ati-actu-page">
3578
3579    <!-- ── Page Header ─────────────────────────────── -->
3580    <div class="ati-actu-header">
3581        <div class="ati-actu-header-inner">
3582            <div>
3583                <h1 class="ati-actu-title">Actualités</h1>
3584            </div>
3585        </div>
3586    </div>
3587
3588    <!-- ── Ticker ──────────────────────────────────── -->
3589    <div class="ati-actu-ticker">
3590        <div class="ati-actu-ticker-track">
3591            <span>Actualités ATI Export</span>
3592            <span>Nouveaux Partenariats</span>
3593            <span>Offres &amp; Promotions</span>
3594            <span>Nouveaux Produits</span>
3595            <span>Secteurs</span>
3596            <span>Nouvelles Solutions</span>
3597            <span>Actualités ATI Export</span>
3598            <span>Nouveaux Partenariats</span>
3599            <span>Offres &amp; Promotions</span>
3600            <span>Nouveaux Produits</span>
3601            <span>Secteurs</span>
3602            <span>Nouvelles Solutions</span>
3603        </div>
3604    </div>
3605
3606    <!-- ── Subtitle (moved here from the header band, Session 30) ─ -->
3607    <p class="ati-actu-subtitle">
3608        Suivez les dernières nouvelles d'ATI Export : promotions, offres spéciales et actualités de nos marchés.
3609    </p>
3610
3611    
3612        <!-- ── Hero Card ───────────────────────────── -->
3613                <div class="ati-actu-hero">
3614            <a href="https://goldenrod-pigeon-420491.hostingersite.com/nouveau-partenaire/" class="ati-actu-hero-card">
3615                <div class="ati-actu-hero-image">
3616                                            <img src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/06/collaboration-suppliers-manufacturers-ensure-smooth-operations-communication-1024x1024.jpg" alt="Nouveau Partenaire">
3617                                    </div>
3618                <div class="ati-actu-hero-content">
3619                    <div class="ati-actu-hero-badge">
3620                        <span class="ati-actu-badge-new">À la une</span>
3621                        <span class="ati-actu-badge-cat">Partenaires</span>
3622                    </div>
3623                    <h2 class="ati-actu-hero-heading">Nouveau Partenaire</h2>
3624                    <p class="ati-actu-hero-excerpt"></p>
3625                    <div class="ati-actu-hero-meta">
3626                        <span class="ati-actu-date">
3627                            09 Juil 2026                        </span>
3628                        <span class="ati-actu-read-more">Lire la suite</span>
3629                    </div>
3630                </div>
3631            </a>
3632        </div>
3633        
3634        <!-- ── Grid ────────────────────────────────── -->
3635                <div class="ati-actu-section-label">
3636            <span>Toutes les actualités</span>
3637        </div>
3638
3639        <div class="ati-actu-grid">
3640                        <a href="https://goldenrod-pigeon-420491.hostingersite.com/nouveau-produit/" class="ati-actu-card">
3641                <div class="ati-actu-card-image">
3642                                            <img src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/07/retail-warehouse-full-shelves-with-goods-cartonslogistics-transportation-blurred-background-768x768.jpg" alt="Nouveau produit">
3643                                    </div>
3644                <span class="ati-actu-card-cat">Produits</span>
3645                <div class="ati-actu-card-body">
3646                    <h3 class="ati-actu-card-title">Nouveau produit</h3>
3647                    <p class="ati-actu-card-excerpt"></p>
3648                    <div class="ati-actu-card-footer">
3649                        <span class="ati-actu-date">09 Juil 2026</span>
3650                        <span class="ati-actu-read-more">Lire →</span>
3651                    </div>
3652                </div>
3653            </a>
3654                        <a href="https://goldenrod-pigeon-420491.hostingersite.com/news-try-2/" class="ati-actu-card">
3655                <div class="ati-actu-card-image">
3656                                            <img src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/06/vast-warehouse-interior-with-high-shelves-stocked-with-cardboard-boxes-pallets-768x768.jpg" alt="Offre">
3657                                    </div>
3658                <span class="ati-actu-card-cat">Offres et Promotions</span>
3659                <div class="ati-actu-card-body">
3660                    <h3 class="ati-actu-card-title">Offre</h3>
3661                    <p class="ati-actu-card-excerpt"></p>
3662                    <div class="ati-actu-card-footer">
3663                        <span class="ati-actu-date">09 Juil 2026</span>
3664                        <span class="ati-actu-read-more">Lire →</span>
3665                    </div>
3666                </div>
3667            </a>
3668                        <a href="https://goldenrod-pigeon-420491.hostingersite.com/news-try/" class="ati-actu-card">
3669                <div class="ati-actu-card-image">
3670                                            <img src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/06/biopharmaceutical-production-manufacturing-process-biopharmaceuticals-biotechnology-768x329.jpg" alt="Nouvelles">
3671                                    </div>
3672                <span class="ati-actu-card-cat">Actualités</span>
3673                <div class="ati-actu-card-body">
3674                    <h3 class="ati-actu-card-title">Nouvelles</h3>
3675                    <p class="ati-actu-card-excerpt"></p>
3676                    <div class="ati-actu-card-footer">
3677                        <span class="ati-actu-date">09 Juil 2026</span>
3678                        <span class="ati-actu-read-more">Lire →</span>
3679                    </div>
3680                </div>
3681            </a>
3682                    </div>
3683        
3684        <!-- ── Pagination ──────────────────────────── -->
3685        
3686    
3687</div><!-- .ati-actu-page -->
3688
3689			</div><!-- close #qodef-page-inner div from header.php -->
3690		</div><!-- close #qodef-page-outer div from header.php -->
3691		<footer id="qodef-page-footer">
3692		<div id="qodef-page-footer-top-area">
3693		<div id="qodef-page-footer-top-area-inner" class="qodef-content-grid">
3694			<div class="qodef-grid qodef-layout--columns qodef-responsive--custom qodef-col-num--4 qodef-col-num--1024--2 qodef-col-num--768--2 qodef-col-num--680--1 qodef-col-num--480--1">
3695				<div class="qodef-grid-inner clear">
3696											<div class="qodef-grid-item">
3697							<div id="media_image-2" class="widget widget_media_image" data-area="footer_top_area_column_1"><a href="https://stal.qodeinteractive.com/wp-content/uploads/2020/01/logo-footer.jpg"><img width="947" height="944" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export.webp" class="image wp-image-5467  attachment-full size-full" alt="" style="max-width: 100%; height: auto;" decoding="async" srcset="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export.webp 947w, https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export-300x300.webp 300w, https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export-150x150.webp 150w, https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export-768x766.webp 768w, https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export-82x82.webp 82w, https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export-600x598.webp 600w, https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/05/Nouveau-logo-ATI-Export-100x100.webp 100w" sizes="(max-width: 947px) 100v
3697w, 947px" /></a></div><div id="stal_core_separator-2" class="widget widget_stal_core_separator" data-area="footer_top_area_column_1"><div class="qodef-shortcode qodef-m qodef-separator clear">
3698	<div class="qodef-m-line" style="border-color: #c9c9c9;margin-top: 10px"></div>
3699</div></div><div id="text-10" class="widget widget_text" data-area="footer_top_area_column_1">			<div class="textwidget"><p>Bienvenue chez ATI Export, votre partenaire de confiance pour accompagner votre développement à l’international.</p>
3700</div>
3701		</div>						</div>
3702											<div class="qodef-grid-item">
3703							<div id="block-2" class="widget widget_block" data-area="footer_top_area_column_2"><h3 style="color: #fdec01; margin-bottom: 15px; font-size: 14px; letter-spacing: 2px;">NOS SECTEURS</h3>
3704<ul style="list-style: none; padding: 0; margin: 0;">
3705 <li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/agroalimentaire/" style="color: #ffffff; text-decoration: none;">Agroalimentaire</a></li>
3706  <li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/btp/" style="color: #ffffff; text-decoration: none;">BTP</a></li>
3707  <li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/minier/" style="color: #ffffff; text-decoration: none;">Minier</a></li>
3708  <li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/petrolier/" style="color: #ffffff; text-decoration: none;">Pétrolier</a></li>
3709<li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/energie/" style="color: #ffffff; text-decoration: none;">Énergie</a></li>
3710<li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/automobile/" style="color: #ffffff; text-decoration: none;">Automobile</a></li>
3711<li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/aeronautique/" style="color: #ffffff; text-decoration: none;">Aéronautique</a></li>
3712<li style="margin-bottom: 8px; padding-left: 10px;"><a href="https://goldenrod-pigeon-420491.hostingersite.com/ferroviaire/" style="color: #ffffff; text-decoration: none;">Ferroviaire</a></li>
3713
3714
3715</ul></div>						</div>
3716											<div class="qodef-grid-item">
3717							<div id="nav_menu-2" class="widget widget_nav_menu" data-area="footer_top_area_column_3"><h5 class="qodef-widget-title">Menu</h5><div class="menu-footer-menu-container"><ul id="menu-footer-menu" class="menu"><li id="menu-item-10361" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-10361"><a href="https://goldenrod-pigeon-420491.hostingersite.com/">Accueil</a></li>
3718<li id="menu-item-5525" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5525"><a href="https://goldenrod-pigeon-420491.hostingersite.com/qui-sommes-nous/">Qui Sommes Nous</a></li>
3719<li id="menu-item-8176" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8176"><a href="https://goldenrod-pigeon-420491.hostingersite.com/nos-services/">Nos Services</a></li>
3720<li id="menu-item-10142" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10142"><a href="https://goldenrod-pigeon-420491.hostingersite.com/recrutement/">Recrutement</a></li>
3721<li id="menu-item-10143" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-10087 current_page_item menu-item-10143"><a href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/" aria-current="page">Actualités</a></li>
3722<li id="menu-item-5526" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5526"><a href="https://goldenrod-pigeon-420491.hostingersite.com/contact-us/">Demande de Devis</a></li>
3723</ul></div></div>						</div>
3724											<div class="qodef-grid-item">
3725							<div id="custom_html-2" class="widget_text widget widget_custom_html" data-area="footer_top_area_column_4"><h5 class="qodef-widget-title">Contact</h5><div class="textwidget custom-html-widget"><!--
3726  [FOOTER-CONTACT-WIDGET] Session 36
3727  ============================================================================
3728  PASTE TARGET: wp-admin -> Appearance -> Widgets -> "Footer Top Area Column 4"
3729                -> the Custom HTML widget titled "Contact"  (id: custom_html-2)
3730  Paste this as the widget's CONTENT (the title field stays "Contact").
3731
3732  WHY THIS FILE EXISTS
3733  This widget is a *Custom HTML* block holding the pasted, already-rendered
3734  output of three Stal "icon list item" widgets. That is why the WordPress
3735  interface shows no Link field to edit - the hrefs are hardcoded in this raw
3736  markup, not stored as widget settings.
3737
3738  WHAT WAS WRONG (all three links were Stal theme DEMO leftovers - the visible
3739  text had been updated to ATI's real details, the hrefs never were):
3740    1. Address -> https://www.google.com/maps/place/Uniqlo+Soho/@40.719...
3741                  (a Uniqlo store in SoHo, New York)
3742    2. Phone   -> tel:123124567              (fake placeholder number)
3743    3. Email   -> mailto:[email protected]   (the theme vendor's address)
3744
3745  DO NOT CHANGE the three wrapper ids (stal_core_icon_list_item-2/3/4).
3746  Additional-CSS.css [FOOTER-CONTACT] targets them by id to force the white
3747  text/link colour. Renaming or removing them silently breaks that rule.
3748
3749  ALSO NOTE: `N&deg;71` is written as an HTML entity on purpose. The live page
3750  currently serves that character as an invalid byte (renders as a replacement
3751  glyph in raw fetches), so the entity sidesteps any editor encoding issue.
3752
3753  UPDATE (same session): the address link was swapped again, from a generic
3754  Maps search-query URL to the user's own copied link to the real "ATI Export"
3755  place pin (https://www.google.com/maps/place/ATI+Export/@46.40...). Prefer
3756  this over regenerating a search URL if it ever needs replacing again - it's
3757  the actual verified business listing, not a derived query.
3758
3759  STILL OUTSTANDING (separate widget, not fixed by this file):
3760  The side-area Custom HTML widget (id: custom_html-3, area "Side Area") holds
3761  TWO more copies of the same Uniqlo maps link, both using a "+" icon
3762  (ion-ios-add) instead of a map pin, and both duplicated. See session-log.md.
3763  ============================================================================
3764-->
3765<div id="stal_core_icon_list_item-2" class="widget widget_stal_core_icon_list_item" data-area="footer_top_area_column_3"><div class="qodef-icon-list-item qodef-icon--icon-pack qodef-alignment--top" style="margin-bottom: 23px">
3766	<p class="qodef-e-title" style="color: #ffffff;line-height: 1.625em">
3767					<a itemprop="url" href="https://www.google.com/maps/place/ATI+Export/@46.4069922,4.8188175,13.25z/data=!4m10!1m2!2m1!1s+N%C2%B071+RN6,+F-71260+La+Salle!3m6!1s0x47f3133de650df2b:0x3b04a0e9c352e5e4!8m2!3d46.4045938!4d4.8749021!15sChtOwrA3MSBSTjYsIEYtNzEyNjAgTGEgU2FsbGWSARVpbXBvcnRfZXhwb3J0X2NvbXBhbnngAQA!16s%2Fg%2F11bxb9s8cc?entry=ttu&amp;g_ep=EgoyMDI2MDcyMi4wIKXMDSoASAFQAw%3D%3D" target="_blank">
3768					<span class="qodef-e-title-inner">
3769				<span class="qodef-shortcode qodef-m  qodef-icon-holder qodef-size--default qodef-layout--normal" style="top: 5px;">	        <span class="qodef-icon-ionicons ion-ios-pin qodef-icon qodef-e" style="color: #fdec01;font-size: 25px;"></span>    </span>				<span class="qodef-e-title-text">N&deg;71 RN6, F-71260 La Salle<br/></span>
3770			</span>
3771					</a>
3772			</p>
3773</div></div>
3774<div id="stal_core_icon_list_item-3" class="widget widget_stal_core_icon_list_item" data-area="footer_top_area_column_3"><div class="qodef-icon-list-item qodef-icon--icon-pack" style="margin-bottom: 23px">
3775	<p class="qodef-e-title" style="color: #ffffff">
3776					<a itemprop="url" href="tel:+33385389161" target="_self">
3777					<span class="qodef-e-title-inner">
3778				<span class="qodef-shortcode qodef-m  qodef-icon-holder qodef-size--default qodef-layout--normal">	        <span class="qodef-icon-ionicons ion-ios-call qodef-icon qodef-e" style="color: #fdec01;font-size: 25px"></span>    </span>				<span class="qodef-e-title-text">+33 (0)3 85 38 91 61 </span>
3779			</span>
3780					</a>
3781			</p>
3782</div></div>
3783<div id="stal_core_icon_list_item-4" class="widget widget_stal_core_icon_list_item" data-area="footer_top_area_column_3"><div class="qodef-icon-list-item qodef-icon--icon-pack" style="margin-bottom: 22px">
3784	<p class="qodef-e-title" style="color: #ffffff">
3785					<a itemprop="url" href="mailto:[email protected]" target="_self">
3786					<span class="qodef-e-title-inner">
3787				<span class="qodef-shortcode qodef-m  qodef-icon-holder qodef-size--default qodef-layout--normal">
3787	        <span class="qodef-icon-ionicons ion-ios-chatboxes qodef-icon qodef-e" style="color: #fdec01;font-size: 25px"></span>    </span>				<span class="qodef-e-title-text"> [email protected]</span>
3788			</span>
3789					</a>
3790			</p>
3791</div></div>
3792</div></div>						</div>
3793									</div>
3794			</div>
3795		</div>
3796	</div>
3797	<div id="qodef-page-footer-bottom-area">
3798		<div id="qodef-page-footer-bottom-area-inner" class="qodef-content-grid">
3799			<div class="qodef-grid qodef-layout--columns qodef-responsive--custom qodef-col-num--2 qodef-col-num--768--1 qodef-col-num--680--1 qodef-col-num--480--1">
3800				<div class="qodef-grid-inner clear">
3801											<div class="qodef-grid-item">
3802							<div id="text-12" class="widget widget_text" data-area="footer_bottom_area_column_1">			<div class="textwidget"><p>© 2026 ATI Export, Tous Droits Réservés. <a href="https://goldenrod-pigeon-420491.hostingersite.com/mentions-legales/">Mentions Légales</a></p>
3803</div>
3804		</div>						</div>
3805											<div class="qodef-grid-item">
3806							<div id="stal_core_icon-11" class="widget widget_stal_core_icon" data-area="footer_bottom_area_column_2"><span class="qodef-shortcode qodef-m qodef-icon-holder qodef-size--default qodef-layout--square" data-hover-color="#fdec01" data-hover-background-color="#000000" data-hover-border-color="#ffffff" style="margin: 0 10px 0px 0;width: 40px;height: 40px;line-height: 40px;background-color: #fdec01;border-color: #ee0d08">
3807			<a itemprop="url" href="https://wa.me/33787075726" target="_blank">
3808            <span class="qodef-icon-ionicons ion-logo-whatsapp qodef-icon qodef-e" style="color: #000000;font-size: 20px" ></span>            </a>
3809	</span></div><div id="stal_core_icon-3" class="widget widget_stal_core_icon" data-area="footer_bottom_area_column_2"><span class="qodef-shortcode qodef-m qodef-icon-holder qodef-size--default qodef-layout--square" data-hover-color="#fdec01" data-hover-background-color="#000000" data-hover-border-color="#ffffff" style="margin: 0 10px 0px 0;width: 40px;height: 40px;line-height: 40px;background-color: #fdec01;border-color: #ee0d08">
3810			<a itemprop="url" href="https://web.facebook.com/profile.php?id=100036868286863#" target="_blank">
3811            <span class="qodef-icon-ionicons ion-logo-facebook qodef-icon qodef-e" style="color: #000000;font-size: 20px" ></span>            </a>
3812	</span></div><div id="stal_core_icon-4" class="widget widget_stal_core_icon" data-area="footer_bottom_area_column_2"><span class="qodef-shortcode qodef-m qodef-icon-holder qodef-size--default qodef-layout--square" data-hover-color="#fdec01" data-hover-background-color="#000000" data-hover-border-color="#ffffff" style="margin: 0 0px 0px 0;width: 40px;height: 40px;line-height: 40px;background-color: #fdec01;border-color: #ee0d08">
3813			<a itemprop="url" href="https://www.linkedin.com/company/ati-export/" target="_blank">
3814            <span class="qodef-icon-ionicons ion-logo-linkedin qodef-icon qodef-e" style="color: #000000;font-size: 20px" ></span>            </a>
3815	</span></div>						</div>
3816									</div>
3817			</div>
3818		</div>
3819	</div>
3820</footer><a id="qodef-back-to-top" href="#">
3821    <span class="qodef-back-to-top-icon">
3822		<span class="qodef-icon-elegant-icons arrow_carrot-up" ></span>    </span>
3823</a>	<div id="qodef-side-area" >
3824		<a id="qodef-side-area-close" class="qodef-side-area-close--predefined" href="javascript:void(0)">
3825			<span class="qodef-lines"><span class="qodef-line qodef-line-1"></span><span class="qodef-line qodef-line-2"></span><span class="qodef-line qodef-line-3"></span><span class="qodef-line qodef-line-4"></span><span class="qodef-line qodef-line-5"></span></span>		</a>
3826		<div id="qodef-side-area-inner">
3827			<div id="text-15" class="widget widget_text" data-area="side-area"><h3 class="qodef-widget-title">Notre localisation</h3>			<div class="textwidget"><p><span class="qodef-e-title-text">N°71 RN6, F-71260 La Salle</span></p>
3828</div>
3829		</div><div id="media_image-3" class="widget widget_media_image" data-area="side-area"><a href="https://stal.qodeinteractive.com/"><img class="image " src="https://stal.qodeinteractive.com/wp-content/uploads/2020/02/side-area-img-1.png" alt="m" width="401" height="139" decoding="async" /></a></div><div id="stal_core_separator-14" class="widget widget_stal_core_separator" data-area="side-area"><div class="qodef-shortcode qodef-m qodef-separator clear">
3830	<div class="qodef-m-line" style="border-color: rgba(255,255,255,0);border-style: solid;margin-top: 20px"></div>
3831</div></div><div id="custom_html-3" class="widget_text widget widget_custom_html" data-area="side-area"><div class="textwidget custom-html-widget"><div class="qodef-e-content qodef-grid qodef-layout--template ">
3832			<div class="qodef-grid-inner clear">
3833				<div class="qodef-grid-item qodef-col--6"><div class="qodef-icon-list-item qodef-icon--icon-pack qodef-alignment--top" style="margin-bottom: 22px;">
3834	<p class="qodef-e-title" style="line-height: 1.625em">
3835					<a itemprop="url" href="https://www.google.com/maps/place/Uniqlo+Soho/@40.7190772,-74.001693,16z/data=!4m13!1m7!3m6!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62!2sNew+York,+NY,+USA!3b1!8m2!3d40.7127753!4d-74.0059728!3m4!1s0x89c2598edb6242d3:0x4ae291a9ff31e800!8m2!3d40.7234983!4d-73.9982012" target="_blank">
3836					<span class="qodef-e-title-inner">
3837				<span class="qodef-shortcode qodef-m  qodef-icon-holder qodef-size--default qodef-layout--square" style="width: 26px;
3837height: 26px;line-height: 26px; top: 5px;">	        <span class="qodef-icon-ionicons ion-ios-add qodef-icon qodef-e" style=""></span>    </span>				<span class="qodef-e-title-text">N°71 RN6, F-71260 La Salle</span>
3838			</span>
3839					</a>
3840			</p>
3841</div>					
3842			<div class="qodef-icon-list-item qodef-icon--icon-pack qodef-alignment--top">
3843	<p class="qodef-e-title" style="line-height: 1.625em">
3844					<a itemprop="url" href="https://www.google.com/maps/place/Uniqlo+Soho/@40.7190772,-74.001693,16z/data=!4m13!1m7!3m6!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62!2sNew+York,+NY,+USA!3b1!8m2!3d40.7127753!4d-74.0059728!3m4!1s0x89c2598edb6242d3:0x4ae291a9ff31e800!8m2!3d40.7234983!4d-73.9982012" target="_blank">
3845					<span class="qodef-e-title-inner">
3846				<span class="qodef-shortcode qodef-m  qodef-icon-holder qodef-size--default qodef-layout--square" style="width: 26px;height: 26px;line-height: 26px; top: 5px;">	        <span class="qodef-icon-ionicons ion-ios-add qodef-icon qodef-e" style=""></span>    </span>				<span class="qodef-e-title-text">N°71 RN6, F-71260 La Salle</span>
3847			</span>
3848					</a>
3849			</p>
3850</div>		
3851				</div>
3852				<div class="qodef-grid-item qodef-col--6 ">
3853					
3854
3855					
3856				</div>
3857			</div>
3858		</div>
3859</div></div>		</div>
3860		<div class="qodef-side-area-bottom">
3861			<div id="stal_core_icon-9" class="widget widget_stal_core_icon" data-area="side-area-bottom"><span class="qodef-shortcode qodef-m qodef-icon-holder qodef-size--default qodef-layout--square" data-hover-background-color="#eab700" data-hover-border-color="#ffffff" style="margin: 0 10px 20px 0;width: 40px;height: 40px;line-height: 40px;border-color: #eab700">
3862			<a itemprop="url" href="https://www.facebook.com/QodeInteractive/" target="_blank">
3863            <span class="qodef-icon-ionicons ion-logo-facebook qodef-icon qodef-e" style="color: #ffffff;font-size: 20px" ></span>            </a>
3864	</span></div><div id="stal_core_icon-10" class="widget widget_stal_core_icon" data-area="side-area-bottom"><span class="qodef-shortcode qodef-m qodef-icon-holder qodef-size--default qodef-layout--square" data-hover-background-color="#eab700" data-hover-border-color="#ffffff" style="margin: 0 0px 20px 0;width: 40px;height: 40px;line-height: 40px;border-color: #c60400">
3865			<a itemprop="url" href="https://www.linkedin.com/company/ati-export/?originalSubdomain=fr" target="_blank">
3866            <span class="qodef-icon-ionicons ion-logo-linkedin qodef-icon qodef-e" style="color: #ffffff;font-size: 20px" ></span>            </a>
3867	</span></div><div id="block-9" class="widget widget_block" data-area="side-area-bottom">
3868<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
3869<p></p>
3870</blockquote>
3871</div>		</div>
3872	</div>
3873	</div><!-- close #qodef-page-wrapper div from header.php -->
3874	<template id="tp-language" data-tp-language="fr_FR"></template>
3874<script type="speculationrules">
3875{"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/stal/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
3876</script>
3876
3877<!-- Custom Facebook Feed JS -->
3878<script data-optimized="1" type="text/javascript" src="data:text/javascript;base64,dmFyIGNmZmFqYXh1cmw9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vd3AtYWRtaW4vYWRtaW4tYWpheC5waHAiO3ZhciBjZmZsaW5raGFzaHRhZ3M9InRydWUi" defer></script>
3878
3879    <div id="ati-popup-overlay">
3880        <div id="ati-popup">
3881            <button id="ati-popup-close" aria-label="Fermer">✕</button>
3882
3883            <!-- Left: image -->
3884            <div id="ati-popup-image">
3885                <img src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/uploads/2026/07/ati-logoooossss.png" alt="ATI Export Actualités" />
3886            </div>
3887
3888            <!-- Right: content -->
3889            <div id="ati-popup-content">
3890                <div id="ati-popup-eyebrow">Restez informé</div>
3891                <h2 id="ati-popup-title">Actualités<br><span>ATI Export</span></h2>
3892                <p id="ati-popup-desc">Promotions, offres spéciales, nouveaux partenaires — recevez les dernières nouvelles directement dans votre boîte mail.</p>
3893
3894                <form id="ati-popup-form" action="https://goldenrod-pigeon-420491.hostingersite.com/contact-us/" method="get" onsubmit="return atiPopupSubmit(event)">
3895                    <div id="ati-popup-input-row">
3896                        <input type="email" id="ati-popup-email" placeholder="Votre adresse e-mail" required autocomplete="email" />
3897                        <button type="submit" id="ati-popup-submit">S'inscrire →</button>
3898                    </div>
3899                   
3900                </form>
3901
3902            
3903
3904                <a href="https://goldenrod-pigeon-420491.hostingersite.com/actualites/" id="ati-popup-actu-btn">
3905                    Voir toutes les actualités →
3906                </a>
3907            </div>
3908        </div>
3909    </div>
3910
3911    <style>#ati-popup-overlay{position:fixed;inset:0;background:rgb(0 0 0 / .75);z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box;animation:atiPopupFadeIn 0.35s ease}@keyframes atiPopupFadeIn{from{opacity:0}to{opacity:1}}#ati-popup{position:relative;display:flex;width:100%;max-width:520px;min-height:260px;background:#0a0a0a;overflow:hidden;animation:atiPopupSlideUp 0.4s ease}@keyframes atiPopupSlideUp{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}#ati-popup-close{position:absolute;top:12px;right:12px;z-index:10;background:rgb(0 0 0 / .5);border:1px solid rgb(255 255 255 / .15);color:#fff;width:28px;height:28px;border-radius:50%;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.2s,border-color 0.2s;line-height:1}#ati-popup-close:hover{background:#fdec01;border-color:#fdec01;color:#000}#ati-popup-image{flex:0 0 42%;position:relative;overflow:hidden}#ati-popup-image img{width:100%;height:100%;object-fit:cover;display:block}#ati-popup-image::after{content:'';position:absolute;inset:0;background:linear-gradient(to right,transparent 60%,#0a0a0a 100%)}#ati-popup-content{flex:1;padding:32px 28px 28px 24px;display:flex;flex-direction:column;justify-content:center}#ati-popup-eyebrow{font-size:9px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:#fdec01;margin-bottom:10px}#ati-popup-title{font-size:clamp(19px, 2.6vw, 27px);font-weight:700;text-transform:uppercase;line-height:1.1;color:#fff;margin:0 0 12px;letter-spacing:-.5px}#ati-popup-title span{color:#fdec01}#ati-popup-desc{font-size:12px;line-height:1.6;color:rgb(255 255 255 / .5);margin:0 0 18px}#ati-popup-input-row{display:flex;gap:0;margin-bottom:8px;align-items:stretch}#ati-popup-email{flex:1;background:rgb(255 255 255 / .07)!important;border:1px solid rgb(255 255 255 / .15)!important;border-right:none!important;color:#fff!important;padding:0 14px!important;height:42px!important;font-size:12px!important;outline:none!important;transition:border-color 0.2s!important;box-sizing:border-box!important;border-radius:0!important;font-family:inherit!important;width:auto!important}#ati-popup-email::placeholder{color:rgb(255 255 255 / .3)}#ati-popup-email:focus{border-color:#fdec01!important}#ati-popup-submit{background:#fdec01!important;color:#000!important;border:none!important;padding:0 16px!important;height:42px!important;font-size:10px!important;font-weight:700!important;letter-spacing:1px!important;text-transform:uppercase!important;cursor:pointer!important;white-space:nowrap!important;transition:background 0.2s,color 0.2s!important;font-family:inherit!important;border-radius:0!important;display:inline-flex!important;align-items:center!important}#ati-popup-submit:hover{background:#000!important;color:#fff!important}#ati-popup-privacy{font-size:11px;color:rgb(255 255 255 / .25);margin:0 0 28px}#ati-popup-divider{height:1px;background:rgb(255 255 255 / .08);margin-bottom:24px}#ati-popup-actu-btn{display:inline-flex;align-items:center;gap:8px;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:rgb(255 255 255 / .5);text-decoration:none;transition:color 0.2s;border:1px solid rgb(255 255 255 / .12);padding:9px 16px;align-self:flex-start}#ati-popup-actu-btn:hover{color:#fdec01;border-color:#fdec01}@media (max-width:640px){#ati-popup{flex-direction:column;max-width:100%;min-height:unset}#ati-popup-image{flex:0 0 200px;height:200px}#ati-popup-image::after{background:linear-gradient(to bottom,transparent 60%,#0a0a0a 100%)}#ati-popup-content{padding:24px 20px 26px}#ati-popup-input-row{flex-direction:column}#ati-popup-email{border-right:1px solid rgb(255 255 255 / .15)!important;border-bottom:none!important;height:42px!important}#ati-popup-submit{height:42px!important;padding:0 16px!important}}</style>
3912
3913    
3913<script data-optimized="1" src="data:text/javascript;base64,KGZ1bmN0aW9uKCl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYXRpX3BvcHVwX3NlZW4nKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F0aS1wb3B1cC1vdmVybGF5Jykuc3R5bGUuZGlzcGxheT0nbm9uZSc7cmV0dXJufQpzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdGlfcG9wdXBfc2VlbicsJzEnKTt2YXIgb3ZlcmxheT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXRpLXBvcHVwLW92ZXJsYXknKTt2YXIgY2xvc2VCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F0aS1wb3B1cC1jbG9zZScpO2Z1bmN0aW9uIGNsb3NlUG9wdXAoKXtvdmVybGF5LnN0eWxlLm9wYWNpdHk9JzAnO292ZXJsYXkuc3R5bGUudHJhbnNpdGlvbj0nb3BhY2l0eSAwLjI1cyBlYXNlJztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b3ZlcmxheS5zdHlsZS5kaXNwbGF5PSdub25lJ30sMjUwKX0KY2xvc2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGNsb3NlUG9wdXApO292ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09b3ZlcmxheSljbG9zZVBvcHVwKCk7fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZnVuY3Rpb24oZSl7aWYoZS5rZXk9PT0nRXNjYXBlJyljbG9zZVBvcHVwKCk7fSl9KSgpO2Z1bmN0aW9uIGF0aVBvcHVwU3VibWl0KGUpe2UucHJldmVudERlZmF1bHQoKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXRpLXBvcHVwLWZvcm0nKS5pbm5lckhUTUw9JzxwIHN0eWxlPSJjb2xvcjojZmRlYzAxO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MDsiPuKckyBNZXJjaSAhIFZvdXMgcmVjZXZyZXogbm9zIGFjdHVhbGl0w6lzIHByb2NoYWluZW1lbnQuPC9wPid9" defer></script>
3913
3914        
3914<script data-optimized="1" src="data:text/javascript;base64,KGZ1bmN0aW9uKCl7dmFyIGNhdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0Jyk7aWYoIWNhdClyZXR1cm47dmFyIGFsbG93ZWQ9WzEsMTksMjAsMjEsMjIsMjMsMjQsMjUsMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTddO0FycmF5LmZyb20oY2F0Lm9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24ob3B0KXtpZihvcHQudmFsdWU9PT0nLTEnKXJldHVybjtpZihhbGxvd2VkLmluZGV4T2YocGFyc2VJbnQob3B0LnZhbHVlKSk9PT0tMSlvcHQucmVtb3ZlKCk7fSk7aWYod2luZG93LmpRdWVyeSYmalF1ZXJ5KGNhdCkuZGF0YSgnc2VsZWN0MicpKXtqUXVlcnkoY2F0KS50cmlnZ2VyKCdjaGFuZ2UnKX19KSgp" defer></script>
3914
3915    <!-- YouTube Feeds JS -->
3916<script data-optimized="1" type="text/javascript">
3917
3918</script>
3918
3919<!-- Instagram Feed JS -->
3920<script data-optimized="1" type="text/javascript" src="data:text/javascript;base64,dmFyIHNiaWFqYXh1cmw9Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vd3AtYWRtaW4vYWRtaW4tYWpheC5waHAi" defer></script>
3920
3921			
3921<script data-optimized="1" src="data:text/javascript;base64,Y29uc3QgbGF6eWxvYWRSdW5PYnNlcnZlcj0oKT0+e2NvbnN0IGxhenlsb2FkQmFja2dyb3VuZHM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgLmUtY29uLmUtcGFyZW50Om5vdCguZS1sYXp5bG9hZGVkKWApO2NvbnN0IGxhenlsb2FkQmFja2dyb3VuZE9ic2VydmVyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcyk9PntlbnRyaWVzLmZvckVhY2goKGVudHJ5KT0+e2lmKGVudHJ5LmlzSW50ZXJzZWN0aW5nKXtsZXQgbGF6eWxvYWRCYWNrZ3JvdW5kPWVudHJ5LnRhcmdldDtpZihsYXp5bG9hZEJhY2tncm91bmQpe2xhenlsb2FkQmFja2dyb3VuZC5jbGFzc0xpc3QuYWRkKCdlLWxhenlsb2FkZWQnKX0KbGF6eWxvYWRCYWNrZ3JvdW5kT2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCl9fSl9LHtyb290TWFyZ2luOicyMDBweCAwcHggMjAwcHggMHB4J30pO2xhenlsb2FkQmFja2dyb3VuZHMuZm9yRWFjaCgobGF6eWxvYWRCYWNrZ3JvdW5kKT0+e2xhenlsb2FkQmFja2dyb3VuZE9ic2VydmVyLm9ic2VydmUobGF6eWxvYWRCYWNrZ3JvdW5kKX0pfTtjb25zdCBldmVudHM9WydET01Db250ZW50TG9hZGVkJywnZWxlbWVudG9yL2xhenlsb2FkL29ic2VydmUnLF07ZXZlbnRzLmZvckVhY2goKGV2ZW50KT0+e2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsbGF6eWxvYWRSdW5PYnNlcnZlcil9KQ==" defer></script>
3921
3922				
3922<script data-optimized="1" type='text/javascript' src="data:text/javascript;base64,KGZ1bmN0aW9uKCl7dmFyIGM9ZG9jdW1lbnQuYm9keS5jbGFzc05hbWU7Yz1jLnJlcGxhY2UoL3dvb2NvbW1lcmNlLW5vLWpzLywnd29vY29tbWVyY2UtanMnKTtkb2N1bWVudC5ib2R5LmNsYXNzTmFtZT1jfSkoKQ==" defer></script>
3922
3923	<link data-optimized="1" rel='stylesheet' id='wc-blocks-style-css' href='https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/css/67f5815f6359bbc77764c9e1690cc881.css?ver=a7827' type='text/css' media='all' />
3924<script data-optimized="1" type="text/javascript" id="cffscripts-js-extra" src="data:text/javascript;base64,dmFyIGNmZkVsZW1lbnRvckRhdGE9eyJmZWVkcyI6W10sImZlZWRfdXJsIjoiaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1hZG1pbi9hZG1pbi5waHA/cGFnZT1jZmYtZmVlZC1idWlsZGVyIiwiaXNfcHJvX2FjdGl2ZSI6IiJ9" defer></script>
vendor: 1 bytes, line 3924
3924
3925<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/051df0f40e41d2f06d37b61c2dfae08b.js?ver=4fde3" id="cffscripts-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3925
3925
3926<script data-optimized="1" type="text/javascript" id="ctf_scripts-js-extra" src="data:text/javascript;base64,dmFyIGN0Zj17ImFqYXhfdXJsIjoiaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1hZG1pbi9hZG1pbi1hamF4LnBocCIsImkxOG4iOnsibmV3VHdlZXRzTG9hZGVkIjoiJXMgbmV3IHR3ZWV0cyBsb2FkZWQiLCJub01vcmVUd2VldHMiOiJDXHUyMDE5ZXN0IHRvdXRcdTAwYTAhIFBsdXMgZGUgdHdlZXRzIFx1MDBlMCBjaGFyZ2VyIn19O3ZhciBjdGZFbGVtZW50b3JEYXRhPXsiZmVlZHMiOltdLCJmZWVkX3VybCI6Imh0dHBzOi8vZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb20vd3AtYWRtaW4vYWRtaW4ucGhwP3BhZ2U9Y3RmLWZlZWQtYnVpbGRlciIsImlzX3Byb19hY3RpdmUiOiIifTt2YXIgY3RmPXsiYWpheF91cmwiOiJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWFkbWluL2FkbWluLWFqYXgucGhwIiwiaTE4biI6eyJuZXdUd2VldHNMb2FkZWQiOiIlcyBuZXcgdHdlZXRzIGxvYWRlZCIsIm5vTW9yZVR3ZWV0cyI6IkNcdTIwMTllc3QgdG91dFx1MDBhMCEgUGx1cyBkZSB0d2VldHMgXHUwMGUwIGNoYXJnZXIifX0=" defer></script>
vendor: 1 bytes, line 3926
3926
3927<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/9b770cac456f0181854c2d3506bf9d11.js?ver=efe5d" id="ctf_scripts-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3927
3927
3928<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/e506f614d992421780d835da41818521.js?ver=87b56" id="wp-hooks-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3928
3928
3929<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/0f348c9b267f56c943c1d89e58e2b30a.js?ver=1a9f0" id="wp-i18n-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3929
3929
3930<script data-optimized="1" type="text/javascript" id="wp-i18n-js-after" src="data:text/javascript;base64,d3AuaTE4bi5zZXRMb2NhbGVEYXRhKHsndGV4dCBkaXJlY3Rpb25cdTAwMDRsdHInOlsnbHRyJ119KQ==" defer></script>
vendor: 1 bytes, line 3930
3930
3931<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/b8329814fecdb7425e3e7191263873cc.js?ver=6ab82" id="swv-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3931
3931
3932<script data-optimized="1" type="text/javascript" id="contact-form-7-js-translations" src="data:text/javascript;base64,KGZ1bmN0aW9uKGRvbWFpbix0cmFuc2xhdGlvbnMpe3ZhciBsb2NhbGVEYXRhPXRyYW5zbGF0aW9ucy5sb2NhbGVfZGF0YVtkb21haW5dfHx0cmFuc2xhdGlvbnMubG9jYWxlX2RhdGEubWVzc2FnZXM7bG9jYWxlRGF0YVsiIl0uZG9tYWluPWRvbWFpbjt3cC5pMThuLnNldExvY2FsZURhdGEobG9jYWxlRGF0YSxkb21haW4pfSkoImNvbnRhY3QtZm9ybS03Iix7InRyYW5zbGF0aW9uLXJldmlzaW9uLWRhdGUiOiIyMDI2LTA3LTI3IDE1OjM3OjI3KzAwMDAiLCJnZW5lcmF0b3IiOiJHbG90UHJlc3NcLzQuMC4zIiwiZG9tYWluIjoibWVzc2FnZXMiLCJsb2NhbGVfZGF0YSI6eyJtZXNzYWdlcyI6eyIiOnsiZG9tYWluIjoibWVzc2FnZXMiLCJwbHVyYWwtZm9ybXMiOiJucGx1cmFscz0yOyBwbHVyYWw9biA+IDE7IiwibGFuZyI6ImZyIn0sIlRoaXMgY29udGFjdCBmb3JtIGlzIHBsYWNlZCBpbiB0aGUgd3JvbmcgcGxhY2UuIjpbIkNlIGZvcm11bGFpcmUgZGUgY29udGFjdCBlc3QgcGxhY1x1MDBlOSBkYW5zIHVuIG1hdXZhaXMgZW5kcm9pdC4iXSwiRXJyb3I6IjpbIkVycmV1clx1MDBhMDoiXX19LCJjb21tZW50Ijp7InJlZmVyZW5jZSI6ImluY2x1ZGVzXC9qc1wvaW5kZXguanMifX0p" defer></script>
vendor: 1 bytes, line 3932
3932
3933<script data-optimized="1" type="text/javascript" id="contact-form-7-js-before" src="data:text/javascript;base64,dmFyIHdwY2Y3PXsiYXBpIjp7InJvb3QiOiJodHRwczpcL1wvZ29sZGVucm9kLXBpZ2Vvbi00MjA0OTEuaG9zdGluZ2Vyc2l0ZS5jb21cL3dwLWpzb25cLyIsIm5hbWVzcGFjZSI6ImNvbnRhY3QtZm9ybS03XC92MSJ9LCJjYWNoZWQiOjF9" defer></script>
vendor: 1 bytes, line 3933
3933
3934<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/334390d3fac1509b412acfb5d677d46a.js?ver=1d7d1" id="contact-form-7-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3934
3934
3935<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/a16f8f39956c4e6f6f3dcaa7fb510b0d.js?ver=10b0d" id="hostinger-reach-embed-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 3935
3935
3936<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/a83f9e4a8a200a18224c8547dd64d09f.js?ver=a7877" id="jquery-ui-core-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3936
3936
3937<script data-optimized="1" type="text/javascript" id="qi-addons-for-elementor-script-js-extra" src="data:text/javascript;base64,dmFyIHFvZGVmUWlBZGRvbnNHbG9iYWw9eyJ2YXJzIjp7ImFkbWluQmFySGVpZ2h0IjowLCJpY29uQXJyb3dMZWZ0IjoiXHUwMDNDc3ZnICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDM0LjIgMzIuM1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgc3R5bGU9XCJzdHJva2Utd2lkdGg6IDI7XCJcdTAwM0VcdTAwM0NsaW5lIHgxPVwiMC41XCIgeTE9XCIxNlwiIHgyPVwiMzMuNVwiIHkyPVwiMTZcIi9cdTAwM0VcdTAwM0NsaW5lIHgxPVwiMC4zXCIgeTE9XCIxNi41XCIgeDI9XCIxNi4yXCIgeTI9XCIwLjdcIi9cdTAwM0VcdTAwM0NsaW5lIHgxPVwiMFwiIHkxPVwiMTUuNFwiIHgyPVwiMTYuMlwiIHkyPVwiMzEuNlwiL1x1MDAzRVx1MDAzQy9zdmdcdTAwM0UiLCJpY29uQXJyb3dSaWdodCI6Ilx1MDAzQ3N2ZyAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCAzNC4yIDMyLjNcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiIHN0eWxlPVwic3Ryb2tlLXdpZHRoOiAyO1wiXHUwMDNFXHUwMDNDbGluZSB4MT1cIjBcIiB5MT1cIjE2XCIgeDI9XCIzM1wiIHkyPVwiMTZcIi9cdTAwM0VcdTAwM0NsaW5lIHgxPVwiMTcuM1wiIHkxPVwiMC43XCIgeDI9XCIzMy4yXCIgeTI9XCIxNi41XCIvXHUwMDNFXHUwMDNDbGluZSB4MT1cIjE3LjNcIiB5MT1cIjMxLjZcIiB4Mj1cIjMzLjVcIiB5Mj1cIjE1LjRcIi9cdTAwM0VcdTAwM0Mvc3ZnXHUwMDNFIiwiaWNvbkNsb3NlIjoiXHUwMDNDc3ZnICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDkuMSA5LjFcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXHUwMDNFXHUwMDNDZ1x1MDAzRVx1MDAzQ3BhdGggZD1cIk04LjUsMEw5LDAuNkw1LjEsNC41TDksOC41TDguNSw5TDQuNSw1LjFMMC42LDlMMCw4LjVMNCw0LjVMMCwwLjZMMC42LDBMNC41LDRMOC41LDB6XCIvXHUwMDNFXHUwMDNDL2dcdTAwM0VcdTAwM0Mvc3ZnXHUwMDNFIn19" defer></script>
vendor: 1 bytes, line 3937
3937
3938<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/1a10c4d1ba1264e690a885229bdb0d68.js?ver=82695" id="qi-addons-for-elementor-script-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3938
3938
3939<script type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/plugins/stal-core/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.min.js?ver=6.9.9" id="perfect-scrollbar-js"></script>
vendor: 1 bytes, line 3939
3939
3940<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/7cac80ce3b69d2c25630f8ed7d9deb62.js?ver=016a4" id="hoverIntent-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3940
3940
3941<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/3b94744ea11e5f351209a8652c9e214c.js?ver=55655" id="jquery-easing-1.3-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3941
3941
3942<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/afc67563c1575b9ef61ccea905511f57.js?ver=7ad5a" id="modernizr-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3942
3942
3943<script data-optimized="1" type="text/javascript" id="stal-main-js-js-extra" src="data:text/javascript;base64,dmFyIHFvZGVmR2xvYmFsPXsidmFycyI6eyJhZG1pbkJhckhlaWdodCI6MCwicW9kZWZTdGlja3lIZWFkZXJTY3JvbGxBbW91bnQiOjAsInRvcEFyZWFIZWlnaHQiOjAsInJlc3RVcmwiOiJodHRwczovL2dvbGRlbnJvZC1waWdlb24tNDIwNDkxLmhvc3RpbmdlcnNpdGUuY29tL3dwLWpzb24vIiwicGFnaW5hdGlvblJlc3RSb3V0ZSI6InN0YWwvdjEvZ2V0LXBvc3RzIiwicGFnaW5hdGlvbk5vbmNlIjoiOTM0YTRhZTdiOCIsImhlYWRlckhlaWdodCI6ODYsIm1vYmlsZUhlYWRlckhlaWdodCI6NzB9fQ==" defer></script>
vendor: 1 bytes, line 3943
3943
3944<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/834532dda78009f1234520afe02326d8.js?ver=311f2" id="stal-main-js-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3944
3944
3945<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/2d690960420402743b8668c5982acb68.js?ver=0648b" id="stal-core-script-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3945
3945
3946<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/7a17bd6d3c3eba4e00ae83e6bdbcae32.js?ver=a628a" id="waitforimages-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3946
3946
3947<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/d0b8233ba2fdc8f74897d863defd86bc.js?ver=48578" id="appear-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3947
3947
3948<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/b1b22a05750635e65f17d0e33c7f4b71.js?ver=da4e9" id="swiper-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3948
3948
3949<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/91e860846bbf24595857286569f5e57f.js?ver=6d123" id="magnific-popup-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3949
3949
3950<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/10812ff7ec0244010cb7bc6bb068160b.js?ver=96693" id="sourcebuster-js-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3950
3950
3951<script data-optimized="1" type="text/javascript" id="wc-order-attribution-js-extra" src="data:text/javascript;base64,dmFyIHdjX29yZGVyX2F0dHJpYnV0aW9uPXsicGFyYW1zIjp7ImxpZmV0aW1lIjoxLjBlLTUsInNlc3Npb24iOjMwLCJiYXNlNjQiOiExLCJhamF4dXJsIjoiaHR0cHM6Ly9nb2xkZW5yb2QtcGlnZW9uLTQyMDQ5MS5ob3N0aW5nZXJzaXRlLmNvbS93cC1hZG1pbi9hZG1pbi1hamF4LnBocCIsInByZWZpeCI6IndjX29yZGVyX2F0dHJpYnV0aW9uXyIsImFsbG93VHJhY2tpbmciOiEwfSwiZmllbGRzIjp7InNvdXJjZV90eXBlIjoiY3VycmVudC50eXAiLCJyZWZlcnJlciI6ImN1cnJlbnRfYWRkLnJmIiwidXRtX2NhbXBhaWduIjoiY3VycmVudC5jbXAiLCJ1dG1fc291cmNlIjoiY3VycmVudC5zcmMiLCJ1dG1fbWVkaXVtIjoiY3VycmVudC5tZG0iLCJ1dG1fY29udGVudCI6ImN1cnJlbnQuY250IiwidXRtX2lkIjoiY3VycmVudC5pZCIsInV0bV90ZXJtIjoiY3VycmVudC50cm0iLCJ1dG1fc291cmNlX3BsYXRmb3JtIjoiY3VycmVudC5wbHQiLCJ1dG1fY3JlYXRpdmVfZm9ybWF0IjoiY3VycmVudC5mbXQiLCJ1dG1fbWFya2V0aW5nX3RhY3RpYyI6ImN1cnJlbnQudGN0Iiwic2Vzc2lvbl9lbnRyeSI6ImN1cnJlbnRfYWRkLmVwIiwic2Vzc2lvbl9zdGFydF90aW1lIjoiY3VycmVudF9hZGQuZmQiLCJzZXNzaW9uX3BhZ2VzIjoic2Vzc2lvbi5wZ3MiLCJzZXNzaW9uX2NvdW50IjoidWRhdGEudnN0IiwidXNlcl9hZ2VudCI6InVkYXRhLnVhZyJ9fQ==" defer></script>
vendor: 1 bytes, line 3951
3951
3952<script data-optimized="1" type="text/javascript" src="https://goldenrod-pigeon-420491.hostingersite.com/wp-content/litespeed/js/10fc19a608d53d7e7d7fd9b6dd7af6ee.js?ver=30f90" id="wc-order-attribution-js" defer data-deferred="1"></script>
vendor: 1 bytes, line 3952
3952
3953<script id="wp-emoji-settings" type="application/json">
3954{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://goldenrod-pigeon-420491.hostingersite.com/wp-includes/js/wp-emoji-release.min.js?ver=6.9.9"}}
3955</script>
vendor: 1 bytes, line 3955
3955
3956<script type="module">
3957/* <![CDATA[ */
3958/*! This file is auto-generated */
3959var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
3960//# sourceURL=https://goldenrod-pigeon-420491.hostingersite.com/wp-includes/js/wp-emoji-loader.min.js
3961/* ]]> */
3962</script>
3962
3963</body>
3964</html>
3965
3966<!-- Page cached by LiteSpeed Cache 7.9.1 on 2026-10-03 04:25:26 -->

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.