import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/views/public/HomeView.vue?v=1");/* unplugin-vue-components disabled */import __unplugin_components_2 from "/src/components/literature/LiteraturePreviewDrawer.vue?t=1783728117686"; import __unplugin_components_1 from "/src/components/literature/LiteratureCard.vue?t=1783728117686"; import __unplugin_components_0 from "/src/components/search/AdvancedSearchPanel.vue?t=1783728117686"; import { defineComponent as _defineComponent } from "/node_modules/.vite/deps/vue.js?v=3cfd8f60"; import { ref, computed, onMounted, onBeforeUnmount, watch } from "/node_modules/.vite/deps/vue.js?v=3cfd8f60"; import { useRouter, useRoute } from "/node_modules/.vite/deps/vue-router.js?v=3cfd8f60"; import { NButton, NEmpty, NIcon } from "/node_modules/.vite/deps/naive-ui.js?v=6ae179ec"; import { ChevronDownOutline, ChevronUpOutline, CloseCircleOutline, OptionsOutline, PersonAddOutline, RefreshOutline, SearchOutline } from "/node_modules/.vite/deps/@vicons_ionicons5.js?v=78995c2b"; import { api } from "/src/api/client.ts?t=1783728117686&v=1"; import { useAuthStore } from "/src/stores/auth.ts?t=1783728117686&v=1"; import { useToast } from "/src/composables/useToast.ts?v=1"; import { useLiteraturePreview } from "/src/composables/useLiteraturePreview.ts?v=1"; import PageSkeleton from "/src/components/common/PageSkeleton.vue?v=1"; const hotPageSize = 5; const hotMaxPage = 6; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "HomeView", setup(__props, { expose: __expose }) { __expose(); const router = useRouter(); const route = useRoute(); const auth = useAuthStore(); const toast = useToast(); const searchParams = ref({ query: "", field: "all", tag_ids: [], date_from: null, date_to: null, retracted: "", negative_result: "", precision_mode: "majr", page: 1, page_size: 20, sort: "date" }); const feedItems = ref([]); const feedTotal = ref(0); const loading = ref(false); const searched = ref(false); const platformStats = ref({ literature_total: 0, journal_total: 0, daily_avg_30d: 0 }); const statsLoading = ref(true); const hotArticles = ref([]); const hotPage = ref(1); const hotTotal = ref(0); const hotAvailablePages = computed(() => Math.min(hotMaxPage, Math.ceil(hotTotal.value / hotPageSize))); async function loadHotArticles() { try { const { data } = await api.get("/public/hot-articles", { params: { page: hotPage.value, page_size: hotPageSize } }); hotArticles.value = data.items || []; hotTotal.value = data.total || 0; } catch (e) { } } function refreshHot() { const max = Math.min(hotMaxPage, Math.ceil(hotTotal.value / hotPageSize) || 1); hotPage.value = hotPage.value >= max ? 1 : hotPage.value + 1; loadHotArticles(); } async function loadStats() { try { const { data } = await api.get("/public/stats"); platformStats.value = data; } catch (e) { } finally { statsLoading.value = false; } } const allTags = ref([]); const selectedTagIds = ref([]); const showAllTags = ref(false); const isMobile = ref(window.innerWidth < 768); const showAdvanced = ref(false); function onDocumentMouseDown(e) { if (!showAdvanced.value) return; if (!e.target?.closest(".adv-filter-panel")) { showAdvanced.value = false; } } const localQuery = ref(""); const { showPreview, previewPmid, openPreview: setPreviewPmid, closePreview } = useLiteraturePreview(); const saving = ref(/* @__PURE__ */ new Set()); const savedPmids = ref(/* @__PURE__ */ new Set()); const lastVisitStr = localStorage.getItem("home_last_visit"); const dividerIndex = computed(() => { if (!lastVisitStr || !feedItems.value.length) return -1; const lastDt = new Date(parseInt(lastVisitStr)).toLocaleDateString("sv"); const idx = feedItems.value.findIndex((item) => { const d = item.pub_date?.slice(0, 10); return d && d <= lastDt; }); return idx > 0 ? idx : -1; }); async function fetchData(resetPage = true) { if (resetPage) searchParams.value.page = 1; loading.value = true; try { const body = { page: searchParams.value.page, page_size: searchParams.value.page_size, sort: searchParams.value.sort }; if (searchParams.value.query) body.query = searchParams.value.query; if (searchParams.value.field !== "all") body.field = searchParams.value.field; if (searchParams.value.tag_ids.length) body.tag_ids = searchParams.value.tag_ids; if (searchParams.value.date_from) body.date_from = searchParams.value.date_from; if (searchParams.value.date_to) body.date_to = searchParams.value.date_to; if (searchParams.value.retracted) body.retracted = searchParams.value.retracted; if (searchParams.value.negative_result) body.negative_result = searchParams.value.negative_result; if (searchParams.value.precision_mode) body.precision_mode = searchParams.value.precision_mode; const { data } = await api.post("/features/search/advanced", body); if (resetPage) { feedItems.value = data.items || []; } else { feedItems.value.push(...data.items || []); } feedTotal.value = data.total || 0; searched.value = true; } catch (e) { toast.apiError(e, "搜索文献失败,请重试"); } finally { loading.value = false; } } function toggleTag(tagId) { const id = String(tagId); const idx = selectedTagIds.value.indexOf(id); if (idx >= 0) { selectedTagIds.value.splice(idx, 1); } else { selectedTagIds.value.push(id); } searchParams.value.tag_ids = [...selectedTagIds.value]; fetchData(); } const cancerTags = computed(() => allTags.value.filter((t) => t.tag_category === "cancer" && t.level === 2)); const hasMoreTags = computed(() => cancerTags.value.length > 7); const visibleTags = computed(() => { if (showAllTags.value) return cancerTags.value; return cancerTags.value.slice(0, 7); }); function doLocalSearch() { showAdvanced.value = false; searchParams.value.field = "all"; if (localQuery.value.trim()) { searchParams.value.query = localQuery.value; } else { searchParams.value.query = ""; } fetchData(); } function clearSearch() { localQuery.value = ""; searchParams.value = { query: "", field: "all", tag_ids: [], date_from: null, date_to: null, retracted: "", negative_result: "", precision_mode: "majr", page: 1, page_size: 20, sort: "date" }; selectedTagIds.value = []; showAdvanced.value = false; fetchData(); } function handleAdvancedSearch(params) { searchParams.value.query = params.query; searchParams.value.field = params.field; searchParams.value.date_from = params.date_from; searchParams.value.date_to = params.date_to; searchParams.value.tag_ids = params.tag_ids; searchParams.value.retracted = params.retracted; searchParams.value.negative_result = params.negative_result; selectedTagIds.value = [...params.tag_ids]; showAdvanced.value = false; fetchData(); } async function saveLiterature(item) { if (!auth.isAuthenticated) { router.push("/auth/login"); return; } if (saving.value.has(item.pmid) || savedPmids.value.has(item.pmid)) return; saving.value = new Set(saving.value).add(item.pmid); try { await api.post(`/literature/${item.pmid}/save`); savedPmids.value = new Set(savedPmids.value).add(item.pmid); toast.success("已收藏"); } catch (e) { toast.apiError(e, "收藏文献失败,请重试"); } finally { const s = new Set(saving.value); s.delete(item.pmid); saving.value = s; } } function openPreview(item) { if (item.pmid) setPreviewPmid(item.pmid); } function goDetail(item) { closePreview(); const q = searchParams.value.query; router.push(q ? `/literature/${item.pmid}?q=${encodeURIComponent(q)}` : `/literature/${item.pmid}`); } async function loadSavedPmids() { if (!auth.isAuthenticated) return; try { const { data } = await api.get("/literature/saved"); savedPmids.value = new Set((data.items || []).map((i) => i.pmid)); } catch (e) { toast.apiError(e, "加载收藏状态失败"); } } const loadingMore = ref(false); const hasMore = computed(() => feedItems.value.length < feedTotal.value); const showScrollTop = ref(false); function onScroll() { showScrollTop.value = window.scrollY > window.innerHeight; } function scrollToTop() { window.scrollTo({ top: 0, behavior: "smooth" }); } function onResize() { isMobile.value = window.innerWidth < 768; } async function loadMore() { if (loadingMore.value || !hasMore.value) return; loadingMore.value = true; searchParams.value.page++; try { const body = { page: searchParams.value.page, page_size: searchParams.value.page_size, sort: searchParams.value.sort }; if (searchParams.value.query) body.query = searchParams.value.query; if (searchParams.value.field !== "all") body.field = searchParams.value.field; if (searchParams.value.tag_ids.length) body.tag_ids = searchParams.value.tag_ids; if (searchParams.value.date_from) body.date_from = searchParams.value.date_from; if (searchParams.value.date_to) body.date_to = searchParams.value.date_to; if (searchParams.value.retracted) body.retracted = searchParams.value.retracted; if (searchParams.value.negative_result) body.negative_result = searchParams.value.negative_result; if (searchParams.value.precision_mode) body.precision_mode = searchParams.value.precision_mode; const { data } = await api.post("/features/search/advanced", body); feedItems.value.push(...data.items || []); feedTotal.value = data.total || 0; } catch (e) { toast.apiError(e, "加载更多失败,请重试"); } finally { loadingMore.value = false; } } function restoreFromUrl() { const tag = route.query.tag; const date = route.query.date; const q = route.query.q; if (tag) { const ids = tag.split(","); selectedTagIds.value = ids; searchParams.value.tag_ids = ids; } if (date) { searchParams.value.date_from = date; searchParams.value.date_to = date; } if (q) { searchParams.value.query = q; localQuery.value = q; } const p = route.query.page; if (p) { searchParams.value.page = parseInt(p) || 1; } } const searchKey = computed( () => JSON.stringify([searchParams.value.query, searchParams.value.tag_ids, searchParams.value.date_from, searchParams.value.date_to, searchParams.value.page, searchParams.value.sort]) ); watch(searchKey, () => { const query = {}; if (searchParams.value.tag_ids.length) query.tag = searchParams.value.tag_ids.join(","); if (searchParams.value.date_from) query.date = searchParams.value.date_from; if (searchParams.value.query) query.q = searchParams.value.query; router.replace({ query }); }); watch(() => route.query, (q) => { if (q && q._t) { clearSearch(); } }); onMounted(async () => { restoreFromUrl(); loadStats(); loadHotArticles(); try { const { data } = await api.get("/public/tags"); allTags.value = data.tags || []; } catch (e) { toast.apiError(e, "加载标签失败"); } await fetchData(); await loadSavedPmids(); localStorage.setItem("home_last_visit", String(Date.now())); window.addEventListener("scroll", onScroll); window.addEventListener("resize", onResize); document.addEventListener("mousedown", onDocumentMouseDown); }); onBeforeUnmount(() => { window.removeEventListener("scroll", onScroll); window.removeEventListener("resize", onResize); document.removeEventListener("mousedown", onDocumentMouseDown); }); const __returned__ = { router, route, auth, toast, searchParams, feedItems, feedTotal, loading, searched, platformStats, statsLoading, hotArticles, hotPage, hotPageSize, hotTotal, hotMaxPage, hotAvailablePages, loadHotArticles, refreshHot, loadStats, allTags, selectedTagIds, showAllTags, isMobile, showAdvanced, onDocumentMouseDown, localQuery, showPreview, previewPmid, setPreviewPmid, closePreview, saving, savedPmids, lastVisitStr, dividerIndex, fetchData, toggleTag, cancerTags, hasMoreTags, visibleTags, doLocalSearch, clearSearch, handleAdvancedSearch, saveLiterature, openPreview, goDetail, loadSavedPmids, loadingMore, hasMore, showScrollTop, onScroll, scrollToTop, onResize, loadMore, restoreFromUrl, searchKey, get NButton() { return NButton; }, get NEmpty() { return NEmpty; }, get NIcon() { return NIcon; }, get ChevronDownOutline() { return ChevronDownOutline; }, get ChevronUpOutline() { return ChevronUpOutline; }, get CloseCircleOutline() { return CloseCircleOutline; }, get OptionsOutline() { return OptionsOutline; }, get PersonAddOutline() { return PersonAddOutline; }, get RefreshOutline() { return RefreshOutline; }, get SearchOutline() { return SearchOutline; }, PageSkeleton }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withKeys as _withKeys, withDirectives as _withDirectives, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass } from "/node_modules/.vite/deps/vue.js?v=3cfd8f60"; const _hoisted_1 = { class: "home" }; const _hoisted_2 = { class: "content-grid" }; const _hoisted_3 = { class: "content-grid-main" }; const _hoisted_4 = { class: "section section-toolbar" }; const _hoisted_5 = { class: "search-row" }; const _hoisted_6 = { class: "search-row-left" }; const _hoisted_7 = { class: "search-input-group" }; const _hoisted_8 = { class: "search-input-top" }; const _hoisted_9 = { class: "search-input-actions" }; const _hoisted_10 = { key: 0, class: "section" }; const _hoisted_11 = { class: "tag-bar" }; const _hoisted_12 = ["onClick"]; const _hoisted_13 = { key: 0, class: "tag-x" }; const _hoisted_14 = { class: "section section-list" }; const _hoisted_15 = { key: 0, class: "read-divider" }; const _hoisted_16 = { key: 0, class: "load-more" }; const _hoisted_17 = { class: "content-grid-side" }; const _hoisted_18 = { key: 0, class: "section-hot-side" }; const _hoisted_19 = { class: "hot-header" }; const _hoisted_20 = { class: "hot-header-right" }; const _hoisted_21 = { class: "hot-page-dots" }; const _hoisted_22 = { class: "hot-list" }; const _hoisted_23 = ["href"]; const _hoisted_24 = { class: "hot-content" }; const _hoisted_25 = ["title"]; const _hoisted_26 = { class: "hot-meta" }; const _hoisted_27 = { key: 1, class: "sidebar-stats" }; const _hoisted_28 = { class: "sidebar-stat-item" }; const _hoisted_29 = { class: "sidebar-stat-num" }; const _hoisted_30 = { class: "sidebar-stat-item" }; const _hoisted_31 = { class: "sidebar-stat-num" }; const _hoisted_32 = { class: "sidebar-stat-item" }; const _hoisted_33 = { class: "sidebar-stat-num" }; const _hoisted_34 = { key: 0, class: "section section-cta" }; const _hoisted_35 = { class: "cta-banner" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_AdvancedSearchPanel = __unplugin_components_0; const _component_LiteratureCard = __unplugin_components_1; const _component_LiteraturePreviewDrawer = __unplugin_components_2; return _openBlock(), _createElementBlock("div", _hoisted_1, [ _cache[18] || (_cache[18] = _createElementVNode( "h1", { class: "visually-hidden" }, "OncoLit 肿瘤科研文献中心——每日更新的肿瘤学文献平台", -1 /* CACHED */ )), _createCommentVNode(" ====== 内容网格:左侧(搜索 + 标签 + 文献)+ 右侧(热榜) ====== "), _createElementVNode("div", _hoisted_2, [ _createElementVNode("div", _hoisted_3, [ _createCommentVNode(" 搜索工具栏 "), _createElementVNode("section", _hoisted_4, [ _createElementVNode("div", _hoisted_5, [ _createElementVNode("div", _hoisted_6, [ _createElementVNode("div", _hoisted_7, [ _createElementVNode("div", _hoisted_8, [ _withDirectives(_createElementVNode( "input", { class: "search-input", "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.localQuery = $event), placeholder: "搜索标题、摘要、PMID、DOI...", onKeyup: _withKeys($setup.doLocalSearch, ["enter"]) }, null, 544 /* NEED_HYDRATION, NEED_PATCH */ ), [ [_vModelText, $setup.localQuery] ]), $setup.localQuery ? (_openBlock(), _createBlock($setup["NButton"], { key: 0, text: "", size: "tiny", onClick: $setup.clearSearch, class: "clear-search-btn", title: "清除搜索" }, { icon: _withCtx(() => [ _createVNode($setup["NIcon"], { size: "16" }, { default: _withCtx(() => [ _createVNode($setup["CloseCircleOutline"]) ]), _: 1 /* STABLE */ }) ]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true) ]), _createElementVNode("div", _hoisted_9, [ _createVNode($setup["NButton"], { text: "", size: "tiny", onClick: _cache[1] || (_cache[1] = ($event) => $setup.showAdvanced = !$setup.showAdvanced), title: $setup.showAdvanced ? "收起筛选" : "高级搜索", class: "adv-icon-btn" }, { icon: _withCtx(() => [ _createVNode($setup["NIcon"], { size: "16" }, { default: _withCtx(() => [ _createVNode($setup["OptionsOutline"]) ]), _: 1 /* STABLE */ }) ]), _: 1 /* STABLE */ }, 8, ["title"]), _createVNode($setup["NButton"], { size: "small", type: "primary", onClick: $setup.doLocalSearch, class: "sky-btn search-submit-btn" }, { icon: _withCtx(() => [ _createVNode($setup["NIcon"], { size: "14" }, { default: _withCtx(() => [ _createVNode($setup["SearchOutline"]) ]), _: 1 /* STABLE */ }) ]), default: _withCtx(() => [ _cache[5] || (_cache[5] = _createTextVNode( "搜索 ", -1 /* CACHED */ )) ]), _: 1 /* STABLE */ }) ]) ]) ]) ]), _createVNode(_component_AdvancedSearchPanel, { show: $setup.showAdvanced, loading: $setup.loading, onSearch: $setup.handleAdvancedSearch }, null, 8, ["show", "loading"]) ]), _createCommentVNode(" 热门标签快速筛选 "), $setup.cancerTags.length ? (_openBlock(), _createElementBlock("section", _hoisted_10, [ _createElementVNode("div", _hoisted_11, [ _cache[8] || (_cache[8] = _createElementVNode( "span", { class: "tag-label" }, "热门", -1 /* CACHED */ )), (_openBlock(true), _createElementBlock( _Fragment, null, _renderList($setup.visibleTags, (t) => { return _openBlock(), _createElementBlock("span", { key: t.id, class: _normalizeClass(["tag-pill", { active: $setup.selectedTagIds.includes(String(t.id)) }]), onClick: ($event) => $setup.toggleTag(t.id) }, [ _createTextVNode( _toDisplayString(t.name_zh), 1 /* TEXT */ ), $setup.selectedTagIds.includes(String(t.id)) ? (_openBlock(), _createElementBlock("span", _hoisted_13, "✕")) : _createCommentVNode("v-if", true) ], 10, _hoisted_12); }), 128 /* KEYED_FRAGMENT */ )), $setup.hasMoreTags && !$setup.showAllTags ? (_openBlock(), _createElementBlock("span", { key: 0, class: "tag-expand-btn", onClick: _cache[2] || (_cache[2] = ($event) => $setup.showAllTags = true) }, [ _cache[6] || (_cache[6] = _createTextVNode( "更多 ", -1 /* CACHED */ )), _createVNode($setup["NIcon"], { size: "13", style: { "vertical-align": "-2px" } }, { default: _withCtx(() => [ _createVNode($setup["ChevronDownOutline"]) ]), _: 1 /* STABLE */ }) ])) : _createCommentVNode("v-if", true), $setup.showAllTags ? (_openBlock(), _createElementBlock("span", { key: 1, class: "tag-expand-btn", onClick: _cache[3] || (_cache[3] = ($event) => $setup.showAllTags = false) }, [ _cache[7] || (_cache[7] = _createTextVNode( "收起 ", -1 /* CACHED */ )), _createVNode($setup["NIcon"], { size: "13", style: { "vertical-align": "-2px" } }, { default: _withCtx(() => [ _createVNode($setup["ChevronUpOutline"]) ]), _: 1 /* STABLE */ }) ])) : _createCommentVNode("v-if", true) ]) ])) : _createCommentVNode("v-if", true), _createCommentVNode(" 文献列表 "), _createElementVNode("section", _hoisted_14, [ _createVNode($setup["PageSkeleton"], { loading: $setup.loading && !$setup.feedItems.length }, { default: _withCtx(() => [ !$setup.loading && !$setup.feedItems.length ? (_openBlock(), _createBlock($setup["NEmpty"], { key: 0, description: "暂无文献" })) : _createCommentVNode("v-if", true), $setup.feedItems.length ? (_openBlock(), _createElementBlock( _Fragment, { key: 1 }, [ (_openBlock(true), _createElementBlock( _Fragment, null, _renderList($setup.feedItems, (item, idx) => { return _openBlock(), _createElementBlock( _Fragment, { key: item.id || item.pmid }, [ idx === $setup.dividerIndex ? (_openBlock(), _createElementBlock("div", _hoisted_15, [..._cache[9] || (_cache[9] = [ _createElementVNode( "span", { class: "read-divider-line" }, null, -1 /* CACHED */ ), _createElementVNode( "span", { class: "read-divider-text" }, "—— 上次看到这里 ——", -1 /* CACHED */ ), _createElementVNode( "span", { class: "read-divider-line" }, null, -1 /* CACHED */ ) ])])) : _createCommentVNode("v-if", true), _createVNode(_component_LiteratureCard, { item, showSave: $setup.auth.isAuthenticated, savedPmids: $setup.savedPmids, searchQuery: $setup.searchParams.query, onDetail: $setup.goDetail, onPreview: $setup.openPreview, onSave: $setup.saveLiterature }, null, 8, ["item", "showSave", "savedPmids", "searchQuery"]) ], 64 /* STABLE_FRAGMENT */ ); }), 128 /* KEYED_FRAGMENT */ )), $setup.hasMore ? (_openBlock(), _createElementBlock("div", _hoisted_16, [ _createVNode($setup["NButton"], { class: "sky-btn", loading: $setup.loadingMore, onClick: $setup.loadMore, size: "small" }, { icon: _withCtx(() => [ _createVNode($setup["NIcon"], { size: "14" }, { default: _withCtx(() => [ _createVNode($setup["ChevronDownOutline"]) ]), _: 1 /* STABLE */ }) ]), default: _withCtx(() => [ _cache[10] || (_cache[10] = _createTextVNode( "展示更多", -1 /* CACHED */ )) ]), _: 1 /* STABLE */ }, 8, ["loading"]) ])) : _createCommentVNode("v-if", true) ], 64 /* STABLE_FRAGMENT */ )) : _createCommentVNode("v-if", true) ]), _: 1 /* STABLE */ }, 8, ["loading"]) ]) ]), _createElementVNode("div", _hoisted_17, [ $setup.hotArticles.length ? (_openBlock(), _createElementBlock("section", _hoisted_18, [ _createElementVNode("div", _hoisted_19, [ _cache[12] || (_cache[12] = _createElementVNode( "span", null, "🔥 热搜", -1 /* CACHED */ )), _createElementVNode("div", _hoisted_20, [ _createElementVNode("span", _hoisted_21, [ (_openBlock(true), _createElementBlock( _Fragment, null, _renderList($setup.hotAvailablePages, (p) => { return _openBlock(), _createElementBlock( "span", { key: p, class: _normalizeClass(["hot-page-dot", { active: $setup.hotPage === p }]) }, null, 2 /* CLASS */ ); }), 128 /* KEYED_FRAGMENT */ )) ]), _createVNode($setup["NButton"], { text: "", size: "tiny", style: { "font-size": "12px", "color": "var(--text-muted)" }, onClick: $setup.refreshHot }, { icon: _withCtx(() => [ _createVNode($setup["NIcon"], { size: "12" }, { default: _withCtx(() => [ _createVNode($setup["RefreshOutline"]) ]), _: 1 /* STABLE */ }) ]), default: _withCtx(() => [ _cache[11] || (_cache[11] = _createTextVNode( "换一批 ", -1 /* CACHED */ )) ]), _: 1 /* STABLE */ }) ]) ]), _createElementVNode("div", _hoisted_22, [ (_openBlock(true), _createElementBlock( _Fragment, null, _renderList($setup.hotArticles, (art, i) => { return _openBlock(), _createElementBlock("a", { key: art.id, class: "hot-item", href: `/literature/${art.pmid}` }, [ _createElementVNode( "span", { class: _normalizeClass(["hot-rank", { "hot-rank-top": ($setup.hotPage - 1) * $setup.hotPageSize + i + 1 <= 3 }]) }, _toDisplayString(($setup.hotPage - 1) * $setup.hotPageSize + i + 1), 3 /* TEXT, CLASS */ ), _createElementVNode("div", _hoisted_24, [ _createElementVNode("span", { class: "hot-title", title: art.title }, _toDisplayString(art.title), 9, _hoisted_25), _createElementVNode( "span", _hoisted_26, _toDisplayString(art.journal) + " · " + _toDisplayString(art.cited_by_count ?? 0) + " 被引", 1 /* TEXT */ ) ]) ], 8, _hoisted_23); }), 128 /* KEYED_FRAGMENT */ )) ]) ])) : _createCommentVNode("v-if", true), !$setup.statsLoading && $setup.platformStats.literature_total > 0 ? (_openBlock(), _createElementBlock("div", _hoisted_27, [ _createElementVNode("div", _hoisted_28, [ _createElementVNode( "span", _hoisted_29, _toDisplayString($setup.platformStats.literature_total.toLocaleString()), 1 /* TEXT */ ), _cache[13] || (_cache[13] = _createElementVNode( "span", { class: "sidebar-stat-label" }, "文献总量", -1 /* CACHED */ )) ]), _createElementVNode("div", _hoisted_30, [ _createElementVNode( "span", _hoisted_31, _toDisplayString($setup.platformStats.journal_total), 1 /* TEXT */ ), _cache[14] || (_cache[14] = _createElementVNode( "span", { class: "sidebar-stat-label" }, "收录期刊", -1 /* CACHED */ )) ]), _createElementVNode("div", _hoisted_32, [ _createElementVNode( "span", _hoisted_33, _toDisplayString($setup.platformStats.daily_avg_30d.toFixed(1)), 1 /* TEXT */ ), _cache[15] || (_cache[15] = _createElementVNode( "span", { class: "sidebar-stat-label" }, "日均新增", -1 /* CACHED */ )) ]) ])) : _createCommentVNode("v-if", true) ]) ]), _createCommentVNode(" ====== 注册引导 CTA(未登录) ====== "), !$setup.auth.isAuthenticated && $setup.feedItems.length > 3 ? (_openBlock(), _createElementBlock("section", _hoisted_34, [ _createElementVNode("div", _hoisted_35, [ _cache[17] || (_cache[17] = _createElementVNode( "div", { class: "cta-text" }, [ _createElementVNode("div", { class: "cta-title" }, "🔒 注册后获得完整功能"), _createElementVNode("div", { class: "cta-desc" }, "收藏文献 · 设置关注领域 · 每日精准推送 · 团队共享") ], -1 /* CACHED */ )), _createVNode($setup["NButton"], { class: "sky-btn", type: "primary", size: "large", onClick: _cache[4] || (_cache[4] = ($event) => $setup.router.push("/auth/register")) }, { icon: _withCtx(() => [ _createVNode($setup["NIcon"], { size: "14" }, { default: _withCtx(() => [ _createVNode($setup["PersonAddOutline"]) ]), _: 1 /* STABLE */ }) ]), default: _withCtx(() => [ _cache[16] || (_cache[16] = _createTextVNode( "免费注册", -1 /* CACHED */ )) ]), _: 1 /* STABLE */ }) ]) ])) : _createCommentVNode("v-if", true), _createCommentVNode(" ====== 文献预览抽屉 ====== "), _createVNode(_component_LiteraturePreviewDrawer, { show: $setup.showPreview, pmid: $setup.previewPmid, onClose: $setup.closePreview, onGoDetail: $setup.goDetail }, null, 8, ["show", "pmid", "onClose"]), _createCommentVNode(" 回到顶部 "), $setup.showScrollTop ? (_openBlock(), _createElementBlock("button", { key: 1, class: "scroll-top", onClick: $setup.scrollToTop }, "↑")) : _createCommentVNode("v-if", true) ]); } import "/src/views/public/HomeView.vue?v=1&vue&type=style&index=0&scoped=790ec39d&lang.css"; _sfc_main.__hmrId = "790ec39d"; 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 "/@id/__x00__plugin-vue:export-helper"; export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-790ec39d"], ["__file", "D:/ClaudeCode/frontend/src/views/public/HomeView.vue"]]); //# sourceMappingURL=data:application/json;base64,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Y0FBTyxLQUFJO0FBQUE7VUFBK0IsTUFBSSxTQUFDLE1BQTZDO0FBQUEsWUFBN0MsYUFBNkMsbUJBQXRDLE1BQUssS0FBSTtBQUFBLGdDQUFDLE1BQW9CO0FBQUEsZ0JBQXBCLGFBQW9CO0FBQUE7Ozs7OzRCQUFtQixNQUFJO0FBQUE7Y0FBSjtBQUFBLGNBQUk7QUFBQTtBQUFBO0FBQUE7Ozs7OztJQUk1SztBQUFBLElBQ0EsYUFLRTtBQUFBLE1BSkMsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBTztBQUFBLE1BQ1AsWUFBVTtBQUFBO0lBR2I7QUFBQSxJQUNjLHNDQUFkLG9CQUErRTtBQUFBO01BQWxELE9BQU07QUFBQSxNQUFjLFNBQU87QUFBQSxPQUFhLEdBQUMiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkhvbWVWaWV3LnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyByZWYsIGNvbXB1dGVkLCBvbk1vdW50ZWQsIG9uQmVmb3JlVW5tb3VudCwgd2F0Y2ggfSBmcm9tICd2dWUnXHJcbmltcG9ydCB7IHVzZVJvdXRlciwgdXNlUm91dGUgfSBmcm9tICd2dWUtcm91dGVyJ1xyXG5pbXBvcnQgeyBOQnV0dG9uLCBORW1wdHksIE5JY29uIH0gZnJvbSAnbmFpdmUtdWknXHJcbmltcG9ydCB7IENoZXZyb25Eb3duT3V0bGluZSwgQ2hldnJvblVwT3V0bGluZSwgQ2xvc2VDaXJjbGVPdXRsaW5lLCBPcHRpb25zT3V0bGluZSwgUGVyc29uQWRkT3V0bGluZSwgUmVmcmVzaE91dGxpbmUsIFNlYXJjaE91dGxpbmUgfSBmcm9tICdAdmljb25zL2lvbmljb25zNSdcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSAnLi4vLi4vYXBpL2NsaWVudCdcclxuaW1wb3J0IHsgdXNlQXV0aFN0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmVzL2F1dGgnXHJcbmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnLi4vLi4vY29tcG9zYWJsZXMvdXNlVG9hc3QnXHJcbmltcG9ydCB7IHVzZUxpdGVyYXR1cmVQcmV2aWV3IH0gZnJvbSAnLi4vLi4vY29tcG9zYWJsZXMvdXNlTGl0ZXJhdHVyZVByZXZpZXcnXHJcbmltcG9ydCBQYWdlU2tlbGV0b24gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb21tb24vUGFnZVNrZWxldG9uLnZ1ZSdcclxuaW1wb3J0IHR5cGUgeyBMaXRlcmF0dXJlSXRlbSwgVGFnT3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcblxyXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKVxyXG5jb25zdCByb3V0ZSA9IHVzZVJvdXRlKClcclxuY29uc3QgYXV0aCA9IHVzZUF1dGhTdG9yZSgpXHJcbmNvbnN0IHRvYXN0ID0gdXNlVG9hc3QoKVxyXG5cclxuLy8g4pSA4pSAIOaQnOe0oueKtuaAge+8iOe7n+S4gOaVsOaNrua6kO+8iSDilIDilIBcclxuY29uc3Qgc2VhcmNoUGFyYW1zID0gcmVmKHtcclxuICBxdWVyeTogJycsXHJcbiAgZmllbGQ6ICdhbGwnLFxyXG4gIHRhZ19pZHM6IFtdIGFzIHN0cmluZ1tdLFxyXG4gIGRhdGVfZnJvbTogbnVsbCBhcyBzdHJpbmcgfCBudWxsLFxyXG4gIGRhdGVfdG86IG51bGwgYXMgc3RyaW5nIHwgbnVsbCxcclxuICByZXRyYWN0ZWQ6ICcnLFxyXG4gIG5lZ2F0aXZlX3Jlc3VsdDogJycsXHJcbiAgcHJlY2lzaW9uX21vZGU6ICdtYWpyJyxcclxuICBwYWdlOiAxLFxyXG4gIHBhZ2Vfc2l6ZTogMjAsXHJcbiAgc29ydDogJ2RhdGUnLFxyXG59KVxyXG5cclxuY29uc3QgZmVlZEl0ZW1zID0gcmVmPExpdGVyYXR1cmVJdGVtW10+KFtdKVxyXG5jb25zdCBmZWVkVG90YWwgPSByZWYoMClcclxuY29uc3QgbG9hZGluZyA9IHJlZihmYWxzZSlcclxuY29uc3Qgc2VhcmNoZWQgPSByZWYoZmFsc2UpXHJcblxyXG4vLyDilIDilIAg5YWs5byA57uf6K6hIOKUgOKUgFxyXG5jb25zdCBwbGF0Zm9ybVN0YXRzID0gcmVmKHsgbGl0ZXJhdHVyZV90b3RhbDogMCwgam91cm5hbF90b3RhbDogMCwgZGFpbHlfYXZnXzMwZDogMCB9KVxyXG5jb25zdCBzdGF0c0xvYWRpbmcgPSByZWYodHJ1ZSlcclxuXHJcbi8vIOKUgOKUgCDng63mkJwg4pSA4pSAXHJcbmNvbnN0IGhvdEFydGljbGVzID0gcmVmPGFueVtdPihbXSlcclxuY29uc3QgaG90UGFnZSA9IHJlZigxKVxyXG5jb25zdCBob3RQYWdlU2l6ZSA9IDVcclxuY29uc3QgaG90VG90YWwgPSByZWYoMClcclxuY29uc3QgaG90TWF4UGFnZSA9IDYgLy8g5pyA5aSaM+mhtVxyXG5cclxuY29uc3QgaG90QXZhaWxhYmxlUGFnZXMgPSBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbihob3RNYXhQYWdlLCBNYXRoLmNlaWwoaG90VG90YWwudmFsdWUgLyBob3RQYWdlU2l6ZSkpKVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gbG9hZEhvdEFydGljbGVzKCkge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGFwaS5nZXQoJy9wdWJsaWMvaG90LWFydGljbGVzJywgeyBwYXJhbXM6IHsgcGFnZTogaG90UGFnZS52YWx1ZSwgcGFnZV9zaXplOiBob3RQYWdlU2l6ZSB9IH0pXHJcbiAgICBob3RBcnRpY2xlcy52YWx1ZSA9IGRhdGEuaXRlbXMgfHwgW11cclxuICAgIGhvdFRvdGFsLnZhbHVlID0gZGF0YS50b3RhbCB8fCAwXHJcbiAgfSBjYXRjaCAoZSkgeyAvKiBub24tY3JpdGljYWwgKi8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZWZyZXNoSG90KCkge1xyXG4gIGNvbnN0IG1heCA9IE1hdGgubWluKGhvdE1heFBhZ2UsIE1hdGguY2VpbChob3RUb3RhbC52YWx1ZSAvIGhvdFBhZ2VTaXplKSB8fCAxKVxyXG4gIGhvdFBhZ2UudmFsdWUgPSBob3RQYWdlLnZhbHVlID49IG1heCA/IDEgOiBob3RQYWdlLnZhbHVlICsgMVxyXG4gIGxvYWRIb3RBcnRpY2xlcygpXHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGxvYWRTdGF0cygpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBhcGkuZ2V0KCcvcHVibGljL3N0YXRzJylcclxuICAgIHBsYXRmb3JtU3RhdHMudmFsdWUgPSBkYXRhXHJcbiAgfSBjYXRjaCAoZSkgeyAvKiBzdGF0cyBhcmUgbm9uLWNyaXRpY2FsICovIH1cclxuICBmaW5hbGx5IHsgc3RhdHNMb2FkaW5nLnZhbHVlID0gZmFsc2UgfVxyXG59XHJcblxyXG4vLyDilIDilIAg54Ot6Zeo5qCH562+IOKUgOKUgFxyXG5jb25zdCBhbGxUYWdzID0gcmVmPFRhZ09wdGlvbltdPihbXSlcclxuY29uc3Qgc2VsZWN0ZWRUYWdJZHMgPSByZWY8c3RyaW5nW10+KFtdKVxyXG5jb25zdCBzaG93QWxsVGFncyA9IHJlZihmYWxzZSlcclxuY29uc3QgaXNNb2JpbGUgPSByZWYod2luZG93LmlubmVyV2lkdGggPCA3NjgpXHJcblxyXG4vLyDilIDilIAg6auY57qn5pCc57Si5bGV5byAIOKUgOKUgFxyXG5jb25zdCBzaG93QWR2YW5jZWQgPSByZWYoZmFsc2UpXHJcblxyXG5mdW5jdGlvbiBvbkRvY3VtZW50TW91c2VEb3duKGU6IE1vdXNlRXZlbnQpIHtcclxuICBpZiAoIXNob3dBZHZhbmNlZC52YWx1ZSkgcmV0dXJuXHJcbiAgaWYgKCEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5jbG9zZXN0KCcuYWR2LWZpbHRlci1wYW5lbCcpKSB7XHJcbiAgICBzaG93QWR2YW5jZWQudmFsdWUgPSBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuLy8g4pSA4pSAIOacrOWcsOaQnOe0ouWFs+mUruivje+8iOihjOWGheW/q+mAn+aQnOe0ou+8iSDilIDilIBcclxuY29uc3QgbG9jYWxRdWVyeSA9IHJlZignJylcclxuXHJcbi8vIOKUgOKUgCDpooTop4jmir3lsYkg4pSA4pSAXHJcbmNvbnN0IHsgc2hvd1ByZXZpZXcsIHByZXZpZXdQbWlkLCBvcGVuUHJldmlldzogc2V0UHJldmlld1BtaWQsIGNsb3NlUHJldmlldyB9ID0gdXNlTGl0ZXJhdHVyZVByZXZpZXcoKVxyXG5cclxuLy8g4pSA4pSAIOaUtuiXjyDilIDilIBcclxuY29uc3Qgc2F2aW5nID0gcmVmPFNldDxudW1iZXI+PihuZXcgU2V0KCkpXHJcbmNvbnN0IHNhdmVkUG1pZHMgPSByZWY8U2V0PG51bWJlcj4+KG5ldyBTZXQoKSlcclxuXHJcbi8vIOKUgOKUgCBcIuS4iuasoeeci+WIsOi/memHjFwiIOWIhumalOe6vyDilIDilIBcclxuY29uc3QgbGFzdFZpc2l0U3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hvbWVfbGFzdF92aXNpdCcpXHJcblxyXG5jb25zdCBkaXZpZGVySW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgaWYgKCFsYXN0VmlzaXRTdHIgfHwgIWZlZWRJdGVtcy52YWx1ZS5sZW5ndGgpIHJldHVybiAtMVxyXG4gIGNvbnN0IGxhc3REdCA9IG5ldyBEYXRlKHBhcnNlSW50KGxhc3RWaXNpdFN0cikpLnRvTG9jYWxlRGF0ZVN0cmluZygnc3YnKVxyXG4gIGNvbnN0IGlkeCA9IGZlZWRJdGVtcy52YWx1ZS5maW5kSW5kZXgoKGl0ZW06IExpdGVyYXR1cmVJdGVtKSA9PiB7XHJcbiAgICBjb25zdCBkID0gaXRlbS5wdWJfZGF0ZT8uc2xpY2UoMCwgMTApXHJcbiAgICByZXR1cm4gZCAmJiBkIDw9IGxhc3REdFxyXG4gIH0pXHJcbiAgcmV0dXJuIGlkeCA+IDAgPyBpZHggOiAtMVxyXG59KVxyXG5cclxuLy8g4pSA4pSAIOaVsOaNruWKoOi9veaguOW/gyDilIDilIBcclxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHJlc2V0UGFnZSA9IHRydWUpIHtcclxuICBpZiAocmVzZXRQYWdlKSBzZWFyY2hQYXJhbXMudmFsdWUucGFnZSA9IDFcclxuICBsb2FkaW5nLnZhbHVlID0gdHJ1ZVxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBib2R5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0geyBwYWdlOiBzZWFyY2hQYXJhbXMudmFsdWUucGFnZSwgcGFnZV9zaXplOiBzZWFyY2hQYXJhbXMudmFsdWUucGFnZV9zaXplLCBzb3J0OiBzZWFyY2hQYXJhbXMudmFsdWUuc29ydCB9XHJcbiAgICBpZiAoc2VhcmNoUGFyYW1zLnZhbHVlLnF1ZXJ5KSBib2R5LnF1ZXJ5ID0gc2VhcmNoUGFyYW1zLnZhbHVlLnF1ZXJ5XHJcbiAgICBpZiAoc2VhcmNoUGFyYW1zLnZhbHVlLmZpZWxkICE9PSAnYWxsJykgYm9keS5maWVsZCA9IHNlYXJjaFBhcmFtcy52YWx1ZS5maWVsZFxyXG4gICAgaWYgKHNlYXJjaFBhcmFtcy52YWx1ZS50YWdfaWRzLmxlbmd0aCkgYm9keS50YWdfaWRzID0gc2VhcmNoUGFyYW1zLnZhbHVlLnRhZ19pZHNcclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUuZGF0ZV9mcm9tKSBib2R5LmRhdGVfZnJvbSA9IHNlYXJjaFBhcmFtcy52YWx1ZS5kYXRlX2Zyb21cclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUuZGF0ZV90bykgYm9keS5kYXRlX3RvID0gc2VhcmNoUGFyYW1zLnZhbHVlLmRhdGVfdG9cclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUucmV0cmFjdGVkKSBib2R5LnJldHJhY3RlZCA9IHNlYXJjaFBhcmFtcy52YWx1ZS5yZXRyYWN0ZWRcclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUubmVnYXRpdmVfcmVzdWx0KSBib2R5Lm5lZ2F0aXZlX3Jlc3VsdCA9IHNlYXJjaFBhcmFtcy52YWx1ZS5uZWdhdGl2ZV9yZXN1bHRcclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUucHJlY2lzaW9uX21vZGUpIGJvZHkucHJlY2lzaW9uX21vZGUgPSBzZWFyY2hQYXJhbXMudmFsdWUucHJlY2lzaW9uX21vZGVcclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXBpLnBvc3QoJy9mZWF0dXJlcy9zZWFyY2gvYWR2YW5jZWQnLCBib2R5KVxyXG4gICAgaWYgKHJlc2V0UGFnZSkge1xyXG4gICAgICBmZWVkSXRlbXMudmFsdWUgPSBkYXRhLml0ZW1zIHx8IFtdXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmZWVkSXRlbXMudmFsdWUucHVzaCguLi4oZGF0YS5pdGVtcyB8fCBbXSkpXHJcbiAgICB9XHJcbiAgICBmZWVkVG90YWwudmFsdWUgPSBkYXRhLnRvdGFsIHx8IDBcclxuICAgIHNlYXJjaGVkLnZhbHVlID0gdHJ1ZVxyXG4gIH0gY2F0Y2ggKGUpIHsgdG9hc3QuYXBpRXJyb3IoZSwgJ+aQnOe0ouaWh+eMruWksei0pe+8jOivt+mHjeivlScpIH1cclxuICBmaW5hbGx5IHsgbG9hZGluZy52YWx1ZSA9IGZhbHNlIH1cclxufVxyXG5cclxuLy8g4pSA4pSAIOagh+etvuetm+mAie+8iOWkmumAie+8iSDilIDilIBcclxuZnVuY3Rpb24gdG9nZ2xlVGFnKHRhZ0lkOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICBjb25zdCBpZCA9IFN0cmluZyh0YWdJZClcclxuICBjb25zdCBpZHggPSBzZWxlY3RlZFRhZ0lkcy52YWx1ZS5pbmRleE9mKGlkKVxyXG4gIGlmIChpZHggPj0gMCkge1xyXG4gICAgc2VsZWN0ZWRUYWdJZHMudmFsdWUuc3BsaWNlKGlkeCwgMSlcclxuICB9IGVsc2Uge1xyXG4gICAgc2VsZWN0ZWRUYWdJZHMudmFsdWUucHVzaChpZClcclxuICB9XHJcbiAgc2VhcmNoUGFyYW1zLnZhbHVlLnRhZ19pZHMgPSBbLi4uc2VsZWN0ZWRUYWdJZHMudmFsdWVdXHJcbiAgZmV0Y2hEYXRhKClcclxufVxyXG5cclxuLy8g4pSA4pSAIOeZjOenjeagh+etvu+8iOi/h+a7pCB0YWdfY2F0ZWdvcnkgPT09ICdjYW5jZXIn77yM5LqM57qn5qCH562+77yJIOKUgOKUgFxyXG5jb25zdCBjYW5jZXJUYWdzID0gY29tcHV0ZWQoKCkgPT4gYWxsVGFncy52YWx1ZS5maWx0ZXIoKHQ6IFRhZ09wdGlvbikgPT4gdC50YWdfY2F0ZWdvcnkgPT09ICdjYW5jZXInICYmIHQubGV2ZWwgPT09IDIpKVxyXG5cclxuLy8g6LaF6L+HIDcg5Liq5qCH562+5pe25pi+56S6XCLmm7TlpJpcIuaMiemSru+8iOS7heenu+WKqOerr+aKmOWPoO+8iVxyXG5jb25zdCBoYXNNb3JlVGFncyA9IGNvbXB1dGVkKCgpID0+IGNhbmNlclRhZ3MudmFsdWUubGVuZ3RoID4gNylcclxuXHJcbi8vIOaKmOWPoOaXtuWPquaYvuekuuesrOS4gOihjOagh+etvu+8jOWxleW8gOaXtuaYvuekuuWFqOmDqFxyXG5jb25zdCB2aXNpYmxlVGFncyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBpZiAoc2hvd0FsbFRhZ3MudmFsdWUpIHJldHVybiBjYW5jZXJUYWdzLnZhbHVlXHJcbiAgcmV0dXJuIGNhbmNlclRhZ3MudmFsdWUuc2xpY2UoMCwgNylcclxufSlcclxuXHJcbi8vIOKUgOKUgCDooYzlhoXmkJzntKIg4pSA4pSAXHJcbmZ1bmN0aW9uIGRvTG9jYWxTZWFyY2goKSB7XHJcbiAgc2hvd0FkdmFuY2VkLnZhbHVlID0gZmFsc2VcclxuICBzZWFyY2hQYXJhbXMudmFsdWUuZmllbGQgPSAnYWxsJ1xyXG4gIGlmIChsb2NhbFF1ZXJ5LnZhbHVlLnRyaW0oKSkge1xyXG4gICAgc2VhcmNoUGFyYW1zLnZhbHVlLnF1ZXJ5ID0gbG9jYWxRdWVyeS52YWx1ZVxyXG4gIH0gZWxzZSB7XHJcbiAgICBzZWFyY2hQYXJhbXMudmFsdWUucXVlcnkgPSAnJ1xyXG4gIH1cclxuICBmZXRjaERhdGEoKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhclNlYXJjaCgpIHtcclxuICBsb2NhbFF1ZXJ5LnZhbHVlID0gJydcclxuICBzZWFyY2hQYXJhbXMudmFsdWUgPSB7XHJcbiAgICBxdWVyeTogJycsIGZpZWxkOiAnYWxsJywgdGFnX2lkczogW10sIGRhdGVfZnJvbTogbnVsbCwgZGF0ZV90bzogbnVsbCxcclxuICAgIHJldHJhY3RlZDogJycsIG5lZ2F0aXZlX3Jlc3VsdDogJycsIHByZWNpc2lvbl9tb2RlOiAnbWFqcicsXHJcbiAgICBwYWdlOiAxLCBwYWdlX3NpemU6IDIwLCBzb3J0OiAnZGF0ZScsXHJcbiAgfVxyXG4gIHNlbGVjdGVkVGFnSWRzLnZhbHVlID0gW11cclxuICBzaG93QWR2YW5jZWQudmFsdWUgPSBmYWxzZVxyXG4gIGZldGNoRGF0YSgpXHJcbn1cclxuXHJcbi8vIOKUgOKUgCDpq5jnuqfmkJzntKIg4pSA4pSAXHJcbmZ1bmN0aW9uIGhhbmRsZUFkdmFuY2VkU2VhcmNoKHBhcmFtczoge1xyXG4gIHF1ZXJ5OiBzdHJpbmdcclxuICBmaWVsZDogc3RyaW5nXHJcbiAgZGF0ZV9mcm9tOiBzdHJpbmcgfCBudWxsXHJcbiAgZGF0ZV90bzogc3RyaW5nIHwgbnVsbFxyXG4gIGpvdXJuYWxfdGllcnM6IHN0cmluZ1tdXHJcbiAgdGFnX2lkczogc3RyaW5nW11cclxuICByZXRyYWN0ZWQ6IHN0cmluZ1xyXG4gIG5lZ2F0aXZlX3Jlc3VsdDogc3RyaW5nXHJcbn0pIHtcclxuICBzZWFyY2hQYXJhbXMudmFsdWUucXVlcnkgPSBwYXJhbXMucXVlcnlcclxuICBzZWFyY2hQYXJhbXMudmFsdWUuZmllbGQgPSBwYXJhbXMuZmllbGRcclxuICBzZWFyY2hQYXJhbXMudmFsdWUuZGF0ZV9mcm9tID0gcGFyYW1zLmRhdGVfZnJvbVxyXG4gIHNlYXJjaFBhcmFtcy52YWx1ZS5kYXRlX3RvID0gcGFyYW1zLmRhdGVfdG9cclxuICBzZWFyY2hQYXJhbXMudmFsdWUudGFnX2lkcyA9IHBhcmFtcy50YWdfaWRzXHJcbiAgc2VhcmNoUGFyYW1zLnZhbHVlLnJldHJhY3RlZCA9IHBhcmFtcy5yZXRyYWN0ZWRcclxuICBzZWFyY2hQYXJhbXMudmFsdWUubmVnYXRpdmVfcmVzdWx0ID0gcGFyYW1zLm5lZ2F0aXZlX3Jlc3VsdFxyXG4gIHNlbGVjdGVkVGFnSWRzLnZhbHVlID0gWy4uLnBhcmFtcy50YWdfaWRzXVxyXG4gIHNob3dBZHZhbmNlZC52YWx1ZSA9IGZhbHNlXHJcbiAgZmV0Y2hEYXRhKClcclxufVxyXG5cclxuLy8g4pSA4pSAIOaUtuiXjyDilIDilIBcclxuYXN5bmMgZnVuY3Rpb24gc2F2ZUxpdGVyYXR1cmUoaXRlbTogTGl0ZXJhdHVyZUl0ZW0pIHtcclxuICBpZiAoIWF1dGguaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICByb3V0ZXIucHVzaCgnL2F1dGgvbG9naW4nKVxyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzYXZpbmcudmFsdWUuaGFzKGl0ZW0ucG1pZCkgfHwgc2F2ZWRQbWlkcy52YWx1ZS5oYXMoaXRlbS5wbWlkKSkgcmV0dXJuXHJcbiAgc2F2aW5nLnZhbHVlID0gbmV3IFNldChzYXZpbmcudmFsdWUpLmFkZChpdGVtLnBtaWQpXHJcbiAgdHJ5IHtcclxuICAgIGF3YWl0IGFwaS5wb3N0KGAvbGl0ZXJhdHVyZS8ke2l0ZW0ucG1pZH0vc2F2ZWApXHJcbiAgICBzYXZlZFBtaWRzLnZhbHVlID0gbmV3IFNldChzYXZlZFBtaWRzLnZhbHVlKS5hZGQoaXRlbS5wbWlkKVxyXG4gICAgdG9hc3Quc3VjY2Vzcygn5bey5pS26JePJylcclxuICB9IGNhdGNoIChlKSB7IHRvYXN0LmFwaUVycm9yKGUsICfmlLbol4/mlofnjK7lpLHotKXvvIzor7fph43or5UnKSB9XHJcbiAgZmluYWxseSB7XHJcbiAgICBjb25zdCBzID0gbmV3IFNldChzYXZpbmcudmFsdWUpXHJcbiAgICBzLmRlbGV0ZShpdGVtLnBtaWQpXHJcbiAgICBzYXZpbmcudmFsdWUgPSBzXHJcbiAgfVxyXG59XHJcblxyXG4vLyDilIDilIAg6aKE6KeIIOKUgOKUgFxyXG5mdW5jdGlvbiBvcGVuUHJldmlldyhpdGVtOiBMaXRlcmF0dXJlSXRlbSkge1xyXG4gIGlmIChpdGVtLnBtaWQpIHNldFByZXZpZXdQbWlkKGl0ZW0ucG1pZClcclxufVxyXG5mdW5jdGlvbiBnb0RldGFpbChpdGVtOiBMaXRlcmF0dXJlSXRlbSkge1xyXG4gIGNsb3NlUHJldmlldygpXHJcbiAgY29uc3QgcSA9IHNlYXJjaFBhcmFtcy52YWx1ZS5xdWVyeVxyXG4gIHJvdXRlci5wdXNoKHEgPyBgL2xpdGVyYXR1cmUvJHtpdGVtLnBtaWR9P3E9JHtlbmNvZGVVUklDb21wb25lbnQocSl9YCA6IGAvbGl0ZXJhdHVyZS8ke2l0ZW0ucG1pZH1gKVxyXG59XHJcblxyXG4vLyDilIDilIAg5pS26JeP5oyB5LmF5YyWIOKUgOKUgFxyXG5hc3luYyBmdW5jdGlvbiBsb2FkU2F2ZWRQbWlkcygpIHtcclxuICBpZiAoIWF1dGguaXNBdXRoZW50aWNhdGVkKSByZXR1cm5cclxuICB0cnkge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBhcGkuZ2V0KCcvbGl0ZXJhdHVyZS9zYXZlZCcpXHJcbiAgICBzYXZlZFBtaWRzLnZhbHVlID0gbmV3IFNldCgoZGF0YS5pdGVtcyB8fCBbXSkubWFwKChpOiBhbnkpID0+IGkucG1pZCkpXHJcbiAgfSBjYXRjaCAoZSkgeyB0b2FzdC5hcGlFcnJvcihlLCAn5Yqg6L295pS26JeP54q25oCB5aSx6LSlJykgfVxyXG59XHJcblxyXG4vLyDilIDilIAg5Yqg6L295pu05aSa77yI6L+95Yqg5LiL5LiA6aG177yJIOKUgOKUgFxyXG5jb25zdCBsb2FkaW5nTW9yZSA9IHJlZihmYWxzZSlcclxuY29uc3QgaGFzTW9yZSA9IGNvbXB1dGVkKCgpID0+IGZlZWRJdGVtcy52YWx1ZS5sZW5ndGggPCBmZWVkVG90YWwudmFsdWUpXHJcblxyXG4vLyDilIDilIAg5Zue5Yiw6aG26YOoIOKUgOKUgFxyXG5jb25zdCBzaG93U2Nyb2xsVG9wID0gcmVmKGZhbHNlKVxyXG5mdW5jdGlvbiBvblNjcm9sbCgpIHtcclxuICBzaG93U2Nyb2xsVG9wLnZhbHVlID0gd2luZG93LnNjcm9sbFkgPiB3aW5kb3cuaW5uZXJIZWlnaHRcclxufVxyXG5mdW5jdGlvbiBzY3JvbGxUb1RvcCgpIHtcclxuICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxyXG59XHJcbmZ1bmN0aW9uIG9uUmVzaXplKCkge1xyXG4gIGlzTW9iaWxlLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGggPCA3NjhcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gbG9hZE1vcmUoKSB7XHJcbiAgaWYgKGxvYWRpbmdNb3JlLnZhbHVlIHx8ICFoYXNNb3JlLnZhbHVlKSByZXR1cm5cclxuICBsb2FkaW5nTW9yZS52YWx1ZSA9IHRydWVcclxuICBzZWFyY2hQYXJhbXMudmFsdWUucGFnZSsrXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7IHBhZ2U6IHNlYXJjaFBhcmFtcy52YWx1ZS5wYWdlLCBwYWdlX3NpemU6IHNlYXJjaFBhcmFtcy52YWx1ZS5wYWdlX3NpemUsIHNvcnQ6IHNlYXJjaFBhcmFtcy52YWx1ZS5zb3J0IH1cclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUucXVlcnkpIGJvZHkucXVlcnkgPSBzZWFyY2hQYXJhbXMudmFsdWUucXVlcnlcclxuICAgIGlmIChzZWFyY2hQYXJhbXMudmFsdWUuZmllbGQgIT09ICdhbGwnKSBib2R5LmZpZWxkID0gc2VhcmNoUGFyYW1zLnZhbHVlLmZpZWxkXHJcbiAgICBpZiAoc2VhcmNoUGFyYW1zLnZhbHVlLnRhZ19pZHMubGVuZ3RoKSBib2R5LnRhZ19pZHMgPSBzZWFyY2hQYXJhbXMudmFsdWUudGFnX2lkc1xyXG4gICAgaWYgKHNlYXJjaFBhcmFtcy52YWx1ZS5kYXRlX2Zyb20pIGJvZHkuZGF0ZV9mcm9tID0gc2VhcmNoUGFyYW1zLnZhbHVlLmRhdGVfZnJvbVxyXG4gICAgaWYgKHNlYXJjaFBhcmFtcy52YWx1ZS5kYXRlX3RvKSBib2R5LmRhdGVfdG8gPSBzZWFyY2hQYXJhbXMudmFsdWUuZGF0ZV90b1xyXG4gICAgaWYgKHNlYXJjaFBhcmFtcy52YWx1ZS5yZXRyYWN0ZWQpIGJvZHkucmV0cmFjdGVkID0gc2VhcmNoUGFyYW1zLnZhbHVlLnJldHJhY3RlZFxyXG4gICAgaWYgKHNlYXJjaFBhcmFtcy52YWx1ZS5uZWdhdGl2ZV9yZXN1bHQpIGJvZHkubmVnYXRpdmVfcmVzdWx0ID0gc2VhcmNoUGFyYW1zLnZhbHVlLm5lZ2F0aXZlX3Jlc3VsdFxyXG4gICAgaWYgKHNlYXJjaFBhcmFtcy52YWx1ZS5wcmVjaXNpb25fbW9kZSkgYm9keS5wcmVjaXNpb25fbW9kZSA9IHNlYXJjaFBhcmFtcy52YWx1ZS5wcmVjaXNpb25fbW9kZVxyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBhcGkucG9zdCgnL2ZlYXR1cmVzL3NlYXJjaC9hZHZhbmNlZCcsIGJvZHkpXHJcbiAgICBmZWVkSXRlbXMudmFsdWUucHVzaCguLi4oZGF0YS5pdGVtcyB8fCBbXSkpXHJcbiAgICBmZWVkVG90YWwudmFsdWUgPSBkYXRhLnRvdGFsIHx8IDBcclxuICB9IGNhdGNoIChlKSB7IHRvYXN0LmFwaUVycm9yKGUsICfliqDovb3mm7TlpJrlpLHotKXvvIzor7fph43or5UnKSB9XHJcbiAgZmluYWxseSB7IGxvYWRpbmdNb3JlLnZhbHVlID0gZmFsc2UgfVxyXG59XHJcblxyXG4vLyDilIDilIAg5LuOIFVSTCDmgaLlpI3nirbmgIEg4pSA4pSAXHJcbmZ1bmN0aW9uIHJlc3RvcmVGcm9tVXJsKCkge1xyXG4gIGNvbnN0IHRhZyA9IHJvdXRlLnF1ZXJ5LnRhZyBhcyBzdHJpbmdcclxuICBjb25zdCBkYXRlID0gcm91dGUucXVlcnkuZGF0ZSBhcyBzdHJpbmdcclxuICBjb25zdCBxID0gcm91dGUucXVlcnkucSBhcyBzdHJpbmdcclxuICBpZiAodGFnKSB7XHJcbiAgICBjb25zdCBpZHMgPSB0YWcuc3BsaXQoJywnKVxyXG4gICAgc2VsZWN0ZWRUYWdJZHMudmFsdWUgPSBpZHNcclxuICAgIHNlYXJjaFBhcmFtcy52YWx1ZS50YWdfaWRzID0gaWRzXHJcbiAgfVxyXG4gIGlmIChkYXRlKSB7XHJcbiAgICBzZWFyY2hQYXJhbXMudmFsdWUuZGF0ZV9mcm9tID0gZGF0ZVxyXG4gICAgc2VhcmNoUGFyYW1zLnZhbHVlLmRhdGVfdG8gPSBkYXRlXHJcbiAgfVxyXG4gIGlmIChxKSB7XHJcbiAgICBzZWFyY2hQYXJhbXMudmFsdWUucXVlcnkgPSBxXHJcbiAgICBsb2NhbFF1ZXJ5LnZhbHVlID0gcVxyXG4gIH1cclxuICBjb25zdCBwID0gcm91dGUucXVlcnkucGFnZSBhcyBzdHJpbmdcclxuICBpZiAocCkge1xyXG4gICAgc2VhcmNoUGFyYW1zLnZhbHVlLnBhZ2UgPSBwYXJzZUludChwKSB8fCAxXHJcbiAgfVxyXG59XHJcblxyXG4vLyDilIDilIAg5ZCM5q2l54q25oCB5YiwIFVSTCDilIDilIBcclxuY29uc3Qgc2VhcmNoS2V5ID0gY29tcHV0ZWQoKCkgPT5cclxuICBKU09OLnN0cmluZ2lmeShbc2VhcmNoUGFyYW1zLnZhbHVlLnF1ZXJ5LCBzZWFyY2hQYXJhbXMudmFsdWUudGFnX2lkcywgc2VhcmNoUGFyYW1zLnZhbHVlLmRhdGVfZnJvbSwgc2VhcmNoUGFyYW1zLnZhbHVlLmRhdGVfdG8sIHNlYXJjaFBhcmFtcy52YWx1ZS5wYWdlLCBzZWFyY2hQYXJhbXMudmFsdWUuc29ydF0pXHJcbilcclxuXHJcbndhdGNoKHNlYXJjaEtleSwgKCkgPT4ge1xyXG4gIGNvbnN0IHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cclxuICBpZiAoc2VhcmNoUGFyYW1zLnZhbHVlLnRhZ19pZHMubGVuZ3RoKSBxdWVyeS50YWcgPSBzZWFyY2hQYXJhbXMudmFsdWUudGFnX2lkcy5qb2luKCcsJylcclxuICBpZiAoc2VhcmNoUGFyYW1zLnZhbHVlLmRhdGVfZnJvbSkgcXVlcnkuZGF0ZSA9IHNlYXJjaFBhcmFtcy52YWx1ZS5kYXRlX2Zyb21cclxuICBpZiAoc2VhcmNoUGFyYW1zLnZhbHVlLnF1ZXJ5KSBxdWVyeS5xID0gc2VhcmNoUGFyYW1zLnZhbHVlLnF1ZXJ5XHJcbiAgcm91dGVyLnJlcGxhY2UoeyBxdWVyeSB9KVxyXG59KVxyXG5cclxuLy8g4pSA4pSAIOajgOa1iyBMT0dPIOeCueWHu++8iOmmlumhteWIt+aWsO+8iSDilIDilIBcclxud2F0Y2goKCkgPT4gcm91dGUucXVlcnksIChxKSA9PiB7XHJcbiAgaWYgKHEgJiYgcS5fdCkge1xyXG4gICAgY2xlYXJTZWFyY2goKVxyXG4gIH1cclxufSlcclxuXHJcbi8vIOKUgOKUgCDliJ3lp4vljJYg4pSA4pSAXHJcbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XHJcbiAgcmVzdG9yZUZyb21VcmwoKVxyXG4gIGxvYWRTdGF0cygpXHJcbiAgbG9hZEhvdEFydGljbGVzKClcclxuICB0cnkge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBhcGkuZ2V0KCcvcHVibGljL3RhZ3MnKVxyXG4gICAgYWxsVGFncy52YWx1ZSA9IChkYXRhLnRhZ3MgfHwgW10pXHJcbiAgfSBjYXRjaCAoZSkgeyB0b2FzdC5hcGlFcnJvcihlLCAn5Yqg6L295qCH562+5aSx6LSlJykgfVxyXG4gIGF3YWl0IGZldGNoRGF0YSgpXHJcbiAgYXdhaXQgbG9hZFNhdmVkUG1pZHMoKVxyXG4gIC8vIOiusOW9leacrOasoeiuv+mXruaXtumXtO+8iOeUqOS6jlwi5LiK5qyh55yL5Yiw6L+Z6YeMXCLliIbpmpTnur/vvIlcclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaG9tZV9sYXN0X3Zpc2l0JywgU3RyaW5nKERhdGUubm93KCkpKVxyXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbClcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUpXHJcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Eb2N1bWVudE1vdXNlRG93bilcclxufSlcclxuXHJcbm9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxyXG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlc2l6ZSlcclxuICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY3VtZW50TW91c2VEb3duKVxyXG59KVxyXG48L3NjcmlwdD5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiaG9tZVwiPlxyXG5cclxuICAgIDxoMSBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPk9uY29MaXQg6IK/55ik56eR56CU5paH54yu5Lit5b+D4oCU4oCU5q+P5pel5pu05paw55qE6IK/55ik5a2m5paH54yu5bmz5Y+wPC9oMT5cclxuXHJcbiAgICA8IS0tID09PT09PSDlhoXlrrnnvZHmoLzvvJrlt6bkvqfvvIjmkJzntKIgKyDmoIfnrb4gKyDmlofnjK7vvIkrIOWPs+S+p++8iOeDreamnO+8iSA9PT09PT0gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1ncmlkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWdyaWQtbWFpblwiPlxyXG5cclxuICAgICAgICA8IS0tIOaQnOe0ouW3peWFt+agjyAtLT5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi10b29sYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXJvdy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dC10b3BcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgdi1tb2RlbD1cImxvY2FsUXVlcnlcIiBwbGFjZWhvbGRlcj1cIuaQnOe0ouagh+mimOOAgeaRmOimgeOAgVBNSUTjgIFET0kuLi5cIiBAa2V5dXAuZW50ZXI9XCJkb0xvY2FsU2VhcmNoXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPE5CdXR0b24gdi1pZj1cImxvY2FsUXVlcnlcIiB0ZXh0IHNpemU9XCJ0aW55XCIgQGNsaWNrPVwiY2xlYXJTZWFyY2hcIiBjbGFzcz1cImNsZWFyLXNlYXJjaC1idG5cIiB0aXRsZT1cIua4hemZpOaQnOe0olwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaWNvbj48Tkljb24gc2l6ZT1cIjE2XCI+PENsb3NlQ2lyY2xlT3V0bGluZSAvPjwvTkljb24+PC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9OQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPE5CdXR0b24gdGV4dCBzaXplPVwidGlueVwiIEBjbGljaz1cInNob3dBZHZhbmNlZCA9ICFzaG93QWR2YW5jZWRcIiA6dGl0bGU9XCJzaG93QWR2YW5jZWQ/J+aUtui1t+etm+mAiSc6J+mrmOe6p+aQnOe0oidcIiBjbGFzcz1cImFkdi1pY29uLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaWNvbj48Tkljb24gc2l6ZT1cIjE2XCI+PE9wdGlvbnNPdXRsaW5lIC8+PC9OSWNvbj48L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L05CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxOQnV0dG9uIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJwcmltYXJ5XCIgQGNsaWNrPVwiZG9Mb2NhbFNlYXJjaFwiIGNsYXNzPVwic2t5LWJ0biBzZWFyY2gtc3VibWl0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaWNvbj48Tkljb24gc2l6ZT1cIjE0XCI+PFNlYXJjaE91dGxpbmUgLz48L05JY29uPjwvdGVtcGxhdGU+5pCc57SiXHJcbiAgICAgICAgICAgICAgICAgIDwvTkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPEFkdmFuY2VkU2VhcmNoUGFuZWxcclxuICAgICAgICAgICAgOnNob3c9XCJzaG93QWR2YW5jZWRcIlxyXG4gICAgICAgICAgICA6bG9hZGluZz1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBAc2VhcmNoPVwiaGFuZGxlQWR2YW5jZWRTZWFyY2hcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDwhLS0g54Ot6Zeo5qCH562+5b+r6YCf562b6YCJIC0tPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiIHYtaWY9XCJjYW5jZXJUYWdzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1iYXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWctbGFiZWxcIj7ng63pl6g8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwidCBpbiB2aXNpYmxlVGFnc1wiIDprZXk9XCJ0LmlkXCIgY2xhc3M9XCJ0YWctcGlsbFwiXHJcbiAgICAgICAgICAgICAgOmNsYXNzPVwieyBhY3RpdmU6IHNlbGVjdGVkVGFnSWRzLmluY2x1ZGVzKFN0cmluZyh0LmlkKSkgfVwiIEBjbGljaz1cInRvZ2dsZVRhZyh0LmlkKVwiPlxyXG4gICAgICAgICAgICAgIHt7IHQubmFtZV96aCB9fTxzcGFuIHYtaWY9XCJzZWxlY3RlZFRhZ0lkcy5pbmNsdWRlcyhTdHJpbmcodC5pZCkpXCIgY2xhc3M9XCJ0YWcteFwiPuKclTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiB2LWlmPVwiaGFzTW9yZVRhZ3MgJiYgIXNob3dBbGxUYWdzXCIgY2xhc3M9XCJ0YWctZXhwYW5kLWJ0blwiIEBjbGljaz1cInNob3dBbGxUYWdzID0gdHJ1ZVwiPuabtOWkmiA8Tkljb24gc2l6ZT1cIjEzXCIgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjotMnB4XCI+PENoZXZyb25Eb3duT3V0bGluZSAvPjwvTkljb24+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiB2LWlmPVwic2hvd0FsbFRhZ3NcIiBjbGFzcz1cInRhZy1leHBhbmQtYnRuXCIgQGNsaWNrPVwic2hvd0FsbFRhZ3MgPSBmYWxzZVwiPuaUtui1tyA8Tkljb24gc2l6ZT1cIjEzXCIgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjotMnB4XCI+PENoZXZyb25VcE91dGxpbmUgLz48L05JY29uPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgICAgPCEtLSDmlofnjK7liJfooaggLS0+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgPFBhZ2VTa2VsZXRvbiA6bG9hZGluZz1cImxvYWRpbmcgJiYgIWZlZWRJdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPE5FbXB0eSB2LWlmPVwiIWxvYWRpbmcgJiYgIWZlZWRJdGVtcy5sZW5ndGhcIiBkZXNjcmlwdGlvbj1cIuaaguaXoOaWh+eMrlwiIC8+XHJcblxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImZlZWRJdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaWR4KSBpbiBmZWVkSXRlbXNcIiA6a2V5PVwiaXRlbS5pZCB8fCBpdGVtLnBtaWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImlkeCA9PT0gZGl2aWRlckluZGV4XCIgY2xhc3M9XCJyZWFkLWRpdmlkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZC1kaXZpZGVyLWxpbmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWQtZGl2aWRlci10ZXh0XCI+4oCU4oCUIOS4iuasoeeci+WIsOi/memHjCDigJTigJQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWQtZGl2aWRlci1saW5lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxMaXRlcmF0dXJlQ2FyZFxyXG4gICAgICAgICAgICAgICAgOml0ZW09XCJpdGVtXCJcclxuICAgICAgICAgICAgICAgIDpzaG93U2F2ZT1cImF1dGguaXNBdXRoZW50aWNhdGVkXCJcclxuICAgICAgICAgICAgICAgIDpzYXZlZFBtaWRzPVwic2F2ZWRQbWlkc1wiXHJcbiAgICAgICAgICAgICAgICA6c2VhcmNoUXVlcnk9XCJzZWFyY2hQYXJhbXMucXVlcnlcIlxyXG4gICAgICAgICAgICAgICAgQGRldGFpbD1cImdvRGV0YWlsXCJcclxuICAgICAgICAgICAgICAgIEBwcmV2aWV3PVwib3BlblByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgQHNhdmU9XCJzYXZlTGl0ZXJhdHVyZVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgdi1pZj1cImhhc01vcmVcIiBjbGFzcz1cImxvYWQtbW9yZVwiPlxyXG4gICAgICAgICAgICAgIDxOQnV0dG9uIGNsYXNzPVwic2t5LWJ0blwiIDpsb2FkaW5nPVwibG9hZGluZ01vcmVcIiBAY2xpY2s9XCJsb2FkTW9yZVwiIHNpemU9XCJzbWFsbFwiPjx0ZW1wbGF0ZSAjaWNvbj48Tkljb24gc2l6ZT1cIjE0XCI+PENoZXZyb25Eb3duT3V0bGluZSAvPjwvTkljb24+PC90ZW1wbGF0ZT7lsZXnpLrmm7TlpJo8L05CdXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8L1BhZ2VTa2VsZXRvbj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1ncmlkLXNpZGVcIj5cclxuICAgICAgICA8c2VjdGlvbiB2LWlmPVwiaG90QXJ0aWNsZXMubGVuZ3RoXCIgY2xhc3M9XCJzZWN0aW9uLWhvdC1zaWRlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG90LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8c3Bhbj7wn5SlIOeDreaQnDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdC1oZWFkZXItcmlnaHRcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1wYWdlLWRvdHNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwicCBpbiBob3RBdmFpbGFibGVQYWdlc1wiIDprZXk9XCJwXCIgY2xhc3M9XCJob3QtcGFnZS1kb3RcIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogaG90UGFnZSA9PT0gcCB9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8TkJ1dHRvbiB0ZXh0IHNpemU9XCJ0aW55XCIgc3R5bGU9XCJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKVwiIEBjbGljaz1cInJlZnJlc2hIb3RcIj5cclxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaWNvbj48Tkljb24gc2l6ZT1cIjEyXCI+PFJlZnJlc2hPdXRsaW5lIC8+PC9OSWNvbj48L3RlbXBsYXRlPuaNouS4gOaJuVxyXG4gICAgICAgICAgICAgIDwvTkJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3QtbGlzdFwiPlxyXG4gICAgICAgICAgICA8YSB2LWZvcj1cIihhcnQsIGkpIGluIGhvdEFydGljbGVzXCIgOmtleT1cImFydC5pZFwiIGNsYXNzPVwiaG90LWl0ZW1cIiA6aHJlZj1cImAvbGl0ZXJhdHVyZS8ke2FydC5wbWlkfWBcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1yYW5rXCIgOmNsYXNzPVwieyAnaG90LXJhbmstdG9wJzogKGhvdFBhZ2UtMSkqaG90UGFnZVNpemUgKyBpICsgMSA8PSAzIH1cIj57eyAoaG90UGFnZS0xKSpob3RQYWdlU2l6ZSArIGkgKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3QtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJob3QtdGl0bGVcIiA6dGl0bGU9XCJhcnQudGl0bGVcIj57eyBhcnQudGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1tZXRhXCI+e3sgYXJ0LmpvdXJuYWwgfX0gwrcge3sgYXJ0LmNpdGVkX2J5X2NvdW50ID8/IDAgfX0g6KKr5byVPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPGRpdiB2LWlmPVwiIXN0YXRzTG9hZGluZyAmJiBwbGF0Zm9ybVN0YXRzLmxpdGVyYXR1cmVfdG90YWwgPiAwXCIgY2xhc3M9XCJzaWRlYmFyLXN0YXRzXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1zdGF0LWl0ZW1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaWRlYmFyLXN0YXQtbnVtXCI+e3sgcGxhdGZvcm1TdGF0cy5saXRlcmF0dXJlX3RvdGFsLnRvTG9jYWxlU3RyaW5nKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2lkZWJhci1zdGF0LWxhYmVsXCI+5paH54yu5oC76YePPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1zdGF0LWl0ZW1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaWRlYmFyLXN0YXQtbnVtXCI+e3sgcGxhdGZvcm1TdGF0cy5qb3VybmFsX3RvdGFsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNpZGViYXItc3RhdC1sYWJlbFwiPuaUtuW9leacn+WIijwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItc3RhdC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2lkZWJhci1zdGF0LW51bVwiPnt7IHBsYXRmb3JtU3RhdHMuZGFpbHlfYXZnXzMwZC50b0ZpeGVkKDEpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNpZGViYXItc3RhdC1sYWJlbFwiPuaXpeWdh+aWsOWinjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gPT09PT09IOazqOWGjOW8leWvvCBDVEHvvIjmnKrnmbvlvZXvvIkgPT09PT09IC0tPlxyXG4gICAgPHNlY3Rpb24gdi1pZj1cIiFhdXRoLmlzQXV0aGVudGljYXRlZCAmJiBmZWVkSXRlbXMubGVuZ3RoID4gM1wiIGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLWN0YVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3RhLWJhbm5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdGEtdGV4dFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN0YS10aXRsZVwiPvCflJIg5rOo5YaM5ZCO6I635b6X5a6M5pW05Yqf6IO9PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3RhLWRlc2NcIj7mlLbol4/mlofnjK4gwrcg6K6+572u5YWz5rOo6aKG5Z+fIMK3IOavj+aXpeeyvuWHhuaOqOmAgSDCtyDlm6LpmJ/lhbHkuqs8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8TkJ1dHRvbiBjbGFzcz1cInNreS1idG5cIiB0eXBlPVwicHJpbWFyeVwiIHNpemU9XCJsYXJnZVwiIEBjbGljaz1cInJvdXRlci5wdXNoKCcvYXV0aC9yZWdpc3RlcicpXCI+PHRlbXBsYXRlICNpY29uPjxOSWNvbiBzaXplPVwiMTRcIj48UGVyc29uQWRkT3V0bGluZSAvPjwvTkljb24+PC90ZW1wbGF0ZT7lhY3otLnms6jlhow8L05CdXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDwhLS0gPT09PT09IOaWh+eMrumihOiniOaKveWxiSA9PT09PT0gLS0+XHJcbiAgICA8TGl0ZXJhdHVyZVByZXZpZXdEcmF3ZXJcclxuICAgICAgOnNob3c9XCJzaG93UHJldmlld1wiXHJcbiAgICAgIDpwbWlkPVwicHJldmlld1BtaWRcIlxyXG4gICAgICBAY2xvc2U9XCJjbG9zZVByZXZpZXdcIlxyXG4gICAgICBAZ29EZXRhaWw9XCJnb0RldGFpbFwiXHJcbiAgICAvPlxyXG5cclxuICAgIDwhLS0g5Zue5Yiw6aG26YOoIC0tPlxyXG4gICAgPGJ1dHRvbiB2LWlmPVwic2hvd1Njcm9sbFRvcFwiIGNsYXNzPVwic2Nyb2xsLXRvcFwiIEBjbGljaz1cInNjcm9sbFRvVG9wXCI+4oaRPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uaG9tZSB7IG1heC13aWR0aDogMTEwMHB4OyBtYXJnaW46IDAgYXV0bzsgcGFkZGluZzogMCAyNHB4OyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgfVxyXG4uc2VjdGlvbiB7IHBhZGRpbmc6IDNweCAwOyB9XHJcbi5zZWN0aW9uLWxpc3QgeyBwYWRkaW5nLWJvdHRvbTogMTZweDsgfVxyXG4uc2VjdGlvbi1jdGEgeyBwYWRkaW5nOiAxMnB4IDAgMjRweDsgfVxyXG5cclxuLyog5YaF5a65572R5qC877ya5paH54yu5YiX6KGoICsg54Ot5qac5L6n5qCPICovXHJcbi5jb250ZW50LWdyaWQgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDI0cHg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XHJcbi5jb250ZW50LWdyaWQtbWFpbiB7IGZsZXg6IDM7IG1pbi13aWR0aDogMDsgfVxyXG4uY29udGVudC1ncmlkLXNpZGUgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDI2MHB4OyBtYXgtd2lkdGg6IDMwMHB4OyB9XHJcbi5zZWN0aW9uLWhvdC1zaWRlIHsgcGFkZGluZy10b3A6IDEycHg7IH1cclxuLnNlY3Rpb24taG90LXNpZGUgLmhvdC1oZWFkZXIgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyBtYXJnaW4tYm90dG9tOiA4cHg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfVxyXG4uc2VjdGlvbi1ob3Qtc2lkZSAuaG90LWhlYWRlci1yaWdodCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9XHJcbi5ob3QtcGFnZS1kb3RzIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7IH1cclxuLmhvdC1wYWdlLWRvdCB7IHdpZHRoOiA2cHg7IGhlaWdodDogNnB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7IHRyYW5zaXRpb246IGJhY2tncm91bmQgLjE1czsgfVxyXG4uaG90LXBhZ2UtZG90LmFjdGl2ZSB7IGJhY2tncm91bmQ6IHZhcigtLWt3LXBpbGwtY29sb3IpOyB9XHJcbmh0bWwuZGFyayAuaG90LXBhZ2UtZG90LmFjdGl2ZSB7IGJhY2tncm91bmQ6ICM2YWIwZTA7IH1cclxuLmhvdC1yYW5rLXRvcCB7IGNvbG9yOiAjZDAzMDUwICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudDsgfVxyXG4uc2VjdGlvbi1ob3Qtc2lkZSAuaG90LWxpc3QgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDNweDsgfVxyXG4uc2VjdGlvbi1ob3Qtc2lkZSAuaG90LWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMHB4OyBwYWRkaW5nOiA2cHggOHB4OyBib3JkZXItcmFkaXVzOiA2cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuMTJzOyB9XHJcbi5zZWN0aW9uLWhvdC1zaWRlIC5ob3QtaXRlbTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfVxyXG4uc2VjdGlvbi1ob3Qtc2lkZSAuaG90LXJhbmsgeyBmbGV4LXNocmluazogMDsgd2lkdGg6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogI2QwMzA1MDsgbGluZS1oZWlnaHQ6IDEuNjsgfVxyXG4uc2VjdGlvbi1ob3Qtc2lkZSAuaG90LWNvbnRlbnQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDJweDsgbWluLXdpZHRoOiAwOyB9XHJcbi5zZWN0aW9uLWhvdC1zaWRlIC5ob3QtdGl0bGUgeyBmb250LXNpemU6IDE2cHg7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyBsaW5lLWhlaWdodDogMS40OyBkaXNwbGF5OiAtd2Via2l0LWJveDsgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOyBvdmVyZmxvdzogaGlkZGVuOyB9XHJcbi5zZWN0aW9uLWhvdC1zaWRlIC5ob3QtdGl0bGU6aG92ZXIgeyBjb2xvcjogdmFyKC0ta3ctcGlsbC1jb2xvcik7IH1cclxuaHRtbC5kYXJrIC5zZWN0aW9uLWhvdC1zaWRlIC5ob3QtdGl0bGU6aG92ZXIgeyBjb2xvcjogIzZhYjBlMDsgfVxyXG4uc2VjdGlvbi1ob3Qtc2lkZSAuaG90LW1ldGEgeyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfVxyXG5cclxuLyog54Ot6Zeo5qCH562+ICovXHJcbi50YWctYmFyIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDZweDsgcGFkZGluZzogMnB4IDA7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cclxuLnRhZy1sYWJlbCB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IG1hcmdpbi1yaWdodDogNHB4OyBmbGV4LXNocmluazogMDsgfVxyXG4udGFnLXBpbGwge1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IHBhZGRpbmc6IDVweCAxNHB4OyBib3JkZXItcmFkaXVzOiAyMHB4OyBmb250LXNpemU6IDE0cHg7IGN1cnNvcjogcG9pbnRlcjtcclxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgdHJhbnNpdGlvbjogYWxsIC4xMnM7IHVzZXItc2VsZWN0OiBub25lO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDNweDtcclxufVxyXG4udGFnLXBpbGw6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLWt3LXBpbGwtY29sb3IpOyBjb2xvcjogdmFyKC0ta3ctcGlsbC1jb2xvcik7IH1cclxuaHRtbC5kYXJrIC50YWctcGlsbDpob3ZlciB7IGJvcmRlci1jb2xvcjogIzZhYjBlMDsgY29sb3I6ICM2YWIwZTA7IH1cclxuLnRhZy1waWxsLmFjdGl2ZSB7IGJhY2tncm91bmQ6IHZhcigtLWt3LXBpbGwtY29sb3IpOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiB2YXIoLS1rdy1waWxsLWNvbG9yKTsgfVxyXG5odG1sLmRhcmsgLnRhZy1waWxsLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICMyYTVhOGE7IGNvbG9yOiAjZmZmOyBib3JkZXItY29sb3I6ICMyYTVhOGE7IH1cclxuLnRhZy14IHsgZm9udC1zaXplOiAxMXB4OyBtYXJnaW4tbGVmdDogMXB4OyBvcGFjaXR5OiAuODsgfVxyXG4udGFnLWV4cGFuZC1idG4ge1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IGZvbnQtc2l6ZTogMTNweDsgY3Vyc29yOiBwb2ludGVyOyB1c2VyLXNlbGVjdDogbm9uZTtcclxuICBwYWRkaW5nOiAzcHggMTBweDsgYm9yZGVyLXJhZGl1czogMjBweDsgYm9yZGVyOiAxcHggc29saWQgI2IzZDhmZjtcclxuICBiYWNrZ3JvdW5kOiAjZTZmNGZmOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcclxuICBhbGlnbi1zZWxmOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuLnRhZy1leHBhbmQtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogI2QwZWJmZjsgfVxyXG5odG1sLmRhcmsgLnRhZy1leHBhbmQtYnRuIHsgYmFja2dyb3VuZDogIzFhM2E1YzsgYm9yZGVyLWNvbG9yOiAjMmE1YThhOyBjb2xvcjogIzZhYjBlMDsgfVxyXG5odG1sLmRhcmsgLnRhZy1leHBhbmQtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogIzFlNGE2YzsgfVxyXG5cclxuLyogXCLkuIrmrKHnnIvliLDov5nph4xcIiDliIbpmpTnur8gKi9cclxuLnJlYWQtZGl2aWRlciB7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMnB4O1xyXG4gIHBhZGRpbmc6IDI0cHggMCAxMnB4OyB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG4ucmVhZC1kaXZpZGVyLWxpbmUgeyBmbGV4OiAxOyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgdmFyKC0tYm9yZGVyLWNvbG9yKSAzMCUsIHZhcigtLWJvcmRlci1jb2xvcikgNzAlLCB0cmFuc3BhcmVudCk7IH1cclxuLnJlYWQtZGl2aWRlci10ZXh0IHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cclxuXHJcbi8qIOaQnOe0ouW3peWFt+agjyDigJQg5bCP5ZyG6KeS5bem5a+56b2QICovXHJcbi5zZWN0aW9uLXRvb2xiYXIgeyBwYWRkaW5nOiAxNnB4IDAgNHB4OyB9XHJcbi5zZWFyY2gtcm93IHtcclxuICBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAxMnB4OyBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbn1cclxuLnNlYXJjaC1yb3ctbGVmdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXg6IDE7IH1cclxuLnNlYXJjaC1pbnB1dC1ncm91cCB7XHJcbiAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZmxleDogMTsgbWluLXdpZHRoOiAxMjBweDtcclxuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IHBhZGRpbmc6IDZweCAxMnB4IDZweDtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjE1cztcclxufVxyXG4uc2VhcmNoLWlucHV0LWdyb3VwOmZvY3VzLXdpdGhpbiB7IGJvcmRlci1jb2xvcjogdmFyKC0ta3ctcGlsbC1jb2xvcik7IH1cclxuaHRtbC5kYXJrIC5zZWFyY2gtaW5wdXQtZ3JvdXA6Zm9jdXMtd2l0aGluIHsgYm9yZGVyLWNvbG9yOiAjNmFiMGUwOyB9XHJcbi5zZWFyY2gtaW5wdXQtdG9wIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7IGZsZXg6IDE7IH1cclxuLnNlYXJjaC1pbnB1dCB7XHJcbiAgYm9yZGVyOiBub25lOyBvdXRsaW5lOiBub25lOyBwYWRkaW5nOiA4cHggMCA0cHg7IGZvbnQtc2l6ZTogMTZweDtcclxuICBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG59XHJcbi5zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyIHsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cclxuLnNlYXJjaC1pbnB1dC1hY3Rpb25zIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgZ2FwOiA4cHg7IH1cclxuLmFkdi1pY29uLWJ0biB7IGNvbG9yOiB2YXIoLS1rdy1waWxsLWNvbG9yKTsgfVxyXG5odG1sLmRhcmsgLmFkdi1pY29uLWJ0biB7IGNvbG9yOiAjNmFiMGUwOyB9XHJcbi5jbGVhci1zZWFyY2gtYnRuIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmbGV4LXNocmluazogMDsgfVxyXG4uc2VhcmNoLXN1Ym1pdC1idG4geyBoZWlnaHQ6IDI4cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgfVxyXG5cclxuLyog5Yqg6L295pu05aSaICovXHJcbi5sb2FkLW1vcmUgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDIwcHg7IH1cclxuXHJcbi8qIENUQSAqL1xyXG4uY3RhLWJhbm5lciB7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBnYXA6IDE2cHg7XHJcbiAgcGFkZGluZzogMjBweCAyNHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbn1cclxuLmN0YS10aXRsZSB7IGZvbnQtc2l6ZTogMTVweDsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2luLWJvdHRvbTogNHB4OyB9XHJcbi5jdGEtZGVzYyB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfVxyXG5cclxuLyog5L6n5qCP57uf6K6hICovXHJcbi5zaWRlYmFyLXN0YXRzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyBtYXJnaW4tdG9wOiAxMnB4OyBwYWRkaW5nOiAxMnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IGJvcmRlci1yYWRpdXM6IDhweDsgfVxyXG4uc2lkZWJhci1zdGF0LWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cclxuLnNpZGViYXItc3RhdC1udW0geyBmb250LXNpemU6IDE1cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1rdy1waWxsLWNvbG9yKTsgfVxyXG5odG1sLmRhcmsgLnNpZGViYXItc3RhdC1udW0geyBjb2xvcjogIzZhYjBlMDsgfVxyXG4uc2lkZWJhci1zdGF0LWxhYmVsIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cclxuXHJcblxyXG4vKiDlm57liLDpobbpg6ggKi9cclxuLnNjcm9sbC10b3Age1xyXG4gIHBvc2l0aW9uOiBmaXhlZDsgcmlnaHQ6IDMwcHg7IGJvdHRvbTogNDBweDsgei1pbmRleDogOTk5O1xyXG4gIHdpZHRoOiA0MnB4OyBoZWlnaHQ6IDQycHg7IGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQ6IHZhcigtLWt3LXBpbGwtY29sb3IpOyBjb2xvcjogI2ZmZjtcclxuICBmb250LXNpemU6IDIwcHg7IGN1cnNvcjogcG9pbnRlcjsgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsLjIpO1xyXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzO1xyXG59XHJcbi5zY3JvbGwtdG9wOmhvdmVyIHsgYmFja2dyb3VuZDogIzE1NDM2MDsgfVxyXG5odG1sLmRhcmsgLnNjcm9sbC10b3AgeyBiYWNrZ3JvdW5kOiAjMmE1YThhOyB9XHJcbmh0bWwuZGFyayAuc2Nyb2xsLXRvcDpob3ZlciB7IGJhY2tncm91bmQ6ICMxYTRhN2E7IH1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5ob21lIHsgcGFkZGluZzogMCA4cHg7IG92ZXJmbG93LXg6IGhpZGRlbjsgfVxyXG4gIC5zZWFyY2gtcm93IHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cclxuICAuc2VhcmNoLWlucHV0LWdyb3VwIHsgcGFkZGluZzogNHB4IDEwcHggNHB4OyB9XHJcbiAgLnNlYXJjaC1pbnB1dCB7IGZvbnQtc2l6ZTogMTZweDsgcGFkZGluZzogNnB4IDAgNHB4OyB9XHJcbiAgLnNlY3Rpb24tY3RhIHsgcGFkZGluZzogOHB4IDAgMjBweDsgfVxyXG4gIC5jdGEtYmFubmVyIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAxNnB4OyB9XHJcbiAgLmNvbnRlbnQtZ3JpZCB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4OyB9XHJcbiAgLmNvbnRlbnQtZ3JpZC1zaWRlIHsgbWF4LXdpZHRoOiBub25lOyBwb3NpdGlvbjogc3RhdGljOyBtYXJnaW4tdG9wOiAwOyBtaW4td2lkdGg6IDA7IH1cclxuICAuc2VjdGlvbi1ob3Qtc2lkZSB7IG1hcmdpbi10b3A6IDEycHg7IH1cclxuICAudGFnLXBpbGwgeyBwYWRkaW5nOiAzcHggMTBweDsgfVxyXG4gIC50YWctYmFyIHsgZmxleC13cmFwOiBub3dyYXA7IG92ZXJmbG93LXg6IGF1dG87IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyB9XHJcbiAgLnRhZy1iYXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfVxyXG4gIC5zaWRlYmFyLXN0YXRzIHsgbWFyZ2luLXRvcDogOHB4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBmbGV4LXdyYXA6IHdyYXA7IGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyBwYWRkaW5nOiAxMHB4OyB9XHJcbiAgLnNpZGViYXItc3RhdC1pdGVtIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAycHg7IH1cclxuICAuY29udGVudC1ncmlkLW1haW4geyBmbGV4OiAxOyB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiAxNDAwcHgpIHtcclxuICAuaG9tZSB7IG1heC13aWR0aDogMTIwMHB4OyBwYWRkaW5nOiAwIDMycHg7IH1cclxuICAuc2lkZWJhci1zdGF0LW51bSB7IGZvbnQtc2l6ZTogMTlweDsgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJmaWxlIjoiRDovQ2xhdWRlQ29kZS9mcm9udGVuZC9zcmMvdmlld3MvcHVibGljL0hvbWVWaWV3LnZ1ZSJ9