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

260 lines
22 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/comments/Panel.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/global/icon/viewer/Settings.vue";
import { FormButton as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { LayoutMenu as __nuxt_component_2 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { default as __nuxt_component_3 } from "/_nuxt/components/viewer/comments/ListItem.vue";
import { default as __nuxt_component_4 } from "/_nuxt/components/project/page/latest-items/comments/EmptyState.vue";
import { default as __nuxt_component_5 } from "/_nuxt/components/viewer/layout/SidePanel.vue";
/* Injection by vite-plugin-vue-inspector Start */
import { createElementVNode as __createElementVNode,createVNode as __createVNode,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 _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
function _createVNode(...args) { return _interopVNode(__createVNode(...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 { graphql } from "/_nuxt/lib/common/generated/gql/index.ts";
import {
useInjectedViewerInterfaceState,
useInjectedViewerLoadedResources,
useInjectedViewerRequestedResources
} from "/_nuxt/lib/viewer/composables/setup.ts";
import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts";
import { HorizontalDirection } from "/_nuxt/lib/common/composables/window.ts";
import { useId, ref, resolveComponent, computed, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
var ActionTypes = /* @__PURE__ */ ((ActionTypes2) => {
ActionTypes2["HideBubbles"] = "hide-bubbles";
ActionTypes2["IncludeArchived"] = "include-archived";
ActionTypes2["LoadedVersionsOnly"] = "loaded-versions-only";
return ActionTypes2;
})(ActionTypes || {});
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "ViewerCommentsPanel",
setup(__props, { expose: __expose }) {
__expose();
graphql(`
fragment ViewerCommentsListItem on Comment {
id
rawText
archived
author {
...LimitedUserAvatar
}
createdAt
viewedAt
replies {
totalCount
cursor
items {
...ViewerCommentsReplyItem
}
}
replyAuthors(limit: 4) {
totalCount
items {
...FormUsersSelectItem
}
}
resources {
resourceId
resourceType
}
}
`);
const { commentThreads, commentThreadsMetadata } = useInjectedViewerLoadedResources();
const { threadFilters } = useInjectedViewerRequestedResources();
const {
threads: { hideBubbles }
} = useInjectedViewerInterfaceState();
const menuId = useId();
const showVisibilityOptions = ref(false);
const settingsIcon = __nuxt_component_0;
const loadedVersionsOnly = computed({
get: () => threadFilters.value.loadedVersionsOnly || false ? "loadedVersionsOnly" : void 0,
set: (newVal) => threadFilters.value.loadedVersionsOnly = !!newVal
});
const includeArchived = computed({
get: () => threadFilters.value.includeArchived || false ? "includeArchived" : void 0,
set: (newVal) => threadFilters.value.includeArchived = !!newVal
});
const mp = useMixpanel();
watch(
loadedVersionsOnly,
(newVal) => mp.track("Comment Action", {
type: "action",
name: "settings-change",
loadedVersionsOnly: newVal
})
);
watch(
includeArchived,
(newVal) => mp.track("Comment Action", {
type: "action",
name: "settings-change",
includeArchived: newVal
})
);
watch(
includeArchived,
(newVal) => mp.track("Comment Action", {
type: "action",
name: "settings-change",
includeArchived: newVal
})
);
const actionsItems = computed(() => [
[
{
title: "Show in 3D model",
id: "hide-bubbles" /* HideBubbles */,
active: !hideBubbles.value
},
{
title: `Show resolved (${commentThreadsMetadata.value?.totalArchivedCount || 0})`,
id: "include-archived" /* IncludeArchived */,
active: !!includeArchived.value
},
{
title: "Exclude threads from other versions",
id: "loaded-versions-only" /* LoadedVersionsOnly */,
active: !!loadedVersionsOnly.value
}
]
]);
const onActionChosen = (params) => {
const { item } = params;
switch (item.id) {
case "hide-bubbles" /* HideBubbles */:
hideBubbles.value = !hideBubbles.value;
break;
case "include-archived" /* IncludeArchived */:
includeArchived.value = includeArchived.value ? void 0 : "includeArchived";
break;
case "loaded-versions-only" /* LoadedVersionsOnly */:
loadedVersionsOnly.value = loadedVersionsOnly.value ? void 0 : "loadedVersionsOnly";
break;
}
};
const __returned__ = { ActionTypes, commentThreads, commentThreadsMetadata, threadFilters, hideBubbles, menuId, showVisibilityOptions, settingsIcon, loadedVersionsOnly, includeArchived, mp, actionsItems, onActionChosen, get HorizontalDirection() {
return HorizontalDirection;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withModifiers as _withModifiers, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createCommentVNode as _createCommentVNode } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
class: "flex items-center leading-none",
"data-v-inspector": "components/viewer/comments/Panel.vue:7:7"
};
const _hoisted_2 = {
class: "flex flex-col h-full",
"data-v-inspector": "components/viewer/comments/Panel.vue:34:5"
};
const _hoisted_3 = {
class: "flex flex-col flex-1 gap-y-2 p-1",
"data-v-inspector": "components/viewer/comments/Panel.vue:35:7"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_FormButton = __nuxt_component_1;
const _component_LayoutMenu = __nuxt_component_2;
const _component_ViewerCommentsListItem = __nuxt_component_3;
const _component_ProjectPageLatestItemsCommentsEmptyState = __nuxt_component_4;
const _component_ViewerLayoutSidePanel = __nuxt_component_5;
return _openBlock(), _createBlock(_component_ViewerLayoutSidePanel, { "data-v-inspector": "components/viewer/comments/Panel.vue:2:3" }, {
title: _withCtx(() => [..._cache[3] || (_cache[3] = [
_createElementVNode(
"span",
{ "data-v-inspector": "components/viewer/comments/Panel.vue:4:7" },
"Discussions",
-1
/* CACHED */
)
])]),
actions: _withCtx(() => [
_createElementVNode("div", _hoisted_1, [
_createVNode(_component_LayoutMenu, {
open: $setup.showVisibilityOptions,
"onUpdate:open": _cache[1] || (_cache[1] = ($event) => $setup.showVisibilityOptions = $event),
"menu-id": $setup.menuId,
items: $setup.actionsItems,
"menu-position": $setup.HorizontalDirection.Right,
"mount-menu-on-body": "",
"custom-menu-items-classes": ["!w-[270px]"],
"show-ticks": "",
onClick: _cache[2] || (_cache[2] = _withModifiers(() => {
}, ["stop", "prevent"])),
onChosen: $setup.onActionChosen,
"data-v-inspector": "components/viewer/comments/Panel.vue:8:9"
}, {
default: _withCtx(() => [
_createVNode(_component_FormButton, {
"hide-text": "",
color: "subtle",
"icon-left": $setup.settingsIcon,
size: "sm",
class: _normalizeClass(
$setup.showVisibilityOptions ? "!text-primary-focus !dark:text-foreground-on-primary !bg-info-lighter" : ""
),
onClick: _cache[0] || (_cache[0] = ($event) => $setup.showVisibilityOptions = !$setup.showVisibilityOptions),
"data-v-inspector": "components/viewer/comments/Panel.vue:19:11"
}, null, 8, ["icon-left", "class"])
]),
_: 1
/* STABLE */
}, 8, ["open", "menu-id", "items", "menu-position"])
])
]),
default: _withCtx(() => [
_createElementVNode("div", _hoisted_2, [
_createElementVNode("div", _hoisted_3, [
(_openBlock(true), _createElementBlock(
_Fragment,
null,
_renderList($setup.commentThreads, (thread) => {
return _openBlock(), _createBlock(_component_ViewerCommentsListItem, {
key: thread.id,
thread,
"data-v-inspector": "components/viewer/comments/Panel.vue:36:9"
}, null, 8, ["thread"]);
}),
128
/* KEYED_FRAGMENT */
)),
$setup.commentThreads.length === 0 ? (_openBlock(), _createBlock(_component_ProjectPageLatestItemsCommentsEmptyState, {
key: 0,
"data-v-inspector": "components/viewer/comments/Panel.vue:41:9"
})) : _createCommentVNode("v-if", true)
])
])
]),
_: 1
/* STABLE */
});
}
_sfc_main.__hmrId = "f51f1f29";
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/comments/Panel.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QUFNO21DQURmLGFBSUU7QUFBQSxnQkFGQyxLQUFLLE9BQU87QUFBQSxnQkFDWjtBQUFBLGdCQUFnQixvQkFBaUI7QUFBQTs7Ozs7VUFFWSxzQkFBZSxXQUFNLG1CQUFyRSxhQUE0STtBQUFBO1lBQS9ELG9CQUFpQjtBQUFBIiwibmFtZXMiOlsiQWN0aW9uVHlwZXMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiUGFuZWwudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8Vmlld2VyTGF5b3V0U2lkZVBhbmVsIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9jb21tZW50cy9QYW5lbC52dWU6MjozXCI+XHJcbiAgICA8dGVtcGxhdGUgI3RpdGxlPlxyXG4gICAgICA8c3BhbiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvY29tbWVudHMvUGFuZWwudnVlOjQ6N1wiPkRpc2N1c3Npb25zPC9zcGFuPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjYWN0aW9ucz5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGxlYWRpbmctbm9uZVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9jb21tZW50cy9QYW5lbC52dWU6Nzo3XCI+XHJcbiAgICAgICAgPExheW91dE1lbnVcclxuICAgICAgICAgIHYtbW9kZWw6b3Blbj1cInNob3dWaXNpYmlsaXR5T3B0aW9uc1wiXHJcbiAgICAgICAgICA6bWVudS1pZD1cIm1lbnVJZFwiXHJcbiAgICAgICAgICA6aXRlbXM9XCJhY3Rpb25zSXRlbXNcIlxyXG4gICAgICAgICAgOm1lbnUtcG9zaXRpb249XCJIb3Jpem9udGFsRGlyZWN0aW9uLlJpZ2h0XCJcclxuICAgICAgICAgIG1vdW50LW1lbnUtb24tYm9keVxyXG4gICAgICAgICAgOmN1c3RvbS1tZW51LWl0ZW1zLWNsYXNzZXM9XCJbJyF3LVsyNzBweF0nXVwiXHJcbiAgICAgICAgICBzaG93LXRpY2tzXHJcbiAgICAgICAgICBAY2xpY2suc3RvcC5wcmV2ZW50XHJcbiAgICAgICAgICBAY2hvc2VuPVwib25BY3Rpb25DaG9zZW5cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvY29tbWVudHMvUGFuZWwudnVlOjg6OVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPEZvcm1CdXR0b25cclxuICAgICAgICAgICAgaGlkZS10ZXh0XHJcbiAgICAgICAgICAgIGNvbG9yPVwic3VidGxlXCJcclxuICAgICAgICAgICAgOmljb24tbGVmdD1cInNldHRpbmdzSWNvblwiXHJcbiAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgIDpjbGFzcz1cIlxyXG4gICAgICAgICAgICAgIHNob3dWaXNpYmlsaXR5T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgPyAnIXRleHQtcHJpbWFyeS1mb2N1cyAhZGFyazp0ZXh0LWZvcmVncm91bmQtb24tcHJpbWFyeSAhYmctaW5mby1saWdodGVyJ1xyXG4gICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBAY2xpY2s9XCJzaG93VmlzaWJpbGl0eU9wdGlvbnMgPSAhc2hvd1Zpc2liaWxpdHlPcHRpb25zXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2NvbW1lbnRzL1BhbmVsLnZ1ZToxOToxMVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvTGF5b3V0TWVudT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2NvbW1lbnRzL1BhbmVsLnZ1ZTozNDo1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtMSBnYXAteS0yIHAtMVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9jb21tZW50cy9QYW5lbC52dWU6MzU6N1wiPlxyXG4gICAgICAgIDxWaWV3ZXJDb21tZW50c0xpc3RJdGVtXHJcbiAgICAgICAgICB2LWZvcj1cInRocmVhZCBpbiBjb21tZW50VGhyZWFkc1wiXHJcbiAgICAgICAgICA6a2V5PVwidGhyZWFkLmlkXCJcclxuICAgICAgICAgIDp0aHJlYWQ9XCJ0aHJlYWRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvY29tbWVudHMvUGFuZWwudnVlOjM2OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPFByb2plY3RQYWdlTGF0ZXN0SXRlbXNDb21tZW50c0VtcHR5U3RhdGUgdi1pZj1cImNvbW1lbnRUaHJlYWRzLmxlbmd0aCA9PT0gMFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9jb21tZW50cy9QYW5lbC52dWU6NDE6OVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9WaWV3ZXJMYXlvdXRTaWRlUGFuZWw+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGdyYXBocWwgfSBmcm9tICd+fi9saWIvY29tbW9uL2dlbmVyYXRlZC9ncWwnXHJcbmltcG9ydCB0eXBlIHsgQ29uY3JldGVDb21wb25lbnQgfSBmcm9tICd2dWUnXHJcbmltcG9ydCB7XHJcbiAgdXNlSW5qZWN0ZWRWaWV3ZXJJbnRlcmZhY2VTdGF0ZSxcclxuICB1c2VJbmplY3RlZFZpZXdlckxvYWRlZFJlc291cmNlcyxcclxuICB1c2VJbmplY3RlZFZpZXdlclJlcXVlc3RlZFJlc291cmNlc1xyXG59IGZyb20gJ35+L2xpYi92aWV3ZXIvY29tcG9zYWJsZXMvc2V0dXAnXHJcbmltcG9ydCB7IHVzZU1peHBhbmVsIH0gZnJvbSAnfn4vbGliL2NvcmUvY29tcG9zYWJsZXMvbXAnXHJcbmltcG9ydCB0eXBlIHsgTGF5b3V0TWVudUl0ZW0gfSBmcm9tICd+fi9saWIvbGF5b3V0L2hlbHBlcnMvY29tcG9uZW50cydcclxuaW1wb3J0IHsgSG9yaXpvbnRhbERpcmVjdGlvbiB9IGZyb20gJ35+L2xpYi9jb21tb24vY29tcG9zYWJsZXMvd2luZG93J1xyXG5cclxuZW51bSBBY3Rpb25UeXBlcyB7XHJcbiAgSGlkZUJ1YmJsZXMgPSAnaGlkZS1idWJibGVzJyxcclxuICBJbmNsdWRlQXJjaGl2ZWQgPSAnaW5jbHVkZS1hcmNoaXZlZCcsXHJcbiAgTG9hZGVkVmVyc2lvbnNPbmx5ID0gJ2xvYWRlZC12ZXJzaW9ucy1vbmx5J1xyXG59XHJcblxyXG5ncmFwaHFsKGBcclxuICBmcmFnbWVudCBWaWV3ZXJDb21tZW50c0xpc3RJdGVtIG9uIENvbW1lbnQge1xyXG4gICAgaWRcclxuICAgIHJhd1RleHRcclxuICAgIGFyY2hpdmVkXHJcbiAgICBhdXRob3Ige1xyXG4gICAgICAuLi5MaW1pdGVkVXNlckF2YXRhclxyXG4gICAgfVxyXG4gICAgY3JlYXRlZEF0XHJcbiAgICB2aWV3ZWRBdFxyXG4gICAgcmVwbGllcyB7XHJcbiAgICAgIHRvdGFsQ291bnRcclxuICAgICAgY3Vyc29yXHJcbiAgICAgIGl0ZW1zIHtcclxuICAgICAgICAuLi5WaWV3ZXJDb21tZW50c1JlcGx5SXRlbVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXBseUF1dGhvcnMobGltaXQ6IDQpIHtcclxuICAgICAgdG90YWxDb3VudFxyXG4gICAgICBpdGVtcyB7XHJcbiAgICAgICAgLi4uRm9ybVVzZXJzU2VsZWN0SXRlbVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXNvdXJjZXMge1xyXG4gICAgICByZXNvdXJjZUlkXHJcbiAgICAgIHJlc291cmNlVHlwZVxyXG4gICAgfVxyXG4gIH1cclxuYClcclxuXHJcbmNvbnN0IHsgY29tbWVudFRocmVhZHMsIGNvbW1lbnRUaHJlYWRzTWV0YWRhdGEgfSA9IHVzZUluamVjdGVkVmlld2VyTG9hZGVkUmVzb3VyY2VzKClcclxuY29uc3QgeyB0aHJlYWRGaWx0ZXJzIH0gPSB1c2VJbmplY3RlZFZpZXdlclJlcXVlc3RlZFJlc291cmNlcygpXHJcbmNvbnN0IHtcclxuICB0aHJlYWRzOiB7IGhpZGVCdWJibGVzIH1cclxufSA9IHVzZUluamVjdGVkVmlld2VySW50ZXJmYWNlU3RhdGUoKVxyXG5jb25zdCBtZW51SWQgPSB1c2VJZCgpXHJcblxyXG5jb25zdCBzaG93VmlzaWJpbGl0eU9wdGlvbnMgPSByZWYoZmFsc2UpXHJcbmNvbnN0IHNldHRpbmdzSWNvbiA9IHJlc29sdmVDb21wb25lbnQoJ0ljb25WaWV3ZXJTZXR0aW5ncycpIGFzIENvbmNyZXRlQ29tcG9uZW50XHJcblxyXG5jb25zdCBsb2FkZWRWZXJzaW9uc09ubHkgPSBjb21wdXRlZCh7XHJcbiAgZ2V0OiAoKSA9PlxyXG4gICAgdGhyZWFkRmlsdGVycy52YWx1ZS5sb2FkZWRWZXJzaW9uc09ubHkgfHwgZmFsc2UgPyAnbG9hZGVkVmVyc2lvbnNPbmx5JyA6IHVuZGVmaW5lZCxcclxuICBzZXQ6IChuZXdWYWwpID0+ICh0aHJlYWRGaWx0ZXJzLnZhbHVlLmxvYWRlZFZlcnNpb25zT25seSA9ICEhbmV3VmFsKVxyXG59KVxyXG5cclxuY29uc3QgaW5jbHVkZUFyY2hpdmVkID0gY29tcHV0ZWQoe1xyXG4gIGdldDogKCkgPT5cclxuICAgIHRocmVhZEZpbHRlcnMudmFsdWUuaW5jbHVkZUFyY2hpdmVkIHx8IGZhbHNlID8gJ2luY2x1ZGVBcmNoaXZlZCcgOiB1bmRlZmluZWQsXHJcbiAgc2V0OiAobmV3VmFsKSA9PiAodGhyZWFkRmlsdGVycy52YWx1ZS5pbmNsdWRlQXJjaGl2ZWQgPSAhIW5ld1ZhbClcclxufSlcclxuXHJcbmNvbnN0IG1wID0gdXNlTWl4cGFuZWwoKVxyXG53YXRjaChsb2FkZWRWZXJzaW9uc09ubHksIChuZXdWYWwpID0+XHJcbiAgbXAudHJhY2soJ0NvbW1lbnQgQWN0aW9uJywge1xyXG4gICAgdHlwZTogJ2FjdGlvbicsXHJcbiAgICBuYW1lOiAnc2V0dGluZ3MtY2hhbmdlJyxcclxuICAgIGxvYWRlZFZlcnNpb25zT25seTogbmV3VmFsXHJcbiAgfSlcclxuKVxyXG53YXRjaChpbmNsdWRlQXJjaGl2ZWQsIChuZXdWYWwpID0+XHJcbiAgbXAudHJhY2soJ0NvbW1lbnQgQWN0aW9uJywge1xyXG4gICAgdHlwZTogJ2FjdGlvbicsXHJcbiAgICBuYW1lOiAnc2V0dGluZ3MtY2hhbmdlJyxcclxuICAgIGluY2x1ZGVBcmNoaXZlZDogbmV3VmFsXHJcbiAgfSlcclxuKVxyXG53YXRjaChpbmNsdWRlQXJjaGl2ZWQsIChuZXdWYWwpID0+XHJcbiAgbXAudHJhY2soJ0NvbW1lbnQgQWN0aW9uJywge1xyXG4gICAgdHlwZTogJ2FjdGlvbicsXHJcbiAgICBuYW1lOiAnc2V0dGluZ3MtY2hhbmdlJyxcclxuICAgIGluY2x1ZGVBcmNoaXZlZDogbmV3VmFsXHJcbiAgfSlcclxuKVxyXG5cclxuY29uc3QgYWN0aW9uc0l0ZW1zID0gY29tcHV0ZWQ8TGF5b3V0TWVudUl0ZW1bXVtdPigoKSA9PiBbXHJcbiAgW1xyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ1Nob3cgaW4gM0QgbW9kZWwnLFxyXG4gICAgICBpZDogQWN0aW9uVHlwZXMuSGlkZUJ1YmJsZXMsXHJcbiAgICAgIGFjdGl2ZTogIWhpZGVCdWJibGVzLnZhbHVlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogYFNob3cgcmVzb2x2ZWQgKCR7Y29tbWVudFRocmVhZHNNZXRhZGF0YS52YWx1ZT8udG90YWxBcmNoaXZlZENvdW50IHx8IDB9KWAsXHJcbiAgICAgIGlkOiBBY3Rpb25UeXBlcy5JbmNsdWRlQXJjaGl2ZWQsXHJcbiAgICAgIGFjdGl2ZTogISFpbmNsdWRlQXJjaGl2ZWQudmFsdWVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRpdGxlOiAnRXhjbHVkZSB0aHJlYWRzIGZyb20gb3RoZXIgdmVyc2lvbnMnLFxyXG4gICAgICBpZDogQWN0aW9uVHlwZXMuTG9hZGVkVmVyc2lvbnNPbmx5LFxyXG4gICAgICBhY3RpdmU6ICEhbG9hZGVkVmVyc2lvbnNPbmx5LnZhbHVlXHJcbiAgICB9XHJcbiAgXVxyXG5dKVxyXG5cclxuY29uc3Qgb25BY3Rpb25DaG9zZW4gPSAocGFyYW1zOiB7IGl0ZW06IExheW91dE1lbnVJdGVtOyBldmVudDogTW91c2VFdmVudCB9KSA9PiB7XHJcbiAgY29uc3QgeyBpdGVtIH0gPSBwYXJhbXNcclxuXHJcbiAgc3dpdGNoIChpdGVtLmlkKSB7XHJcbiAgICBjYXNlIEFjdGlvblR5cGVzLkhpZGVCdWJibGVzOlxyXG4gICAgICBoaWRlQnViYmxlcy52YWx1ZSA9ICFoaWRlQnViYmxlcy52YWx1ZVxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSBBY3Rpb25UeXBlcy5JbmNsdWRlQXJjaGl2ZWQ6XHJcbiAgICAgIGluY2x1ZGVBcmNoaXZlZC52YWx1ZSA9IGluY2x1ZGVBcmNoaXZlZC52YWx1ZSA/IHVuZGVmaW5lZCA6ICdpbmNsdWRlQXJjaGl2ZWQnXHJcbiAgICAgIGJyZWFrXHJcbiAgICBjYXNlIEFjdGlvblR5cGVzLkxvYWRlZFZlcnNpb25zT25seTpcclxuICAgICAgbG9hZGVkVmVyc2lvbnNPbmx5LnZhbHVlID0gbG9hZGVkVmVyc2lvbnNPbmx5LnZhbHVlXHJcbiAgICAgICAgPyB1bmRlZmluZWRcclxuICAgICAgICA6ICdsb2FkZWRWZXJzaW9uc09ubHknXHJcbiAgICAgIGJyZWFrXHJcbiAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy92aWV3ZXIvY29tbWVudHMvUGFuZWwudnVlIn0=