import { 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=c4080d1c"; const Fragment = __vite__cjsImport0_react_jsxDevRuntime["Fragment"]; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"];
import RefreshRuntime from "/@react-refresh";
const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope;
let prevRefreshReg;
let prevRefreshSig;
if (import.meta.hot && !inWebWorker) {
  if (!window.__vite_plugin_react_preamble_installed__) {
    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");
  }
  prevRefreshReg = window.$RefreshReg$;
  prevRefreshSig = window.$RefreshSig$;
  window.$RefreshReg$ = (type, id) => {
    RefreshRuntime.register(type, "/home/runner/workspace/client/src/components/CookieConsent.tsx " + id);
  };
  window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
}
var _s = $RefreshSig$();
import __vite__cjsImport3_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=c4080d1c"; const useState = __vite__cjsImport3_react["useState"]; const useEffect = __vite__cjsImport3_react["useEffect"];
import { useTranslation } from "/src/lib/i18n/TranslationContext.tsx";
import {
  Dialog,
  DialogContent,
  DialogHeader,
  DialogTitle,
  DialogFooter
} from "/src/components/ui/dialog.tsx";
import { Button } from "/src/components/ui/button.tsx";
import { Switch } from "/src/components/ui/switch.tsx";
import { Label } from "/src/components/ui/label.tsx";
export function CookieConsent() {
  _s();
  const { t } = useTranslation();
  const [open, setOpen] = useState(false);
  const [showPreferences, setShowPreferences] = useState(false);
  const [preferences, setPreferences] = useState({
    necessary: true,
    // Always true as these are essential
    analytics: false,
    marketing: false
  });
  useEffect(() => {
    const savedPreferences = localStorage.getItem("cookiePreferences");
    if (!savedPreferences) {
      setOpen(true);
    } else {
      setPreferences(JSON.parse(savedPreferences));
    }
  }, []);
  const handleSave = () => {
    localStorage.setItem("cookiePreferences", JSON.stringify(preferences));
    setOpen(false);
  };
  const acceptAll = () => {
    const allAccepted = {
      necessary: true,
      analytics: true,
      marketing: true
    };
    setPreferences(allAccepted);
    localStorage.setItem("cookiePreferences", JSON.stringify(allAccepted));
    setOpen(false);
  };
  const rejectAll = () => {
    const allRejected = {
      necessary: true,
      // Always true
      analytics: false,
      marketing: false
    };
    setPreferences(allRejected);
    localStorage.setItem("cookiePreferences", JSON.stringify(allRejected));
    setOpen(false);
  };
  return /* @__PURE__ */ jsxDEV(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxDEV(DialogContent, { className: "sm:max-w-[500px]", children: [
    /* @__PURE__ */ jsxDEV(DialogHeader, { children: /* @__PURE__ */ jsxDEV(DialogTitle, { children: t.cookies.title }, void 0, false, {
      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
      lineNumber: 71,
      columnNumber: 11
    }, this) }, void 0, false, {
      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
      lineNumber: 70,
      columnNumber: 9
    }, this),
    /* @__PURE__ */ jsxDEV("div", { className: "space-y-4", children: [
      /* @__PURE__ */ jsxDEV("p", { className: "text-sm text-muted-foreground", children: showPreferences ? t.cookies.preferencesDescription : t.cookies.description }, void 0, false, {
        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
        lineNumber: 74,
        columnNumber: 11
      }, this),
      showPreferences && /* @__PURE__ */ jsxDEV("div", { className: "space-y-4", children: [
        /* @__PURE__ */ jsxDEV("div", { className: "flex items-center justify-between", children: [
          /* @__PURE__ */ jsxDEV("div", { className: "space-y-0.5", children: [
            /* @__PURE__ */ jsxDEV(Label, { children: t.cookies.necessary.title }, void 0, false, {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 82,
              columnNumber: 19
            }, this),
            /* @__PURE__ */ jsxDEV("p", { className: "text-sm text-muted-foreground", children: t.cookies.necessary.description }, void 0, false, {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 83,
              columnNumber: 19
            }, this)
          ] }, void 0, true, {
            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
            lineNumber: 81,
            columnNumber: 17
          }, this),
          /* @__PURE__ */ jsxDEV(
            Switch,
            {
              checked: preferences.necessary,
              disabled: true
            },
            void 0,
            false,
            {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 87,
              columnNumber: 17
            },
            this
          )
        ] }, void 0, true, {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 80,
          columnNumber: 15
        }, this),
        /* @__PURE__ */ jsxDEV("div", { className: "flex items-center justify-between", children: [
          /* @__PURE__ */ jsxDEV("div", { className: "space-y-0.5", children: [
            /* @__PURE__ */ jsxDEV(Label, { children: t.cookies.analytics.title }, void 0, false, {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 95,
              columnNumber: 19
            }, this),
            /* @__PURE__ */ jsxDEV("p", { className: "text-sm text-muted-foreground", children: t.cookies.analytics.description }, void 0, false, {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 96,
              columnNumber: 19
            }, this)
          ] }, void 0, true, {
            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
            lineNumber: 94,
            columnNumber: 17
          }, this),
          /* @__PURE__ */ jsxDEV(
            Switch,
            {
              checked: preferences.analytics,
              onCheckedChange: (checked) => setPreferences((prev) => ({ ...prev, analytics: checked }))
            },
            void 0,
            false,
            {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 100,
              columnNumber: 17
            },
            this
          )
        ] }, void 0, true, {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 93,
          columnNumber: 15
        }, this),
        /* @__PURE__ */ jsxDEV("div", { className: "flex items-center justify-between", children: [
          /* @__PURE__ */ jsxDEV("div", { className: "space-y-0.5", children: [
            /* @__PURE__ */ jsxDEV(Label, { children: t.cookies.marketing.title }, void 0, false, {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 110,
              columnNumber: 19
            }, this),
            /* @__PURE__ */ jsxDEV("p", { className: "text-sm text-muted-foreground", children: t.cookies.marketing.description }, void 0, false, {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 111,
              columnNumber: 19
            }, this)
          ] }, void 0, true, {
            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
            lineNumber: 109,
            columnNumber: 17
          }, this),
          /* @__PURE__ */ jsxDEV(
            Switch,
            {
              checked: preferences.marketing,
              onCheckedChange: (checked) => setPreferences((prev) => ({ ...prev, marketing: checked }))
            },
            void 0,
            false,
            {
              fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
              lineNumber: 115,
              columnNumber: 17
            },
            this
          )
        ] }, void 0, true, {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 108,
          columnNumber: 15
        }, this)
      ] }, void 0, true, {
        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
        lineNumber: 79,
        columnNumber: 11
      }, this)
    ] }, void 0, true, {
      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
      lineNumber: 73,
      columnNumber: 9
    }, this),
    /* @__PURE__ */ jsxDEV(DialogFooter, { className: "flex flex-col-reverse sm:flex-row sm:justify-between sm:space-x-2", children: showPreferences ? /* @__PURE__ */ jsxDEV(Fragment, { children: [
      /* @__PURE__ */ jsxDEV(
        Button,
        {
          variant: "outline",
          onClick: () => setShowPreferences(false),
          children: t.cookies.back
        },
        void 0,
        false,
        {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 129,
          columnNumber: 15
        },
        this
      ),
      /* @__PURE__ */ jsxDEV("div", { className: "flex flex-col space-y-2 sm:flex-row sm:space-x-2 sm:space-y-0", children: [
        /* @__PURE__ */ jsxDEV(
          Button,
          {
            variant: "outline",
            onClick: rejectAll,
            children: t.cookies.rejectAll
          },
          void 0,
          false,
          {
            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
            lineNumber: 136,
            columnNumber: 17
          },
          this
        ),
        /* @__PURE__ */ jsxDEV(
          Button,
          {
            variant: "outline",
            onClick: acceptAll,
            children: t.cookies.acceptAll
          },
          void 0,
          false,
          {
            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
            lineNumber: 142,
            columnNumber: 17
          },
          this
        ),
        /* @__PURE__ */ jsxDEV(Button, { onClick: handleSave, children: t.cookies.save }, void 0, false, {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 148,
          columnNumber: 17
        }, this)
      ] }, void 0, true, {
        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
        lineNumber: 135,
        columnNumber: 15
      }, this)
    ] }, void 0, true, {
      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
      lineNumber: 128,
      columnNumber: 11
    }, this) : /* @__PURE__ */ jsxDEV(Fragment, { children: [
      /* @__PURE__ */ jsxDEV(
        Button,
        {
          variant: "outline",
          onClick: () => setShowPreferences(true),
          children: t.cookies.customize
        },
        void 0,
        false,
        {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 155,
          columnNumber: 15
        },
        this
      ),
      /* @__PURE__ */ jsxDEV("div", { className: "flex flex-col space-y-2 sm:flex-row sm:space-x-2 sm:space-y-0", children: [
        /* @__PURE__ */ jsxDEV(
          Button,
          {
            variant: "outline",
            onClick: rejectAll,
            children: t.cookies.rejectAll
          },
          void 0,
          false,
          {
            fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
            lineNumber: 162,
            columnNumber: 17
          },
          this
        ),
        /* @__PURE__ */ jsxDEV(Button, { onClick: acceptAll, children: t.cookies.acceptAll }, void 0, false, {
          fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
          lineNumber: 168,
          columnNumber: 17
        }, this)
      ] }, void 0, true, {
        fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
        lineNumber: 161,
        columnNumber: 15
      }, this)
    ] }, void 0, true, {
      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
      lineNumber: 154,
      columnNumber: 11
    }, this) }, void 0, false, {
      fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
      lineNumber: 126,
      columnNumber: 9
    }, this)
  ] }, void 0, true, {
    fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
    lineNumber: 69,
    columnNumber: 7
  }, this) }, void 0, false, {
    fileName: "/home/runner/workspace/client/src/components/CookieConsent.tsx",
    lineNumber: 68,
    columnNumber: 5
  }, this);
}
_s(CookieConsent, "5bwaKQDLA4xq2el2cB/UNUbLmNU=", false, function() {
  return [useTranslation];
});
_c = CookieConsent;
var _c;
$RefreshReg$(_c, "CookieConsent");
if (import.meta.hot && !inWebWorker) {
  window.$RefreshReg$ = prevRefreshReg;
  window.$RefreshSig$ = prevRefreshSig;
}
if (import.meta.hot && !inWebWorker) {
  RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
    RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/components/CookieConsent.tsx", currentExports);
    import.meta.hot.accept((nextExports) => {
      if (!nextExports) return;
      const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/components/CookieConsent.tsx", currentExports, nextExports);
      if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
    });
  });
}

