From 01c938cf212932da7a094c8a13b0e34b279637e1 Mon Sep 17 00:00:00 2001 From: arys Date: Tue, 10 Mar 2026 20:11:48 +0500 Subject: [PATCH] fix --- src/api/index.js | 39 + src/assets/kai-v4.css | 512 ++++++++ .../marketing/MarketingBriefWizardV3.vue | 49 +- .../dashboard-v3/SectionBehavioralPattern.vue | 117 ++ .../SectionCompetitionIntensity.vue | 97 ++ .../dashboard-v3/SectionCompetitorMap.vue | 148 +++ .../dashboard-v3/SectionConclusions.vue | 76 ++ .../dashboard-v3/SectionContentProfile.vue | 101 ++ .../dashboard-v3/SectionExecutiveSummary.vue | 50 + .../dashboard-v3/SectionGeoStructure.vue | 113 ++ .../dashboard-v3/SectionMarketLandscape.vue | 136 +++ .../SectionReputationAnalysis.vue | 100 ++ .../dashboard-v3/SectionSearchDemand.vue | 138 +++ .../dashboard-v3/SectionUserPositioning.vue | 115 ++ .../dashboard-v3/v4/SectionWrapper.vue | 25 + .../dashboard-v3/v4/V4Behavioral.vue | 63 + .../marketing/dashboard-v3/v4/V4Cii.vue | 81 ++ .../dashboard-v3/v4/V4Competitors.vue | 138 +++ .../dashboard-v3/v4/V4Conclusions.vue | 47 + .../marketing/dashboard-v3/v4/V4Content.vue | 101 ++ .../marketing/dashboard-v3/v4/V4Demand.vue | 124 ++ .../marketing/dashboard-v3/v4/V4Executive.vue | 66 + .../marketing/dashboard-v3/v4/V4Geo.vue | 114 ++ .../marketing/dashboard-v3/v4/V4Header.vue | 26 + .../marketing/dashboard-v3/v4/V4Landscape.vue | 69 ++ .../dashboard-v3/v4/V4Positioning.vue | 117 ++ .../marketing/dashboard-v3/v4/V4Rationale.vue | 47 + .../dashboard-v3/v4/V4Reputation.vue | 65 + .../marketing/dashboard-v3/v4/V4SideNav.vue | 26 + .../pages/marketing/MarketingAnalysisV3.vue | 1084 ++--------------- ....timestamp-1772988239485-4fa6022a252b2.mjs | 47 + 31 files changed, 3048 insertions(+), 983 deletions(-) create mode 100644 src/api/index.js create mode 100644 src/assets/kai-v4.css create mode 100644 src/components/marketing/dashboard-v3/SectionBehavioralPattern.vue create mode 100644 src/components/marketing/dashboard-v3/SectionCompetitionIntensity.vue create mode 100644 src/components/marketing/dashboard-v3/SectionCompetitorMap.vue create mode 100644 src/components/marketing/dashboard-v3/SectionConclusions.vue create mode 100644 src/components/marketing/dashboard-v3/SectionContentProfile.vue create mode 100644 src/components/marketing/dashboard-v3/SectionExecutiveSummary.vue create mode 100644 src/components/marketing/dashboard-v3/SectionGeoStructure.vue create mode 100644 src/components/marketing/dashboard-v3/SectionMarketLandscape.vue create mode 100644 src/components/marketing/dashboard-v3/SectionReputationAnalysis.vue create mode 100644 src/components/marketing/dashboard-v3/SectionSearchDemand.vue create mode 100644 src/components/marketing/dashboard-v3/SectionUserPositioning.vue create mode 100644 src/components/marketing/dashboard-v3/v4/SectionWrapper.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Behavioral.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Cii.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Competitors.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Conclusions.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Content.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Demand.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Executive.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Geo.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Header.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Landscape.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Positioning.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Rationale.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4Reputation.vue create mode 100644 src/components/marketing/dashboard-v3/v4/V4SideNav.vue create mode 100644 vite.config.mjs.timestamp-1772988239485-4fa6022a252b2.mjs diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..ac98cd6 --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,39 @@ +import { API_CONFIG, DEFAULT_REQUEST_CONFIG } from '@/config/api'; +import AuthService from '@/service/AuthService'; + +const api = { + get: async (url) => { + const fullUrl = `${API_CONFIG.BASE_URL}/api/marketing/v3${url}`; + const response = await AuthService.authFetch(fullUrl); + const data = await response.json().catch(() => null); + if (!response.ok) throw new Error(data?.message || 'Ошибка API'); + return { data: { data: data?.data ?? data } }; + }, + post: async (url, body, config = {}) => { + const fullUrl = `${API_CONFIG.BASE_URL}/api/marketing/v3${url}`; + + // If body is FormData, don't stringify and let browser set Content-Type correctly + const isFormData = body instanceof FormData; + const fetchOptions = { + method: 'POST', + ...DEFAULT_REQUEST_CONFIG, + body: isFormData ? body : JSON.stringify(body) + }; + + // If it's not FormData, ensure we send application/json + if (!isFormData) { + fetchOptions.headers = { + ...fetchOptions.headers, + 'Content-Type': 'application/json' + }; + } + + const response = await AuthService.authFetch(fullUrl, fetchOptions); + const data = await response.json().catch(() => null); + if (!response.ok) throw new Error(data?.message || 'Ошибка API'); + // Original components expect { data: responseBody }, and our backend returns { data: payload } + return { data: { data: data?.data ?? data } }; + } +}; + +export default api; diff --git a/src/assets/kai-v4.css b/src/assets/kai-v4.css new file mode 100644 index 0000000..2f9eb99 --- /dev/null +++ b/src/assets/kai-v4.css @@ -0,0 +1,512 @@ +/* ========================================================= + KAI v4.0 Dashboard — Dark Theme Globals + Loaded by MarketingAnalysisV3.vue via diff --git a/src/components/marketing/dashboard-v3/SectionCompetitionIntensity.vue b/src/components/marketing/dashboard-v3/SectionCompetitionIntensity.vue new file mode 100644 index 0000000..9fb2386 --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionCompetitionIntensity.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionCompetitorMap.vue b/src/components/marketing/dashboard-v3/SectionCompetitorMap.vue new file mode 100644 index 0000000..3ab1079 --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionCompetitorMap.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionConclusions.vue b/src/components/marketing/dashboard-v3/SectionConclusions.vue new file mode 100644 index 0000000..6196e3d --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionConclusions.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/marketing/dashboard-v3/SectionContentProfile.vue b/src/components/marketing/dashboard-v3/SectionContentProfile.vue new file mode 100644 index 0000000..89cfa17 --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionContentProfile.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionExecutiveSummary.vue b/src/components/marketing/dashboard-v3/SectionExecutiveSummary.vue new file mode 100644 index 0000000..aee759e --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionExecutiveSummary.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionGeoStructure.vue b/src/components/marketing/dashboard-v3/SectionGeoStructure.vue new file mode 100644 index 0000000..e234f1b --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionGeoStructure.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionMarketLandscape.vue b/src/components/marketing/dashboard-v3/SectionMarketLandscape.vue new file mode 100644 index 0000000..7bfcffb --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionMarketLandscape.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/components/marketing/dashboard-v3/SectionReputationAnalysis.vue b/src/components/marketing/dashboard-v3/SectionReputationAnalysis.vue new file mode 100644 index 0000000..6cf7344 --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionReputationAnalysis.vue @@ -0,0 +1,100 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionSearchDemand.vue b/src/components/marketing/dashboard-v3/SectionSearchDemand.vue new file mode 100644 index 0000000..087e59d --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionSearchDemand.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/components/marketing/dashboard-v3/SectionUserPositioning.vue b/src/components/marketing/dashboard-v3/SectionUserPositioning.vue new file mode 100644 index 0000000..a770037 --- /dev/null +++ b/src/components/marketing/dashboard-v3/SectionUserPositioning.vue @@ -0,0 +1,115 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/SectionWrapper.vue b/src/components/marketing/dashboard-v3/v4/SectionWrapper.vue new file mode 100644 index 0000000..7fea46d --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/SectionWrapper.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Behavioral.vue b/src/components/marketing/dashboard-v3/v4/V4Behavioral.vue new file mode 100644 index 0000000..3ecee9e --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Behavioral.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Cii.vue b/src/components/marketing/dashboard-v3/v4/V4Cii.vue new file mode 100644 index 0000000..af96ad0 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Cii.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Competitors.vue b/src/components/marketing/dashboard-v3/v4/V4Competitors.vue new file mode 100644 index 0000000..9c5317d --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Competitors.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Conclusions.vue b/src/components/marketing/dashboard-v3/v4/V4Conclusions.vue new file mode 100644 index 0000000..3ca5124 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Conclusions.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Content.vue b/src/components/marketing/dashboard-v3/v4/V4Content.vue new file mode 100644 index 0000000..e79b2dc --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Content.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Demand.vue b/src/components/marketing/dashboard-v3/v4/V4Demand.vue new file mode 100644 index 0000000..921c6ab --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Demand.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Executive.vue b/src/components/marketing/dashboard-v3/v4/V4Executive.vue new file mode 100644 index 0000000..e143f80 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Executive.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Geo.vue b/src/components/marketing/dashboard-v3/v4/V4Geo.vue new file mode 100644 index 0000000..8ccf743 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Geo.vue @@ -0,0 +1,114 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Header.vue b/src/components/marketing/dashboard-v3/v4/V4Header.vue new file mode 100644 index 0000000..ba8ef36 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Header.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Landscape.vue b/src/components/marketing/dashboard-v3/v4/V4Landscape.vue new file mode 100644 index 0000000..fe119b8 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Landscape.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Positioning.vue b/src/components/marketing/dashboard-v3/v4/V4Positioning.vue new file mode 100644 index 0000000..6e7bfe5 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Positioning.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Rationale.vue b/src/components/marketing/dashboard-v3/v4/V4Rationale.vue new file mode 100644 index 0000000..35f128d --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Rationale.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4Reputation.vue b/src/components/marketing/dashboard-v3/v4/V4Reputation.vue new file mode 100644 index 0000000..99da3d8 --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4Reputation.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/components/marketing/dashboard-v3/v4/V4SideNav.vue b/src/components/marketing/dashboard-v3/v4/V4SideNav.vue new file mode 100644 index 0000000..c0e693b --- /dev/null +++ b/src/components/marketing/dashboard-v3/v4/V4SideNav.vue @@ -0,0 +1,26 @@ + + diff --git a/src/views/pages/marketing/MarketingAnalysisV3.vue b/src/views/pages/marketing/MarketingAnalysisV3.vue index 4a530cc..7fc2497 100644 --- a/src/views/pages/marketing/MarketingAnalysisV3.vue +++ b/src/views/pages/marketing/MarketingAnalysisV3.vue @@ -1,1001 +1,149 @@ - - - diff --git a/vite.config.mjs.timestamp-1772988239485-4fa6022a252b2.mjs b/vite.config.mjs.timestamp-1772988239485-4fa6022a252b2.mjs new file mode 100644 index 0000000..390a73b --- /dev/null +++ b/vite.config.mjs.timestamp-1772988239485-4fa6022a252b2.mjs @@ -0,0 +1,47 @@ +// vite.config.mjs +import { fileURLToPath, URL } from "node:url"; +import { PrimeVueResolver } from "file:///C:/Users/777/IdeaProjects/marketing/node_modules/@primevue/auto-import-resolver/index.mjs"; +import vue from "file:///C:/Users/777/IdeaProjects/marketing/node_modules/@vitejs/plugin-vue/dist/index.mjs"; +import Components from "file:///C:/Users/777/IdeaProjects/marketing/node_modules/unplugin-vue-components/dist/vite.js"; +import { defineConfig } from "file:///C:/Users/777/IdeaProjects/marketing/node_modules/vite/dist/node/index.js"; +var __vite_injected_original_import_meta_url = "file:///C:/Users/777/IdeaProjects/marketing/vite.config.mjs"; +var vite_config_default = defineConfig({ + optimizeDeps: { + noDiscovery: true + }, + plugins: [ + vue(), + Components({ + resolvers: [PrimeVueResolver()] + }) + ], + resolve: { + alias: { + "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)) + } + }, + server: { + proxy: { + "/api": { + target: "https://api.konturai.kz", + changeOrigin: true, + secure: true, + configure: (proxy, _options) => { + proxy.on("error", (err, _req, _res) => { + console.log("proxy error", err); + }); + proxy.on("proxyReq", (proxyReq, req, _res) => { + console.log("Sending Request to the Target:", req.method, req.url); + }); + proxy.on("proxyRes", (proxyRes, req, _res) => { + console.log("Received Response from the Target:", proxyRes.statusCode, req.url); + }); + } + } + } + } +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcubWpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcNzc3XFxcXElkZWFQcm9qZWN0c1xcXFxtYXJrZXRpbmdcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkM6XFxcXFVzZXJzXFxcXDc3N1xcXFxJZGVhUHJvamVjdHNcXFxcbWFya2V0aW5nXFxcXHZpdGUuY29uZmlnLm1qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovVXNlcnMvNzc3L0lkZWFQcm9qZWN0cy9tYXJrZXRpbmcvdml0ZS5jb25maWcubWpzXCI7aW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuXG5pbXBvcnQgeyBQcmltZVZ1ZVJlc29sdmVyIH0gZnJvbSAnQHByaW1ldnVlL2F1dG8taW1wb3J0LXJlc29sdmVyJztcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJztcbmltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5cbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICAgIG9wdGltaXplRGVwczoge1xuICAgICAgICBub0Rpc2NvdmVyeTogdHJ1ZVxuICAgIH0sXG4gICAgcGx1Z2luczogW1xuICAgICAgICB2dWUoKSxcbiAgICAgICAgQ29tcG9uZW50cyh7XG4gICAgICAgICAgICByZXNvbHZlcnM6IFtQcmltZVZ1ZVJlc29sdmVyKCldXG4gICAgICAgIH0pXG4gICAgXSxcbiAgICByZXNvbHZlOiB7XG4gICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAnQCc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMnLCBpbXBvcnQubWV0YS51cmwpKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgICAgcHJveHk6IHtcbiAgICAgICAgICAgICcvYXBpJzoge1xuICAgICAgICAgICAgICAgIHRhcmdldDogJ2h0dHBzOi8vYXBpLmtvbnR1cmFpLmt6JyxcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyZTogKHByb3h5LCBfb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwcm94eS5vbignZXJyb3InLCAoZXJyLCBfcmVxLCBfcmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncHJveHkgZXJyb3InLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcHJveHkub24oJ3Byb3h5UmVxJywgKHByb3h5UmVxLCByZXEsIF9yZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZW5kaW5nIFJlcXVlc3QgdG8gdGhlIFRhcmdldDonLCByZXEubWV0aG9kLCByZXEudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHByb3h5Lm9uKCdwcm94eVJlcycsIChwcm94eVJlcywgcmVxLCBfcmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgUmVzcG9uc2UgZnJvbSB0aGUgVGFyZ2V0OicsIHByb3h5UmVzLnN0YXR1c0NvZGUsIHJlcS51cmwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBdVMsU0FBUyxlQUFlLFdBQVc7QUFFMVUsU0FBUyx3QkFBd0I7QUFDakMsT0FBTyxTQUFTO0FBQ2hCLE9BQU8sZ0JBQWdCO0FBQ3ZCLFNBQVMsb0JBQW9CO0FBTDJKLElBQU0sMkNBQTJDO0FBUXpPLElBQU8sc0JBQVEsYUFBYTtBQUFBLEVBQ3hCLGNBQWM7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNqQjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ0wsSUFBSTtBQUFBLElBQ0osV0FBVztBQUFBLE1BQ1AsV0FBVyxDQUFDLGlCQUFpQixDQUFDO0FBQUEsSUFDbEMsQ0FBQztBQUFBLEVBQ0w7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNMLE9BQU87QUFBQSxNQUNILEtBQUssY0FBYyxJQUFJLElBQUksU0FBUyx3Q0FBZSxDQUFDO0FBQUEsSUFDeEQ7QUFBQSxFQUNKO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDSixPQUFPO0FBQUEsTUFDSCxRQUFRO0FBQUEsUUFDSixRQUFRO0FBQUEsUUFDUixjQUFjO0FBQUEsUUFDZCxRQUFRO0FBQUEsUUFDUixXQUFXLENBQUMsT0FBTyxhQUFhO0FBQzVCLGdCQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssTUFBTSxTQUFTO0FBQ25DLG9CQUFRLElBQUksZUFBZSxHQUFHO0FBQUEsVUFDbEMsQ0FBQztBQUNELGdCQUFNLEdBQUcsWUFBWSxDQUFDLFVBQVUsS0FBSyxTQUFTO0FBQzFDLG9CQUFRLElBQUksa0NBQWtDLElBQUksUUFBUSxJQUFJLEdBQUc7QUFBQSxVQUNyRSxDQUFDO0FBQ0QsZ0JBQU0sR0FBRyxZQUFZLENBQUMsVUFBVSxLQUFLLFNBQVM7QUFDMUMsb0JBQVEsSUFBSSxzQ0FBc0MsU0FBUyxZQUFZLElBQUksR0FBRztBQUFBLFVBQ2xGLENBQUM7QUFBQSxRQUNMO0FBQUEsTUFDSjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQ0osQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K