Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_00019c
T

213 lines
18 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/projects/add-dialog/Metadata.vue");import { FormTextInput as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { FormTextArea as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { default as __nuxt_component_2 } from "/_nuxt/components/project/VisibilitySelect.vue";
import { FormButton as __nuxt_component_3 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
/* Injection by vite-plugin-vue-inspector Start */
import { createVNode as __createVNode,createElementVNode as __createElementVNode,createElementBlock as __createElementBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"
function _interopVNode(vnode) {
if (vnode && vnode.props && 'data-v-inspector' in vnode.props) {
const data = vnode.props['data-v-inspector']
delete vnode.props['data-v-inspector']
Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false })
}
return vnode
}
function _createVNode(...args) { return _interopVNode(__createVNode(...args)) }
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
/* Injection by vite-plugin-vue-inspector End */
import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
import { useForm } from "/_nuxt/node_modules/.cache/vite/client/deps/vee-validate.js?v=e4f18c29";
import { SupportedProjectVisibility } from "/_nuxt/lib/projects/helpers/visibility.ts";
import { isRequired, isStringOfLength } from "/_nuxt/lib/common/helpers/validation.ts";
import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts";
import { useCreateProject } from "/_nuxt/lib/projects/composables/projectManagement.ts";
import { useLogger } from "/_nuxt/composables/logging.ts";
import { ref, computed, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "ProjectsAddDialogMetadata",
props: {
supportGoBack: { type: Boolean, required: false },
workspaceId: { type: null, required: false }
},
emits: ["created", "canceled", "back"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const props = __props;
const emit = __emit;
const createProject = useCreateProject();
const logger = useLogger();
const { handleSubmit, isSubmitting } = useForm();
const visibility = ref(
props.workspaceId ? SupportedProjectVisibility.Workspace : SupportedProjectVisibility.Private
);
const isLoading = ref(false);
const mp = useMixpanel();
const isDisabled = computed(() => isSubmitting.value || isLoading.value);
const onSubmit = handleSubmit(async (values) => {
if (isLoading.value) return;
try {
isLoading.value = true;
const newProject = await createProject({
name: values.name,
description: values.description,
visibility: visibility.value,
...props.workspaceId ? { workspaceId: props.workspaceId } : {}
});
if (newProject?.id) {
emit("created", { id: newProject.id });
mp.track("Stream Action", {
type: "action",
name: "create",
// eslint-disable-next-line camelcase
workspace_id: props.workspaceId
});
}
} catch (error) {
logger.error("Failed to create project:", error);
} finally {
isLoading.value = false;
}
});
watch(
() => props.workspaceId,
(newVal, oldVal) => {
if (newVal !== oldVal) {
visibility.value = props.workspaceId ? SupportedProjectVisibility.Workspace : SupportedProjectVisibility.Private;
}
}
);
const __returned__ = { props, emit, createProject, logger, handleSubmit, isSubmitting, visibility, isLoading, mp, isDisabled, onSubmit, get isRequired() {
return isRequired;
}, get isStringOfLength() {
return isStringOfLength;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
class: "flex flex-col gap-y-4 mb-2",
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:3:5"
};
const _hoisted_2 = { "data-v-inspector": "components/projects/add-dialog/Metadata.vue:24:7" };
const _hoisted_3 = {
class: "flex justify-end gap-2 my-2",
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:33:5"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_FormTextInput = __nuxt_component_0;
const _component_FormTextArea = __nuxt_component_1;
const _component_ProjectVisibilitySelect = __nuxt_component_2;
const _component_FormButton = __nuxt_component_3;
return _openBlock(), _createElementBlock(
"form",
{
class: "flex flex-col text-foreground",
onSubmit: _cache[2] || (_cache[2] = (...args) => $setup.onSubmit && $setup.onSubmit(...args)),
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:2:3"
},
[
_createElementVNode("div", _hoisted_1, [
_createVNode(_component_FormTextInput, {
name: "name",
label: "Project name",
placeholder: "Name",
color: "foundation",
rules: [$setup.isRequired, $setup.isStringOfLength({ maxLength: 512 })],
"auto-focus": "",
autocomplete: "off",
"show-label": "",
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:4:7"
}, null, 8, ["rules"]),
_createVNode(_component_FormTextArea, {
name: "description",
label: "Project description",
placeholder: "Description",
color: "foundation",
size: "lg",
"show-label": "",
"show-optional": "",
rules: [$setup.isStringOfLength({ maxLength: 65536 })],
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:14:7"
}, null, 8, ["rules"]),
_createElementVNode("div", _hoisted_2, [
_cache[3] || (_cache[3] = _createElementVNode(
"h3",
{
class: "label mb-2",
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:25:9"
},
"Access permissions",
-1
/* CACHED */
)),
_createVNode(_component_ProjectVisibilitySelect, {
modelValue: $setup.visibility,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.visibility = $event),
"mount-menu-on-body": "",
"workspace-id": $props.workspaceId,
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:26:9"
}, null, 8, ["modelValue", "workspace-id"])
])
]),
_createElementVNode("div", _hoisted_3, [
_createVNode(_component_FormButton, {
type: "button",
color: "outline",
disabled: $setup.isDisabled,
onClick: _cache[1] || (_cache[1] = () => $props.supportGoBack ? _ctx.$emit("back") : _ctx.$emit("canceled")),
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:34:7"
}, {
default: _withCtx(() => [
_createTextVNode(
_toDisplayString($props.supportGoBack ? "Back" : "Cancel"),
1
/* TEXT */
)
]),
_: 1
/* STABLE */
}, 8, ["disabled"]),
_createVNode(_component_FormButton, {
type: "submit",
color: "primary",
loading: $setup.isDisabled,
"data-v-inspector": "components/projects/add-dialog/Metadata.vue:42:7"
}, {
default: _withCtx(() => [..._cache[4] || (_cache[4] = [
_createTextVNode(
" Create ",
-1
/* CACHED */
)
])]),
_: 1
/* STABLE */
}, 8, ["loading"])
])
],
32
/* NEED_HYDRATION */
);
}
_sfc_main.__hmrId = "6e43eb74";
typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main);
import.meta.hot.on("file-changed", ({ file }) => {
__VUE_HMR_RUNTIME__.CHANGED_FILE = file;
});
import.meta.hot.accept((mod) => {
if (!mod) return;
const { default: updated, _rerender_only } = mod;
if (_rerender_only) {
__VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render);
} else {
__VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated);
}
});
import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper";
export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/components/projects/add-dialog/Metadata.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QWEsb0JBQWlCO0FBQUE7OztNQUluRCxvQkFZTSxPQVpOLFlBWU07QUFBQSxRQVhKLGFBT2E7QUFBQSxVQU5YLE1BQUs7QUFBQSxVQUNMLE9BQU07QUFBQSxVQUNMLFVBQVU7QUFBQSxVQUNWLFNBQUssZ0NBQVMsdUJBQWdCLFdBQUssVUFBVyxXQUFLO0FBQUEsVUFBZSxvQkFBaUI7QUFBQTs0QkFFcEYsTUFBdUM7QUFBQTsrQkFBcEMsdUJBQWE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7OztRQUVsQixhQUVhO0FBQUEsVUFGRCxNQUFLO0FBQUEsVUFBUyxPQUFNO0FBQUEsVUFBVyxTQUFTO0FBQUEsVUFBWSxvQkFBaUI7QUFBQTs0QkFBbUQsTUFFcEk7QUFBQTtjQUZvSTtBQUFBLGNBRXBJO0FBQUE7QUFBQTtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJNZXRhZGF0YS52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxmb3JtIGNsYXNzPVwiZmxleCBmbGV4LWNvbCB0ZXh0LWZvcmVncm91bmRcIiBAc3VibWl0PVwib25TdWJtaXRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9wcm9qZWN0cy9hZGQtZGlhbG9nL01ldGFkYXRhLnZ1ZToyOjNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC15LTQgbWItMlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjM6NVwiPlxyXG4gICAgICA8Rm9ybVRleHRJbnB1dFxyXG4gICAgICAgIG5hbWU9XCJuYW1lXCJcclxuICAgICAgICBsYWJlbD1cIlByb2plY3QgbmFtZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lXCJcclxuICAgICAgICBjb2xvcj1cImZvdW5kYXRpb25cIlxyXG4gICAgICAgIDpydWxlcz1cIltpc1JlcXVpcmVkLCBpc1N0cmluZ09mTGVuZ3RoKHsgbWF4TGVuZ3RoOiA1MTIgfSldXCJcclxuICAgICAgICBhdXRvLWZvY3VzXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBzaG93LWxhYmVsIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjQ6N1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxGb3JtVGV4dEFyZWFcclxuICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgIGxhYmVsPVwiUHJvamVjdCBkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgY29sb3I9XCJmb3VuZGF0aW9uXCJcclxuICAgICAgICBzaXplPVwibGdcIlxyXG4gICAgICAgIHNob3ctbGFiZWxcclxuICAgICAgICBzaG93LW9wdGlvbmFsXHJcbiAgICAgICAgOnJ1bGVzPVwiW2lzU3RyaW5nT2ZMZW5ndGgoeyBtYXhMZW5ndGg6IDY1NTM2IH0pXVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjE0OjdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8ZGl2IGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjI0OjdcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJsYWJlbCBtYi0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6MjU6OVwiPkFjY2VzcyBwZXJtaXNzaW9uczwvaDM+XHJcbiAgICAgICAgPFByb2plY3RWaXNpYmlsaXR5U2VsZWN0XHJcbiAgICAgICAgICB2LW1vZGVsPVwidmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICBtb3VudC1tZW51LW9uLWJvZHlcclxuICAgICAgICAgIDp3b3Jrc3BhY2UtaWQ9XCJ3b3Jrc3BhY2VJZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjI2OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiBteS0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6MzM6NVwiPlxyXG4gICAgICA8Rm9ybUJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNvbG9yPVwib3V0bGluZVwiXHJcbiAgICAgICAgOmRpc2FibGVkPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgQGNsaWNrPVwiKCkgPT4gKHN1cHBvcnRHb0JhY2sgPyAkZW1pdCgnYmFjaycpIDogJGVtaXQoJ2NhbmNlbGVkJykpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6MzQ6N1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzdXBwb3J0R29CYWNrID8gJ0JhY2snIDogJ0NhbmNlbCcgfX1cclxuICAgICAgPC9Gb3JtQnV0dG9uPlxyXG4gICAgICA8Rm9ybUJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCIgOmxvYWRpbmc9XCJpc0Rpc2FibGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6NDI6N1wiPlxyXG4gICAgICAgIENyZWF0ZVxyXG4gICAgICA8L0Zvcm1CdXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgTWF5YmVOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc3BlY2tsZS9zaGFyZWQnXHJcbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICd2ZWUtdmFsaWRhdGUnXHJcbmltcG9ydCB7IFN1cHBvcnRlZFByb2plY3RWaXNpYmlsaXR5IH0gZnJvbSAnfi9saWIvcHJvamVjdHMvaGVscGVycy92aXNpYmlsaXR5J1xyXG5pbXBvcnQgeyBpc1JlcXVpcmVkLCBpc1N0cmluZ09mTGVuZ3RoIH0gZnJvbSAnfn4vbGliL2NvbW1vbi9oZWxwZXJzL3ZhbGlkYXRpb24nXHJcbmltcG9ydCB7IHVzZU1peHBhbmVsIH0gZnJvbSAnfn4vbGliL2NvcmUvY29tcG9zYWJsZXMvbXAnXHJcbmltcG9ydCB7IHVzZUNyZWF0ZVByb2plY3QgfSBmcm9tICd+fi9saWIvcHJvamVjdHMvY29tcG9zYWJsZXMvcHJvamVjdE1hbmFnZW1lbnQnXHJcblxyXG50eXBlIEZvcm1WYWx1ZXMgPSB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcclxufVxyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgc3VwcG9ydEdvQmFjaz86IGJvb2xlYW5cclxuICB3b3Jrc3BhY2VJZD86IE1heWJlTnVsbE9yVW5kZWZpbmVkPHN0cmluZz5cclxufT4oKVxyXG5cclxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcclxuICAoZTogJ2NyZWF0ZWQnLCBwcm9qZWN0OiB7IGlkOiBzdHJpbmcgfSk6IHZvaWRcclxuICAoZTogJ2NhbmNlbGVkJyk6IHZvaWRcclxuICAoZTogJ2JhY2snKTogdm9pZFxyXG59PigpXHJcblxyXG5jb25zdCBjcmVhdGVQcm9qZWN0ID0gdXNlQ3JlYXRlUHJvamVjdCgpXHJcbmNvbnN0IGxvZ2dlciA9IHVzZUxvZ2dlcigpXHJcbmNvbnN0IHsgaGFuZGxlU3VibWl0LCBpc1N1Ym1pdHRpbmcgfSA9IHVzZUZvcm08Rm9ybVZhbHVlcz4oKVxyXG5cclxuY29uc3QgdmlzaWJpbGl0eSA9IHJlZihcclxuICBwcm9wcy53b3Jrc3BhY2VJZFxyXG4gICAgPyBTdXBwb3J0ZWRQcm9qZWN0VmlzaWJpbGl0eS5Xb3Jrc3BhY2VcclxuICAgIDogU3VwcG9ydGVkUHJvamVjdFZpc2liaWxpdHkuUHJpdmF0ZVxyXG4pXHJcbmNvbnN0IGlzTG9hZGluZyA9IHJlZihmYWxzZSlcclxuXHJcbmNvbnN0IG1wID0gdXNlTWl4cGFuZWwoKVxyXG5cclxuY29uc3QgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IGlzU3VibWl0dGluZy52YWx1ZSB8fCBpc0xvYWRpbmcudmFsdWUpXHJcblxyXG5jb25zdCBvblN1Ym1pdCA9IGhhbmRsZVN1Ym1pdChhc3luYyAodmFsdWVzKSA9PiB7XHJcbiAgaWYgKGlzTG9hZGluZy52YWx1ZSkgcmV0dXJuIC8vIFByZXZlbnQgc3VibWlzc2lvbiB3aGlsZSBjbG9zaW5nXHJcblxyXG4gIHRyeSB7XHJcbiAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlXHJcblxyXG4gICAgY29uc3QgbmV3UHJvamVjdCA9IGF3YWl0IGNyZWF0ZVByb2plY3Qoe1xyXG4gICAgICBuYW1lOiB2YWx1ZXMubmFtZSxcclxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlcy5kZXNjcmlwdGlvbixcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJpbGl0eS52YWx1ZSxcclxuICAgICAgLi4uKHByb3BzLndvcmtzcGFjZUlkID8geyB3b3Jrc3BhY2VJZDogcHJvcHMud29ya3NwYWNlSWQgfSA6IHt9KVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAobmV3UHJvamVjdD8uaWQpIHtcclxuICAgICAgZW1pdCgnY3JlYXRlZCcsIHsgaWQ6IG5ld1Byb2plY3QuaWQgfSlcclxuICAgICAgbXAudHJhY2soJ1N0cmVhbSBBY3Rpb24nLCB7XHJcbiAgICAgICAgdHlwZTogJ2FjdGlvbicsXHJcbiAgICAgICAgbmFtZTogJ2NyZWF0ZScsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxyXG4gICAgICAgIHdvcmtzcGFjZV9pZDogcHJvcHMud29ya3NwYWNlSWRcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIHByb2plY3Q6JywgZXJyb3IpXHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlXHJcbiAgfVxyXG59KVxyXG5cclxud2F0Y2goXHJcbiAgKCkgPT4gcHJvcHMud29ya3NwYWNlSWQsXHJcbiAgKG5ld1ZhbCwgb2xkVmFsKSA9PiB7XHJcbiAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHtcclxuICAgICAgdmlzaWJpbGl0eS52YWx1ZSA9IHByb3BzLndvcmtzcGFjZUlkXHJcbiAgICAgICAgPyBTdXBwb3J0ZWRQcm9qZWN0VmlzaWJpbGl0eS5Xb3Jrc3BhY2VcclxuICAgICAgICA6IFN1cHBvcnRlZFByb2plY3RWaXNpYmlsaXR5LlByaXZhdGVcclxuICAgIH1cclxuICB9XHJcbilcclxuPC9zY3JpcHQ+XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9jb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlIn0=