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

204 lines
18 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/models/versions/Versions.vue");import { FormButton as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { default as __nuxt_component_1 } from "/_nuxt/components/viewer/models/versions/Card.vue";
import { default as __nuxt_component_2 } from "/_nuxt/components/viewer/resources/ObjectCard.vue";
import { default as __nuxt_component_3 } from "/_nuxt/components/viewer/layout/SidePanel.vue";
/* Injection by vite-plugin-vue-inspector Start */
import { createVNode as __createVNode,createElementVNode as __createElementVNode,createElementBlock as __createElementBlock,createBlock as __createBlock } 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)) }
function _createBlock(...args) { return _interopVNode(__createBlock(...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 {
useInjectedViewerLoadedResources,
useInjectedViewerRequestedResources,
useInjectedViewerState
} from "/_nuxt/lib/viewer/composables/setup.ts";
import { SpeckleViewer } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js";
import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts";
import { ViewerEvent } from "/_nuxt/@fs/D:/speckle-server/packages/viewer/dist/index.js";
import { useViewerEventListener } from "/_nuxt/lib/viewer/composables/viewer.ts";
import { ChevronLeft } from "/_nuxt/node_modules/.cache/vite/client/deps/lucide-vue-next.js?v=e4f18c29";
import { useDiffUtilities } from "/_nuxt/lib/viewer/composables/ui.ts";
import { computed, ref } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "ViewerModelsVersions",
props: {
expandedModelId: { type: [String, null], required: false }
},
emits: ["close"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const props = __props;
const emit = __emit;
const { resourceItems, modelsAndVersionIds, objects } = useInjectedViewerLoadedResources();
const { items } = useInjectedViewerRequestedResources();
const {
ui: { diff: diffState }
} = useInjectedViewerState();
const { endDiff } = useDiffUtilities();
const mp = useMixpanel();
const hasDiffActive = computed(() => {
return !!(diffState.oldVersion.value && diffState.newVersion.value);
});
const handleClose = async () => {
if (hasDiffActive.value) {
await endDiff();
}
emit("close");
};
const removeModel = async (modelId) => {
const builder = SpeckleViewer.ViewerRoute.resourceBuilder();
for (const loadedResource of resourceItems.value) {
if (loadedResource.modelId) {
if (loadedResource.modelId !== modelId) {
builder.addModel(loadedResource.modelId, loadedResource.versionId || void 0);
}
} else {
if (loadedResource.objectId !== modelId)
builder.addObject(loadedResource.objectId);
}
}
mp.track("Viewer Action", { type: "action", name: "federation", action: "remove" });
await items.update(builder.toResources());
};
const refhack = ref(1);
useViewerEventListener(ViewerEvent.LoadComplete, () => {
refhack.value++;
});
const __returned__ = { props, emit, resourceItems, modelsAndVersionIds, objects, items, diffState, endDiff, mp, hasDiffActive, handleClose, removeModel, refhack, get ChevronLeft() {
return ChevronLeft;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
class: "flex items-center gap-x-1",
"data-v-inspector": "components/viewer/models/versions/Versions.vue:4:7"
};
const _hoisted_2 = {
class: "flex flex-col h-full",
"data-v-inspector": "components/viewer/models/versions/Versions.vue:19:5"
};
const _hoisted_3 = {
class: "flex-1 overflow-y-auto simple-scrollbar",
"data-v-inspector": "components/viewer/models/versions/Versions.vue:22:9"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_FormButton = __nuxt_component_0;
const _component_ViewerModelsVersionsCard = __nuxt_component_1;
const _component_ViewerResourcesObjectCard = __nuxt_component_2;
const _component_ViewerLayoutSidePanel = __nuxt_component_3;
return _openBlock(), _createBlock(_component_ViewerLayoutSidePanel, { "data-v-inspector": "components/viewer/models/versions/Versions.vue:2:3" }, {
title: _withCtx(() => [
_createElementVNode("div", _hoisted_1, [
_createVNode(_component_FormButton, {
"icon-left": $setup.ChevronLeft,
color: "subtle",
class: "-ml-3",
"hide-text": "",
size: "sm",
onClick: $setup.handleClose,
"data-v-inspector": "components/viewer/models/versions/Versions.vue:5:9"
}, {
default: _withCtx(() => [..._cache[1] || (_cache[1] = [
_createTextVNode(
" Exit versions ",
-1
/* CACHED */
)
])]),
_: 1
/* STABLE */
}, 8, ["icon-left"]),
_cache[2] || (_cache[2] = _createTextVNode(
" Versions ",
-1
/* CACHED */
))
])
]),
default: _withCtx(() => [
_createElementVNode("div", _hoisted_2, [
$setup.resourceItems.length ? (_openBlock(), _createElementBlock(
_Fragment,
{ key: 0 },
[
_createCommentVNode(" Versions with single scroll container for sticky headers "),
_createElementVNode("div", _hoisted_3, [
(_openBlock(true), _createElementBlock(
_Fragment,
null,
_renderList($setup.modelsAndVersionIds, ({ model, versionId }, index) => {
return _openBlock(), _createElementBlock("div", {
key: model.id,
"data-v-inspector": "components/viewer/models/versions/Versions.vue:23:11"
}, [
_createVNode(_component_ViewerModelsVersionsCard, {
model,
"version-id": versionId,
last: index === $setup.modelsAndVersionIds.length - 1,
"initially-expanded": $setup.props.expandedModelId === model.id || $setup.modelsAndVersionIds.length === 1,
"data-v-inspector": "components/viewer/models/versions/Versions.vue:27:13"
}, null, 8, ["model", "version-id", "last", "initially-expanded"])
]);
}),
128
/* KEYED_FRAGMENT */
)),
$setup.objects.length !== 0 ? (_openBlock(true), _createElementBlock(
_Fragment,
{ key: 0 },
_renderList($setup.objects, (object) => {
return _openBlock(), _createBlock(_component_ViewerResourcesObjectCard, {
key: object.objectId,
object,
"show-remove": false,
onRemove: _cache[0] || (_cache[0] = (id) => $setup.removeModel(id)),
"data-v-inspector": "components/viewer/models/versions/Versions.vue:37:13"
}, null, 8, ["object"]);
}),
128
/* KEYED_FRAGMENT */
)) : _createCommentVNode("v-if", true)
])
],
64
/* STABLE_FRAGMENT */
)) : _createCommentVNode("v-if", true)
])
]),
_: 1
/* STABLE */
});
}
_sfc_main.__hmrId = "619e3d30";
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/viewer/models/versions/Versions.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QUFNO0FBQUEsc0JBQzFDLHNCQUFzQyxhQUFNLG9CQUFvQixNQUFNLE1BQU0sMkJBQW9CLFdBQU07QUFBQSxzQkFFckcsb0JBQWlCO0FBQUE7Ozs7OztjQUdQLGVBQVEsV0FBTSx1QkFDNUI7QUFBQSxnQkFNRTtBQUFBO0FBQUEsNEJBTGlCLGdCQUFPLENBQWpCLFdBQU07dUNBRGYsYUFNRTtBQUFBLG9CQUpDLEtBQUssT0FBTztBQUFBLG9CQUNaO0FBQUEsb0JBQ0EsZUFBYTtBQUFBLG9CQUNiLFVBQU0sMkJBQUcsT0FBZSxtQkFBWSxFQUFFO0FBQUEsb0JBQUcsb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIlZlcnNpb25zLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgPFZpZXdlckxheW91dFNpZGVQYW5lbCBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZToyOjNcIj5cclxuICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6NDo3XCI+XHJcbiAgICAgICAgPEZvcm1CdXR0b25cclxuICAgICAgICAgIDppY29uLWxlZnQ9XCJDaGV2cm9uTGVmdFwiXHJcbiAgICAgICAgICBjb2xvcj1cInN1YnRsZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIi1tbC0zXCJcclxuICAgICAgICAgIGhpZGUtdGV4dFxyXG4gICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsb3NlXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6NTo5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBFeGl0IHZlcnNpb25zXHJcbiAgICAgICAgPC9Gb3JtQnV0dG9uPlxyXG4gICAgICAgIFZlcnNpb25zXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZToxOTo1XCI+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwicmVzb3VyY2VJdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICA8IS0tIFZlcnNpb25zIHdpdGggc2luZ2xlIHNjcm9sbCBjb250YWluZXIgZm9yIHN0aWNreSBoZWFkZXJzIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHNpbXBsZS1zY3JvbGxiYXJcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZToyMjo5XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHYtZm9yPVwiKHsgbW9kZWwsIHZlcnNpb25JZCB9LCBpbmRleCkgaW4gbW9kZWxzQW5kVmVyc2lvbklkc1wiXHJcbiAgICAgICAgICAgIDprZXk9XCJtb2RlbC5pZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9tb2RlbHMvdmVyc2lvbnMvVmVyc2lvbnMudnVlOjIzOjExXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFZpZXdlck1vZGVsc1ZlcnNpb25zQ2FyZFxyXG4gICAgICAgICAgICAgIDptb2RlbD1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICA6dmVyc2lvbi1pZD1cInZlcnNpb25JZFwiXHJcbiAgICAgICAgICAgICAgOmxhc3Q9XCJpbmRleCA9PT0gbW9kZWxzQW5kVmVyc2lvbklkcy5sZW5ndGggLSAxXCJcclxuICAgICAgICAgICAgICA6aW5pdGlhbGx5LWV4cGFuZGVkPVwiXHJcbiAgICAgICAgICAgICAgICBwcm9wcy5leHBhbmRlZE1vZGVsSWQgPT09IG1vZGVsLmlkIHx8IG1vZGVsc0FuZFZlcnNpb25JZHMubGVuZ3RoID09PSAxXHJcbiAgICAgICAgICAgICAgXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6Mjc6MTNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIm9iamVjdHMubGVuZ3RoICE9PSAwXCI+XHJcbiAgICAgICAgICAgIDxWaWV3ZXJSZXNvdXJjZXNPYmplY3RDYXJkXHJcbiAgICAgICAgICAgICAgdi1mb3I9XCJvYmplY3QgaW4gb2JqZWN0c1wiXHJcbiAgICAgICAgICAgICAgOmtleT1cIm9iamVjdC5vYmplY3RJZFwiXHJcbiAgICAgICAgICAgICAgOm9iamVjdD1cIm9iamVjdFwiXHJcbiAgICAgICAgICAgICAgOnNob3ctcmVtb3ZlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIEByZW1vdmU9XCIoaWQ6IHN0cmluZykgPT4gcmVtb3ZlTW9kZWwoaWQpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL21vZGVscy92ZXJzaW9ucy9WZXJzaW9ucy52dWU6Mzc6MTNcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvVmlld2VyTGF5b3V0U2lkZVBhbmVsPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHtcclxuICB1c2VJbmplY3RlZFZpZXdlckxvYWRlZFJlc291cmNlcyxcclxuICB1c2VJbmplY3RlZFZpZXdlclJlcXVlc3RlZFJlc291cmNlcyxcclxuICB1c2VJbmplY3RlZFZpZXdlclN0YXRlXHJcbn0gZnJvbSAnfn4vbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zZXR1cCdcclxuaW1wb3J0IHsgU3BlY2tsZVZpZXdlciB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlTWl4cGFuZWwgfSBmcm9tICd+fi9saWIvY29yZS9jb21wb3NhYmxlcy9tcCdcclxuaW1wb3J0IHsgVmlld2VyRXZlbnQgfSBmcm9tICdAc3BlY2tsZS92aWV3ZXInXHJcbmltcG9ydCB7IHVzZVZpZXdlckV2ZW50TGlzdGVuZXIgfSBmcm9tICd+fi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3ZpZXdlcidcclxuaW1wb3J0IHsgQ2hldnJvbkxlZnQgfSBmcm9tICdsdWNpZGUtdnVlLW5leHQnXHJcbmltcG9ydCB7IHVzZURpZmZVdGlsaXRpZXMgfSBmcm9tICd+fi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3VpJ1xyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgZXhwYW5kZWRNb2RlbElkPzogc3RyaW5nIHwgbnVsbFxyXG59PigpXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjbG9zZSddKVxyXG5cclxuY29uc3QgeyByZXNvdXJjZUl0ZW1zLCBtb2RlbHNBbmRWZXJzaW9uSWRzLCBvYmplY3RzIH0gPVxyXG4gIHVzZUluamVjdGVkVmlld2VyTG9hZGVkUmVzb3VyY2VzKClcclxuY29uc3QgeyBpdGVtcyB9ID0gdXNlSW5qZWN0ZWRWaWV3ZXJSZXF1ZXN0ZWRSZXNvdXJjZXMoKVxyXG5jb25zdCB7XHJcbiAgdWk6IHsgZGlmZjogZGlmZlN0YXRlIH1cclxufSA9IHVzZUluamVjdGVkVmlld2VyU3RhdGUoKVxyXG5jb25zdCB7IGVuZERpZmYgfSA9IHVzZURpZmZVdGlsaXRpZXMoKVxyXG5cclxuY29uc3QgbXAgPSB1c2VNaXhwYW5lbCgpXHJcblxyXG5jb25zdCBoYXNEaWZmQWN0aXZlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiAhIShkaWZmU3RhdGUub2xkVmVyc2lvbi52YWx1ZSAmJiBkaWZmU3RhdGUubmV3VmVyc2lvbi52YWx1ZSlcclxufSlcclxuXHJcbmNvbnN0IGhhbmRsZUNsb3NlID0gYXN5bmMgKCkgPT4ge1xyXG4gIGlmIChoYXNEaWZmQWN0aXZlLnZhbHVlKSB7XHJcbiAgICBhd2FpdCBlbmREaWZmKClcclxuICB9XHJcbiAgZW1pdCgnY2xvc2UnKVxyXG59XHJcblxyXG5jb25zdCByZW1vdmVNb2RlbCA9IGFzeW5jIChtb2RlbElkOiBzdHJpbmcpID0+IHtcclxuICAvLyBDb252ZXJ0IHJlcXVlc3RlZCByZXNvdXJjZSBzdHJpbmcgdG8gcmVmZXJlbmNlcyB0byBzcGVjaWZpYyBtb2RlbHNcclxuICAvLyB0byBlbnN1cmUgcmVtb3ZlIHdvcmtzIGV2ZW4gd2hlbiB3ZSBoYXZlIFwiYWxsXCIgb3IgXCIkZm9sZGVyXCIgaW4gdGhlIFVSTFxyXG4gIGNvbnN0IGJ1aWxkZXIgPSBTcGVja2xlVmlld2VyLlZpZXdlclJvdXRlLnJlc291cmNlQnVpbGRlcigpXHJcbiAgZm9yIChjb25zdCBsb2FkZWRSZXNvdXJjZSBvZiByZXNvdXJjZUl0ZW1zLnZhbHVlKSB7XHJcbiAgICBpZiAobG9hZGVkUmVzb3VyY2UubW9kZWxJZCkge1xyXG4gICAgICBpZiAobG9hZGVkUmVzb3VyY2UubW9kZWxJZCAhPT0gbW9kZWxJZCkge1xyXG4gICAgICAgIGJ1aWxkZXIuYWRkTW9kZWwobG9hZGVkUmVzb3VyY2UubW9kZWxJZCwgbG9hZGVkUmVzb3VyY2UudmVyc2lvbklkIHx8IHVuZGVmaW5lZClcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxvYWRlZFJlc291cmNlLm9iamVjdElkICE9PSBtb2RlbElkKVxyXG4gICAgICAgIGJ1aWxkZXIuYWRkT2JqZWN0KGxvYWRlZFJlc291cmNlLm9iamVjdElkKVxyXG4gICAgfVxyXG4gIH1cclxuICBtcC50cmFjaygnVmlld2VyIEFjdGlvbicsIHsgdHlwZTogJ2FjdGlvbicsIG5hbWU6ICdmZWRlcmF0aW9uJywgYWN0aW9uOiAncmVtb3ZlJyB9KVxyXG4gIGF3YWl0IGl0ZW1zLnVwZGF0ZShidWlsZGVyLnRvUmVzb3VyY2VzKCkpXHJcbn1cclxuXHJcbi8vIFRPRE86IHdvcmxkVHJlZSBiZWluZyBzZXQgaW4gcG9zdFNldHVwLnRzICh2aWV3ZXIpIGRvZXMgbm90IHNlZW0gdG8gY3JlYXRlIGEgcmVhY3RpdmUgZWZmZWN0XHJcbi8vIGluIGhlcmUgKGFzIGkgd2FzIGV4cGVjdGluZyBpdCB0bz8pLiBUaGVyZWZvcmUsIHJlZkhhY2srKyB0byB0cmlnZ2VyIHRoZSBjb21wdXRlZCBwcm9wIHJvb3ROb2Rlcy5cclxuLy8gUG9zc2libHkgRmFicyB3aWxsIGtub3cgbW9yZSA6KVxyXG5jb25zdCByZWZoYWNrID0gcmVmKDEpXHJcbnVzZVZpZXdlckV2ZW50TGlzdGVuZXIoVmlld2VyRXZlbnQuTG9hZENvbXBsZXRlLCAoKSA9PiB7XHJcbiAgcmVmaGFjay52YWx1ZSsrXHJcbn0pXHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvbW9kZWxzL3ZlcnNpb25zL1ZlcnNpb25zLnZ1ZSJ9