import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/ConnectionsSettingsModal.tsx");import { template as _$template } from "/node_modules/.vite/deps/solid-js_web.js?v=5eac7255";
|
import { effect as _$effect } from "/node_modules/.vite/deps/solid-js_web.js?v=5eac7255";
|
import { insert as _$insert } from "/node_modules/.vite/deps/solid-js_web.js?v=5eac7255";
|
import { createComponent as _$createComponent } from "/node_modules/.vite/deps/solid-js_web.js?v=5eac7255";
|
import { use as _$use } from "/node_modules/.vite/deps/solid-js_web.js?v=5eac7255";
|
import { $$component as _$$component } from "/@solid-refresh";
|
import { $$refresh as _$$refresh } from "/@solid-refresh";
|
import { $$registry as _$$registry } from "/@solid-refresh";
|
const _REGISTRY = _$$registry();
|
const _tmpl$ = /*#__PURE__*/_$template(`<form><div class="join flex"><select name=sourceIP class="select join-item select-bordered"><option></option></select><input name=tagName class="input join-item input-bordered min-w-0 flex-1"placeholder=name>`),
|
_tmpl$2 = /*#__PURE__*/_$template(`<option class=badge>`),
|
_tmpl$3 = /*#__PURE__*/_$template(`<div class=sortable><div class="flex cursor-grab justify-between py-2"><span class=select-none></span><input type=checkbox class=toggle>`),
|
_tmpl$4 = /*#__PURE__*/_$template(`<div>`),
|
_tmpl$5 = /*#__PURE__*/_$template(`<div class="flex flex-col gap-4"><div><select class="select select-bordered w-full"></select></div><div><div class="flex flex-col gap-4"><div class="flex flex-col gap-2"></div></div></div><div>`),
|
_tmpl$6 = /*#__PURE__*/_$template(`<option>`),
|
_tmpl$7 = /*#__PURE__*/_$template(`<div class="badge badge-primary w-full items-center justify-between gap-2 py-4"><span class=truncate> (<!>)`);
|
import { createForm } from "/node_modules/.vite/deps/@felte_solid.js?v=593c8e6e";
|
import { validator } from "/node_modules/.vite/deps/@felte_validator-zod.js?v=269fdde0";
|
import { IconNetwork, IconX } from "/node_modules/.vite/deps/@tabler_icons-solidjs.js?v=2a3f5507";
|
import { DragDropProvider, DragDropSensors, DragOverlay, SortableProvider, closestCenter, createSortable, useDragDropContext } from "/node_modules/@thisbeyond/solid-dnd/dist/dev.jsx";
|
import __vite__cjsImport12_lodash from "/node_modules/.vite/deps/lodash.js?v=044ddcce"; const uniq = __vite__cjsImport12_lodash["uniq"];
|
import { For, Index, Show, createSignal } from "/node_modules/.vite/deps/solid-js.js?v=5eac7255";
|
import { z } from "/node_modules/.vite/deps/zod.js?v=1cda075c";
|
import { Button, ConfigTitle, Modal } from "/src/components/index.ts";
|
import { CONNECTIONS_TABLE_INITIAL_COLUMN_ORDER, CONNECTIONS_TABLE_INITIAL_COLUMN_VISIBILITY, TAILWINDCSS_SIZE } from "/src/constants/index.ts";
|
import { useI18n } from "/src/i18n/index.tsx";
|
import { allConnections, clientSourceIPTags, connectionsTableSize, setClientSourceIPTags, setConnectionsTableSize } from "/src/signals/index.ts";
|
const TagClientSourceIPWithNameForm = _$$component(_REGISTRY, "TagClientSourceIPWithNameForm", () => {
|
const schema = z.object({
|
tagName: z.string().nonempty(),
|
sourceIP: z.string().nonempty()
|
});
|
const [t] = useI18n();
|
const {
|
form,
|
reset
|
} = createForm({
|
extend: validator({
|
schema
|
}),
|
onSubmit: ({
|
tagName,
|
sourceIP
|
}) => {
|
setClientSourceIPTags(tags => {
|
if (tags.some(tag => tag.tagName === tagName || tag.sourceIP === sourceIP)) {
|
return tags;
|
}
|
return [...tags, {
|
tagName,
|
sourceIP
|
}];
|
});
|
reset();
|
}
|
});
|
return (() => {
|
const _el$ = _tmpl$(),
|
_el$2 = _el$.firstChild,
|
_el$3 = _el$2.firstChild,
|
_el$4 = _el$3.firstChild,
|
_el$5 = _el$3.nextSibling;
|
_$use(form, _el$, () => form);
|
_$insert(_el$3, _$createComponent(Index, {
|
get each() {
|
return uniq(allConnections().map(({
|
metadata: {
|
sourceIP
|
}
|
}) => sourceIP)).sort().filter(sourceIP => !clientSourceIPTags().some(({
|
sourceIP: tagSourceIP
|
}) => tagSourceIP === sourceIP));
|
},
|
children: sourceIP => (() => {
|
const _el$6 = _tmpl$2();
|
_$insert(_el$6, sourceIP);
|
_$effect(() => _el$6.value = sourceIP());
|
return _el$6;
|
})()
|
}), null);
|
_$insert(_el$2, _$createComponent(Button, {
|
type: "submit",
|
"class": "join-item",
|
get children() {
|
return t('tag');
|
}
|
}), null);
|
return _el$;
|
})();
|
}, {
|
location: "src\\components\\ConnectionsSettingsModal.tsx:41:49"
|
});
|
export const ConnectionsSettingsModal = _$$component(_REGISTRY, "ConnectionsSettingsModal", props => {
|
const [t] = useI18n();
|
const [activeKey, setActiveKey] = createSignal(null);
|
const onDragStart = ({
|
draggable
|
}) => setActiveKey(draggable.id);
|
const onDragEnd = ({
|
draggable,
|
droppable
|
}) => {
|
if (draggable && droppable) {
|
const currentItems = props.order;
|
const fromIndex = currentItems.indexOf(draggable.id);
|
const toIndex = currentItems.indexOf(droppable.id);
|
if (fromIndex !== toIndex) {
|
const updatedItems = currentItems.slice();
|
updatedItems.splice(toIndex, 0, ...updatedItems.splice(fromIndex, 1));
|
props.onOrderChange(updatedItems);
|
}
|
}
|
};
|
const FormRow = ({
|
key
|
}) => {
|
const sortable = createSortable(key);
|
const [state] = useDragDropContext();
|
return (() => {
|
const _el$7 = _tmpl$3(),
|
_el$8 = _el$7.firstChild,
|
_el$9 = _el$8.firstChild,
|
_el$10 = _el$9.nextSibling;
|
_$use(sortable, _el$7, () => true);
|
_$insert(_el$9, () => t(key));
|
_el$10.addEventListener("change", e => {
|
props.onVisibleChange({
|
...props.visible,
|
[key]: e.target.checked
|
});
|
});
|
_$effect(_p$ => {
|
const _v$ = !!sortable.isActiveDraggable,
|
_v$2 = !!state.active.draggable;
|
_v$ !== _p$._v$ && _el$7.classList.toggle("opacity-25", _p$._v$ = _v$);
|
_v$2 !== _p$._v$2 && _el$7.classList.toggle("transition-transform", _p$._v$2 = _v$2);
|
return _p$;
|
}, {
|
_v$: undefined,
|
_v$2: undefined
|
});
|
_$effect(() => _el$10.checked = props.visible[key]);
|
return _el$7;
|
})();
|
};
|
return _$createComponent(Modal, {
|
ref: el => props.ref?.(el),
|
get icon() {
|
return _$createComponent(IconNetwork, {
|
size: 24
|
});
|
},
|
get title() {
|
return t('connectionsSettings');
|
},
|
get action() {
|
return _$createComponent(Button, {
|
"class": "btn-neutral btn-sm",
|
onClick: () => {
|
props.onOrderChange(CONNECTIONS_TABLE_INITIAL_COLUMN_ORDER);
|
props.onVisibleChange(CONNECTIONS_TABLE_INITIAL_COLUMN_VISIBILITY);
|
},
|
get children() {
|
return t('reset');
|
}
|
});
|
},
|
get children() {
|
const _el$11 = _tmpl$5(),
|
_el$12 = _el$11.firstChild,
|
_el$13 = _el$12.firstChild,
|
_el$14 = _el$12.nextSibling,
|
_el$15 = _el$14.firstChild,
|
_el$16 = _el$15.firstChild,
|
_el$17 = _el$14.nextSibling;
|
_$insert(_el$12, _$createComponent(ConfigTitle, {
|
withDivider: true,
|
get children() {
|
return t('tableSize');
|
}
|
}), _el$13);
|
_el$13.addEventListener("change", e => setConnectionsTableSize(e.target.value));
|
_$insert(_el$13, _$createComponent(For, {
|
get each() {
|
return Object.values(TAILWINDCSS_SIZE);
|
},
|
children: value => (() => {
|
const _el$19 = _tmpl$6();
|
_el$19.value = value;
|
_$insert(_el$19, () => t(value));
|
return _el$19;
|
})()
|
}));
|
_$insert(_el$14, _$createComponent(ConfigTitle, {
|
withDivider: true,
|
get children() {
|
return t('tagClientSourceIPWithName');
|
}
|
}), _el$15);
|
_$insert(_el$15, _$createComponent(TagClientSourceIPWithNameForm, {}), _el$16);
|
_$insert(_el$16, _$createComponent(For, {
|
get each() {
|
return clientSourceIPTags();
|
},
|
children: ({
|
tagName,
|
sourceIP
|
}) => (() => {
|
const _el$20 = _tmpl$7(),
|
_el$21 = _el$20.firstChild,
|
_el$22 = _el$21.firstChild,
|
_el$24 = _el$22.nextSibling,
|
_el$23 = _el$24.nextSibling;
|
_$insert(_el$21, tagName, _el$22);
|
_$insert(_el$21, sourceIP, _el$24);
|
_$insert(_el$20, _$createComponent(Button, {
|
"class": "btn-circle btn-ghost btn-xs",
|
onClick: () => setClientSourceIPTags(tags => tags.filter(tag => tag.tagName !== tagName)),
|
get icon() {
|
return _$createComponent(IconX, {
|
size: 12
|
});
|
}
|
}), null);
|
return _el$20;
|
})()
|
}));
|
_$insert(_el$17, _$createComponent(ConfigTitle, {
|
withDivider: true,
|
get children() {
|
return t('sort');
|
}
|
}), null);
|
_$insert(_el$17, _$createComponent(DragDropProvider, {
|
onDragStart: onDragStart,
|
onDragEnd: onDragEnd,
|
collisionDetector: closestCenter,
|
get children() {
|
return [_$createComponent(DragDropSensors, {}), _$createComponent(SortableProvider, {
|
get ids() {
|
return props.order;
|
},
|
get children() {
|
return _$createComponent(For, {
|
get each() {
|
return props.order;
|
},
|
children: key => _$createComponent(FormRow, {
|
key: key
|
})
|
});
|
}
|
}), _$createComponent(DragOverlay, {
|
get children() {
|
return _$createComponent(Show, {
|
get when() {
|
return activeKey();
|
},
|
get children() {
|
const _el$18 = _tmpl$4();
|
_$insert(_el$18, () => t(activeKey()));
|
return _el$18;
|
}
|
});
|
}
|
})];
|
}
|
}), null);
|
_$effect(() => _el$13.value = connectionsTableSize());
|
return _el$11;
|
}
|
});
|
}, {
|
location: "src\\components\\ConnectionsSettingsModal.tsx:108:40"
|
});
|
if (import.meta.hot) {
|
_$$refresh("vite", import.meta.hot, _REGISTRY);
|
import.meta.hot.accept();
|
}
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVGb3JtIiwidmFsaWRhdG9yIiwiSWNvbk5ldHdvcmsiLCJJY29uWCIsIkRyYWdEcm9wUHJvdmlkZXIiLCJEcmFnRHJvcFNlbnNvcnMiLCJEcmFnT3ZlcmxheSIsIlNvcnRhYmxlUHJvdmlkZXIiLCJjbG9zZXN0Q2VudGVyIiwiY3JlYXRlU29ydGFibGUiLCJ1c2VEcmFnRHJvcENvbnRleHQiLCJ1bmlxIiwiRm9yIiwiSW5kZXgiLCJTaG93IiwiY3JlYXRlU2lnbmFsIiwieiIsIkJ1dHRvbiIsIkNvbmZpZ1RpdGxlIiwiTW9kYWwiLCJDT05ORUNUSU9OU19UQUJMRV9JTklUSUFMX0NPTFVNTl9PUkRFUiIsIkNPTk5FQ1RJT05TX1RBQkxFX0lOSVRJQUxfQ09MVU1OX1ZJU0lCSUxJVFkiLCJUQUlMV0lORENTU19TSVpFIiwidXNlSTE4biIsImFsbENvbm5lY3Rpb25zIiwiY2xpZW50U291cmNlSVBUYWdzIiwiY29ubmVjdGlvbnNUYWJsZVNpemUiLCJzZXRDbGllbnRTb3VyY2VJUFRhZ3MiLCJzZXRDb25uZWN0aW9uc1RhYmxlU2l6ZSIsIlRhZ0NsaWVudFNvdXJjZUlQV2l0aE5hbWVGb3JtIiwiXyQkY29tcG9uZW50IiwiX1JFR0lTVFJZIiwic2NoZW1hIiwib2JqZWN0IiwidGFnTmFtZSIsInN0cmluZyIsIm5vbmVtcHR5Iiwic291cmNlSVAiLCJ0IiwiZm9ybSIsInJlc2V0IiwiZXh0ZW5kIiwib25TdWJtaXQiLCJ0YWdzIiwic29tZSIsInRhZyIsIl9lbCQiLCJfdG1wbCQiLCJfZWwkMiIsImZpcnN0Q2hpbGQiLCJfZWwkMyIsIl9lbCQ0IiwiX2VsJDUiLCJuZXh0U2libGluZyIsIl8kdXNlIiwiXyRpbnNlcnQiLCJfJGNyZWF0ZUNvbXBvbmVudCIsImVhY2giLCJtYXAiLCJtZXRhZGF0YSIsInNvcnQiLCJmaWx0ZXIiLCJ0YWdTb3VyY2VJUCIsImNoaWxkcmVuIiwiX2VsJDYiLCJfdG1wbCQyIiwiXyRlZmZlY3QiLCJ2YWx1ZSIsInR5cGUiLCJsb2NhdGlvbiIsIkNvbm5lY3Rpb25zU2V0dGluZ3NNb2RhbCIsInByb3BzIiwiYWN0aXZlS2V5Iiwic2V0QWN0aXZlS2V5Iiwib25EcmFnU3RhcnQiLCJkcmFnZ2FibGUiLCJpZCIsIm9uRHJhZ0VuZCIsImRyb3BwYWJsZSIsImN1cnJlbnRJdGVtcyIsIm9yZGVyIiwiZnJvbUluZGV4IiwiaW5kZXhPZiIsInRvSW5kZXgiLCJ1cGRhdGVkSXRlbXMiLCJzbGljZSIsInNwbGljZSIsIm9uT3JkZXJDaGFuZ2UiLCJGb3JtUm93Iiwia2V5Iiwic29ydGFibGUiLCJzdGF0ZSIsIl9lbCQ3IiwiX3RtcGwkMyIsIl9lbCQ4IiwiX2VsJDkiLCJfZWwkMTAiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsIm9uVmlzaWJsZUNoYW5nZSIsInZpc2libGUiLCJ0YXJnZXQiLCJjaGVja2VkIiwiX3AkIiwiX3YkIiwiaXNBY3RpdmVEcmFnZ2FibGUiLCJfdiQyIiwiYWN0aXZlIiwiY2xhc3NMaXN0IiwidG9nZ2xlIiwidW5kZWZpbmVkIiwicmVmIiwiZWwiLCJpY29uIiwic2l6ZSIsInRpdGxlIiwiYWN0aW9uIiwib25DbGljayIsIl9lbCQxMSIsIl90bXBsJDUiLCJfZWwkMTIiLCJfZWwkMTMiLCJfZWwkMTQiLCJfZWwkMTUiLCJfZWwkMTYiLCJfZWwkMTciLCJ3aXRoRGl2aWRlciIsIk9iamVjdCIsInZhbHVlcyIsIl9lbCQxOSIsIl90bXBsJDYiLCJfZWwkMjAiLCJfdG1wbCQ3IiwiX2VsJDIxIiwiX2VsJDIyIiwiX2VsJDI0IiwiX2VsJDIzIiwiY29sbGlzaW9uRGV0ZWN0b3IiLCJpZHMiLCJ3aGVuIiwiX2VsJDE4IiwiX3RtcGwkNCIsImltcG9ydCIsIm1ldGEiLCJob3QiLCJfJCRyZWZyZXNoIiwiYWNjZXB0Il0sInNvdXJjZXMiOlsiQ29ubmVjdGlvbnNTZXR0aW5nc01vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGb3JtIH0gZnJvbSAnQGZlbHRlL3NvbGlkJ1xyXG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tICdAZmVsdGUvdmFsaWRhdG9yLXpvZCdcclxuaW1wb3J0IHsgSWNvbk5ldHdvcmssIEljb25YIH0gZnJvbSAnQHRhYmxlci9pY29ucy1zb2xpZGpzJ1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgRHJhZ0V2ZW50SGFuZGxlcixcclxuICBEcmFnZ2FibGUsXHJcbiAgRHJvcHBhYmxlLFxyXG59IGZyb20gJ0B0aGlzYmV5b25kL3NvbGlkLWRuZCdcclxuaW1wb3J0IHtcclxuICBEcmFnRHJvcFByb3ZpZGVyLFxyXG4gIERyYWdEcm9wU2Vuc29ycyxcclxuICBEcmFnT3ZlcmxheSxcclxuICBTb3J0YWJsZVByb3ZpZGVyLFxyXG4gIGNsb3Nlc3RDZW50ZXIsXHJcbiAgY3JlYXRlU29ydGFibGUsXHJcbiAgdXNlRHJhZ0Ryb3BDb250ZXh0LFxyXG59IGZyb20gJ0B0aGlzYmV5b25kL3NvbGlkLWRuZCdcclxuaW1wb3J0IHsgdW5pcSB9IGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBGb3IsIEluZGV4LCBTaG93LCBjcmVhdGVTaWduYWwgfSBmcm9tICdzb2xpZC1qcydcclxuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCdcclxuaW1wb3J0IHsgQnV0dG9uLCBDb25maWdUaXRsZSwgTW9kYWwgfSBmcm9tICd+L2NvbXBvbmVudHMnXHJcbmltcG9ydCB7XHJcbiAgQ09OTkVDVElPTlNfVEFCTEVfQUNDRVNTT1JfS0VZLFxyXG4gIENPTk5FQ1RJT05TX1RBQkxFX0lOSVRJQUxfQ09MVU1OX09SREVSLFxyXG4gIENPTk5FQ1RJT05TX1RBQkxFX0lOSVRJQUxfQ09MVU1OX1ZJU0lCSUxJVFksXHJcbiAgVEFJTFdJTkRDU1NfU0laRSxcclxufSBmcm9tICd+L2NvbnN0YW50cydcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gJ34vaTE4bidcclxuaW1wb3J0IHtcclxuICBhbGxDb25uZWN0aW9ucyxcclxuICBjbGllbnRTb3VyY2VJUFRhZ3MsXHJcbiAgY29ubmVjdGlvbnNUYWJsZVNpemUsXHJcbiAgc2V0Q2xpZW50U291cmNlSVBUYWdzLFxyXG4gIHNldENvbm5lY3Rpb25zVGFibGVTaXplLFxyXG59IGZyb20gJ34vc2lnbmFscydcclxuaW1wb3J0IHtcclxuICBDb25uZWN0aW9uc1RhYmxlQ29sdW1uT3JkZXIsXHJcbiAgQ29ubmVjdGlvbnNUYWJsZUNvbHVtblZpc2liaWxpdHksXHJcbn0gZnJvbSAnfi90eXBlcydcclxuXHJcbmNvbnN0IFRhZ0NsaWVudFNvdXJjZUlQV2l0aE5hbWVGb3JtOiBDb21wb25lbnQgPSAoKSA9PiB7XHJcbiAgY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xyXG4gICAgdGFnTmFtZTogei5zdHJpbmcoKS5ub25lbXB0eSgpLFxyXG4gICAgc291cmNlSVA6IHouc3RyaW5nKCkubm9uZW1wdHkoKSxcclxuICB9KVxyXG5cclxuICBjb25zdCBbdF0gPSB1c2VJMThuKClcclxuXHJcbiAgY29uc3QgeyBmb3JtLCByZXNldCB9ID0gY3JlYXRlRm9ybTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+Pih7XHJcbiAgICBleHRlbmQ6IHZhbGlkYXRvcih7IHNjaGVtYSB9KSxcclxuICAgIG9uU3VibWl0OiAoeyB0YWdOYW1lLCBzb3VyY2VJUCB9KSA9PiB7XHJcbiAgICAgIHNldENsaWVudFNvdXJjZUlQVGFncygodGFncykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRhZ3Muc29tZShcclxuICAgICAgICAgICAgKHRhZykgPT4gdGFnLnRhZ05hbWUgPT09IHRhZ05hbWUgfHwgdGFnLnNvdXJjZUlQID09PSBzb3VyY2VJUCxcclxuICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiB0YWdzXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gWy4uLnRhZ3MsIHsgdGFnTmFtZSwgc291cmNlSVAgfV1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHJlc2V0KClcclxuICAgIH0sXHJcbiAgfSlcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxmb3JtIHVzZTpmb3JtPXtmb3JtfT5cclxuICAgICAgPGRpdiBjbGFzcz1cImpvaW4gZmxleFwiPlxyXG4gICAgICAgIDxzZWxlY3QgbmFtZT1cInNvdXJjZUlQXCIgY2xhc3M9XCJzZWxlY3Qgam9pbi1pdGVtIHNlbGVjdC1ib3JkZXJlZFwiPlxyXG4gICAgICAgICAgPG9wdGlvbiAvPlxyXG5cclxuICAgICAgICAgIDxJbmRleFxyXG4gICAgICAgICAgICBlYWNoPXt1bmlxKFxyXG4gICAgICAgICAgICAgIGFsbENvbm5lY3Rpb25zKCkubWFwKCh7IG1ldGFkYXRhOiB7IHNvdXJjZUlQIH0gfSkgPT4gc291cmNlSVApLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgLnNvcnQoKVxyXG4gICAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoc291cmNlSVApID0+XHJcbiAgICAgICAgICAgICAgICAgICFjbGllbnRTb3VyY2VJUFRhZ3MoKS5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICh7IHNvdXJjZUlQOiB0YWdTb3VyY2VJUCB9KSA9PiB0YWdTb3VyY2VJUCA9PT0gc291cmNlSVAsXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgeyhzb3VyY2VJUCkgPT4gKFxyXG4gICAgICAgICAgICAgIDxvcHRpb24gY2xhc3M9XCJiYWRnZVwiIHZhbHVlPXtzb3VyY2VJUCgpfT5cclxuICAgICAgICAgICAgICAgIHtzb3VyY2VJUCgpfVxyXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPC9JbmRleD5cclxuICAgICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBuYW1lPVwidGFnTmFtZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImlucHV0IGpvaW4taXRlbSBpbnB1dC1ib3JkZXJlZCBtaW4tdy0wIGZsZXgtMVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIm5hbWVcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxCdXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiam9pbi1pdGVtXCI+XHJcbiAgICAgICAgICB7dCgndGFnJyl9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIClcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENvbm5lY3Rpb25zU2V0dGluZ3NNb2RhbCA9IChwcm9wczoge1xyXG4gIHJlZj86IChlbDogSFRNTERpYWxvZ0VsZW1lbnQpID0+IHZvaWRcclxuICBvcmRlcjogQ29ubmVjdGlvbnNUYWJsZUNvbHVtbk9yZGVyXHJcbiAgdmlzaWJsZTogQ29ubmVjdGlvbnNUYWJsZUNvbHVtblZpc2liaWxpdHlcclxuICBvbk9yZGVyQ2hhbmdlOiAodmFsdWU6IENvbm5lY3Rpb25zVGFibGVDb2x1bW5PcmRlcikgPT4gdm9pZFxyXG4gIG9uVmlzaWJsZUNoYW5nZTogKHZhbHVlOiBDb25uZWN0aW9uc1RhYmxlQ29sdW1uVmlzaWJpbGl0eSkgPT4gdm9pZFxyXG59KSA9PiB7XHJcbiAgY29uc3QgW3RdID0gdXNlSTE4bigpXHJcblxyXG4gIGNvbnN0IFthY3RpdmVLZXksIHNldEFjdGl2ZUtleV0gPVxyXG4gICAgY3JlYXRlU2lnbmFsPENPTk5FQ1RJT05TX1RBQkxFX0FDQ0VTU09SX0tFWSB8IG51bGw+KG51bGwpXHJcblxyXG4gIGNvbnN0IG9uRHJhZ1N0YXJ0ID0gKHsgZHJhZ2dhYmxlIH06IHsgZHJhZ2dhYmxlOiBEcmFnZ2FibGUgfSkgPT5cclxuICAgIHNldEFjdGl2ZUtleShkcmFnZ2FibGUuaWQgYXMgQ09OTkVDVElPTlNfVEFCTEVfQUNDRVNTT1JfS0VZKVxyXG4gIGNvbnN0IG9uRHJhZ0VuZCA9ICh7XHJcbiAgICBkcmFnZ2FibGUsXHJcbiAgICBkcm9wcGFibGUsXHJcbiAgfToge1xyXG4gICAgZHJhZ2dhYmxlOiBEcmFnZ2FibGVcclxuICAgIGRyb3BwYWJsZTogRHJvcHBhYmxlXHJcbiAgfSkgPT4ge1xyXG4gICAgaWYgKGRyYWdnYWJsZSAmJiBkcm9wcGFibGUpIHtcclxuICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gcHJvcHMub3JkZXJcclxuICAgICAgY29uc3QgZnJvbUluZGV4ID0gY3VycmVudEl0ZW1zLmluZGV4T2YoXHJcbiAgICAgICAgZHJhZ2dhYmxlLmlkIGFzIENPTk5FQ1RJT05TX1RBQkxFX0FDQ0VTU09SX0tFWSxcclxuICAgICAgKVxyXG4gICAgICBjb25zdCB0b0luZGV4ID0gY3VycmVudEl0ZW1zLmluZGV4T2YoXHJcbiAgICAgICAgZHJvcHBhYmxlLmlkIGFzIENPTk5FQ1RJT05TX1RBQkxFX0FDQ0VTU09SX0tFWSxcclxuICAgICAgKVxyXG5cclxuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdG9JbmRleCkge1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRJdGVtcyA9IGN1cnJlbnRJdGVtcy5zbGljZSgpXHJcblxyXG4gICAgICAgIHVwZGF0ZWRJdGVtcy5zcGxpY2UodG9JbmRleCwgMCwgLi4udXBkYXRlZEl0ZW1zLnNwbGljZShmcm9tSW5kZXgsIDEpKVxyXG4gICAgICAgIHByb3BzLm9uT3JkZXJDaGFuZ2UodXBkYXRlZEl0ZW1zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBGb3JtUm93OiBDb21wb25lbnQ8e1xyXG4gICAga2V5OiBDT05ORUNUSU9OU19UQUJMRV9BQ0NFU1NPUl9LRVlcclxuICB9PiA9ICh7IGtleSB9KSA9PiB7XHJcbiAgICBjb25zdCBzb3J0YWJsZSA9IGNyZWF0ZVNvcnRhYmxlKGtleSlcclxuICAgIGNvbnN0IFtzdGF0ZV0gPSB1c2VEcmFnRHJvcENvbnRleHQoKSFcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgdXNlOnNvcnRhYmxlXHJcbiAgICAgICAgY2xhc3M9XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgY2xhc3NMaXN0PXt7XHJcbiAgICAgICAgICAnb3BhY2l0eS0yNSc6IHNvcnRhYmxlLmlzQWN0aXZlRHJhZ2dhYmxlLFxyXG4gICAgICAgICAgJ3RyYW5zaXRpb24tdHJhbnNmb3JtJzogISFzdGF0ZS5hY3RpdmUuZHJhZ2dhYmxlLFxyXG4gICAgICAgIH19XHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBjdXJzb3ItZ3JhYiBqdXN0aWZ5LWJldHdlZW4gcHktMlwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtbm9uZVwiPnt0KGtleSl9PC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZVwiXHJcbiAgICAgICAgICAgIGNoZWNrZWQ9e3Byb3BzLnZpc2libGVba2V5XX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcHJvcHMub25WaXNpYmxlQ2hhbmdlKHtcclxuICAgICAgICAgICAgICAgIC4uLnByb3BzLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgICBba2V5XTogZS50YXJnZXQuY2hlY2tlZCxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPE1vZGFsXHJcbiAgICAgIHJlZj17KGVsKSA9PiBwcm9wcy5yZWY/LihlbCl9XHJcbiAgICAgIGljb249ezxJY29uTmV0d29yayBzaXplPXsyNH0gLz59XHJcbiAgICAgIHRpdGxlPXt0KCdjb25uZWN0aW9uc1NldHRpbmdzJyl9XHJcbiAgICAgIGFjdGlvbj17XHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4tbmV1dHJhbCBidG4tc21cIlxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBwcm9wcy5vbk9yZGVyQ2hhbmdlKENPTk5FQ1RJT05TX1RBQkxFX0lOSVRJQUxfQ09MVU1OX09SREVSKVxyXG4gICAgICAgICAgICBwcm9wcy5vblZpc2libGVDaGFuZ2UoQ09OTkVDVElPTlNfVEFCTEVfSU5JVElBTF9DT0xVTU5fVklTSUJJTElUWSlcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3QoJ3Jlc2V0Jyl9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgIH1cclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPENvbmZpZ1RpdGxlIHdpdGhEaXZpZGVyPnt0KCd0YWJsZVNpemUnKX08L0NvbmZpZ1RpdGxlPlxyXG5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qgc2VsZWN0LWJvcmRlcmVkIHctZnVsbFwiXHJcbiAgICAgICAgICAgIHZhbHVlPXtjb25uZWN0aW9uc1RhYmxlU2l6ZSgpfVxyXG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgICAgc2V0Q29ubmVjdGlvbnNUYWJsZVNpemUoZS50YXJnZXQudmFsdWUgYXMgVEFJTFdJTkRDU1NfU0laRSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Rm9yIGVhY2g9e09iamVjdC52YWx1ZXMoVEFJTFdJTkRDU1NfU0laRSl9PlxyXG4gICAgICAgICAgICAgIHsodmFsdWUpID0+IDxvcHRpb24gdmFsdWU9e3ZhbHVlfT57dCh2YWx1ZSl9PC9vcHRpb24+fVxyXG4gICAgICAgICAgICA8L0Zvcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPENvbmZpZ1RpdGxlIHdpdGhEaXZpZGVyPlxyXG4gICAgICAgICAgICB7dCgndGFnQ2xpZW50U291cmNlSVBXaXRoTmFtZScpfVxyXG4gICAgICAgICAgPC9Db25maWdUaXRsZT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxyXG4gICAgICAgICAgICA8VGFnQ2xpZW50U291cmNlSVBXaXRoTmFtZUZvcm0gLz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgPEZvciBlYWNoPXtjbGllbnRTb3VyY2VJUFRhZ3MoKX0+XHJcbiAgICAgICAgICAgICAgICB7KHsgdGFnTmFtZSwgc291cmNlSVAgfSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcHJpbWFyeSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBweS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhZ05hbWV9ICh7c291cmNlSVB9KVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tY2lyY2xlIGJ0bi1naG9zdCBidG4teHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xpZW50U291cmNlSVBUYWdzKCh0YWdzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MuZmlsdGVyKCh0YWcpID0+IHRhZy50YWdOYW1lICE9PSB0YWdOYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEljb25YIHNpemU9ezEyfSAvPn1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9Gb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8Q29uZmlnVGl0bGUgd2l0aERpdmlkZXI+e3QoJ3NvcnQnKX08L0NvbmZpZ1RpdGxlPlxyXG5cclxuICAgICAgICAgIDxEcmFnRHJvcFByb3ZpZGVyXHJcbiAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cclxuICAgICAgICAgICAgb25EcmFnRW5kPXtvbkRyYWdFbmQgYXMgRHJhZ0V2ZW50SGFuZGxlcn1cclxuICAgICAgICAgICAgY29sbGlzaW9uRGV0ZWN0b3I9e2Nsb3Nlc3RDZW50ZXJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxEcmFnRHJvcFNlbnNvcnMgLz5cclxuXHJcbiAgICAgICAgICAgIDxTb3J0YWJsZVByb3ZpZGVyIGlkcz17cHJvcHMub3JkZXJ9PlxyXG4gICAgICAgICAgICAgIDxGb3IgZWFjaD17cHJvcHMub3JkZXJ9Pnsoa2V5KSA9PiA8Rm9ybVJvdyBrZXk9e2tleX0gLz59PC9Gb3I+XHJcbiAgICAgICAgICAgIDwvU29ydGFibGVQcm92aWRlcj5cclxuXHJcbiAgICAgICAgICAgIDxEcmFnT3ZlcmxheT5cclxuICAgICAgICAgICAgICA8U2hvdyB3aGVuPXthY3RpdmVLZXkoKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt0KGFjdGl2ZUtleSgpISl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9TaG93PlxyXG4gICAgICAgICAgICA8L0RyYWdPdmVybGF5PlxyXG4gICAgICAgICAgPC9EcmFnRHJvcFByb3ZpZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvTW9kYWw+XHJcbiAgKVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBQVNDLFNBQVMsUUFBUSxzQkFBc0I7QUFDaEQsU0FBU0MsV0FBVyxFQUFFQyxLQUFLLFFBQVEsdUJBQXVCO0FBTTFELFNBQ0VDLGdCQUFnQixFQUNoQkMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxjQUFjLEVBQ2RDLGtCQUFrQixRQUNiLHVCQUF1QjtBQUM5QixTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QixTQUFvQkMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsWUFBWSxRQUFRLFVBQVU7QUFDcEUsU0FBU0MsQ0FBQyxRQUFRLEtBQUs7QUFDdkIsU0FBU0MsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLEtBQUssUUFBUSxjQUFjO0FBQ3pELFNBRUVDLHNDQUFzQyxFQUN0Q0MsMkNBQTJDLEVBQzNDQyxnQkFBZ0IsUUFDWCxhQUFhO0FBQ3BCLFNBQVNDLE9BQU8sUUFBUSxRQUFRO0FBQ2hDLFNBQ0VDLGNBQWMsRUFDZEMsa0JBQWtCLEVBQ2xCQyxvQkFBb0IsRUFDcEJDLHFCQUFxQixFQUNyQkMsdUJBQXVCLFFBQ2xCLFdBQVc7QUFNbEIsTUFBTUMsNkJBQXdDLEdBQUFDLFlBQUEsQ0FBQUMsU0FBQSxtQ0FBRyxNQUFNO0VBQ3JELE1BQU1DLE1BQU0sR0FBR2hCLENBQUMsQ0FBQ2lCLE1BQU0sQ0FBQztJQUN0QkMsT0FBTyxFQUFFbEIsQ0FBQyxDQUFDbUIsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUM7SUFDOUJDLFFBQVEs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
|