//# sourceMappingURL=data:application/json;base64,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O0FBQUEsV0FmRjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBZ0JBO0FBQUEsU0F2QkY7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQXdCQSxJQUVBLG1DQUNFO0FBQUE7QUFBQSxRQUFDO0FBQUE7QUFBQSxVQUNDLFNBQVE7QUFBQSxVQUNSLFNBQVMsTUFBTXpCLG1CQUFtQixJQUFJO0FBQUEsVUFFckNMLFlBQUV1QixRQUFRUTtBQUFBQTtBQUFBQSxRQUpiO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtBO0FBQUEsTUFDQSx1QkFBQyxTQUFJLFdBQVUsaUVBQ2I7QUFBQTtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0MsU0FBUTtBQUFBLFlBQ1IsU0FBU1Y7QUFBQUEsWUFFUnJCLFlBQUV1QixRQUFRRjtBQUFBQTtBQUFBQSxVQUpiO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUtBO0FBQUEsUUFDQSx1QkFBQyxVQUFPLFNBQVNGLFdBQ2RuQixZQUFFdUIsUUFBUUosYUFEYjtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBRUE7QUFBQSxXQVRGO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFVQTtBQUFBLFNBakJGO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FrQkEsS0E5Q0o7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQWdEQTtBQUFBLE9BekdGO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0EwR0EsS0EzR0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQTRHQTtBQUVKO0FBQUNwQixHQTlKZUQsZUFBYTtBQUFBLFVBQ2JULGNBQWM7QUFBQTtBQUFBMkMsS0FEZGxDO0FBQWEsSUFBQWtDO0FBQUFDLGFBQUFELElBQUEiLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VUcmFuc2xhdGlvbiIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dIZWFkZXIiLCJEaWFsb2dUaXRsZSIsIkRpYWxvZ0Zvb3RlciIsIkJ1dHRvbiIsIlN3aXRjaCIsIkxhYmVsIiwiQ29va2llQ29uc2VudCIsIl9zIiwidCIsIm9wZW4iLCJzZXRPcGVuIiwidXNlU3RhdGUiLCJzaG93UHJlZmVyZW5jZXMiLCJzZXRTaG93UHJlZmVyZW5jZXMiLCJwcmVmZXJlbmNlcyIsInNldFByZWZlcmVuY2VzIiwibmVjZXNzYXJ5IiwiYW5hbHl0aWNzIiwibWFya2V0aW5nIiwic2F2ZWRQcmVmZXJlbmNlcyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJKU09OIiwicGFyc2UiLCJoYW5kbGVTYXZlIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImFjY2VwdEFsbCIsImFsbEFjY2VwdGVkIiwicmVqZWN0QWxsIiwiYWxsUmVqZWN0ZWQiLCJjb29raWVzIiwidGl0bGUiLCJwcmVmZXJlbmNlc0Rlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJjaGVja2VkIiwicHJldiIsImJhY2siLCJzYXZlIiwiY3VzdG9taXplIiwiX2MiLCIkUmVmcmVzaFJlZyQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiQ29va2llQ29uc2VudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwiQC9saWIvaTE4bi9UcmFuc2xhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nSGVhZGVyLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nRm9vdGVyLFxufSBmcm9tIFwiQC9jb21wb25lbnRzL3VpL2RpYWxvZ1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCJAL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcblxuaW50ZXJmYWNlIENvb2tpZVByZWZlcmVuY2VzIHtcbiAgbmVjZXNzYXJ5OiBib29sZWFuO1xuICBhbmFseXRpY3M6IGJvb2xlYW47XG4gIG1hcmtldGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvb2tpZUNvbnNlbnQoKSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd1ByZWZlcmVuY2VzLCBzZXRTaG93UHJlZmVyZW5jZXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcHJlZmVyZW5jZXMsIHNldFByZWZlcmVuY2VzXSA9IHVzZVN0YXRlPENvb2tpZVByZWZlcmVuY2VzPih7XG4gICAgbmVjZXNzYXJ5OiB0cnVlLCAvLyBBbHdheXMgdHJ1ZSBhcyB0aGVzZSBhcmUgZXNzZW50aWFsXG4gICAgYW5hbHl0aWNzOiBmYWxzZSxcbiAgICBtYXJrZXRpbmc6IGZhbHNlLFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIENoZWNrIGlmIHVzZXIgaGFzIGFscmVhZHkgbWFkZSBhIGNob2ljZVxuICAgIGNvbnN0IHNhdmVkUHJlZmVyZW5jZXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29va2llUHJlZmVyZW5jZXMnKTtcbiAgICBpZiAoIXNhdmVkUHJlZmVyZW5jZXMpIHtcbiAgICAgIHNldE9wZW4odHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFByZWZlcmVuY2VzKEpTT04ucGFyc2Uoc2F2ZWRQcmVmZXJlbmNlcykpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Nvb2tpZVByZWZlcmVuY2VzJywgSlNPTi5zdHJpbmdpZnkocHJlZmVyZW5jZXMpKTtcbiAgICBzZXRPcGVuKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBhY2NlcHRBbGwgPSAoKSA9PiB7XG4gICAgY29uc3QgYWxsQWNjZXB0ZWQgPSB7XG4gICAgICBuZWNlc3Nhcnk6IHRydWUsXG4gICAgICBhbmFseXRpY3M6IHRydWUsXG4gICAgICBtYXJrZXRpbmc6IHRydWUsXG4gICAgfTtcbiAgICBzZXRQcmVmZXJlbmNlcyhhbGxBY2NlcHRlZCk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Nvb2tpZVByZWZlcmVuY2VzJywgSlNPTi5zdHJpbmdpZnkoYWxsQWNjZXB0ZWQpKTtcbiAgICBzZXRPcGVuKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCByZWplY3RBbGwgPSAoKSA9PiB7XG4gICAgY29uc3QgYWxsUmVqZWN0ZWQgPSB7XG4gICAgICBuZWNlc3Nhcnk6IHRydWUsIC8vIEFsd2F5cyB0cnVlXG4gICAgICBhbmFseXRpY3M6IGZhbHNlLFxuICAgICAgbWFya2V0aW5nOiBmYWxzZSxcbiAgICB9O1xuICAgIHNldFByZWZlcmVuY2VzKGFsbFJlamVjdGVkKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY29va2llUHJlZmVyZW5jZXMnLCBKU09OLnN0cmluZ2lmeShhbGxSZWplY3RlZCkpO1xuICAgIHNldE9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZyBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e3NldE9wZW59PlxuICAgICAgPERpYWxvZ0NvbnRlbnQgY2xhc3NOYW1lPVwic206bWF4LXctWzUwMHB4XVwiPlxuICAgICAgICA8RGlhbG9nSGVhZGVyPlxuICAgICAgICAgIDxEaWFsb2dUaXRsZT57dC5jb29raWVzLnRpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICAgIDwvRGlhbG9nSGVhZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICB7c2hvd1ByZWZlcmVuY2VzID8gdC5jb29raWVzLnByZWZlcmVuY2VzRGVzY3JpcHRpb24gOiB0LmNvb2tpZXMuZGVzY3JpcHRpb259XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAge3Nob3dQcmVmZXJlbmNlcyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0wLjVcIj5cbiAgICAgICAgICAgICAgICAgIDxMYWJlbD57dC5jb29raWVzLm5lY2Vzc2FyeS50aXRsZX08L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAge3QuY29va2llcy5uZWNlc3NhcnkuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17cHJlZmVyZW5jZXMubmVjZXNzYXJ5fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RydWV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMC41XCI+XG4gICAgICAgICAgICAgICAgICA8TGFiZWw+e3QuY29va2llcy5hbmFseXRpY3MudGl0bGV9PC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIHt0LmNvb2tpZXMuYW5hbHl0aWNzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ByZWZlcmVuY2VzLmFuYWx5dGljc31cbiAgICAgICAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17KGNoZWNrZWQpID0+IFxuICAgICAgICAgICAgICAgICAgICBzZXRQcmVmZXJlbmNlcyhwcmV2ID0+ICh7IC4uLnByZXYsIGFuYWx5dGljczogY2hlY2tlZCB9KSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0wLjVcIj5cbiAgICAgICAgICAgICAgICAgIDxMYWJlbD57dC5jb29raWVzLm1hcmtldGluZy50aXRsZX08L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAge3QuY29va2llcy5tYXJrZXRpbmcuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17cHJlZmVyZW5jZXMubWFya2V0aW5nfVxuICAgICAgICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXsoY2hlY2tlZCkgPT4gXG4gICAgICAgICAgICAgICAgICAgIHNldFByZWZlcmVuY2VzKHByZXYgPT4gKHsgLi4ucHJldiwgbWFya2V0aW5nOiBjaGVja2VkIH0pKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPERpYWxvZ0Zvb3RlciBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sLXJldmVyc2Ugc206ZmxleC1yb3cgc206anVzdGlmeS1iZXR3ZWVuIHNtOnNwYWNlLXgtMlwiPlxuICAgICAgICAgIHtzaG93UHJlZmVyZW5jZXMgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dQcmVmZXJlbmNlcyhmYWxzZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dC5jb29raWVzLmJhY2t9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc3BhY2UteS0yIHNtOmZsZXgtcm93IHNtOnNwYWNlLXgtMiBzbTpzcGFjZS15LTBcIj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtyZWplY3RBbGx9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QuY29va2llcy5yZWplY3RBbGx9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17YWNjZXB0QWxsfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0LmNvb2tpZXMuYWNjZXB0QWxsfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17aGFuZGxlU2F2ZX0+XG4gICAgICAgICAgICAgICAgICB7dC5jb29raWVzLnNhdmV9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1ByZWZlcmVuY2VzKHRydWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QuY29va2llcy5jdXN0b21pemV9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc3BhY2UteS0yIHNtOmZsZXgtcm93IHNtOnNwYWNlLXgtMiBzbTpzcGFjZS15LTBcIj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtyZWplY3RBbGx9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QuY29va2llcy5yZWplY3RBbGx9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXthY2NlcHRBbGx9PlxuICAgICAgICAgICAgICAgICAge3QuY29va2llcy5hY2NlcHRBbGx9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9EaWFsb2dGb290ZXI+XG4gICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgPC9EaWFsb2c+XG4gICk7XG59Il0sImZpbGUiOiIvaG9tZS9ydW5uZXIvd29ya3NwYWNlL2NsaWVudC9zcmMvY29tcG9uZW50cy9Db29raWVDb25zZW50LnRzeCJ9