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.