PageSourceSearch

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

js kyn-care.com collected 2026-10-08 11:37:11 UTC 32,124 bytes, 365 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/WaitlistModal.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=9ce4103e"; 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/WaitlistModal.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"];
19import { X } from "/@fs/home/runner/workspace/node_modules/.vite/deps/lucide-react.js?v=9ce4103e";
20import { useMutation } from "/@fs/home/runner/workspace/node_modules/.vite/deps/@tanstack_react-query.js?v=9ce4103e";
21import { apiRequest } from "/src/lib/queryClient.ts";
22import { useToast } from "/src/hooks/use-toast.ts";
23import { useLanguage } from "/src/lib/LanguageContext.tsx";
24import { useModalLock } from "/src/hooks/useModalLock.ts";
25const WaitlistModal = ({ isOpen, onClose }) => {
26  _s();
27  const [email, setEmail] = useState("");
28  const { toast } = useToast();
29  const { t, language } = useLanguage();
30  useModalLock(isOpen);
31  const waitlistMutation = useMutation({
32    mutationFn: async (email2) => {
33      return await apiRequest("/api/waitlist", {
34        method: "POST",
35        data: { email: email2, source: "waitlist", language }
36      });
37    },
38    onSuccess: () => {
39      toast({
40        title: "Welcome to the waitlist!",
41        description: "You'll be the first to know when we relaunch."
42      });
43      setEmail("");
44      onClose();
45    },
46    onError: (error) => {
47      if (error.message?.includes("already on the waitlist")) {
48        toast({
49          title: "Already with us",
50          description: "This email is already part of our community.",
51          variant: "elegant"
52        });
53      } else {
54        toast({
55          title: "Something went wrong",
56          description: "Please try again later.",
57          variant: "elegant"
58        });
59      }
60    }
61  });
62  const handleSubmit = (e) => {
63    e.preventDefault();
64    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
65    if (!email || !emailRegex.test(email)) {
66      toast({
67        title: "Invalid email",
68        description: "Please enter a valid email address.",
69        variant: "destructive"
70      });
71      return;
72    }
73    waitlistMutation.mutate(email);
74  };
75  if (!isOpen) return null;
76  return /* @__PURE__ */ jsxDEV(
77    "div",
78    {
79      className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/30 backdrop-blur-sm animate-in fade-in duration-500",
80      onClick: onClose,
81      "data-modal-container": true,
82      children: [
83        /* @__PURE__ */ jsxDEV(
84          "div",
85          {
86            className: "relative bg-white w-full max-w-2xl overflow-y-auto shadow-2xl",
87            onClick: (e) => e.stopPropagation(),
88            style: {
89              fontFamily: "Helvetica, Arial, sans-serif",
90              animation: "slideUp 0.4s ease-out",
91              borderRadius: "0",
92              maxHeight: "min(90vh, 100%)"
93            },
94            "data-modal-scrollable": true,
95            children: /* @__PURE__ */ jsxDEV("div", { className: "p-12 md:p-16", children: [
96              /* @__PURE__ */ jsxDEV(
97                "button",
98                {
99                  onClick: onClose,
100                  className: "absolute top-6 right-6 p-2 hover:opacity-60 transition-opacity z-10 bg-white/80",
101                  "aria-label": "Close modal",
102                  "data-testid": "button-close-modal",
103                  children: /* @__PURE__ */ jsxDEV(X, { size: 20, style: { color: "#1A1A1A" }, strokeWidth: 1 }, void 0, false, {
104                    fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
105                    lineNumber: 96,
106                    columnNumber: 13
107                  }, this)
108                },
109                void 0,
110                false,
111                {
112                  fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
113                  lineNumber: 90,
114                  columnNumber: 11
115                },
116                this
117              ),
118              /* @__PURE__ */ jsxDEV("div", { className: "text-center max-w-xl mx-auto", children: [
119                /* @__PURE__ */ jsxDEV(
120                  "h2",
121                  {
122                    className: "text-2xl md:text-3xl mb-6",
123                    style: {
124                      fontFamily: "Helvetica, Arial, sans-serif",
125                      fontWeight: 400,
126                      color: "#1A1A1A",
127                      letterSpacing: "3px",
128                      lineHeight: 1.3
129                    },
130                    children: t("waitlistHeadline")
131                  },
132                  void 0,
133                  false,
134                  {
135                    fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
136                    lineNumber: 102,
137                    columnNumber: 11
138                  },
139                  this
140                ),
141                /* @__PURE__ */ jsxDEV("div", { className: "max-w-md mx-auto mb-10", children: [
142                  /* @__PURE__ */ jsxDEV(
143                    "p",
144                    {
145                      className: "text-sm md:text-base leading-relaxed mb-4",
146                      style: {
147                        fontFamily: "Helvetica, Arial, sans-serif",
148                        fontWeight: 300,
149                        color: "#1A1A1A",
150                        lineHeight: 1.7
151                      },
152                      children: t("waitlistSubtext1")
153                    },
154                    void 0,
155                    false,
156                    {
157                      fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
158                      lineNumber: 117,
159                      columnNumber: 13
160                    },
161                    this
162                  ),
163                  /* @__PURE__ */ jsxDEV(
164                    "p",
165                    {
166                      className: "text-sm md:text-base leading-relaxed",
167                      style: {
168                        fontFamily: "Helvetica, Arial, sans-serif",
169                        fontWeight: 300,
170                        color: "#1A1A1A",
171                        lineHeight: 1.7
172                      },
173                      children: t("waitlistSubtext2")
174                    },
175                    void 0,
176                    false,
177                    {
178                      fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
179                      lineNumber: 128,
180                      columnNumber: 13
181                    },
182                    this
183                  )
184                ] }, void 0, true, {
185                  fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
186                  lineNumber: 116,
187                  columnNumber: 11
188                }, this),
189                /* @__PURE__ */ jsxDEV("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
190                  /* @__PURE__ */ jsxDEV("div", { children: /* @__PURE__ */ jsxDEV(
191                    "input",
192                    {
193                      type: "email",
194                      value: email,
195                      onChange: (e) => setEmail(e.target.value),
196                      placeholder: t("waitlistPlaceholder"),
197                      required: true,
198                      autoComplete: "email",
199                      className: "w-full px-6 py-4 border text-center text-sm md:text-base focus:outline-none focus:ring-1 transition-all",
200                      style: {
201                        borderColor: "#1A1A1A",
202                        fontFamily: "Helvetica, Arial, sans-serif",
203                        fontWeight: 300,
204                        color: "#1A1A1A",
205                        borderRadius: "0"
206                      },
207                      onFocus: (e) => {
208                        e.target.style.borderColor = "#1A1A1A";
209                        e.target.style.borderWidth = "1px";
210                      },
211                      onBlur: (e) => {
212                        e.target.style.borderColor = "#1A1A1A";
213                      },
214                      "data-testid": "input-waitlist-email"
215                    },
216                    void 0,
217                    false,
218                    {
219                      fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
220                      lineNumber: 144,
221                      columnNumber: 15
222                    },
223                    this
224                  ) }, void 0, false, {
225                    fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
226                    lineNumber: 143,
227                    columnNumber: 13
228                  }, this),
229                  /* @__PURE__ */ jsxDEV("div", { className: "space-y-3", children: [
230                    /* @__PURE__ */ jsxDEV(
231                      "button",
232                      {
233                        type: "submit",
234                        disabled: waitlistMutation.isPending,
235                        className: "w-full py-4 px-8 uppercase tracking-wider text-sm font-light transition-all duration-500",
236                        style: {
237                          backgroundColor: "#1A1A1A",
238                          color: "#FFFFFF",
239                          fontFamily: "Helvetica, Arial, sans-serif",
240                          fontWeight: 300,
241                          letterSpacing: "3px",
242                          borderRadius: "0"
243                        },
244                        onMouseEnter: (e) => {
245                          const target = e.target;
246                          target.style.backgroundColor = "#333333";
247                        },
248                        onMouseLeave: (e) => {
249                          const target = e.target;
250                          target.style.backgroundColor = "#1A1A1A";
251                        },
252                        "data-testid": "button-join-waitlist",
253                        children: waitlistMutation.isPending ? t("waitlistJoining") : t("waitlistButton")
254                      },
255                      void 0,
256                      false,
257                      {
258                        fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
259                        lineNumber: 172,
260                        columnNumber: 15
261                      },
262                      this
263                    ),
264                    /* @__PURE__ */ jsxDEV(
265                      "p",
266                      {
267                        className: "text-xs",
268                        style: {
269                          fontFamily: "Helvetica, Arial, sans-serif",
270                          fontWeight: 300,
271                          color: "#1A1A1A",
272                          opacity: 0.6
273                        },
274                        children: t("waitlistCta")
275                      },
276                      void 0,
277                      false,
278                      {
279                        fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
280                        lineNumber: 196,
281                        columnNumber: 15
282                      },
283                      this
284                    )
285                  ] }, void 0, true, {
286                    fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
287                    lineNumber: 171,
288                    columnNumber: 13
289                  }, this)
290                ] }, void 0, true, {
291                  fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
292                  lineNumber: 142,
293                  columnNumber: 11
294                }, this)
295              ] }, void 0, true, {
296                fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
297                lineNumber: 100,
298                columnNumber: 11
299              }, this)
300            ] }, void 0, true, {
301              fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
302              lineNumber: 88,
303              columnNumber: 9
304            }, this)
305          },
306          void 0,
307          false,
308          {
309            fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
310            lineNumber: 77,
311            columnNumber: 7
312          },
313          this
314        ),
315        /* @__PURE__ */ jsxDEV("style", { children: `
316        @keyframes slideUp {
317          from {
318            opacity: 0;
319            transform: translateY(20px);
320          }
321          to {
322            opacity: 1;
323            transform: translateY(0);
324          }
325        }
326      ` }, void 0, false, {
327          fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
328          lineNumber: 213,
329          columnNumber: 7
330        }, this)
331      ]
332    },
333    void 0,
334    true,
335    {
336      fileName: "/home/runner/workspace/client/src/components/WaitlistModal.tsx",
337      lineNumber: 72,
338      columnNumber: 5
339    },
340    this
341  );
342};
343_s(WaitlistModal, "QEZIJJjM4ZN+q9G7MnXeTtI43XE=", false, function() {
344  return [useToast, useLanguage, useModalLock, useMutation];
345});
346_c = WaitlistModal;
347export default WaitlistModal;
348var _c;
349$RefreshReg$(_c, "WaitlistModal");
350if (import.meta.hot && !inWebWorker) {
351  window.$RefreshReg$ = prevRefreshReg;
352  window.$RefreshSig$ = prevRefreshSig;
353}
354if (import.meta.hot && !inWebWorker) {
355  RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
356    RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/components/WaitlistModal.tsx", currentExports);
357    import.meta.hot.accept((nextExports) => {
358      if (!nextExports) return;
359      const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/components/WaitlistModal.tsx", currentExports, nextExports);
360      if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
361    });
362  });
363}
364
365//# sourceMappingURL=data:application/json;base64,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UFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQVI7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQVdFO0FBQUE7QUFBQTtBQUFBLElBeEpKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXlKQTtBQUVKO0FBQUVKLEdBck5JSCxlQUEyQztBQUFBLFVBRTdCSCxVQUNNQyxhQUN4QkMsY0FFeUJKLFdBQVc7QUFBQTtBQUFBa0QsS0FOaEM3QztBQXVOTixlQUFlQTtBQUFjLElBQUE2QztBQUFBQyxhQUFBRCxJQUFBIiwibmFtZXMiOlsidXNlU3RhdGUiLCJYIiwidXNlTXV0YXRpb24iLCJhcGlSZXF1ZXN0IiwidXNlVG9hc3QiLCJ1c2VMYW5ndWFnZSIsInVzZU1vZGFsTG9jayIsIldhaXRsaXN0TW9kYWwiLCJpc09wZW4iLCJvbkNsb3NlIiwiX3MiLCJlbWFpbCIsInNldEVtYWlsIiwidG9hc3QiLCJ0IiwibGFuZ3VhZ2UiLCJ3YWl0bGlzdE11dGF0aW9uIiwibXV0YXRpb25GbiIsIm1ldGhvZCIsImRhdGEiLCJzb3VyY2UiLCJvblN1Y2Nlc3MiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwib25FcnJvciIsImVycm9yIiwibWVzc2FnZSIsImluY2x1ZGVzIiwidmFyaWFudCIsImhhbmRsZVN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImVtYWlsUmVnZXgiLCJ0ZXN0IiwibXV0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZm9udEZhbWlseSIsImFuaW1hdGlvbiIsImJvcmRlclJhZGl1cyIsIm1heEhlaWdodCIsImNvbG9yIiwiZm9udFdlaWdodCIsImxldHRlclNwYWNpbmciLCJsaW5lSGVpZ2h0IiwidGFyZ2V0IiwidmFsdWUiLCJib3JkZXJDb2xvciIsInN0eWxlIiwiYm9yZGVyV2lkdGgiLCJpc1BlbmRpbmciLCJiYWNrZ3JvdW5kQ29sb3IiLCJvcGFjaXR5IiwiX2MiLCIkUmVmcmVzaFJlZyQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiV2FpdGxpc3RNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyB1c2VNdXRhdGlvbiB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBhcGlSZXF1ZXN0IH0gZnJvbSAnQC9saWIvcXVlcnlDbGllbnQnO1xuaW1wb3J0IHsgdXNlVG9hc3QgfSBmcm9tICdAL2hvb2tzL3VzZS10b2FzdCc7XG5pbXBvcnQgeyB1c2VMYW5ndWFnZSB9IGZyb20gJ0AvbGliL0xhbmd1YWdlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VNb2RhbExvY2sgfSBmcm9tICdAL2hvb2tzL3VzZU1vZGFsTG9jayc7XG5cbmludGVyZmFjZSBXYWl0bGlzdE1vZGFsUHJvcHMge1xuICBpc09wZW46IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFdhaXRsaXN0TW9kYWw6IFJlYWN0LkZDPFdhaXRsaXN0TW9kYWxQcm9wcz4gPSAoeyBpc09wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCBbZW1haWwsIHNldEVtYWlsXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgeyB0b2FzdCB9ID0gdXNlVG9hc3QoKTtcbiAgY29uc3QgeyB0LCBsYW5ndWFnZSB9ID0gdXNlTGFuZ3VhZ2UoKTtcbiAgdXNlTW9kYWxMb2NrKGlzT3Blbik7XG5cbiAgY29uc3Qgd2FpdGxpc3RNdXRhdGlvbiA9IHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZW1haWw6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGFwaVJlcXVlc3QoJy9hcGkvd2FpdGxpc3QnLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBkYXRhOiB7IGVtYWlsLCBzb3VyY2U6ICd3YWl0bGlzdCcsIGxhbmd1YWdlIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgdG9hc3Qoe1xuICAgICAgICB0aXRsZTogXCJXZWxjb21lIHRvIHRoZSB3YWl0bGlzdCFcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiWW91J2xsIGJlIHRoZSBmaXJzdCB0byBrbm93IHdoZW4gd2UgcmVsYXVuY2guXCIsXG4gICAgICB9KTtcbiAgICAgIHNldEVtYWlsKCcnKTtcbiAgICAgIG9uQ2xvc2UoKTtcbiAgICB9LFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICBpZiAoZXJyb3IubWVzc2FnZT8uaW5jbHVkZXMoXCJhbHJlYWR5IG9uIHRoZSB3YWl0bGlzdFwiKSkge1xuICAgICAgICB0b2FzdCh7XG4gICAgICAgICAgdGl0bGU6IFwiQWxyZWFkeSB3aXRoIHVzXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhpcyBlbWFpbCBpcyBhbHJlYWR5IHBhcnQgb2Ygb3VyIGNvbW11bml0eS5cIixcbiAgICAgICAgICB2Y
365XJpYW50OiBcImVsZWdhbnRcIiBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9hc3Qoe1xuICAgICAgICAgIHRpdGxlOiBcIlNvbWV0aGluZyB3ZW50IHdyb25nXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIixcbiAgICAgICAgICB2YXJpYW50OiBcImVsZWdhbnRcIiBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgXG4gICAgLy8gQmFzaWMgZW1haWwgdmFsaWRhdGlvblxuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICBpZiAoIWVtYWlsIHx8ICFlbWFpbFJlZ2V4LnRlc3QoZW1haWwpKSB7XG4gICAgICB0b2FzdCh7XG4gICAgICAgIHRpdGxlOiBcIkludmFsaWQgZW1haWxcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy5cIixcbiAgICAgICAgdmFyaWFudDogXCJkZXN0cnVjdGl2ZVwiLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHdhaXRsaXN0TXV0YXRpb24ubXV0YXRlKGVtYWlsKTtcbiAgfTtcblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IFxuICAgICAgY2xhc3NOYW1lPVwiZml4ZWQgaW5zZXQtMCB6LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNCBiZy1ibGFjay8zMCBiYWNrZHJvcC1ibHVyLXNtIGFuaW1hdGUtaW4gZmFkZS1pbiBkdXJhdGlvbi01MDBcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRhdGEtbW9kYWwtY29udGFpbmVyXG4gICAgPlxuICAgICAgPGRpdiBcbiAgICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgYmctd2hpdGUgdy1mdWxsIG1heC13LTJ4bCBvdmVyZmxvdy15LWF1dG8gc2hhZG93LTJ4bFwiXG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFxuICAgICAgICAgIGFuaW1hdGlvbjogJ3NsaWRlVXAgMC40cyBlYXNlLW91dCcsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiAnbWluKDkwdmgsIDEwMCUpJyxcbiAgICAgICAgfX1cbiAgICAgICAgZGF0YS1tb2RhbC1zY3JvbGxhYmxlXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0xMiBtZDpwLTE2XCI+XG4gICAgICAgICAgey8qIENsb3NlIGJ1dHRvbiAtIHN0aWNreSBmb3Iga2V5Ym9hcmQgdmlzaWJpbGl0eSAqL31cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTYgcmlnaHQtNiBwLTIgaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHkgei0xMCBiZy13aGl0ZS84MFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgbW9kYWxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJidXR0b24tY2xvc2UtbW9kYWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxYIHNpemU9ezIwfSBzdHlsZT17eyBjb2xvcjogJyMxQTFBMUEnIH19IHN0cm9rZVdpZHRoP
365XsxfSAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgey8qIENvbnRlbnQgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYXgtdy14bCBteC1hdXRvXCI+XG4gICAgICAgICAgey8qIEhlYWRsaW5lICovfVxuICAgICAgICAgIDxoMiBcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtMnhsIG1kOnRleHQtM3hsIG1iLTZcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXG4gICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgICAgICAgY29sb3I6ICcjMUExQTFBJyxcbiAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJzNweCcsXG4gICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDEuM1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgnd2FpdGxpc3RIZWFkbGluZScpfVxuICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICB7LyogU3VidGV4dCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LW1kIG14LWF1dG8gbWItMTBcIj5cbiAgICAgICAgICAgIDxwIFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXNtIG1kOnRleHQtYmFzZSBsZWFkaW5nLXJlbGF4ZWQgbWItNFwiXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogMzAwLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzFBMUExQScsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogMS43XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KCd3YWl0bGlzdFN1YnRleHQxJyl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSBtZDp0ZXh0LWJhc2UgbGVhZGluZy1yZWxheGVkXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAzMDAsXG4gICAgICAgICAgICAgICAgY29sb3I6ICcjMUExQTFBJyxcbiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAxLjdcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoJ3dhaXRsaXN0U3VidGV4dDInKX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBGb3JtICovfVxuICAgICAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZW1haWx9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRFbWFpbChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ3dhaXRsaXN0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtNiBweS00IGJvcmRlciB0ZXh0LWNlbnRlciB0ZXh0LXNtIG1kOnRleHQtYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIHRyYW5zaXRpb24tYWxsXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjMUExQTFBJyxcbiAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFxuICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogMzAwLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMUExQTFBJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzAnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbkZvY3VzPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc3R5bGUuYm9yZGVyQ29sb3IgPSAnIzFBMUExQSc7XG4gICAgICAgICAgICAgICAgICBlLnRhcmdldC5zdHlsZS5ib3JkZXJXaWR0aCA9ICcxcHgnO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25CbHVyPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc3R5bGUuYm9yZGVyQ29sb3IgPSAnIzFBMUExQSc7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImlucHV0LXdhaXRsaXN0LWVtYWlsXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQ1RBIEJ1dHRvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17d2FpdGxpc3RNdXRhdGlvbi5pc1BlbmRpbmd9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIHB5LTQgcHgtOCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgdGV4dC1zbSBmb250LWxpZ2h0IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxQTFBMUEnLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICcjRkZGRkZGJyxcbiAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFxuICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogMzAwLFxuICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJzNweCcsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSYWR
365pdXM6ICcwJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMzMzMzMzMnO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMxQTFBMUEnO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJidXR0b24tam9pbi13YWl0bGlzdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7d2FpdGxpc3RNdXRhdGlvbi5pc1BlbmRpbmcgPyB0KCd3YWl0bGlzdEpvaW5pbmcnKSA6IHQoJ3dhaXRsaXN0QnV0dG9uJyl9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8cCBcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAzMDAsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJyMxQTFBMUEnLFxuICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC42XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCd3YWl0bGlzdEN0YScpfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8c3R5bGU+e2BcbiAgICAgICAgQGtleWZyYW1lcyBzbGlkZVVwIHtcbiAgICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRvIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgfTwvc3R5bGU+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXYWl0bGlzdE1vZGFsO1xuIl0sImZpbGUiOiIvaG9tZS9ydW5uZXIvd29ya3NwYWNlL2NsaWVudC9zcmMvY29tcG9uZW50cy9XYWl0bGlzdE1vZGFsLnRzeCJ9

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.