PageSourceSearch

https://kyn-care.com/src/components/CookieConsent.tsx

js kyn-care.com collected 2026-10-08 11:36:32 UTC 28,405 bytes, 340 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/CookieConsent.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=9ce4103e"; const Fragment = __vite__cjsImport0_react_jsxDevRuntime["Fragment"]; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"];
2import RefreshRuntime from "/@react-refresh";
3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope;
4let prevRefreshReg;
5let prevRefreshSig;
6if (import.meta.hot && !inWebWorker) {
7  if (!window.__vite_plugin_react_preamble_installed__) {
8    throw new Error("@vitejs/plugin-react can't detect preamble. Something is wrong. See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201");
9  }
10  prevRefreshReg = window.$RefreshReg$;
11  prevRefreshSig = window.$RefreshSig$;
12  window.$RefreshReg$ = (type, id) => {
13    RefreshRuntime.register(type, "/home/runner/workspace/client/src/components/CookieConsent.tsx " + id);
14  };
15  window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
16}
17var _s = $RefreshSig$();
18import __vite__cjsImport3_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=9ce4103e"; const useState = __vite__cjsImport3_react["useState"]; const useEffect = __vite__cjsImport3_react["useEffect"];
19import { X } from "/@fs/home/runner/workspace/node_modules/.vite/deps/lucide-react.js?v=9ce4103e";
20import CookieSettingsPanel from "/src/components/CookieSettingsPanel.tsx";
21import { useLanguage } from "/src/lib/LanguageContext.tsx";
22const CookieConsent = () => {
23  _s();
24  const { language } = useLanguage();
25  const [isVisible, setIsVisible] = useState(false);
26  const [showCookiePanel, setShowCookiePanel] = useState(false);
27  const [hasConsent, setHasConsent] = useState(() => {
28    return !!localStorage.getItem("kyn_cookie_consent");
29  });
30  useEffect(() => {
31    if (!hasConsent) {
32      setTimeout(() => {
33        setIsVisible(true);
34      }, 800);
35    }
36  }, [hasConsent]);
37  useEffect(() => {
38    if (isVisible) {
39      document.body.style.overflow = "hidden";
40    } else {
41      document.body.style.overflow = "";
42    }
43    return () => {
44      document.body.style.overflow = "";
45    };
46  }, [isVisible]);
47  const handleAccept = () => {
48    localStorage.setItem("kyn_cookie_consent", "accepted");
49    setHasConsent(true);
50    setIsVisible(false);
51  };
52  const handleOpenPreferences = () => {
53    setShowCookiePanel(true);
54  };
55  const handleCloseCookiePanel = () => {
56    setShowCookiePanel(false);
57  };
58  const handleCookieDecisionMade = () => {
59    setHasConsent(true);
60    setIsVisible(false);
61    setShowCookiePanel(false);
62  };
63  if (!isVisible) return null;
64  return /* @__PURE__ */ jsxDEV(Fragment, { children: [
65    /* @__PURE__ */ jsxDEV(
66      "div",
67      {
68        className: "fixed inset-0 z-[998]",
69        style: {
70          backgroundColor: "rgba(0, 0, 0, 0.4)",
71          animation: "fadeIn 0.4s ease-out"
72        }
73      },
74      void 0,
75      false,
76      {
77        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
78        lineNumber: 58,
79        columnNumber: 7
80      },
81      this
82    ),
83    /* @__PURE__ */ jsxDEV(
84      "div",
85      {
86        className: "fixed bottom-0 left-0 right-0 z-[999]",
87        style: {
88          animation: "slideUp 0.5s ease-out"
89        },
90        children: [
91          /* @__PURE__ */ jsxDEV("style", { children: `
92          @keyframes slideUp {
93            from {
94              transform: translateY(100%);
95              opacity: 0;
96            }
97            to {
98              transform: translateY(0);
99              opacity: 1;
100            }
101          }
102          @keyframes fadeIn {
103            from { opacity: 0; }
104            to { opacity: 1; }
105          }
106        ` }, void 0, false, {
107            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
108            lineNumber: 72,
109            columnNumber: 9
110          }, this),
111          /* @__PURE__ */ jsxDEV(
112            "div",
113            {
114              className: "w-full bg-white px-4 md:px-12 lg:px-20 py-4 md:py-6",
115              style: {
116                boxShadow: "0 -2px 20px rgba(0, 0, 0, 0.08)",
117                fontFamily: "Helvetica, Arial, sans-serif",
118                borderTop: "1px solid #E5E5E5"
119              },
120              children: /* @__PURE__ */ jsxDEV("div", { className: "max-w-7xl mx-auto", children: /* @__PURE__ */ jsxDEV("div", { className: "flex flex-col md:flex-row md:items-center md:justify-between gap-3 md:gap-8", children: [
121                /* @__PURE__ */ jsxDEV("div", { className: "flex-1", children: /* @__PURE__ */ jsxDEV("div", { className: "flex items-start justify-between gap-2", children: [
122                  /* @__PURE__ */ jsxDEV(
123                    "p",
124                    {
125                      className: "text-xs md:text-sm leading-relaxed",
126                      style: { fontWeight: 300, color: "#1A1A1A" },
127                      children: [
128                        language === "fr" ? "KYN utilise des cookies pour vous offrir la meilleure expérience. " : "KYN uses cookies for the best experience. ",
129                        /* @__PURE__ */ jsxDEV(
130                          "a",
131                          {
132                            href: "/cookies",
133                            className: "underline hover:opacity-60 transition-opacity",
134                            style: { textUnderlineOffset: "2px" },
135                            children: language === "fr" ? "En savoir plus" : "Learn more"
136                          },
137                          void 0,
138                          false,
139                          {
140                            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
141                            lineNumber: 111,
142                            columnNumber: 21
143                          },
144                          this
145                        )
146                      ]
147                    },
148                    void 0,
149                    true,
150                    {
151                      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
152                      lineNumber: 104,
153                      columnNumber: 19
154                    },
155                    this
156                  ),
157                  /* @__PURE__ */ jsxDEV(
158                    "button",
159                    {
160                      onClick: handleAccept,
161                      className: "p-1 hover:opacity-60 transition-opacity md:hidden flex-shrink-0",
162                      "aria-label": "Close",
163                      children: /* @__PURE__ */ jsxDEV(X, { size: 16, strokeWidth: 1, color: "#1A1A1A" }, void 0, false, {
164                        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
165                        lineNumber: 124,
166                        columnNumber: 21
167                      }, this)
168                    },
169                    void 0,
170                    false,
171                    {
172                      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
173                      lineNumber: 119,
174                      columnNumber: 19
175                    },
176                    this
177                  )
178                ] }, void 0, true, {
179                  fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
180                  lineNumber: 103,
181                  columnNumber: 17
182                }, this) }, void 0, false, {
183                  fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
184                  lineNumber: 102,
185                  columnNumber: 15
186                }, this),
187                /* @__PURE__ */ jsxDEV("div", { className: "flex flex-row gap-2 md:gap-3 md:flex-shrink-0", children: [
188                  /* @__PURE__ */ jsxDEV(
189                    "button",
190                    {
191                      onClick: handleAccept,
192                      className: "px-4 md:px-8 py-2 md:py-3 uppercase transition-all duration-300 hover:opacity-80",
193                      style: {
194                        backgroundColor: "#1A1A1A",
195                        color: "#FFFFFF",
196                        fontSize: "10px",
197                        fontWeight: 400,
198                        letterSpacing: "1px",
199                        border: "none",
200                        whiteSpace: "nowrap"
201                      },
202                      "data-testid": "button-accept-cookies",
203                      children: language === "fr" ? "ACCEPTER" : "ACCEPT"
204                    },
205                    void 0,
206                    false,
207                    {
208                      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
209                      lineNumber: 131,
210                      columnNumber: 17
211                    },
212                    this
213                  ),
214                  /* @__PURE__ */ jsxDEV(
215                    "button",
216                    {
217                      onClick: handleOpenPreferences,
218                      className: "px-4 md:px-8 py-2 md:py-3 uppercase transition-all duration-300 hover:bg-gray-50",
219                      style: {
220                        backgroundColor: "transparent",
221                        color: "#1A1A1A",
222                        fontSize: "10px",
223                        fontWeight: 400,
224                        letterSpacing: "1px",
225                        border: "1px solid #1A1A1A",
226                        whiteSpace: "nowrap"
227                      },
228                      "data-testid": "button-cookie-preferences",
229                      children: language === "fr" ? "PRÉFÉRENCES" : "PREFERENCES"
230                    },
231                    void 0,
232                    false,
233                    {
234                      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
235                      lineNumber: 148,
236                      columnNumber: 17
237                    },
238                    this
239                  )
240                ] }, void 0, true, {
241                  fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
242                  lineNumber: 130,
243                  columnNumber: 15
244                }, this),
245                /* @__PURE__ */ jsxDEV(
246                  "button",
247                  {
248                    onClick: handleAccept,
249                    className: "hidden md:flex p-1 hover:opacity-60 transition-opacity flex-shrink-0",
250                    "aria-label": "Close",
251                    children: /* @__PURE__ */ jsxDEV(X, { size: 20, strokeWidth: 1, color: "#1A1A1A" }, void 0, false, {
252                      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
253                      lineNumber: 172,
254                      columnNumber: 17
255                    }, this)
256                  },
257                  void 0,
258                  false,
259                  {
260                    fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
261                    lineNumber: 167,
262                    columnNumber: 15
263                  },
264                  this
265                )
266              ] }, void 0, true, {
267                fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
268                lineNumber: 100,
269                columnNumber: 13
270              }, this) }, void 0, false, {
271                fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
272                lineNumber: 98,
273                columnNumber: 11
274              }, this)
275            },
276            void 0,
277            false,
278            {
279              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
280              lineNumber: 90,
281              columnNumber: 9
282            },
283            this
284          ),
285          /* @__PURE__ */ jsxDEV(
286            CookieSettingsPanel,
287            {
288              isOpen: showCookiePanel,
289              onClose: handleCloseCookiePanel,
290              onDecisionMade: handleCookieDecisionMade
291            },
292            void 0,
293            false,
294            {
295              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
296              lineNumber: 179,
297              columnNumber: 9
298            },
299            this
300          )
301        ]
302      },
303      void 0,
304      true,
305      {
306        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
307        lineNumber: 66,
308        columnNumber: 7
309      },
310      this
311    )
312  ] }, void 0, true, {
313    fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
314    lineNumber: 56,
315    columnNumber: 5
316  }, this);
317};
318_s(CookieConsent, "PD2IdRuVIsFZcD/uflAGXcYTYjA=", false, function() {
319  return [useLanguage];
320});
321_c = CookieConsent;
322export default CookieConsent;
323var _c;
324$RefreshReg$(_c, "CookieConsent");
325if (import.meta.hot && !inWebWorker) {
326  window.$RefreshReg$ = prevRefreshReg;
327  window.$RefreshSig$ = prevRefreshSig;
328}
329if (import.meta.hot && !inWebWorker) {
330  RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
331    RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/components/CookieConsent.tsx", currentExports);
332    import.meta.hot.accept((nextExports) => {
333      if (!nextExports) return;
334      const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/components/CookieConsent.tsx", currentExports, nextExports);
335      if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
336    });
337  });
338}
339
340//# sourceMappingURL=data:application/json;base64,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VO0FBQUEsb0JBQ1YsY0FBVztBQUFBLG9CQUVYLGlDQUFDLEtBQUUsTUFBTSxJQUFJLGFBQWEsR0FBRyxPQUFNLGFBQW5DO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkJBQTRDO0FBQUE7QUFBQSxrQkFMOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQU1BO0FBQUEsbUJBekVGO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBMEVBLEtBNUVGO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBNkVBO0FBQUE7QUFBQSxZQXJGRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFzRkE7QUFBQSxVQUdBO0FBQUEsWUFBQztBQUFBO0FBQUEsY0FDQyxRQUFRWDtBQUFBQSxjQUNSLFNBQVNjO0FBQUFBLGNBQ1QsZ0JBQWdCQztBQUFBQTtBQUFBQSxZQUhsQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFHMkM7QUFBQTtBQUFBO0FBQUEsTUFwSDdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQXNIQTtBQUFBLE9BaElGO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FpSUE7QUFFSjtBQUFFcEIsR0FyTElELGVBQXVCO0FBQUEsVUFDTkQsV0FBVztBQUFBO0FBQUFtQyxLQUQ1QmxDO0FBdUxOLGVBQWVBO0FBQWMsSUFBQWtDO0FBQUFDLGFBQUFELElBQUEiLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJYIiwiQ29va2llU2V0dGluZ3NQYW5lbCIsInVzZUxhbmd1YWdlIiwiQ29va2llQ29uc2VudCIsIl9zIiwibGFuZ3VhZ2UiLCJpc1Zpc2libGUiLCJzZXRJc1Zpc2libGUiLCJ1c2VTdGF0ZSIsInNob3dDb29raWVQYW5lbCIsInNldFNob3dDb29raWVQYW5lbCIsImhhc0NvbnNlbnQiLCJzZXRIYXNDb25zZW50IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInNldFRpbWVvdXQiLCJkb2N1bWVudCIsImJvZHkiLCJzdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlQWNjZXB0Iiwic2V0SXRlbSIsImhhbmRsZU9wZW5QcmVmZXJlbmNlcyIsImhhbmRsZUNsb3NlQ29va2llUGFuZWwiLCJoYW5kbGVDb29raWVEZWNpc2lvbk1hZGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJhbmltYXRpb24iLCJib3hTaGFkb3ciLCJmb250RmFtaWx5IiwiYm9yZGVyVG9wIiwiZm9udFdlaWdodCIsImNvbG9yIiwidGV4dFVuZGVybGluZU9mZnNldCIsImZvbnRTaXplIiwibGV0dG
340VyU3BhY2luZyIsImJvcmRlciIsIndoaXRlU3BhY2UiLCJfYyIsIiRSZWZyZXNoUmVnJCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJDb29raWVDb25zZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgQ29va2llU2V0dGluZ3NQYW5lbCBmcm9tICcuL0Nvb2tpZVNldHRpbmdzUGFuZWwnO1xuaW1wb3J0IHsgdXNlTGFuZ3VhZ2UgfSBmcm9tICcuLi9saWIvTGFuZ3VhZ2VDb250ZXh0JztcblxuY29uc3QgQ29va2llQ29uc2VudDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgbGFuZ3VhZ2UgfSA9IHVzZUxhbmd1YWdlKCk7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldElzVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93Q29va2llUGFuZWwsIHNldFNob3dDb29raWVQYW5lbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtoYXNDb25zZW50LCBzZXRIYXNDb25zZW50XSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3luX2Nvb2tpZV9jb25zZW50Jyk7XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFoYXNDb25zZW50KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0SXNWaXNpYmxlKHRydWUpO1xuICAgICAgfSwgODAwKTtcbiAgICB9XG4gIH0sIFtoYXNDb25zZW50XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICBkb2
340N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlXSk7XG5cbiAgY29uc3QgaGFuZGxlQWNjZXB0ID0gKCkgPT4ge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdreW5fY29va2llX2NvbnNlbnQnLCAnYWNjZXB0ZWQnKTtcbiAgICBzZXRIYXNDb25zZW50KHRydWUpO1xuICAgIHNldElzVmlzaWJsZShmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlblByZWZlcmVuY2VzID0gKCkgPT4ge1xuICAgIHNldFNob3dDb29raWVQYW5lbCh0cnVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbG9zZUNvb2tpZVBhbmVsID0gKCkgPT4ge1xuICAgIHNldFNob3dDb29raWVQYW5lbChmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ29va2llRGVjaXNpb25NYWRlID0gKCkgPT4ge1xuICAgIHNldEhhc0NvbnNlbnQodHJ1ZSk7XG4gICAgc2V0SXNWaXNpYmxlKGZhbHNlKTtcbiAgICBzZXRTaG93Q29va2llUGFuZWwoZmFsc2UpO1xuICB9O1xuXG4gIGlmICghaXNWaXNpYmxlKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7LyogRGFyayBvdmVybGF5ICovfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmaXhlZCBpbnNldC0wIHotWzk5OF1cIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC40KScsXG4gICAgICAgICAgYW5pbWF0aW9uOiAnZmFkZUluIDAuNHMgZWFzZS1vdXQnXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIHotWzk5OV1cIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGFuaW1hdGlvbjogJ3NsaWRlVXAgMC41cyBlYXNlLW91dCdcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPHN0eWxlPntgXG4gICAgICAgICAgQGtleWZyYW1lcyBzbGlkZVVwIHtcbiAgICAgICAgICAgIGZyb20ge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0byB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGtleWZyYW1lcyBmYWRlSW4ge1xuICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cbiAgICAgICAgICAgIHRvIHsgb3BhY2l0eTogMTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgYH08L3N0eWxlPlxuXG4gICAgICAgIHsvKiBGdWxsLXdpZHRoIGhvcml6b250YWwgYmFubmVyIC0gY29tcGFjdCBvbiBtb2JpbGUgKi99XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctd2hpdGUgcHgtNCBtZDpweC0xMiBsZzpweC0yMCBweS00IG1kOnB5LTZcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBib3hTaGFkb3c6ICcwIC0ycHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDgpJyxcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgIGJvcmRlclRvcDogJzFweCBzb2xpZCAjRTVFNUU1J1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICB7LyogRGVza3RvcDogSG9yaXpvbnRhbCBsYXlvdXQgLyBNb2JpbGU6IENvbXBhY3Qgc3RhY2tlZCBsYXlvdXQgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlbiBnYXAtMyBtZDpnYXAtOFwiPlxuICAgICAgICAgICAgICB7LyogTGVmdCBzaWRlOiBEZXNjcmlwdGlvbiAobm8gdGl0bGUgb24gbW9iaWxlIHRvIHNhdmUgc3BhY2UpICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgbWQ6dGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBmb250V2VpZ2h0OiAzMDAsIGNvbG9yOiAnIzFBMUExQScgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2xhbmd1YWdlID09PSAnZnInIFxuICAgICAgICAgICAgICAgICAgICAgID8gXCJLWU4gdXRpbGlzZSBkZXMgY29va2llcyBwb3VyIHZvdXMgb2ZmcmlyIGxhIG1laWxsZXVyZSBleHDDqXJpZW5jZS4gXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiS1lOIHVzZXMgY29va2llcyBmb3IgdGhlIGJlc3QgZXhwZXJpZW5jZS4gXCJ9XG4gICAgICAgICAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvY29va2llc1wiIFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInVuZGVybGluZSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgdGV4dFVuZGVybGluZU9mZnNldDogJzJweCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdFbiBzYXZvaXIgcGx1cycgOiAnTGVhcm4gbW9yZSd9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWNjZXB0fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwLTEgaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHkgbWQ6aGlkZGVuIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gc3Ryb2tlV2lkdGg9ezF9IGNvbG9yPVwiIzFBMUExQVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIFJpZ2h0IHNpZGU6IEJ1dHRvbnMgLSBob3Jpem9udGFsIG9uIG1vYmlsZSB0b28gKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBtZDpnYXAtMyBtZDpmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWNjZXB0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtNCBtZDpweC04IHB5LTIgbWQ6cHktMyB1cHBlcmNhc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGhvdmVyOm9wYWNpdHktODBcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzFBMUExQScsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI0ZGRkZGRicsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJzFweCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYnV0dG9uLWFjY2VwdC1jb29raWVzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7bGFuZ3VhZ2UgPT09ICdmcicgPyAnQUNDRVBURVInIDogJ0FDQ0VQVCd9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVuUHJlZmVyZW5jZXN9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJweC00IG1kOnB4LTggcHktMiBtZDpweS0zIHVwcGVyY2FzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgaG92ZXI6YmctZ3JheS01MFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k
340Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzFBMUExQScsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJzFweCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjMUExQTFBJyxcbiAgICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImJ1dHRvbi1jb29raWUtcHJlZmVyZW5jZXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdQUsOJRsOJUkVOQ0VTJyA6ICdQUkVGRVJFTkNFUyd9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEZXNrdG9wIGNsb3NlIGJ1dHRvbiAqL31cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFjY2VwdH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBwLTEgaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHkgZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezIwfSBzdHJva2VXaWR0aD17MX0gY29sb3I9XCIjMUExQTFBXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIENvb2tpZSBTZXR0aW5ncyBQYW5lbCAqL31cbiAgICAgICAgPENvb2tpZVNldHRpbmdzUGFuZWwgXG4gICAgICAgICAgaXNPcGVuPXtzaG93Q29va2llUGFuZWx9IFxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlQ29va2llUGFuZWx9IFxuICAgICAgICAgIG9uRGVjaXNpb25NYWRlPXtoYW5kbGVDb29raWVEZWNpc2lvbk1hZGV9IFxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb29raWVDb25zZW50O1xuIl0sImZpbGUiOiIvaG9tZS9ydW5uZXIvd29ya3NwYWNlL2NsaWVudC9zcmMvY29tcG9uZW50cy9Db29raWVDb25zZW50LnRzeCJ9

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.