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

338 lines
28 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/workspace/moveProject/Confirm.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/billing/TransitionCards.vue";
import { UserAvatar as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { FormButton 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/workspace/RegionStaticDataDisclaimer.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 { useQuery } from "/_nuxt/node_modules/@vue/apollo-composable/dist/index.mjs?v=e4f18c29";
import { moveToWorkspaceDryRunQuery } from "/_nuxt/lib/projects/graphql/queries.ts";
import { useMoveProjectToWorkspace } from "/_nuxt/lib/projects/composables/projectManagement.ts";
import {
useWorkspaceCustomDataResidencyDisclaimer,
RegionStaticDataDisclaimerVariant
} from "/_nuxt/lib/workspaces/composables/region.ts";
import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "WorkspaceMoveProjectConfirm",
props: {
project: { type: Object, required: true },
workspace: { type: Object, required: true },
eventSource: { type: String, required: false }
},
emits: ["move-complete", "back"],
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const emit = __emit;
const moveProject = useMoveProjectToWorkspace();
const handleConfirm = async () => {
const res = await moveProject({
projectId: props.project.id,
workspaceId: props.workspace.id,
workspaceName: props.workspace.name,
eventSource: props.eventSource
});
if (res?.id) {
emit("move-complete");
}
};
const { showRegionStaticDataDisclaimer, triggerAction } = useWorkspaceCustomDataResidencyDisclaimer({
workspace: computed(() => props.workspace),
onConfirmAction: handleConfirm
});
const { result: dryRunResult } = useQuery(
moveToWorkspaceDryRunQuery,
() => ({
projectId: props.project.id,
workspaceId: props.workspace.id,
limit: 20
}),
() => ({
enabled: !!props.project.id && !!props.workspace.id
})
);
const dryRunResultMembers = computed(
() => dryRunResult.value?.project.moveToWorkspaceDryRun.addedToWorkspace || []
);
const dryRunResultMembersCount = computed(
() => dryRunResult.value?.project.moveToWorkspaceDryRun.addedToWorkspaceTotalCount
);
const dryRunResultMembersInfoText = computed(() => {
if (!dryRunResultMembers.value || !dryRunResultMembersCount.value) return "";
if (dryRunResultMembers.value?.length > 20 && dryRunResultMembersCount.value > 20) {
const diff = dryRunResultMembersCount.value - dryRunResultMembers.value.length;
return `and ${diff} more`;
}
return "";
});
const transitionItems = {
project: {
title: "Viewer seat",
description: "Can view and comment on projects"
},
workspace: {
title: "Editor seat",
description: "Can view and comment on projects"
}
};
__expose({
onConfirm: triggerAction
});
const __returned__ = { props, emit, moveProject, handleConfirm, showRegionStaticDataDisclaimer, triggerAction, dryRunResult, dryRunResultMembers, dryRunResultMembersCount, dryRunResultMembersInfoText, transitionItems, get RegionStaticDataDisclaimerVariant() {
return RegionStaticDataDisclaimerVariant;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = { "data-v-inspector": "components/workspace/moveProject/Confirm.vue:2:3" };
const _hoisted_2 = {
class: "flex flex-col",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:8:9"
};
const _hoisted_3 = {
class: "flex items-center gap-4 justify-between",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:10:11"
};
const _hoisted_4 = {
class: "text-heading-sm mt-1",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:11:13"
};
const _hoisted_5 = {
class: "text-body-2xs font-medium",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:12:13"
};
const _hoisted_6 = {
class: "flex flex-col",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:19:9"
};
const _hoisted_7 = {
class: "text-heading-sm mt-1",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:21:11"
};
const _hoisted_8 = {
class: "flex flex-col gap-y-4",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:25:5"
};
const _hoisted_9 = {
key: 0,
class: "pt-2 gap-y-2 flex flex-col border-t border-outline-3",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:31:7"
};
const _hoisted_10 = {
class: "text-body-2xs text-foreground-2 mt-2 mb-1",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:35:9"
};
const _hoisted_11 = {
class: "w-full",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:42:9"
};
const _hoisted_12 = {
class: "text-foreground text-body-2xs",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:49:13"
};
const _hoisted_13 = {
key: 0,
class: "text-body-2xs text-foreground-2",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:52:9"
};
const _hoisted_14 = {
class: "flex justify-end gap-2 mt-4",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:57:7"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_BillingTransitionCards = __nuxt_component_0;
const _component_UserAvatar = __nuxt_component_1;
const _component_FormButton = __nuxt_component_2;
const _component_WorkspaceRegionStaticDataDisclaimer = __nuxt_component_3;
return _openBlock(), _createElementBlock("div", _hoisted_1, [
_createVNode(_component_BillingTransitionCards, {
"current-state": $setup.transitionItems.project,
"new-state": $setup.transitionItems.workspace,
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:3:5"
}, {
"current-state": _withCtx(() => [
_createElementVNode("div", _hoisted_2, [
_cache[2] || (_cache[2] = _createElementVNode(
"div",
{
class: "text-foreground-2 text-body-3xs",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:9:11"
},
"Project",
-1
/* CACHED */
)),
_createElementVNode("div", _hoisted_3, [
_createElementVNode(
"div",
_hoisted_4,
_toDisplayString($props.project.name),
1
/* TEXT */
),
_createElementVNode(
"div",
_hoisted_5,
_toDisplayString($props.project.modelCount.totalCount) + " models ",
1
/* TEXT */
)
])
])
]),
"new-state": _withCtx(() => [
_createElementVNode("div", _hoisted_6, [
_cache[3] || (_cache[3] = _createElementVNode(
"div",
{
class: "text-foreground-2 text-body-3xs",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:20:11"
},
"Workspace",
-1
/* CACHED */
)),
_createElementVNode(
"div",
_hoisted_7,
_toDisplayString($props.workspace.name),
1
/* TEXT */
)
])
]),
_: 1
/* STABLE */
}, 8, ["current-state", "new-state"]),
_createElementVNode("div", _hoisted_8, [
_cache[6] || (_cache[6] = _createElementVNode(
"p",
{
class: "text-body-2xs text-foreground-2 mt-4",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:26:7"
},
" The project, including all its data, will be moved to the workspace, where all existing members will have access by default. ",
-1
/* CACHED */
)),
$setup.dryRunResultMembers.length > 0 ? (_openBlock(), _createElementBlock("div", _hoisted_9, [
_createElementVNode(
"p",
_hoisted_10,
_toDisplayString($setup.dryRunResultMembers.length === 1 ? "1 person will also be added as a free member to the workspace." : `${$setup.dryRunResultMembers.length} people will also be added as free members to the workspace.`),
1
/* TEXT */
),
_createElementVNode("div", _hoisted_11, [
(_openBlock(true), _createElementBlock(
_Fragment,
null,
_renderList($setup.dryRunResultMembers, (user) => {
return _openBlock(), _createElementBlock("div", {
key: `dry-run-user-${user.id}`,
class: "flex items-center py-1.5 px-2 border-t border-x last:border-b border-outline-3 first:rounded-t-lg last:rounded-b-lg gap-x-1.5",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:43:11"
}, [
_createVNode(_component_UserAvatar, {
"hide-tooltip": "",
user,
size: "sm",
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:48:13"
}, null, 8, ["user"]),
_createElementVNode(
"p",
_hoisted_12,
_toDisplayString(user.name),
1
/* TEXT */
)
]);
}),
128
/* KEYED_FRAGMENT */
))
]),
$setup.dryRunResultMembersInfoText ? (_openBlock(), _createElementBlock(
"p",
_hoisted_13,
_toDisplayString($setup.dryRunResultMembersInfoText),
1
/* TEXT */
)) : _createCommentVNode("v-if", true)
])) : _createCommentVNode("v-if", true),
_createElementVNode("div", _hoisted_14, [
_createVNode(_component_FormButton, {
color: "outline",
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("back")),
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:58:9"
}, {
default: _withCtx(() => [..._cache[4] || (_cache[4] = [
_createTextVNode(
"Back",
-1
/* CACHED */
)
])]),
_: 1
/* STABLE */
}),
_createVNode(_component_FormButton, {
color: "primary",
onClick: $setup.triggerAction,
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:59:9"
}, {
default: _withCtx(() => [..._cache[5] || (_cache[5] = [
_createTextVNode(
"Move",
-1
/* CACHED */
)
])]),
_: 1
/* STABLE */
}, 8, ["onClick"])
])
]),
$setup.showRegionStaticDataDisclaimer ? (_openBlock(), _createBlock(_component_WorkspaceRegionStaticDataDisclaimer, {
key: 0,
open: $setup.showRegionStaticDataDisclaimer,
"onUpdate:open": _cache[1] || (_cache[1] = ($event) => $setup.showRegionStaticDataDisclaimer = $event),
variant: $setup.RegionStaticDataDisclaimerVariant.MoveProjectIntoWorkspace,
"data-v-inspector": "components/workspace/moveProject/Confirm.vue:62:5"
}, null, 8, ["open", "variant"])) : _createCommentVNode("v-if", true)
]);
}
_sfc_main.__hmrId = "7c16c646";
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/workspace/moveProject/Confirm.vue"]]);
//# sourceMappingURL=data:application/json;base64,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QVNNO0FBQUEsNkJBUko7QUFBQSxZQU9NO0FBQUE7QUFBQSx3QkFOVyw0QkFBbUIsQ0FBM0IsU0FBSTttQ0FEYixvQkFPTTtBQUFBLGdCQUxILEtBQUcsZ0JBQWtCLEtBQUssRUFBRTtBQUFBLGdCQUM3QixPQUFNO0FBQUEsZ0JBQWdJLG9CQUFpQjtBQUFBO2dCQUV2SixhQUF3SDtBQUFBLGtCQUE1RztBQUFBLGtCQUFjO0FBQUEsa0JBQVksTUFBSztBQUFBLGtCQUFLLG9CQUFpQjtBQUFBO2dCQUNqRTtBQUFBLGtCQUFrSTtBQUFBLGtCQUFsSTtBQUFBLGtCQUFrSSxpQkFBaEIsS0FBSyxJQUFJO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7OztRQUd0SCxvREFBVDtBQUFBLFVBRUk7QUFBQSxVQUZKO0FBQUEsVUFFSSxpQkFEQyxrQ0FBMkI7QUFBQTtBQUFBO0FBQUE7O01BSWxDLG9CQUdNLE9BSE4sYUFHTTtBQUFBLFFBRkosYUFBeUk7QUFBQSxVQUE3SCxPQUFNO0FBQUEsVUFBVyxTQUFLLHNDQUFFLFdBQUs7QUFBQSxVQUFVLG9CQUFpQjtBQUFBOzRCQUFvRCxNQUFJO0FBQUE7Y0FBSjtBQUFBLGNBQUk7QUFBQTtBQUFBO0FBQUE7Ozs7UUFDNUgsYUFBeUk7QUFBQSxVQUE3SCxPQUFNO0FBQUEsVUFBVyxTQUFPO0FBQUEsVUFBZSxvQkFBaUI7QUFBQTs0QkFBb0QsTUFBSTtBQUFBO2NBQUo7QUFBQSxjQUFJO0FBQUE7QUFBQTtBQUFBOzs7Ozs7SUFJeEgsdURBRFIsYUFJRTtBQUFBO01BRlEsTUFBTTtBQUFBLHFHQUE4QjtBQUFBLE1BQzNDLFNBQVMseUNBQWtDO0FBQUEsTUFBMEIsb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkNvbmZpcm0udnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZToyOjNcIj5cclxuICAgIDxCaWxsaW5nVHJhbnNpdGlvbkNhcmRzXHJcbiAgICAgIDpjdXJyZW50LXN0YXRlPVwidHJhbnNpdGlvbkl0ZW1zLnByb2plY3RcIlxyXG4gICAgICA6bmV3LXN0YXRlPVwidHJhbnNpdGlvbkl0ZW1zLndvcmtzcGFjZVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZTozOjVcIlxyXG4gICAgPlxyXG4gICAgICA8dGVtcGxhdGUgI2N1cnJlbnQtc3RhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6ODo5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kLTIgdGV4dC1ib2R5LTN4c1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZTo5OjExXCI+UHJvamVjdDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IGp1c3RpZnktYmV0d2VlblwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZToxMDoxMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1oZWFkaW5nLXNtIG10LTFcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6MTE6MTNcIj57eyBwcm9qZWN0Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYm9keS0yeHMgZm9udC1tZWRpdW1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6MTI6MTNcIj5cclxuICAgICAgICAgICAgICB7eyBwcm9qZWN0Lm1vZGVsQ291bnQudG90YWxDb3VudCB9fSBtb2RlbHNcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPHRlbXBsYXRlICNuZXctc3RhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6MTk6OVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZm9yZWdyb3VuZC0yIHRleHQtYm9keS0zeHNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6MjA6MTFcIj5Xb3Jrc3BhY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWhlYWRpbmctc20gbXQtMVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZToyMToxMVwiPnt7IHdvcmtzcGFjZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L0JpbGxpbmdUcmFuc2l0aW9uQ2FyZHM+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAteS00XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0NvbmZpcm0udnVlOjI1OjVcIj5cclxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWJvZHktMnhzIHRleHQtZm9yZWdyb3VuZC0yIG10LTRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6MjY6N1wiPlxyXG4gICAgICAgIFRoZSBwcm9qZWN0LCBpbmNsdWRpbmcgYWxsIGl0cyBkYXRhLCB3aWxsIGJlIG1vdmVkIHRvIHRoZSB3b3Jrc3BhY2UsIHdoZXJlIGFsbFxyXG4gICAgICAgIGV4aXN0aW5nIG1lbWJlcnMgd2lsbCBoYXZlIGFjY2VzcyBieSBkZWZhdWx0LlxyXG4gICAgICA8L3A+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgdi1pZj1cImRyeVJ1blJlc3VsdE1lbWJlcnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgY2xhc3M9XCJwdC0yIGdhcC15LTIgZmxleCBmbGV4LWNvbCBib3JkZXItdCBib3JkZXItb3V0bGluZS0zXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0NvbmZpcm0udnVlOjMxOjdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWJvZHktMnhzIHRleHQtZm9yZWdyb3VuZC0yIG10LTIgbWItMVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZTozNTo5XCI+XHJcbiAgICAgICAgICB7e1xyXG4gICAgICAgICAgICBkcnlSdW5SZXN1bHRNZW1iZXJzLmxlbmd0aCA9PT0gMVxyXG4gICAgICAgICAgICAgID8gJzEgcGVyc29uIHdpbGwgYWxzbyBiZSBhZGRlZCBhcyBhIGZyZWUgbWVtYmVyIHRvIHRoZSB3b3Jrc3BhY2UuJ1xyXG4gICAgICAgICAgICAgIDogYCR7ZHJ5UnVuUmVzdWx0TWVtYmVycy5sZW5ndGh9IHBlb3BsZSB3aWxsIGFsc28gYmUgYWRkZWQgYXMgZnJlZSBtZW1iZXJzIHRvIHRoZSB3b3Jrc3BhY2UuYFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZTo0Mjo5XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHYtZm9yPVwidXNlciBpbiBkcnlSdW5SZXN1bHRNZW1iZXJzXCJcclxuICAgICAgICAgICAgOmtleT1cImBkcnktcnVuLXVzZXItJHt1c2VyLmlkfWBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHB5LTEuNSBweC0yIGJvcmRlci10IGJvcmRlci14IGxhc3Q6Ym9yZGVyLWIgYm9yZGVyLW91dGxpbmUtMyBmaXJzdDpyb3VuZGVkLXQtbGcgbGFzdDpyb3VuZGVkLWItbGcgZ2FwLXgtMS41XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0NvbmZpcm0udnVlOjQzOjExXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFVzZXJBdmF0YXIgaGlkZS10b29sdGlwIDp1c2VyPVwidXNlclwiIHNpemU9XCJzbVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZTo0ODoxM1wiIC8+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kIHRleHQtYm9keS0yeHNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6NDk6MTNcIj57eyB1c2VyLm5hbWUgfX08L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cCB2LWlmPVwiZHJ5UnVuUmVzdWx0TWVtYmVyc0luZm9UZXh0XCIgY2xhc3M9XCJ0ZXh0LWJvZHktMnhzIHRleHQtZm9yZWdyb3VuZC0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0NvbmZpcm0udnVlOjUyOjlcIj5cclxuICAgICAgICAgIHt7IGRyeVJ1blJlc3VsdE1lbWJlcnNJbmZvVGV4dCB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiBtdC00XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0NvbmZpcm0udnVlOjU3OjdcIj5cclxuICAgICAgICA8Rm9ybUJ1dHRvbiBjb2xvcj1cIm91dGxpbmVcIiBAY2xpY2s9XCIkZW1pdCgnYmFjaycpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0NvbmZpcm0udnVlOjU4OjlcIj5CYWNrPC9Gb3JtQnV0dG9uPlxyXG4gICAgICAgIDxGb3JtQnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIEBjbGljaz1cInRyaWdnZXJBY3Rpb25cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWU6NTk6OVwiPk1vdmU8L0Zvcm1CdXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8V29ya3NwYWNlUmVnaW9uU3RhdGljRGF0YURpc2NsYWltZXJcclxuICAgICAgdi1pZj1cInNob3dSZWdpb25TdGF0aWNEYXRhRGlzY2xhaW1lclwiXHJcbiAgICAgIHYtbW9kZWw6b3Blbj1cInNob3dSZWdpb25TdGF0aWNEYXRhRGlzY2xhaW1lclwiXHJcbiAgICAgIDp2YXJpYW50PVwiUmVnaW9uU3RhdGljRGF0YURpc2NsYWltZXJWYXJpYW50Lk1vdmVQcm9qZWN0SW50b1dvcmtzcGFjZVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9Db25maXJtLnZ1ZTo2Mjo1XCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgdHlwZSB7XHJcbiAgV29ya3NwYWNlTW92ZVByb2plY3RNYW5hZ2VyX1Byb2plY3RGcmFnbWVudCxcclxuICBXb3Jrc3BhY2VNb3ZlUHJvamVjdFNlbGVjdFdvcmtzcGFjZV9Xb3Jrc3BhY2VGcmFnbWVudFxyXG59IGZyb20gJ35+L2xpYi9jb21tb24vZ2VuZXJhdGVkL2dxbC9ncmFwaHFsJ1xyXG5pbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gJ0B2dWUvYXBvbGxvLWNvbXBvc2FibGUnXHJcbmltcG9ydCB7IG1vdmVUb1dvcmtzcGFjZURyeVJ1blF1ZXJ5IH0gZnJvbSAnfi9saWIvcHJvamVjdHMvZ3JhcGhxbC9xdWVyaWVzJ1xyXG5pbXBvcnQgeyB1c2VNb3ZlUHJvamVjdFRvV29ya3NwYWNlIH0gZnJvbSAnfi9saWIvcHJvamVjdHMvY29tcG9zYWJsZXMvcHJvamVjdE1hbmFnZW1lbnQnXHJcbmltcG9ydCB7XHJcbiAgdXNlV29ya3NwYWNlQ3VzdG9tRGF0YVJlc2lkZW5jeURpc2NsYWltZXIsXHJcbiAgUmVnaW9uU3RhdGljRGF0YURpc2NsYWltZXJWYXJpYW50XHJcbn0gZnJvbSAnfi9saWIvd29ya3NwYWNlcy9jb21wb3NhYmxlcy9yZWdpb24nXHJcblxyXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcclxuICBwcm9qZWN0OiBXb3Jrc3BhY2VNb3ZlUHJvamVjdE1hbmFnZXJfUHJvamVjdEZyYWdtZW50XHJcbiAgd29ya3NwYWNlOiBXb3Jrc3BhY2VNb3ZlUHJvamVjdFNlbGVjdFdvcmtzcGFjZV9Xb3Jrc3BhY2VGcmFnbWVudFxyXG4gIGV2ZW50U291cmNlPzogc3RyaW5nXHJcbn0+KClcclxuXHJcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XHJcbiAgKGU6ICdtb3ZlLWNvbXBsZXRlJyk6IHZvaWRcclxuICAoZTogJ2JhY2snKTogdm9pZFxyXG59PigpXHJcblxyXG5jb25zdCBtb3ZlUHJvamVjdCA9IHVzZU1vdmVQcm9qZWN0VG9Xb3Jrc3BhY2UoKVxyXG5cclxuY29uc3QgaGFuZGxlQ29uZmlybSA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCByZXMgPSBhd2FpdCBtb3ZlUHJvamVjdCh7XHJcbiAgICBwcm9qZWN0SWQ6IHByb3BzLnByb2plY3QuaWQsXHJcbiAgICB3b3Jrc3BhY2VJZDogcHJvcHMud29ya3NwYWNlLmlkLFxyXG4gICAgd29ya3NwYWNlTmFtZTogcHJvcHMud29ya3NwYWNlLm5hbWUsXHJcbiAgICBldmVudFNvdXJjZTogcHJvcHMuZXZlbnRTb3VyY2VcclxuICB9KVxyXG4gIGlmIChyZXM/LmlkKSB7XHJcbiAgICBlbWl0KCdtb3ZlLWNvbXBsZXRlJylcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IHsgc2hvd1JlZ2lvblN0YXRpY0RhdGFEaXNjbGFpbWVyLCB0cmlnZ2VyQWN0aW9uIH0gPVxyXG4gIHVzZVdvcmtzcGFjZUN1c3RvbURhdGFSZXNpZGVuY3lEaXNjbGFpbWVyKHtcclxuICAgIHdvcmtzcGFjZTogY29tcHV0ZWQoKCkgPT4gcHJvcHMud29ya3NwYWNlKSxcclxuICAgIG9uQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybVxyXG4gIH0pXHJcblxyXG5jb25zdCB7IHJlc3VsdDogZHJ5UnVuUmVzdWx0IH0gPSB1c2VRdWVyeShcclxuICBtb3ZlVG9Xb3Jrc3BhY2VEcnlSdW5RdWVyeSxcclxuICAoKSA9PiAoe1xyXG4gICAgcHJvamVjdElkOiBwcm9wcy5wcm9qZWN0LmlkLFxyXG4gICAgd29ya3NwYWNlSWQ6IHByb3BzLndvcmtzcGFjZS5pZCxcclxuICAgIGxpbWl0OiAyMFxyXG4gIH0pLFxyXG4gICgpID0+ICh7XHJcbiAgICBlbmFibGVkOiAhIXByb3BzLnByb2plY3QuaWQgJiYgISFwcm9wcy53b3Jrc3BhY2UuaWRcclxuICB9KVxyXG4pXHJcblxyXG5jb25zdCBkcnlSdW5SZXN1bHRNZW1iZXJzID0gY29tcHV0ZWQoXHJcbiAgKCkgPT4gZHJ5UnVuUmVzdWx0LnZhbHVlPy5wcm9qZWN0Lm1vdmVUb1dvcmtzcGFjZURyeVJ1bi5hZGRlZFRvV29ya3NwYWNlIHx8IFtdXHJcbilcclxuY29uc3QgZHJ5UnVuUmVzdWx0TWVtYmVyc0NvdW50ID0gY29tcHV0ZWQoXHJcbiAgKCkgPT4gZHJ5UnVuUmVzdWx0LnZhbHVlPy5wcm9qZWN0Lm1vdmVUb1dvcmtzcGFjZURyeVJ1bi5hZGRlZFRvV29ya3NwYWNlVG90YWxDb3VudFxyXG4pXHJcbmNvbnN0IGRyeVJ1blJlc3VsdE1lbWJlcnNJbmZvVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAoIWRyeVJ1blJlc3VsdE1lbWJlcnMudmFsdWUgfHwgIWRyeVJ1blJlc3VsdE1lbWJlcnNDb3VudC52YWx1ZSkgcmV0dXJuICcnXHJcblxyXG4gIGlmIChkcnlSdW5SZXN1bHRNZW1iZXJzLnZhbHVlPy5sZW5ndGggPiAyMCAmJiBkcnlSdW5SZXN1bHRNZW1iZXJzQ291bnQudmFsdWUgPiAyMCkge1xyXG4gICAgY29uc3QgZGlmZiA9IGRyeVJ1blJlc3VsdE1lbWJlcnNDb3VudC52YWx1ZSAtIGRyeVJ1blJlc3VsdE1lbWJlcnMudmFsdWUubGVuZ3RoXHJcbiAgICByZXR1cm4gYGFuZCAke2RpZmZ9IG1vcmVgXHJcbiAgfVxyXG5cclxuICByZXR1cm4gJydcclxufSlcclxuXHJcbmNvbnN0IHRyYW5zaXRpb25JdGVtcyA9IHtcclxuICBwcm9qZWN0OiB7XHJcbiAgICB0aXRsZTogJ1ZpZXdlciBzZWF0JyxcclxuICAgIGRlc2NyaXB0aW9uOiAnQ2FuIHZpZXcgYW5kIGNvbW1lbnQgb24gcHJvamVjdHMnXHJcbiAgfSxcclxuICB3b3Jrc3BhY2U6IHtcclxuICAgIHRpdGxlOiAnRWRpdG9yIHNlYXQnLFxyXG4gICAgZGVzY3JpcHRpb246ICdDYW4gdmlldyBhbmQgY29tbWVudCBvbiBwcm9qZWN0cydcclxuICB9XHJcbn0gYXMgY29uc3RcclxuXHJcbmRlZmluZUV4cG9zZSh7XHJcbiAgb25Db25maXJtOiB0cmlnZ2VyQWN0aW9uXHJcbn0pXHJcbjwvc2NyaXB0PlxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvQ29uZmlybS52dWUifQ==