import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/dataviewer/Row.vue");import { default as __nuxt_component_0 } from "/_nuxt/components/viewer/dataviewer/Object.vue"; /* Injection by vite-plugin-vue-inspector Start */ import { createBlock as __createBlock,createElementVNode as __createElementVNode,createElementBlock as __createElementBlock,createVNode as __createVNode } 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 _createBlock(...args) { return _interopVNode(__createBlock(...args)) } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) } function _createVNode(...args) { return _interopVNode(__createVNode(...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 { ChevronRightIcon, ArrowUpRightIcon, FunnelIcon } from "/_nuxt/node_modules/.cache/vite/client/deps/@heroicons_vue_20_solid.js?v=e4f18c29"; import { modelRoute } from "/_nuxt/lib/common/helpers/route.ts"; import { useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts"; import { useFilterUtilities } from "/_nuxt/lib/viewer/composables/filtering/filtering.ts"; import { useCameraUtilities } from "/_nuxt/lib/viewer/composables/ui.ts"; import { ref, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "ViewerDataviewerRow", props: { prop: { type: Object, required: true } }, setup(__props, { expose: __expose }) { __expose(); const props = __props; const { projectId, ui: { filters } } = useInjectedViewerState(); const { isolateObjects, resetFilters } = useFilterUtilities(); const { zoom } = useCameraUtilities(); const expanded = ref(false); const expandable = computed(() => { return props.prop.type === "array" || props.prop.type === "object"; }); const arrayLen = computed(() => { if (props.prop.type !== "array") return; const arr = props.prop.value; return arr.length; }); const castProp = computed(() => { return props.prop.value; }); const handleExpand = () => { if (!expandable.value) return; expanded.value = !expanded.value; }; const isDetached = computed(() => { return props.prop.value.referencedId; }); const selectionLink = computed(() => { const refId = props.prop.value.referencedId; if (!refId) return; return modelRoute(projectId.value, refId); }); const handleHighlight = () => { if (!isDetached.value) return; const isIsolated = filters.isolatedObjectsSet.value?.has(isDetached.value); if (isIsolated) return resetFilters(); zoom([isDetached.value]); resetFilters(); isolateObjects([isDetached.value]); }; const __returned__ = { props, projectId, filters, isolateObjects, resetFilters, zoom, expanded, expandable, arrayLen, castProp, handleExpand, isDetached, selectionLink, handleHighlight, get ChevronRightIcon() { return ChevronRightIcon; }, get ArrowUpRightIcon() { return ArrowUpRightIcon; }, get FunnelIcon() { return FunnelIcon; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { class: "col-span-1 mr-1 flex items-center font-medium", "data-v-inspector": "components/viewer/dataviewer/Row.vue:15:7" }; const _hoisted_2 = ["title"]; const _hoisted_3 = { key: 0, class: "col-span-2 truncate select-all", "data-v-inspector": "components/viewer/dataviewer/Row.vue:24:7" }; const _hoisted_4 = { key: 1, class: "col-span-2 truncate flex items-center justify-between", "data-v-inspector": "components/viewer/dataviewer/Row.vue:27:7" }; const _hoisted_5 = { key: 0, class: "text-body-3xs", "data-v-inspector": "components/viewer/dataviewer/Row.vue:32:9" }; const _hoisted_6 = { key: 1, class: "mr-1 flex space-x-1", "data-v-inspector": "components/viewer/dataviewer/Row.vue:33:9" }; const _hoisted_7 = ["href"]; const _hoisted_8 = { key: 0, class: "w-full pl-1 pt-2", "data-v-inspector": "components/viewer/dataviewer/Row.vue:53:5" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_ViewerDataviewerObject = __nuxt_component_0; return _openBlock(), _createElementBlock( "div", { class: _normalizeClass(["w-full rounded pl-1 py-0.5 text-body-3xs border-l-2", [ $setup.expandable ? "border-foreground" : "border-transparent", $setup.expanded ? "border-neutral-500 border-opacity-30" : "" ]]), "data-v-inspector": "components/viewer/dataviewer/Row.vue:3:3" }, [ _createCommentVNode(" eslint-disable-next-line vuejs-accessibility/click-events-have-key-events "), _createElementVNode( "div", { class: _normalizeClass(`grid grid-cols-3 pr-1 ${$setup.expandable ? "cursor-pointer" : ""}`), onClick: $setup.handleExpand, "data-v-inspector": "components/viewer/dataviewer/Row.vue:11:5" }, [ _createElementVNode("div", _hoisted_1, [ $setup.expandable ? (_openBlock(), _createBlock($setup["ChevronRightIcon"], { key: 0, class: _normalizeClass(`w-3 ${$setup.expanded ? "rotate-90" : ""} transition shrink-0 `), "data-v-inspector": "components/viewer/dataviewer/Row.vue:16:9" }, null, 8, ["class"])) : _createCommentVNode("v-if", true), _createElementVNode("span", { class: "select-all truncate", title: `${$props.prop.key} | ${$props.prop.type}`, "data-v-inspector": "components/viewer/dataviewer/Row.vue:20:9" }, _toDisplayString($props.prop.key), 9, _hoisted_2) ]), !$setup.expandable ? (_openBlock(), _createElementBlock( "div", _hoisted_3, _toDisplayString($props.prop.value), 1 /* TEXT */ )) : _createCommentVNode("v-if", true), $setup.expandable ? (_openBlock(), _createElementBlock("div", _hoisted_4, [ _createTextVNode( _toDisplayString($props.prop.type) + " ", 1 /* TEXT */ ), $props.prop.type === "array" ? (_openBlock(), _createElementBlock( "span", _hoisted_5, "(" + _toDisplayString($setup.arrayLen) + ")", 1 /* TEXT */ )) : _createCommentVNode("v-if", true), $setup.isDetached ? (_openBlock(), _createElementBlock("span", _hoisted_6, [ _createCommentVNode(" eslint-disable-next-line vuejs-accessibility/anchor-has-content "), _createElementVNode("a", { title: "detached object - click to open in a new tab", href: $setup.selectionLink, target: "_blank", class: "hover:text-primary", "data-v-inspector": "components/viewer/dataviewer/Row.vue:35:11" }, [ _createVNode($setup["ArrowUpRightIcon"], { class: "w-3", "data-v-inspector": "components/viewer/dataviewer/Row.vue:41:13" }) ], 8, _hoisted_7), _createElementVNode("button", { title: "isolate objects", class: "hover:text-primary", onClick: _withModifiers($setup.handleHighlight, ["stop"]), "data-v-inspector": "components/viewer/dataviewer/Row.vue:43:11" }, [ _createVNode($setup["FunnelIcon"], { class: "w-2", "data-v-inspector": "components/viewer/dataviewer/Row.vue:48:13" }) ]) ])) : _createCommentVNode("v-if", true) ])) : _createCommentVNode("v-if", true) ], 2 /* CLASS */ ), $setup.expandable && $setup.expanded ? (_openBlock(), _createElementBlock("div", _hoisted_8, [ _createVNode(_component_ViewerDataviewerObject, { object: $setup.castProp, "data-v-inspector": "components/viewer/dataviewer/Row.vue:54:7" }, null, 8, ["object"]) ])) : _createCommentVNode("v-if", true) ], 2 /* CLASS */ ); } _sfc_main.__hmrId = "18925a74"; 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/dataviewer/Row.vue"]]); //# sourceMappingURL=data:application/json;base64,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d0JNLE9BeEJOLFlBd0JNO0FBQUE7K0JBcEJELFlBQUssSUFBSSxJQUFHO0FBQUEsY0FDZjtBQUFBO0FBQUE7QUFBQSxZQUFZLFlBQUssU0FBSSx5QkFBckI7QUFBQSxjQUE2STtBQUFBLGNBQTdJO0FBQUEsY0FBc0gsTUFBQyxpQkFBRyxlQUFRLElBQUc7QUFBQSxjQUFDO0FBQUE7QUFBQTtZQUMxSCxtQ0FBWixvQkFpQk8sUUFqQlAsWUFpQk87QUFBQSxjQWhCTDtBQUFBLGNBQ0Esb0JBT0k7QUFBQSxnQkFORixPQUFNO0FBQUEsZ0JBQ0wsTUFBTTtBQUFBLGdCQUNQLFFBQU87QUFBQSxnQkFDUCxPQUFNO0FBQUEsZ0JBQXFCLG9CQUFpQjtBQUFBO2dCQUU1QyxhQUE4RjtBQUFBLGtCQUE1RSxPQUFNO0FBQUEsa0JBQU0sb0JBQWlCO0FBQUE7O2NBRWpELG9CQU1TO0FBQUEsZ0JBTFAsT0FBTTtBQUFBLGdCQUNOLE9BQU07QUFBQSxnQkFDTCxTQUFLLGVBQU8sd0JBQWU7QUFBQSxnQkFBRSxvQkFBaUI7QUFBQTtnQkFFL0MsYUFBd0Y7QUFBQSxrQkFBNUUsT0FBTTtBQUFBLGtCQUFNLG9CQUFpQjtBQUFBOzs7Ozs7OztNQUt0QyxxQkFBYyxpQ0FBekIsb0JBRU0sT0FGTixZQUVNO0FBQUEsUUFESixhQUEwRztBQUFBLFVBQWpGLFFBQVE7QUFBQSxVQUFVLG9CQUFpQjtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJSb3cudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjwhLS0gZXNsaW50LWRpc2FibGUgdnVlanMtYWNjZXNzaWJpbGl0eS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgLS0+XHJcbjx0ZW1wbGF0ZT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInctZnVsbCByb3VuZGVkIHBsLTEgcHktMC41IHRleHQtYm9keS0zeHMgYm9yZGVyLWwtMlwiXHJcbiAgICA6Y2xhc3M9XCJbXHJcbiAgICAgIGV4cGFuZGFibGUgPyAnYm9yZGVyLWZvcmVncm91bmQnIDogJ2JvcmRlci10cmFuc3BhcmVudCcsXHJcbiAgICAgIGV4cGFuZGVkID8gJ2JvcmRlci1uZXV0cmFsLTUwMCBib3JkZXItb3BhY2l0eS0zMCcgOiAnJ1xyXG4gICAgXVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9kYXRhdmlld2VyL1Jvdy52dWU6MzozXCJcclxuICA+XHJcbiAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWVqcy1hY2Nlc3NpYmlsaXR5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIDpjbGFzcz1cImBncmlkIGdyaWQtY29scy0zIHByLTEgJHtleHBhbmRhYmxlID8gJ2N1cnNvci1wb2ludGVyJyA6ICcnfWBcIlxyXG4gICAgICBAY2xpY2s9XCJoYW5kbGVFeHBhbmRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZGF0YXZpZXdlci9Sb3cudnVlOjExOjVcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tMSBtci0xIGZsZXggaXRlbXMtY2VudGVyIGZvbnQtbWVkaXVtXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2RhdGF2aWV3ZXIvUm93LnZ1ZToxNTo3XCI+XHJcbiAgICAgICAgPENoZXZyb25SaWdodEljb25cclxuICAgICAgICAgIHYtaWY9XCJleHBhbmRhYmxlXCJcclxuICAgICAgICAgIDpjbGFzcz1cImB3LTMgJHtleHBhbmRlZCA/ICdyb3RhdGUtOTAnIDogJyd9IHRyYW5zaXRpb24gc2hyaW5rLTAgYFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9kYXRhdmlld2VyL1Jvdy52dWU6MTY6OVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1hbGwgdHJ1bmNhdGVcIiA6dGl0bGU9XCJgJHtwcm9wLmtleX0gfCAke3Byb3AudHlwZX1gXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2RhdGF2aWV3ZXIvUm93LnZ1ZToyMDo5XCI+XHJcbiAgICAgICAgICB7eyBwcm9wLmtleSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgdi1pZj1cIiFleHBhbmRhYmxlXCIgY2xhc3M9XCJjb2wtc3Bhbi0yIHRydW5jYXRlIHNlbGVjdC1hbGxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZGF0YXZpZXdlci9Sb3cudnVlOjI0OjdcIj5cclxuICAgICAgICB7eyBwcm9wLnZhbHVlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgdi1pZj1cImV4cGFuZGFibGVcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sLXNwYW4tMiB0cnVuY2F0ZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZGF0YXZpZXdlci9Sb3cudnVlOjI3OjdcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgcHJvcC50eXBlIH19XHJcbiAgICAgICAgPHNwYW4gdi1pZj1cInByb3AudHlwZSA9PT0gJ2FycmF5J1wiIGNsYXNzPVwidGV4dC1ib2R5LTN4c1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9kYXRhdmlld2VyL1Jvdy52dWU6MzI6OVwiPih7eyBhcnJheUxlbiB9fSk8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gdi1pZj1cImlzRGV0YWNoZWRcIiBjbGFzcz1cIm1yLTEgZmxleCBzcGFjZS14LTFcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZGF0YXZpZXdlci9Sb3cudnVlOjMzOjlcIj5cclxuICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZWpzLWFjY2Vzc2liaWxpdHkvYW5jaG9yLWhhcy1jb250ZW50IC0tPlxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgdGl0bGU9XCJkZXRhY2hlZCBvYmplY3QgLSBjbGljayB0byBvcGVuIGluIGEgbmV3IHRhYlwiXHJcbiAgICAgICAgICAgIDpocmVmPVwic2VsZWN0aW9uTGlua1wiXHJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaG92ZXI6dGV4dC1wcmltYXJ5XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2RhdGF2aWV3ZXIvUm93LnZ1ZTozNToxMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxBcnJvd1VwUmlnaHRJY29uIGNsYXNzPVwidy0zXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2RhdGF2aWV3ZXIvUm93LnZ1ZTo0MToxM1wiIC8+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHRpdGxlPVwiaXNvbGF0ZSBvYmplY3RzXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJob3Zlcjp0ZXh0LXByaW1hcnlcIlxyXG4gICAgICAgICAgICBAY2xpY2suc3RvcD1cImhhbmRsZUhpZ2hsaWdodFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9kYXRhdmlld2VyL1Jvdy52dWU6NDM6MTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8RnVubmVsSWNvbiBjbGFzcz1cInctMlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9kYXRhdmlld2VyL1Jvdy52dWU6NDg6MTNcIiAvPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiB2LWlmPVwiZXhwYW5kYWJsZSAmJiBleHBhbmRlZFwiIGNsYXNzPVwidy1mdWxsIHBsLTEgcHQtMlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9kYXRhdmlld2VyL1Jvdy52dWU6NTM6NVwiPlxyXG4gICAgICA8Vmlld2VyRGF0YXZpZXdlck9iamVjdCA6b2JqZWN0PVwiY2FzdFByb3BcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvZGF0YXZpZXdlci9Sb3cudnVlOjU0OjdcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IENoZXZyb25SaWdodEljb24sIEFycm93VXBSaWdodEljb24sIEZ1bm5lbEljb24gfSBmcm9tICdAaGVyb2ljb25zL3Z1ZS8yMC9zb2xpZCdcclxuaW1wb3J0IHsgbW9kZWxSb3V0ZSB9IGZyb20gJ34vbGliL2NvbW1vbi9oZWxwZXJzL3JvdXRlJ1xyXG5pbXBvcnQgeyB1c2VJbmplY3RlZFZpZXdlclN0YXRlIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3NldHVwJ1xyXG5pbXBvcnQgeyB1c2VGaWx0ZXJVdGlsaXRpZXMgfSBmcm9tICd+L2xpYi92aWV3ZXIvY29tcG9zYWJsZXMvZmlsdGVyaW5nL2ZpbHRlcmluZydcclxuaW1wb3J0IHsgdXNlQ2FtZXJhVXRpbGl0aWVzIH0gZnJvbSAnfi9saWIvdmlld2VyL2NvbXBvc2FibGVzL3VpJ1xyXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcclxuICBwcm9wOiB7XHJcbiAgICBrZXk6IHN0cmluZ1xyXG4gICAgdmFsdWU6IHVua25vd25cclxuICAgIHR5cGU6IHN0cmluZ1xyXG4gIH1cclxufT4oKVxyXG5cclxuY29uc3Qge1xyXG4gIHByb2plY3RJZCxcclxuICB1aTogeyBmaWx0ZXJzIH1cclxufSA9IHVzZUluamVjdGVkVmlld2VyU3RhdGUoKVxyXG5cclxuY29uc3QgeyBpc29sYXRlT2JqZWN0cywgcmVzZXRGaWx0ZXJzIH0gPSB1c2VGaWx0ZXJVdGlsaXRpZXMoKVxyXG5jb25zdCB7IHpvb20gfSA9IHVzZUNhbWVyYVV0aWxpdGllcygpXHJcblxyXG5jb25zdCBleHBhbmRlZCA9IHJlZihmYWxzZSlcclxuXHJcbmNvbnN0IGV4cGFuZGFibGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgcmV0dXJuIHByb3BzLnByb3AudHlwZSA9PT0gJ2FycmF5JyB8fCBwcm9wcy5wcm9wLnR5cGUgPT09ICdvYmplY3QnXHJcbn0pXHJcblxyXG5jb25zdCBhcnJheUxlbiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAocHJvcHMucHJvcC50eXBlICE9PSAnYXJyYXknKSByZXR1cm5cclxuICBjb25zdCBhcnIgPSBwcm9wcy5wcm9wLnZhbHVlIGFzIHVua25vd25bXVxyXG4gIHJldHVybiBhcnIubGVuZ3RoXHJcbn0pXHJcblxyXG5jb25zdCBjYXN0UHJvcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gcHJvcHMucHJvcC52YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxyXG59KVxyXG5cclxuY29uc3QgaGFuZGxlRXhwYW5kID0gKCkgPT4ge1xyXG4gIGlmICghZXhwYW5kYWJsZS52YWx1ZSkgcmV0dXJuXHJcbiAgZXhwYW5kZWQudmFsdWUgPSAhZXhwYW5kZWQudmFsdWVcclxufVxyXG5cclxuY29uc3QgaXNEZXRhY2hlZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gKHByb3BzLnByb3AudmFsdWUgYXMgeyByZWZlcmVuY2VkSWQ6IHN0cmluZyB9KS5yZWZlcmVuY2VkSWRcclxufSlcclxuXHJcbmNvbnN0IHNlbGVjdGlvbkxpbmsgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgY29uc3QgcmVmSWQgPSAocHJvcHMucHJvcC52YWx1ZSBhcyB7IHJlZmVyZW5jZWRJZDogc3RyaW5nIH0pLnJlZmVyZW5jZWRJZFxyXG4gIGlmICghcmVmSWQpIHJldHVyblxyXG4gIHJldHVybiBtb2RlbFJvdXRlKHByb2plY3RJZC52YWx1ZSwgcmVmSWQpXHJcbn0pXHJcblxyXG5jb25zdCBoYW5kbGVIaWdobGlnaHQgPSAoKSA9PiB7XHJcbiAgaWYgKCFpc0RldGFjaGVkLnZhbHVlKSByZXR1cm5cclxuICBjb25zdCBpc0lzb2xhdGVkID0gZmlsdGVycy5pc29sYXRlZE9iamVjdHNTZXQudmFsdWU/Lmhhcyhpc0RldGFjaGVkLnZhbHVlKVxyXG4gIGlmIChpc0lzb2xhdGVkKSByZXR1cm4gcmVzZXRGaWx0ZXJzKClcclxuICB6b29tKFtpc0RldGFjaGVkLnZhbHVlXSlcclxuICByZXNldEZpbHRlcnMoKVxyXG4gIGlzb2xhdGVPYmplY3RzKFtpc0RldGFjaGVkLnZhbHVlXSlcclxufVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvdmlld2VyL2RhdGF2aWV3ZXIvUm93LnZ1ZSJ9