import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/workspace/moveProject/Intro.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/workspace/Avatar.vue"; import { default as __nuxt_component_1 } from "/_nuxt/components/global/illustration/ProjectShape.vue"; import { CommonAlert as __nuxt_component_2 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; 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 { 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 { ProjectNoAccessError, ProjectNotEnoughPermissionsError } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/authz/index.js"; import { usePersonalProjectLimits } from "/_nuxt/lib/projects/composables/permissions.ts"; import { ViewerLimitsDialogType } from "/_nuxt/lib/projects/helpers/limits.ts"; import { useLoadLatestVersion } from "/_nuxt/lib/viewer/composables/resources.ts"; import { useRoute } from "/_nuxt/node_modules/nuxt/dist/app/composables/router.js?v=e4f18c29"; import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "WorkspaceMoveProjectIntro", props: { project: { type: null, required: false }, limitType: { type: null, required: false } }, emits: ["cancel", "continue"], setup(__props, { expose: __expose }) { __expose(); const props = __props; const route = useRoute(); const canMoveProject = computed(() => props.project?.permissions?.canMoveToWorkspace); const { load: loadLatestVersion } = useLoadLatestVersion({ project: computed(() => props.project), resourceIdString: computed(() => route.params.modelId) // this should only be opened in the viewer anyway }); const { versionLimitFormatted } = usePersonalProjectLimits(); const isNotOwner = computed(() => { const check = canMoveProject.value; if (!check) return true; return !check.authorized && [ProjectNotEnoughPermissionsError.code, ProjectNoAccessError.code].includes(check.code); }); const __returned__ = { props, route, canMoveProject, loadLatestVersion, versionLimitFormatted, isNotOwner, get ViewerLimitsDialogType() { return ViewerLimitsDialogType; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, Fragment as _Fragment, openBlock as _openBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { class: "flex flex-col", "data-v-inspector": "components/workspace/moveProject/Intro.vue:2:3" }; const _hoisted_2 = { class: "relative bg-primary h-48 select-none", "data-v-inspector": "components/workspace/moveProject/Intro.vue:3:5" }; const _hoisted_3 = { class: "bg-foundation dark:bg-foundation-2 w-full relative border-b border-outline-2 h-full overflow-clip flex justify-center", "data-v-inspector": "components/workspace/moveProject/Intro.vue:4:7" }; const _hoisted_4 = { class: "absolute shadow-2xl rounded-md my-8 p-2 gap-2 flex align-middle top-0 border z-55 w-80 h-full bg-foundation border-outline-2", "data-v-inspector": "components/workspace/moveProject/Intro.vue:11:9" }; const _hoisted_5 = { class: "relative m-0 list-none h-[204px] w-[302px] my-20 p-0 border border-outline-2 flex bg-foundation-page justify-center rounded-md", "data-v-inspector": "components/workspace/moveProject/Intro.vue:21:9" }; const _hoisted_6 = { class: "absolute z-65 justify-center rounded-md p-2 w-full", "data-v-inspector": "components/workspace/moveProject/Intro.vue:24:11" }; const _hoisted_7 = { class: "flex justify-between w-full gap-2 h-20", "data-v-inspector": "components/workspace/moveProject/Intro.vue:25:13" }; const _hoisted_8 = { class: "absolute h-20 w-[90px] card-slide-in border border-outline-2 bg-foundation rounded-md p-4 place-items-center flex-1", "data-v-inspector": "components/workspace/moveProject/Intro.vue:26:15" }; const _hoisted_9 = { class: "border border-outline-2 bg-foundation rounded-md p-4 flex-1", "data-v-inspector": "components/workspace/moveProject/Intro.vue:34:15" }; const _hoisted_10 = { class: "border border-outline-2 bg-foundation rounded-md p-4 flex-1", "data-v-inspector": "components/workspace/moveProject/Intro.vue:37:15" }; const _hoisted_11 = { class: "w-full bg-foundation-page flex flex-col gap-6 p-6", "data-v-inspector": "components/workspace/moveProject/Intro.vue:45:5" }; const _hoisted_12 = { class: "flex flex-col gap-y-4 select-none", "data-v-inspector": "components/workspace/moveProject/Intro.vue:46:7" }; const _hoisted_13 = { class: "text-heading-sm text-foreground", "data-v-inspector": "components/workspace/moveProject/Intro.vue:47:9" }; const _hoisted_14 = { class: "flex gap-2 justify-end", "data-v-inspector": "components/workspace/moveProject/Intro.vue:80:7" }; const _hoisted_15 = { "data-v-inspector": "components/workspace/moveProject/Intro.vue:87:9" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_WorkspaceAvatar = __nuxt_component_0; const _component_IllustrationProjectShape = __nuxt_component_1; const _component_CommonAlert = __nuxt_component_2; const _component_FormButton = __nuxt_component_3; const _directive_tippy = _resolveDirective("tippy"); return _openBlock(), _createElementBlock("div", _hoisted_1, [ _createElementVNode("div", _hoisted_2, [ _createElementVNode("div", _hoisted_3, [ _cache[4] || (_cache[4] = _createElementVNode( "div", { class: "z-2 absolute -top-40 left-auto transform rotate-45 rounded-full p-40 border-[150px] border-b-white border-l-indigo-600 dark:border-l-indigo-400 border-r-rose-900 dark:border-r-rose-500 border-t-white blur-[200px]", "data-v-inspector": "components/workspace/moveProject/Intro.vue:7:9" }, null, -1 /* CACHED */ )), _createElementVNode("div", _hoisted_4, [ _createVNode(_component_WorkspaceAvatar, { name: "My workspace", logo: "", "data-v-inspector": "components/workspace/moveProject/Intro.vue:14:11" }), _cache[2] || (_cache[2] = _createElementVNode( "span", { class: "h-[30px] flex place-items-center text-foreground-3 text-body-3xs font-medium", "data-v-inspector": "components/workspace/moveProject/Intro.vue:15:11" }, " My workspace ", -1 /* CACHED */ )) ]), _createElementVNode("ul", _hoisted_5, [ _createElementVNode("li", _hoisted_6, [ _createElementVNode("div", _hoisted_7, [ _createElementVNode("div", _hoisted_8, [ _createVNode(_component_IllustrationProjectShape, { "data-v-inspector": "components/workspace/moveProject/Intro.vue:29:17" }) ]), _cache[3] || (_cache[3] = _createElementVNode( "div", { class: "border border-outline-5 border-dashed bg-foundation-2 rounded-md p-4 flex-1 place-items-center", "data-v-inspector": "components/workspace/moveProject/Intro.vue:31:15" }, null, -1 /* CACHED */ )), _createElementVNode("div", _hoisted_9, [ _createVNode(_component_IllustrationProjectShape, { class: "rotate-180", "data-v-inspector": "components/workspace/moveProject/Intro.vue:35:17" }) ]), _createElementVNode("div", _hoisted_10, [ _createVNode(_component_IllustrationProjectShape, { class: "rotate-90", "data-v-inspector": "components/workspace/moveProject/Intro.vue:38:17" }) ]) ]) ]) ]) ]) ]), _createElementVNode("div", _hoisted_11, [ _createElementVNode("div", _hoisted_12, [ _createElementVNode("h4", _hoisted_13, [ !$props.limitType ? (_openBlock(), _createElementBlock( _Fragment, { key: 0 }, [ _createTextVNode("Move your projects to a workspace to:") ], 64 /* STABLE_FRAGMENT */ )) : $props.limitType === $setup.ViewerLimitsDialogType.Version ? (_openBlock(), _createElementBlock( _Fragment, { key: 1 }, [ _createTextVNode(" Personal projects limit reached ") ], 64 /* STABLE_FRAGMENT */ )) : $props.limitType === $setup.ViewerLimitsDialogType.Federated ? (_openBlock(), _createElementBlock( _Fragment, { key: 2 }, [ _createTextVNode(" The federated models couldn't be loaded ") ], 64 /* STABLE_FRAGMENT */ )) : _createCommentVNode("v-if", true) ]), !$props.limitType ? (_openBlock(), _createElementBlock( _Fragment, { key: 0 }, [ _cache[5] || (_cache[5] = _createTextVNode( " → Create new projects and models, ", -1 /* CACHED */ )), _cache[6] || (_cache[6] = _createElementVNode( "br", { "data-v-inspector": "components/workspace/moveProject/Intro.vue:58:11" }, null, -1 /* CACHED */ )), _cache[7] || (_cache[7] = _createTextVNode( " → Invite new project collaborators, ", -1 /* CACHED */ )), _cache[8] || (_cache[8] = _createElementVNode( "br", { "data-v-inspector": "components/workspace/moveProject/Intro.vue:60:11" }, null, -1 /* CACHED */ )), _createTextVNode( " → View comments and versions older than " + _toDisplayString($setup.versionLimitFormatted) + " (paid plans only) ", 1 /* TEXT */ ) ], 64 /* STABLE_FRAGMENT */ )) : $props.limitType === $setup.ViewerLimitsDialogType.Version ? (_openBlock(), _createElementBlock( _Fragment, { key: 1 }, [ _createTextVNode( " The version you're trying to load is older than the " + _toDisplayString($setup.versionLimitFormatted) + " version history limit allowed for Personal projects. Move your project to a workspace to gain access. ", 1 /* TEXT */ ) ], 64 /* STABLE_FRAGMENT */ )) : $props.limitType === $setup.ViewerLimitsDialogType.Federated ? (_openBlock(), _createElementBlock( _Fragment, { key: 2 }, [ _createTextVNode( " One of the models is older than the " + _toDisplayString($setup.versionLimitFormatted) + " version history limit allowed for Personal projects. Move your project to a workspace to gain access. ", 1 /* TEXT */ ) ], 64 /* STABLE_FRAGMENT */ )) : _createCommentVNode("v-if", true) ]), $setup.isNotOwner ? (_openBlock(), _createBlock(_component_CommonAlert, { key: 0, color: "warning", "hide-icon": "", "data-v-inspector": "components/workspace/moveProject/Intro.vue:75:7" }, { title: _withCtx(() => [..._cache[9] || (_cache[9] = [ _createTextVNode( " You can't move the project because you're not a project owner. ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true), _createElementVNode("div", _hoisted_14, [ !$props.limitType ? (_openBlock(), _createBlock(_component_FormButton, { key: 0, color: "subtle", onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("cancel")), "data-v-inspector": "components/workspace/moveProject/Intro.vue:81:9" }, { default: _withCtx(() => [..._cache[10] || (_cache[10] = [ _createTextVNode( " Cancel ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ })) : (_openBlock(), _createBlock(_component_FormButton, { key: 1, color: "subtle", onClick: $setup.loadLatestVersion, "data-v-inspector": "components/workspace/moveProject/Intro.vue:84:9" }, { default: _withCtx(() => [..._cache[11] || (_cache[11] = [ _createTextVNode( " Load latest version ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ }, 8, ["onClick"])), _withDirectives((_openBlock(), _createElementBlock("div", _hoisted_15, [ _createVNode(_component_FormButton, { disabled: !$setup.canMoveProject?.authorized, onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("continue")), "data-v-inspector": "components/workspace/moveProject/Intro.vue:92:11" }, { default: _withCtx(() => [..._cache[12] || (_cache[12] = [ _createTextVNode( " Move project ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ }, 8, ["disabled"]) ])), [ [ _directive_tippy, $setup.canMoveProject?.authorized || $setup.isNotOwner ? "" : $setup.canMoveProject?.message ] ]) ]) ]) ]); } import "/_nuxt/components/workspace/moveProject/Intro.vue?vue&type=style&index=0&scoped=e9eedfd4&lang.css"; _sfc_main.__hmrId = "e9eedfd4"; 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], ["__scopeId", "data-v-e9eedfd4"], ["__file", "D:/speckle-server/packages/frontend-2/components/workspace/moveProject/Intro.vue"]]); //# sourceMappingURL=data:application/json;base64,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bkJOLGFBbUJNO0FBQUEsU0FsQmUsa0NBQW5CLGFBRWE7QUFBQTtVQUZpQixPQUFNO0FBQUEsVUFBVSxTQUFLLHNDQUFFLFdBQUs7QUFBQSxVQUFZLG9CQUFpQjtBQUFBOzRCQUFrRCxNQUV6STtBQUFBO2NBRnlJO0FBQUEsY0FFekk7QUFBQTtBQUFBO0FBQUE7Ozs2QkFDQSxhQUVhO0FBQUE7VUFGTSxPQUFNO0FBQUEsVUFBVSxTQUFPO0FBQUEsVUFBbUIsb0JBQWlCO0FBQUE7NEJBQWtELE1BRWhJO0FBQUE7Y0FGZ0k7QUFBQSxjQUVoSTtBQUFBO0FBQUE7QUFBQTs7Ozt1Q0FDQSxvQkFXTSxPQVhOLGFBV007QUFBQSxVQU5KLGFBS2E7QUFBQSxZQUpWLFVBQVEsQ0FBRyx1QkFBZ0I7QUFBQSxZQUMzQixTQUFLLHNDQUFFLFdBQUs7QUFBQSxZQUFjLG9CQUFpQjtBQUFBOzhCQUM3QyxNQUVEO0FBQUE7Z0JBRkM7QUFBQSxnQkFFRDtBQUFBO0FBQUE7QUFBQTs7Ozs7OztZQVR1Qix1QkFBZ0IsY0FBYyxvQkFBVSxLQUFRLHVCQUFnQjtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJJbnRyby52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZToyOjNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBiZy1wcmltYXJ5IGgtNDggc2VsZWN0LW5vbmVcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjM6NVwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJiZy1mb3VuZGF0aW9uIGRhcms6YmctZm91bmRhdGlvbi0yIHctZnVsbCByZWxhdGl2ZSBib3JkZXItYiBib3JkZXItb3V0bGluZS0yIGgtZnVsbCBvdmVyZmxvdy1jbGlwIGZsZXgganVzdGlmeS1jZW50ZXJcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjQ6N1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInotMiBhYnNvbHV0ZSAtdG9wLTQwIGxlZnQtYXV0byB0cmFuc2Zvcm0gcm90YXRlLTQ1IHJvdW5kZWQtZnVsbCBwLTQwIGJvcmRlci1bMTUwcHhdIGJvcmRlci1iLXdoaXRlIGJvcmRlci1sLWluZGlnby02MDAgZGFyazpib3JkZXItbC1pbmRpZ28tNDAwIGJvcmRlci1yLXJvc2UtOTAwIGRhcms6Ym9yZGVyLXItcm9zZS01MDAgYm9yZGVyLXQtd2hpdGUgYmx1ci1bMjAwcHhdXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZTo3OjlcIlxyXG4gICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtbWQgbXktOCBwLTIgZ2FwLTIgZmxleCBhbGlnbi1taWRkbGUgdG9wLTAgYm9yZGVyIHotNTUgdy04MCBoLWZ1bGwgYmctZm91bmRhdGlvbiBib3JkZXItb3V0bGluZS0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZToxMTo5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8V29ya3NwYWNlQXZhdGFyIG5hbWU9XCJNeSB3b3Jrc3BhY2VcIiBsb2dvPVwiXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZToxNDoxMVwiIC8+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImgtWzMwcHhdIGZsZXggcGxhY2UtaXRlbXMtY2VudGVyIHRleHQtZm9yZWdyb3VuZC0zIHRleHQtYm9keS0zeHMgZm9udC1tZWRpdW1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjE1OjExXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgTXkgd29ya3NwYWNlXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsXHJcbiAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIG0tMCBsaXN0LW5vbmUgaC1bMjA0cHhdIHctWzMwMnB4XSBteS0yMCBwLTAgYm9yZGVyIGJvcmRlci1vdXRsaW5lLTIgZmxleCBiZy1mb3VuZGF0aW9uLXBhZ2UganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6MjE6OVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwiYWJzb2x1dGUgei02NSBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHAtMiB3LWZ1bGxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjI0OjExXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiB3LWZ1bGwgZ2FwLTIgaC0yMFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6MjU6MTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGgtMjAgdy1bOTBweF0gY2FyZC1zbGlkZS1pbiBib3JkZXIgYm9yZGVyLW91dGxpbmUtMiBiZy1mb3VuZGF0aW9uIHJvdW5kZWQtbWQgcC00IHBsYWNlLWl0ZW1zLWNlbnRlciBmbGV4LTFcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjI2OjE1XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8SWxsdXN0cmF0aW9uUHJvamVjdFNoYXBlIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6Mjk6MTdcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1vdXRsaW5lLTUgYm9yZGVyLWRhc2hlZCBiZy1mb3VuZGF0aW9uLTIgcm91bmRlZC1tZCBwLTQgZmxleC0xIHBsYWNlLWl0ZW1zLWNlbnRlclwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6MzE6MTVcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci1vdXRsaW5lLTIgYmctZm91bmRhdGlvbiByb3VuZGVkLW1kIHAtNCBmbGV4LTFcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjM0OjE1XCI+XHJcbiAgICAgICAgICAgICAgICA8SWxsdXN0cmF0aW9uUHJvamVjdFNoYXBlIGNsYXNzPVwicm90YXRlLTE4MFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6MzU6MTdcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLW91dGxpbmUtMiBiZy1mb3VuZGF0aW9uIHJvdW5kZWQtbWQgcC00IGZsZXgtMVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6Mzc6MTVcIj5cclxuICAgICAgICAgICAgICAgIDxJbGx1c3RyYXRpb25Qcm9qZWN0U2hhcGUgY2xhc3M9XCJyb3RhdGUtOTBcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjM4OjE3XCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGJnLWZvdW5kYXRpb24tcGFnZSBmbGV4IGZsZXgtY29sIGdhcC02IHAtNlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6NDU6NVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAteS00IHNlbGVjdC1ub25lXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZTo0Njo3XCI+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1oZWFkaW5nLXNtIHRleHQtZm9yZWdyb3VuZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6NDc6OVwiPlxyXG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIhbGltaXRUeXBlXCI+TW92ZSB5b3VyIHByb2plY3RzIHRvIGEgd29ya3NwYWNlIHRvOjwvdGVtcGxhdGU+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwibGltaXRUeXBlID09PSBWaWV3ZXJMaW1pdHNEaWFsb2dUeXBlLlZlcnNpb25cIj5cclxuICAgICAgICAgICAgUGVyc29uYWwgcHJvamVjdHMgbGltaXQgcmVhY2hlZFxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJsaW1pdFR5cGUgPT09IFZpZXdlckxpbWl0c0RpYWxvZ1R5cGUuRmVkZXJhdGVkXCI+XHJcbiAgICAgICAgICAgIFRoZSBmZWRlcmF0ZWQgbW9kZWxzIGNvdWxkbid0IGJlIGxvYWRlZFxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L2g0PlxyXG4gICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWxpbWl0VHlwZVwiPlxyXG4gICAgICAgICAg4oaSIENyZWF0ZSBuZXcgcHJvamVjdHMgYW5kIG1vZGVscyxcclxuICAgICAgICAgIDxiciBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjU4OjExXCIgLz5cclxuICAgICAgICAgIOKGkiBJbnZpdGUgbmV3IHByb2plY3QgY29sbGFib3JhdG9ycyxcclxuICAgICAgICAgIDxiciBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjYwOjExXCIgLz5cclxuICAgICAgICAgIOKGkiBWaWV3IGNvbW1lbnRzIGFuZCB2ZXJzaW9ucyBvbGRlciB0aGFuIHt7IHZlcnNpb25MaW1pdEZvcm1hdHRlZCB9fSAocGFpZFxyXG4gICAgICAgICAgcGxhbnMgb25seSlcclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJsaW1pdFR5cGUgPT09IFZpZXdlckxpbWl0c0RpYWxvZ1R5cGUuVmVyc2lvblwiPlxyXG4gICAgICAgICAgVGhlIHZlcnNpb24geW91J3JlIHRyeWluZyB0byBsb2FkIGlzIG9sZGVyIHRoYW4gdGhlXHJcbiAgICAgICAgICB7eyB2ZXJzaW9uTGltaXRGb3JtYXR0ZWQgfX0gdmVyc2lvbiBoaXN0b3J5IGxpbWl0IGFsbG93ZWQgZm9yIFBlcnNvbmFsXHJcbiAgICAgICAgICBwcm9qZWN0cy4gTW92ZSB5b3VyIHByb2plY3QgdG8gYSB3b3Jrc3BhY2UgdG8gZ2FpbiBhY2Nlc3MuXHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwibGltaXRUeXBlID09PSBWaWV3ZXJMaW1pdHNEaWFsb2dUeXBlLkZlZGVyYXRlZFwiPlxyXG4gICAgICAgICAgT25lIG9mIHRoZSBtb2RlbHMgaXMgb2xkZXIgdGhhbiB0aGUge3sgdmVyc2lvbkxpbWl0Rm9ybWF0dGVkIH19IHZlcnNpb25cclxuICAgICAgICAgIGhpc3RvcnkgbGltaXQgYWxsb3dlZCBmb3IgUGVyc29uYWwgcHJvamVjdHMuIE1vdmUgeW91ciBwcm9qZWN0IHRvIGEgd29ya3NwYWNlXHJcbiAgICAgICAgICB0byBnYWluIGFjY2Vzcy5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPENvbW1vbkFsZXJ0IHYtaWY9XCJpc05vdE93bmVyXCIgY29sb3I9XCJ3YXJuaW5nXCIgaGlkZS1pY29uIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6NzU6N1wiPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XHJcbiAgICAgICAgICBZb3UgY2FuJ3QgbW92ZSB0aGUgcHJvamVjdCBiZWNhdXNlIHlvdSdyZSBub3QgYSBwcm9qZWN0IG93bmVyLlxyXG4gICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgIDwvQ29tbW9uQWxlcnQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGp1c3RpZnktZW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZTo4MDo3XCI+XHJcbiAgICAgICAgPEZvcm1CdXR0b24gdi1pZj1cIiFsaW1pdFR5cGVcIiBjb2xvcj1cInN1YnRsZVwiIEBjbGljaz1cIiRlbWl0KCdjYW5jZWwnKVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6ODE6OVwiPlxyXG4gICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgPC9Gb3JtQnV0dG9uPlxyXG4gICAgICAgIDxGb3JtQnV0dG9uIHYtZWxzZSBjb2xvcj1cInN1YnRsZVwiIEBjbGljaz1cImxvYWRMYXRlc3RWZXJzaW9uXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZTo4NDo5XCI+XHJcbiAgICAgICAgICBMb2FkIGxhdGVzdCB2ZXJzaW9uXHJcbiAgICAgICAgPC9Gb3JtQnV0dG9uPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIHYtdGlwcHk9XCJcclxuICAgICAgICAgICAgY2FuTW92ZVByb2plY3Q/LmF1dGhvcml6ZWQgfHwgaXNOb3RPd25lciA/ICcnIDogY2FuTW92ZVByb2plY3Q/Lm1lc3NhZ2VcclxuICAgICAgICAgIFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3dvcmtzcGFjZS9tb3ZlUHJvamVjdC9JbnRyby52dWU6ODc6OVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPEZvcm1CdXR0b25cclxuICAgICAgICAgICAgOmRpc2FibGVkPVwiIWNhbk1vdmVQcm9qZWN0Py5hdXRob3JpemVkXCJcclxuICAgICAgICAgICAgQGNsaWNrPVwiJGVtaXQoJ2NvbnRpbnVlJylcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy93b3Jrc3BhY2UvbW92ZVByb2plY3QvSW50cm8udnVlOjkyOjExXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgTW92ZSBwcm9qZWN0XHJcbiAgICAgICAgICA8L0Zvcm1CdXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgTWF5YmVOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc3BlY2tsZS9zaGFyZWQnXHJcbmltcG9ydCB7XHJcbiAgUHJvamVjdE5vQWNjZXNzRXJyb3IsXHJcbiAgUHJvamVjdE5vdEVub3VnaFBlcm1pc3Npb25zRXJyb3JcclxufSBmcm9tICdAc3BlY2tsZS9zaGFyZWQvYXV0aHonXHJcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlTW92ZVByb2plY3RNYW5hZ2VyX1Byb2plY3RGcmFnbWVudCB9IGZyb20gJ34vbGliL2NvbW1vbi9nZW5lcmF0ZWQvZ3FsL2dyYXBocWwnXHJcbmltcG9ydCB7IHVzZVBlcnNvbmFsUHJvamVjdExpbWl0cyB9IGZyb20gJ34vbGliL3Byb2plY3RzL2NvbXBvc2FibGVzL3Blcm1pc3Npb25zJ1xyXG5pbXBvcnQgeyBWaWV3ZXJMaW1pdHNEaWFsb2dUeXBlIH0gZnJvbSAnfi9saWIvcHJvamVjdHMvaGVscGVycy9saW1pdHMnXHJcbmltcG9ydCB7IHVzZUxvYWRMYXRlc3RWZXJzaW9uIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3Jlc291cmNlcydcclxuXHJcbmRlZmluZUVtaXRzPHtcclxuICBjYW5jZWw6IFtdXHJcbiAgY29udGludWU6IFtdXHJcbn0+KClcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xyXG4gIHByb2plY3Q/OiBNYXliZU51bGxPclVuZGVmaW5lZDxXb3Jrc3BhY2VNb3ZlUHJvamVjdE1hbmFnZXJfUHJvamVjdEZyYWdtZW50PlxyXG4gIGxpbWl0VHlwZT86IFZpZXdlckxpbWl0c0RpYWxvZ1R5cGVcclxufT4oKVxyXG5cclxuY29uc3Qgcm91dGUgPSB1c2VSb3V0ZSgpXHJcbmNvbnN0IGNhbk1vdmVQcm9qZWN0ID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMucHJvamVjdD8ucGVybWlzc2lvbnM/LmNhbk1vdmVUb1dvcmtzcGFjZSlcclxuY29uc3QgeyBsb2FkOiBsb2FkTGF0ZXN0VmVyc2lvbiB9ID0gdXNlTG9hZExhdGVzdFZlcnNpb24oe1xyXG4gIHByb2plY3Q6IGNvbXB1dGVkKCgpID0+IHByb3BzLnByb2plY3QpLFxyXG4gIHJlc291cmNlSWRTdHJpbmc6IGNvbXB1dGVkKCgpID0+IHJvdXRlLnBhcmFtcy5tb2RlbElkIGFzIHN0cmluZykgLy8gdGhpcyBzaG91bGQgb25seSBiZSBvcGVuZWQgaW4gdGhlIHZpZXdlciBhbnl3YXlcclxufSlcclxuY29uc3QgeyB2ZXJzaW9uTGltaXRGb3JtYXR0ZWQgfSA9IHVzZVBlcnNvbmFsUHJvamVjdExpbWl0cygpXHJcblxyXG5jb25zdCBpc05vdE93bmVyID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IGNoZWNrID0gY2FuTW92ZVByb2plY3QudmFsdWVcclxuICBpZiAoIWNoZWNrKSByZXR1cm4gdHJ1ZSAvLyBpZiBubyBwZXJtaXNzaW9uIGNoZWNrLCBhc3N1bWUgbm90IG93bmVyXHJcblxyXG4gIHJldHVybiAoXHJcbiAgICAhY2hlY2suYXV0aG9yaXplZCAmJlxyXG4gICAgKFxyXG4gICAgICBbUHJvamVjdE5vdEVub3VnaFBlcm1pc3Npb25zRXJyb3IuY29kZSwgUHJvamVjdE5vQWNjZXNzRXJyb3IuY29kZV0gYXMgc3RyaW5nW11cclxuICAgICkuaW5jbHVkZXMoY2hlY2suY29kZSlcclxuICApXHJcbn0pXHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY2FyZC1zbGlkZS1pbiB7XHJcbiAgYW5pbWF0aW9uOiAycyBzbGlkZS1pbi1yaWdodCBlYXNlLWluLW91dCBmb3J3YXJkcztcclxuICB0b3A6IDhweDtcclxuICBsZWZ0OiAtOHB4O1xyXG4gIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0O1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIHNsaWRlLWluLXJpZ2h0IHtcclxuICAwJSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgdHJhbnNsYXRlWCgwKSByb3RhdGUoLTIwZGVnKSBzY2FsZSgxLjUpO1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcblxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVgoMTZweCkgcm90YXRlKDBkZWcpIHNjYWxlKDEpO1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvd29ya3NwYWNlL21vdmVQcm9qZWN0L0ludHJvLnZ1ZSJ9