From 29bc88b8dde2c82db39de82f3752f993a309a746 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Wed, 12 May 2021 12:24:25 -0700 Subject: [PATCH 1/6] [FTR][CI] Use default distribution for all tests (#94968) Signed-off-by: Tyler Smalley --- .ci/Jenkinsfile_flaky | 6 +- .ci/Jenkinsfile_security_cypress | 2 +- .ci/es-snapshots/Jenkinsfile_verify_es | 6 +- .../src/lib/indices/kibana_index.ts | 1 + test/accessibility/apps/dashboard_panel.ts | 2 + test/api_integration/apis/home/sample_data.ts | 2 +- test/api_integration/apis/search/search.ts | 20 - test/api_integration/apis/telemetry/index.js | 1 - .../apis/telemetry/telemetry_local.ts | 331 -- .../saved_objects/basic/data.json.gz | Bin 2038 -> 2469 bytes .../saved_objects/basic/mappings.json | 2773 ++++++++++++++++- test/common/services/deployment.ts | 8 - .../expressions_explorer/expressions.ts | 4 +- test/functional/apps/home/_home.js | 4 +- test/functional/apps/home/_newsfeed.ts | 14 +- .../apps/management/_scripted_fields.js | 62 +- .../functional/apps/visualize/_chart_types.ts | 2 + test/functional/apps/visualize/_tile_map.ts | 40 +- test/functional/apps/visualize/index.ts | 16 +- test/functional/config.js | 6 +- test/functional/page_objects/home_page.ts | 7 +- test/scripts/jenkins_build_kibana.sh | 26 +- test/scripts/jenkins_build_load_testing.sh | 4 +- test/scripts/jenkins_build_plugins.sh | 15 +- test/scripts/jenkins_test_setup_oss.sh | 4 +- test/scripts/jenkins_test_setup_xpack.sh | 4 +- test/scripts/jenkins_xpack_baseline.sh | 4 +- test/scripts/jenkins_xpack_build_kibana.sh | 61 - .../http/ssl_redirect/index.js | 2 +- vars/kibanaPipeline.groovy | 42 +- vars/tasks.groovy | 8 +- 31 files changed, 2815 insertions(+), 662 deletions(-) delete mode 100644 test/api_integration/apis/telemetry/telemetry_local.ts delete mode 100755 test/scripts/jenkins_xpack_build_kibana.sh diff --git a/.ci/Jenkinsfile_flaky b/.ci/Jenkinsfile_flaky index 7eafc66465bc7..8121405e5ae24 100644 --- a/.ci/Jenkinsfile_flaky +++ b/.ci/Jenkinsfile_flaky @@ -73,11 +73,7 @@ def agentProcess(Map params = [:]) { ]) { task { if (config.needBuild) { - if (!config.isXpack) { - kibanaPipeline.buildOss() - } else { - kibanaPipeline.buildXpack() - } + kibanaPipeline.buildKibana() } for(def i = 0; i < config.agentExecutions; i++) { diff --git a/.ci/Jenkinsfile_security_cypress b/.ci/Jenkinsfile_security_cypress index 811af44d1ca56..d48b9965919dc 100644 --- a/.ci/Jenkinsfile_security_cypress +++ b/.ci/Jenkinsfile_security_cypress @@ -16,7 +16,7 @@ kibanaPipeline(timeoutMinutes: 180) { def job = 'xpack-securityCypress' workers.ci(name: job, size: 'l', ramDisk: true) { - kibanaPipeline.bash('test/scripts/jenkins_xpack_build_kibana.sh', 'Build Default Distributable') + kibanaPipeline.bash('test/scripts/jenkins_build_kibana.sh', 'Build Distributable') kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_chrome.sh')() // Temporarily disabled to figure out test flake // kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_firefox.sh')() diff --git a/.ci/es-snapshots/Jenkinsfile_verify_es b/.ci/es-snapshots/Jenkinsfile_verify_es index d56ec61314ac7..dc3a3cde7d658 100644 --- a/.ci/es-snapshots/Jenkinsfile_verify_es +++ b/.ci/es-snapshots/Jenkinsfile_verify_es @@ -37,12 +37,8 @@ kibanaPipeline(timeoutMinutes: 210) { ]) task { - kibanaPipeline.buildOss(6) + kibanaPipeline.buildKibana(16) tasks.ossCiGroups() - } - - task { - kibanaPipeline.buildXpack(10, true) tasks.xpackCiGroups() tasks.xpackCiGroupDocker() } diff --git a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts index f95bf956e2e25..e38aec72b6eb1 100644 --- a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts +++ b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts @@ -168,6 +168,7 @@ export async function createDefaultSpace({ index, type: '_doc', id: 'space:default', + refresh: 'wait_for', body: { type: 'space', updated_at: new Date().toISOString(), diff --git a/test/accessibility/apps/dashboard_panel.ts b/test/accessibility/apps/dashboard_panel.ts index 77b6cf2dbb6da..2a6c290172a9e 100644 --- a/test/accessibility/apps/dashboard_panel.ts +++ b/test/accessibility/apps/dashboard_panel.ts @@ -63,6 +63,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('dashboard panel full screen', async () => { const header = await dashboardPanelActions.getPanelHeading('[Flights] Airline Carrier'); await dashboardPanelActions.toggleContextMenu(header); + await dashboardPanelActions.clickContextMenuMoreItem(); + await testSubjects.click('embeddablePanelAction-togglePanel'); await a11y.testAppSnapshot(); }); diff --git a/test/api_integration/apis/home/sample_data.ts b/test/api_integration/apis/home/sample_data.ts index 99327901ec8c3..c681ad325e56f 100644 --- a/test/api_integration/apis/home/sample_data.ts +++ b/test/api_integration/apis/home/sample_data.ts @@ -43,7 +43,7 @@ export default function ({ getService }: FtrProviderContext) { expect(resp.body).to.eql({ elasticsearchIndicesCreated: { kibana_sample_data_flights: 13059 }, - kibanaSavedObjectsLoaded: 20, + kibanaSavedObjectsLoaded: 23, }); }); diff --git a/test/api_integration/apis/search/search.ts b/test/api_integration/apis/search/search.ts index bc092dd3889bb..7ef82cd5467ab 100644 --- a/test/api_integration/apis/search/search.ts +++ b/test/api_integration/apis/search/search.ts @@ -99,26 +99,6 @@ export default function ({ getService }: FtrProviderContext) { expect(resp.body.message).to.contain('banana not found'); }); - it('should return 400 when index type is provided in OSS', async () => { - const resp = await supertest - .post(`/internal/search/es`) - .send({ - indexType: 'baad', - params: { - body: { - query: { - match_all: {}, - }, - }, - }, - }) - .expect(400); - - verifyErrorResponse(resp.body, 400); - - expect(resp.body.message).to.contain('Unsupported index pattern'); - }); - it('should return 400 with illegal ES argument', async () => { const resp = await supertest .post(`/internal/search/es`) diff --git a/test/api_integration/apis/telemetry/index.js b/test/api_integration/apis/telemetry/index.js index db95bf92cd44f..5394b54062d89 100644 --- a/test/api_integration/apis/telemetry/index.js +++ b/test/api_integration/apis/telemetry/index.js @@ -8,7 +8,6 @@ export default function ({ loadTestFile }) { describe('Telemetry', () => { - loadTestFile(require.resolve('./telemetry_local')); loadTestFile(require.resolve('./opt_in')); loadTestFile(require.resolve('./telemetry_optin_notice_seen')); }); diff --git a/test/api_integration/apis/telemetry/telemetry_local.ts b/test/api_integration/apis/telemetry/telemetry_local.ts deleted file mode 100644 index 8f28872d5bb1b..0000000000000 --- a/test/api_integration/apis/telemetry/telemetry_local.ts +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import expect from '@kbn/expect'; -import supertestAsPromised from 'supertest-as-promised'; -import { omit } from 'lodash'; -import { basicUiCounters } from './__fixtures__/ui_counters'; -import { basicUsageCounters } from './__fixtures__/usage_counters'; -import type { FtrProviderContext } from '../../ftr_provider_context'; -import type { SavedObject } from '../../../../src/core/server'; -import ossRootTelemetrySchema from '../../../../src/plugins/telemetry/schema/oss_root.json'; -import ossPluginsTelemetrySchema from '../../../../src/plugins/telemetry/schema/oss_plugins.json'; -import { assertTelemetryPayload, flatKeys } from './utils'; - -async function retrieveTelemetry( - supertest: supertestAsPromised.SuperTest -) { - const { body } = await supertest - .post('/api/telemetry/v2/clusters/_stats') - .set('kbn-xsrf', 'xxx') - .send({ unencrypted: true }) - .expect(200); - - expect(body.length).to.be(1); - return body[0]; -} - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const es = getService('es'); - const esArchiver = getService('esArchiver'); - - describe('/api/telemetry/v2/clusters/_stats', () => { - before('make sure there are some saved objects', () => esArchiver.load('saved_objects/basic')); - after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/basic')); - - before('create some telemetry-data tracked indices', async () => { - await es.indices.create({ index: 'filebeat-telemetry_tests_logs' }); - }); - - after('cleanup telemetry-data tracked indices', async () => { - await es.indices.delete({ index: 'filebeat-telemetry_tests_logs' }); - }); - - describe('validate data types', () => { - let stats: Record; - - before('pull local stats', async () => { - stats = await retrieveTelemetry(supertest); - }); - - it('should pass the schema validation', () => { - try { - assertTelemetryPayload( - { root: ossRootTelemetrySchema, plugins: ossPluginsTelemetrySchema }, - stats - ); - } catch (err) { - err.message = `The telemetry schemas in 'src/plugins/telemetry/schema/' are out-of-date, please update it as required: ${err.message}`; - throw err; - } - }); - - it('should pass ad-hoc enforced validations', () => { - expect(stats.collection).to.be('local'); - expect(stats.collectionSource).to.be('local'); - expect(stats.license).to.be(undefined); // OSS cannot get the license - expect(stats.stack_stats.kibana.count).to.be.a('number'); - expect(stats.stack_stats.kibana.indices).to.be.a('number'); - expect(stats.stack_stats.kibana.os.platforms[0].platform).to.be.a('string'); - expect(stats.stack_stats.kibana.os.platforms[0].count).to.be(1); - expect(stats.stack_stats.kibana.os.platformReleases[0].platformRelease).to.be.a('string'); - expect(stats.stack_stats.kibana.os.platformReleases[0].count).to.be(1); - expect(stats.stack_stats.kibana.plugins.telemetry.opt_in_status).to.be(false); - expect(stats.stack_stats.kibana.plugins.telemetry.usage_fetcher).to.be.a('string'); - expect(stats.stack_stats.kibana.plugins.stack_management).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.ui_metric).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.ui_counters).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.application_usage).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.kql.defaultQueryLanguage).to.be.a('string'); - expect(stats.stack_stats.kibana.plugins.localization).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.csp.strict).to.be(false); - expect(stats.stack_stats.kibana.plugins.csp.warnLegacyBrowsers).to.be(true); - expect(stats.stack_stats.kibana.plugins.csp.rulesChangedFromDefault).to.be(false); - expect(stats.stack_stats.kibana.plugins.kibana_config_usage).to.be.an('object'); - // non-default kibana configs. Configs set at 'test/api_integration/config.js'. - expect(omit(stats.stack_stats.kibana.plugins.kibana_config_usage, 'server.port')).to.eql({ - 'elasticsearch.username': '[redacted]', - 'elasticsearch.password': '[redacted]', - 'elasticsearch.hosts': '[redacted]', - 'elasticsearch.healthCheck.delay': 3600000, - 'plugins.paths': '[redacted]', - 'logging.json': false, - 'server.xsrf.disableProtection': true, - 'server.compression.referrerWhitelist': '[redacted]', - 'server.maxPayload': 1679958, - 'status.allowAnonymous': true, - 'home.disableWelcomeScreen': true, - 'data.search.aggs.shardDelay.enabled': true, - 'security.showInsecureClusterWarning': false, - 'telemetry.banner': false, - 'telemetry.url': '[redacted]', - 'telemetry.optInStatusUrl': '[redacted]', - 'telemetry.optIn': false, - 'newsfeed.service.urlRoot': '[redacted]', - 'newsfeed.service.pathTemplate': '[redacted]', - 'savedObjects.maxImportPayloadBytes': 10485760, - 'savedObjects.maxImportExportSize': 10001, - 'usageCollection.usageCounters.bufferDuration': 0, - }); - expect(stats.stack_stats.kibana.plugins.kibana_config_usage['server.port']).to.be.a( - 'number' - ); - - // Testing stack_stats.data - expect(stats.stack_stats.data).to.be.an('object'); - expect(stats.stack_stats.data).to.be.an('array'); - expect(stats.stack_stats.data[0]).to.be.an('object'); - expect(stats.stack_stats.data[0].pattern_name).to.be('filebeat'); - expect(stats.stack_stats.data[0].shipper).to.be('filebeat'); - expect(stats.stack_stats.data[0].index_count).to.be(1); - expect(stats.stack_stats.data[0].doc_count).to.be(0); - expect(stats.stack_stats.data[0].ecs_index_count).to.be(0); - expect(stats.stack_stats.data[0].size_in_bytes).to.be.a('number'); - - expect(stats.stack_stats.kibana.plugins.saved_objects_counts).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.saved_objects_counts.by_type).to.be.an('array'); - expect(stats.stack_stats.kibana.plugins.saved_objects_counts.by_type).to.eql([ - { type: 'config', count: 2 }, - { type: 'dashboard', count: 2 }, - { type: 'index-pattern', count: 2 }, - { type: 'visualization', count: 2 }, - ]); - }); - - it('should validate mandatory fields exist', () => { - const actual = flatKeys(stats); - expect(actual).to.be.an('array'); - const expected = [ - 'cluster_name', - 'cluster_stats.cluster_uuid', - 'cluster_stats.indices.analysis', - 'cluster_stats.indices.completion', - 'cluster_stats.indices.count', - 'cluster_stats.indices.docs', - 'cluster_stats.indices.fielddata', - 'cluster_stats.indices.mappings', - 'cluster_stats.indices.query_cache', - 'cluster_stats.indices.segments', - 'cluster_stats.indices.shards', - 'cluster_stats.indices.store', - 'cluster_stats.nodes.count', - 'cluster_stats.nodes.discovery_types', - 'cluster_stats.nodes.fs', - 'cluster_stats.nodes.ingest', - 'cluster_stats.nodes.jvm', - 'cluster_stats.nodes.network_types', - 'cluster_stats.nodes.os', - 'cluster_stats.nodes.packaging_types', - 'cluster_stats.nodes.plugins', - 'cluster_stats.nodes.process', - 'cluster_stats.nodes.versions', - 'cluster_stats.nodes.usage', - 'cluster_stats.status', - 'cluster_stats.timestamp', - 'cluster_uuid', - 'collection', - 'collectionSource', - 'stack_stats.kibana.count', - 'stack_stats.kibana.indices', - 'stack_stats.kibana.os', - 'stack_stats.kibana.plugins', - 'stack_stats.kibana.versions', - 'timestamp', - 'version', - ]; - - expect(expected.every((m) => actual.includes(m))).to.be.ok(); - }); - }); - - describe('UI Counters telemetry', () => { - before('Add UI Counters saved objects', () => esArchiver.load('saved_objects/ui_counters')); - after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/ui_counters')); - it('returns ui counters aggregated by day', async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.ui_counters).to.eql(basicUiCounters); - }); - }); - - describe('Usage Counters telemetry', () => { - before('Add UI Counters saved objects', () => - esArchiver.load('saved_objects/usage_counters') - ); - after('cleanup saved objects changes', () => - esArchiver.unload('saved_objects/usage_counters') - ); - - it('returns usage counters aggregated by day', async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.usage_counters).to.eql(basicUsageCounters); - }); - }); - - describe('application usage limits', () => { - function createSavedObject(viewId?: string) { - return supertest - .post('/api/saved_objects/application_usage_daily') - .send({ - attributes: { - appId: 'test-app', - viewId, - minutesOnScreen: 10.33, - numberOfClicks: 10, - timestamp: new Date().toISOString(), - }, - }) - .expect(200) - .then((resp) => resp.body.id); - } - - describe('basic behaviour', () => { - let savedObjectIds: string[] = []; - before('create application usage entries', async () => { - await esArchiver.emptyKibanaIndex(); - savedObjectIds = await Promise.all([ - createSavedObject(), - createSavedObject('appView1'), - createSavedObject(), - ]); - }); - after('cleanup', async () => { - await Promise.all( - savedObjectIds.map((savedObjectId) => { - return supertest - .delete(`/api/saved_objects/application_usage_daily/${savedObjectId}`) - .expect(200); - }) - ); - }); - - it('should return application_usage data', async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.application_usage).to.eql({ - 'test-app': { - appId: 'test-app', - viewId: 'main', - clicks_total: 20, - clicks_7_days: 20, - clicks_30_days: 20, - clicks_90_days: 20, - minutes_on_screen_total: 20.66, - minutes_on_screen_7_days: 20.66, - minutes_on_screen_30_days: 20.66, - minutes_on_screen_90_days: 20.66, - views: [ - { - appId: 'test-app', - viewId: 'appView1', - clicks_total: 10, - clicks_7_days: 10, - clicks_30_days: 10, - clicks_90_days: 10, - minutes_on_screen_total: 10.33, - minutes_on_screen_7_days: 10.33, - minutes_on_screen_30_days: 10.33, - minutes_on_screen_90_days: 10.33, - }, - ], - }, - }); - }); - }); - - describe('10k + 1', () => { - const savedObjectIds = []; - before('create 10k + 1 entries for application usage', async () => { - await supertest - .post('/api/saved_objects/_bulk_create') - .send( - new Array(10001).fill(0).map(() => ({ - type: 'application_usage_daily', - attributes: { - appId: 'test-app', - minutesOnScreen: 1, - numberOfClicks: 1, - timestamp: new Date().toISOString(), - }, - })) - ) - .expect(200) - .then((resp) => - resp.body.saved_objects.forEach(({ id }: SavedObject) => savedObjectIds.push(id)) - ); - }); - after('clean them all', async () => { - // The SavedObjects API does not allow bulk deleting, and deleting one by one takes ages and the tests timeout - await es.deleteByQuery({ - index: '.kibana', - body: { query: { term: { type: 'application_usage_daily' } } }, - conflicts: 'proceed', - }); - }); - - it("should only use the first 10k docs for the application_usage data (they'll be rolled up in a later process)", async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.application_usage).to.eql({ - 'test-app': { - appId: 'test-app', - viewId: 'main', - clicks_total: 10000, - clicks_7_days: 10000, - clicks_30_days: 10000, - clicks_90_days: 10000, - minutes_on_screen_total: 10000, - minutes_on_screen_7_days: 10000, - minutes_on_screen_30_days: 10000, - minutes_on_screen_90_days: 10000, - views: [], - }, - }); - }); - }); - }); - }); -} diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz b/test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz index c72f46370fa122258294d3000e630b607d3db3f1..d65e1920b2342559fefe4d358fba3f9f8c17fff9 100644 GIT binary patch literal 2469 zcmV;W30n3aiwFp8?_6L217u-zVJ>QOZ*BnXTy1aLI1>KeUtxH^9c)9A(>T$m+iQ_U z7kxt$Ek9gGArg2Wc%~%W4>fCyHC2<+95`IYk}jOQ%x0Kv z45w~Xsr%S^!>=V>6B+|sO2IM8Qbw%vDapSX6mS$AldP1XAR##( zQG-ZYU^0;@hB8w^P=+(g?#)3X&#F&2^bA#lEyyl_0_N@yJi=r*?f}Bs2~3x0eAo$`Uxg+V$f5K zr*R$vqqig!iTQ*om}c|IiNI5{vhXKBn$4vkA~l*v1<-H~cl-P5%P9m{W;0l_)MNqy zp27TyTO!|(@&m*SdT8SPy_%vs3gA$^&3iW*NqlDM20pmu9Cz9h3&M zY4TET+&cbOx!adLHl|AfGK(W#(3~4JFDpbQvBV1$EWhftPmU@)CNZ?XcVJhs7!@K7 zi;1NO4Ei{4Vd_{JrG=@%|4FA>F zz4PXzPqum(sCC$9`5aJxGIHIKvnr1N>+33-v{ zxRarCI`rHN_ryOs_1)uJv{$pRY3EI#QsDcavGwvNRay@N2jEa zEobpQJ#EAWxU}B*1=iDoHZa@R@m^rI z8^TMJlE0N|ei%*y6nXnO5cf309iW`x6J^ zgM3e=ib3Z}|KHC)eH>L3btJ5xrOg%dM;)W9|Fit#wd;H1(d6{#kHz)NG(NPaQ}d)n z%4&zXwfc7MmWE$aUkZT;ACXkZ*HZki*ARUn1(&bP_z#PZSA7-WQZk^7BYSb8+->HPt3D_)Xw0sOYq;f02u(GXXk^ct3z zX*y8)rp*#JpSPvmG>+{KI-act(F5p>I_SBAth+cOSjkjNff&kog=MujX7U|n*%!bd zF=hAfNxoQx<=QFkQ>{usQ_9r+zhEr+mjs&5LHzeL+X<7|L|vJ9o)V}Man>EF@5 zws)7G4j=Fl--(6yNe{SI=@lcGf36+v>taMD4nN|V4Q$Abf^Yh*M+jJ`8cQkA9&FHX z?^Y^?kP<3){SOwm80Vkm=^ozV5J0>kEJ$&y5iY^3plPLIhsT@Rq^ky2dZIAApfpv7 z!kRQP4Bz7z=i#C$Ro_3ijm#Er6v#xej(1WZeE)#hw~h@8Ft-rP7H?YH-d2UXY15}- zBEKX&C9_M?(mRAONK(A2K}3XrJo*gG-r)TkGg`@lGukgNww0coz1d@a`dj##;pO%uWejq8`1Tk<)Mv-)slJL0Ls^6HAElg-KvZcyc5 zs1&qvNs>v#`ExV%eRJw)gt4jE&xrL@u4olm6HaY-*5qRfe*d zaoG%qp`0FX)Ha}!jPnFRIxC&Oo>Th%c2cAorjCqbZDk-EW|$}M^jugrS4en~qI;?6 zrzq;Css$>!bhavFwR>t;cOJ>CVCxJUY$^1=IP9I{qURp>AUA#8^F05x=ev{MZyzp( z&ctz+_uOA#0)tP(y~@Ph&I>AKo-tC%JgH>59uV!1Pact})4VThvb$D3w&A9|J)t(+ zu&>>TY_RXr_tiTQZT9t>jBc|3j7`Qut>D(g;{K27F(Fb z7G|-9S$@cwZDAH$n8g-m*##C`n8g-mv4vS|VHR7M#TI6=wlIq=%(8tnwlK><6=soCsnD}H&(weV5STGlTlDEGTfF7z;w{^-@XxO7qD}k% zSKwuHW7z61k8o_Ozu4+8w)%^${$i`Y*y=B~`ped2meHZ zdm4PN8mxT};c7iR!$_2D$qlYs7uME%t0kQ)Nh{t~Guj;aK0ro9e=M1Fm+%o?I(SPMR?~VWf@qxXI literal 2038 zcmc)8`9Bkk0{~!mYVyjJV`F1!?z1_Tq={Km4ILY4Bt~z@Q7DAm=UzEtv#D8#j=7J_ zHFJ~R&3$z!_w_oOm)_6!ulPPcKB_6=0{&5P)iDrEUh?8m~SBW%KxfJJV#IIiPe&e(mFCA}1`y2k)2OZpQvIbAV$oMR> z+$a*pQ#+mtWQp603~4sseYazvI|qG=C_ll>Jo#ccuJF($K4w1rI^XaDM%u|HQ(UHs zz<4Dcr-^)^gGzP2hBuWHnKO-f&DvT|!JWa4=sp^OC;@^GpOusihtM$GGniv+>C9va z;7xw1!`qCmy%zX-pXPMBFHeUz*#HNc8GZYb-{^g@0sLh;V6iPhajPk{BEn{>P4~Rk z0|A^N2+$vTH6|lYSaVNDPmYw~F_a;o;pzM)!7U}0yLF}Wf}U(Q^t&SPs}I=Ph?ckh zpsT*c1gXuSYyU8RoqfblP?47;_ZNdM9^D#EFS4l}MhcJX@Djmcu5G7isa`|phX=O% zmv)$APX4#n>aWU6mShW&ekk@g3m!9*m!w}qWAlbmQ_aDrs`J3UXqqfq9BtpjJ_R&6 zmR5aU(2FerwpL)aKmFhrTb5~)s;))X>Ya_TM*V${*=lTC5YHiS0C=wTlS&KiS)WzZs_?Zw%LgkBWL|!2 zPZ#XIG_1mTT5boBs*|Md>@T)oD{*h-5g-blqQ0R|w_gvGntRJVLlNHNmt&rYH9V12 z-a2!W8tvuo|LHM|8V&E)6K*m(-sMfZH0n~Mf^HdqM(%0-z7Yjbvp(pmc}iG7&7aMp z{mZlwvA<+w2NC?ovaUne9yx&!ZcG++P85-s0mupQ^MfIR=GkJE-?J@1*G&U*5ZkO? z%J+c*Zo9s5+}RW&u&;A^R2hy#d8#hlD2{@~fo)mpTaEfHq4F<@n=KQ!EngIrZpW!&7+=Tc-0UhM z443?)KEgXKWliBo&T~4>c_t`Zhon^lE^sf?K*nMl6u*j(>ql&^9C@{KWSa5cBYLH-$R;7xUs7R z2|TFmYIZY7IIMSUI!lMjL{2w&2z&Zal(;2IFEHw+KOSK$k$|=`+%Eg)Z{|?vP|NPw z&o#USZeUoMYQ;ju!2BiLB&Im&;u?z1bNJMQqo{uFS2aT1q6E59ROi$#F27X-yzTjw zPgKA%`sy>hBK$uk9A>$e@W%U+spIRKFcQ_boj;yVWRsM2K1A!v9b;X4onM703e-VF zuM!&5Ru2M`ZzepsSI9aMav8PLO`gsLfqbRjm5M7a$S!Kwd?RN&EiY`8yA5+iYqo3@ zRD%YVi!(GF2>+&cK-=%1s2rp=r09(6$Il;*gxhR@k?5p3dev$(xi?9O}Z z>L<+SsU(a%@F-BHD;Q2uLuhZdFVvB0-L(ouA5ZTQm^1e5io|W7y{-J^f~$A^u0JkN zv`aSv#Vl1+e;w}~PJbG3JId{-c+%x_eNfsBc-u8dGroks+dC*ObmGS= zj97;K0Kua!;?;1EzvZN%soA_3XL2@A85k6M$1kAoczS*7{~=c!)`Rth64Lxk4ya=w zt>SYU-R-s(k0hkh1=|eIn~8~Y1m+aLK;e!I#tKI*W)yZ8kt5ELp1Y|QsdA|!s*7;s JpdnU3;6I3>=+giI diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json index e601c43431437..6dac52137ef01 100644 --- a/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json +++ b/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json @@ -1,148 +1,2613 @@ { "type": "index", "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "number_of_replicas": "1" + "aliases": { + ".kibana": { } }, + "index": ".kibana_1", "mappings": { + "_meta": { + "migrationMappingPropertyHashes": { + "action": "6e96ac5e648f57523879661ea72525b7", + "action_task_params": "a9d49f184ee89641044be0ca2950fa3a", + "alert": "05d57e6963593484582a4de341446974", + "api_key_pending_invalidation": "16f515278a295f6245149ad7c5ddedb7", + "apm-indices": "9bb9b2bf1fa636ed8619cbab5ce6a1dd", + "apm-telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "app_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "application_usage_daily": "43b8830d5d0df85a6823d290885fc9fd", + "application_usage_totals": "3d1b76c39bfb2cc8296b024d73854724", + "application_usage_transactional": "3d1b76c39bfb2cc8296b024d73854724", + "canvas-element": "7390014e1091044523666d97247392fc", + "canvas-workpad": "b0a1706d356228dbdcb4a17e6b9eb231", + "canvas-workpad-template": "ae2673f678281e2c055d764b153e9715", + "cases": "7c28a18fbac7c2a4e79449e9802ef476", + "cases-comments": "112cefc2b6737e613a8ef033234755e6", + "cases-configure": "387c5f3a3bda7e0ae0dd4e106f914a69", + "cases-connector-mappings": "6bc7e49411d38be4969dc6aa8bd43776", + "cases-sub-case": "2dc9dbf1fc7144e2b18fffc017358ff9", + "cases-user-actions": "32277330ec6b721abe3b846cfd939a71", + "config": "c63748b75f39d0c54de12d12c1ccbc20", + "core-usage-stats": "3d1b76c39bfb2cc8296b024d73854724", + "coreMigrationVersion": "2f4316de49999235636386fe51dc06c1", + "dashboard": "40554caf09725935e2c02e02563a2d07", + "endpoint:user-artifact": "4a11183eee21e6fbad864f7a30b39ad0", + "endpoint:user-artifact-manifest": "a0d7b04ad405eed54d76e279c3727862", + "enterprise_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "epm-packages": "0cbbb16506734d341a96aaed65ec6413", + "epm-packages-assets": "44621b2f6052ef966da47b7c3a00f33b", + "exception-list": "baf108c9934dda844921f692a513adae", + "exception-list-agnostic": "baf108c9934dda844921f692a513adae", + "file-upload-usage-collection-telemetry": "a34fbb8e3263d105044869264860c697", + "fleet-agent-actions": "9511b565b1cc6441a42033db3d5de8e9", + "fleet-agent-events": "e20a508b6e805189356be381dbfac8db", + "fleet-agents": "59fd74f819f028f8555776db198d2562", + "fleet-enrollment-api-keys": "a69ef7ae661dab31561d6c6f052ef2a7", + "graph-workspace": "27a94b2edcb0610c6aea54a7c56d7752", + "index-pattern": "45915a1ad866812242df474eb0479052", + "infrastructure-ui-source": "3d1b76c39bfb2cc8296b024d73854724", + "ingest-agent-policies": "8df93787e2927f227dc80db8b6d309b9", + "ingest-outputs": "8854f34453a47e26f86a29f8f3b80b4e", + "ingest-package-policies": "c91ca97b1ff700f0fc64dc6b13d65a85", + "ingest_manager_settings": "22d4d1288c2687ef6a8f6e83159b4542", + "inventory-view": "3d1b76c39bfb2cc8296b024d73854724", + "kql-telemetry": "d12a98a6f19a2d273696597547e064ee", + "legacy-url-alias": "3d1b76c39bfb2cc8296b024d73854724", + "lens": "52346cfec69ff7b47d5f0c12361a2797", + "lens-ui-telemetry": "509bfa5978586998e05f9e303c07a327", + "map": "9134b47593116d7953f6adba096fc463", + "maps-telemetry": "5ef305b18111b77789afefbd36b66171", + "metrics-explorer-view": "3d1b76c39bfb2cc8296b024d73854724", + "migrationVersion": "4a1746014a75ade3a714e1db5763276f", + "ml-job": "3bb64c31915acf93fc724af137a0891b", + "ml-module": "46ef4f0d6682636f0fff9799d6a2d7ac", + "monitoring-telemetry": "2669d5ec15e82391cf58df4294ee9c68", + "namespace": "2f4316de49999235636386fe51dc06c1", + "namespaces": "2f4316de49999235636386fe51dc06c1", + "originId": "2f4316de49999235636386fe51dc06c1", + "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9", + "references": "7997cf5a56cc02bdc9c93361bde732b0", + "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4", + "search": "db2c00e39b36f40930a3b9fc71c823e1", + "search-session": "33157cf0119e41cd4e7a1d24266beff4", + "search-telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "security-solution-signals-migration": "72761fd374ca11122ac8025a92b84fca", + "siem-detection-engine-rule-actions": "6569b288c169539db10cb262bf79de18", + "siem-detection-engine-rule-status": "ae783f41c6937db6b7a2ef5c93a9e9b0", + "siem-ui-timeline": "3e97beae13cdfc6d62bc1846119f7276", + "siem-ui-timeline-note": "8874706eedc49059d4cf0f5094559084", + "siem-ui-timeline-pinned-event": "20638091112f0e14f0e443d512301c29", + "space": "c5ca8acafa0beaa4d08d014a97b6bc6b", + "spaces-usage-stats": "3d1b76c39bfb2cc8296b024d73854724", + "tag": "83d55da58f6530f7055415717ec06474", + "telemetry": "36a616f7026dfa617d6655df850fe16d", + "timelion-sheet": "9a2a2748877c7a7b582fef201ab1d4cf", + "type": "2f4316de49999235636386fe51dc06c1", + "ui-counter": "0d409297dc5ebe1e3a1da691c6ee32e3", + "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3", + "updated_at": "00da57df13e94e9d98437d13ace4bfe0", + "upgrade-assistant-reindex-operation": "215107c281839ea9b3ad5f6419819763", + "upgrade-assistant-telemetry": "56702cec857e0a9dacfb696655b4ff7b", + "uptime-dynamic-settings": "3d1b76c39bfb2cc8296b024d73854724", + "url": "c7f66a0df8b1b52f17c28c4adb111105", + "visualization": "f819cf6636b75c9e76ba733a0c6ef355", + "workplace_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724" + } + }, "dynamic": "strict", "properties": { - "config": { - "dynamic": "true", + "action": { "properties": { - "buildNum": { + "actionTypeId": { + "type": "keyword" + }, + "config": { + "enabled": false, + "type": "object" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "secrets": { + "type": "binary" + } + } + }, + "action_task_params": { + "properties": { + "actionId": { + "type": "keyword" + }, + "apiKey": { + "type": "binary" + }, + "params": { + "enabled": false, + "type": "object" + } + } + }, + "alert": { + "properties": { + "actions": { + "properties": { + "actionRef": { + "type": "keyword" + }, + "actionTypeId": { + "type": "keyword" + }, + "group": { + "type": "keyword" + }, + "params": { + "enabled": false, + "type": "object" + } + }, + "type": "nested" + }, + "alertTypeId": { + "type": "keyword" + }, + "apiKey": { + "type": "binary" + }, + "apiKeyOwner": { + "type": "keyword" + }, + "consumer": { + "type": "keyword" + }, + "createdAt": { + "type": "date" + }, + "createdBy": { + "type": "keyword" + }, + "enabled": { + "type": "boolean" + }, + "executionStatus": { + "properties": { + "error": { + "properties": { + "message": { + "type": "keyword" + }, + "reason": { + "type": "keyword" + } + } + }, + "lastExecutionDate": { + "type": "date" + }, + "status": { + "type": "keyword" + } + } + }, + "meta": { + "properties": { + "versionApiKeyLastmodified": { + "type": "keyword" + } + } + }, + "muteAll": { + "type": "boolean" + }, + "mutedInstanceIds": { + "type": "keyword" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "notifyWhen": { + "type": "keyword" + }, + "params": { + "type": "flattened" + }, + "schedule": { + "properties": { + "interval": { + "type": "keyword" + } + } + }, + "scheduledTaskId": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "throttle": { + "type": "keyword" + }, + "updatedAt": { + "type": "date" + }, + "updatedBy": { + "type": "keyword" + } + } + }, + "api_key_pending_invalidation": { + "properties": { + "apiKeyId": { + "type": "keyword" + }, + "createdAt": { + "type": "date" + } + } + }, + "apm-indices": { + "properties": { + "apm_oss": { + "properties": { + "errorIndices": { + "type": "keyword" + }, + "metricsIndices": { + "type": "keyword" + }, + "onboardingIndices": { + "type": "keyword" + }, + "sourcemapIndices": { + "type": "keyword" + }, + "spanIndices": { + "type": "keyword" + }, + "transactionIndices": { + "type": "keyword" + } + } + } + } + }, + "apm-telemetry": { + "dynamic": "false", + "type": "object" + }, + "app_search_telemetry": { + "dynamic": "false", + "type": "object" + }, + "application_usage_daily": { + "dynamic": "false", + "properties": { + "timestamp": { + "type": "date" + } + } + }, + "application_usage_totals": { + "dynamic": "false", + "type": "object" + }, + "application_usage_transactional": { + "dynamic": "false", + "type": "object" + }, + "canvas-element": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "content": { + "type": "text" + }, + "help": { + "type": "text" + }, + "image": { + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "canvas-workpad": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "canvas-workpad-template": { + "dynamic": "false", + "properties": { + "help": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "tags": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "template_key": { + "type": "keyword" + } + } + }, + "cases": { + "properties": { + "closed_at": { + "type": "date" + }, + "closed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "connector": { + "properties": { + "fields": { + "properties": { + "key": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "description": { + "type": "text" + }, + "external_service": { + "properties": { + "connector_id": { + "type": "keyword" + }, + "connector_name": { + "type": "keyword" + }, + "external_id": { + "type": "keyword" + }, + "external_title": { + "type": "text" + }, + "external_url": { + "type": "text" + }, + "pushed_at": { + "type": "date" + }, + "pushed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "settings": { + "properties": { + "syncAlerts": { + "type": "boolean" + } + } + }, + "status": { "type": "keyword" }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 + "tags": { + "type": "keyword" + }, + "title": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-comments": { + "properties": { + "alertId": { + "type": "keyword" + }, + "associationType": { + "type": "keyword" + }, + "comment": { + "type": "text" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "index": { + "type": "keyword" + }, + "pushed_at": { + "type": "date" + }, + "pushed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + } + } + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-configure": { + "properties": { + "closure_type": { + "type": "keyword" + }, + "connector": { + "properties": { + "fields": { + "properties": { + "key": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-connector-mappings": { + "properties": { + "mappings": { + "properties": { + "action_type": { + "type": "keyword" + }, + "source": { + "type": "keyword" + }, + "target": { + "type": "keyword" + } + } + } + } + }, + "cases-sub-case": { + "properties": { + "closed_at": { + "type": "date" + }, + "closed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "status": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-user-actions": { + "properties": { + "action": { + "type": "keyword" + }, + "action_at": { + "type": "date" + }, + "action_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "action_field": { + "type": "keyword" + }, + "new_value": { + "type": "text" + }, + "old_value": { + "type": "text" + } + } + }, + "config": { + "dynamic": "false", + "properties": { + "buildNum": { + "type": "keyword" + } + } + }, + "core-usage-stats": { + "dynamic": "false", + "type": "object" + }, + "coreMigrationVersion": { + "type": "keyword" + }, + "dashboard": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "doc_values": false, + "index": false, + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "index": false, + "type": "text" + } + } + }, + "optionsJSON": { + "index": false, + "type": "text" + }, + "panelsJSON": { + "index": false, + "type": "text" + }, + "refreshInterval": { + "properties": { + "display": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "pause": { + "doc_values": false, + "index": false, + "type": "boolean" + }, + "section": { + "doc_values": false, + "index": false, + "type": "integer" + }, + "value": { + "doc_values": false, + "index": false, + "type": "integer" + } + } + }, + "timeFrom": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "timeRestore": { + "doc_values": false, + "index": false, + "type": "boolean" + }, + "timeTo": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "endpoint:user-artifact": { + "properties": { + "body": { + "type": "binary" + }, + "compressionAlgorithm": { + "index": false, + "type": "keyword" + }, + "created": { + "index": false, + "type": "date" + }, + "decodedSha256": { + "index": false, + "type": "keyword" + }, + "decodedSize": { + "index": false, + "type": "long" + }, + "encodedSha256": { + "type": "keyword" + }, + "encodedSize": { + "index": false, + "type": "long" + }, + "encryptionAlgorithm": { + "index": false, + "type": "keyword" + }, + "identifier": { + "type": "keyword" + } + } + }, + "endpoint:user-artifact-manifest": { + "properties": { + "artifacts": { + "properties": { + "artifactId": { + "index": false, + "type": "keyword" + }, + "policyId": { + "index": false, + "type": "keyword" + } + }, + "type": "nested" + }, + "created": { + "index": false, + "type": "date" + }, + "schemaVersion": { + "type": "keyword" + }, + "semanticVersion": { + "index": false, + "type": "keyword" + } + } + }, + "enterprise_search_telemetry": { + "dynamic": "false", + "type": "object" + }, + "epm-packages": { + "properties": { + "es_index_patterns": { + "enabled": false, + "type": "object" + }, + "install_source": { + "type": "keyword" + }, + "install_started_at": { + "type": "date" + }, + "install_status": { + "type": "keyword" + }, + "install_version": { + "type": "keyword" + }, + "installed_es": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "installed_kibana": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "internal": { + "type": "boolean" + }, + "name": { + "type": "keyword" + }, + "package_assets": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "removable": { + "type": "boolean" + }, + "version": { + "type": "keyword" + } + } + }, + "epm-packages-assets": { + "properties": { + "asset_path": { + "type": "keyword" + }, + "data_base64": { + "type": "binary" + }, + "data_utf8": { + "index": false, + "type": "text" + }, + "install_source": { + "type": "keyword" + }, + "media_type": { + "type": "keyword" + }, + "package_name": { + "type": "keyword" + }, + "package_version": { + "type": "keyword" + } + } + }, + "exception-list": { + "properties": { + "_tags": { + "type": "keyword" + }, + "comments": { + "properties": { + "comment": { + "type": "keyword" + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "updated_at": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "entries": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "field": { + "type": "keyword" + }, + "list": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "immutable": { + "type": "boolean" + }, + "item_id": { + "type": "keyword" + }, + "list_id": { + "type": "keyword" + }, + "list_type": { + "type": "keyword" + }, + "meta": { + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "os_types": { + "type": "keyword" + }, + "tags": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "tie_breaker_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "exception-list-agnostic": { + "properties": { + "_tags": { + "type": "keyword" + }, + "comments": { + "properties": { + "comment": { + "type": "keyword" + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "updated_at": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "entries": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "field": { + "type": "keyword" + }, + "list": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "immutable": { + "type": "boolean" + }, + "item_id": { + "type": "keyword" + }, + "list_id": { + "type": "keyword" + }, + "list_type": { + "type": "keyword" + }, + "meta": { + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "os_types": { + "type": "keyword" + }, + "tags": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "tie_breaker_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "file-upload-usage-collection-telemetry": { + "properties": { + "file_upload": { + "properties": { + "index_creation_count": { + "type": "long" + } + } + } + } + }, + "fleet-agent-actions": { + "properties": { + "ack_data": { + "type": "text" + }, + "agent_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "data": { + "type": "binary" + }, + "policy_id": { + "type": "keyword" + }, + "policy_revision": { + "type": "integer" + }, + "sent_at": { + "type": "date" + }, + "type": { + "type": "keyword" + } + } + }, + "fleet-agent-events": { + "properties": { + "action_id": { + "type": "keyword" + }, + "agent_id": { + "type": "keyword" + }, + "data": { + "type": "text" + }, + "message": { + "type": "text" + }, + "payload": { + "type": "text" + }, + "policy_id": { + "type": "keyword" + }, + "stream_id": { + "type": "keyword" + }, + "subtype": { + "type": "keyword" + }, + "timestamp": { + "type": "date" + }, + "type": { + "type": "keyword" + } + } + }, + "fleet-agents": { + "properties": { + "access_api_key_id": { + "type": "keyword" + }, + "active": { + "type": "boolean" + }, + "current_error_events": { + "index": false, + "type": "text" + }, + "default_api_key": { + "type": "binary" + }, + "default_api_key_id": { + "type": "keyword" + }, + "enrolled_at": { + "type": "date" + }, + "last_checkin": { + "type": "date" + }, + "last_checkin_status": { + "type": "keyword" + }, + "last_updated": { + "type": "date" + }, + "local_metadata": { + "type": "flattened" + }, + "packages": { + "type": "keyword" + }, + "policy_id": { + "type": "keyword" + }, + "policy_revision": { + "type": "integer" + }, + "type": { + "type": "keyword" + }, + "unenrolled_at": { + "type": "date" + }, + "unenrollment_started_at": { + "type": "date" + }, + "updated_at": { + "type": "date" + }, + "upgrade_started_at": { + "type": "date" + }, + "upgraded_at": { + "type": "date" + }, + "user_provided_metadata": { + "type": "flattened" + }, + "version": { + "type": "keyword" + } + } + }, + "fleet-enrollment-api-keys": { + "properties": { + "active": { + "type": "boolean" + }, + "api_key": { + "type": "binary" + }, + "api_key_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "expire_at": { + "type": "date" + }, + "name": { + "type": "keyword" + }, + "policy_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + } + } + }, + "graph-workspace": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "legacyIndexPatternRef": { + "index": false, + "type": "text" + }, + "numLinks": { + "type": "integer" + }, + "numVertices": { + "type": "integer" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "wsState": { + "type": "text" + } + } + }, + "index-pattern": { + "dynamic": "false", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "infrastructure-ui-source": { + "dynamic": "false", + "type": "object" + }, + "ingest-agent-policies": { + "properties": { + "description": { + "type": "text" + }, + "is_default": { + "type": "boolean" + }, + "is_default_fleet_server": { + "type": "boolean" + }, + "is_managed": { + "type": "boolean" + }, + "monitoring_enabled": { + "index": false, + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "package_policies": { + "type": "keyword" + }, + "revision": { + "type": "integer" + }, + "status": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "ingest-outputs": { + "properties": { + "ca_sha256": { + "index": false, + "type": "keyword" + }, + "config": { + "type": "flattened" + }, + "config_yaml": { + "type": "text" + }, + "fleet_enroll_password": { + "type": "binary" + }, + "fleet_enroll_username": { + "type": "binary" + }, + "hosts": { + "type": "keyword" + }, + "is_default": { + "type": "boolean" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "ingest-package-policies": { + "properties": { + "created_at": { + "type": "date" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "enabled": { + "type": "boolean" + }, + "inputs": { + "enabled": false, + "properties": { + "compiled_input": { + "type": "flattened" + }, + "config": { + "type": "flattened" + }, + "enabled": { + "type": "boolean" + }, + "streams": { + "properties": { + "compiled_stream": { + "type": "flattened" + }, + "config": { + "type": "flattened" + }, + "data_stream": { + "properties": { + "dataset": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "enabled": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "vars": { + "type": "flattened" + } + }, + "type": "nested" + }, + "type": { + "type": "keyword" + }, + "vars": { + "type": "flattened" + } + }, + "type": "nested" + }, + "name": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "output_id": { + "type": "keyword" + }, + "package": { + "properties": { + "name": { + "type": "keyword" + }, + "title": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "policy_id": { + "type": "keyword" + }, + "revision": { + "type": "integer" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "ingest_manager_settings": { + "properties": { + "has_seen_add_data_notice": { + "index": false, + "type": "boolean" + }, + "kibana_ca_sha256": { + "type": "keyword" + }, + "kibana_urls": { + "type": "keyword" + } + } + }, + "inventory-view": { + "dynamic": "false", + "type": "object" + }, + "kql-telemetry": { + "properties": { + "optInCount": { + "type": "long" + }, + "optOutCount": { + "type": "long" + } + } + }, + "legacy-url-alias": { + "dynamic": "false", + "type": "object" + }, + "lens": { + "properties": { + "description": { + "type": "text" + }, + "expression": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "state": { + "type": "flattened" + }, + "title": { + "type": "text" + }, + "visualizationType": { + "type": "keyword" + } + } + }, + "lens-ui-telemetry": { + "properties": { + "count": { + "type": "integer" + }, + "date": { + "type": "date" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "map": { + "properties": { + "bounds": { + "dynamic": "false", + "type": "object" + }, + "description": { + "type": "text" + }, + "layerListJSON": { + "type": "text" + }, + "mapStateJSON": { + "type": "text" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "maps-telemetry": { + "enabled": false, + "type": "object" + }, + "metrics-explorer-view": { + "dynamic": "false", + "type": "object" + }, + "migrationVersion": { + "dynamic": "true", + "properties": { + "config": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "dashboard": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "index-pattern": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "visualization": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "ml-job": { + "properties": { + "datafeed_id": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "job_id": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "ml-module": { + "dynamic": "false", + "properties": { + "datafeeds": { + "type": "object" + }, + "defaultIndexPattern": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "description": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "jobs": { + "type": "object" + }, + "logo": { + "type": "object" + }, + "query": { + "type": "object" + }, + "title": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "monitoring-telemetry": { + "properties": { + "reportedClusterUuids": { + "type": "keyword" + } + } + }, + "namespace": { + "type": "keyword" + }, + "namespaces": { + "type": "keyword" + }, + "originId": { + "type": "keyword" + }, + "query": { + "properties": { + "description": { + "type": "text" + }, + "filters": { + "enabled": false, + "type": "object" + }, + "query": { + "properties": { + "language": { + "type": "keyword" + }, + "query": { + "index": false, + "type": "keyword" + } + } + }, + "timefilter": { + "enabled": false, + "type": "object" + }, + "title": { + "type": "text" + } + } + }, + "references": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "sample-data-telemetry": { + "properties": { + "installCount": { + "type": "long" + }, + "unInstallCount": { + "type": "long" + } + } + }, + "search": { + "properties": { + "columns": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "description": { + "type": "text" + }, + "grid": { + "enabled": false, + "type": "object" + }, + "hideChart": { + "doc_values": false, + "index": false, + "type": "boolean" + }, + "hits": { + "doc_values": false, + "index": false, + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "index": false, + "type": "text" + } + } + }, + "sort": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "search-session": { + "properties": { + "appId": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "expires": { + "type": "date" + }, + "idMapping": { + "enabled": false, + "type": "object" + }, + "initialState": { + "enabled": false, + "type": "object" + }, + "name": { + "type": "keyword" + }, + "persisted": { + "type": "boolean" + }, + "realmName": { + "type": "keyword" + }, + "realmType": { + "type": "keyword" + }, + "restoreState": { + "enabled": false, + "type": "object" + }, + "sessionId": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "touched": { + "type": "date" + }, + "urlGeneratorId": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "search-telemetry": { + "dynamic": "false", + "type": "object" + }, + "security-solution-signals-migration": { + "properties": { + "created": { + "index": false, + "type": "date" + }, + "createdBy": { + "index": false, + "type": "text" + }, + "destinationIndex": { + "index": false, + "type": "keyword" + }, + "error": { + "index": false, + "type": "text" + }, + "sourceIndex": { + "type": "keyword" + }, + "status": { + "index": false, + "type": "keyword" + }, + "taskId": { + "index": false, + "type": "keyword" + }, + "updated": { + "index": false, + "type": "date" + }, + "updatedBy": { + "index": false, + "type": "text" + }, + "version": { + "type": "long" + } + } + }, + "server": { + "dynamic": "false", + "type": "object" + }, + "siem-detection-engine-rule-actions": { + "properties": { + "actions": { + "properties": { + "action_type_id": { + "type": "keyword" + }, + "group": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "params": { + "enabled": false, + "type": "object" + } + } + }, + "alertThrottle": { + "type": "keyword" + }, + "ruleAlertId": { + "type": "keyword" + }, + "ruleThrottle": { + "type": "keyword" + } + } + }, + "siem-detection-engine-rule-status": { + "properties": { + "alertId": { + "type": "keyword" + }, + "bulkCreateTimeDurations": { + "type": "float" + }, + "gap": { + "type": "text" + }, + "lastFailureAt": { + "type": "date" + }, + "lastFailureMessage": { + "type": "text" + }, + "lastLookBackDate": { + "type": "date" + }, + "lastSuccessAt": { + "type": "date" + }, + "lastSuccessMessage": { + "type": "text" + }, + "searchAfterTimeDurations": { + "type": "float" + }, + "status": { + "type": "keyword" + }, + "statusDate": { + "type": "date" + } + } + }, + "siem-ui-timeline": { + "properties": { + "columns": { + "properties": { + "aggregatable": { + "type": "boolean" + }, + "category": { + "type": "keyword" + }, + "columnHeaderType": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "example": { + "type": "text" + }, + "id": { + "type": "keyword" + }, + "indexes": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "placeholder": { + "type": "text" + }, + "searchable": { + "type": "boolean" + }, + "type": { + "type": "keyword" + } + } + }, + "created": { + "type": "date" + }, + "createdBy": { + "type": "text" + }, + "dataProviders": { + "properties": { + "and": { + "properties": { + "enabled": { + "type": "boolean" + }, + "excluded": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "kqlQuery": { + "type": "text" + }, + "name": { + "type": "text" + }, + "queryMatch": { + "properties": { + "displayField": { + "type": "text" + }, + "displayValue": { + "type": "text" + }, + "field": { + "type": "text" + }, + "operator": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "type": { + "type": "text" + } + } + }, + "enabled": { + "type": "boolean" + }, + "excluded": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "kqlQuery": { + "type": "text" + }, + "name": { + "type": "text" + }, + "queryMatch": { + "properties": { + "displayField": { + "type": "text" + }, + "displayValue": { + "type": "text" + }, + "field": { + "type": "text" + }, + "operator": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "type": { + "type": "text" + } + } + }, + "dateRange": { + "properties": { + "end": { + "type": "date" + }, + "start": { + "type": "date" } } - } - } - }, - "dashboard": { - "properties": { + }, "description": { "type": "text" }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { + "eqlOptions": { "properties": { - "searchSourceJSON": { + "eventCategoryField": { + "type": "text" + }, + "query": { + "type": "text" + }, + "size": { + "type": "text" + }, + "tiebreakerField": { + "type": "text" + }, + "timestampField": { "type": "text" } } }, - "optionsJSON": { + "eventType": { + "type": "keyword" + }, + "excludedRowRendererIds": { "type": "text" }, - "panelsJSON": { + "favorite": { + "properties": { + "favoriteDate": { + "type": "date" + }, + "fullName": { + "type": "text" + }, + "keySearch": { + "type": "text" + }, + "userName": { + "type": "text" + } + } + }, + "filters": { + "properties": { + "exists": { + "type": "text" + }, + "match_all": { + "type": "text" + }, + "meta": { + "properties": { + "alias": { + "type": "text" + }, + "controlledBy": { + "type": "text" + }, + "disabled": { + "type": "boolean" + }, + "field": { + "type": "text" + }, + "formattedValue": { + "type": "text" + }, + "index": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "negate": { + "type": "boolean" + }, + "params": { + "type": "text" + }, + "type": { + "type": "keyword" + }, + "value": { + "type": "text" + } + } + }, + "missing": { + "type": "text" + }, + "query": { + "type": "text" + }, + "range": { + "type": "text" + }, + "script": { + "type": "text" + } + } + }, + "indexNames": { "type": "text" }, - "refreshInterval": { + "kqlMode": { + "type": "keyword" + }, + "kqlQuery": { "properties": { - "display": { + "filterQuery": { + "properties": { + "kuery": { + "properties": { + "expression": { + "type": "text" + }, + "kind": { + "type": "keyword" + } + } + }, + "serializedQuery": { + "type": "text" + } + } + } + } + }, + "savedQueryId": { + "type": "keyword" + }, + "sort": { + "dynamic": "false", + "properties": { + "columnId": { "type": "keyword" }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" + "columnType": { + "type": "keyword" }, - "value": { - "type": "integer" + "sortDirection": { + "type": "keyword" } } }, - "timeFrom": { + "status": { "type": "keyword" }, - "timeRestore": { - "type": "boolean" + "templateTimelineId": { + "type": "text" }, - "timeTo": { + "templateTimelineVersion": { + "type": "integer" + }, + "timelineType": { "type": "keyword" }, "title": { "type": "text" }, - "uiStateJSON": { - "type": "text" + "updated": { + "type": "date" }, - "version": { - "type": "integer" + "updatedBy": { + "type": "text" } } }, - "index-pattern": { + "siem-ui-timeline-note": { "properties": { - "fieldFormatMap": { + "created": { + "type": "date" + }, + "createdBy": { "type": "text" }, - "fields": { + "eventId": { + "type": "keyword" + }, + "note": { "type": "text" }, - "intervalName": { + "timelineId": { "type": "keyword" }, - "notExpandable": { - "type": "boolean" + "updated": { + "type": "date" + }, + "updatedBy": { + "type": "text" + } + } + }, + "siem-ui-timeline-pinned-event": { + "properties": { + "created": { + "type": "date" }, - "sourceFilters": { + "createdBy": { "type": "text" }, - "timeFieldName": { + "eventId": { "type": "keyword" }, - "title": { + "timelineId": { + "type": "keyword" + }, + "updated": { + "type": "date" + }, + "updatedBy": { "type": "text" } } }, - "search": { + "space": { "properties": { - "columns": { + "_reserved": { + "type": "boolean" + }, + "color": { "type": "keyword" }, "description": { "type": "text" }, - "hits": { - "type": "integer" + "disabledFeatures": { + "type": "keyword" }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } + "imageUrl": { + "index": false, + "type": "text" }, - "sort": { + "initials": { "type": "keyword" }, - "title": { + "name": { + "fields": { + "keyword": { + "ignore_above": 2048, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "spaces-usage-stats": { + "dynamic": "false", + "type": "object" + }, + "tag": { + "properties": { + "color": { "type": "text" }, - "version": { - "type": "integer" + "description": { + "type": "text" + }, + "name": { + "type": "text" } } }, - "server": { + "telemetry": { "properties": { - "uuid": { + "allowChangingOptInStatus": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "lastReported": { + "type": "date" + }, + "lastVersionChecked": { + "type": "keyword" + }, + "reportFailureCount": { + "type": "integer" + }, + "reportFailureVersion": { + "type": "keyword" + }, + "sendUsageFrom": { "type": "keyword" + }, + "userHasSeenNotice": { + "type": "boolean" } } }, @@ -187,28 +2652,147 @@ } } }, - "namespace": { + "type": { "type": "keyword" }, - "references": { + "ui-counter": { "properties": { - "id": { - "type": "keyword" + "count": { + "type": "integer" + } + } + }, + "ui-metric": { + "properties": { + "count": { + "type": "integer" + } + } + }, + "updated_at": { + "type": "date" + }, + "upgrade-assistant-reindex-operation": { + "properties": { + "errorMessage": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" }, - "name": { + "indexName": { "type": "keyword" }, - "type": { - "type": "keyword" + "lastCompletedStep": { + "type": "long" + }, + "locked": { + "type": "date" + }, + "newIndexName": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "reindexOptions": { + "properties": { + "openAndClose": { + "type": "boolean" + }, + "queueSettings": { + "properties": { + "queuedAt": { + "type": "long" + }, + "startedAt": { + "type": "long" + } + } + } + } + }, + "reindexTaskId": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "reindexTaskPercComplete": { + "type": "float" + }, + "runningReindexCount": { + "type": "integer" + }, + "status": { + "type": "integer" } - }, - "type": "nested" + } }, - "type": { - "type": "keyword" + "upgrade-assistant-telemetry": { + "properties": { + "features": { + "properties": { + "deprecation_logging": { + "properties": { + "enabled": { + "null_value": true, + "type": "boolean" + } + } + } + } + }, + "ui_open": { + "properties": { + "cluster": { + "null_value": 0, + "type": "long" + }, + "indices": { + "null_value": 0, + "type": "long" + }, + "overview": { + "null_value": 0, + "type": "long" + } + } + }, + "ui_reindex": { + "properties": { + "close": { + "null_value": 0, + "type": "long" + }, + "open": { + "null_value": 0, + "type": "long" + }, + "start": { + "null_value": 0, + "type": "long" + }, + "stop": { + "null_value": 0, + "type": "long" + } + } + } + } }, - "updated_at": { - "type": "date" + "uptime-dynamic-settings": { + "dynamic": "false", + "type": "object" }, "url": { "properties": { @@ -222,13 +2806,13 @@ "type": "date" }, "url": { - "type": "text", "fields": { "keyword": { - "type": "keyword", - "ignore_above": 2048 + "ignore_above": 2048, + "type": "keyword" } - } + }, + "type": "text" } } }, @@ -240,28 +2824,43 @@ "kibanaSavedObjectMeta": { "properties": { "searchSourceJSON": { + "index": false, "type": "text" } } }, - "savedSearchId": { + "savedSearchRefName": { + "doc_values": false, + "index": false, "type": "keyword" }, "title": { "type": "text" }, "uiStateJSON": { + "index": false, "type": "text" }, "version": { "type": "integer" }, "visState": { + "index": false, "type": "text" } } + }, + "workplace_search_telemetry": { + "dynamic": "false", + "type": "object" } } + }, + "settings": { + "index": { + "number_of_replicas": "0", + "number_of_shards": "1" + } } } -} +} \ No newline at end of file diff --git a/test/common/services/deployment.ts b/test/common/services/deployment.ts index 4f7baf69d5d1e..b250d39ce65d6 100644 --- a/test/common/services/deployment.ts +++ b/test/common/services/deployment.ts @@ -29,14 +29,6 @@ export class DeploymentService extends FtrService { return getUrl.baseUrl(this.config.get('servers.elasticsearch')); } - /** - * Helper to detect an OSS licensed Kibana - * Useful for functional testing in cloud environment - */ - async isOss() { - return this.config.get('kbnTestServer.serverArgs').indexOf('--oss') > -1; - } - async isCloud(): Promise { const baseUrl = this.getHostPort(); const username = this.config.get('servers.kibana.username'); diff --git a/test/examples/expressions_explorer/expressions.ts b/test/examples/expressions_explorer/expressions.ts index 39afa177501d5..4c240653b5fdd 100644 --- a/test/examples/expressions_explorer/expressions.ts +++ b/test/examples/expressions_explorer/expressions.ts @@ -22,7 +22,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) { await retry.try(async () => { const text = await testSubjects.getVisibleText('expressionResult'); expect(text).to.be( - '{\n "type": "error",\n "error": {\n "message": "Function markdown could not be found.",\n "name": "fn not found"\n }\n}' + '{\n "type": "render",\n "as": "markdown",\n "value": {\n "content": "## expressions explorer",\n "font": {\n "type": "style",\n "spec": {\n "fontFamily": "\'Open Sans\', Helvetica, Arial, sans-serif",\n "fontWeight": "normal",\n "fontStyle": "normal",\n "textDecoration": "none",\n "textAlign": "left",\n "fontSize": "14px",\n "lineHeight": "1"\n },\n "css": "font-family:\'Open Sans\', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;font-size:14px;line-height:1"\n },\n "openLinksInNewTab": false\n }\n}' ); }); }); @@ -30,7 +30,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) { it('renders expression', async () => { await retry.try(async () => { const text = await testSubjects.getVisibleText('expressionRender'); - expect(text).to.be('Function markdown could not be found.'); + expect(text).to.be('expressions explorer rendering'); }); }); diff --git a/test/functional/apps/home/_home.js b/test/functional/apps/home/_home.js index 056f3ec6f993c..24e672463964d 100644 --- a/test/functional/apps/home/_home.js +++ b/test/functional/apps/home/_home.js @@ -11,6 +11,7 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const browser = getService('browser'); const globalNav = getService('globalNav'); + const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects(['common', 'header', 'home']); describe('Kibana takes you home', function describeIndexTests() { @@ -25,7 +26,8 @@ export default function ({ getService, getPageObjects }) { }); it('clicking on console on homepage should take you to console app', async () => { - await PageObjects.home.clickSynopsis('console'); + await PageObjects.common.navigateToUrl('home'); + await testSubjects.click('homeDevTools'); const url = await browser.getCurrentUrl(); expect(url.includes('/app/dev_tools#/console')).to.be(true); }); diff --git a/test/functional/apps/home/_newsfeed.ts b/test/functional/apps/home/_newsfeed.ts index 449aeea013341..5b8b5a22cf439 100644 --- a/test/functional/apps/home/_newsfeed.ts +++ b/test/functional/apps/home/_newsfeed.ts @@ -11,7 +11,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const globalNav = getService('globalNav'); - const deployment = getService('deployment'); const PageObjects = getPageObjects(['newsfeed']); describe('Newsfeed', () => { @@ -38,16 +37,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('shows all news from newsfeed', async () => { const objects = await PageObjects.newsfeed.getNewsfeedList(); - if (await deployment.isOss()) { - expect(objects).to.eql([ - '21 June 2019\nYou are functionally testing the newsfeed widget with fixtures!\nSee test/common/fixtures/plugins/newsfeed/newsfeed_simulation\nGeneric feed-viewer could go here', - '21 June 2019\nStaging too!\nHello world\nGeneric feed-viewer could go here', - ]); - } else { - // can't shim the API in cloud so going to check that at least something is rendered - // to test that the API was called and returned something that could be rendered - expect(objects.length).to.be.above(0); - } + // can't shim the API in cloud so going to check that at least something is rendered + // to test that the API was called and returned something that could be rendered + expect(objects.length).to.be.above(0); }); it('clicking on newsfeed icon should close opened newsfeed', async () => { diff --git a/test/functional/apps/management/_scripted_fields.js b/test/functional/apps/management/_scripted_fields.js index fdbc419c16241..c7a4c8c51bf44 100644 --- a/test/functional/apps/management/_scripted_fields.js +++ b/test/functional/apps/management/_scripted_fields.js @@ -27,7 +27,6 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - const deployment = getService('deployment'); const log = getService('log'); const browser = getService('browser'); const retry = getService('retry'); @@ -187,16 +186,14 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await filterBar.removeAllFilters(); - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'Average of ram_Pain1' - ); - } + await filterBar.removeAllFilters(); + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + '@timestamp', + 'Median of ram_Pain1' + ); }); }); @@ -277,15 +274,12 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'Top values of painString' - ); - } + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + 'Top values of painString' + ); }); }); @@ -367,15 +361,12 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'Top values of painBool' - ); - } + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + 'Top values of painBool' + ); }); }); @@ -460,15 +451,10 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'painDate' - ); - } + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain('painDate'); }); }); }); diff --git a/test/functional/apps/visualize/_chart_types.ts b/test/functional/apps/visualize/_chart_types.ts index 4ee6e3dac21b6..71bdc75d41d9c 100644 --- a/test/functional/apps/visualize/_chart_types.ts +++ b/test/functional/apps/visualize/_chart_types.ts @@ -35,6 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visualize.clickAggBasedVisualizations(); const expectedChartTypes = [ 'Area', + 'Coordinate Map', 'Data table', 'Gauge', 'Goal', @@ -43,6 +44,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'Line', 'Metric', 'Pie', + 'Region Map', 'Tag cloud', 'Timelion', 'Vertical bar', diff --git a/test/functional/apps/visualize/_tile_map.ts b/test/functional/apps/visualize/_tile_map.ts index 3af467affa1fb..719c2c48761f9 100644 --- a/test/functional/apps/visualize/_tile_map.ts +++ b/test/functional/apps/visualize/_tile_map.ts @@ -125,26 +125,26 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('Fit data bounds should zoom to level 3', async function () { const expectedPrecision2DataTable = [ - ['-', 'dr4', '127', { lat: 40, lon: -76 }], - ['-', 'dr7', '92', { lat: 41, lon: -74 }], - ['-', '9q5', '91', { lat: 34, lon: -119 }], - ['-', '9qc', '89', { lat: 38, lon: -122 }], - ['-', 'drk', '87', { lat: 41, lon: -73 }], - ['-', 'dps', '82', { lat: 42, lon: -84 }], - ['-', 'dph', '82', { lat: 40, lon: -84 }], - ['-', 'dp3', '79', { lat: 41, lon: -88 }], - ['-', 'dpe', '78', { lat: 42, lon: -86 }], - ['-', 'dp8', '77', { lat: 43, lon: -90 }], - ['-', 'dp6', '74', { lat: 41, lon: -87 }], - ['-', 'djv', '74', { lat: 33, lon: -83 }], - ['-', '9qh', '74', { lat: 34, lon: -118 }], - ['-', 'dpq', '73', { lat: 41, lon: -81 }], - ['-', 'dpp', '73', { lat: 40, lon: -80 }], - ['-', '9y7', '73', { lat: 35, lon: -97 }], - ['-', '9vg', '73', { lat: 32, lon: -97 }], - ['-', 'drs', '71', { lat: 42, lon: -73 }], - ['-', '9ys', '71', { lat: 37, lon: -95 }], - ['-', '9yn', '71', { lat: 34, lon: -93 }], + ['-', 'dn', '1,429', { lat: 36, lon: -85 }], + ['-', 'dp', '1,418', { lat: 41, lon: -85 }], + ['-', '9y', '1,215', { lat: 36, lon: -96 }], + ['-', '9z', '1,099', { lat: 42, lon: -96 }], + ['-', 'dr', '1,076', { lat: 42, lon: -74 }], + ['-', 'dj', '982', { lat: 31, lon: -85 }], + ['-', '9v', '938', { lat: 31, lon: -96 }], + ['-', '9q', '722', { lat: 36, lon: -120 }], + ['-', '9w', '475', { lat: 36, lon: -107 }], + ['-', 'cb', '457', { lat: 46, lon: -96 }], + ['-', 'c2', '453', { lat: 47, lon: -120 }], + ['-', '9x', '420', { lat: 41, lon: -107 }], + ['-', 'dq', '399', { lat: 37, lon: -78 }], + ['-', '9r', '396', { lat: 41, lon: -120 }], + ['-', '9t', '274', { lat: 32, lon: -107 }], + ['-', 'c8', '271', { lat: 47, lon: -107 }], + ['-', 'dh', '214', { lat: 26, lon: -82 }], + ['-', 'b6', '207', { lat: 60, lon: -162 }], + ['-', 'bd', '206', { lat: 59, lon: -153 }], + ['-', 'b7', '167', { lat: 64, lon: -163 }], ]; await PageObjects.tileMap.clickMapFitDataBounds(); diff --git a/test/functional/apps/visualize/index.ts b/test/functional/apps/visualize/index.ts index 3702fe6bf64a3..940648e998dcc 100644 --- a/test/functional/apps/visualize/index.ts +++ b/test/functional/apps/visualize/index.ts @@ -14,8 +14,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { const log = getService('log'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - const deployment = getService('deployment'); - let isOss = true; describe('visualize app', () => { before(async () => { @@ -28,7 +26,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { defaultIndex: 'logstash-*', [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', }); - isOss = await deployment.isOss(); }); // TODO: Remove when vislib is removed @@ -66,11 +63,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_data_table')); loadTestFile(require.resolve('./_data_table_nontimeindex')); loadTestFile(require.resolve('./_data_table_notimeindex_filters')); - - // this check is not needed when the CI doesn't run anymore for the OSS - if (!isOss) { - loadTestFile(require.resolve('./_chart_types')); - } + loadTestFile(require.resolve('./_chart_types')); }); describe('', function () { @@ -98,11 +91,8 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_linked_saved_searches')); loadTestFile(require.resolve('./_visualize_listing')); loadTestFile(require.resolve('./_add_to_dashboard.ts')); - - if (isOss) { - loadTestFile(require.resolve('./_tile_map')); - loadTestFile(require.resolve('./_region_map')); - } + loadTestFile(require.resolve('./_tile_map')); + loadTestFile(require.resolve('./_region_map')); }); describe('', function () { diff --git a/test/functional/config.js b/test/functional/config.js index 1048bd72dc575..4a6791a3bc62f 100644 --- a/test/functional/config.js +++ b/test/functional/config.js @@ -14,6 +14,7 @@ export default async function ({ readConfigFile }) { return { testFiles: [ + require.resolve('./apps/status_page'), require.resolve('./apps/bundles'), require.resolve('./apps/console'), require.resolve('./apps/context'), @@ -23,7 +24,6 @@ export default async function ({ readConfigFile }) { require.resolve('./apps/home'), require.resolve('./apps/management'), require.resolve('./apps/saved_objects_management'), - require.resolve('./apps/status_page'), require.resolve('./apps/timelion'), require.resolve('./apps/visualize'), ], @@ -36,13 +36,15 @@ export default async function ({ readConfigFile }) { ...commonConfig.get('esTestCluster'), serverArgs: ['xpack.security.enabled=false'], }, + kbnTestServer: { ...commonConfig.get('kbnTestServer'), serverArgs: [ ...commonConfig.get('kbnTestServer.serverArgs'), - '--oss', '--telemetry.optIn=false', + '--xpack.security.enabled=false', '--savedObjects.maxImportPayloadBytes=10485760', + '--xpack.maps.showMapVisualizationTypes=true', ], }, diff --git a/test/functional/page_objects/home_page.ts b/test/functional/page_objects/home_page.ts index 05f7fb7eecb3d..f03f74ef8c61d 100644 --- a/test/functional/page_objects/home_page.ts +++ b/test/functional/page_objects/home_page.ts @@ -12,9 +12,7 @@ export function HomePageProvider({ getService, getPageObjects }: FtrProviderCont const testSubjects = getService('testSubjects'); const retry = getService('retry'); const find = getService('find'); - const deployment = getService('deployment'); const PageObjects = getPageObjects(['common']); - let isOss = true; class HomePage { async clickSynopsis(title: string) { @@ -72,10 +70,7 @@ export function HomePageProvider({ getService, getPageObjects }: FtrProviderCont async launchSampleDashboard(id: string) { await this.launchSampleDataSet(id); - isOss = await deployment.isOss(); - if (!isOss) { - await find.clickByLinkText('Dashboard'); - } + await find.clickByLinkText('Dashboard'); } async launchSampleDataSet(id: string) { diff --git a/test/scripts/jenkins_build_kibana.sh b/test/scripts/jenkins_build_kibana.sh index 95c619423d313..6494ade2e72a7 100755 --- a/test/scripts/jenkins_build_kibana.sh +++ b/test/scripts/jenkins_build_kibana.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash +cd "$KIBANA_DIR" source src/dev/ci_setup/setup_env.sh if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then @@ -12,13 +13,30 @@ export KBN_NP_PLUGINS_BUILT=true echo " -> Ensuring all functional tests are in a ciGroup" node scripts/ensure_all_tests_in_ci_group; -echo " -> building and extracting OSS Kibana distributable for use in functional tests" -node scripts/build --debug --oss +echo " -> Ensuring all x-pack functional tests are in a ciGroup" +node x-pack/scripts/functional_tests --assert-none-excluded \ + --include-tag ciGroup1 \ + --include-tag ciGroup2 \ + --include-tag ciGroup3 \ + --include-tag ciGroup4 \ + --include-tag ciGroup5 \ + --include-tag ciGroup6 \ + --include-tag ciGroup7 \ + --include-tag ciGroup8 \ + --include-tag ciGroup9 \ + --include-tag ciGroup10 \ + --include-tag ciGroup11 \ + --include-tag ciGroup12 \ + --include-tag ciGroup13 \ + --include-tag ciGroupDocker + +echo " -> building and extracting default Kibana distributable for use in functional tests" +node scripts/build --debug --no-oss echo " -> shipping metrics from build to ci-stats" node scripts/ship_ci_stats \ --metrics target/optimizer_bundle_metrics.json \ --metrics packages/kbn-ui-shared-deps/target/metrics.json -mkdir -p "$WORKSPACE/kibana-build-oss" -cp -pR build/oss/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build-oss/ +mkdir -p "$WORKSPACE/kibana-build" +cp -pR build/oss/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build/ diff --git a/test/scripts/jenkins_build_load_testing.sh b/test/scripts/jenkins_build_load_testing.sh index 659321f1d3975..5447b9e7c3092 100755 --- a/test/scripts/jenkins_build_load_testing.sh +++ b/test/scripts/jenkins_build_load_testing.sh @@ -26,8 +26,8 @@ installDir="$KIBANA_DIR/install/kibana" mkdir -p "$installDir" tar -xzf "$linuxBuild" -C "$installDir" --strip=1 -mkdir -p "$WORKSPACE/kibana-build-xpack" -cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ +mkdir -p "$WORKSPACE/kibana-build" +cp -pR install/kibana/. $WORKSPACE/kibana-build/ echo " -> test setup" source test/scripts/jenkins_test_setup_xpack.sh diff --git a/test/scripts/jenkins_build_plugins.sh b/test/scripts/jenkins_build_plugins.sh index a3d77ed968169..7e102e67bb8e0 100755 --- a/test/scripts/jenkins_build_plugins.sh +++ b/test/scripts/jenkins_build_plugins.sh @@ -4,9 +4,18 @@ source src/dev/ci_setup/setup_env.sh echo " -> building kibana platform plugins" node scripts/build_kibana_platform_plugins \ - --oss \ --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ --scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \ --scan-dir "$KIBANA_DIR/examples" \ - --workers 6 \ - --verbose + --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ + --scan-dir "$KIBANA_DIR/test/common/fixtures/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_functional/plugins" \ + --scan-dir "$XPACK_DIR/test/functional_with_es_ssl/fixtures/plugins" \ + --scan-dir "$XPACK_DIR/test/alerting_api_integration/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_api_integration/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_api_perf/plugins" \ + --scan-dir "$XPACK_DIR/test/licensing_plugin/plugins" \ + --scan-dir "$XPACK_DIR/test/usage_collection/plugins" \ + --scan-dir "$XPACK_DIR/test/security_functional/fixtures/common" \ + --scan-dir "$XPACK_DIR/examples" \ + --workers 12 diff --git a/test/scripts/jenkins_test_setup_oss.sh b/test/scripts/jenkins_test_setup_oss.sh index 53626ce89462a..29d396667c465 100755 --- a/test/scripts/jenkins_test_setup_oss.sh +++ b/test/scripts/jenkins_test_setup_oss.sh @@ -3,11 +3,11 @@ source test/scripts/jenkins_test_setup.sh if [[ -z "$CODE_COVERAGE" ]]; then - destDir="$WORKSPACE/kibana-build-oss-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" + destDir="$WORKSPACE/kibana-build-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" if [[ ! -d $destDir ]]; then mkdir -p $destDir - cp -pR "$WORKSPACE/kibana-build-oss/." $destDir/ + cp -pR "$WORKSPACE/kibana-build/." $destDir/ fi export KIBANA_INSTALL_DIR="$destDir" diff --git a/test/scripts/jenkins_test_setup_xpack.sh b/test/scripts/jenkins_test_setup_xpack.sh index b9227fd8ff416..31acc4f4865e2 100755 --- a/test/scripts/jenkins_test_setup_xpack.sh +++ b/test/scripts/jenkins_test_setup_xpack.sh @@ -3,11 +3,11 @@ source test/scripts/jenkins_test_setup.sh if [[ -z "$CODE_COVERAGE" ]]; then - destDir="$WORKSPACE/kibana-build-xpack-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" + destDir="$WORKSPACE/kibana-build-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" if [[ ! -d $destDir ]]; then mkdir -p $destDir - cp -pR "$WORKSPACE/kibana-build-xpack/." $destDir/ + cp -pR "$WORKSPACE/kibana-build/." $destDir/ fi export KIBANA_INSTALL_DIR="$(realpath $destDir)" diff --git a/test/scripts/jenkins_xpack_baseline.sh b/test/scripts/jenkins_xpack_baseline.sh index 2755a6e0a705d..93363687b39a9 100755 --- a/test/scripts/jenkins_xpack_baseline.sh +++ b/test/scripts/jenkins_xpack_baseline.sh @@ -17,8 +17,8 @@ installDir="$KIBANA_DIR/install/kibana" mkdir -p "$installDir" tar -xzf "$linuxBuild" -C "$installDir" --strip=1 -mkdir -p "$WORKSPACE/kibana-build-xpack" -cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ +mkdir -p "$WORKSPACE/kibana-build" +cp -pR install/kibana/. $WORKSPACE/kibana-build/ cd "$KIBANA_DIR" source "test/scripts/jenkins_xpack_saved_objects_field_metrics.sh" diff --git a/test/scripts/jenkins_xpack_build_kibana.sh b/test/scripts/jenkins_xpack_build_kibana.sh deleted file mode 100755 index 8cdeb2a04a362..0000000000000 --- a/test/scripts/jenkins_xpack_build_kibana.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env bash - -cd "$KIBANA_DIR" -source src/dev/ci_setup/setup_env.sh - -if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then - ./test/scripts/jenkins_xpack_build_plugins.sh -fi - -# doesn't persist, also set in kibanaPipeline.groovy -export KBN_NP_PLUGINS_BUILT=true - -echo " -> Ensuring all functional tests are in a ciGroup" -cd "$XPACK_DIR" -node scripts/functional_tests --assert-none-excluded \ - --include-tag ciGroup1 \ - --include-tag ciGroup2 \ - --include-tag ciGroup3 \ - --include-tag ciGroup4 \ - --include-tag ciGroup5 \ - --include-tag ciGroup6 \ - --include-tag ciGroup7 \ - --include-tag ciGroup8 \ - --include-tag ciGroup9 \ - --include-tag ciGroup10 \ - --include-tag ciGroup11 \ - --include-tag ciGroup12 \ - --include-tag ciGroup13 \ - --include-tag ciGroupDocker - -echo " -> building and extracting default Kibana distributable for use in functional tests" -cd "$KIBANA_DIR" -node scripts/build --debug --no-oss - -echo " -> shipping metrics from build to ci-stats" -node scripts/ship_ci_stats \ - --metrics target/optimizer_bundle_metrics.json \ - --metrics packages/kbn-ui-shared-deps/target/metrics.json - -linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')" -installDir="$KIBANA_DIR/install/kibana" -mkdir -p "$installDir" -tar -xzf "$linuxBuild" -C "$installDir" --strip=1 - -mkdir -p "$WORKSPACE/kibana-build-xpack" -cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ -cp "$linuxBuild" "$WORKSPACE/kibana-default.tar.gz" - -mkdir -p "$WORKSPACE/kibana-build-xpack" -cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ - -echo " -> Archive built plugins" -shopt -s globstar -tar -zcf \ - "$WORKSPACE/kibana-default-plugins.tar.gz" \ - x-pack/plugins/**/target/public \ - x-pack/test/**/target/public \ - examples/**/target/public \ - x-pack/examples/**/target/public \ - test/**/target/public -shopt -u globstar diff --git a/test/server_integration/http/ssl_redirect/index.js b/test/server_integration/http/ssl_redirect/index.js index bcd1b6f25ea51..8abe700e26149 100644 --- a/test/server_integration/http/ssl_redirect/index.js +++ b/test/server_integration/http/ssl_redirect/index.js @@ -17,7 +17,7 @@ export default function ({ getService }) { await supertest.get('/').expect('location', url).expect(302); - await supertest.get('/').redirects(1).expect('location', '/app/home').expect(302); + await supertest.get('/').redirects(1).expect('location', '/spaces/enter').expect(302); }); }); } diff --git a/vars/kibanaPipeline.groovy b/vars/kibanaPipeline.groovy index 65e2945ea4464..4cd9308e810aa 100644 --- a/vars/kibanaPipeline.groovy +++ b/vars/kibanaPipeline.groovy @@ -286,33 +286,23 @@ def doSetup() { } } -def buildOss(maxWorkers = '') { - notifyOnError { - withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) { - runbld("./test/scripts/jenkins_build_kibana.sh", "Build OSS/Default Kibana") - } - } -} - def getBuildArtifactBucket() { def dir = env.ghprbPullId ? "pr-${env.ghprbPullId}" : buildState.get('checkoutInfo').branch.replace("/", "__") return "gs://ci-artifacts.kibana.dev/default-build/${dir}/${buildState.get('checkoutInfo').commit}" } -def buildXpack(maxWorkers = '', uploadArtifacts = false) { +def buildKibana(maxWorkers = '') { notifyOnError { withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) { - runbld("./test/scripts/jenkins_xpack_build_kibana.sh", "Build X-Pack Kibana") + runbld("./test/scripts/jenkins_build_kibana.sh", "Build Kibana") } - if (uploadArtifacts) { - withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') { - bash(""" - cd "${env.WORKSPACE}" - gsutil -q -m cp 'kibana-default.tar.gz' '${getBuildArtifactBucket()}/' - gsutil -q -m cp 'kibana-default-plugins.tar.gz' '${getBuildArtifactBucket()}/' - """, "Upload Default Build artifacts to GCS") - } + withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') { + bash(""" + cd "${env.WORKSPACE}" + gsutil -q -m cp 'kibana-default.tar.gz' '${getBuildArtifactBucket()}/' + gsutil -q -m cp 'kibana-default-plugins.tar.gz' '${getBuildArtifactBucket()}/' + """, "Upload Default Build artifacts to GCS") } } } @@ -426,14 +416,10 @@ def withDocker(Closure closure) { ) } -def buildOssPlugins() { +def buildPlugins() { runbld('./test/scripts/jenkins_build_plugins.sh', 'Build OSS Plugins') } -def buildXpackPlugins() { - runbld('./test/scripts/jenkins_xpack_build_plugins.sh', 'Build X-Pack Plugins') -} - def withTasks(Map params = [:], Closure closure) { catchErrors { def config = [setupWork: {}, worker: [:], parallel: 24] + params @@ -449,8 +435,7 @@ def withTasks(Map params = [:], Closure closure) { }, // There are integration tests etc that require the plugins to be built first, so let's go ahead and build them before set up the parallel workspaces - ossPlugins: { buildOssPlugins() }, - xpackPlugins: { buildXpackPlugins() }, + plugins: { buildPlugins() }, ]) config.setupWork() @@ -470,8 +455,11 @@ def allCiTasks() { tasks.check() tasks.lint() tasks.test() - tasks.functionalOss() - tasks.functionalXpack() + task { + buildKibana(16) + tasks.functionalOss() + tasks.functionalXpack() + } tasks.storybooksCi() } }, diff --git a/vars/tasks.groovy b/vars/tasks.groovy index 1d33fd1249681..e6061de2987ba 100644 --- a/vars/tasks.groovy +++ b/vars/tasks.groovy @@ -55,8 +55,8 @@ def xpackCiGroupDocker() { kibanaPipeline.downloadDefaultBuildArtifacts() kibanaPipeline.bash(""" cd '${env.WORKSPACE}' - mkdir -p kibana-build-xpack - tar -xzf kibana-default.tar.gz -C kibana-build-xpack --strip=1 + mkdir -p kibana-build + tar -xzf kibana-default.tar.gz -C kibana-build --strip=1 tar -xzf kibana-default-plugins.tar.gz -C kibana """, "Extract Default Build artifacts") kibanaPipeline.xpackCiGroupProcess('Docker', true)() @@ -75,8 +75,6 @@ def functionalOss(Map params = [:]) { ] task { - kibanaPipeline.buildOss(6) - if (config.ciGroups) { ossCiGroups() } @@ -115,8 +113,6 @@ def functionalXpack(Map params = [:]) { ] task { - kibanaPipeline.buildXpack(10, true) - if (config.ciGroups) { xpackCiGroups() xpackCiGroupDocker() From 88a4603afce61fe34eb4a6cc57d188e0cba7ac71 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Thu, 13 May 2021 15:20:44 -0700 Subject: [PATCH 2/6] Use default output Signed-off-by: Tyler Smalley --- test/scripts/jenkins_build_kibana.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/scripts/jenkins_build_kibana.sh b/test/scripts/jenkins_build_kibana.sh index 6494ade2e72a7..1bf0bc04efbc6 100755 --- a/test/scripts/jenkins_build_kibana.sh +++ b/test/scripts/jenkins_build_kibana.sh @@ -39,4 +39,4 @@ node scripts/ship_ci_stats \ --metrics packages/kbn-ui-shared-deps/target/metrics.json mkdir -p "$WORKSPACE/kibana-build" -cp -pR build/oss/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build/ +cp -pR build/default/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build/ From 04bfa4b16e4e3143bcca28cba7703ca269ef16e8 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Mon, 17 May 2021 15:59:31 -0700 Subject: [PATCH 3/6] [FTR] Use importExport for saved_object/basic archive Signed-off-by: Tyler Smalley --- .../kbn-test/src/kbn_client/kbn_client.ts | 12 +- .../kbn_client/kbn_client_import_export.ts | 15 + .../src/kbn_client/kbn_client_requester.ts | 2 + .../src/kbn_client/kbn_client_spaces.ts | 67 + src/dev/precommit_hook/casing_check_config.js | 1 + .../apis/kql_telemetry/kql_telemetry.ts | 6 +- .../apis/saved_objects/bulk_create.ts | 136 +- .../apis/saved_objects/bulk_get.ts | 173 +- .../apis/saved_objects/bulk_update.ts | 358 +- .../apis/saved_objects/create.ts | 121 +- .../apis/saved_objects/delete.ts | 65 +- .../apis/saved_objects/export.ts | 991 +++--- .../apis/saved_objects/find.ts | 664 ++-- .../api_integration/apis/saved_objects/get.ts | 101 +- .../apis/saved_objects/import.ts | 346 +- .../apis/saved_objects/resolve.ts | 32 +- .../saved_objects/resolve_import_errors.ts | 323 +- .../apis/saved_objects/update.ts | 274 +- .../apis/saved_objects_management/find.ts | 93 +- .../apis/saved_objects_management/get.ts | 52 +- .../saved_objects_management/relationships.ts | 10 +- test/api_integration/apis/shorten/index.js | 6 +- test/api_integration/apis/stats/stats.js | 6 +- test/api_integration/config.js | 1 + .../saved_objects/relationships/data.json | 190 -- .../saved_objects/relationships/mappings.json | 297 -- .../saved_objects/10k/data.json.gz | Bin 349146 -> 0 bytes .../saved_objects/10k/mappings.json | 253 -- .../saved_objects/basic/data.json.gz | Bin 2469 -> 0 bytes .../saved_objects/basic/mappings.json | 2866 ----------------- .../saved_objects/find_edgecases/data.json | 93 - .../find_edgecases/mappings.json | 267 -- .../saved_objects/references/data.json | 120 - .../saved_objects/references/mappings.json | 267 -- .../saved_objects/relationships.json | 200 ++ .../kbn_archiver/saved_objects/basic.json | 97 + .../saved_objects/basic/foo-ns.json | 97 + .../saved_objects/find_edgecases.json | 87 + .../saved_objects/references.json | 116 + .../kibana/kql_telemetry/kql_telemetry.js | 4 - 40 files changed, 2219 insertions(+), 6590 deletions(-) create mode 100644 packages/kbn-test/src/kbn_client/kbn_client_spaces.ts delete mode 100644 test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/data.json delete mode 100644 test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/mappings.json delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/10k/data.json.gz delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/10k/mappings.json delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/data.json delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/mappings.json delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/references/data.json delete mode 100644 test/api_integration/fixtures/es_archiver/saved_objects/references/mappings.json create mode 100644 test/api_integration/fixtures/kbn_archiver/management/saved_objects/relationships.json create mode 100644 test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json create mode 100644 test/api_integration/fixtures/kbn_archiver/saved_objects/basic/foo-ns.json create mode 100644 test/api_integration/fixtures/kbn_archiver/saved_objects/find_edgecases.json create mode 100644 test/api_integration/fixtures/kbn_archiver/saved_objects/references.json diff --git a/packages/kbn-test/src/kbn_client/kbn_client.ts b/packages/kbn-test/src/kbn_client/kbn_client.ts index 3fa74412c1a8b..867982b2a2991 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client.ts @@ -8,13 +8,14 @@ import { ToolingLog } from '@kbn/dev-utils'; -import { KbnClientRequester, ReqOptions } from './kbn_client_requester'; -import { KbnClientStatus } from './kbn_client_status'; +import { KbnClientImportExport } from './kbn_client_import_export'; import { KbnClientPlugins } from './kbn_client_plugins'; -import { KbnClientVersion } from './kbn_client_version'; +import { KbnClientRequester, ReqOptions } from './kbn_client_requester'; import { KbnClientSavedObjects } from './kbn_client_saved_objects'; +import { KbnClientSpaces } from './kbn_client_spaces'; +import { KbnClientStatus } from './kbn_client_status'; import { KbnClientUiSettings, UiSettingValues } from './kbn_client_ui_settings'; -import { KbnClientImportExport } from './kbn_client_import_export'; +import { KbnClientVersion } from './kbn_client_version'; export interface KbnClientOptions { url: string; @@ -29,6 +30,7 @@ export class KbnClient { readonly plugins: KbnClientPlugins; readonly version: KbnClientVersion; readonly savedObjects: KbnClientSavedObjects; + readonly spaces: KbnClientSpaces; readonly uiSettings: KbnClientUiSettings; readonly importExport: KbnClientImportExport; @@ -59,11 +61,13 @@ export class KbnClient { this.plugins = new KbnClientPlugins(this.status); this.version = new KbnClientVersion(this.status); this.savedObjects = new KbnClientSavedObjects(this.log, this.requester); + this.spaces = new KbnClientSpaces(this.requester); this.uiSettings = new KbnClientUiSettings(this.log, this.requester, this.uiSettingDefaults); this.importExport = new KbnClientImportExport( this.log, this.requester, this.savedObjects, + this.spaces, options.importExportDir ); } diff --git a/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts b/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts index fe67fbb70fa3c..5634cd24db5ca 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts @@ -15,6 +15,7 @@ import { ToolingLog, isAxiosResponseError, createFailError } from '@kbn/dev-util import { KbnClientRequester, uriencode, ReqOptions } from './kbn_client_requester'; import { KbnClientSavedObjects } from './kbn_client_saved_objects'; +import { KbnClientSpaces } from './kbn_client_spaces'; interface ImportApiResponse { success: boolean; @@ -39,6 +40,7 @@ export class KbnClientImportExport { public readonly log: ToolingLog, public readonly requester: KbnClientRequester, public readonly savedObjects: KbnClientSavedObjects, + private readonly spaces: KbnClientSpaces, public readonly dir?: string ) {} @@ -66,6 +68,19 @@ export class KbnClientImportExport { const formData = new FormData(); formData.append('file', objects.map((obj) => JSON.stringify(obj)).join('\n'), 'import.ndjson'); + if (options?.space) { + this.log.info('creating space', options.space); + + try { + await this.spaces.create({ + id: options.space, + name: options.space, + }); + } catch (e) { + this.log.warning('creating space failed:', e.message); + } + } + // TODO: should we clear out the existing saved objects? const resp = await this.req(options?.space, { method: 'POST', diff --git a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts index af75137d148e9..a194b593b3863 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts @@ -121,6 +121,8 @@ export class KbnClientRequester { responseType: options.responseType, // work around https://github.com/axios/axios/issues/2791 transformResponse: options.responseType === 'text' ? [(x) => x] : undefined, + maxContentLength: 30000000, + maxBodyLength: 30000000, paramsSerializer: (params) => Qs.stringify(params), }); diff --git a/packages/kbn-test/src/kbn_client/kbn_client_spaces.ts b/packages/kbn-test/src/kbn_client/kbn_client_spaces.ts new file mode 100644 index 0000000000000..e88531606e917 --- /dev/null +++ b/packages/kbn-test/src/kbn_client/kbn_client_spaces.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { KbnClientRequester, uriencode } from './kbn_client_requester'; + +interface UpdateBody { + name: string; + description?: string; + disabledFeatures?: string | string[]; + initials?: string; + color?: string; + imageUrl?: string; +} + +interface CreateBody extends UpdateBody { + id: string; +} + +export class KbnClientSpaces { + constructor(private readonly requester: KbnClientRequester) {} + + async create(body: CreateBody) { + await this.requester.request({ + method: 'POST', + path: '/api/spaces/space', + body, + }); + } + + async update(id: string, body: UpdateBody) { + await this.requester.request({ + method: 'PUT', + path: uriencode`/api/spaces/space/${id}`, + body, + }); + } + + async get(id: string) { + const { data } = await this.requester.request({ + method: 'GET', + path: uriencode`/api/spaces/space/${id}`, + }); + + return data; + } + + async list() { + const { data } = await this.requester.request({ + method: 'GET', + path: '/api/spaces/space', + }); + + return data; + } + + async delete(id: string) { + await this.requester.request({ + method: 'DELETE', + path: uriencode`/api/spaces/space/${id}`, + }); + } +} diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index dab7d6257e2e3..f009a09ca3b1b 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -40,6 +40,7 @@ export const IGNORE_FILE_GLOBS = [ '.ci/pipeline-library/**/*', 'packages/kbn-test/jest-preset.js', 'test/package/Vagrantfile', + 'test/**/fixtures/**/*', // filename must match language code which requires capital letters '**/translations/*.json', diff --git a/test/api_integration/apis/kql_telemetry/kql_telemetry.ts b/test/api_integration/apis/kql_telemetry/kql_telemetry.ts index 5c4a8b25e4c05..09e36b9078792 100644 --- a/test/api_integration/apis/kql_telemetry/kql_telemetry.ts +++ b/test/api_integration/apis/kql_telemetry/kql_telemetry.ts @@ -13,12 +13,12 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const es = getService('es'); describe('telemetry API', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); it('should increment the opt *in* counter in the .kibana/kql-telemetry document', async () => { await supertest diff --git a/test/api_integration/apis/saved_objects/bulk_create.ts b/test/api_integration/apis/saved_objects/bulk_create.ts index 57b7ff0935f58..209c772fba6c1 100644 --- a/test/api_integration/apis/saved_objects/bulk_create.ts +++ b/test/api_integration/apis/saved_objects/bulk_create.ts @@ -12,8 +12,8 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); + const SPACE_ID = 'ftr-so-bulk-create'; const BULK_REQUESTS = [ { @@ -38,99 +38,57 @@ export default function ({ getService }: FtrProviderContext) { before(async () => { KIBANA_VERSION = await getKibanaVersion(getService); + await kibanaServer.importExport.load('saved_objects/basic', { space: SPACE_ID }); }); - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + after(() => kibanaServer.spaces.delete(SPACE_ID)); - it('should return 200 with individual responses', async () => - await supertest - .post(`/api/saved_objects/_bulk_create`) - .send(BULK_REQUESTS) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - saved_objects: [ - { - type: 'visualization', - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - error: { - error: 'Conflict', - message: - 'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] conflict', - statusCode: 409, - }, + it('should return 200 with individual responses', async () => + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_bulk_create`) + .send(BULK_REQUESTS) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + saved_objects: [ + { + type: 'visualization', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + error: { + error: 'Conflict', + message: + 'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] conflict', + statusCode: 409, }, - { - type: 'dashboard', - id: 'a01b2f57-fcfd-4864-b735-09e28f0d815e', - updated_at: resp.body.saved_objects[1].updated_at, - version: resp.body.saved_objects[1].version, - attributes: { - title: 'A great new dashboard', - }, - migrationVersion: { - dashboard: resp.body.saved_objects[1].migrationVersion.dashboard, - }, - coreMigrationVersion: KIBANA_VERSION, - references: [], - namespaces: ['default'], + }, + { + type: 'dashboard', + id: 'a01b2f57-fcfd-4864-b735-09e28f0d815e', + updated_at: resp.body.saved_objects[1].updated_at, + version: resp.body.saved_objects[1].version, + attributes: { + title: 'A great new dashboard', }, - ], - }); - })); - - it('should not return raw id when object id is unspecified', async () => - await supertest - .post(`/api/saved_objects/_bulk_create`) - .send(BULK_REQUESTS.map(({ id, ...rest }) => rest)) - .expect(200) - .then((resp) => { - resp.body.saved_objects.map(({ id }: { id: string }) => - expect(id).not.match(/visualization|dashboard/) - ); - })); - }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('should return 200 with errors', async () => { - await new Promise((resolve) => setTimeout(resolve, 2000)); - await supertest - .post('/api/saved_objects/_bulk_create') - .send(BULK_REQUESTS) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - saved_objects: [ - { - id: BULK_REQUESTS[0].id, - type: BULK_REQUESTS[0].type, - error: { - error: 'Internal Server Error', - message: 'An internal server error occurred', - statusCode: 500, - }, + migrationVersion: { + dashboard: resp.body.saved_objects[1].migrationVersion.dashboard, }, - { - id: BULK_REQUESTS[1].id, - type: BULK_REQUESTS[1].type, - error: { - error: 'Internal Server Error', - message: 'An internal server error occurred', - statusCode: 500, - }, - }, - ], - }); + coreMigrationVersion: KIBANA_VERSION, + references: [], + namespaces: [SPACE_ID], + }, + ], }); - }); - }); + })); + + it('should not return raw id when object id is unspecified', async () => + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_bulk_create`) + .send(BULK_REQUESTS.map(({ id, ...rest }) => rest)) + .expect(200) + .then((resp) => { + resp.body.saved_objects.map(({ id }: { id: string }) => + expect(id).not.match(/visualization|dashboard/) + ); + })); }); } diff --git a/test/api_integration/apis/saved_objects/bulk_get.ts b/test/api_integration/apis/saved_objects/bulk_get.ts index 77f84dee25ded..81e86913aaf86 100644 --- a/test/api_integration/apis/saved_objects/bulk_get.ts +++ b/test/api_integration/apis/saved_objects/bulk_get.ts @@ -12,8 +12,7 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); const BULK_REQUESTS = [ { @@ -35,121 +34,75 @@ export default function ({ getService }: FtrProviderContext) { before(async () => { KIBANA_VERSION = await getKibanaVersion(getService); + await kibanaServer.importExport.load('saved_objects/basic'); }); - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); - it('should return 200 with individual responses', async () => - await supertest - .post(`/api/saved_objects/_bulk_get`) - .send(BULK_REQUESTS) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - saved_objects: [ - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - type: 'visualization', - updated_at: '2017-09-21T18:51:23.794Z', - version: resp.body.saved_objects[0].version, - attributes: { - title: 'Count of requests', - description: '', - version: 1, - // cheat for some of the more complex attributes - visState: resp.body.saved_objects[0].attributes.visState, - uiStateJSON: resp.body.saved_objects[0].attributes.uiStateJSON, - kibanaSavedObjectMeta: - resp.body.saved_objects[0].attributes.kibanaSavedObjectMeta, - }, - migrationVersion: resp.body.saved_objects[0].migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - namespaces: ['default'], - references: [ - { - name: 'kibanaSavedObjectMeta.searchSourceJSON.index', - type: 'index-pattern', - id: '91200a00-9efd-11e7-acb3-3dab96693fab', - }, - ], - }, - { - id: 'does not exist', - type: 'dashboard', - error: { - error: 'Not Found', - message: 'Saved object [dashboard/does not exist] not found', - statusCode: 404, - }, - }, - { - id: '7.0.0-alpha1', - type: 'config', - updated_at: '2017-09-21T18:49:16.302Z', - version: resp.body.saved_objects[2].version, - attributes: { - buildNum: 8467, - defaultIndex: '91200a00-9efd-11e7-acb3-3dab96693fab', - }, - namespaces: ['default'], - migrationVersion: resp.body.saved_objects[2].migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - references: [], - }, - ], - }); - expect(resp.body.saved_objects[0].migrationVersion).to.be.ok(); - })); - }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); + it('should return 200 with individual responses', async () => + await supertest + .post(`/api/saved_objects/_bulk_get`) + .send(BULK_REQUESTS) + .expect(200) + .then((resp) => { + const mockDate = '2015-01-01T00:00:00.000Z'; + resp.body.saved_objects[0].updated_at = mockDate; + resp.body.saved_objects[2].updated_at = mockDate; - it('should return 200 with individual responses', async () => - await supertest - .post('/api/saved_objects/_bulk_get') - .send(BULK_REQUESTS) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - saved_objects: [ - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - type: 'visualization', - error: { - error: 'Not Found', - message: - 'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] not found', - statusCode: 404, - }, + expect(resp.body).to.eql({ + saved_objects: [ + { + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + type: 'visualization', + updated_at: '2015-01-01T00:00:00.000Z', + version: resp.body.saved_objects[0].version, + attributes: { + title: 'Count of requests', + description: '', + version: 1, + // cheat for some of the more complex attributes + visState: resp.body.saved_objects[0].attributes.visState, + uiStateJSON: resp.body.saved_objects[0].attributes.uiStateJSON, + kibanaSavedObjectMeta: + resp.body.saved_objects[0].attributes.kibanaSavedObjectMeta, }, - { - id: 'does not exist', - type: 'dashboard', - error: { - error: 'Not Found', - message: 'Saved object [dashboard/does not exist] not found', - statusCode: 404, + migrationVersion: resp.body.saved_objects[0].migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + namespaces: ['default'], + references: [ + { + name: 'kibanaSavedObjectMeta.searchSourceJSON.index', + type: 'index-pattern', + id: '91200a00-9efd-11e7-acb3-3dab96693fab', }, + ], + }, + { + id: 'does not exist', + type: 'dashboard', + error: { + error: 'Not Found', + message: 'Saved object [dashboard/does not exist] not found', + statusCode: 404, }, - { - id: '7.0.0-alpha1', - type: 'config', - error: { - error: 'Not Found', - message: 'Saved object [config/7.0.0-alpha1] not found', - statusCode: 404, - }, + }, + { + id: '7.0.0-alpha1', + type: 'config', + updated_at: '2015-01-01T00:00:00.000Z', + version: resp.body.saved_objects[2].version, + attributes: { + buildNum: 8467, + defaultIndex: '91200a00-9efd-11e7-acb3-3dab96693fab', }, - ], - }); - })); - }); + namespaces: ['default'], + migrationVersion: resp.body.saved_objects[2].migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + references: [], + }, + ], + }); + expect(resp.body.saved_objects[0].migrationVersion).to.be.ok(); + })); }); } diff --git a/test/api_integration/apis/saved_objects/bulk_update.ts b/test/api_integration/apis/saved_objects/bulk_update.ts index a5f5262196346..8740652fc3953 100644 --- a/test/api_integration/apis/saved_objects/bulk_update.ts +++ b/test/api_integration/apis/saved_objects/bulk_update.ts @@ -12,239 +12,180 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('bulkUpdate', () => { - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); - it('should return 200', async () => { - const response = await supertest - .put(`/api/saved_objects/_bulk_update`) - .send([ - { - type: 'visualization', - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - attributes: { - title: 'An existing visualization', - }, - }, - { - type: 'dashboard', - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - attributes: { - title: 'An existing dashboard', - }, - }, - ]) - .expect(200); - - const { - saved_objects: [firstObject, secondObject], - } = response.body; - - // loose ISO8601 UTC time with milliseconds validation - expect(firstObject) - .to.have.property('updated_at') - .match(/^[\d-]{10}T[\d:\.]{12}Z$/); - expect(_.omit(firstObject, ['updated_at'])).to.eql({ - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - type: 'visualization', - version: firstObject.version, - attributes: { - title: 'An existing visualization', - }, - namespaces: ['default'], - }); - - expect(secondObject) - .to.have.property('updated_at') - .match(/^[\d-]{10}T[\d:\.]{12}Z$/); - expect(_.omit(secondObject, ['updated_at'])).to.eql({ - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - type: 'dashboard', - version: secondObject.version, - attributes: { - title: 'An existing dashboard', - }, - namespaces: ['default'], - }); - }); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); - it('does not pass references if omitted', async () => { - const { - body: { - saved_objects: [visObject, dashObject], - }, - } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + it('should return 200', async () => { + const response = await supertest + .put(`/api/saved_objects/_bulk_update`) + .send([ { type: 'visualization', id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + attributes: { + title: 'An existing visualization', + }, }, { type: 'dashboard', id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + attributes: { + title: 'An existing dashboard', + }, }, - ]); + ]) + .expect(200); + + const { + saved_objects: [firstObject, secondObject], + } = response.body; + + // loose ISO8601 UTC time with milliseconds validation + expect(firstObject) + .to.have.property('updated_at') + .match(/^[\d-]{10}T[\d:\.]{12}Z$/); + expect(_.omit(firstObject, ['updated_at'])).to.eql({ + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + type: 'visualization', + version: firstObject.version, + attributes: { + title: 'An existing visualization', + }, + namespaces: ['default'], + }); - const response = await supertest - .put(`/api/saved_objects/_bulk_update`) - .send([ - { - type: 'visualization', - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - attributes: { - title: 'Changed title but nothing else', - }, - version: visObject.version, - }, - { - type: 'dashboard', - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - attributes: { - title: 'Changed title and references', - }, - version: dashObject.version, - references: [{ id: 'foo', name: 'Foo', type: 'visualization' }], - }, - ]) - .expect(200); + expect(secondObject) + .to.have.property('updated_at') + .match(/^[\d-]{10}T[\d:\.]{12}Z$/); + expect(_.omit(secondObject, ['updated_at'])).to.eql({ + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + type: 'dashboard', + version: secondObject.version, + attributes: { + title: 'An existing dashboard', + }, + namespaces: ['default'], + }); + }); - const { - saved_objects: [firstUpdatedObject, secondUpdatedObject], - } = response.body; - expect(firstUpdatedObject).to.not.have.property('error'); - expect(secondUpdatedObject).to.not.have.property('error'); + it('does not pass references if omitted', async () => { + const { + body: { + saved_objects: [visObject, dashObject], + }, + } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + { + type: 'visualization', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + }, + { + type: 'dashboard', + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + }, + ]); - const { - body: { - saved_objects: [visObjectAfterUpdate, dashObjectAfterUpdate], - }, - } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + const response = await supertest + .put(`/api/saved_objects/_bulk_update`) + .send([ { type: 'visualization', id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + attributes: { + title: 'Changed title but nothing else', + }, + version: visObject.version, }, { type: 'dashboard', id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + attributes: { + title: 'Changed title and references', + }, + version: dashObject.version, + references: [{ id: 'foo', name: 'Foo', type: 'visualization' }], }, - ]); - - expect(visObjectAfterUpdate.references).to.eql(visObject.references); - expect(dashObjectAfterUpdate.references).to.eql([ - { id: 'foo', name: 'Foo', type: 'visualization' }, - ]); - }); + ]) + .expect(200); + + const { + saved_objects: [firstUpdatedObject, secondUpdatedObject], + } = response.body; + expect(firstUpdatedObject).to.not.have.property('error'); + expect(secondUpdatedObject).to.not.have.property('error'); + + const { + body: { + saved_objects: [visObjectAfterUpdate, dashObjectAfterUpdate], + }, + } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + { + type: 'visualization', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + }, + { + type: 'dashboard', + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + }, + ]); - it('passes empty references array if empty references array is provided', async () => { - const { - body: { - saved_objects: [{ version }], - }, - } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ - { - type: 'visualization', - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - }, - ]); + expect(visObjectAfterUpdate.references).to.eql(visObject.references); + expect(dashObjectAfterUpdate.references).to.eql([ + { id: 'foo', name: 'Foo', type: 'visualization' }, + ]); + }); - await supertest - .put(`/api/saved_objects/_bulk_update`) - .send([ - { - type: 'visualization', - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - attributes: { - title: 'Changed title but nothing else', - }, - version, - references: [], - }, - ]) - .expect(200); + it('passes empty references array if empty references array is provided', async () => { + const { + body: { + saved_objects: [{ version }], + }, + } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + { + type: 'visualization', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + }, + ]); - const { - body: { - saved_objects: [visObjectAfterUpdate], - }, - } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + await supertest + .put(`/api/saved_objects/_bulk_update`) + .send([ { type: 'visualization', id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - }, - ]); - - expect(visObjectAfterUpdate.references).to.eql([]); - }); - - describe('unknown id', () => { - it('should return a generic 404', async () => { - const response = await supertest - .put(`/api/saved_objects/_bulk_update`) - .send([ - { - type: 'visualization', - id: 'not an id', - attributes: { - title: 'An existing visualization', - }, - }, - { - type: 'dashboard', - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - attributes: { - title: 'An existing dashboard', - }, - }, - ]) - .expect(200); - - const { - saved_objects: [missingObject, updatedObject], - } = response.body; - - // loose ISO8601 UTC time with milliseconds validation - expect(missingObject).eql({ - type: 'visualization', - id: 'not an id', - error: { - statusCode: 404, - error: 'Not Found', - message: 'Saved object [visualization/not an id] not found', - }, - }); - - expect(updatedObject) - .to.have.property('updated_at') - .match(/^[\d-]{10}T[\d:\.]{12}Z$/); - expect(_.omit(updatedObject, ['updated_at', 'version'])).to.eql({ - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - type: 'dashboard', attributes: { - title: 'An existing dashboard', + title: 'Changed title but nothing else', }, - namespaces: ['default'], - }); - }); - }); - }); + version, + references: [], + }, + ]) + .expect(200); + + const { + body: { + saved_objects: [visObjectAfterUpdate], + }, + } = await supertest.post(`/api/saved_objects/_bulk_get`).send([ + { + type: 'visualization', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + }, + ]); - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); + expect(visObjectAfterUpdate.references).to.eql([]); + }); - it('should return 200 with errors', async () => { + describe('unknown id', () => { + it('should return a generic 404', async () => { const response = await supertest .put(`/api/saved_objects/_bulk_update`) .send([ { type: 'visualization', - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + id: 'not an id', attributes: { title: 'An existing visualization', }, @@ -260,27 +201,30 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const { - saved_objects: [firstObject, secondObject], + saved_objects: [missingObject, updatedObject], } = response.body; - expect(firstObject).to.eql({ - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + // loose ISO8601 UTC time with milliseconds validation + expect(missingObject).eql({ type: 'visualization', + id: 'not an id', error: { - statusCode: 500, - error: 'Internal Server Error', - message: 'An internal server error occurred', + statusCode: 404, + error: 'Not Found', + message: 'Saved object [visualization/not an id] not found', }, }); - expect(secondObject).to.eql({ + expect(updatedObject) + .to.have.property('updated_at') + .match(/^[\d-]{10}T[\d:\.]{12}Z$/); + expect(_.omit(updatedObject, ['updated_at', 'version'])).to.eql({ id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', type: 'dashboard', - error: { - statusCode: 500, - error: 'Internal Server Error', - message: 'An internal server error occurred', + attributes: { + title: 'An existing dashboard', }, + namespaces: ['default'], }); }); }); diff --git a/test/api_integration/apis/saved_objects/create.ts b/test/api_integration/apis/saved_objects/create.ts index de31b621a6480..dfa7ceb503dfd 100644 --- a/test/api_integration/apis/saved_objects/create.ts +++ b/test/api_integration/apis/saved_objects/create.ts @@ -12,99 +12,68 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const es = getService('es'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('create', () => { let KIBANA_VERSION: string; before(async () => { KIBANA_VERSION = await getKibanaVersion(getService); + await kibanaServer.importExport.load('saved_objects/basic'); }); - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); - it('should return 200', async () => { - await supertest - .post(`/api/saved_objects/visualization`) - .send({ - attributes: { - title: 'My favorite vis', - }, - }) - .expect(200) - .then((resp) => { - // loose uuid validation - expect(resp.body) - .to.have.property('id') - .match(/^[0-9a-f-]{36}$/); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); - // loose ISO8601 UTC time with milliseconds validation - expect(resp.body) - .to.have.property('updated_at') - .match(/^[\d-]{10}T[\d:\.]{12}Z$/); + it('should return 200', async () => { + await supertest + .post(`/api/saved_objects/visualization`) + .send({ + attributes: { + title: 'My favorite vis', + }, + }) + .expect(200) + .then((resp) => { + // loose uuid validation + expect(resp.body) + .to.have.property('id') + .match(/^[0-9a-f-]{36}$/); - expect(resp.body).to.eql({ - id: resp.body.id, - type: 'visualization', - migrationVersion: resp.body.migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - updated_at: resp.body.updated_at, - version: resp.body.version, - attributes: { - title: 'My favorite vis', - }, - references: [], - namespaces: ['default'], - }); - expect(resp.body.migrationVersion).to.be.ok(); - }); - }); + // loose ISO8601 UTC time with milliseconds validation + expect(resp.body) + .to.have.property('updated_at') + .match(/^[\d-]{10}T[\d:\.]{12}Z$/); - it('result should be updated to the latest coreMigrationVersion', async () => { - await supertest - .post(`/api/saved_objects/visualization`) - .send({ + expect(resp.body).to.eql({ + id: resp.body.id, + type: 'visualization', + migrationVersion: resp.body.migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + updated_at: resp.body.updated_at, + version: resp.body.version, attributes: { title: 'My favorite vis', }, - coreMigrationVersion: '1.2.3', - }) - .expect(200) - .then((resp) => { - expect(resp.body.coreMigrationVersion).to.eql(KIBANA_VERSION); + references: [], + namespaces: ['default'], }); - }); + expect(resp.body.migrationVersion).to.be.ok(); + }); }); - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('should return 500 and not auto-create saved objects index', async () => { - await supertest - .post(`/api/saved_objects/visualization`) - .send({ - attributes: { - title: 'My favorite vis', - }, - }) - .expect(500) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Internal Server Error', - message: 'An internal server error occurred.', - statusCode: 500, - }); - }); - - expect((await es.indices.exists({ index: '.kibana' })).body).to.be(false); - }); + it('result should be updated to the latest coreMigrationVersion', async () => { + await supertest + .post(`/api/saved_objects/visualization`) + .send({ + attributes: { + title: 'My favorite vis', + }, + coreMigrationVersion: '1.2.3', + }) + .expect(200) + .then((resp) => { + expect(resp.body.coreMigrationVersion).to.eql(KIBANA_VERSION); + }); }); }); } diff --git a/test/api_integration/apis/saved_objects/delete.ts b/test/api_integration/apis/saved_objects/delete.ts index 0dfece825d3a1..9a4525df1b5f7 100644 --- a/test/api_integration/apis/saved_objects/delete.ts +++ b/test/api_integration/apis/saved_objects/delete.ts @@ -11,53 +11,30 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('delete', () => { - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); - it('should return 200 when deleting a doc', async () => - await supertest - .delete(`/api/saved_objects/dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab`) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({}); - })); + it('should return 200 when deleting a doc', async () => + await supertest + .delete(`/api/saved_objects/dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab`) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({}); + })); - it('should return generic 404 when deleting an unknown doc', async () => - await supertest - .delete(`/api/saved_objects/dashboard/not-a-real-id`) - .expect(404) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 404, - error: 'Not Found', - message: 'Saved object [dashboard/not-a-real-id] not found', - }); - })); - }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('returns generic 404 when kibana index is missing', async () => - await supertest - .delete(`/api/saved_objects/dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab`) - .expect(404) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 404, - error: 'Not Found', - message: 'Saved object [dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab] not found', - }); - })); - }); + it('should return generic 404 when deleting an unknown doc', async () => + await supertest + .delete(`/api/saved_objects/dashboard/not-a-real-id`) + .expect(404) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 404, + error: 'Not Found', + message: 'Saved object [dashboard/not-a-real-id] not found', + }); + })); }); } diff --git a/test/api_integration/apis/saved_objects/export.ts b/test/api_integration/apis/saved_objects/export.ts index c02ce76340da8..401ddbfb74e24 100644 --- a/test/api_integration/apis/saved_objects/export.ts +++ b/test/api_integration/apis/saved_objects/export.ts @@ -15,573 +15,558 @@ function ndjsonToObject(input: string) { } export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); + const SPACE_ID = 'ftr-so-export'; describe('export', () => { let KIBANA_VERSION: string; before(async () => { KIBANA_VERSION = await getKibanaVersion(getService); + await kibanaServer.importExport.load('saved_objects/basic', { space: SPACE_ID }); }); - describe('with kibana index', () => { - describe('basic amount of saved objects', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + after(() => kibanaServer.spaces.delete(SPACE_ID)); - it('should return objects in dependency order', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: ['index-pattern', 'search', 'visualization', 'dashboard'], - }) - .expect(200) - .then((resp) => { - const objects = ndjsonToObject(resp.text); - expect(objects).to.have.length(4); - expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); - expect(objects[0]).to.have.property('type', 'index-pattern'); - expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); - expect(objects[1]).to.have.property('type', 'visualization'); - expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); - expect(objects[2]).to.have.property('type', 'dashboard'); - expect(objects[3]).to.have.property('exportedCount', 3); - expect(objects[3]).to.have.property('missingRefCount', 0); - expect(objects[3].missingReferences).to.have.length(0); - }); - }); + describe('basic amount of saved objects', () => { + it('should return objects in dependency order', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: ['index-pattern', 'search', 'visualization', 'dashboard'], + }) + .expect(200) + .then((resp) => { + const objects = ndjsonToObject(resp.text); + expect(objects).to.have.length(4); + expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); + expect(objects[0]).to.have.property('type', 'index-pattern'); + expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); + expect(objects[1]).to.have.property('type', 'visualization'); + expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); + expect(objects[2]).to.have.property('type', 'dashboard'); + expect(objects[3]).to.have.property('exportedCount', 3); + expect(objects[3]).to.have.property('missingRefCount', 0); + expect(objects[3].missingReferences).to.have.length(0); + }); + }); - it('should exclude the export details if asked', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: ['index-pattern', 'search', 'visualization', 'dashboard'], - excludeExportDetails: true, - }) - .expect(200) - .then((resp) => { - const objects = ndjsonToObject(resp.text); - expect(objects).to.have.length(3); - expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); - expect(objects[0]).to.have.property('type', 'index-pattern'); - expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); - expect(objects[1]).to.have.property('type', 'visualization'); - expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); - expect(objects[2]).to.have.property('type', 'dashboard'); - }); - }); + it('should exclude the export details if asked', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: ['index-pattern', 'search', 'visualization', 'dashboard'], + excludeExportDetails: true, + }) + .expect(200) + .then((resp) => { + const objects = ndjsonToObject(resp.text); + expect(objects).to.have.length(3); + expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); + expect(objects[0]).to.have.property('type', 'index-pattern'); + expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); + expect(objects[1]).to.have.property('type', 'visualization'); + expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); + expect(objects[2]).to.have.property('type', 'dashboard'); + }); + }); - it('should support including dependencies when exporting selected objects', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - includeReferencesDeep: true, - objects: [ - { - type: 'dashboard', - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - }, - ], - }) - .expect(200) - .then((resp) => { - const objects = ndjsonToObject(resp.text); - expect(objects).to.have.length(4); - expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); - expect(objects[0]).to.have.property('type', 'index-pattern'); - expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); - expect(objects[1]).to.have.property('type', 'visualization'); - expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); - expect(objects[2]).to.have.property('type', 'dashboard'); - expect(objects[3]).to.have.property('exportedCount', 3); - expect(objects[3]).to.have.property('missingRefCount', 0); - expect(objects[3].missingReferences).to.have.length(0); - }); - }); + it('should support including dependencies when exporting selected objects', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + includeReferencesDeep: true, + objects: [ + { + type: 'dashboard', + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + }, + ], + }) + .expect(200) + .then((resp) => { + const objects = ndjsonToObject(resp.text); + expect(objects).to.have.length(4); + expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); + expect(objects[0]).to.have.property('type', 'index-pattern'); + expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); + expect(objects[1]).to.have.property('type', 'visualization'); + expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); + expect(objects[2]).to.have.property('type', 'dashboard'); + expect(objects[3]).to.have.property('exportedCount', 3); + expect(objects[3]).to.have.property('missingRefCount', 0); + expect(objects[3].missingReferences).to.have.length(0); + }); + }); - it('should support including dependencies when exporting by type', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - includeReferencesDeep: true, - type: ['dashboard'], - }) - .expect(200) - .then((resp) => { - const objects = resp.text.split('\n').map((str) => JSON.parse(str)); - expect(objects).to.have.length(4); - expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); - expect(objects[0]).to.have.property('type', 'index-pattern'); - expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); - expect(objects[1]).to.have.property('type', 'visualization'); - expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); - expect(objects[2]).to.have.property('type', 'dashboard'); - expect(objects[3]).to.have.property('exportedCount', 3); - expect(objects[3]).to.have.property('missingRefCount', 0); - expect(objects[3].missingReferences).to.have.length(0); - }); - }); + it('should support including dependencies when exporting by type', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + includeReferencesDeep: true, + type: ['dashboard'], + }) + .expect(200) + .then((resp) => { + const objects = resp.text.split('\n').map((str) => JSON.parse(str)); + expect(objects).to.have.length(4); + expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); + expect(objects[0]).to.have.property('type', 'index-pattern'); + expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); + expect(objects[1]).to.have.property('type', 'visualization'); + expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); + expect(objects[2]).to.have.property('type', 'dashboard'); + expect(objects[3]).to.have.property('exportedCount', 3); + expect(objects[3]).to.have.property('missingRefCount', 0); + expect(objects[3].missingReferences).to.have.length(0); + }); + }); - it('should support including dependencies when exporting by type and search', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - includeReferencesDeep: true, - type: ['dashboard'], - search: 'Requests*', - }) - .expect(200) - .then((resp) => { - const objects = ndjsonToObject(resp.text); - expect(objects).to.have.length(4); - expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); - expect(objects[0]).to.have.property('type', 'index-pattern'); - expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); - expect(objects[1]).to.have.property('type', 'visualization'); - expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); - expect(objects[2]).to.have.property('type', 'dashboard'); - expect(objects[3]).to.have.property('exportedCount', 3); - expect(objects[3]).to.have.property('missingRefCount', 0); - expect(objects[3].missingReferences).to.have.length(0); - }); - }); + it('should support including dependencies when exporting by type and search', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + includeReferencesDeep: true, + type: ['dashboard'], + search: 'Requests*', + }) + .expect(200) + .then((resp) => { + const objects = ndjsonToObject(resp.text); + expect(objects).to.have.length(4); + expect(objects[0]).to.have.property('id', '91200a00-9efd-11e7-acb3-3dab96693fab'); + expect(objects[0]).to.have.property('type', 'index-pattern'); + expect(objects[1]).to.have.property('id', 'dd7caf20-9efd-11e7-acb3-3dab96693fab'); + expect(objects[1]).to.have.property('type', 'visualization'); + expect(objects[2]).to.have.property('id', 'be3733a0-9efe-11e7-acb3-3dab96693fab'); + expect(objects[2]).to.have.property('type', 'dashboard'); + expect(objects[3]).to.have.property('exportedCount', 3); + expect(objects[3]).to.have.property('missingRefCount', 0); + expect(objects[3].missingReferences).to.have.length(0); + }); + }); - it(`should throw error when object doesn't exist`, async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - objects: [ - { - type: 'dashboard', - id: '1', - }, - ], - }) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: 'Error fetching objects to export', - attributes: { - objects: [ - { - id: '1', - type: 'dashboard', - error: { - error: 'Not Found', - message: 'Saved object [dashboard/1] not found', - statusCode: 404, - }, + it(`should throw error when object doesn't exist`, async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + objects: [ + { + type: 'dashboard', + id: '1', + }, + ], + }) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Error fetching objects to export', + attributes: { + objects: [ + { + id: '1', + type: 'dashboard', + error: { + error: 'Not Found', + message: 'Saved object [dashboard/1] not found', + statusCode: 404, }, - ], - }, - }); + }, + ], + }, }); - }); + }); + }); - it(`should return 400 when exporting unsupported type`, async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: ['wigwags'], - }) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: 'Trying to export non-exportable type(s): wigwags', - }); + it(`should return 400 when exporting unsupported type`, async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: ['wigwags'], + }) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Trying to export non-exportable type(s): wigwags', }); - }); + }); + }); - it(`should return 400 when exporting objects with unsupported type`, async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - objects: [ - { - type: 'wigwags', - id: '1', - }, - ], - }) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: 'Trying to export object(s) with non-exportable types: wigwags:1', - }); + it(`should return 400 when exporting objects with unsupported type`, async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + objects: [ + { + type: 'wigwags', + id: '1', + }, + ], + }) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Trying to export object(s) with non-exportable types: wigwags:1', }); - }); + }); + }); - it('should export object with circular refs', async () => { - const soWithCycliRefs = [ - { - type: 'dashboard', - id: 'dashboard-a', - attributes: { - title: 'dashboard-a', + it('should export object with circular refs', async () => { + const soWithCycliRefs = [ + { + type: 'dashboard', + id: 'dashboard-a', + attributes: { + title: 'dashboard-a', + }, + references: [ + { + name: 'circular-dashboard-ref', + id: 'dashboard-b', + type: 'dashboard', }, - references: [ - { - name: 'circular-dashboard-ref', - id: 'dashboard-b', - type: 'dashboard', - }, - ], + ], + }, + { + type: 'dashboard', + id: 'dashboard-b', + attributes: { + title: 'dashboard-b', }, - { - type: 'dashboard', - id: 'dashboard-b', + references: [ + { + name: 'circular-dashboard-ref', + id: 'dashboard-a', + type: 'dashboard', + }, + ], + }, + ]; + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_bulk_create`) + .send(soWithCycliRefs) + .expect(200); + const resp = await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + includeReferencesDeep: true, + type: ['dashboard'], + }) + .expect(200); + + const objects = ndjsonToObject(resp.text); + expect(objects.find((o) => o.id === 'dashboard-a')).to.be.ok(); + expect(objects.find((o) => o.id === 'dashboard-b')).to.be.ok(); + }); + }); + + describe('10,000 objects', () => { + before(async () => { + const fileChunks = []; + for (let i = 0; i <= 9995; i++) { + fileChunks.push( + JSON.stringify({ + type: 'visualization', + id: `${SPACE_ID}-${i}`, attributes: { - title: 'dashboard-b', + title: `My visualization (${i})`, + uiStateJSON: '{}', + visState: '{}', }, references: [ { - name: 'circular-dashboard-ref', - id: 'dashboard-a', - type: 'dashboard', + name: 'kibanaSavedObjectMeta.searchSourceJSON.index', + type: 'index-pattern', + id: '91200a00-9efd-11e7-acb3-3dab96693fab', }, ], - }, - ]; - await supertest.post('/api/saved_objects/_bulk_create').send(soWithCycliRefs).expect(200); - const resp = await supertest - .post('/api/saved_objects/_export') - .send({ - includeReferencesDeep: true, - type: ['dashboard'], }) - .expect(200); + ); + } - const objects = ndjsonToObject(resp.text); - expect(objects.find((o) => o.id === 'dashboard-a')).to.be.ok(); - expect(objects.find((o) => o.id === 'dashboard-b')).to.be.ok(); - }); + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_import`) + .attach('file', Buffer.from(fileChunks.join('\n'), 'utf8'), 'export.ndjson') + .expect(200); }); - describe('10,000 objects', () => { - before(() => esArchiver.load('saved_objects/10k')); - after(() => esArchiver.unload('saved_objects/10k')); - - it('should return 400 when exporting without type or objects passed in', async () => { - await supertest - .post('/api/saved_objects/_export') - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: '[request body]: expected a plain object value, but found [null] instead.', - }); + it('should return 400 when exporting without type or objects passed in', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: '[request body]: expected a plain object value, but found [null] instead.', }); - }); - - it('should return 200 when exporting by single type', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: 'dashboard', - excludeExportDetails: true, - }) - .expect(200) - .then((resp) => { - expect(resp.header['content-disposition']).to.eql( - 'attachment; filename="export.ndjson"' - ); - expect(resp.header['content-type']).to.eql('application/ndjson'); - const objects = ndjsonToObject(resp.text); + }); + }); - // Sort values aren't deterministic so we need to exclude them - const { sort, ...obj } = objects[0]; - expect(obj).to.eql({ - attributes: { - description: '', - hits: 0, - kibanaSavedObjectMeta: { - searchSourceJSON: objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON, - }, - optionsJSON: objects[0].attributes.optionsJSON, - panelsJSON: objects[0].attributes.panelsJSON, - refreshInterval: { - display: 'Off', - pause: false, - value: 0, - }, - timeFrom: 'Wed Sep 16 2015 22:52:17 GMT-0700', - timeRestore: true, - timeTo: 'Fri Sep 18 2015 12:24:38 GMT-0700', - title: 'Requests', - version: 1, - }, - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - migrationVersion: objects[0].migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - references: [ - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - name: '1:panel_1', - type: 'visualization', - }, - ], - type: 'dashboard', - updated_at: '2017-09-21T18:57:40.826Z', - version: objects[0].version, - }); - expect(objects[0].migrationVersion).to.be.ok(); - expect(() => - JSON.parse(objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON) - ).not.to.throwError(); - expect(() => JSON.parse(objects[0].attributes.optionsJSON)).not.to.throwError(); - expect(() => JSON.parse(objects[0].attributes.panelsJSON)).not.to.throwError(); - }); - }); + it('should return 200 when exporting by single type', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: 'dashboard', + excludeExportDetails: true, + }) + .expect(200) + .then((resp) => { + expect(resp.header['content-disposition']).to.eql( + 'attachment; filename="export.ndjson"' + ); + expect(resp.header['content-type']).to.eql('application/ndjson'); + const objects = ndjsonToObject(resp.text); - it('should return 200 when exporting by array type', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: ['dashboard'], - excludeExportDetails: true, - }) - .expect(200) - .then((resp) => { - expect(resp.header['content-disposition']).to.eql( - 'attachment; filename="export.ndjson"' - ); - expect(resp.header['content-type']).to.eql('application/ndjson'); - const objects = ndjsonToObject(resp.text); + // Sort values aren't deterministic so we need to exclude them + const { sort, ...obj } = objects[0]; - // Sort values aren't deterministic so we need to exclude them - const { sort, ...obj } = objects[0]; - expect(obj).to.eql({ - attributes: { - description: '', - hits: 0, - kibanaSavedObjectMeta: { - searchSourceJSON: objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON, - }, - optionsJSON: objects[0].attributes.optionsJSON, - panelsJSON: objects[0].attributes.panelsJSON, - refreshInterval: { - display: 'Off', - pause: false, - value: 0, - }, - timeFrom: 'Wed Sep 16 2015 22:52:17 GMT-0700', - timeRestore: true, - timeTo: 'Fri Sep 18 2015 12:24:38 GMT-0700', - title: 'Requests', - version: 1, + expect(obj).to.eql({ + attributes: { + description: '', + hits: 0, + kibanaSavedObjectMeta: { + searchSourceJSON: objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON, }, - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - migrationVersion: objects[0].migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - references: [ - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - name: '1:panel_1', - type: 'visualization', - }, - ], - type: 'dashboard', - updated_at: '2017-09-21T18:57:40.826Z', - version: objects[0].version, - }); - expect(objects[0].migrationVersion).to.be.ok(); - expect(() => - JSON.parse(objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON) - ).not.to.throwError(); - expect(() => JSON.parse(objects[0].attributes.optionsJSON)).not.to.throwError(); - expect(() => JSON.parse(objects[0].attributes.panelsJSON)).not.to.throwError(); - }); - }); - - it('should return 200 when exporting by objects', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - objects: [ + optionsJSON: objects[0].attributes.optionsJSON, + panelsJSON: objects[0].attributes.panelsJSON, + refreshInterval: { + display: 'Off', + pause: false, + value: 0, + }, + timeFrom: 'Wed Sep 16 2015 22:52:17 GMT-0700', + timeRestore: true, + timeTo: 'Fri Sep 18 2015 12:24:38 GMT-0700', + title: 'Requests', + version: 1, + }, + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + migrationVersion: objects[0].migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + references: [ { - type: 'dashboard', - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + name: '1:panel_1', + type: 'visualization', }, ], - excludeExportDetails: true, - }) - .expect(200) - .then((resp) => { - expect(resp.header['content-disposition']).to.eql( - 'attachment; filename="export.ndjson"' - ); - expect(resp.header['content-type']).to.eql('application/ndjson'); - const objects = ndjsonToObject(resp.text); - - // Sort values aren't deterministic so we need to exclude them - const { sort, ...obj } = objects[0]; - expect(obj).to.eql({ - attributes: { - description: '', - hits: 0, - kibanaSavedObjectMeta: { - searchSourceJSON: objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON, - }, - optionsJSON: objects[0].attributes.optionsJSON, - panelsJSON: objects[0].attributes.panelsJSON, - refreshInterval: { - display: 'Off', - pause: false, - value: 0, - }, - timeFrom: 'Wed Sep 16 2015 22:52:17 GMT-0700', - timeRestore: true, - timeTo: 'Fri Sep 18 2015 12:24:38 GMT-0700', - title: 'Requests', - version: 1, - }, - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - migrationVersion: objects[0].migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - references: [ - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - name: '1:panel_1', - type: 'visualization', - }, - ], - type: 'dashboard', - updated_at: '2017-09-21T18:57:40.826Z', - version: objects[0].version, - }); - expect(objects[0].migrationVersion).to.be.ok(); - expect(() => - JSON.parse(objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON) - ).not.to.throwError(); - expect(() => JSON.parse(objects[0].attributes.optionsJSON)).not.to.throwError(); - expect(() => JSON.parse(objects[0].attributes.panelsJSON)).not.to.throwError(); + type: 'dashboard', + updated_at: objects[0].updated_at, + version: objects[0].version, }); - }); + expect(objects[0].migrationVersion).to.be.ok(); + expect(() => + JSON.parse(objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON) + ).not.to.throwError(); + expect(() => JSON.parse(objects[0].attributes.optionsJSON)).not.to.throwError(); + expect(() => JSON.parse(objects[0].attributes.panelsJSON)).not.to.throwError(); + }); + }); - it('should return 400 when exporting by type and objects', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: 'dashboard', - objects: [ + it('should return 200 when exporting by array type', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: ['dashboard'], + excludeExportDetails: true, + }) + .expect(200) + .then((resp) => { + expect(resp.header['content-disposition']).to.eql( + 'attachment; filename="export.ndjson"' + ); + expect(resp.header['content-type']).to.eql('application/ndjson'); + const objects = ndjsonToObject(resp.text); + + // Sort values aren't deterministic so we need to exclude them + const { sort, ...obj } = objects[0]; + expect(obj).to.eql({ + attributes: { + description: '', + hits: 0, + kibanaSavedObjectMeta: { + searchSourceJSON: objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON, + }, + optionsJSON: objects[0].attributes.optionsJSON, + panelsJSON: objects[0].attributes.panelsJSON, + refreshInterval: { + display: 'Off', + pause: false, + value: 0, + }, + timeFrom: 'Wed Sep 16 2015 22:52:17 GMT-0700', + timeRestore: true, + timeTo: 'Fri Sep 18 2015 12:24:38 GMT-0700', + title: 'Requests', + version: 1, + }, + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + migrationVersion: objects[0].migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + references: [ { - type: 'dashboard', - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + name: '1:panel_1', + type: 'visualization', }, ], - excludeExportDetails: true, - }) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: `Can't specify both "types" and "objects" properties when exporting`, - }); + type: 'dashboard', + updated_at: objects[0].updated_at, + version: objects[0].version, }); - }); + expect(objects[0].migrationVersion).to.be.ok(); + expect(() => + JSON.parse(objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON) + ).not.to.throwError(); + expect(() => JSON.parse(objects[0].attributes.optionsJSON)).not.to.throwError(); + expect(() => JSON.parse(objects[0].attributes.panelsJSON)).not.to.throwError(); + }); }); - describe('10,001 objects', () => { - let customVisId: string; - before(async () => { - await esArchiver.load('saved_objects/10k'); - await supertest - .post('/api/saved_objects/visualization') - .send({ - attributes: { - title: 'My favorite vis', + it('should return 200 when exporting by objects', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + objects: [ + { + type: 'dashboard', + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', }, - }) - .expect(200) - .then((resp) => { - customVisId = resp.body.id; - }); - }); - after(async () => { - await supertest.delete(`/api/saved_objects/visualization/${customVisId}`).expect(200); - await esArchiver.unload('saved_objects/10k'); - }); - - it('should allow exporting more than 10,000 objects if permitted by maxImportExportSize', async () => { - await supertest - .post('/api/saved_objects/_export') - .send({ - type: ['dashboard', 'visualization', 'search', 'index-pattern'], - excludeExportDetails: true, - }) - .expect(200) - .then((resp) => { - expect(resp.header['content-disposition']).to.eql( - 'attachment; filename="export.ndjson"' - ); - expect(resp.header['content-type']).to.eql('application/ndjson'); - const objects = ndjsonToObject(resp.text); - expect(objects.length).to.eql(10001); - }); - }); + ], + excludeExportDetails: true, + }) + .expect(200) + .then((resp) => { + expect(resp.header['content-disposition']).to.eql( + 'attachment; filename="export.ndjson"' + ); + expect(resp.header['content-type']).to.eql('application/ndjson'); + const objects = ndjsonToObject(resp.text); - it('should return 400 when exporting more than allowed by maxImportExportSize', async () => { - let anotherCustomVisId: string; - await supertest - .post('/api/saved_objects/visualization') - .send({ + // Sort values aren't deterministic so we need to exclude them + const { sort, ...obj } = objects[0]; + expect(obj).to.eql({ attributes: { - title: 'My other favorite vis', + description: '', + hits: 0, + kibanaSavedObjectMeta: { + searchSourceJSON: objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON, + }, + optionsJSON: objects[0].attributes.optionsJSON, + panelsJSON: objects[0].attributes.panelsJSON, + refreshInterval: { + display: 'Off', + pause: false, + value: 0, + }, + timeFrom: 'Wed Sep 16 2015 22:52:17 GMT-0700', + timeRestore: true, + timeTo: 'Fri Sep 18 2015 12:24:38 GMT-0700', + title: 'Requests', + version: 1, }, - }) - .expect(200) - .then((resp) => { - anotherCustomVisId = resp.body.id; - }); - await supertest - .post('/api/saved_objects/_export') - .send({ - type: ['dashboard', 'visualization', 'search', 'index-pattern'], - excludeExportDetails: true, - }) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: `Can't export more than 10001 objects. If your server has enough memory, this limit can be increased by adjusting the \"savedObjects.maxImportExportSize\" setting.`, - }); + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + migrationVersion: objects[0].migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + references: [ + { + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + name: '1:panel_1', + type: 'visualization', + }, + ], + type: 'dashboard', + updated_at: objects[0].updated_at, + version: objects[0].version, }); - await supertest - // @ts-expect-error TS complains about using `anotherCustomVisId` before it is assigned - .delete(`/api/saved_objects/visualization/${anotherCustomVisId}`) - .expect(200); - }); + expect(objects[0].migrationVersion).to.be.ok(); + expect(() => + JSON.parse(objects[0].attributes.kibanaSavedObjectMeta.searchSourceJSON) + ).not.to.throwError(); + expect(() => JSON.parse(objects[0].attributes.optionsJSON)).not.to.throwError(); + expect(() => JSON.parse(objects[0].attributes.panelsJSON)).not.to.throwError(); + }); }); - }); - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); + it('should return 400 when exporting by type and objects', async () => { + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: 'dashboard', + objects: [ + { + type: 'dashboard', + id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + }, + ], + excludeExportDetails: true, + }) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: `Can't specify both "types" and "objects" properties when exporting`, + }); + }); + }); - it('should return empty response', async () => { + it('should allow exporting more than 10,000 objects if permitted by maxImportExportSize', async () => { await supertest - .post('/api/saved_objects/_export') + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) .send({ - type: ['index-pattern', 'search', 'visualization', 'dashboard'], + type: ['dashboard', 'visualization', 'search', 'index-pattern'], excludeExportDetails: true, }) .expect(200) .then((resp) => { - expect(resp.text).to.eql(''); + expect(resp.header['content-disposition']).to.eql( + 'attachment; filename="export.ndjson"' + ); + expect(resp.header['content-type']).to.eql('application/ndjson'); + const objects = ndjsonToObject(resp.text); + expect(objects.length).to.eql(10001); + }); + }); + + it('should return 400 when exporting more than allowed by maxImportExportSize', async () => { + let anotherCustomVisId: string; + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/visualization`) + .send({ + attributes: { + title: 'My other favorite vis', + }, + }) + .expect(200) + .then((resp) => { + anotherCustomVisId = resp.body.id; + }); + await supertest + .post(`/s/${SPACE_ID}/api/saved_objects/_export`) + .send({ + type: ['dashboard', 'visualization', 'search', 'index-pattern'], + excludeExportDetails: true, + }) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: `Can't export more than 10001 objects. If your server has enough memory, this limit can be increased by adjusting the \"savedObjects.maxImportExportSize\" setting.`, + }); }); + await supertest + // @ts-expect-error TS complains about using `anotherCustomVisId` before it is assigned + .delete(`/s/${SPACE_ID}/api/saved_objects/visualization/${anotherCustomVisId}`) + .expect(200); }); }); }); diff --git a/test/api_integration/apis/saved_objects/find.ts b/test/api_integration/apis/saved_objects/find.ts index a4862707e2d0e..4d99061f322a5 100644 --- a/test/api_integration/apis/saved_objects/find.ts +++ b/test/api_integration/apis/saved_objects/find.ts @@ -12,303 +12,317 @@ import { SavedObject } from '../../../../src/core/server'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); + const SPACE_ID = 'ftr-so-find'; describe('find', () => { - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + before(async () => { + await kibanaServer.importExport.load('saved_objects/basic', { space: SPACE_ID }); + await kibanaServer.importExport.load('saved_objects/basic/foo-ns', { + space: `${SPACE_ID}-foo`, + }); + }); - it('should return 200 with individual responses', async () => + after(() => kibanaServer.spaces.delete(SPACE_ID)); + + it('should return 200 with individual responses', async () => + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&fields=title`) + .expect(200) + .then((resp) => { + expect(resp.body.saved_objects.map((so: { id: string }) => so.id)).to.eql([ + 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + ]); + expect(resp.body.saved_objects[0].migrationVersion).to.be.ok(); + })); + + describe('unknown type', () => { + it('should return 200 with empty response', async () => await supertest - .get('/api/saved_objects/_find?type=visualization&fields=title') + .get(`/s/${SPACE_ID}/api/saved_objects/_find?type=wigwags`) .expect(200) .then((resp) => { - expect(resp.body.saved_objects.map((so: { id: string }) => so.id)).to.eql([ - 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - ]); - expect(resp.body.saved_objects[0].migrationVersion).to.be.ok(); + expect(resp.body).to.eql({ + page: 1, + per_page: 20, + total: 0, + saved_objects: [], + }); })); + }); - describe('unknown type', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=wigwags') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - }); + // FLAKY: https://github.com/elastic/kibana/issues/85911 + describe.skip('page beyond total', () => { + it('should return 200 with empty response', async () => + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&page=100&per_page=100`) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + page: 100, + per_page: 100, + total: 1, + saved_objects: [], + }); + })); + }); - // FLAKY: https://github.com/elastic/kibana/issues/85911 - describe.skip('page beyond total', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=visualization&page=100&per_page=100') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 100, - per_page: 100, - total: 1, - saved_objects: [], - }); - })); - }); + describe('unknown search field', () => { + it('should return 200 with empty response', async () => + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find?type=url&search_fields=a`) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + page: 1, + per_page: 20, + total: 0, + saved_objects: [], + }); + })); + }); - describe('unknown search field', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=url&search_fields=a') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - }); + describe('unknown namespace', () => { + it('should return 200 with empty response', async () => + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&namespaces=foo`) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + page: 1, + per_page: 20, + total: 0, + saved_objects: [], + }); + })); + }); - describe('unknown namespace', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=visualization&namespaces=foo') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - }); + describe('known namespace', () => { + it('should return 200 with individual responses', async () => + await supertest + .get(`/api/saved_objects/_find?type=visualization&fields=title&namespaces=${SPACE_ID}`) + .expect(200) + .then((resp) => { + expect( + resp.body.saved_objects.map((so: { id: string; namespaces: string[] }) => ({ + id: so.id, + namespaces: so.namespaces, + })) + ).to.eql([{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: [SPACE_ID] }]); + expect(resp.body.saved_objects[0].migrationVersion).to.be.ok(); + })); + }); - describe('known namespace', () => { - it('should return 200 with individual responses', async () => - await supertest - .get('/api/saved_objects/_find?type=visualization&fields=title&namespaces=default') - .expect(200) - .then((resp) => { - expect( - resp.body.saved_objects.map((so: { id: string; namespaces: string[] }) => ({ - id: so.id, - namespaces: so.namespaces, - })) - ).to.eql([{ id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: ['default'] }]); - expect(resp.body.saved_objects[0].migrationVersion).to.be.ok(); - })); - }); + describe('wildcard namespace', () => { + it('should return 200 with individual responses from the all namespaces', async () => + await supertest + .get(`/api/saved_objects/_find?type=visualization&fields=title&namespaces=*`) + .expect(200) + .then((resp) => { + const knownDocuments = resp.body.saved_objects.filter((so: { namespaces: string[] }) => + so.namespaces.some((ns) => [SPACE_ID, `${SPACE_ID}-foo`].includes(ns)) + ); - describe('wildcard namespace', () => { - it('should return 200 with individual responses from the all namespaces', async () => - await supertest - .get('/api/saved_objects/_find?type=visualization&fields=title&namespaces=*') - .expect(200) - .then((resp) => { - expect( - resp.body.saved_objects.map((so: { id: string; namespaces: string[] }) => ({ - id: so.id, - namespaces: so.namespaces, - })) - ).to.eql([ - { id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: ['default'] }, - { id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: ['foo-ns'] }, - ]); - })); - }); + expect( + knownDocuments.map((so: { id: string; namespaces: string[] }) => ({ + id: so.id, + namespaces: so.namespaces, + })) + ).to.eql([ + { id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: [SPACE_ID] }, + { id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', namespaces: [`${SPACE_ID}-foo`] }, + ]); + })); + }); - describe('with a filter', () => { - it('should return 200 with a valid response', async () => - await supertest - .get( - '/api/saved_objects/_find?type=visualization&filter=visualization.attributes.title:"Count of requests"' - ) - .expect(200) - .then((resp) => { - expect(resp.body.saved_objects.map((so: { id: string }) => so.id)).to.eql([ - 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - ]); - })); + describe('with a filter', () => { + it('should return 200 with a valid response', async () => + await supertest + .get( + `/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&filter=visualization.attributes.title:"Count of requests"` + ) + .expect(200) + .then((resp) => { + expect(resp.body.saved_objects.map((so: { id: string }) => so.id)).to.eql([ + 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + ]); + })); - it('wrong type should return 400 with Bad Request', async () => - await supertest - .get( - '/api/saved_objects/_find?type=visualization&filter=dashboard.attributes.title:foo' - ) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: 'This type dashboard is not allowed: Bad Request', - statusCode: 400, - }); - })); + it('wrong type should return 400 with Bad Request', async () => + await supertest + .get( + `/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&filter=dashboard.attributes.title:foo` + ) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + error: 'Bad Request', + message: 'This type dashboard is not allowed: Bad Request', + statusCode: 400, + }); + })); - it('KQL syntax error should return 400 with Bad Request', async () => - await supertest - .get( - '/api/saved_objects/_find?type=dashboard&filter=dashboard.attributes.title:foo { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: - 'KQLSyntaxError: Expected AND, OR, end of input but "<" found.\ndashboard.' + - 'attributes.title:foo + await supertest + .get( + `/s/${SPACE_ID}/api/saved_objects/_find?type=dashboard&filter=dashboard.attributes.title:foo { + expect(resp.body).to.eql({ + error: 'Bad Request', + message: + 'KQLSyntaxError: Expected AND, OR, end of input but "<" found.\ndashboard.' + + 'attributes.title:foo { - it('should return 200 with valid response for a valid aggregation', async () => - await supertest - .get( - `/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent( - JSON.stringify({ - type_count: { max: { field: 'visualization.attributes.version' } }, - }) - )}` - ) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - aggregations: { - type_count: { - value: 1, - }, + describe('using aggregations', () => { + it('should return 200 with valid response for a valid aggregation', async () => + await supertest + .get( + `/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent( + JSON.stringify({ + type_count: { max: { field: 'visualization.attributes.version' } }, + }) + )}` + ) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + aggregations: { + type_count: { + value: 1, }, - page: 1, - per_page: 0, - saved_objects: [], - total: 1, - }); - })); + }, + page: 1, + per_page: 0, + saved_objects: [], + total: 1, + }); + })); - it('should return a 400 when referencing an invalid SO attribute', async () => - await supertest - .get( - `/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent( - JSON.stringify({ - type_count: { max: { field: 'dashboard.attributes.version' } }, - }) - )}` - ) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: - 'Invalid aggregation: [type_count.max.field] Invalid attribute path: dashboard.attributes.version: Bad Request', - statusCode: 400, - }); - })); + it('should return a 400 when referencing an invalid SO attribute', async () => + await supertest + .get( + `/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent( + JSON.stringify({ + type_count: { max: { field: 'dashboard.attributes.version' } }, + }) + )}` + ) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + error: 'Bad Request', + message: + 'Invalid aggregation: [type_count.max.field] Invalid attribute path: dashboard.attributes.version: Bad Request', + statusCode: 400, + }); + })); - it('should return a 400 when using a forbidden aggregation option', async () => - await supertest - .get( - `/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent( - JSON.stringify({ - type_count: { - max: { - field: 'visualization.attributes.version', - script: 'Bad script is bad', - }, + it('should return a 400 when using a forbidden aggregation option', async () => + await supertest + .get( + `/s/${SPACE_ID}/api/saved_objects/_find?type=visualization&per_page=0&aggs=${encodeURIComponent( + JSON.stringify({ + type_count: { + max: { + field: 'visualization.attributes.version', + script: 'Bad script is bad', }, - }) - )}` - ) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: - 'Invalid aggregation: [type_count.max.script]: definition for this key is missing: Bad Request', - statusCode: 400, - }); - })); - }); + }, + }) + )}` + ) + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + error: 'Bad Request', + message: + 'Invalid aggregation: [type_count.max.script]: definition for this key is missing: Bad Request', + statusCode: 400, + }); + })); + }); - describe('`has_reference` and `has_reference_operator` parameters', () => { - before(() => esArchiver.load('saved_objects/references')); - after(() => esArchiver.unload('saved_objects/references')); + describe('`has_reference` and `has_reference_operator` parameters', () => { + before(() => kibanaServer.importExport.load('saved_objects/references', { space: SPACE_ID })); + after(() => + kibanaServer.importExport.unload('saved_objects/references', { space: SPACE_ID }) + ); - it('search for a reference', async () => { - await supertest - .get('/api/saved_objects/_find') - .query({ - type: 'visualization', - has_reference: JSON.stringify({ type: 'ref-type', id: 'ref-1' }), - }) - .expect(200) - .then((resp) => { - const objects = resp.body.saved_objects; - expect(objects.map((obj: SavedObject) => obj.id)).to.eql([ - 'only-ref-1', - 'ref-1-and-ref-2', - ]); - }); - }); + it('search for a reference', async () => { + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) + .query({ + type: 'visualization', + has_reference: JSON.stringify({ type: 'ref-type', id: 'ref-1' }), + }) + .expect(200) + .then((resp) => { + const objects = resp.body.saved_objects; + expect(objects.map((obj: SavedObject) => obj.id)).to.eql([ + 'only-ref-1', + 'ref-1-and-ref-2', + ]); + }); + }); - it('search for multiple references with OR operator', async () => { - await supertest - .get('/api/saved_objects/_find') - .query({ - type: 'visualization', - has_reference: JSON.stringify([ - { type: 'ref-type', id: 'ref-1' }, - { type: 'ref-type', id: 'ref-2' }, - ]), - has_reference_operator: 'OR', - }) - .expect(200) - .then((resp) => { - const objects = resp.body.saved_objects; - expect(objects.map((obj: SavedObject) => obj.id)).to.eql([ - 'only-ref-1', - 'ref-1-and-ref-2', - 'only-ref-2', - ]); - }); - }); + it('search for multiple references with OR operator', async () => { + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) + .query({ + type: 'visualization', + has_reference: JSON.stringify([ + { type: 'ref-type', id: 'ref-1' }, + { type: 'ref-type', id: 'ref-2' }, + ]), + has_reference_operator: 'OR', + }) + .expect(200) + .then((resp) => { + const objects = resp.body.saved_objects; + expect(objects.map((obj: SavedObject) => obj.id)).to.eql([ + 'only-ref-1', + 'only-ref-2', + 'ref-1-and-ref-2', + ]); + }); + }); - it('search for multiple references with AND operator', async () => { - await supertest - .get('/api/saved_objects/_find') - .query({ - type: 'visualization', - has_reference: JSON.stringify([ - { type: 'ref-type', id: 'ref-1' }, - { type: 'ref-type', id: 'ref-2' }, - ]), - has_reference_operator: 'AND', - }) - .expect(200) - .then((resp) => { - const objects = resp.body.saved_objects; - expect(objects.map((obj: SavedObject) => obj.id)).to.eql(['ref-1-and-ref-2']); - }); - }); + it('search for multiple references with AND operator', async () => { + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) + .query({ + type: 'visualization', + has_reference: JSON.stringify([ + { type: 'ref-type', id: 'ref-1' }, + { type: 'ref-type', id: 'ref-2' }, + ]), + has_reference_operator: 'AND', + }) + .expect(200) + .then((resp) => { + const objects = resp.body.saved_objects; + expect(objects.map((obj: SavedObject) => obj.id)).to.eql(['ref-1-and-ref-2']); + }); }); }); describe('searching for special characters', () => { - before(() => esArchiver.load('saved_objects/find_edgecases')); - after(() => esArchiver.unload('saved_objects/find_edgecases')); + before(() => + kibanaServer.importExport.load('saved_objects/find_edgecases', { space: SPACE_ID }) + ); + after(() => + kibanaServer.importExport.unload('saved_objects/find_edgecases', { space: SPACE_ID }) + ); it('can search for objects with dashes', async () => await supertest - .get('/api/saved_objects/_find') + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) .query({ type: 'visualization', search_fields: 'title', @@ -324,7 +338,7 @@ export default function ({ getService }: FtrProviderContext) { it('can search with the prefix search character just after a special one', async () => await supertest - .get('/api/saved_objects/_find') + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) .query({ type: 'visualization', search_fields: 'title', @@ -340,7 +354,7 @@ export default function ({ getService }: FtrProviderContext) { it('can search for objects with asterisk', async () => await supertest - .get('/api/saved_objects/_find') + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) .query({ type: 'visualization', search_fields: 'title', @@ -356,7 +370,7 @@ export default function ({ getService }: FtrProviderContext) { it('can still search tokens by prefix', async () => await supertest - .get('/api/saved_objects/_find') + .get(`/s/${SPACE_ID}/api/saved_objects/_find`) .query({ type: 'visualization', search_fields: 'title', @@ -367,120 +381,8 @@ export default function ({ getService }: FtrProviderContext) { const savedObjects = resp.body.saved_objects; expect( savedObjects.map((so: SavedObject<{ title: string }>) => so.attributes.title) - ).to.eql(['my-visualization', 'some*visualization']); + ).to.eql(['some*visualization', 'my-visualization']); })); }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=visualization') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - - describe('unknown type', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=wigwags') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - }); - - describe('missing type', () => { - it('should return 400', async () => - await supertest - .get('/api/saved_objects/_find') - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: - '[request query.type]: expected at least one defined value but got [undefined]', - statusCode: 400, - }); - })); - }); - - describe('page beyond total', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=visualization&page=100&per_page=100') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 100, - per_page: 100, - total: 0, - saved_objects: [], - }); - })); - }); - - describe('unknown search field', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/saved_objects/_find?type=url&search_fields=a') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - }); - - describe('with a filter', () => { - it('should return 200 with an empty response', async () => - await supertest - .get( - '/api/saved_objects/_find?type=visualization&filter=visualization.attributes.title:"Count of requests"' - ) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - - it('wrong type should return 400 with Bad Request', async () => - await supertest - .get( - '/api/saved_objects/_find?type=visualization&filter=dashboard.attributes.title:foo' - ) - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: 'This type dashboard is not allowed: Bad Request', - statusCode: 400, - }); - })); - }); - }); }); } diff --git a/test/api_integration/apis/saved_objects/get.ts b/test/api_integration/apis/saved_objects/get.ts index 84ab6e36956d5..77d7b4faacb41 100644 --- a/test/api_integration/apis/saved_objects/get.ts +++ b/test/api_integration/apis/saved_objects/get.ts @@ -12,84 +12,59 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('get', () => { let KIBANA_VERSION: string; before(async () => { KIBANA_VERSION = await getKibanaVersion(getService); + await kibanaServer.importExport.load('saved_objects/basic'); }); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); - - it('should return 200', async () => - await supertest - .get(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - type: 'visualization', - updated_at: '2017-09-21T18:51:23.794Z', - version: resp.body.version, - migrationVersion: resp.body.migrationVersion, - coreMigrationVersion: KIBANA_VERSION, - attributes: { - title: 'Count of requests', - description: '', - version: 1, - // cheat for some of the more complex attributes - visState: resp.body.attributes.visState, - uiStateJSON: resp.body.attributes.uiStateJSON, - kibanaSavedObjectMeta: resp.body.attributes.kibanaSavedObjectMeta, + it('should return 200', async () => + await supertest + .get(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + type: 'visualization', + updated_at: resp.body.updated_at, + version: resp.body.version, + migrationVersion: resp.body.migrationVersion, + coreMigrationVersion: KIBANA_VERSION, + attributes: { + title: 'Count of requests', + description: '', + version: 1, + // cheat for some of the more complex attributes + visState: resp.body.attributes.visState, + uiStateJSON: resp.body.attributes.uiStateJSON, + kibanaSavedObjectMeta: resp.body.attributes.kibanaSavedObjectMeta, + }, + references: [ + { + type: 'index-pattern', + name: 'kibanaSavedObjectMeta.searchSourceJSON.index', + id: '91200a00-9efd-11e7-acb3-3dab96693fab', }, - references: [ - { - type: 'index-pattern', - name: 'kibanaSavedObjectMeta.searchSourceJSON.index', - id: '91200a00-9efd-11e7-acb3-3dab96693fab', - }, - ], - namespaces: ['default'], - }); - expect(resp.body.migrationVersion).to.be.ok(); - })); - - describe('doc does not exist', () => { - it('should return same generic error as when index does not exist', async () => - await supertest - .get(`/api/saved_objects/visualization/foobar`) - .expect(404) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Not Found', - message: 'Saved object [visualization/foobar] not found', - statusCode: 404, - }); - })); - }); - }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); + ], + namespaces: ['default'], + }); + expect(resp.body.migrationVersion).to.be.ok(); + })); - it('should return basic 404 without mentioning index', async () => + describe('doc does not exist', () => { + it('should return same generic error as when index does not exist', async () => await supertest - .get('/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab') + .get(`/api/saved_objects/visualization/foobar`) .expect(404) .then((resp) => { expect(resp.body).to.eql({ error: 'Not Found', - message: - 'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] not found', + message: 'Saved object [visualization/foobar] not found', statusCode: 404, }); })); diff --git a/test/api_integration/apis/saved_objects/import.ts b/test/api_integration/apis/saved_objects/import.ts index d463b9498a52a..8d3c0b7bbcea3 100644 --- a/test/api_integration/apis/saved_objects/import.ts +++ b/test/api_integration/apis/saved_objects/import.ts @@ -22,7 +22,7 @@ const createConflictError = ( export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('import', () => { // mock success results including metadata @@ -42,199 +42,197 @@ export default function ({ getService }: FtrProviderContext) { meta: { title: 'Requests', icon: 'dashboardApp' }, }; - describe('with kibana index', () => { - describe('with basic data existing', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + describe('with basic data existing', () => { + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); - it('should return 415 when no file passed in', async () => { - await supertest - .post('/api/saved_objects/_import') - .expect(415) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 415, - error: 'Unsupported Media Type', - message: 'Unsupported Media Type', - }); + it('should return 415 when no file passed in', async () => { + await supertest + .post('/api/saved_objects/_import') + .expect(415) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 415, + error: 'Unsupported Media Type', + message: 'Unsupported Media Type', }); - }); + }); + }); - it('should return errors when conflicts exist', async () => { - await supertest - .post('/api/saved_objects/_import') - .attach('file', join(__dirname, '../../fixtures/import.ndjson')) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: false, - successCount: 0, - errors: [ - createConflictError(indexPattern), - createConflictError(visualization), - createConflictError(dashboard), - ], - warnings: [], - }); + it('should return errors when conflicts exist', async () => { + await supertest + .post('/api/saved_objects/_import') + .attach('file', join(__dirname, '../../fixtures/import.ndjson')) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + success: false, + successCount: 0, + errors: [ + createConflictError(indexPattern), + createConflictError(visualization), + createConflictError(dashboard), + ], + warnings: [], }); - }); + }); + }); - it('should return 200 when conflicts exist but overwrite is passed in', async () => { - await supertest - .post('/api/saved_objects/_import') - .query({ overwrite: true }) - .attach('file', join(__dirname, '../../fixtures/import.ndjson')) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: true, - successCount: 3, - successResults: [ - { ...indexPattern, overwrite: true }, - { ...visualization, overwrite: true }, - { ...dashboard, overwrite: true }, - ], - warnings: [], - }); + it('should return 200 when conflicts exist but overwrite is passed in', async () => { + await supertest + .post('/api/saved_objects/_import') + .query({ overwrite: true }) + .attach('file', join(__dirname, '../../fixtures/import.ndjson')) + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + success: true, + successCount: 3, + successResults: [ + { ...indexPattern, overwrite: true }, + { ...visualization, overwrite: true }, + { ...dashboard, overwrite: true }, + ], + warnings: [], }); - }); + }); + }); - it('should return 200 when trying to import unsupported types', async () => { - const fileBuffer = Buffer.from( - '{"id":"1","type":"wigwags","attributes":{"title":"my title"},"references":[]}', - 'utf8' - ); - await supertest - .post('/api/saved_objects/_import') - .attach('file', fileBuffer, 'export.ndjson') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: false, - successCount: 0, - errors: [ - { - id: '1', - type: 'wigwags', - title: 'my title', - meta: { title: 'my title' }, - error: { type: 'unsupported_type' }, - }, - ], - warnings: [], - }); + it('should return 200 when trying to import unsupported types', async () => { + const fileBuffer = Buffer.from( + '{"id":"1","type":"wigwags","attributes":{"title":"my title"},"references":[]}', + 'utf8' + ); + await supertest + .post('/api/saved_objects/_import') + .attach('file', fileBuffer, 'export.ndjson') + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + success: false, + successCount: 0, + errors: [ + { + id: '1', + type: 'wigwags', + title: 'my title', + meta: { title: 'my title' }, + error: { type: 'unsupported_type' }, + }, + ], + warnings: [], }); - }); + }); + }); - it('should return 200 when importing SO with circular refs', async () => { - const fileBuffer = Buffer.from( - dedent` - {"attributes":{"title":"dashboard-b"},"id":"dashboard-b","references":[{"id":"dashboard-a","name":"circular-dashboard-ref","type":"dashboard"}],"type":"dashboard"} - {"attributes":{"title":"dashboard-a"},"id":"dashboard-a","references":[{"id":"dashboard-b","name":"circular-dashboard-ref","type":"dashboard"}],"type":"dashboard"} - `, - 'utf8' - ); - const resp = await supertest - .post('/api/saved_objects/_import') - .attach('file', fileBuffer, 'export.ndjson') - .expect(200); + it('should return 200 when importing SO with circular refs', async () => { + const fileBuffer = Buffer.from( + dedent` + {"attributes":{"title":"dashboard-b"},"id":"dashboard-b","references":[{"id":"dashboard-a","name":"circular-dashboard-ref","type":"dashboard"}],"type":"dashboard"} + {"attributes":{"title":"dashboard-a"},"id":"dashboard-a","references":[{"id":"dashboard-b","name":"circular-dashboard-ref","type":"dashboard"}],"type":"dashboard"} + `, + 'utf8' + ); + const resp = await supertest + .post('/api/saved_objects/_import') + .attach('file', fileBuffer, 'export.ndjson') + .expect(200); - expect(resp.body).to.eql({ - success: true, - successCount: 2, - successResults: [ - { - id: 'dashboard-b', - meta: { - icon: 'dashboardApp', - title: 'dashboard-b', - }, - type: 'dashboard', + expect(resp.body).to.eql({ + success: true, + successCount: 2, + successResults: [ + { + id: 'dashboard-b', + meta: { + icon: 'dashboardApp', + title: 'dashboard-b', }, - { - id: 'dashboard-a', - meta: { - icon: 'dashboardApp', - title: 'dashboard-a', - }, - type: 'dashboard', + type: 'dashboard', + }, + { + id: 'dashboard-a', + meta: { + icon: 'dashboardApp', + title: 'dashboard-a', }, - ], - warnings: [], - }); + type: 'dashboard', + }, + ], + warnings: [], }); + }); - it('should return 400 when trying to import more than 10,000 objects', async () => { - const fileChunks = []; - for (let i = 0; i <= 10001; i++) { - fileChunks.push(`{"type":"visualization","id":"${i}","attributes":{},"references":[]}`); - } - await supertest - .post('/api/saved_objects/_import') - .attach('file', Buffer.from(fileChunks.join('\n'), 'utf8'), 'export.ndjson') - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: "Can't import more than 10001 objects", - }); + it('should return 400 when trying to import more than 10,000 objects', async () => { + const fileChunks = []; + for (let i = 0; i <= 10001; i++) { + fileChunks.push(`{"type":"visualization","id":"${i}","attributes":{},"references":[]}`); + } + await supertest + .post('/api/saved_objects/_import') + .attach('file', Buffer.from(fileChunks.join('\n'), 'utf8'), 'export.ndjson') + .expect(400) + .then((resp) => { + expect(resp.body).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: "Can't import more than 10001 objects", }); - }); + }); + }); - it('should return errors when index patterns or search are missing', async () => { - const objectsToImport = [ - JSON.stringify({ - type: 'visualization', - id: '1', - attributes: { title: 'My visualization' }, - references: [ - { - name: 'ref_0', - type: 'index-pattern', - id: 'non-existing', - }, + it('should return errors when index patterns or search are missing', async () => { + const objectsToImport = [ + JSON.stringify({ + type: 'visualization', + id: '1', + attributes: { title: 'My visualization' }, + references: [ + { + name: 'ref_0', + type: 'index-pattern', + id: 'non-existing', + }, + { + name: 'ref_1', + type: 'search', + id: 'non-existing-search', + }, + ], + }), + ]; + await supertest + .post('/api/saved_objects/_import') + .attach('file', Buffer.from(objectsToImport.join('\n'), 'utf8'), 'export.ndjson') + .expect(200) + .then((resp) => { + expect(resp.body).to.eql({ + success: false, + successCount: 0, + errors: [ { - name: 'ref_1', - type: 'search', - id: 'non-existing-search', + type: 'visualization', + id: '1', + title: 'My visualization', + meta: { title: 'My visualization', icon: 'visualizeApp' }, + error: { + type: 'missing_references', + references: [ + { + type: 'index-pattern', + id: 'non-existing', + }, + { + type: 'search', + id: 'non-existing-search', + }, + ], + }, }, ], - }), - ]; - await supertest - .post('/api/saved_objects/_import') - .attach('file', Buffer.from(objectsToImport.join('\n'), 'utf8'), 'export.ndjson') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: false, - successCount: 0, - errors: [ - { - type: 'visualization', - id: '1', - title: 'My visualization', - meta: { title: 'My visualization', icon: 'visualizeApp' }, - error: { - type: 'missing_references', - references: [ - { - type: 'index-pattern', - id: 'non-existing', - }, - { - type: 'search', - id: 'non-existing-search', - }, - ], - }, - }, - ], - warnings: [], - }); + warnings: [], }); - }); + }); }); }); }); diff --git a/test/api_integration/apis/saved_objects/resolve.ts b/test/api_integration/apis/saved_objects/resolve.ts index 9c17dcde8ba22..fcfef0aeb6b58 100644 --- a/test/api_integration/apis/saved_objects/resolve.ts +++ b/test/api_integration/apis/saved_objects/resolve.ts @@ -12,8 +12,7 @@ import { getKibanaVersion } from './lib/saved_objects_test_utils'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('resolve', () => { let KIBANA_VERSION: string; @@ -23,19 +22,21 @@ export default function ({ getService }: FtrProviderContext) { }); describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); it('should return 200', async () => await supertest .get(`/api/saved_objects/resolve/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) .expect(200) .then((resp) => { + resp.body.saved_object.updated_at = '2015-01-01T00:00:00.000Z'; + expect(resp.body).to.eql({ saved_object: { id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', type: 'visualization', - updated_at: '2017-09-21T18:51:23.794Z', + updated_at: '2015-01-01T00:00:00.000Z', version: resp.body.saved_object.version, migrationVersion: resp.body.saved_object.migrationVersion, coreMigrationVersion: KIBANA_VERSION, @@ -76,26 +77,5 @@ export default function ({ getService }: FtrProviderContext) { })); }); }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana') - ); - - it('should return basic 404 without mentioning index', async () => - await supertest - .get('/api/saved_objects/resolve/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab') - .expect(404) - .then((resp) => { - expect(resp.body).to.eql({ - error: 'Not Found', - message: - 'Saved object [visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab] not found', - statusCode: 404, - }); - })); - }); }); } diff --git a/test/api_integration/apis/saved_objects/resolve_import_errors.ts b/test/api_integration/apis/saved_objects/resolve_import_errors.ts index b93f3a52d73d9..8ac6b3be13063 100644 --- a/test/api_integration/apis/saved_objects/resolve_import_errors.ts +++ b/test/api_integration/apis/saved_objects/resolve_import_errors.ts @@ -12,8 +12,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('resolve_import_errors', () => { // mock success results including metadata @@ -32,49 +31,42 @@ export default function ({ getService }: FtrProviderContext) { id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', meta: { title: 'Requests', icon: 'dashboardApp' }, }; + const SPACE_ID = 'ftr-so-resolve_import_errors'; - describe('without kibana index', () => { - // Cleanup data that got created in import - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); + describe('with basic data existing', () => { + before(() => kibanaServer.importExport.load('saved_objects/basic', { space: SPACE_ID })); + after(() => kibanaServer.spaces.delete(SPACE_ID)); - it('should return 200 and import nothing when empty parameters are passed in', async () => { + it('should return 200 when skipping all the records', async () => { await supertest - .post('/api/saved_objects/_resolve_import_errors') + .post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`) .field('retries', '[]') .attach('file', join(__dirname, '../../fixtures/import.ndjson')) .expect(200) .then((resp) => { - expect(resp.body).to.eql({ - success: true, - successCount: 0, - warnings: [], - }); + expect(resp.body).to.eql({ success: true, successCount: 0, warnings: [] }); }); }); - it('should return 200 with internal server errors', async () => { + it('should return 200 when manually overwriting each object', async () => { await supertest - .post('/api/saved_objects/_resolve_import_errors') + .post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`) .field( 'retries', JSON.stringify([ { - type: 'index-pattern', id: '91200a00-9efd-11e7-acb3-3dab96693fab', + type: 'index-pattern', overwrite: true, }, { - type: 'visualization', id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + type: 'visualization', overwrite: true, }, { - type: 'dashboard', id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', + type: 'dashboard', overwrite: true, }, ]) @@ -83,110 +75,44 @@ export default function ({ getService }: FtrProviderContext) { .expect(200) .then((resp) => { expect(resp.body).to.eql({ - successCount: 0, - success: false, - errors: [ - { - ...indexPattern, - ...{ title: indexPattern.meta.title }, - overwrite: true, - error: { - statusCode: 500, - error: 'Internal Server Error', - message: 'An internal server error occurred', - type: 'unknown', - }, - }, - { - ...visualization, - ...{ title: visualization.meta.title }, - overwrite: true, - error: { - statusCode: 500, - error: 'Internal Server Error', - message: 'An internal server error occurred', - type: 'unknown', - }, - }, - { - ...dashboard, - ...{ title: dashboard.meta.title }, - overwrite: true, - error: { - statusCode: 500, - error: 'Internal Server Error', - message: 'An internal server error occurred', - type: 'unknown', - }, - }, + success: true, + successCount: 3, + successResults: [ + { ...indexPattern, overwrite: true }, + { ...visualization, overwrite: true }, + { ...dashboard, overwrite: true }, ], warnings: [], }); }); }); - it('should return 400 when no file passed in', async () => { + it('should return 200 with only one record when overwriting 1 and skipping 1', async () => { await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field('retries', '[]') - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: '[request body.file]: expected value of type [Stream] but got [undefined]', - }); - }); - }); - - it('should return 200 when retrying unsupported types', async () => { - const fileBuffer = Buffer.from( - '{"id":"1","type":"wigwags","attributes":{"title":"my title"},"references":[]}', - 'utf8' - ); - await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field('retries', JSON.stringify([{ type: 'wigwags', id: '1' }])) - .attach('file', fileBuffer, 'export.ndjson') + .post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`) + .field( + 'retries', + JSON.stringify([ + { + id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', + type: 'visualization', + overwrite: true, + }, + ]) + ) + .attach('file', join(__dirname, '../../fixtures/import.ndjson')) .expect(200) .then((resp) => { expect(resp.body).to.eql({ - success: false, - successCount: 0, - errors: [ - { - id: '1', - type: 'wigwags', - title: 'my title', - meta: { title: 'my title' }, - error: { type: 'unsupported_type' }, - }, - ], + success: true, + successCount: 1, + successResults: [{ ...visualization, overwrite: true }], warnings: [], }); }); }); - it('should return 400 when resolving conflicts with a file containing more than 10,001 objects', async () => { - const fileChunks = []; - for (let i = 0; i <= 10001; i++) { - fileChunks.push(`{"type":"visualization","id":"${i}","attributes":{},"references":[]}`); - } - await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field('retries', '[]') - .attach('file', Buffer.from(fileChunks.join('\n'), 'utf8'), 'export.ndjson') - .expect(400) - .then((resp) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: "Can't import more than 10001 objects", - }); - }); - }); - - it('should return 200 with errors when missing references', async () => { + it('should return 200 when replacing references', async () => { const objToInsert = { id: '1', type: 'visualization', @@ -203,13 +129,20 @@ export default function ({ getService }: FtrProviderContext) { ], }; await supertest - .post('/api/saved_objects/_resolve_import_errors') + .post(`/s/${SPACE_ID}/api/saved_objects/_resolve_import_errors`) .field( 'retries', JSON.stringify([ { type: 'visualization', id: '1', + replaceReferences: [ + { + type: 'index-pattern', + from: '2', + to: '91200a00-9efd-11e7-acb3-3dab96693fab', + }, + ], }, ]) ) @@ -217,174 +150,30 @@ export default function ({ getService }: FtrProviderContext) { .expect(200) .then((resp) => { expect(resp.body).to.eql({ - success: false, - successCount: 0, - errors: [ + success: true, + successCount: 1, + successResults: [ { - id: '1', type: 'visualization', - title: 'My favorite vis', + id: '1', meta: { title: 'My favorite vis', icon: 'visualizeApp' }, - error: { - type: 'missing_references', - references: [ - { - type: 'index-pattern', - id: '2', - }, - ], - }, }, ], warnings: [], }); }); - }); - }); - - describe('with kibana index', () => { - describe('with basic data existing', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); - - it('should return 200 when skipping all the records', async () => { - await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field('retries', '[]') - .attach('file', join(__dirname, '../../fixtures/import.ndjson')) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ success: true, successCount: 0, warnings: [] }); - }); - }); - - it('should return 200 when manually overwriting each object', async () => { - await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field( - 'retries', - JSON.stringify([ - { - id: '91200a00-9efd-11e7-acb3-3dab96693fab', - type: 'index-pattern', - overwrite: true, - }, - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - type: 'visualization', - overwrite: true, - }, - { - id: 'be3733a0-9efe-11e7-acb3-3dab96693fab', - type: 'dashboard', - overwrite: true, - }, - ]) - ) - .attach('file', join(__dirname, '../../fixtures/import.ndjson')) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: true, - successCount: 3, - successResults: [ - { ...indexPattern, overwrite: true }, - { ...visualization, overwrite: true }, - { ...dashboard, overwrite: true }, - ], - warnings: [], - }); - }); - }); - - it('should return 200 with only one record when overwriting 1 and skipping 1', async () => { - await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field( - 'retries', - JSON.stringify([ - { - id: 'dd7caf20-9efd-11e7-acb3-3dab96693fab', - type: 'visualization', - overwrite: true, - }, - ]) - ) - .attach('file', join(__dirname, '../../fixtures/import.ndjson')) - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: true, - successCount: 1, - successResults: [{ ...visualization, overwrite: true }], - warnings: [], - }); - }); - }); - - it('should return 200 when replacing references', async () => { - const objToInsert = { - id: '1', - type: 'visualization', - attributes: { - title: 'My favorite vis', - visState: '{}', - }, - references: [ + await supertest + .get(`/s/${SPACE_ID}/api/saved_objects/visualization/1`) + .expect(200) + .then((resp) => { + expect(resp.body.references).to.eql([ { name: 'ref_0', type: 'index-pattern', - id: '2', + id: '91200a00-9efd-11e7-acb3-3dab96693fab', }, - ], - }; - await supertest - .post('/api/saved_objects/_resolve_import_errors') - .field( - 'retries', - JSON.stringify([ - { - type: 'visualization', - id: '1', - replaceReferences: [ - { - type: 'index-pattern', - from: '2', - to: '91200a00-9efd-11e7-acb3-3dab96693fab', - }, - ], - }, - ]) - ) - .attach('file', Buffer.from(JSON.stringify(objToInsert), 'utf8'), 'export.ndjson') - .expect(200) - .then((resp) => { - expect(resp.body).to.eql({ - success: true, - successCount: 1, - successResults: [ - { - type: 'visualization', - id: '1', - meta: { title: 'My favorite vis', icon: 'visualizeApp' }, - }, - ], - warnings: [], - }); - }); - await supertest - .get('/api/saved_objects/visualization/1') - .expect(200) - .then((resp) => { - expect(resp.body.references).to.eql([ - { - name: 'ref_0', - type: 'index-pattern', - id: '91200a00-9efd-11e7-acb3-3dab96693fab', - }, - ]); - }); - }); + ]); + }); }); }); }); diff --git a/test/api_integration/apis/saved_objects/update.ts b/test/api_integration/apis/saved_objects/update.ts index 7a683175c412e..75b8651ee64a7 100644 --- a/test/api_integration/apis/saved_objects/update.ts +++ b/test/api_integration/apis/saved_objects/update.ts @@ -11,181 +11,153 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - const esDeleteAllIndices = getService('esDeleteAllIndices'); + const kibanaServer = getService('kibanaServer'); describe('update', () => { - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); - it('should return 200', async () => { - await supertest - .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) - .send({ + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); + it('should return 200', async () => { + await supertest + .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) + .send({ + attributes: { + title: 'My second favorite vis', + }, + }) + .expect(200) + .then((resp) => { + // loose uuid validation + expect(resp.body) + .to.have.property('id') + .match(/^[0-9a-f-]{36}$/); + + // loose ISO8601 UTC time with milliseconds validation + expect(resp.body) + .to.have.property('updated_at') + .match(/^[\d-]{10}T[\d:\.]{12}Z$/); + + expect(resp.body).to.eql({ + id: resp.body.id, + type: 'visualization', + updated_at: resp.body.updated_at, + version: resp.body.version, attributes: { title: 'My second favorite vis', }, - }) - .expect(200) - .then((resp) => { - // loose uuid validation - expect(resp.body) - .to.have.property('id') - .match(/^[0-9a-f-]{36}$/); - - // loose ISO8601 UTC time with milliseconds validation - expect(resp.body) - .to.have.property('updated_at') - .match(/^[\d-]{10}T[\d:\.]{12}Z$/); - - expect(resp.body).to.eql({ - id: resp.body.id, - type: 'visualization', - updated_at: resp.body.updated_at, - version: resp.body.version, - attributes: { - title: 'My second favorite vis', - }, - namespaces: ['default'], - }); + namespaces: ['default'], }); - }); - - it('does not pass references if omitted', async () => { - const resp = await supertest - .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) - .send({ - attributes: { - title: 'foo', - }, - }) - .expect(200); - - expect(resp.body).not.to.have.property('references'); - }); - - it('passes references if they are provided', async () => { - const references = [{ id: 'foo', name: 'Foo', type: 'visualization' }]; - - const resp = await supertest - .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) - .send({ - attributes: { - title: 'foo', - }, - references, - }) - .expect(200); - - expect(resp.body).to.have.property('references'); - expect(resp.body.references).to.eql(references); - }); - - it('passes empty references array if empty references array is provided', async () => { - const resp = await supertest - .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) - .send({ - attributes: { - title: 'foo', - }, - references: [], - }) - .expect(200); - - expect(resp.body).to.have.property('references'); - expect(resp.body.references).to.eql([]); - }); - - it('handles upsert', async () => { - await supertest - .put(`/api/saved_objects/visualization/upserted-viz`) - .send({ - attributes: { - title: 'foo', - }, - upsert: { - title: 'upserted title', - description: 'upserted description', - }, - }) - .expect(200); - - const { body: upserted } = await supertest - .get(`/api/saved_objects/visualization/upserted-viz`) - .expect(200); - - expect(upserted.attributes).to.eql({ - title: 'upserted title', - description: 'upserted description', }); + }); - await supertest - .put(`/api/saved_objects/visualization/upserted-viz`) - .send({ - attributes: { - title: 'foobar', - }, - upsert: { - description: 'new upserted description', - version: 9000, - }, - }) - .expect(200); + it('does not pass references if omitted', async () => { + const resp = await supertest + .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) + .send({ + attributes: { + title: 'foo', + }, + }) + .expect(200); + + expect(resp.body).not.to.have.property('references'); + }); - const { body: notUpserted } = await supertest - .get(`/api/saved_objects/visualization/upserted-viz`) - .expect(200); + it('passes references if they are provided', async () => { + const references = [{ id: 'foo', name: 'Foo', type: 'visualization' }]; + + const resp = await supertest + .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) + .send({ + attributes: { + title: 'foo', + }, + references, + }) + .expect(200); + + expect(resp.body).to.have.property('references'); + expect(resp.body.references).to.eql(references); + }); - expect(notUpserted.attributes).to.eql({ - title: 'foobar', - description: 'upserted description', - }); + it('passes empty references array if empty references array is provided', async () => { + const resp = await supertest + .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) + .send({ + attributes: { + title: 'foo', + }, + references: [], + }) + .expect(200); + + expect(resp.body).to.have.property('references'); + expect(resp.body.references).to.eql([]); + }); + + it('handles upsert', async () => { + await supertest + .put(`/api/saved_objects/visualization/upserted-viz`) + .send({ + attributes: { + title: 'foo', + }, + upsert: { + title: 'upserted title', + description: 'upserted description', + }, + }) + .expect(200); + + const { body: upserted } = await supertest + .get(`/api/saved_objects/visualization/upserted-viz`) + .expect(200); + + expect(upserted.attributes).to.eql({ + title: 'upserted title', + description: 'upserted description', }); - describe('unknown id', () => { - it('should return a generic 404', async () => { - await supertest - .put(`/api/saved_objects/visualization/not an id`) - .send({ - attributes: { - title: 'My second favorite vis', - }, - }) - .expect(404) - .then((resp) => { - expect(resp.body).eql({ - statusCode: 404, - error: 'Not Found', - message: 'Saved object [visualization/not an id] not found', - }); - }); - }); + await supertest + .put(`/api/saved_objects/visualization/upserted-viz`) + .send({ + attributes: { + title: 'foobar', + }, + upsert: { + description: 'new upserted description', + version: 9000, + }, + }) + .expect(200); + + const { body: notUpserted } = await supertest + .get(`/api/saved_objects/visualization/upserted-viz`) + .expect(200); + + expect(notUpserted.attributes).to.eql({ + title: 'foobar', + description: 'upserted description', }); }); - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('should return 500', async () => + describe('unknown id', () => { + it('should return a generic 404', async () => { await supertest - .put(`/api/saved_objects/visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab`) + .put(`/api/saved_objects/visualization/not an id`) .send({ attributes: { title: 'My second favorite vis', }, }) - .expect(500) + .expect(404) .then((resp) => { expect(resp.body).eql({ - statusCode: 500, - error: 'Internal Server Error', - message: 'An internal server error occurred.', + statusCode: 404, + error: 'Not Found', + message: 'Saved object [visualization/not an id] not found', }); - })); + }); + }); }); }); } diff --git a/test/api_integration/apis/saved_objects_management/find.ts b/test/api_integration/apis/saved_objects_management/find.ts index 9bf3045bd0138..df39e9b5c2a36 100644 --- a/test/api_integration/apis/saved_objects_management/find.ts +++ b/test/api_integration/apis/saved_objects_management/find.ts @@ -11,7 +11,6 @@ import { Response } from 'supertest'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { - const esDeleteAllIndices = getService('esDeleteAllIndices'); const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); @@ -26,8 +25,8 @@ export default function ({ getService }: FtrProviderContext) { }); describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); it('should return 200 with individual responses', async () => await supertest @@ -86,8 +85,8 @@ export default function ({ getService }: FtrProviderContext) { }); describe('`hasReference` and `hasReferenceOperator` parameters', () => { - before(() => esArchiver.load('saved_objects/references')); - after(() => esArchiver.unload('saved_objects/references')); + before(() => kibanaServer.importExport.load('saved_objects/references')); + after(() => kibanaServer.importExport.unload('saved_objects/references')); it('search for a reference', async () => { await supertest @@ -119,8 +118,8 @@ export default function ({ getService }: FtrProviderContext) { const objects = resp.body.saved_objects; expect(objects.map((obj: any) => obj.id)).to.eql([ 'only-ref-1', - 'ref-1-and-ref-2', 'only-ref-2', + 'ref-1-and-ref-2', ]); }); }); @@ -145,88 +144,6 @@ export default function ({ getService }: FtrProviderContext) { }); }); - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('should return 200 with empty response', async () => - await supertest - .get('/api/kibana/management/saved_objects/_find?type=visualization') - .expect(200) - .then((resp: Response) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - - describe('unknown type', () => { - it('should return 200 with empty response', async () => - await supertest - .get('/api/kibana/management/saved_objects/_find?type=wigwags') - .expect(200) - .then((resp: Response) => { - expect(resp.body).to.eql({ - page: 1, - per_page: 20, - total: 0, - saved_objects: [], - }); - })); - }); - - describe('missing type', () => { - it('should return 400', async () => - await supertest - .get('/api/kibana/management/saved_objects/_find') - .expect(400) - .then((resp: Response) => { - expect(resp.body).to.eql({ - error: 'Bad Request', - message: - '[request query.type]: expected at least one defined value but got [undefined]', - statusCode: 400, - }); - })); - }); - - describe('page beyond total', () => { - it('should return 200 with empty response', async () => - await supertest - .get( - '/api/kibana/management/saved_objects/_find?type=visualization&page=100&perPage=100' - ) - .expect(200) - .then((resp: Response) => { - expect(resp.body).to.eql({ - page: 100, - per_page: 100, - total: 0, - saved_objects: [], - }); - })); - }); - - describe('unknown search field', () => { - it('should return 400 when using searchFields', async () => - await supertest - .get('/api/kibana/management/saved_objects/_find?type=url&searchFields=a') - .expect(400) - .then((resp: Response) => { - expect(resp.body).to.eql({ - statusCode: 400, - error: 'Bad Request', - message: '[request query.searchFields]: definition for this key is missing', - }); - })); - }); - }); - describe('meta attributes injected properly', () => { before(() => esArchiver.load('management/saved_objects/search')); after(() => esArchiver.unload('management/saved_objects/search')); diff --git a/test/api_integration/apis/saved_objects_management/get.ts b/test/api_integration/apis/saved_objects_management/get.ts index 4dfd06a61eecf..eb0b832cb2ed1 100644 --- a/test/api_integration/apis/saved_objects_management/get.ts +++ b/test/api_integration/apis/saved_objects_management/get.ts @@ -11,45 +11,29 @@ import { Response } from 'supertest'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { - const esDeleteAllIndices = getService('esDeleteAllIndices'); const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('get', () => { const existingObject = 'visualization/dd7caf20-9efd-11e7-acb3-3dab96693fab'; const nonexistentObject = 'wigwags/foo'; - describe('with kibana index', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); - - it('should return 200 for object that exists and inject metadata', async () => - await supertest - .get(`/api/kibana/management/saved_objects/${existingObject}`) - .expect(200) - .then((resp: Response) => { - const { body } = resp; - const { type, id, meta } = body; - expect(type).to.eql('visualization'); - expect(id).to.eql('dd7caf20-9efd-11e7-acb3-3dab96693fab'); - expect(meta).to.not.equal(undefined); - })); - - it('should return 404 for object that does not exist', async () => - await supertest - .get(`/api/kibana/management/saved_objects/${nonexistentObject}`) - .expect(404)); - }); - - describe('without kibana index', () => { - before( - async () => - // just in case the kibana server has recreated it - await esDeleteAllIndices('.kibana*') - ); - - it('should return 404 for object that no longer exists', async () => - await supertest.get(`/api/kibana/management/saved_objects/${existingObject}`).expect(404)); - }); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); + + it('should return 200 for object that exists and inject metadata', async () => + await supertest + .get(`/api/kibana/management/saved_objects/${existingObject}`) + .expect(200) + .then((resp: Response) => { + const { body } = resp; + const { type, id, meta } = body; + expect(type).to.eql('visualization'); + expect(id).to.eql('dd7caf20-9efd-11e7-acb3-3dab96693fab'); + expect(meta).to.not.equal(undefined); + })); + + it('should return 404 for object that does not exist', async () => + await supertest.get(`/api/kibana/management/saved_objects/${nonexistentObject}`).expect(404)); }); } diff --git a/test/api_integration/apis/saved_objects_management/relationships.ts b/test/api_integration/apis/saved_objects_management/relationships.ts index 17e562d221d72..ffc97b1385957 100644 --- a/test/api_integration/apis/saved_objects_management/relationships.ts +++ b/test/api_integration/apis/saved_objects_management/relationships.ts @@ -12,7 +12,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const relationSchema = schema.object({ id: schema.string(), @@ -43,12 +43,8 @@ export default function ({ getService }: FtrProviderContext) { }); describe('relationships', () => { - before(async () => { - await esArchiver.load('management/saved_objects/relationships'); - }); - after(async () => { - await esArchiver.unload('management/saved_objects/relationships'); - }); + before(() => kibanaServer.importExport.load('management/saved_objects/relationships')); + after(() => kibanaServer.importExport.unload('management/saved_objects/relationships')); const baseApiUrl = `/api/kibana/management/saved_objects/relationships`; const defaultTypes = ['visualization', 'index-pattern', 'search', 'dashboard']; diff --git a/test/api_integration/apis/shorten/index.js b/test/api_integration/apis/shorten/index.js index d2545e6167cd4..9af979b6af95d 100644 --- a/test/api_integration/apis/shorten/index.js +++ b/test/api_integration/apis/shorten/index.js @@ -9,12 +9,12 @@ import expect from '@kbn/expect'; export default function ({ getService }) { - const esArchiver = getService('esArchiver'); const supertest = getService('supertest'); + const kibanaServer = getService('kibanaServer'); describe('url shortener', () => { - before(() => esArchiver.load('saved_objects/basic')); - after(() => esArchiver.unload('saved_objects/basic')); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); it('generates shortened urls', async () => { const resp = await supertest diff --git a/test/api_integration/apis/stats/stats.js b/test/api_integration/apis/stats/stats.js index 159c65c98ef87..2ba14e29a3d1a 100644 --- a/test/api_integration/apis/stats/stats.js +++ b/test/api_integration/apis/stats/stats.js @@ -44,11 +44,11 @@ const assertStatsAndMetrics = (body) => { export default function ({ getService }) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('kibana stats api', () => { - before('make sure there are some saved objects', () => esArchiver.load('saved_objects/basic')); - after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/basic')); + before(() => kibanaServer.importExport.load('saved_objects/basic')); + after(() => kibanaServer.importExport.unload('saved_objects/basic')); describe('basic', () => { it('should return the stats without cluster_uuid with no query string params', () => { diff --git a/test/api_integration/config.js b/test/api_integration/config.js index 7bbace4c60570..84fb0b7907c3b 100644 --- a/test/api_integration/config.js +++ b/test/api_integration/config.js @@ -31,6 +31,7 @@ export default async function ({ readConfigFile }) { '--server.xsrf.disableProtection=true', '--server.compression.referrerWhitelist=["some-host.com"]', `--savedObjects.maxImportExportSize=10001`, + '--savedObjects.maxImportPayloadBytes=30000000', // for testing set buffer duration to 0 to immediately flush counters into saved objects. '--usageCollection.usageCounters.bufferDuration=0', ], diff --git a/test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/data.json b/test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/data.json deleted file mode 100644 index 21d84c4b55e55..0000000000000 --- a/test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/data.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "timelion-sheet:190f3e90-2ec3-11e8-ba48-69fc4e41e1f6", - "source": { - "type": "timelion-sheet", - "updated_at": "2018-03-23T17:53:30.872Z", - "timelion-sheet": { - "title": "New TimeLion Sheet", - "hits": 0, - "description": "", - "timelion_sheet": [ - ".es(*)" - ], - "timelion_interval": "auto", - "timelion_chart_height": 275, - "timelion_columns": 2, - "timelion_rows": 2, - "version": 1 - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "index-pattern:8963ca30-3224-11e8-a572-ffca06da1357", - "source": { - "type": "index-pattern", - "updated_at": "2018-03-28T01:08:34.290Z", - "index-pattern": { - "title": "saved_objects*", - "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]" - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "config:7.0.0-alpha1", - "source": { - "type": "config", - "updated_at": "2018-03-28T01:08:39.248Z", - "config": { - "buildNum": 8467, - "telemetry:optIn": false, - "defaultIndex": "8963ca30-3224-11e8-a572-ffca06da1357" - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "search:960372e0-3224-11e8-a572-ffca06da1357", - "source": { - "type": "search", - "updated_at": "2018-03-28T01:08:55.182Z", - "search": { - "title": "OneRecord", - "description": "", - "hits": 0, - "columns": [ - "_source" - ], - "sort": [ - "_score", - "desc" - ], - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"8963ca30-3224-11e8-a572-ffca06da1357\",\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"id:3\",\"language\":\"lucene\"},\"filter\":[]}" - } - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:a42c0580-3224-11e8-a572-ffca06da1357", - "source": { - "type": "visualization", - "updated_at": "2018-03-28T01:09:18.936Z", - "visualization": { - "title": "VisualizationFromSavedSearch", - "visState": "{\"title\":\"VisualizationFromSavedSearch\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}", - "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", - "description": "", - "savedSearchId": "960372e0-3224-11e8-a572-ffca06da1357", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:add810b0-3224-11e8-a572-ffca06da1357", - "source": { - "type": "visualization", - "updated_at": "2018-03-28T01:09:35.163Z", - "visualization": { - "title": "Visualization", - "visState": "{\"title\":\"Visualization\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}", - "uiStateJSON": "{}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"8963ca30-3224-11e8-a572-ffca06da1357\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "dashboard:b70c7ae0-3224-11e8-a572-ffca06da1357", - "source": { - "type": "dashboard", - "updated_at": "2018-03-28T01:09:50.606Z", - "dashboard": { - "title": "Dashboard", - "hits": 0, - "description": "", - "panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"7.0.0-alpha1\",\"panelIndex\":\"1\",\"type\":\"visualization\",\"id\":\"add810b0-3224-11e8-a572-ffca06da1357\",\"embeddableConfig\":{}},{\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"version\":\"7.0.0-alpha1\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"id\":\"a42c0580-3224-11e8-a572-ffca06da1357\",\"embeddableConfig\":{}}]", - "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", - "version": 1, - "timeRestore": false, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" - } - } - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "dashboard:invalid-refs", - "source": { - "type": "dashboard", - "updated_at": "2018-03-28T01:09:50.606Z", - "dashboard": { - "title": "Dashboard", - "hits": 0, - "description": "", - "panelsJSON": "[]", - "optionsJSON": "{}", - "version": 1, - "timeRestore": false, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{}" - } - }, - "references": [ - { - "type":"visualization", - "id": "add810b0-3224-11e8-a572-ffca06da1357", - "name": "valid-ref" - }, - { - "type":"visualization", - "id": "invalid-vis", - "name": "missing-ref" - } - ] - } - } -} diff --git a/test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/mappings.json b/test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/mappings.json deleted file mode 100644 index 6dd4d198e0f67..0000000000000 --- a/test/api_integration/fixtures/es_archiver/management/saved_objects/relationships/mappings.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "auto_expand_replicas": "0-1", - "number_of_replicas": "0" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "telemetry:optIn": { - "type": "boolean" - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "graph-workspace": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - } - } -} diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/10k/data.json.gz b/test/api_integration/fixtures/es_archiver/saved_objects/10k/data.json.gz deleted file mode 100644 index b1a2b4301f4d82eb7e30bbcc4b8eccfa8964e904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349146 zcmZ5o2UJt()_w0eV^>rZ6%j-TRbc4SN2PZ{lRnZRlp!<&1m4&XkQSPB1wtp05+Fce zMrk1wX^GT~5Qq>U5=x~1@%_(md9zrvW{uZ-&v(i``|R^6U);%meE;WPoJ&)7XhA(F z-?z}n)6Sc|(h6VWuvnOe-pu_!B}HQX@v~Z`?%Censb+}H)To`M5j5l@8Lno$5$vw3 ze@(0R`rl+v*W8vILuPmHx0`XlDDEsf?an#v&&>L_I<|dVl8TZhcSuFTroJX_Zf4Wc z$$8?`#ccHaHkJ0zw(V#|Kc_LmQ`7`Cc$R=$$G~?Rr=vE;xHeJ6J2(S`9{7hpnwH6AW;0=2mp#=I1lpB0xjG74BJa)Aw(WGZsc`K5mY*-)w%eScgqz&{JiDXl1mB0+ zwd~ASBvLzrBKI%Q$q{h(V3c3@&Lam!iEuur*KN4S)!7|?)Wp)-02w{7JR8~&dGL`* zn2(A$SRowDI_x&k9Cp6$!O8m!j`%Ou^yPd%p3%^T{kQiVLihS#tB+Ip90!G(UaU3M z4>0+#`H5e)&+m$MuF(|NOlrOM|IFT?WuP}{*ZZR%GxtMVSDfH$NHp_c_`}wIr^d>M zU7E=bk@cHO6!%ZPSoh*VQ*Ns4yr*qA68fobchO$d*|x1l^WLwbHdA^q0gAy3Tr5Yk*VB&evGYX6?1C`hNQU>UPQS z(u#(|fiSr=<8w=S=%VG_gUvqcgRik6ccoarpFWhq<DmH`{B1&!uk~BtwZ-Twd`_cppGLuR(0YSWkBaz~*R0#*2d+7-rbjThJcNl+ zurbo^;O^EhPRz}SwYduAEvD4juLHl`h}`T5Tid$I=d@S6>z5OC-flgAx;N3OW&hl^ zOfLzirqQz17`fN9fBL}s_*PTHoPlyDWI93WSj61K*Xgy2s9hn|4`EYwU$dG1PHV?i zKZJKo&}TJpSVpD#nQ#rKWvktVTL)+B=kh=B%}4!K8Fk!lGx#88zt(L3x=$Ys{mQyc z8hwxT-vrWL$;Scht=NWnNb&Bd(*8kYt$IuOtsS>t(U2SPZ`)JWe2$|`#_&tWVXN)0 zn2sQjw)s=V)84Ttkf^u#&K<=akU>Z{p_tFiq;du!3w>qzCNTbym?Q3r8!tG^?5 zu9BT1S^wJaaN6BWbn0DC^jD8?@h9&_g*=ze$4qq;OUBN{KkmGpkMQ)^l(v?t-yl2o zuGdm``RsZ}7#_&|a*lnxb8)^#A0O-gTa)S!2%$StZ362bOsd@HcEKNthi%sqcN_e}Ge z^}az}#N4|!7Whn+iI(0yd!0q`FHKMZC z2CP?W48Gkd2~ykK@!g*AZ`<1m+?Xq5?$mDi=lktH64Qvl?1wEUMtR0c4Xo{~g@^O* zclEAJ?y-{4LAkw|=`=nO1?i-d;k$BV8UaUc*?WwX-u=42FFrB5+ql0qo0wluyLqsa zf%|Jmk@kTcaq!nRU88k|FkBV&Ipy1jcN!6O-=gV=pneiw9Y-Ym6uIr(w)<#;YGR(_ z!Li9$-Q}RoYE*5ElI`(d_#$i04cyva?Av+V90{F;b%z~nG&kfIf2&>omPl?xwjCUA z>m8ooMboEoaGMWbKREjLw>jpc(esIlI5>7+Q3IYrK6w1ECEN2MzD4x>ul5HfoBMo` z5ge_1by9n|i4!Fp!`qAF&HEHgl8U!@uBsOMAnvcKh`_Zp-wMKJ5;$dAV% z^i7)7bi}uBD{FLFawKDyk4SZjZ2K3rWG5}-N?MfX)&!yRKxb#Yeq51{41YhLy|(ML zpRa*KM<_RM%w?k^;b*^XFnQ*jA{$Jd^Wdob8`Mzq?M-^y-hv||TTw~{e?ap;AVlr^ z>1=(bkt4V#Li3yWq<0sy8~iok7pM2Xaz*UadhFouRnx{I>s1`-8WBxO2Na@-$X?an zY}P@?LH-rKgW+vYjfn{-V#~Gd2C11{*EeJkSHAC8jhfR;H}So%HzT)9b8!bd^!e?* z#3*K5Mi&l)RzH}ZdpWj&JrE*VOR2DW;q75%*+tkK>~R z@j{s1mwJ7KTYj~JF9*Hkvf~Q}M34Xfuim;Y_>?lC$4h{lRnxT=4%KXYqqe;xIJE&?$vm96$fR(qK0 z=Rvw--iV*KKeUCJVjrt1YE$Y#Z^!y@7oL;(yx@ksl=bU(JHK1vniQdemjNd$b7GM3 zuMGq$?900IyxNoI{{^siXSli2lWZO%;6EcLYcrNLzobqsl9YeW@O&o#%~E5GV1sHJ8akxIkl~=nJrbkaetk>jr}^ELeN*TbOnT&BT2O|%TmRBLEHLI zLuC?{yTW^5hWl>De+~JbPbScrbY{!xXV3CQusecIO3CSt*0Qws#{h}T%r{W5!8C$p zRLp8@lM-4ygKZFnlmuhbLu&>4u7^V~$NMS`dBj{>uUgKH8$71QL;|cmb^>MBZAS7c zJ~@;6I^uU>lvba%!WE$B_(}tE3kHUiG4B_W?3KOr?gza0uwEGFF*{7k-GAWYYQIg7 zxZh}p*(2{GhOW(&>)o#V1DO1Qc;5}LuD^NQF0GwPi?&1F@x81t`bRLp6waUJLy0XZ z$>aK@>lE##=A@>F)O4M`yT1eS$y7`*nAUN1*;1?;n_^89_H-8?g-5^XlxOG5?w?JR zpij$Mx>*V{_-t*zw0_qK=$IZ1Xv`nnBrD6xL4AD8gh-KuOrN*79CPaQHs~<9Ig(m- zvZlDUDsvxp6+N0PyFttIHmLibYUaP_YZ>b1Q=1e-RBUPOy)27U3_9El!3% zd^>0D28rhco$)WP(lpG^Q#ksT4qEJDJi`72%2)cF)bsn`khx{hTPHw>evPNSbvtp! zvf)!F3O2#V0%1x-G+SMZU!*8Dd&`bju9cRmRFna>#va zyF#($>YPu_gQZCG`Z_QfckZ8nAnpm$r8Tu~xS zQ!73+SGiN40L0~}PE2k!soryJH01s8?OdNCHLs<<1x*6GqGfbj59}FBGLvWKUTWIw z6esHxOm9viWtl{_wX7bYfuAtG>tnrv3j9mqgqK-iSW>fc z!)Uk6X>uR77oC;PaNRpB6J|<|tF^#zwG|`2Td-7S8JiYM>~gho806j6<$_~g@W0EX60snfJAQS z>5@x5?SA)!)Xd7g0`hw+4hw+Q0yHvun_Oef^Tat79}Rug7XFnBEfItPw$2l}n;{!d z3I>BXJ=8R|E{0*gjxhDLs!yHKixuqA#mnrH-TgJS z1#>4x3s+eYW}W96k!$PdTbtU=TMB55WD|xVx0>xo$u75qRy{&Mpz$i+Dm3ArfDldS zDbPBigU6wgjdO-5@f2N`T7^JfKqf@q(swKz$a@0D>OWtfE3$kNcDaAYuorV!BHvqd zu)@^Rb2+EnH;;eb8V`Bqh_A0KesQFCuA@Tc-D`&zaXBJbtDz~CRbyEYpPP*S^Fz4f zNb+$zXCQpXI6Y>0F+(-sV@{}%*DFU(AO^9pe98iG)?2DNAdjYruL5(;sou@Hta$_+ z5;1j>d=_2Y?Uv78Xcm7KQualuaj`x39qhJxDo`-xIhm)8%_-XQVzM6nHb!Q%+=l^h zzL;7>tODsLqZb{F272d%2S-8KmvvGPA%<*HW4LKgEErw8WgOs@bLPq#SFI&M8IVvc z79~;15wEWh2;x=fp6Fc%yPH?^`~zU>F+sFt2K0=6Z?tRKbDx~J%8&v|nTs;ORKABl zS%RJ16v0HpNg}^eh;a3yvzb92Fr6m!roGaq?+#CTM^oxNdvRsyqlHUuR@IV+v?KCw zd#JeGV!2$9(2R|2W^RS_r#rE~pRUV2G=|Spg&+PSbKS)5!8O~;o9qxC$1^?bL$4z}3zt5`_=ZBq?m1RG z<7#a`#FcxDWkFImj`mAA>_#6vvpw&#ds8x?gfx-@)F!Ra`oU>Iqm8^pJkK9T z%lq289VRUcaz(}-Z*bj*zJD~+n`!Sm=x6D?qfmA3s39dQ$aD{S*AUZl|lG@wXT_}Wj=z;Pm&gKMuX`oRu{Y;7WXsA&Cj4S--+zZ%*G3t5k z4N3O5SdM|wFUO^&cL_OqBv{$K6{RMqoA*2f5KxWklRfcp!4jK@3nqPX1u`~^*=Ir* zz(B`Dg;^7w)sAl{J$qba>=-7LS-Wy)aO&eJ09gKZF%>%^nWjw-({+rKyPG1k(8v5F zsZ0MCJ6rg^Wbk;Ee7PU|j&sc&I%jOBEeAOP(E&~(kqB(UyBy*8rIb&h0(~Fw4HSLijALWG<8(@I#bfn;{e6=e4Vf~l215VbW-aR!}!E#eLbm#8(}agGim1tGF3 zDGz|IjYMc!y_z%3wZ2VUbagu&uvC*?Z?6ahQ)bF!|0lZ*L%qzHIHhyb+SN7^+RATb zlmWe$BgcSif?AvJ)w>)`dF?86Z)^=QG-Q8;3g{0fbmted0#zObl(&z^`^15rysk{w zRusGuV&}r{uN#sZ@|u}~NbMZ=+a@q@8RibxM$S7R{QR5ZT{yrin6sR;E7Rpkktoi( zX&3?QAp2UTxz;|sawVs$O$2hYbQ@4Tjvha=dEHEaPB}O?mpD`Hw&gUn3Fs__Z0I-pkRsc0#gf$nTEwFGSeU zVGXvP{SS)+)VNEgUNtTo7Y6g2I3S|E9s!-Z7x#vEVc2uzZpnk1t2N?-;&fhIr|ozE zFoY}u`^nG6I4gXK_UDFRHqtcB!4_?I705j!5grz+a=V7!3Nt?XkyX!Zodx33q;DLV zcUBIfN|d%yeo*{=(=;#7a%{c{vZDXaHLRbrh$pWE7!B7ED{pAZgV?`M+I{d&34O z%8B##0}*(Yva2d)&{u|zD24c%`8ovyv!jH>W1#h+O3dqv0}kCG4wMf%j%EG1XW6zK z$2X)bxomF9$lge4yq2PURZIP4YdTnz0uZaZa|6geE0dP1D^L<(*9dEpk&Szu^ADwvbIuz^3dA=pQ)&?*_(S^iJwTJT$x{ui zqK^?Uky+JtE3uk?H*-XhIc8QPb$v+4Hy2t!p;ba-^n^A2YHo)c20b~90N>q=%2xB3 zH^ufZtAe0jhLCzr38_qp&-RBC#BTc^5Okp?QhhT9k-=T|%D6DZEv_Ki2j~|koPoI> z@~4f~w7bSFs!%Q>7dG5!mqZJ^No57tI+;n_rkP;4Gc?I-W5di+p!vI5T+e>ZfM_ zB3Or6`$tn$JD;z8Y<1&$&<0?9f2>O`Ofb31ZJGQq?lOg9bqp*$WWVFK2-_MKDRlY0 z0db~G9+Wrj=_y7Dsrq+TF$!o4-9dueWT}l(PzG%YXMPWv5f0te}#@&W>!rmC^mqamA`V zu30Mm1{KwwmiH9QI{`^wI6^mmWlW0s#Ld4>drZ-9LI>kV3;L^}zTLoCQ=}CCRyI*9 zZ(OTJ)N4+5P?wsXcbl6C6kINk_}Di|2$jvZZ#{PN+00pKF-jQLC9a?2* z;$>b()I;3Cw!Uh%T47h&eqm+q5GW&^D=kcJUhGaR+PidH$*4C*C z4BP7%5dGvPb0bP7x4kD!O%DMzvcRc^bfHhXqDyevwmV%W9y(`7?*}RdyMNv;&0>DN zYwA7S{y{eWT1rn#lSmvzeGtIHTJtG`m1+37pSsm9mb`auQW$;f>r1LpWZU{5b<}uF zVM}Z>7!<76SA;v?BMX+A2iYFh2MeKc-!!7ero8Nx948lxr9*Nm;LCpzn}AXk-RY+} zgtb^)XZk&!@MNg^z1npP=8Cf|8!)8}JkrKxnDUA*pagNeS_vO;pzO;_jaBmn?TxL*Kk8TXclC1mnv{ zAwrt9ZHl_n*{T)54#LNyMBj4wD1Chz@0%<~pRcUe`b1t$&9eE1} zi3cIY%Y222!I9p+;4JCjSKzQWoWN;+;*=K--y>Hk>D=mW^~7r)5B8qA2xRRnF}Jr| zg;>zOrHQAWj#m;tWnwHLKZQG#K)w&^kc(B#Tti`hQV^*=rAczN)epT7Sr)5^-YB`O zX9i#ElQeAUFS?U!3PbYT2~U?!24%?Y`N@jzIP3L{x1 zhrO|{a6;bi#k(l>WXtQ3Qjd&ptX9-vQzJX}w_YU{u`$~Hs^X>l)Qz9z*{}Johc&1! z<`~X!waY4k^K-{fC0U=tm(2pel9m7BL0!gajn6I$OG6EW^@$2ypJc2%fm16>hHb8C zQ1==r1X<@5ZTvkM+wUSmEiXqNmhS&+~ zqqK>^d2yV#cKoJokIuDBp0US1J>oY4){R>k#Rb`Mk~T8GAK`PI8(EogXBobREy!e2 z&q!9nLvHosN2Hc@RGv0ZmJ z3FNr@#-=I(uKuZA%7TG6iVPGwyu*#;=f>H&&qA=MvZN_+Oqytf#SH&FD~Rblw&TPN ze;{jL7L1Ft4H42?v5u!{+ujzzD7jf?h$`{KYk1W)8Yy!*4!LhfUdUj2NLT(AP^Hc%|v z)$QEqO-7}^s=Z_oAS0`-Ie=(wLXnt($3@Af0Eto zSc0dn8ME^KxRp>no+2--KNxCY>-s-DqNu0BSB#7F2Q91Hcjqr`8XN_?c4RG36pFW% zNu>8Cd~lyIIB0SLF38{ z--Baz#9ZsSa&>KjeCXrAM_4kiAKqu+zIw^Ua0o?Ic$`4qKp z7o4Ksok-Lw>~1m^8qfuDmWGsGJ#+3!QNf!CJLjS6nRjbeQQa}j6-;|j!-Tu1r*3|9TvKp31{`E|^ic5fFXg1(;{guZ zi@|2{X*G7`%D}xnlWE}RV9Tj4n{9kYG-X_51iA_W%lHG?9*dfS@`HsL*M;@11}M`{ zCJT<2vjz8O3TbQGY8lO1a~ke&Q6C9vV5l>{TESU5^ntoKzzJO>wREJr@hL zq>o3;i-e(!E6fQ?E`>*@9bD;o^Wv$s+m60YKg&OFNr&Ej5JHzL`JOOH5dxDAv3I>Gs$!Cx0 zx9FC-iy?Dz-o_$V4u@8akEguPIeakwccsfEyIR@Wz|q*3=N=7C1H%}Vs`~r`qgZI` zbQ%QtmMUB}R;l;s$i9}P#Cy}QRK4(CefvzWUQ}I=OtzJRxD1Mor<5H%_j)T3Av0EP zMk!U!t9bfSLu(f5$QFA~Fm7PlPO4p%v$_#MVu>8R{mZr-pd;;$2nu{==+N~ye|x-2 z{7OogzVmyDzDqzjjdFk*q9K~xbQ&aB#N5^I_+g9 zta5GQQs#4D3t=r|7a7Y{W`=F$-sgoZ)%;KnFT979la7+Gq6VCUvfgsqc& zFCN}AN2EI<2yHK$q3ysL-u(FcR7JJOO@&61M;gRCNu^-BJh3zc2VUU@mJ9hlw}K*w zv;@{`)Za~2gD?EYRfK0+gl-l*_i4K86pg-l{b&m}Kcy%9YrTR@K!%Z@+u*1EVwkWj zQ1xdi`tD_Vf@Z|VapT6}(n4^#z?z7=60j*oB6KkFi>^IJC@}w8JE8M_HC6qNj@>EX znRfK1U8IbfKX#+q$1;NwIOXDkt1UZ@IObO<`NQK4!?z2Xc;c&F5u^A9sH+o@C~JUc zl|!m5nV zKy7rPq8S2A;)lsBfBeKA8GcZ%|n@& z(BflZn-6N%E1aMLoCJY|9xY(QVf7?XMWaq@403FSD#F*8%kiQ6LFrA-I*wKLfnlJCv)-lcdhX%DZEdsawv6`M|oKHUA1W z5cD^QSrapB`%?#UxH5dhGL(Mv$lz1pibkmk#fydL67LI*di~5CguF5XCOK=?8@lN0 z*P1TqWXAYwtlzaX*MK%DC=8?y%YqFSnaH1)rO&LY%HFV3fJw|44N?B5L&6sfn@=K3 zg)Q7ehp_SI33*_frklRP?3|#SV3n)(qZPrLB~AR>qB7rdNcTFe4%&qUs6>$n`JqKy z&d~t-dHKwUu(w2OK~!MY5ydJ>Qpu;@Q~*E5fw%JPRq~wRZGQF8*9ExGW~~|}%p=^D z2Wu`t#3+y}`na#gWn9Kb=ClD&SATeo>3Br&6K-RH5@SEF7sZci3jm4;>ynV@r^nJ8 zMArQW)&5>N^IBU(NtQv!k%{ma$r0)YOKLh9P;-Bpl(uXcOs$MjJhB>bwI@wE-9q&k z+gIggZfL@7vuaU2vA~N&tUFqE5(1sYmLN_7zj>%jRx(({J~8hMptSvkVL?`7IxZEm z7boiCDB6K@L%keCPQaZe7LSqfKnn;hr#`ux{}@&`?set*XFZt6k$WKplm(aa%QXej z6r^EOBiQ7Uc+9ucMS!~v%oJ6-F}GMpbJ2GA>2qGj))np2%D zl{aE*Gvm?2`#&^(QJVT?E{P}FHTnMRpN7+$sSw-ShcxFuyIn})<<85=lvuUB!C+vQY_z2TXx8gTYH z+{v;yBp=8QaSb6du5MOi&Clm+&Pc0_dF*j?@3GapsQ=aZ^!$BcnGonrkAgr?2c@n` zps1Vgsba>MuE$fIXL=3m&5@=G6(GGuAfIJP=62J$0x@LBeK+-g41dhj)gQhtGp_(lZVr~3Qc%>9%2DokTpa5GL;Nv zfRZe0+3B+>s8A-WIFs|#$Kb7eP34$(->Z5~cCZ;N-mlvE*4k5F!8yI6W#f|V5X9I| zJeUWl{XYEZN^mu#SfPm*VU9G*6m3~|)KuUA&fF|{(i??Yxxdri-Y%){t*rN9$GtyZ z1$bl3#MNHMeDlr7wh%8eDgE{c4765Ry>qx#VriTU4ygBwF+vrWgj;nJBHcS7T4O5Z zM`|Pz4|>j(d3oa1-MhNA+-dI$!1`0?fRhWWtA*S&ibm826;Le2M6HXnno`|j0(;m8 zW@#_^uFH74{1MvVYn!FsrIR@AWso+f2k?q0>-Lq)hMJLxJ70T~O73gy&?^WAYKi}2 z{uTQ@-|wQrnU9Rh;x5kw%(xj<4T%Wrrn|$rfEkl7a^-ea_flOA>uTVM6r)FCOJ;E^ z^{0=hN%fq?us)c(0?0UZDboj|sRGG=K&(snpBPysjtoTfbX(u+lNEKbb8YSwaqHMT z92i*FAPOm?!JXZdVAga9=0T*GtqfW|mpF1AIC*-sCkvx&GiYdU=(&!+{J^3o-A01l z)4r!&>ZEcBSlnh<&nMD7J+ROLyAEz%xDUJ!z`DFpl!FVlt$zL(1^vC%U5F=5B0vP# z?pfEUz29kOT1)h??%)nk!i5m-$#yx{n%*q`#70#XzKgldSNu+zXWi_H&?Wj(g~jK! zsLt2f{$<4}>S8M8k=q$PUDmGHWC;4j0s?>i&Cm;&5FrSfEm8gox62N{(g{%-zs+5G zy*>2^#6%)Oy|b~Rn0{gXep_7uH-uGq>ydAu2w%{zIT5?3OW06Q#El|drMeB)}(PwhbAG1`M zwm72)6Q|e{4C@vOmc-*FUFD!0;A?D!F&CxgS!DGCX~hX$RHW&2w$Pd-uHp_OD_+dQ z%d(jI1lahFT_<4%h&m;3Ax)p=!Avt#zxsLaEyHt1s8T)?zK((r~D<=eAC?^66kXUbW;+hcI5k zoeO{^7Bl4zd}Z3UuzpSxuXeobtnk>1FL5sX7Vr)nYZq|Gu0OXZTqr%cTZwQg&B3nE zXX5bY2Wu;LH>2eRI`aLDd(2}aA*Sbugg>nrpQ*sk|NqFLEpl_YigV+q16+$QdYM(= zvIeB>fH&zher06dgLsIkqR!k1!{nZv8ADp-2A=c=-etc$k~3A}4#M`>)!G(*CRvVA z#iavtvA`PH55x=PiuT?o7GErxD-u;PT5-XAneF8OPEw&y#%BcN1{DbHMz2N+Oy@_D zbJ!4__(PH9`vqFuLo_N#2+CsNPa|l>O&+XT2|MykB%&c9Z+vvyt5`3`((`v3r2u)} zYU~v9J{x0L`Axi5R>H|;7YEl(H!QY%>5`S|eCg;PCs;=nRcLxF*1UQR5wK(B1MFq3 zh$3(RVqH&j9C~EEGuPx8oy2Tri5n;ii=+Xwt?@1OYMSlosNbXLq;IG(A0JAjzGNpk(*@$ zjq}d6mG^w5u;rmhS=n4cXF?jX!Hj)k7OJY?MLXpd?sa`ORxSRRWbrcaTTh2W7jP!o zyH4t9PN?ZNV7(+>yYPyTKhGjg2zXaQKpsWA*6Ll-!P=s$9bd3QdW~V1s$U!;>VK}P z_Z2i#^(MxJh%A|A#L#Sl+a+g9^nVD!4h1`^D<(YiPV0f}@F!$=UT?=BVCnXKUnyi@ zlh%{~y)v>S_u`aS-KdJS!I8^PJ9?5WCW0+bwW~Qn8M2}Stdt|#xvtwnPq0)bG zJa&tz2(K_yyLU=Z&KZAvC?}s9aM#6}Y?MAV=ar>4y_`7B{o#3pM}TaGttn7u{I@GD z##eHD@X1|_ez8Ybo}Gi44nhtXqNoi?GxXG@(c+ZHEBd_ia$(%TuM{S9+4#@uMs3TQ z;(wKAK7M?A#k!61S^M+UeMoWv5Z*O@t*NXp7PGP9_ghxZ@QGuLI?t`OP_I2ed^~RIG(PFu^GQ6Do}&^F`X zHM7ALoh8ct{n{~`5ANc37LAFgV;@!x~6juU0fxbC}|S^iL#Qwq=7?sV6&kLbd;E>kEogW$wGwkX}LQ z+1N!J=g8UZA>`cT`iw`$SSjdnLD`aGq$JTZ=NW$edzi&VVF;xqd|Il z*hRIAm*~ILWK_8j#z%iXJPpgQ<>I!MHmhhUtYx+8^lHJwo@KP668kLtTY-pSBL`*# zb#PPHQJvhN1FiMxq7j=P8~ndlS^wU@2eYQvu4HRuyJe2X1Q`{Pyw$UW;bkQ^G1OtYnN5!xZ*&h4+8C$}>o4*Zo{FUG z9f`O&$dA`h_~h=z+i&<=LQfM4#%sQ93W?GKct4h$*M9!%5APoQ#+f>%j*|46%!nV( zoe8jf5oV&6xQJsv@PI)TM9cLo>$&yWYch?a{PDBsaoSS$`W`eIkWU`=&5N&h^aBpU z4S2;a_7!yw6>j9^>Kz7voDw0ih1+>KL2gMZm8{+5S8*7HgRkE>3}VzfDW$Cbpz_K3 zO@XbO10l*XfpuA!kz`>&?rY#6uVhO67jzO!)04`Y3D>BLy~4~7c0Z2ufWZ``F3j@! zgAuK%lPhPs`x2Hg!>yu>@?(Gxef%jnD?I{fqgSvNv}%`rwizEPr7nC-p6y#!VwZI~ zc(fKi=5kPqL#Kd{j*z%anj7ckAGRTjIN`^#X!sRI+^HRT+xd47339SDMi>rC$Dhbfp5Ej#oj zP<@^BL2=kJ@6E&TM43(pzwlPJ4m-y=We4)%8&hw3QU55n6;P#mj<8RD0!5Dp3KR$e zTj-_jks$wuvcCY2@SPp$6|mY68zV;xP0esgQuFNX;%u6MZZ$HsegNqoTC^Mtm_O4U z;Oa|rA#Lp|u|4t~^i7=M9v4R)HPtqBpak&#@zAkB>0sbXu97~`bvLb@bJI&P5*LN_ z%EtqZ!-m{|&9bL?TSX^Tbe^P1^O>neOkU}5S80&Ou@iFZs*!0qDb%+nyERo+=SucY zcj-nEw@UH3ANa?D(fyewf71Mercu$X+wGm$A#EvPzl~bYCr^GjW&f{V`#y)~!so_O z1sq^G#e|uohj^8PvQagNWB*xBx0W>fNaxD?G$t z5~B&{IpzN#c4bPHS(FAu;ug?=l^QYCvOFf?;U%o0p7olM@XE{cKMLn8o}73(b0Za8 zL6I*0A|@8n(k5$bT;3IO8-N6FT4=U=4T!4GZz7-@^JZxYzBwtE05U<#7qBRb*; z68YD@T89F(#9UpWGP*d8-Ff)8!V!=KLbJXcT(IJ1^|F?&lN$ynchmilD;@myX1+?c zq#WFHraQ|6F_xd*w-TFCMk>2S~}?~KJ#hw9_;FmM;KDay@e*a?uRKviP}7HPrV%$m^k`j%?uE` z99M&2l2X?C80yQr+pR9$W47it#my;)3Ew8Hbk5(FkY?u38GkiRAW@>Bbv7d4<) zODL_|YM-TU(C>`<5SC=)GNuk9UC7>mWZnCFjR7zqMmzT1BUYP^zUh&GRq8jcpcC(gXv1Kd`XY zLHQ~X^I|1q0x+~F7ya?x%IwA;lcMy)RQxC2l3-sFnI2>PC}_;zyME0x6t6JqvM&5`bEbNlRiIX z@(!%VM$3AA!u`T^(RIPP7X6B;M!&Q)L(ttpe{S(vX@WpU&jfrtGk ze;jD{sTsd`n8K9vM$?xjF*9gN+Fl3MQ<}zR<}Bi^H|@4~-L5C)p&U}2YrZA~J>@dl z{4YRK=d&8yQe8AgtT_?VWQ%M$#Jv-6Je+88oA8a$nME_eunyu{ z3jm_}Gaf<=Z|P2`ET~9rlMPX7=E#PH7XsdK^_cudvAwEZJ9%AF#mJco$}7}%!mI;g zLr&QxJ>#h*mju`rOk`-H`3Gh%F1z0J1r!GJ3aQI*Cl5M(QM2ph>ZbMdT!W=UB*Ptm zNE~9Q4LzHoq?*dOJd_lOdb`U?&OkXu1_0wH{PA0wcBml})`?wWN5QV-K)D9EKmBNp z)`nARi_V@KR5hA}rUhF=O6F;E0FugT_T!~E-<0}^3%RqogC=Q}%dTzH{xcGXDI1QU zHWKN>jhIv|C)a&ilsAHCI~$Z8&yf5PWC~wWjlL5|vQhj3aNIlG;W8S_ocVmz`q zd5C>rXwLOni%hD2n015TBNcA$(gnqb5xcqXdilf-=A-%z83d8Ai!$)W=zVGWWbF?inQeU~8=jV9@7V2Qjho z)=|O}{I;?9-hsJ~R}o!iZTbNGWD1fv`__7DoU=;9F0E1LJ?BO;gXWR}oFNcVMUD1b zh8jQ$2Imd%%5KX`wYH*xz^Ge1>4_jadiFQbrlrARfFS3ms5&F9Xla+EZa}0~Nr)Cr>mH)H3NLUTdNULD>aI)c z!^^E4#qTu-OxUpX7P+{1LOyD8_Ql7@q0z%Yn zP_{2o;~m*jN@JvPFQNgEph%*Y8?)tMGRK9a^}U!8Hk-r zx#}G|lTeydM13k1K$KY1wMA>gE=Ijdbzck>{u1T|rt4xhU}zb!pMF68_g31JR_~6$ zsm5)S?V!94R<9HWc62j@M1DAr!q?mAh@%WQjL7yo>8m@tlubq?Jl7HjC|n25Z`}Qe z`fXsJ@-OlH0i&)K8uXkdf#W|il2yp$j21QT(TsR%Tu;`r{yNS{-^xHD5qySlon1pw zzX$jdsR<UYU`|(^V6pVjU(XTD z8Uaw9=NfmN^|zxj1eD^u+b(%DY3fa{#Urzi0RE(eMAUI~(+kga$-wp7qbrO>0r^}& zo+#l-wuG&pDVZVRW>}6G$GnfiVJmc|ttj9b7KMa^r*P^B+Qm_~M9O44l%NJ)34{U) zm6dKIADCi8J#vGYiH}#eTalv-Y$4xqZ+1I9D3HQVft~d|xurk@I}IVudYYNYCFLn# z@5!T#hJ)=M*zVm3!Wmp7jkrEHSo7gYU z0Z$N`?=asXipZNRY06?1nsK>-<~Bd`6#j$7oW-+-Ys_-{xMgoXVSJw4vElUA8dXbC zKuJj+%1`6v(7HcPU4? zQV3wnfZqNI`YZ9Mk_*c&_#73y2xJMTn%I9t&S9!Fc@60>ybD6Id(Bn~Wp|bed)-eR zCW40Wmefg)H4tpzP7`Un?Ua61-Jl1g_1xhTZB8oE?o2navK)c&z%-aix_#WrW|_66!c!^y5>rL0t;0CFhV+MX}BE58$d(AQ{O+nrO`)7Vw1kn5rh zI54Zi!cB^qNXi-*`VjGM&^3b?(a(i51?ItZ(!$=tnyt+CFqnyRZU_y~811jFQMhub zN@zSb*vxvdn4S%OS-)?*nVJq6t9phSKZs+wZyo%|tvf}0|P#F0#PpZl&XL9wI06bS(fExK9eXvHLspdOg$z(y4Q ztrK$&c>h{8M}>Zy^mVoquZ!$HRxzP>2h<(b?tZVD_c~UO>=m zLUi#HNcYECSOwzZGGQu`eGXdI>X&HPmK~frwK^Ao#jF7C@Y2L_sgn(!)u4c#%LaYM zHS#92Gu(%cy-Gr!AKvIUHx3h|3k9~xu8eOk%=vK> zehOHCPg`9{!F2L$^`>NbNjITWl19EgcO54RTwawn@{akW-Zopj*teH^hk8L}v5)ZZ z0dO$=tMtN#(#r2;=Cxnew~Q5HDc60;R!t#5#Z`KCTYCf|GcH=Nz$LwLCp64bQv%mM4JGji4sJSB~j*!W1C{Y2qc*%5_*#eMWPCR znHaDTWhjzBqQqEKAt_WDWXyLm&oB7p`(KZwbIyMEUVE*z_p!hc3OCJnB8jw9Z2ccq zqm|#b;ZEsZckl|CyTnVuICWkH@9RfQ57uvdMEpV}j#1Qi?2z5+J&@i3^a1A`s8y?T zo>>327TrUKqHuiMDyfLkJh*q-`atdec(<;3e+^w`@}T{NO}qN0_Lzr{<^}NK)ISeA z@UyJu9QY)NY{N%&?3cQS964J+*h>wliNfO-j{Ml1RkJ}-X;Ey{RlX(eG=V~StMmsf zPbt9GU#HT*Ijg5-E4ia(hNw^iYEHVCT1$J~Dc8UZ-BN26pl{;tu0r4yAZnLL78HUp-J(E|84=i8R`GA`@;=y7 zBES(sq&N*Frs$e-6q&!=8$DY3N|;6DWwD-pP{|~YaW!SQcoM23Q^)#Z=#yr6a7tWV z6Od=6%KmbQARou=c#%zShFW54+-5u1?*nu9J4bxZ^{RJ%S!-jYI_y5IaQ=x%&JQhr zdb!Wv9s8rGtPu-${{K$?=%YnbN*pcmAKQS2{r|X}!)wa+FD*0VxMe4`XqBv#wujS6 z63&skApkI3Q0i~GWg*+$SexYJ?RifsJvFU1=!`CMM>3KONna~O|6otL*41qj)3BP_ zWBK1wfagpWbS><<`yH4tV9&H1U9=eW*a7gdd}U9Jm+dm3 z!?!^7Ny2j_ODs%FB4>+CQyj{?Cd{`Bi?crj3e<(USmDO~EeOikqu@(L{rO^?N$Kvv zDMO|94 z;O;*G!St8u-pyCCPY4E6ml-99%_PUG(#X8IDj)$u%-mD%Zd<})Pp}hR-POYi#>?1(-Yv zVYTNeAi_Y&STCmk+jl0gb_m4x>&v$A9zOZx+H(MiJb$24*D-R_{-7Ub$kk5dU(rQR zxZx$O03MQM3k}98u`p};i8~5^$R*vRO+=^Vm4Ig>c(LY3^kI=<#6@ROwy1w)bfq(< z^!N@CZZ12bw3gI-PnNx*nDCQSZw3uR=XqZOKCwhfbzMJDO*x6~+gy5v4Aw~RoNx%; z8Us=ngk;uD`|Jt=CX_G(g^zVfeu&QK41YO&SAtfc$c2~`*GqpgY@&S)uqDua zYe{ypw&fi*buH4InrR3_Wa3s+yZa(2auVx!i-D^zj@);e^>O@*=ruxBnf~Vh%74@; zNDI1|LRjw1A@94Rc9a%~gT)))?-2i}8_(ZC5{SfCyZm;qEL}O`Qd7o9v-{Ca4QwQU zW~|jPPdg(sG_SWbL^|20=HKG)Xcv@n?*kZJs%*m0PC9peBOXgSrj)Pa9QAu;9Ffl) zsFQ32A`gCxKuE$f)Vp&;=zq^5X{JvO$w1H@?@{49Ol{V_Z>3)8OHsxRIazijJMrIu zWb0_?O=HbXzTw9zRnVV|>BwL6@O2xrg zi%jZCV8Aufi<%MbK$aQufO_Vp=u}XmOia`7cg(1^k7-OwSznKEtOyvE2sFlYFo6NMb)Ui683)bnJ@HZ@ymLxPCLk`9XL1 zc9+i8y4AQw(f>oaaGJkw3Zp>XQ)jlcM426{#5HbH1PWo9Ahby)_6V3*^55~!Dk3&x zfjO)%WVH5>~6L;Si zx~c^W%YoiT;+SVn?hj>ULTAi~G+USBTFUS(ehehifiFyte1+k~LDNgTkFWWs3+O%W z3!&9UXA_SQS~b!ZfmNT&$(9s^$tSZtEuR5D1L<7c9`D$|Csx`<1f9egEe5^xM5p~x z=Lh;n@p%B&ZI@Sl5Cj1t<;_nv+Ff?1@>pDnTi@H@OiX?7&p?W38q09i^ys1MNh;!JNZBqaSELwI9e9wx-t0Xf#d62JrzT{pAg<~r1jn84iI1L zP~$r1iv{JstbFul+eCzA?RfX)23CO8^ms72t&~lD2pOrc|Hm(UN@eb7#FU-r4a5>e zS%$eb3=-NGpB@w=h}TMdAa+?5NgVp?A9+(90?c zV`9nJReaC88i9e=>MU$%ZedZbNfZYGfFSXCgIZE9FMHajGfK+24W8&8{cnF;_ zJT;@-xlviu(Dj6+eKPcYqyis^0vz6h);eAkz=bh;AN%g8CQ6eNcPIY>v|&)OgzwK+ zq9)uY-R`Zva^^HfAJ3Z}0W`;i^yeg+Y4mt`#;{?lAaJb zD{mn}KQ3^!90s53$3Ml@0wUsHoFD9tl8sn-MBB7(Uu|c*N$Muz?dvm_BaG^#KDZut zZ*N8^o%M^U2sM0=dL|x=(9Vjqf!&8<`=lpXC-R;w@!CvxFPQx-nNe%r5nhhF@us1l z6q;_u`@HFoptQTL0nGx0cf8y2A+H=oH3IBraFEVaxJJ(tY4j<)hI-s3QrWwsa{H-t z9b`=5PjXYp?nQnv<~$ISWddA;IiqXzm4_$n(r&6saJjwF8c)m zo5aX&$7FMpeO{slko_JNm9@-8>o;2BC5FYZ@{TJnXSJld?c1*H+z-AKN6-WDy!DPVXwrd4-#F97mXIMTS;I%{{2Bad-whS+=B~MdqSO> ziHP$}lw6DnQtdQUGTO@Y7|IrO-`))636(^ymb#y`l@C8de~)&NajPXK)TZH!xwx0Z zrc>O_h-YrYk-+tsGKZTfA-7@=)0KS)#qS+-s&GN3t^gC9@nzd0*2z3D>Fp9~sCDop zeKhfMy!P#)BA{k>3N9ApvH!B2u73D9JgX#It2|lU>Jta>Lnr_6bco}^-REjPos<^7 z&DHeFX^9NX1->Ll^^SQ^ECO>-5?Q3_wh9r$T2k4z2_o{i zZBQb1;j*(`vUG+p#6(G!JjY`F-f=XWBD)Tvp*JY}fh2d%kM!DAAgJ5dp06o&2WPd{ z?e*_WmU2PT>{>k2sG<#*$?3555H3U4B)|W7t=1qI%#j|b;Ma%7AJa(qr!L#ew>A!v zp7s#I4%d`v5Jk~s#LUAlmK!ifDOm*X5o)&_c-y|{?p&@ad-z~+AX|u68E?=>>7wgo z0kuHmg2V4_UFEcQggG0opzY#)w&WZ7E5yYB;SX_DmeiA0O-!v4yfLT76j9`c$|qhl z_@GT>xGmC%_B#>3!G$$~Z?mX=P77uovzh+@@E>F`JP3?m^yuSg_bf7FW=JIa(e#p* zbkL7O7F_$jCD4c2e%=iUt9_guuid}4Qvfz|83}1a3sEP+46J&$%_SfCWz!9^=!y0B zK#AJD&V^6s@(~tgwuyShW?o68K6)eZXMiJuiuQ?@cf5&uEa@6yqR6j<>1d*+>AC{C zS|PX8_$a8jPg0UV9_Z>ig?* z579!X-;MO1?6S8Q#3#DnY~mq7QPh;FSIJFpn@`$ZdM4a)AWNQA<>3$N3pYLxKm!k9 zalI=u_l{mbu!_dISy1imT-9>NY8^;$5P~4{gT(qNCX@B{&HeFn@QHo;v^!9MB&=RT z+;o*bLwoYI&oW1y*tYmOk$>w0R)r$J_;9@YX$P?_a>H-c((ypSoNK?c4ia=f4<_#p zY*KIcT9NiG^v4>RKPh-E_@6c02btqd;@v}x+?I3_{E5`S&_RwD=(dUfZe+o|#ooPD zg@-NNNC*o?Vq7P3K_=vjxwIOJErKKc(ZIEMLwO@&ap3q_!$*G{um804AHyK_crq!6 z=eMlaULA?v@(d0O2l^+ea_9VrC02RNq0%qs;iB`A!*I|8h1%0p@VjM_BZ?WY_dfC; ze{n!Kg#6sXdeJfa!06^5{18;YB(TNK@Rq4|LEAoQ;+WNB!z{KJTgx`Lhu=F>ZSd8zv;!+%1u2`i~I-H z2a~a9<#SiU&mT#!Cf$?24$N>!ukBTgkYY9&Tt$C5L`2w-7p)iocbpW(t>n}`m z!}{TcKLyyxlDDt;hp4c^Wi^qDz!j-shBN(Rng5=%T{1(`o%y@DyuCVSXe zKAwHoY1NHYeE(lb&%r0u?LU_|s@{;N4(DF=$A&#)C#{r@YXkq}c#tNF?d*Dnmnt20 zknl@i(dOOS^U}=$L~8v7X7E`$y*We`OUc|gM1EJYu)iYk@&m1NIYRj6n@&e=g6*(z zu^QEv%9mtWB>^lfWW)Sa+b4hTTAnS5QAofDX5@P$t^dn$Ic3UEepu!~qp$bH(XhS8 zAz7O~BMmiW1*59K^U3(TMp#)5BPmNksH-Ad;$>-UbRzIoXa)U15p+dCNzlA+Rp#Pd zmqQLv7{@Rj#ffWf$A1T%AIcSa7KeBg)cE%VeaX>^D&05Y>rjAemdfx=EyM}JMU$Lx zbe4aPAibT}ExZf>!2z|oR89%DV6FwS8hx6@yGL(`*e?Xv98ajSs+cBo$9d|*h5Fs(ADgY-a9n0;HHm8=MttJRF`&CB7312MT(b0B~o=lPi%_VS}_PoI&(cHy%Frs@?TeG9J{u^d|q0+ z5=9X}t?eJ5`Q5sc7Zi#n)I*okZrp0n>C4dbXhDAtz@nwXzR>mZ_E&Rt*^B+kL!V?7 zMhDT>WdNZy(9)GhUz@wv-0@l9ZZ`jyZt@HEZbQ?V$qTnz?fHyQ)(HBY2qs?kBl%iV zX4a9Kz^#RH(*j1QM<^%dh?5cGZ}eG>a(d#iPi8)ZK3PyG;VsWVYqF8k#zX!T$VO?$FACI8}^l>j40zoYcmJudhwleTN$WnxnU1<&Q3`(KZdYEnm+(SMXf_>t!g2BZSg{A2hbsb(JQTU^6Aihy*~qKq ztNKWbACGx$9j;pE04V+(PwOv=fu-EIRe~-|-nrtXt4XxGNd}7QKZcTh_X3*s3iH=R zEkl{w36;dki1{-#&syLi9b<S}r2WY7z~=R9f}*(0o&mQ+Zv^!Dd^V zCB9usP7y#`5KrS}X-UP^Rl$VC8u2&8;f-P)85()VZMaX-WR1w@vmry4!mB zWkIOfYy|?)f?6^Yk+JAFJxvWBp7qHIi}hx7`)iaNsLVj4AVeCw^KG6=bRDzLz)?r2 z%ymeg1qk6ss`YB|j1*;>LZ!K)UcA@1dK9Pf7=idBW&F;332ufiCgp4$j(FfOn1!I1 zbrl1@2=(~@6EWc^Hu8?Lgo(K}NQ2_gl0D<8MTUw9#K&ZT#~Pc_xaHPT-=djb3F|fO zbDl8n0)YBgkR@~ag!rX4OrvM`Li~^JRbz#enX35@IQ#@cg5#P8e(to#>pa-1j$@oN zLy}qoS(-V~&|kZ8xR z<~F(xOWuIlIDKfJvF6*`rhVc}&(jW)T(FMr9L%PHH{X)k!~e}YSZkbR8xi0q3^#3R z!Gv;B!CAQh-NT~R@c_J1Nj*m;{NBo!?t~q|6FK*QoMSprhyi0a%2k%K0;i)(OhF`ZiT1vvL|~ zh$XYFy|0~4RecDDB;-@*2%qFhfls(tC%M*Ym&yXcX2x&JX2Qstp0|0QS(?A(Gu>J2 zfa&RCAYgOcZlOD{UMqq!8)3;Z8-G&$5ceH(rv;R zzI1>*w0Wj+-rLrRz&S2O>8&85|+K=5}77MpQq z`mE~fTKR>s!L_K$j4GoDx(cmtidZWy1;+ZUea(N=CQW$`IRzRnDfe>|yB{uKOQeIm zkN-HPkhdcU{ppg-p*p(K$TBxgB>iP8e%r>n6!hp@NE##f6#wW+Wgcs~%bL_=oME_B z!#M3Ie*d?nDJ;&uERVP;{`d)zy_2R@22LI6flb+tc>) z-J_Lf4K<>MSJ!*{i~5|KIa=*cQ*>*n;5ZJXhLrf2S7ok1>UTtg)`V*4xh2S{ZPE_# zK!1_p;~Qxcsv@#ZNnVcg-?sh5ai$YUAfa1B@q(`2ym*j3WtiW*6Oe~pBE_MHfkQaq z*iT!KYC0~)X0Hz9UP3DSVLS5(Ucf-{$*&j^(J-+`KU`Z^MXKJ!QN6H<8B$lf^2bw# zl5skgR7?&Ch#uR9c(D*+__oJ^A*JdXc=vz(l}9Psb7ImCI0Bo1xG&4 zlhJxV|cPlFD^ zwY%o;R=#1r(Y+x}dKqLzw2U21&vsq`_1uyls4KtuUZe$253E^w&8Q?AI9m8IJb{hXJZ_4=_B!f>THAcIL+*OTdq zoJV(EFHxk~q5u`j-0*_X4th<|A656=@z2T4?wjhUiQnT^GcmfLCL&hIMz8()!IXJT zmzua~a^EFORW52kuGjIIyVM02JOF%&DU&mD*RMsn+<&h~w!{~P*Uf6<*2V)raK}>R z3V~Pec?=?K63c1QOIFv;zLL9|1*ABMqk__Y!cful``q7pRLNpIoGR%b5`!O6oL9l^ zmTNJvBcCl;A;xBRG_uor+5MpTCWDl!L@UjI*!Rz7<0rEnnhjfhiF-vi{_?>U4H?Gx zqtYaT*?UU4uOl=OAIi%t{F)CA)2BIEttcSxB~>ex9JhR|q2{-dVolosNAe-QgV-)z z+N?|6OjXAOY?ti(ZA?a(hqGUTmFm8v&44J9%|j90O1nRYt*_U^?cjfZ2gxCil8b6*5F;zNE2M})RAKLB@vfMU#kSLKh1kE9qexzE)0(LLRhQ&>V z3j>EtVM()1F$>D3mYwwWXHRcQGbvD(w!hC(zs;^H0^nltSU6h=B zNtmHa^}!OxE==7fOfJvBfG$;6jPIn;MhZ%t(v&4KhxFjIJRWS<-+1D~wiZaj-U}3$ zxxQJcJd8P1ODdh-b*pf@3n*Vd|Gb~#wg0>wcTuE=@QM#H$zRqrb6o>w#m*all{<@( z-0m5MG2Mv1*Zta@6ElKHLjWvNjQOr{VH`zhkCT-qi1cH1=0Xj%4gMcdgm%e97(_fV z{)$l_6UC5QBXn=>1*KS009%X{&7{?N8L^&u*&e@(+R|~{uT9p@9|2+?f)SH5q20bF zS8~k}$YA?isI|R}_9URegV%Um4B;{pJ>_^|Ps`*^)IQ8(R#W_#A#c-UFNmC>7UgT3QeM;_ zXcC<>i0tzMkAjo(;K`MPpQeXN5z0?-V<4;S-dcA?$ZmFy>@ z@;;T%+;*JWea;a3o({)1mJs$aRMnDHW}^YC3fooF698JY$pQnPn^J9>?KO7EppS4_ z_wU2L`}DKssZQFI!UdF;=N<=I^Pz#FQRa_Y12KT`|oJ(C}%$qQa689W|!4Uk$)A}0; zz<6Eo^Q~VP-UI?AyMHQ-K(K+W|91J!Re;5S4&c?;?anXeR-wfTZd>d~TX#NlYMiYF z#%mf=T5FENC&XQ_Ow2;Z*Kz4Nr?~9* zchELNC)UOxK z3o+*+HW(%K`w&KNfJwWIB9K1=p$2Vjnxzp0I=F*d*w}38RP~;L%sEzG4PXv_#c=8R z;eJ!oOZCs2Hwv0{s^}MloPN18i4D^UuQeucNZHg4eM)e*@zjzts;3xa7uI1`EPDye z>E<hzgJragnG6J-e5SKnpZe>4B61LBnEyjaZ@_+xg*Tjq6o2KZV z`i(2*NC!W0=lz!2J|KaT1=GAH(N}%3o|FDxzpK>>OK) z^%a%n)f3?(7N$u+46G^VU;F+Z>v=mPhi;8WcTf2ol%v_vU}gH@<3{^NrM8Z%&PjcJ zG05K0d35V<7ay&CP-&s|)vd97=Bds6t^*a;%=mZNQCWew8CDD&QA?(}y>{Fr8^62B#;nubcFXZ~ zM$(IuSHW_f|JN*hgsI=rtdHToPI&YVerIHEb?ea?F0z@YMSys14_i@;ALq%u{9*{D z3iJ)Ab=z!Es;}iFLUzuY+q>~ms5qm*iKw+9pr$B3kKr+>TDS_xSE%F7Bc!L6eXcI~ zUjR;}2k+$eTgFZr_O7pM)Ix3R0;6dnHW#2@p&3j%mOr;LZf=vvU&eU*@$;po@oj(p z1HAtSpKP`@uQ=HxOa_+D{-(VvmRq2~fBN{Zf7AnLRILu>>hCzNh6UbLwDVgPyIfQf^*ndftC36$%GQ=D6#>kAYk|k9{wIB98 zzZl4UiWU;NK!3%+`>YGvhuI5WD@Ch`oe$oCeMIRGa7(363-88e*@gKrd-l>+XVnRQ z4}nmE?8F=4+;jwO;E_;jyBZ1YkV+1gRK)^4GSqZVlfFlbL%f_jS~QTgw*nJc6mA2= z7Mz|A>xT))(UaxS3)O#Lt+uS0T-^DBezBVh`0JPI1P?T2-q)SIlJf0Q>ag%)1Jv8h zK~Qh$>&i=tqo|s*H5z-FJAJk}xgM}MGdZvrqZT*l#?E#N8(*bP{OuKPElh6*W2&+T8erVnDmqIfTrqYxTQFo z1?Xw`vnjAL+6+*c3Oc>_kO`lc)jw_3l(|}LGyT7<_2(l>)!37L zKEPdpJQ?-ce%@CU&)<)YWy;a4NVJ)t_^gpLhaJ@%j){vhUAsm=zIs-v?@|J{pA(`$ ze#rTOwv@*ul(=5Z9dNr9QNPz+J2uVjIwMQZJr%mdvSy_Psh)#Jcc;*0TP9*1(8~OS zE@qSvB8ot4R+7IaULz2wV_^u|sSn~mGtBJDeStH_*{@?&Ic4oL-c(8Hi%&$c_AdFrc_Y_V`z7~bk>m)$!q1HG_i0z6|g?Xv;Y zd%MSdeOt68pEnE42&)aC0fR=`QmcCtNgWddYk?Xb`%VnAxSY1Ne}G--IqI$zy7o4E z%to>p!ss8VY_W{9rh=tXs^V&`m(*X`oJlT5tOiv-mPb~tx}5=Tv`YrGHZ0LQDU(<* zC^@GtjqgitSS>vUgpohNCz|k@l$)KQDGwQ0)z2tG!eFEIKl{(onf*#E&+0_OP#J4%f9*7UKM2Vjv+v zn-7q}wDYFjs*^jf0#;J8E=+Rdqrj!96@>w~PmIRgeHc&~^!L`hWsHn%_=KO;3)szL zzJsq^S=B-CA><4Zr~xE}i1RlP>@hHDga`0rgK}~X3~i=mt?qhJKUR@i^CaLDto>u( z>|GNEvhJPxPNHv&@s){RxZ&4Elrx-W_@CR{Z?{TXTadvEGNz;xElB`Hv=R= ztlVokp~uh+zbf+KtE@M}apZ3OHy=nd96oU`K$tSOwhnni)K{kkqkWD0n3*$Cd7WD` zsPEN^ao*#lVY(6Oi4)Y&ms%h|`xWD(-X1NS^2vjE&$ZWmc{6M~MyL_k+(0FhDdkZ{ z);9`LqYF(Hm{GEQ%bjj4h{CUPQzEXLurdQ}X)l`n0(hB8IM`e+sDV2$?YXne6}ZV{ za?>dBNf)R84b}IIDI@YbCw_aKO5MbJlQ;0eBUype*G$UxGd+V^Ut?_E;`Qw>I=@~{ zjE%x5w@>joK-#D%+=6k<60<1K0~Dz$;NI=q+A6?L| zI8l%)aX1r{bwln#pH-~`_nkW-YWSBr7_M=lKVU8Vo%DZb8VU=f+xQ6E#60(d*2~j& z#UPlpmY5y3WWN95zSo}NCDwrhmD>z4!Y1es0Bs3c*7+_}m@}A=lr6p#ViJ`5i+!`8 z4s2kh%J%AL@x!^dF_*N-gI=A_=p8d=9onE>>dzIBL;#Z29 zp!u^p>_&G}v0wme*qg)lwh3m0F3fPi6*513tRY2KU28CcV7gVv~LdYJLdp>7PQ#q zm+3M-q86Iw49^#!ddt#e&y21~BZd=(PaR8iRQoQ@Jt9>i|%;nH7ZFE)4lZP0Y z^gGKm>#`9v$46HNc!5FH~fG#%Zq_py8i< zb=DN|$2S2InhH2+Y03IiaQ59AIM$RKP}bpIS>VUP7wY4 z9q1%{UCs4a@Wvw5qOFt3TDT#l?z{mxSV0hcr0yy0XCT!|mCv8&Gw-c(Zt?iXxb+%c z-QZngt{VXIPHwA6!jq++H8o@%9SUJO&PSQaw}Uf&K9yjv&Op5eC`qHet=Y4JTldd(T!)okA8&(SVo+lj1w0Fs0JuXV>UH^>) zt#C%gX<8E3OkaTQ2_#9*loFkaMEPNVYdv(}kcTXo7B>KHbU@9I5!Yhh!Zr9)@4hi0<;vE)X%z)tTlO5#JBRQ1!*i0ORowEO#@gL-~5s&B-5an`QW) z3N509X$C-ffp$H`Pz~vh)`PY%pJK}6XNFY)EqWkRk+bq_V(IYxrR?*Hl@wz?uGjk% zm8B#P59>2Y(8!&s)_DH}TK@O68GG+2W)64bjSk=n%-HS|ijjecYG_<(0Wn6X8DBhF zFqfS1yFUACmS3kcVRanxE!lsAWS^q`XGuSjW9Q&89t7^X>}$ z@I@LxdO^FP^-~w$R8HqaI(k`1m2oYM@Fd-G@ELxASxj+CubID5sVScj3(G_5n0FfK z0Fk{^7*KLJPgEHU_SDH}H}s+C#~+}4MrzL_u=>wjnflL*ye#>RxY)_ad_kk_>a6`vnw+#__aEQ{ zi37cQGS+Kuj-NP3pVfi|Ia0=iY4K;MK+{}AH%GH~4#sQ>_QU2E8HK~tMeg7#<&1CT zCzCt0{bf*IIq3Yjk(KA|oKs$MhMDdc6voSGJ8D9lGWwcs6ze8>%gRmwo>ge`<#?@3 z_Xeq;sa|y3fLuC_+pW=?4hR1(G)>rI((r<2ze7`PT2bNbte2ETLoaIjqmsQlu7Ccf z-GZdzkF2Dn6q{dZ*u6TIkaQO~su1x!V<}Y7=|9dM?;G5OY{#KeF^^&lL=*IpiiD1` zYdKuQ$@cf|ZC6@16A7(J0l@A5eWkfD_b*jj#qVp;jK03+z~Z22dA5@`I4F6Z>XVg@ zBHrn>z-xzz$^_BVlR5eB0Qkk>aY3Df(fINHN;$80UMk7^J*%6o;DG9%m{PJ=p>adT zFdLgQGIGIvq}*)8sU`tHB9_d_i4k?RR)$wn-#`2C=dP!7y6eV!K?Y#p;}NNB?IS_^ z>Sas4Fsl6yyixmF>0=;l2kv(1tdIwa1CNOsywa0>>+Yg1MhfLH5?p%j828J5tCm$- zj*D}MU(Trifw({RbI?zLR7)vK7e0E(xs9#O66qt>h7*h2hR>u7&&>P|i-3{bhw6tt zzWjSTrpW!)c@Pt=DOYUn+PLb+Sm4>E_qF}P8>Saq;Q6Pg6k?58*Co4M1nuc3*}Tm* zCo&!`twF>Kfs769Gha!SGDF}`BFoQ5R6xrD-J`URtP?uZ%5ZZuQvG z9_O0TK;-}u=A`qe=v!63SH?Jlw9+Ck4_Nr-I8a+4qHkSIR5bYHxF(FzHhve?SG-8) z6$3d`;^?9`vx}YU;@&!PZ*4|>-K;Q>evsr0#4BVCjhrdX-s`7FLe96Kv5UP=g>anF z8NZtKPCoZS<}jIK={a z)(AL9v}*&>3SVWijq%iSVwsTsJqj{`&E;JSDY3TRT&1J_S35VBo95XwtW|){zXo}c zc#-A;;*o<3`K7oFG>e9f%-pet!60ZKIxbYh{}oXC7hR?7mf2&BnC*LQnILfm*VX;i2_n(ChDO-fHo9 z{Ihnpt;|;+#%e>EVn{Q1P?51@M$9ay1veN3PWsATr?$*SMORXxPlL$;jrR3ypXkE+@z|BBD{j%!?lLQSsG?U%g%rK9=FKmU#RHJeos@0 z-!;5=#^T-m3_HH=1wX_s?q?RQ{f6(K-n1MRy8sTApPvb%)S>D{9#_KfWQM#nH&ghS zXloUC6@#^!pMRM{)rdk(HqrlOXwySR%dd+*K0q1#eU9Q~fVNSC(c^lqQhU^^`+6th z0;Mw_X)S9N?Ol8RRQDQ1DEZaQ#4(7yewcrY9pC?7an3ce`lz#E`_9mkkJuMO3x>5hCnZ0`*tGYpHh{Vr zSr8YOo>;I5yDE>)rtxZoS`><32pXWH-v7$u_Vx4#zR`eB6wy+M!zih-gW9Y*NhbnR~_nb%TLfQklIVbucZ-E%;Vqu4XSO zF}nFR0Ze@kQ19nK$?klpj%mo|7S`C77}S`%e9+4v`g@NW5FUpf={R;EZ|WNzv%4yV z-&#|^FjL08j5eqyTiK#FLz1=J_DdSYzZC=MB@v%Lv`=w%dXXKp(6*_d-_iflVpt{u zo<5{-#Bv#zH`pbSJL(2eB!h^Voe^vq@FQ!=q^X1K3+^Su5dWmo?oGIBn}5Yw_&Fe7 zSik9^8a5S=E+{gCdS}J9POj!!NO3V(%&P@r?eY6zeqWM_ESvy=OT#L|QV>zf~+T_dh>!Y>%i`%u%Yz{;z7?kvnh~u1-C_3#V6*iiB zyc%8zkakeN@Y4jZ1`0d)h7(uFpI71(QN1qsesXYXF`6MVBfXPmghezkwWrs@~Fq+MbT;OMGMC zf?e8ZiNnx_yxLvcmDV7{alCUCS3zCK1B4bx^LhCGNsD&La*g1~kp6B5^)YT>(=_dj zR_Xkprl_NqSt6?u6t#@DHoh(7#Wifa{Qd*=3T+tY^vJw6GFBSKHN}YzR*9ajy%Zb3 zzy#?V@AlGmukKFS${tos^|Vb{Y?`lJ2iMB|T>t!=&{40j@{r2cs`N!}y3-_^D;@!~ zGR5bqMim`T%8o1Buyf1ZH@6v;-C{&Jki#J#EZex$@{w?V0CTHqBsJrjAlzUfrRwS# zo@)ZbsqbWN?@5=B-YsbG36=-b51Z*~pyfwTqk6B>3=#e5B)h!}SJ*#2rZWETA@C5+ zt4OAj_EeZpat>w&?a3EgOZN$~b0F37&oEhOU4svtbGtF>)lE6~;f0j1k&b6EPA@Ow zT;aN&jqn)h7?*)D#j?8V5kLZk9#9@8Wy$e~aeyYJB34Chib}C%>1XVuknJwcCjEbe za9x!O9Zjw>vSw<`$y@}a9Vt>Re5yA2m5#mbw6A__Q%9AX|HF>KGo_7lrQP#}d!;4b zKV7*FqulZh-Dl_ZndhTgPlHLkYJ@$yDrnL^s(sJH)i1-I3j*Sgm`v|7cjbi{+g(NG ze%M??Z98(;7-Zc3j9*f;t~t!sIB;+Cx+M7q<&R{dKS>1eFl1!olzmBz0(&SQUbf5`lz2?(Ta} zG>C4ZED09Xfc+T|qoCJaC#l>1>F|rid_n8e`8%S#L=+9k=g_*h)V(bvYhK&NsJA&K zV7Z9A!?Cac2omXZ?_LL=metu|DJ{SSd)&^Tk%| z%orvS{BE4J$t)@$YBg%06}i#-?6>dB%NCBNi2mlFy8+U$U{M8LG24|5c zrJWz{oMV5liEhtIGgL|g3lSynzZDqOVFX;9YxaIMAEn z&$Q^Rki(-btlY=YpGa8Z5}g<4rmY1zIScYUDPs?Y=YLHr3T$dyRMls2mx8 zXEfz{*lD-DiT`0$;}$2_b6jDgPcAe743&SA-d)@=4%Fu*yRrQHW>gJ0H*5CABw+Cp z1iX3e{Bwmj4hvG3GsjQ@#9EQZMw2-}kw9-IJ9JE~RAlzQhgUdV>I{52Kb2d{xD4d| zlV1n-XQe#f5Vfa~OM$5}7}MNKn^JBLsM-S=35=ocl+|{3i4vw{l-=_EqCRXvbOzW# z%OdRfkbWqOt7Nv%rW*}4@OKn83jtyRntH&X^Q=5KonSNmS328jd@N1ubj{DaBu2IV zGO}~Jn*V1HQ6r=Z6?KeE;-fu4+%3@QwtAZXE}wxj#S5PNcqjV8?YDn&{P)d&DxNq$ z@Xil-6%hE?(?dJZ^kpupiRpx#UJ)nTe@#x%(7+MCrrEf2kvR_hDNsDh)B|ojr=e zhvk=|q45$Rv&ba)&fEvFc&=~d9QEb7OVdx+eS2J0KhV(wt~>BvDx>bLmPVtQ@@V0F z!Bot`YCkw3_yYsE6^SUBul3pMBqh{dn38s-k;p#Z04{ZzvOPoAk*2c3vEjP6_B8t5 zm;a^FBotVs@)tC-eaQlu=8hU4Kr>+>G@Sz1Tw)yeN8ql#SFKOd(hd$euCFI3y+{Ap z98qUJUIIvriZ=sD9(&^|o%2h3)TZTR1T(o2A(=Y|AkyEp{tcS7dbd1!l8%4LyJc3n zj~h~d3~2Dsw{$}9pd}`xTw7p_Z1p2H-Xus6?0*3_7Fty3>c3CQm5n(Xa~j9WR{*`M}xo{3@htvQ&^%@bvYz!}W=a%Tqbqj$aYaipB8K_CI!HeR(c zf4VL46Q-oFxz3ZdKl$*=wSD84<9ZD=dNOja^ePZ(O9^RWw_puKcb1qqI30v?m9S;A z;QSx-rpmcq+lnc!W##@`k2%x^mcDVsaTVT;?k#Tv`BXq1L3i~P? z7(|dMw-lxOf8J7tcTRG-R9ZFS;nVP@k#i4sy4+_+rmQA8d}+}Zdu?*RXst^AdhdK7 zcJUbhftIuWqWjap*E;E2@&DeBk96>NpBZWU?am_rY@WA!Y@=DSL-3l4hsN_Rsu?-< z=FRYOg+TQWRy*XBP<=>2mRT-KAxEjm8i}Y=#{|GK&@nFN;WEAu4=_2=(}UEjjtNg! ztx{aUENn)V>hZrh&x|;+d%W%uYM3C8xyc_i2O-3ImsM=u4HWXPla}rGWngGsr8&zw5ofQ7Eu?yY5D%)9@IejoI;Uxov@n>uH) zyafhrOZhCO*`Hk0ym71hnT`R1AWGaLqb+Ixol>Ygk<`mB4;%Hi-FGvnjBQxh@}vt8HONL&#*GT0v;-Y?p8SW6@;?5-plycVA908u| z*I$pan90!GQLdKRCSf3AB*N-D@+7YNOyvn{7f{yYziP`Jjl=bM(F#w{D&ziNnx4fX0oMRr(sWh&Fz9XQiz+>tb2wB zoWo?il!4vRo8vb|n%i5%lMWv&P-q+Fz|io|fhg+;I4)$nYvm*lDHD->2X`_9p^H2{ zh|p#qnkU_d;GTGul0QUz_wKLGNb6gspoKC6T2O~+5qdfv>P*JKR$C^Uuq;ZFycMuZ zbii68jCv{jRux4}#s83omcP~;OPz9Ofh<+!n;t;|3f0Z^obe}M;tR~3Y&5H+pc5UM zG31VJb~|*Rf5C%aP^@v93V``FX!C7V6+&;Iy2k*`Hb4JNvsUS_9E?esB;Ws+p$)5SW47Zmuo->Hx=W0# z>vN9Fd6)5jxq9<>w)3@p{Cl2ro?mCqndzdX(*@HKYCpBs5dA)v5`}X{=Y4Z8J-}imp z*L~gBO(1)a-|jF~*Ke?H0}2XgH<(HbQ~gVEi%oJT*K#u}4^MXvojUcJA*?w#E!9}w z+$d$%^bFhA-aXlt7>9vP5F%+bq9s7Vp5Zjs)Y9`U*>_-duw@IuQsKG z#eCZC8D}_`;86nZ9F^KDT_~G1F3)YTM$i``k*?!YM3nuRio-KV#QtU$5aIgPa|FJ!8^U zyQWlYnTBy9D(Kw=4XtP$`iM!Am!&oC38d&e+LW|5+U-~1p+E*hq#4QMp0L){9Swsy zjkw40?O0DNh`M&^V}&(Q8pn@UYaAcbbrTZ0Z%Z$}0_6sl?9i&Nr+4>u-6=U1nM1e9 z&BV<3Lg!cjS^KH8HkS$p68{U=T^b*`HQDZ!u`=ADSO!#l-+hPm^gFs?T5oO*P0{Vr zVJ(ahzdWU;4*}!G{?QdK@p&$MFw|I?)MT$}f{f494-n~}J%wiG;x^+AuTa0Qrs!Cb z1~$izo*UZ+0GgK;|Us9rln5@+lJzdI% zc_hzv#Ewplq{p59CPt!#byv^G(w35rj)NEL7^Gg3^i}5vMd&`nE(@yB1`QKdF>|on zl#ULkgn#H(1e^R%6&!d!DOqG4Q2{?5sEK_hae-tDj!xWn=F1(aAQBOwsa|y}<5HNb*Q!BMu%LiC7Z(+|el49|TXXX@elkYwvZ^%{(mV)$3EuXyA zuupB9*|OwTfDgZYsZ+;sm^3i{G*G4!{MhpGl4YbhGT>Cktq*F*j2 zTlk=>AJ=}9L5{tN*w|BHv8>Uk$95VjYmJt`vyUZZa}+`?_dYXnnNYpp?Ay{l?nE0R zfkTMDp|?HeMgM*qg)N0fYhQ`>qxo*T;m#HxhoGQ%ZgF#@ZjVWdPVpsneQr`y#PsR+RNIQK8tRT4JyzQhfXy;5qr$=65bxm+RP^JdZ<#cvha?W9jX?>7#v|K;BEU0exUZU+c}pp8?vk1y{l4>>>C_luL<7jT zeJzy1f0cd7QeEkB3tFF#8G6vuq z#KxoTBqIBDo=x*n<@e7mVNBB?R)cH-#NdNhvU4ScpX*N^a{163s9AMl9I#lI%{~qs z%&Q|u#lPI~)8HIrlRU}Q!S-uy*tem3fHtDLTaT5)QO>c6x;_@2){~EnLm5=QaSsM= zp-h!IK9nRT$?8YFgAY0p65XcFura(Q8JK}NcYmbM-zmH5d)3+o%2i>G`w>4921uRFWIPn5obrCirE*_#kGcY*36nFt+0TQg!`jkc*$YvB1L=5!8THv*ZlyI;tY z+Ug%>JPMOZcQtzG`9qV32N_rM0lHl|#-|<^q?4J;%M96mam%wJpX)QYmS6ElC z_5(|Vf3CKfL$>K|f2(sv&G0;+=z&W5#hmfY+_Cz!+Pin=Bge)4RLk5e03zzX&sHC} zBO9=4N}+i7hX2saa+~srI13EGK;Ug^oKuSmazZoFws~K36^hZ@UAh#z`|ZQ)Apr^C%+DDysW5ba%C6~5 zS^w^bni;S_O`R2c5VGsV9F3awDoYGZo3!5*KJ75 zp7pTCB6s`&e+ZeXb3~HhwmpxuD!yk*a$;lo6&{1>KqbJnm$ch%H({Iz_vu&t6Wu9G z7UMJ`?StLOXKcu6r=yc15egj4mQse07L+K=E@~a=@f;||&+*!M&s=sC^mc9}%w&B* z9jv_&aJ}R;kh7tfLJIOWqaGGeZ35b?3(({JD&v1w1~+mERfS1k_%iR~=ei|yt(Mq< zt5R!;dz~k6kh(jy)ZIqi+oavxew&RtEu+nCS|lFy()mt8uY|>&GsV<|P;U6XnMd3b z$N7^_he+p0<{MM}#MTfkls{dw*Nq#*3>^g1di9G-*kUsbv+C9!LABI4rID8&{u)xm zeh6I~6=1bc(D=kVQkTeOl6pJmRL&AnO!q(^58f2^#GMr79+rL^TgV&A}T&Pd^9d%zqH zgms9|^9XtBI^w5GjXhE$(`88qn)*4Qqms_FZ+tWp(9iaMIyvD#WL&0rincKo z&P{N0@Q@E;y>9~}wcPbF**jhXY*75zsUK1izYt~PWTaH1C1 z7gy6>9%L0are&yWj$U^TvE)3Z<=TQ);>XXi(x$NXQdqo8l+{XsP2|X02wdg?{OY@R zS|w)NQ)*-MRKB8I*`>7rfe(6u21qBNgN;r!8g?{HKbGB*vwYZb2@%@cGXCMH+}J0Q z>?~LIKkaWwl99w024e?AI>-@B{4jXp{^4je_14YfK!i}DsQyB4zC)Zxk4J#9>mS>i zJUs5ofq84j-sIc3Ja1Hf#C378-Pa#JMhxjZB?&0fSVr22ev$#beTY9Eiw%ANmOlSz zq*(}JGz=b2dS56M^;cDN-KIh6Tl5sVJFQPoV(Y_r%%ZYq}9-_ZzG9Bidl=UpQmtC%9Y&9ysa=zU$~`j-dF!wgJdwYl zaU4GVa(=?)F&1S&61KqP%=&W|fL*Bb%GLRm=`objft^=U$XT;UwbFxIEhrxZ+L4fR z1EXo<(M8ePvkVUmJsW1kgnRf_Tn3_7@sbiNBQ~ul^2Sx?grEt^KtaaE&Y=OI`6IQ@ zXw2m1FSB2}Pu8Xts*S+~f9+2CtLUSU0@|a_OOQPE)4(f@Z8P;)iZz0|mdKINzXO03 z^7E`j{=&}@?6Lso-0*MPK6D-ZoJC{F(H6*E*?j zt6wVpB#f<%Sk73hG!l&ik{&1+6u8ngD2Z|UE;Cl)PPu(6yFVS4uULPi&7eQ2Kzp`m z7$nL&>ZlshH)1xM7YfdTSoBV7WZXoZV_2wWEhY_q7qL+_ZjLH^0}!85`;m(I5J7*d zLMan|Re&iiyW5>(B&Y-q0aU16Bl?MO9*M5okHQS+G@ZXynog6>oc^|O9;eOGL)Y2C zX;aQK`+N8nD^CvG%qCMMx5W(zQn^SQ6w*If-jue?PrQl&?7NaqbXmO#pT%u$Krg4b zCrDFnZ=`tytz`-no=)38EsQ1hw-VF%u7Q2vgdPQ|X-zB!si4L^>APjNr(V)!sc$aSY=64x^{5V-PKKCb|^7R4x ziE1|_;3RIzj;~-OQA^%1v=ZCd9UeUnv%IQ=no}jzevX`ALkClGfMDNnF``6;l|9XT z3EUn?{+g}rZP^G99=qWD52t8M2I=rZ0<#mirLm;f6A@EBvvC&~Fa0C#M$*Gv2&SPR z#3;MxAZiej8f2H?mHrh9SEj2X(i^@5I=GPI%z)9&Io-YI=V?`gMOui$b3d9AgxTPq z%t8wIy&P2ytQwE@|?Og1o^=?DzwtpyqeQKuIIDm+-Ww z_HxFB3Um9ZPt{F5f-Uj&-k?7l#HQ2{94w~ahNsdY2mLy`@X0Qo1zrLSpFz+dZ8W;7 z+%hd>2KD${uE)Vo*?p_v7>~?=UZ&mTQBfajEpS{gwraFVyO2<4)A!MTQl^T^$I{m1 zYW&8=l}OlY<8w~$(eVm^epXr)PoosJXtM{hNfW*cGw!%aJbu^zDTs-UzYHMyI(B(xwh>%J4Egx=H5c8ZE6Jlh zd!Gd5!=juC*Gs^*14RDOUVHT4A1lc@Y~5)0y8_GL8^=d0km{fJU32yYkpV5 z6t0?CSh3gkCcF=i0i+mbG^X9fZHV!GX!V$x>d5N&icai0G7TW%|HNisqt@)%Yc)28 zC68RUKS7RhHQOs%f%gMdlukNQkH+0fq~Vm-)|Wc(_#=wMx(Of>9R0hXD&5dK_togr zvnBrQ1Gh!=tKq~*um}9FrM7HAC#JaB#waSE5O3Nxt`yn64rpb#_AQKv@>?W{(HOq) zkxa*tuHvA{3JW^L2w(>gQ5ubtX(4qt@fkM*5?L^tNWj4Q?xVjjwBdW#O$o|l=Cwl> zjnH?)kXazDC7iC!(dP_p!W& zR;;LMsR;PFL{ikQhs>gMOk#!8Pw{E;+U@TY6HXBZA!436%2~4)p%8(;A7d`3aZ}bB z{}({)F|W?5O5iNgoAql~>ut5h0yW%3a8SSz^x!Zfv|HCw$Fejn(rgtOHQv zKp#Rg+clvh;170JG%Ul&E|Ih2B+N&g^x_bzzardK?0I{TsQ;yxvrSyNx_MvQG-%K3 z|Km!`Xe24BtJJa3T9*F%dVBL#X%D!@M5Zb>bPJv6eHt;AIODcB;EI~3K7U&S=D*^l z?81@hdk)2DLuwi_6c^ik_(?<_Fo*{oqd8Mvt(?n<70xH0s4*|X z_Cj&YI@YrR@*;6Rob+lZ4+E}WkpEay)dfk(zrVox zY3$ZJn`YDwO6X+(VoOD?!RXxRpD}w+mtvlJ5x?Jr*^FD--d6f(5R&{;(N=Wh_tXbW z^=o~x`IWjxj((rLzX7ibn8lk=-f#bIJc z%$#P{!wP;^TizTIEP5^3bGBFU@IRSKb*|!{t#yuzCA`N|_-P}gO+GH;=WZA04@MW!_n%WtM03e$rbuXI5@N@5N_*_ZfGkL#DPzMm?NFS!dY!M9!%C8hg@)kyUtYruN< zUrPnQY{b+AD2#PdI(%#ivvsu0vBbZC5coNyV(_oO=@OOXievkunsTs$4aR00aJiC7 z0!4#PGMWRQnUdiW_+|jt$MKk9W5$67nkDJB&Y z!!KB^M14>8u37lzhNp}|6ItW{piu9AWayBoHQqv1I;kpAY;4}0NE0Igo7`?E+!zl> z(A>#~hWq$(@r9EXwdo?(gHs9*oFgqiPutGzLTA}CaiS`>Fxy=y*aq6uM3S2swz8;# zQBlf%SSfrlhNlTP8!rR1hLGVNGuI$3$D^`ZdSi6dGg8r+&6vcUdOfC#XYazqRTO9+ z4?}?Zd~Ht0Q4y~RNUX%!7A50vMl=KBFT#n49P0MlI_CxraK<_L?~A;$bVB3oToq)3 zHnBjWlM_ew)Ng?Wu>n2UF}6fk0}|;dicG%V`ESK|4yr8?kK}j6d=Z2M1 zb@O$UHB_VlHG2(!Wn#C}cEs)VIvbv)U9;n5;Y#Vdz3_Td8sG&5A--&mp*SamkaBj$ zKd}IszZ1Qd>43Tz+aG+2F@2d!E;ep{{u9)pV$R!%@N1`tI*YiRz^eO}V>ZN^o*KuX znTCTqI=z6M1f-7|-PFp}wi?VP&DC1ZBf{wK-qqawZ=gbf6po{H3@A2w`<9v)z8^tp zuY6%8_Lu_#4#XK+4BDeyceY=2ryg+)wAlF1Qd_V?=FhAX*X<5nV}CZBZ>!Aq zt_Qw}8Jm@`{>tWHSNq^F+4j(jT-=^cz#0LZVt0txTfKBvo8q6^(t@$PjdT)K^m6#w zV1_iHi-$WcY$}dIYTA_>_J8XbjC#+=HT3vkUjGE*;V22~dsU5JXeLUtNwFA>B-E8o z$~fSW+wIht&_!)lb2+rbi54P0Uz>^_)o^wL(<~$jqr|SD$GM8#8N&JhO6?n-qP0{E z0&{aE&GE4j*tlG3XG*1E;CfuXN!*nHEc{d`SZc!QHLO_S97_eqmEXTjy3g+=zxf1E z?~u{NsNN*C=edg+;2F+2yX``v>sp>n6hwBtH$I(ee3NrqC>K$n%2R5L3{R&URf5qV^GD8b zLfEqsQyXXzY`qPq2->))^c_IhLd}_#h<3UT-bTSFK1KZwLW?zHG*}CiRL774abA6` zu5rAp6y4M_tts;w6h(GIRtX=zEyTXC8djhVLA}0prc%Cl+Nw?kAztTy355n7c?Tp~ z=%Fj_@?EXKy5hK9Q_48-^#4rq6k$IzT~VuD(VvN4qlTekGw}c;1wl5g;Hco2&9~fl z-(JcrESC*oGam)=KYWcBhc*OHoU$7Uf{y5dA$V%}HH>g}7*K&jdxzR|($DzIhBw9y z^Q^DhZG^F330iD{^8Sn>x8m&lp2O^3`H~PdD|}%(IBbABhXJg2UytOhE zUKkC9YfN)mi6tbk+U<_>SDm35v)0&e%nW;+!l!leGAexkKQSO+^cs1){y>Y~T6K8s zynYYGwSrt!s?^C)12B2<5@Y>Q&z;6bT^D7$!xmVC$;9pPE4ILKl&Ox6k1BSuC!1`N z30DLn$UlbR?fv>HkXA|_h{KvHIM!lXDdvfFgk2oJ`(G9v!9dJ`>ci#r+H*ZSbTq=%T4Kc>$A)X1()D2D0XBGV8Eh8|RSDNj=N_t#WT!LQ5VNdh zdf|$8ReH>+TU-zCEi!;TR(El`7!^E7$y<*MG60PkEZH?e{Z7yDBA7Qvfw?s9+7h;B zd<`6P`R%vF3`*QxSJ&ZEYJoK|DLgJn$f)!Oh%uZcg-0#{fBES1O`M}zd}YkepK%SKlv3G8cqOmdUTe{w-K3YoZweHSDyKBJ zw}Gh#VpH}m#uokIlOkzt;=I zi*xrQsdOdBpv2O~N*;_?OuCs_u9f*U*qHhD+s??aJ>L|lpXE($9oC9i;fou*o&wic zYEL&f@%^&TYI~$~Q+M>P=Ze=FdniJP0mS4`yYL_c;dX%#b7?MOaHG8+*^#PA)OK3_DZ#j5ijb2R6c750Lt@v7&f(gZM;xc-O?|5Kr)kp?P17r<4%~H} z1E+KB3W1jQ&6MGXo6cT4N_PtgE zmhWTJjx9?kb)**EIeV%rPQY!KsRnlwkJM13{*Eyy1@3K3$<@X8+7W=)WK!{xjq z+}QE8>V$~|O{`Vju#$;G`)m*Z#+jdw=d^u|<&%#krcWc{^_S)HT#a7S3JJ6)0Se zJ(uG5=Q#7&5evJBY=E1T+9xHQOdSQWZ)bw;Xon>{4Vhd_+0h|Ox2Jz@gw1NAfha9Jvd{f2zwx=?ClpfGLfLLLVHfK#secQQG40?;y zv>Q~z!8>0CxPbcXa2;CPde)>Z@%|?2@u=4A5>hP_eGWMH;_U0~m9Z0fVNeqyUU|zn zW9U-nlgv6mWDIS=AjP>|!`-A-D_k7xqeO9nikq58fDuYaPAlS&BqVod1vDNJGS}$l z91u4}0V^74>VPbwH0EsD88#zkztImacbS;81hgR#1jR4K95tJGoK8_|j6oaUi% zRA&k>ssWW6V%qYq7VAxYC)MIl`>u`sGG2&|94v-_IuAfe+DeM{*#@O)hvAI)VH zgN0G)BG0*QisZF@v%pQ>jV9N$+2W)J9|IhuEZLSpOal2cl%rvR{l+)rrDv5xYrvTw zXB$VPhda5|vVn&)FkU(b+mdi&zj zG;iX6;SwxsFGok&G}9i1jc`EN?cAs&q}Ayv@vKL^7bM@Wcz9<(E4N<(JFuYQ>yAeK z?j*hmK7HqATJNW8b9S4ep#)Gr@)f~z%kMQK)$-r(AqRt=2@Cy>BaXrG)kZ)%+Wm+e zUXiP2tehUJPVAy-gsLiMmsc#VJhKe{=7J(#>=#C7WwOtU4)^qQ%cJpgBlvd zU+9OSN||~oknbEMmw4PhjXA|XOQ}rj&l@av?b#ey-ra<0{AiMGO&TZzd;ZrN(>-$^ zi(JT#{Ogp4ryIV6=7xh%;M>k8|7F>Pa(B*tV`R5{DJD>278t2m>k<9{(0D_{eWdc< z?MHrdrJFatF^3zij2*q#JuP!6%9g&0NQGRnXn~(Pqv8-oQ&}rY00f*@mM@iYus8NY z6yWfl(a!P6NM>Ky6!>s0*~YvFgtKedlNMEhM&@hhhkQpJhD+pWaY2G)G0rNc@q1V@)I}F&BUy%*oG>$n>d5{MPQZ_LfC`M4RhOn^v#l zQ6tcDhvrxtjAn*#WoO48JJw~~jKfb{s$w+&e{t?Uf2Lp<)>MD!_wboX@xl~&PI#pB z=Ht2y$aSY>R+geRhlA`sdbnow2ucz+>7+FmSPq^1)%JL8H0Jp?nM?i);%lUMjiazG z8Xgb}opHIb6U&Z=v9&5gz8}1vFyNiQn=_vRn-+KyxuVdy&~>~X5y?mmE+mOVXmlP9 z4iptfkGL=MtePJ6$TR%jFlMs&q)lY)9=Ib6PnysvSog>`iX9V5+LqwuamrWM!rk;g zYCoah!^G`)Z{6QS8crwWhLRo&wg{BB*(o1q)*v;JN4v=s#N1q#AJ4X?B5x)xH6QGr z_OE9#+Qj-P=7k}h?n6%oYneqM0YiKMMc_%!?837i`?Qe8%*LqAnW)}fipDDkv zh?(Af6wy$-8nHjsnzrkGaQxrs%WWTLyt_Y{++b$Da!)k8TrA6ijEbFWhGNt1{s??m z8RKFsYbFW3-IlrJn)Ybtux*LPM2WNV0iEM_x~9E6E^}yC#k4o)+rsh00jBua3iO^^JW~rXBI%<7m&x z&uE-h!e&yh-QCi`ydk%$m-MM1McBFj`Z#oR@?|G>*o@%U7^hP@>~mABayy%zNAM*8 zXj7m%A3KA5?Hg5xj^S!c+P{uuE=@QiD**VM?1Z~L_j(c&8dho=zjaNmLW<>QGx$Ie z{Kt8mcB`H}B>cr_@RDCditvluK}uLqWltcfFxLrpZ^ctfrIe~@Jy#L0!xDbw;>STG z$WC;oCD6T>FMcm1)jPbEExD*vv>+$|<8@b^H8PpX)%Nzq)YeyfI%W~W72)dI7vw*1 ze1~V&&_vq0Y-+;kGQ6TwH{t01$TtSGRds-0kS?Ov^->ylZba2{SokEv`9k^#?t^&i4e0_8nE2JwPP|tr1 zmEC?LA+*iIy4|pP1l=I;&9S`MI!}kC1Dv-%YS_?Bd}aB=2_cD*a#tNQTiNB8Zm0gS zx=HRXx*exwqC6(K8VKjAz6o>1qJlu#H{G8$KcTqxIV%DaBhw#2#e zaV+W>60ogJwuwT0`p%=vQu?%^(i=%Ejs-Ex)|b7v!`vi z8g-Pv2^vpKR;@p3TcSF)*hZQ&ADaXC_vA}W>xruxm)Uz{{<4xBhGvHw?EYu{8jwRE zuZ3m;&f>eY5{;{vfd_8Ob*7s&9-jc4iL;lV3prjB<((&~oZP_L{Gkg0d=z31#I|Bm zlsUXDg?W6xWzW!8;*A-m7Aa_%0{|IXA|`t&nAED^>+)omxQ2m>T%=Tk34q(=6WxT4 z6Iy=q87^w~AUCvom>o*x_Vb-j-}lV7M1k7TriR&$T(>%ccu!pV8nq1Y_2 zu$n4~kmQGHIy6>C`Gqa!{nGPM#i9JbN7-+Xs}*)QL-uL3K3aZ+L@Ic z6IGdwNsz@~?i#Pc`nf56y%lIQLzk#^rMTqhrlBL$$fF*+0i0oJnCcG5dEiOdah!Oh zbjNT^&}7X=g)v=x{|u)pek_BIlNQXlW7|nzZ+_y!gh|qV-}dws>6CbYjhpXMgdI;M z$iU14Z_J=w(14>WTl&7n!vH9l=d(8|nmzxoT(Ru(`Gp(!49~@e9DlL-ML>rG{UF}k zF@MB$5tL5VcIavl0mELFM+4yp5-NVKg^jUCF;~}+v));5>qBFEbOgX6Ko73Il_*iE znvU|r@$~zA#~pPJnx$oc>UcggK6G*y(PAlpw*BR&2s`CoS4v|G6aZ_8Zm7>sn|2_# zcH4dZ%JCl4VZ1XjMp}U>T>kWrcKOFxzD{sQ*87N>=$33S#iR)HCG2wphRF#x zuqIpEmdh>Tn&4g@fQz6AWhdmOsk&Vj#oyo6?`7ntn{ht{+UsJj(`r~iTy7EPLh(0p z)3qB0G1ISkU|@0HHd{WLD@$3nu;I#<2%odm1-v?}3y@);TS$+7jqU#_qBOqe^)x!N zowr`s2`(!5ZkO)y*Ua6HDman8CCIb090Gf7pBRG|@bvNB)(5w+k->Ry7E9@Hc zI1c1iq%JqgLc-BF=eAOjygaL|rvuv@zP|?wmrdFH;Chp`Sw1yHZ*6bz!g!dE*4*fq zfDREFRH@p$$QWofvSxZV6f$ScTb!}Oe+7a@^7-n7*M*@M(Tuc~I{%icN5*L$_nb=r zcy?y+$^?8<)6_qW^EgleKECb69ziAnHiOA``R;ZlE~$?q>?b)1pW_H<+)`FBs=^(> zXD9#c5K0uQd>eMWG3lFf6$+s@N+}z=RYV3H(7a9eRg9ZAf+VBkdH7XQ#W+UGTO{U!|S0C7QkYVuM>(2O+7T_Mss$Wby zPxQ-0hy>f%7gf9*mbj~?kO`E#kOKme(VIVBY2rf6wYi4&j;P@`-$R{pf$?qckhHFU zw@r>l*V`9uloEm+o1V9WXX(3mwk!@lI#75L@t<{pNi@2=#9$P^p9oaVcfSx{U0Z^q zZCB6l<@k{|bloE;IRxKyK-ny|KTDGq6$kDQm%hGdQ8!4dY1S9qA9(c95CB@N+A@nB zc071lj~Icej{D;9)t9A5Nx&tYkNQtzM<+CK-h5Qps_VbQnyy<3sUouh8>Q|?f5{DQ z`CS8<{O$T7~KaoD-!X!JX88_z+1W1n@M8r3v8NPGR^;6fNJ z2HD^jK`Ba;=6#F80Kn*KNVtn5D!K?ib1JnIHKDNZub>9&(K2Kr}=yFmyo95}@So*oP zr8#^|vJDMtSF>V^_X)miSy zsEf3US<#|n`$OR-Xjm?&PnWd^HuZ-gyeG5@l=GFOc7lWx$LPoBf#q7zE6fjzei-L- zaSqLK8`~`^P`VzrLl#r ziSkpkz2430F&v6r3LM~rlAX5Acn9M;D|R;2sIAE+!-%*ic11$~kqT`SYjD$}DTaEI zL#FL++RCHEcqFm8`ol?jacIh}bt#mnOeL?Oy_pZXts>D}*8!Ri=yuloh^yr6OZMqV zpVa?9;d6nwgh1Yp8B_<*dSt<~_=BwiOpLyEnO~*c~G{yu8 z^*v}!KM;Jt-wO%+e6W!!>>|F69cm#Wcsi1}@=b&<_=CS9*L7~p+cPQ@ODX8mR{L74 zU02ie=BejOZ0C9FCTyw}Fj57aK=L$Igy+lxe?d(2WVHKzj@ytx%b_$lIED6eOAWCr zABw2Y*vSo_Y9iMY?9<(R$>Hw)%`c4H;2xf%`2ciF-qKCrKbyzBDYt93%dU0_M0)Sj z`E?{fEdys8%|#C+?pZ?>#kN|cdK%w&;Es2|DNaS{D^XGBsOq^P)%ExRF{B4ItDV0T zRD3GtY}9A4v=Q&cXdLZ0?D@^$btMkI1SIzVOe(A7@10GcZL3TZ*}F3^T4QbfuVL0d zd`N^RkWEu4amwEn8}73A6i-Fni&~HKFoXf_26}l0x;lNCL(`DswdZ4rb{W5{Z)EZT zh$651%&gCFNxmbAXq-vI?ZGnq>VPAB3Ph34KI99-*zDwgLLK`CL6WX?!x$lghTZ=M zIxj)1kSvEgf^#49grxZ7Tv0Y`9*+-!ZV^%nzeB1 z%!=E|qfM$F3Fz%YmPfbbIUmejVG8UgIT=EPy z-Dk{@Z;UTHqA;AXC8Lo!f>YQGnAmj_E)O1k)e+fM%A&puCbRIOu|bDIKureu#H=(q z^Yts~^Sn>Vt8=P-{JqJ!j*F)&`>eep#YS%tv|7s!N7;Yp^9!SBhH>htC_6`!pG-zq zRx?y316k{BzL_2CJfLcXP)O0D5F*^UMD(_={fd`baHL*@jAMN&RM-F1x%1s4q;sj( zlwSrnCw3vWpEs&?{bOwpea!HL?eG?g{Y7bL>{fB=Y7skb-1`hbXF%{fv-5#~6cZ#5 zw_7%uf-${w%;MgD`#%Q(S|nSv)IO*oW5(SitC=N@6*N(=`%y^Cd0N1y%x4!VcgCmR zyDAxdRx;|l*ixsvFjE>wcFPu zf1A`^z{j#01dogHS1f@yjVBT6XW)(+9`1&X?AbO-p^l6_oC~aO_#?6$=&;dsOfGCb zAJ*uc-@EsyHeeT!b&K1f=hFR1*e-xxwANS~WVP60Df=}H7+<@qZYqg(#Pmms)1abV zQrGAm*=2i|ng#S<;Or(^v$p%%ZRTo?W|v)7bn|olX3S~l!oJYZ8L<(r^M)Dj!c1JR zn<;lkg9G4)yXyP-?ZFc&?M%(9YyHh_7+RS0JrWJNVZhm#_jH=i^ed}}f_j9nRap6b zrr7K(Slw9v&^mM97qdBG&5gP^DW15s86d{-Zh#fVS$c%~Ik@ZOgx=RX@!!rpoekO2 z+FuO?V)oG^GF5!lGl;2`NKEzAYuwQYZFxrnm7!1-taBILl)?xoJ^nVM`i6)Y&ouKE zfT{34{dUz!o&l$kRK4dJ5Tyx|gqjWZ1ETwG^=WK@ogjtK)CG(Z~SP{LF)C3CRLhFGOZ(CXEH9wwfGTP02ve4W zQ~a?$eF8Er4-}b)&#z3`gVfpbbNpyc!T{}EDFgj!+U~(}rxgNT23iS1ws_G{4||y> zD-EW8-*VIR=CJ2#E$EQ|(d`sMg`(P&M8#B3esIU3t!kFd5x?#)w2epKAnWT zrB)Zb??rOjJckMiVC7$S&toj{@iRTg6aDrc=`GU2NWwz12gvkMmMjlBc?ECl1X>OQ8|bK?SAk<*OY681*dR)12e{9HsUN% zr2+82oO{zAM`M<2P`kF3*oc)5tHca5rUw%wv-~;`x-fws24B4z>KPPTZ{dgEGmOaw zfEUEU(lrkH$93{oEo8Cm*X4CZa~xgf@26scB{e*S2a_^?Y;%@(jO*R>FbxYX&vrt`{Lf>D zaOAh&7Dr}0(=v~{KvZlTs&V%hb%?z^v`)p7d1I`7h5fWWRNta4rnLBmeiMXJecTOy4(Ym=>r9mVG==z-~B23bm&?y z%b9GC(LwA|w3=3qXE%D|&6=(NF2IoeeA;1@>Ec|LG8^kKD=OW|Fl*kJ0Xf%1_}sGi?zViJw2fl|xnmeM&hGx(GCsKNwl*NgR1WkRy=0SJ z)ackuzL_<(T$CS`Y2m7I>IYvH>xpF!47a6uXhY~!#SgUtg;)$22-=q>H$RPMC81-Q z)gtLQyg9MxnIU)_?@Pj%6gyn8onfbQl0(-1k51G$6i9urDGU#&X9sTp~|lRm*d|am2wd1dIXcN&LN7tmS4t z=PXDoK)Q`h7h>cXoKMcHx2EVC$8{M<-NOKqebjyg9@J>j%lmfhmS$u$#)e-}!|eoz zf#7VL(Z&G#&4!({znc0p)k530clK+1z>$+Syh-Td1Pi#{1Ck6 zckhb})Wi4A?{z?qHp*;t`}dhw3gWB*R}W|p!i2PjIuK@%w(`xwl#iqu&WM|E1N44S zbLb9d+vOptEsaOZ42;TLnxPvjCK#LoFp>MSlgyB#Ihd5+i)b|*W_s}hMnSG0lKbg$ zk}q=GNUM)O-`1Y%+4F5*tb>E?80hWt^fsY88|z?WW>&v!JFogqMAXQugZSls1}f1K&FOS} zD2!S#Q)e5MUP*YD%1^UcVya-d@h_uG?7PM-1m$~b@DhI$35R(mf_VM!a*mtE}8AEY0 zJ-?>#`d1%U^gy87Qgi8GplfmO&3-I9!6+pu^+D$5et6WWBmJ^f5|hZX8Sk`;F_f>b z7+}*I;#(+dAMroLyi!F)v$f@ii2-}tGh~aZqAt{^(Q=D9(77w&GgKVLVV#WQ`;of% z4UG$gxyK~tFxbzDVS5IA_BUkN41@uihCGJ#RNBXt^}kpuVK)x1E-|V?P*xpXdW3S{#PsVwfNgwe$2>z8S#QD@rA9``8F^lTah}r| zv{R7n@nB2NEXIRY%F@nPAvM2Z4!LETsC`r=oP4?1R)LS~#06`WuC=~hQ(IHgYhn;5 zz;L2Y?>yTsB!5oYj`C|{f9GWr&=*nPrQd(5gMuA)A?MG!-fP}a>l)9x9ni(Ib#Vm3 z79^o)kdN186QCxg-^2b@Bu^t$iY62Q#OsO8!~V(LzrIKul<(|(w$`Sp)3o6nosvgigXtQ=eG_l0&6fEAr83`?7Ukm5_f!2u48Zh5 zN{o4953Y73JZ0T=3;i%GbZpyqZ4)FO&V*Gq)(JG>H`7*PR9*26XI4XJ=KcyWe^B>o zvRnh5eRM}b5!t(9(a7bSI|*ID-7AzOjK-cpPLuG4?ayseJd# z{mrac?JE=rK1g0v6A?v~RKt?k@sD2AC%wEBcwLDKBZ8=^ERSNO_IadnhU-p!mG16? zu!NxLvYh$jDy>&#gV$j^U9H>!fIR=hA~llIJw!jVbKwXRYP-J27Ln+POUV;wT&IAM2kINKM#c&Te&SgNo21maS*-I+o9pcX(g4cFGRoq{ z4JITAK}#pz7QUrtu51#20N4p=i|IC1r7thrGYO6RbRYBdzCEJKI|S45LE*5kr$(RA zE1~9cVWS$}n@~)55KmCLiRo((fHvgGKNs3Iud^z-3c?GHQ0|xt{JxVUy|Ne%K<^~e z0F7@5h6#J0kIhl7#pp0av1h5xa4_(7{-8bM2KDIFZVx0^PqTbjCpd=I5+qCqXc@8n z$k^iK!*ZCri&XWSm4(Gu;hth1FntN}YPTjBw%z(~#{7N^x;T-fDt?F8bzA|vN0g;^ zR3m4*Fdbd9Foh-s{on#jMZ@M2FilDziIiv@F13%mx_vXtBlkLY7%>tD_Sl`a;Y|`H z)NJgtmF8X?7PtAV$&Uv)ot3+>Eg?-B(c@XIg1Yv;IdI$D9~iN2Frt4h zIHf?bfn(*(a}#)J2>?s+`7>dhL+?dwclC??wk4Ko!4Gfwosk3^y;E0_WqYkXLxYid z!`lM!(!_qEPZlS30j8rNy$p2>F4dhw5LEl*p`3O$jNjgraTSOgP<3nC-p+j?hfU4s z@WTk)6+0}eZ74L%VV2Pu8FVaEsY?#U9W1uuyJ`2EzIl4_{`a}`E#O? zNAB#?+Po099FT#M$%p?(H?OJr8&piy&6We`*bO?C)fK1w^+T*YhT1~Iw%iHj9H>r6 z_~C)rF)=-dE*LwtED)=nm|-EMhEK}c5s`ASHP3_M{JkZ>Qj6ple1>NYP2p3i9j>*@ zd40QW@wSLU08i50{#Hs00}|vYo47=|`Ac;6>O5W_#cV68D7L97t=hX3Wo{ak-mq8C8FG1S^5R^K+|Wb=+M2_OpswdO8rLEoB60 zz#HJdk*ba+1W|4;edbtt^e`pwp|^Kd_$5WwsYr?POWb*>k4UrI)*8*$Wohj-8pWPc ziv4S8kuXoKZ!EHTO|sUIvGP}N=|=wnh&yNpk%w;g1--Qh^jLP`+s}x1syzSc1Q!Ab z07757LW9KYq=m!#x(g=vNG+rlpTu0CV*G=@a5;Ese*m@d=M8!{)74|3fo~2Ka4+qK zCSjI$^D~;m-6!!RB*a)+il-N!^T8SnvcIg_^kNM}=yd8%7Y@ymn+>t^_(C1v{y;Y@ zt-!Zxwjv$6$rJS*6jpz&tTyv))eE4oghTFuF@4|ZpA@z#8N-G$e9+XDUn5e0*>Q-) z?cRJlGvvS58j>ol!II)|JDr?uz)TR*r|eD|u3SL)TJL<8AE_qI@In$dO@V3;Pm)oz zJmLD{j?yqY{~Xxf>>80=SOz6OXfTqp7Ua-$AT)swqN*v%&Kzo zU=f3*EaiMwSLMDf;pS)y0ep$-bZ5mR$K`TM>!=d{0_J;1?}@o2^Tm%w6!Y1SN2eor za)aWuplfo&O?C7|FJY5=p23IY@<+FYHMF7DFq66Zeok|Aygc^~&ruxB2huzACs*Tk zgSN~oLsW@In;II7yzS>nA>TF(Ia@!cYQc5 z_xweWbPgr^T7&`{F5Pjz1eI7NzvjTw^1j`=U8{;s;!vEIK!V8GCtgdmsYac>d64vZ zkK`(Dh2}W%tMMtqUzfE#6YTq2s{Kd$z zE>DZtZ9KhlCHTLAInYC2}VC?AQ+zF|s3)uXVA z$_Q*E;Pu$8ZpzKFXl8%nSE`j~t*2(Z^HY}d1aQHU|Ix^Ig=h|q4OGz*(q^w<6aK6g8OBrOH$#FZzfu)OM4Cy5^5Us z!KW;Z&7^OsOpmCry7aQ*vSw|^?^7Rv``!p7v54w~(8qN{TUa#d$YtGYZtZiWpb(a_ z^pL)3NnM54yJt-Fc$@pHV|7dl_dv>Q9(EaFlF*SDd6AZci5nf4(uld$m{Z^lm%afT zPdp!gx!AXNL3=GgmR_M!3|Oc`n|PFh<4|^Q+SCdRdpz1mVNr=0ObcM8V{*4%LM8{L zxj=hb9Yi*@su1UIDuuB?hkJ+V`!}w84jjLKkFw-}D!BO=x&{!I^kBoj0Y?y%F z5|Yv`H`Xz7WI>!ScY+sSXb$O-!ED(!YpehK{%{04)t^9|qV)U)5Fs%Jv}e&0hQ zGr0-*xF}%|Cjg`?FT31$oms_Nj(u%oIHl_nl=uI*de5*nue59QnlmMnNgT(HF~Kn~ z7zClm)CdrMW7B0IR2hU|0*EFALpPFvcP1IzbR&vP6S3$;C=?-sC?_#Zh!W9c1cC`2 z1SqCR28{Xkoa>CU_5Jr{^gPercUkwk*Lvn_`@s31`zRJ(z!aXltBTx}L)TIRGZ(j)-D>Lu$tAtfW>9T?zWnbK(-*w1rWQbJ^g%2~BF8dCt6i2b z?cmoxkK{{xb8JumMF7f`%Y{kvVaZwh*VaDx4R&6VplM09Ekj~TZF-SKzel8YiWg&k z&>7mO0n~V2%~))3(+WLVq1e0Ykc645%;|?>K5(o!={mF4jc(NwO2M@FFyN^m`jY2v zko;Bk5T(v5;jvfv;hO$!ye;F61$WDADDZ#|bf><*730%zY#x)+U%7@^9M(OO1;KD( z*=hqmr&%go2IP^%JE`2+SV`AW4hI93aG<}8R&6ZP(=W-81}~#pUot%O`%V%e>}$f& zz?xN4gui#wZRSSvF25MdTgl>Igoeo=jw%$19WY%oupO6zaOW)VdU6KbEui^$pQ^;d z)+1e$wf-?movB`grlcMl5p7$t=3a6fS4}QF8O3 zTsAVE^mvbgAMABcsGT9XB)|qisolCF(?8)vS z1IszVOi6mzKqqdipr3g4c{q<|(!PdhMd%2)_@L9M7Js5YOpaTN-3ep z9euYHics%q$Z!ND%{v?FNNK^QMgPbqLLXNO2dJ0S?w%|2K2Z_q_-TWXdMAz`Xx#fy zuJR>l*(v$j=a;{E`%yF7X3sGq-PoPxCdaq^B8E5@8)ZMfaHsuWPThO=9yAx5u)4b6 z6{NuNUP6g$e;_HKb!0Xu6dRY6(IQ#GF8D|Sc~OVXg*=3dFn2Y%KZ9u>+hOT)aUOn} zf0URnt!`yd`8JKN#r($AHo`Qg*#Hh;VAFqFw2{E=EK<9so}S&*dLur|lO%?}4hW_e zzReA>GpgL7+?S(hl2VUyb|?Jm0dF*F*42Z`vQuzo8YMAWhqO^+Li;DsZ~$<`XMOk~ zc_`i$(}2q{&XMK$c7{c;%n%4)*?}p|7}t;7T+wezc#da!VgwcmJr0sfD=9+dcW(pA zhd;h1wMx3sm24`4qe0pqSeQfW(nEo6=HlArtgB}O4+Ej4Z&)lOx4Jgt1X14C%K+4vCJ-?2nw{Ze4Dy&!X#A zAR`jx`U%eJn(u7%(bTDOn#RPV18e8KAKaXlv^j7Dd7CaA0<62+xvBk7!L15lPQ9y;Y+3XBv<-3 znjQxqi)UhA<(+&3&0qlmW#;nHXdgXFapuoT!qWCBmW)GbhQNJL=h2Fo9eVhqkDbSY z%j)-^MhQHkd*L-!6jyuRAkDR+NqWP=yU5Lh+8k7nfAXsZ^fX`vPuptjkp0)=+*LE` zXkG5=Gt9_i^KQ2^4C%zizhInD^`7Bj#ttzty@y- zy;EIt+}@jT9Udx!m7M4u*7g%3@RgMz7N=5fS12UlolBwZ6ksH7rT0)|zYi>I{4-u7 zu?_3|A?2uYXpQ(kRMM%&45`}SP}ptwl7q6P=;p@?)UH<@3Ni->13s zR(=vJ{YR#-S%n8CulNr)w|4)yn&01G&n5d^5dKDnP5VN}#-lvkaIOIzf1X!XGScYO zMiQ^Ug5E$aJ$Gr+=`y?5_LO8gK8J{!UyE4GD~7tDZ&SF4_W61vX*fON?f=ty@g@&{ zU)M4L{yTrCS|y^i1JeBf1LzTVv@_$Q%#_#3bTp+vs;@`P{`mzGwe|SH5B%;esV08lJ^3 zA+$>CcXU}3dM8OCyQi+3;d!-3xNDHsbK2jjWy1Y~zxJ*f@PAf&A;|kiR}kVG0jrNA zx#rj|f1G#P$G84L9epf~$a>CtRPk@f^acFZo!aGQA15DM6YOL01xK3ih=1HP)Dl$W z`?)Zuax-&9Hq`p8#oXs>DYx@!M7fu?BJ36irxT@uMFpe%Pr77>4_wFwaJ+a=8(GV! z_e&qn4R$s(l$EZn|6<&f)dT6Z0jQRvTUhkS(^-ckpxhLuL>Z91ZsmUhJusMAl@igl z!+VTO-yS2enf57u?H*qT(q0A5&i4e@8N*KXZ>m?-R3a!=8znBEovA<#w>6@|yRz4v zQjI8?y2{>cjhM9XzPZ2L%h24L1L)@1v8aiuaf^2oA|=W#tvU69a5i^w zz?Nrm`7AiR$lbj>)dh+s67#QcsN?%@$>#+&t~b*I)lh~#WT{0a1g*((zkfLHQ0>%M zLq9N3A~ggvl9tMe%JAL#A@Qfsqk_yU=VpK^&=Iuzo$%Y8xw}1kAD`!IA%v)ji zt$Qr%20<3Fl5!LXk7RE3pgj^N3{p*RQS9^QRLj@BT`knJzk>7yfj8Q6a#4``V62PW0-3dF?Y{AFp z*r~A2#X=gd1`-&QII7?!%>?x3*KP!KNUj>EOLbx<8g>!`Vr}y!f{@E>%eQ-!`NkN} z7L0%DJ;^$>w+eWvv^IBTj}Z&!_=J=~l*PulX?f+Yh1|_a4o@+yPd}16^llCRY8-$M zZJIvCWkT{x6333pfjDj~shJ*P8}iwmK;MoPQxYEX=>=O|J=jj9jo{mR`8^|v#;=l_ zI${!eP+VIAi|i$K>Dq4F#}b3&kFXR{IDsre!K_B$lNfW_y`@xElbO?sS7Ex}wQs_b zC!megzGz9w9#~vP2dn{Q7xa#Aa7Dek=-JvNoDH164&Nwda4me+ez!1iii-7>rf^C@ zEPHpq&Ve{?!Cr#-tGI`CI4Wl2(r%i&eHKu!c~<~}Ce0OnAi0J-Ou3G_+;&%~Ya|8F z#6i67K46Q{)KJuyAAzPPVTwyy4-?GUhnzrG`4fK|WHrIT%Ey#y?xpNQz1e*1Y8m!=oesX3_(LhpT;JSC5vX=*x z4gj0!VCVXYPU*p$qx(1|V^yDTum?LVPY7mDb8YSLcyqRUV<70UN}7hmw2GN8DPg#% zLooZlFHIMpjV1(3r0%f|w%r9!+9PIuNkT#=C9NfqPJ7l>v|!>jy=6hpkpL|(YC|P2!ca#%W@|N1*>pSEO0xcq zwxM=>x|W3!ZXRSrmD1Y`V{-NL-W(=IS)@bN6xfXzCy;m^8JY^jhGp}N_WEyLl;mdhx(dD>#Bc?-GA7j7UEULREC`{~Idd$&`T0E{)l0g38RA`QVy1TZv98I~f86 zRG(aTU96$4+9}f$l9HE77uGK6RzHUg1i(B7o#X>NPyXz7s*cRX*Xbp zu#J<8)gTe+ok_*!wZJSkiOmYYLt^Xa|GOGTZu3Kkwdq98>kkGmpWg2oa_W?e<((7c z6BSKe;gufFh)GI(NFRH1FF^-F=_`PBq*Az}0X|*&8aq{o_5UiyRTSz83E=^5NLK2K zR1JG>_EosfWkJbzyB%?*9p-SP{_?rC@$MR0Pvz-}V8t{6=MyE9`bG$#iwtspSHQdv zLX|;3zN?g6+%(4y*frLdJ8iLxH}i4%7JKTQ;;R+@RreaWhtg{Jeg#;@kULR$r4j?AFC(RG~({&FD5nDkGI3d8Mp3@e@T|sIY#Y&JOgY# z#DNI}EV058G6q`8Z`z3d+`)A@rfrjpwrkKauEqM}7)ns12P{0;s8HX_LANM^NTbR~ zpOlWZ)R}9gzbTNX{k-Uf31>Vl`#MEKpyoe{pl))-cUkgOYSA`rpktcs952x9ojUEP z>CQhQ9=r>F{~_jJr>BA{FmsXg7yeEi3`#@;XEy?G3Kc?St3E;PW;vb{xvPz8{;pSD ztEps{I9>RnYu3@I)FM3b13uB&j&z%vx_1q6(gM|nOG$oAQ9fAuE}A?caH-dL6C zku`hBv&W;7g3BHCWEx!u1<6Nwk>q0LC1f=8W>dcp@$GW*YI*L}ex!McIP5#-iJGaB zdzxLFzOe`oWP%@evZMEUd<$_O86hE(Vl+QLP?cDhVUj<#! zB~?G>e3C9s7^xPK@>n(%Ot_|nwVZ>y=igJrpL#GI=d?1n&EDsUqubZfJi>S$Y>NS& zcSYZHjB<|p=l+R%EbwC4jNz>(^Pyae;<9r*yuCUJ2!60nhz->@zDes0z{;*OJx|GBLf5W1Nx5i-!?TF zG+f;HoQw`23C9ifHstz9Keo?AW9E2m%lffwL1tMoK_- zT2##@N)!t#u!0SE?K=raYMgVxpuh&V_pWC3lKmZPV;}`7P;qUY?Gx&o^4d04PISb~ z*07;Tv!y|3KrC@|iF^9cl-qXIP1SKBCB3}f?clDtTy%^k6iJ+Bpc? zNQVclP*HvUw}Ab+WDQq}>rP(^SBL4MsCy~MXW#E0w0Hr00`!kWg9Y(thKN&2@e*br zUY0!KBDV|BR5uCKZ|qO9V-luxe%;W#|Gc2)(cuFm!b7awFbxYy4*IOc#_^ zfS|UJd(x=ID7A^k8Er4N+LhPfoA>0&QhVd`CK{3xhjDghG;i|2$4urdN`}_?f#FfI zAuAS7jkU>Lr&21pomz@V7|b`2o2E>IjNy)jC^H)I65uJe(MDBG(g#A`ljjz zt4v#1GjbSYL@5kp84~5D)xjcrnH4&)_SAiU>ZQGFD`(Big>>s1h++wf{j5qilgv(2 z{&ea64?!v7EjIfIG95{~xk9Q4G!0Fk&)m$=Fn;6IWxBhn#dd&#!5L?jOyC_W`K<%M z&K+TL+q;EUvk}aP;YIte@k@_d948PqkGe)vyzCflM|lZ2_?G_7(}Bjh=xQ|99G0U) zTj+Pr+{(iLD5niUDfI+}+ENqX*}CLn^Uyu>{X9-jcR}|ZyPS{N7>S7? z6-u;VNqg2>rbCG(7$WAM_;}~fxnO;Tk;Rb0=YM9U&eU6vJuI;8HAm(vU5=yJX_cu{ z$npg&%^toDX(?^I%P=s!dMn$0E_UJ#_SPlV29zl)^1B(%6~vLdEh=2x0Ha8;gtOLT zHv^l9oqj8B?%j_;uDq=d)?XI1KHnbhh(3ZQ@6I=h4QZ_6NJL zx(9G5@(rael(w%LA~s@z*J+564^`j39a@6eqUXQ@^`h0An)wa*4w`?(5)JvHe{#7>WO47-7;*Oe?fP5g zl3aJBcVmykwYHvuGWP3U+Zv*-K9xw7N0~#mc6sg#6t@~F&hW>7B~nxI^C z*h|x`C{hkziT-~5spErL%;L9mPM^(KKx3n{ClubxgJ7yPPrY+gT|HaJVj}9=T1U~l zhF|SCj;tllJkL>)5Zp!9F=<39CrC zJ3nsu3wxcOzX2P^BoT50vrIs_S;0PmrgNL23&vtrv?MA8QZ;jkJ zaNQ9J?KrK2U10r8t#al`@BZEpz2HZPtS)ghSld25t1YY9&0FXgo$-t6=x|r*8h^*u zeYgtpHdes8v9+pUagv85_qFl`%DfW8m-}+;Mr?Vrb=gl?ZmV2mW<>#$8_A zSLQ#Vhb}FtR~@kqHrZt@(CI$?M~UpinM9k)v$5ynUUrlEy6cYu_3CFz^-!?16NWc(FqA$@>6AMWW>}%t4<)U?E&h}#P zeQkQ2W^rg|f%i_tbSwv+uPX~k6I?^P>+LnS{3hX&q z`kyiNw)qF9!cA-9bRwL3*RpsI4S4R6(fn`jgp6s*I>I`~y9(r6K8XddOXr|W&3F5> zL4c^={JD*BXal(m$TTpPwL`v?q$*IA+IH9I%x!nqPLRHZQW4+}f3aKH*+j|=lN~!m z9ZjrxH@f7)`u1Sy+b>Gn$2LXTO^jI=;Yb;YPFQ<*=sEz#z*w0IZ|CT`^WxzLJM zRu`k79!L`ECqRj!3J)VL;k@zFaaBt*2V66!KnP$3Mi%>H;UDI2htNr$3w91R3Al*1 zKf>U_J_~s9O0A>J`W&!9hq{dR7_@Ft{HKs?(C;ZrlIRrAVqyY6{;nPO&VKo96sGZC5RFOo zNjGoDyYbMAS~siT5_=|o-tkQwV-~Vix%Ki7Yiv84{Dtjg?c~O+Ds&>36X{@AS^L*9!?9rb$N7RR>7D zOf?m^C7JQK&i7E^vaTm1G%HY)BB%mbstxAxWXAUo>*&WNHa@n4dW%gvUS^PfI*`Ql z)}85gN|&0ioUGfoa(04ZHp0hZp^E`(nhl)C7~*6JxBulU9RjAC>W?BRi=kt`p^>Cp zsghQR?=wWys#(8zT#KSl`pel{?cJ>I>?DuDZrrA1cKp&N6@vn{ONe*L+oDM5+6`SM@zNqLT*EhG7R z1di!;9p(ACIz-9NG}>!n3nlR4TG!iKf@Q#x!QwwU5IV&E;bs9dUk)N4>+U!$^p4CN zHw!MJQc-*36Kh@n7sfz5cssTu9KxAs75>1tnQBO2l)QjsGr)4|{h>~Tr!P89L#7vG zKfM20Nn*6W9DHj3^{dqL>O0cSgXqDd!el~Wue(o_?<_3Q4J5M)d37;W>t5$Ynuf0& zaI?H&Nx+yd2|~$1VPZs4eH zzMTnc9vkp?cI+V5Cg-D2eUT6R0u>6^@#Ufj7g)9AKR{sXUUALnW6drhsc=^olXQ)| zNXUk0aiE~rX1SB|{G(H}eey?V+S)542r`;EJPrH3sbI6y^Akh-<3-}-E!(vqMBy`S zr=KC{EHj0BvuHvCKYtmOh}gS-J9;<4QzU@5>uABaqBl(k-|OiJT^+*4CijOcsYXPY zV4V7W4J$d{Qhe0fV zkWlX>mDja09&JvmtIwzz??s_eYb9|0N#ZunJZRz$y9UhwY1=keZk|ilWA7*^pURTB z94}{_t$qN%Z{JE>)YFuN$_=fB2AX6_zI_;54dtz|*!!v*&g?U#1@Ng#XHPJ0Q!<2D>KEsif4`;sVf%zb03MS)oi`@9eR}QJB zuSlre1S4zde(A$o-&SUJR9_BPoDkJIQIu)?&`+Fu&@L7Wkqh zbn|Gr0TMDf6K~GTJ`}{9MO^P-nppCsP9aeLAFzOU#8lSejWp21lVYO161!6MQBQ%1 z(7V&v2e<&@GV3ZTph_(o@SO^=MQeq;&tVcRplvbfv`|W`y`m^BiECeLRmwanuf_jg zv!5g`S;Os|ofsJT>g+GhfLpqR`{1`W3MgG>72ghUQW4Jb2J6w?4OJ1RghBu6ZK$IF zY1>}9Gu5AH%C~s?r--Qh=?!h)7w$oDi~3PBxpRJ^sP#trM?II>-@Uf>om}!`%C-Lv z9g9QvblA3J?K#i&91i{ob3pi3IVvIQXn+tI*Dw>>T&+6v9rbMV^8JOG_^Wsy{tO!iLvdC z=zD#WQ3r`qzq42faRkwMu;mJRzZm!SPl? z&v`j6z=RtE&cnO5=09sV9@4j1?$bw^Io9|Fgm$kxtxc2)t4RRK?HQwOT|CfU)#i*I z)AyacOZEt2Ij-9jXYVL5?o7Y*YrgR=vsK10n?gEWfxV?bZ)9J!&;Dy?gbRH@96%Nn zc?8Y3ok-!$BAEsoXy`kxxtz~aALNXhWM0Q59AE1+hG&hZ6iI_Nfx#LO{#L8f7*XiN_e&1u@?w~n?laRoKElj)DZ>eGvJ)}k>d+H ze^WM<{_ee~9g`_Dr&f&2b4KuViE~ZwZLh`wKT|I>^qG;|(`~)ekj|D_^|}1}U3a`i z+c6<7g>VD)q>MIfeLJxVR73T{4rdwF+j*#&0{J}2I(aqMnpIpIHhyPe>WT1Zbu#Hg z`1;5+9#yp30xhqUbhe%yc32 z2F$Im1egYn48OA97aFlT6bn5LdrWGf)k;uOEr!;!hRp~7gLq_9zLw`FCFxKfK{E)@ z{rFX~N~NGezf|6VAQ322VYK|7f(7Wco#u$A9+h`g)eoS#mi=eF`!2q-_H(;N&?f|& zP;KTLikXkVxPJ+8b0y;f@s2*`7CgZF-&KFshfA@Qots=8>k(b%9xlSL(HuV7wMmRi zsIA6OJq6rY@WY3zMc%TRl~H(AD#_2D7apJQVXweI^lvaIt%kY+lQ1oPf8!J&aA^~i-7pOv)4LAntOhiA76Sm;O$7;eHKctS8$E(3B@{Ngqvx* zxE}6i!pK}(Xiq&(esf5RI_rNWwYuPAecAA+3iIb*8hW(i;86U9PB7d5Hud@#cG@m) z>u4sdakpJyu?Cew8yZY&52<~uGbi)pi*(A}x07)a8ZQjW8$dn)Kd8sfthKT&?R*`1 zCxj-X9(BU@6Ef{N$8wxLxNaFy@x^9?jmS|r zRAlCet>Weh!;bao>z`ca1S_%h#Nka3ASLaz9}?-Z{84{B196_!?GS%-q$}rA4{IJe z@^KV>5k-GqjXRihT(7*Rth14>EnF|!I#^pHIqec3Nnr%)V)N;~Jw9)9 z$d+fObR;?KI?d!ZuWLgE@rH(=uz^gQBi1jMecP368UGt`+##xJ(?yUaX@p6Zn^9Cp#nieq-@PqrQ^MoxG6 z{&o`#QjgpZ@v%?dd;7=LcH3No^cvfc<~SA8a+o;@dWc8ZjQ7?`Y77y~V~24`(6svj zZZ{IrVLbnS#aA+i@20oERmN;!g1VfeX76dwi87&_QUM@mF9~IK_7Wqn|J=-^s5s}U zAW&XCsN!*P+`N&;hkQKKF2KwGEA#nD#vo)US<#K2wLX1P7MWSnJF*|M)i$nxjJO3o z4Z!TK6C}@KqwB(MskM}jWRNDg_z4*62mCT*Q(r)U%k#{f7!6XURy@r(f@=;roB}bP zh>Ai#&ixKul2D^t>+g@y>^N0V|FvlQB>vi}NCyN5yM3@kyj`f5zKcWIBcR}rO zJt07cUSi-Q(wNR2O|03iJo{rP{7Y6tw)PU<`lFl`QkER2-PURrwwnmbmGI?C;&w^5 zZL4QcKxxjQ{|oK2mk!2Q_==wY>_ZzEjC$sTSY!cK5Unf2xPQVbUW9VKKXB&@S#B zA^bh`;Fmfb0*jKSLHRq3beT)JI~QKJX{A{?kLGT9M$bq_;OzMQiZJAgzK^i@&fz#F zXyHF^&v_;67igdCqQggQKBu%GpB-kdklT)TJ}}xJW5DxHz!lJS-^p7oc zgU_$k5+U#O^W{sP_npA@)isYpVO~r`(aalK3D6paYGK1g#OdhS)j7hPD%ZgO?cb$V z8$Jj3Rv^Kw_jYltBT9FA;V1MIl~-4BDnHlvf1Zei%K=C4XjadN?~a-;c%Cd>q{{TO zpd%~j44iJ^Lb0Qa*r;-PTl}liyE)XLnW3$9=vmI{o`l$n=Zp?L`TUX7hTxl6B$k;H z0QGKZKa|BtKA{a7zpkQE2!)+dAg#MZU0hXwwdT^O3j_mlq+8~VE*|CAhCr{WMaMWl znCuPq3NnhBn!9HT>b@b0Y#DJOlKI1WC!GF(TYP(ksAM#ixw+%~P||nFzq+bq>Eb#R zUnd-07BOP~s_JFB*~7b;x~2&8B=jr{UI9^?)#NUjeJjA3oBOl-@&qe~>p>BCr22nb zynUI5IkB?oDn&5m{>c1QNom-t*(t{!8dMen4&i9qQnf)^P`6D|ifIU8(!-_lu;VA_ z)siWhjMnACKp((z5?)TtXy3oQ@5K79#qiy0Iet%r!!Rv%61HVZu>%t?V+UK?hfqQL zkeADQ8qAfJ4N8!#diAL@{W^6q^!*Bb#uyZ|Kz$=9QSs8AZ3_dK_s$P}>N|ZN;%c&) z+%^8By3;m4UU=!~eqr_;qWhk2-VNAFlA9%dFeSb5VuLrh8|~>Zqc@cq<(iy@ht2_# z>x=4JItS{(ByFVVW7le@?*I3J%8ZYq9G<-(T-Es?zPG?H(s#~JKvK3 zu-4m8_--M>G-9&spAbR@7OyVVXT{|2yp{cVdo3{inytICw`t)6Bj~MxK1D${S)W-K zA+BCc)OhpD^_dAB-Juewhy{}mC!#*5Ag`uwMx!~|$vP%+Yi&>u`nf4X37HR?OTr@3 z2wIW6Umx_lps(@WqvY^br>MBGz$3}Ew7T#&YbU(6nCSx zgR+G1dZoZBRtTc0rz@T{%e zI9ina19VrxW?{KSlYe1YP=?TASxWe)(?$;7IB{d(H*2hbC)bnidTb>X*PSSkf4nz1 z!rqcp3woi)K09bW{knr+O~&v)bzUE}9~_-!idKL8O&k&o*R2UPN@j>$Fqcxk9H+of z*%tY8K7xaKMbf}{Z%B%EvOnLrw-MMKtyKj?1p2_N|&Nd`^Mbd4Bf}2I4hL zI3^x6ASgD6x+PY@(w4P&1w2dvR^OQ$O9 z%e=M)_vWw(1C?-YiUkLQCi5Yb>pkbM&DvxX#G0v1be&C>4k1jEJoJ>R_?wks+7~Mp zhRz9EKFP&lE$Rm!6<+r3kW5NLpsAp$m81mYn)Y>r4_URhf3|6IFd;e$?*et;eOhy| zi!tkk;Qp+v?cw#?>#v&aHsK>&~O9q!?!g_XD1Zbyz6o6iNr>@fOtkGo zVL|X&b@05A`2Big)|^D*2a^Z@*>KvOmKc24YBSZf-23o4^Mw;u|DVt@EqJqCzUTu% zc3ITrlsumh>>A%EaK{8If}}nABxrxFifRwxj5!u zPc_K$-pv02ukHx+)wFwFKom@1)QZ!tKkLw_1x!I*YjvLgO>h53>4+RFLfV#C-&=ij z<{r!NX}a}n=*#A-yH&hQ$nE3a_*3D+d}~36m&urR2y^gwyCl@#&=LAArv-kbqk60# zz_=vDz?;qy(myZNll7sGm=X|M=DnX>c(l>Fj-ef!DILFVa`w0a*R($#G{=g@ty@Fi z?xLk{baeX!{$N2qatEf-f(q^hp+K8xpn#g|Cj_`JuP4?TOu#&|AG5@d3$V8?M*%L{ z!oX2yXT!0czAenYqpkWqa^2C`uw7HK})v=V`@I zQRI=%v4zhd+9H4tH?J99bnVpb2-COyX|^!do3+|_Wlb)#Fz4*cS(z*=TUl(n`yJu- z9;+A!zqa3TId`+G?{s;8!dh~v+wa{im#uW=z~<&aMq#o?c<1~At4PM+UEiZ5PBK&y zV4xX@d8;Q|Ryx#^Y(1_8raWpg4&~>wu0S{W{NDpddbE|i$gQPJu~Hz9d2gx)NyZgI z)Gshpikcfw{#uxE%t8BKZfQ9Drmb*Aw-8<`yEuKApx4N~$Fm9Q?e31E#I^_T5=#T1 zc<^?BwYZ242%PQOY{rC$SI)vttGrIQ-H_}pEf{M%-*hK}vBpmPsb7_E6mLGyK5~Z- z{u4?PwtD-?Qz_tM-#buCHo*4K=D&r*+Yj$=FDf5hRSLSm?`pK!bCwRLPFft?g}5(Z zXffZ`9KU+vb&S(HcSv2Tv2*Eib)R*47gxX}XQ6TIOAKk=L*<2L%t2vEZ2j1VOZmoc zBhEBF)z8UO-ze(;GoIx*C$_Bcy4l?@F0_{ArT#!AosTo|A{W;4qVU_!d7nV5HRsC% ztnV(s;B>gTL%E3$a=?Yf-&`ncj)dLuv`NG7>oF(|Ovl?b5{qee$Ya>CtZdcO z)t8*4luYDXX5R1dNhBGCPLLJlhQ~|s*qsE8pYBYn_e2j>x93NEMv#35MU=C;kJ-}^ zN|$9C{AG`2jQ>HCrBjp_JYiY-1HQMRLQ|Cbd(%*Hpg!lGA-N_N?E+i01z7$v=gq_2 zXvo|qncCeg#t?S(X~R(E3^qK9g@D2{9hAGOq}jG}LnWo)hxKZ?q)>T#n`W6!rA%Bi zM9B17yz{To+7gLl5U*${-!H`KJ{Vvg;DdU60-XG96BlM8d>Y|gc^*g-AWPy3=b|3Z zt{dfhAs4;(DwDs1$H&^pUF?MJT1p7N;0~QUJWkwR>}h@g#o;(g+)RE@)LcnUU9S37 z?Aka(NSHW+0SXki2&?;zm-pt8oxO_+(!vhqxb zT?Q6EqiPqATVHjNGxjEfi!ecK!ur{$FKh&|L|xDeTvSV$0XnHVfqltp%*C66x;Z6C zBvVmiD7=f5_bky?Fuok5r`_SsAS^xj%YU&2pbiUEf@Ag1zVn2I4E#UhB|5&GOi>5E2)WnZO^Aa-zCmYBJdYR~#h?cT7e`>}&2yyeO_;d{sEqU5 zkISpfm-;k6S5OUgOu3fZJADucDYpO;y3X3560@MyIleFVrPgZm$zLpmdvMo&rdemQ zojqAS zMNIqo52mPzGG9^EXJrapz{_wNz38tMldM|r?DI9MSwzN*HI7%^5) zgg!voDxvYD!OO0=uQ!+wI9K#~jDuLxf<5jG{r#}W+S7veTyRql)aM?p;sU&Uo5c`v zCh>^9ruzt$jsDOLWnYtXxOw=d-6aY6+rb4bl(>vRuDeS(O`|f7v>VssUZ`jLL+|8b zP11~2MK8TpkFR{{W%jT;gFV*7K|&l2pj7+jYz`}oy#sWM5N&2uQrxu`YBD^9mT52( zQH+FsZ)1K}W`8rLZp&$gc0(V$m<*1Ouu z7`s9djL`7`#We;AB=m-~0cK6gH0E7wi5aT9bjJCtOZ(Cg&UU4vT`uOAp`|gdMaYJX z*{OlhgmA>Twg(G}2IoH>Hcw`RM;T2<&`FIpJsyFg5ZSbeW##R6)j^-uaao>>h#PFm zUB%{%Ue*)|%e2b93ZZ@Tv>yzU+eMQfh98*gRCT3O>n9ub{w~s8gET*vTqUjXXa3Yz z?k!>UN3w1L*F>B;-NuA_b!K^3O3zQAR8b@vA|~2vn`ZOLVgBQC`#`f6853T%JvjcJ z*YbjP6j_h`fPS!i?Z3C@_@ev%aC2kbs@Nm`_$r~KpMsmJG1r!Roa9;~_Z>uH#N(V; zf2W)!&#_N=BO^39$8ANyfelA$ve;Mfz+F+7t1)`okayq=r{w48UW@hxZL*3Y1MkqZ zuv+#dn1SpKh zrt&+p7lc-Ft;CN<^(1#RNP{?&P(^GlI-Qk4jgON+=LE&Y&D17@ZwRPOru{p5KDrY- zoV_36=1Hk;P8`9?2q4n2`8LkzuCJ>u zq5DZ&{grNcel5@A(k?4=*P?n2yTPToCP4opH6XSjuH<6<7`sl`$fxnNU6!VJE%%^b zdX`17)XII(f99Wj1Ct&TfKMuWb0akJ*GpV}=$U>cwWh6#A2Ya4|&JqfRHx7V9UyzTmZ__#W_q~t1{ z`5>dNDmSLP2DsPMa&osAunQbmlGB@rbC`Mn4y#&79PdkC@ypsmc|n!q)%L;60j*O7 zM$kwk(P2xMHJsEF2t~CxN{Y>P$)I|tA)iz9x(qitw%fkYY5_$xF!wDZEOGt1KT^bb z;K!*{rtLV{ITH<6?@z2oqobX@+dn4irssCrCMAEqdWa^b-Ca;)o zPwltTDYB>4Hd(EOe5@?B_UOIUHdWwd5FJ z6ZJ1>WB|r#EeZ#IxAodHuJQug{5nzg#Fg<nr*d`Hy>uB%x6n7r` z$$tYmD1(5AZU4Qt>pqs{_OTxpA4JZb`c~kRo#nO@R=fNdDlL~h;_EU8oGGC#{*z%V zU&wWe9$c>A=_DIagHs%LmbyQ#&=t{BffmxcF9djUR(p;}M~k?}gvw*+n)We+wZI#mekfuvkP#|^$uaknCFXNkg)BJ7^@)kS6_91C#gQOM8|m0$;@{g4@b9Cim3})otOOVUVDc@Vk`G_tG#g2CtvOp z_KNQ}nAyY`xdB?{scy80a(aJlTuwyw!|A5JIB`#KG?5;MC2QF;w)6i0-G|0Iq%7NJaA z;e+4#c+3Yfy_GP|JYP3Ed9ny;r1O?8Z|a=u9GgI*jkKy1{_eecz; zs$B28k)GsR9SYCP1Z7a%IXi4Fj@xv9m6$qr-=#R&klWU+N*VKpjZ6Wm-Meuu55IWm z&^&?1I8#U|g@qQ;>kys>(21_f+|X)opf%Lm?|rM4l*wNb;O;{OGdQ4(lQ)HdGIO2a z-jM~$hsvQ_#TIdL$WRnvD;KZyDs!Y!xtNS=NuB-KJ*o$ugaPkKOv_EG-jY}R(v4@{ zt4L*{*xwYgCImt9TD4h1%MYLx+{;~ET&3l$Y3WrSq>ObCQEx;BYRV++Q{_k?tc2RYW9b%;taA9C5jUWq z;sF5pr>tvxt$}|0qD-4x80le=>s@_VAre%(oh6z~@mJT;@dH<)**qUpMo|M{8T!J2 zExxpEtIm7Qvvo!78v|EeM>0F49PZRVRfx@D?PB+GG)e4qY6*fsT&Z5Ifme4oG$!1p zd7g6?)4bK1cY`8UrnC$Wl5^e_XzUxJPk>V2qlb(zz4rgP07L*f2{*av4Eg<;iOyl&> z7i@M@Ud|ZoF8Jh*<$VD6qb-TIu@T~tduOuclfqEP($P-Q#%WJAG)_4G8;Lp*(~YKW zRIlc3t9Rb*WK%CyR?Wltc8R((pDG(L8hR^2xGLzH_cO|n?k*T}=%l#B8qOzfc_p?U zVaH!vKF`tXDQhH5Kl>4SEdXUyoiO&M6qsgyEb>c`_jV={n~sIZR9Crycb zVe@wr`mE~Up6JI@0IB?TTyC>72Wo-7--6aJpisz9>Em>b{op7iPaCWAoppDkQjG-YOJy zc^hgyxF{DZW`8-}{L-k@kbmqajr3{oU5z;{9*0^4AgAYb5SCiq_xz1}>%;pQ8ip1X zvEFmLFfEfzVT2W2HxRmCWpFa^Xa5R0no61Qfxa-vq)rXbm?|RM_zLwrQXYYai6Zwe zLv$Z7fF5h@(JJJuGv9A`YIDjiJk1AS6?31^tEn%zk7zBj#eyMQQ;_)%oPM={#r!@1j=j(38&0c zpd<`J0M9vXl^F?;$P`*;2nl5fk%Yi)1u=x7VMrL076So7NEss_`fb1GIdbboTDefuX}Q%$X>Cp-;acIvt#2eKA%6j_MJN>glth?u z4r|2cqQ)6ojRkM#s|^`O4Mb=B)Rok@HrMBd#qt%E5Y6 za`y`lD3ZSpO%vR`_lh0ZKyupt=uBb8fQy4~+j+G0TEKCk=Ygu+nJF zaok}vltsaM!zvG3-!tpVNgkN?sUbaQH9l5qc~1F6<71J82jRS_>r0VYC^t%Jhj$n} z_TAOi#UN9P=F`q#>N&A~p|mt)PocyVs?2eOl&P+t3tPJYJ+%61J*rGS25~O)6x{Xx zHJWy3?>vbLTIX2j-VyDu8u2Z&7BIN=&(I294Aqzpw9UpomR}jjacWweQ6{>I%0kGf z!FaWrC%`S^AYQz8gp@Bg!?=bnMM`_De>2poz-cf$+JK%-&O*7{Hdm!Wqs_9}YHSVHUzKS%y6Jfi`g8_z2fD^{5Y z88f9#Tp=TzDp#;!Qfy36DVQLM)Y039h8#Br`0gWywRYOp~u9jR1}4t z;bxSgI^2}5mx#4~D#oS7@&?z+RFasT>7=JCgXc*a4=d3(H`zLz=Cajkuy#LV%J^5DF&UrFVi7P+1Q2+;=C+xk3jdO{Z|^QBWZj~P?Dh#* zj!5H!Dci3O=7?Fy8xJZ*d~c6^xT7HbEWHRtS+K)Q&}_64zq=6Rl3Dtl2pFT8YhVb6+OV-lcmag%@S<0?#WZn(?u7{t5 z4*T2#&70Y%QDot53W7Z5*cwAHPa{+9OV2^j0{~P}+=2ziBom&B_e$5x=nb=A`~)4k z%Xk7#zc#JtQ#Z$qxb_Tn4yLdZn@3i1lfhQ`y0y97_<+}>lRWhBc)nxN^Z zK}Xc8TQ+DH{@(WX*2SUprot|M!@KYOrx!dpQT}~-6a`s-kgk_{r`XDno43TA3Rj1v z)PTFeatf(?`KBfBOwOS60A&<&_DVd@4VnTdw1({2Nir4Qa6gA1Z1+HHbF_~jPAdz< zj7}Ida%YY}d0#%FhD^GV;ekPYx<+R=FpFVQQB1bSAV^s>xbw$OM zG5J5pT;4aS>2I=)IQo$3E~EWWtAIOXg*MWiSLj^e&W)2T&{R)@!0rZm>c?y2(Gm-Tp)-Mn^Q zd^q(%y9j&pLW5VRCI28TeZ(iqbXtc>ys>B&nbF67FT+9bQ{2 z3RI|wz-Wr|B&Bux-%5K*SZQihoq_D;X4T4$akx_l*M@(zak)H}fIO@{!0$&u&wgP48PGpbW<@nPVY@BakmhkTL zQTv3uFcvwP5Np>?dtgH8#sM7RuKmzfTWS%PhU*wJF%A*_B3$faPBuf#uTJn z3IvtKHsw7o1y^rGyatW|p`p2xi^Be|AYL*s5y?7le8?av9FvgeXj)g7t<=hC6k#Dt4!I#JK zbBxrEZmfCy*XaG$;D{tW^5$$D`F-f^fmt0XYW)YKJGxLD;~(A!RE*JF>}VBKp5NQ* zmHHU1O#@#=-W~nSnp@eK_Z|s$D1MkmZXeu)he(7bl4|j$BN5FU=f=?5s>OO z(eLpRXifXtop(t!2AhT!IVhzhW<#9)DC4ivgAbiU^@G zkV#nO_y&`W6eS`~5|yfi;rl$}4q9&#%mtb~bOYR-;;(jEPKH~{=AcG&g_prDC zYz821talu`KVLb{RJJzYHpMA=V_UB~N;$!-?{=pI8%&S)(Sd(d`TvLW6?>goGgJ|Y z(829$HqsNMslIAZ_5oxcx+J|Vnb+PKX?zja*L%JprT{C48O3sE^rkL@FP^zpgZ8zx zBUPlhqT{I#lqSrr)aEKHEqAar)g3m632r}(B;SX(LyFG|_5%7Ro>tb_EdAEod3*ec zf6i&8Z5X#NsW+HmE>r#`H(i$wH4nOD_FjC3gv*p%X<$kji*sb~%H}b8?=Rvh?b5)^ z0NouZQC1h9e_k5qHrVyD{QET0H4}Z(6l*+0&VV%@-!Y?&J8O4wyMlB}G)h-7!&I9O z+m884XtM;>%um`RwC}$HN=3omz~Xut?P5)YhxY)0>Ir?ns*Q}hp)syv8MMX@udo@M zgVoeD0+D@+)uK7z29T6}xDbe^^M>y3B|xyj8MiM}rdM70`8sMq3cj~@fqf?k@1FuE zs7u-;BGw2R%x;Qs?rtYAQReAi}fXsW&p~BX$hGxeW^)+DxBY z(arQuv8tb=ETeOQwyKsQA*ZpRhyrLHW5ncE{V0-N3&!>KiFQBlD4Alt9EMV^JvOF{ znlm;|o1ByCo0_X4C=5kgPAa@@28t%niT8)SZW`2dhG+Xx#Iq~vMx(`dY~Eh?mv)?k zA1G*&;bNgUIrmPtc2Titk|Jz?UbGd57&9tpG@M5y?i!Jki*dO5h{|h8Zx1y9Gyi0+ znbc--dc6H5Be^EK=l*%iAQsWO1X9@t{v!9R9s@~wP0A{{-#kC$C0KEdwJN*=p;WKI z^iI^c@;8LXKX_BjffsIatcWr+;R8nmvUpaVJ=b_%gi3q~Xx-&n`B#v;|CegSjcD4x~|E-cEv&W#abiPJ$o&e+gpfEns3N$=p}>XB&D(! zbu6QfKAfsFodiVFj!hgtID@i|q(GNaJb%Py?Gd&otp9oS}44zmm~ zii?NH@>n@#0To|uZwPM_fsSE5;gDub99Cr`2aik<&!d?kGkVaetu79Xk7g$3P*rQ} zzPQw;l_K0_p)>odm16#oUq9o!4|YVm#-d=fZ$RF}{4K5tq>Lyk-WalD_IcgTjcfrk z)r?zsjme)yz&QTxYX(JC+`3*|Y1DDOnB4eiPyclJ%iVSJGtjB66hCJ$YzqxFP*anx z90T30v)bQq)k%OQ#}H$alLW5z>Ok&`D$x|KTi*; zk4(h36)mY^Zo`u@w=XIC^d&245dUHnWk$qSHKV!{(6Qs$z4JZ@%&w$QR8pR`a6%|L;8EpN# z)3yS`pmS&5K9q;xcJu^HbQJ`00eCJH|DP&QD$Fo9?V&>ppjCDL;aQW@jP3b9(|u~v zitYH;p6KK_=reB^>_(k0Mooi_d9mIr3%+SoJB9aV6a10SUHWu`=|;)Gxg!RhJ@rL; zV{$xBwg=(#U~RttYH#CtxrsKzLVYZC_}UfMoYWO1s+3RGCb<=jPynjP%fE=PWWFQ7 z7tTDeW&EVvesE-{g(!jw{C~th14XsXg807;+}{FGkr{0#l5NaL_N7Xo-l(7n)WR=WF((cjHiT@zlJ_ zF(1MErJo0FbAL+8)3NqADRUhhD zxQp`Ie$OC8HL9EYMkm1Q@WT)FuE%UeK7g*_y@anXBps}G3~kgjqZ8s?6GtwykB&}2 z*bJU9jyWD#Bjh*`+Kk$_zvX+&-L$K&!jl#|PWw%J-7}mF**jZq!JZl%X`NpOadOS| zZ43lj;J$b(J#)m6`hXGZG0WM+YCSTgTG{2me9b-Nv@`utWS5~?wZUOdN6>Tv)OvzJ z;C%Nio8zX)TA$t4iX+6_2yjfXfFC{J(3tsa?A;1Y;!S_?a#z!8FVuXocl+(v0CJO- zpCb&^nxCm#<_d$t4jxbK{1?X3FAkzJzBy|#i(RhWz)~{&dd){98h0oEM^q#vt4t2n zXsk9Xc&QTuvd4AXiK7HDx@%f2fzF9StJ+^cb9UJ{sFm}>*SV(l+?j<{U5W9At+9RIRb+=mLTk(u}uq{bzZaLv)+KC4UfV34vHZZJy$u zv6CO$`RZm#S@_9{#+VydVZ0HD{_`8s#C4N^{^u4f)LBHy_VGi(5Y-o$J@y_(H|g|j zk_b3lf`QJmaX+2W@o%V61Ns;B#Pr^07aDVj^nqfgRxa6`{wb{P13tl=INP^;<0|iW zy&`@QamUVe$EXN821g|u2i=dZW5+KtU;6qfPEHBkW8BmqiY&;I;V6} zgo{`A664@`C{S6yur}tjjoL!mw1kn@R{Dp&O%rX{!xx_@H_vczhP@|HptNF?x z#%=jVcn2<33u%$v(K!;uv`y=V`1(N0gVBBDHlcZZ^SiExWznPzcY_dn>KPaY{HHjW zBHz<@op+?4Zh!1lAPmT0wD6TG1Np2)VL0!T14S=)u+gIoM^_Y%bD(zvy7?kk86~zo z;lXN|e=AK}(M77l9F;?<33Q!%?TVKubb)!pr9T$*vApOmb31TzrdiN4v6z8=Q9 zz+2bp-XS88bIHg}SP5LA*OQue){Uuq#!gqORU47~a%yc-X{}9bT;0q?YgR9bCw1G1 zEX77wc-z^LpkIS0OkP6++m;?OJF^yZZY|He5B?Mok3NF|@jWr#+t0iwAl=gHCu}^d5us|?iS9aAJ zwOtwvvP;`P&80ruox1cLX$t0+~I|o*7MmS}JeMtK7U3QR?${dlXQ*9rQz=Vkl*G zLJbb<%vLe6E|6qdg;{}aqR8^|y)wE`^9d#AK5A?6L8M+L*36&+mMglOKwTEvlO6+C z1qL(p@Vu8KK)aBhTn{awf^~2!tdUzysa|=q>N%D(FEHBL<`UddxMSPB4}1NId&Y{8#vkyrKy4}14*IhQc-HZ0&!(<+&3MDnC&YP|tY zqx6RZ{z78_J(oqD#&Pfv8S(Qm5W?A#j7Prd~iQN1s)g#3+-G)!B!qTTh@zJSK8=QZ=2!- zlwHQ1`-*OEY^v1S5s)n^-Gwh|nd6(11_%%VCM*h63R{N_CTmfdYC}bS5qWVqJd8#4 zf$8h{aD4%gspB78vZWbS%=AXeG{n{DcX+&Ca-@#(YeRJPH^q`EyJ>0mYn%Ve2vyr( z8c^PvI0q^#z4j>(3Zn#m5;oju{e;@y^gFU>M+8nCsX83E#Eh@nM~u5DVfu{JAQk?{ z(zSZ=T+YD0k-6Wd1z$Z3>iq$G=mOfQ?ZnbfO5kxInI}1FiPDkl!ZTQ)1|I5hPVo_^ zoVhxtZ}CK{x~o=8Q3QiP-{>^0TP??!27kyi3tW;%r;0G$IPr!5^=)O76XhK&ciwj9 zi!7sQzfK>i{&x`M2qc76g}oN4`2Wfc&bjg`Iz&f6eJLRO?s!+LT?>Sm9+yVEOc)&xpZl^MqL!O~-!^tUK!PZPBTA zbGhRT3^Z+j{g3a%>umRuqe5Med4_FFl(NZLfnw*5~37GmL4@-CsAop1WJJ znTO>64Fb~vh>-NYN89OH&wW=8abV|^b$spEbkwpIWJYYQT9^&nQmR3V~)23az7&9dcUOj0KNbc-PuH{A}tWN!D(w8O^l{lUtCkeY>JdJ!%T=1e;)= zsrcUAf_|>U9grhkRcu(h=SH{3=2f784492-X4{+B{krt#s-IdghA%hL@Gp}k(7(YG z@QW52?4??%rq!6{ENP}gWu2A;L)ew#Qo8^L??bff)n?A^PM5yt8-4**Kn3XSi3GDZ z+QD5llwtKHW;p5h&bs+HT}4_n{N(Wj$sP)ML8bP)NC)4S{7a2K3gl)!i~s@dBR0Y{ zAvCYH=1EY#EMv}Y%x$MmX*l}1i@N&!5W#cEl@soi{>b^0ph@%OQRuS2S#3hB949(A zRyu7{43kZk6dQEn{9`2!Z0Na$fbr5zV64E+oN`X-X`h0)1)zA#lQmm%cGg`voWTx_ z_ImnsONMjH?>U1MY;^1 zD?(V0L+&%b{CV2^*lp?)%02E`-@+FZkF<5i`A?hkm1oMXb4HAdOzvqaH%zz?TD9u! zx{(D{{ME%TYrZBI`C#WkGrbr8G%0Cza-N+L+XhX^HFmW{ne&m}yTVHW!$pr?eN96z z-6Yq-qXBTRFywAcSFXVgr+cMQHUz%}>S)FH>h3HF z6fKQfCU4L5!gNV^WJ{~H4sF37E*;>TE1vnk+d_W> z@V7Q5C94E(rj}wQ_zB6{m$#{;rVY&lqJA=)+(CRw|3Qxsl=&K&* zO8E;77p(ZcyWfSEQGCkgTlN8)5K3*L@yGVF)Hz~Fc-9zV5b5dsoOqVW3V?L&$DL^* zf|mMc!p1Cq-@wi*sjK~-x}d5SstP1p5pCnYrPt>HIoM3XomRuJKKb76FHaz6S5TkK z$vjgVHiV4Tb;oduV>->+Bi00ddzZAwKTS)@u9~}nlP_5jE3YVKSdKDiR~!&=%PR^h z>h{-bys!6CFS<1jsauc25y|0k0goM8Jh5{U)i*$m<6-@1Jf$^}ppnPjpR!bY^h|hx zIU}}hyPu?VwI-K9+8}S%&5vZsw65O!kyRJ(O+Pa?Nl*kV!#CWHLm8{lG@9*1@emCo zHmtl;DFvn&v=Z3NPrYd&$EFz9M5%5qwu!rHs8dF!aHDaHW3V{4^2xa7jiKD(hDHwh z#CrO+=;ybZ+i&jGsVV)4I)B8f$mQm=&Xu2E-$b8bUw>c@MOZ*Vn)BN8d9YCSx?3y0 z^jYCpv%lo7aT{zS1~9^nx#-M~Nw}6suJ6)}3T2jyAXY-Z8SI_y2P)$HY5uAg5MlgJ zROnM(n+Sgs82J8LHrgt=w75|(ZgCCtczy1-()*I|S{|fb@FxQInmN8SqamBN<+a^z z+$@oHj;6yD3NTO;2U}~R|1a7faAbMNXJ{iiA-ts#I!d6xycvz-8&h|IojWB#{!q=5 zpgq3_*N&B;u54t5@xFhd@L8MbBB3j9a%1i@=%IkL^U31QroLTSF5hA>t;#ECP^fq; zfGH#2{Ht6uy|Jjiq5Hfl70b4$Zhi=j6+eD)%7&>Ry)c}ioz+?tn5hF*_*>FV+D%mM$@lZ-2HRpIuf z-FW9vX{J%OFk{fgxA~wOgYu`q!1zx;B>|aipXHTPHO&_773h4b)7=WjV~EZTHmriI zg>J=lWLjkYr62IzXjb)HgoCmN5P6y0jXl{fe-N$LcJstq5x?n}n4vtjh}JZ^S6`BV zb|Eu{E8Cv7lSD{T!4rt%4%U=qMJvg`iDudn=~spz88VP5?R1>d6%sUY8b zZ>VYq>|f?$d<_9y_kqo9-cy$_=eFjYeSbvdxe56*W^MH%OrRu-ueEQ2H>hP(qbYa7 zI!uhX$1N^}Lud>bBYPRpOO2QJFO_2ncc*Xl)xL1Qehw-L?p^t^v%X$-m51DUJ<8b; z17DRYz2r@$mZ>kadao2aSg7l%&|X;~ByXEyq}#A^qC)$~jnU#NlhuoD-FjtuczIcDw}S9)gf5{(t0Gm%&u!fYYvu@5jVE<<_G_K!zKK<6G6=4+ z+LPCQrnJkBy8*Z|zcfFybQkGF}x$hN?dx`vvjE4CUr8-B7noA0| zLQ|T?^?0Q0d>&hyn+m5DFzEC!W}RrZI@C=4r2QA8MnvupW-fEkNwVT#QgbqM7Xs8d zX@xgNG?)9zMgFe3N`12;^Y|0YQhoF4UGp@x1Kyfqz%8cWZAA`dlnQN94U4Z?`(19g z=U}W%F-sl5d;#bkvM;k9r7xU3Q8Mn4SbS9G{ly4wulPa`%Hx zBjzV?L5kfbCM>sn?`!t!m2h&zkK-hQB2WeOpeZK%>QEnC1&IguTpB+(#Rldu4_?@s zTy3-7rrLPG?0>N2U)D1?N4TB4YWs>r$nA|6UP~Tvna0nlVAp#&tBo`zSXe0dMh#zX@BimxaQVRQa4zZp;H6tVnmytrV~WK$pgivRgyGKGe| z39sn9^NzrmO9_28Wq0GqJ~-nx=X5QxYzz(MbdB5c7K@>by%7W|kz~Mc&1w9>%sr@H z8|sH%{mMMj*JSQunXBzvKof%7RI4o|VwI)y?HRMX278-EEudD?yI5prj!72GDjjO> zu<`LnhyV$|zcg`+4?E`{MO9|N6kOo+s9t;1US+NAUHzQnJqHvob~e5GD|n9;%bfH=hL`*{`l=mfC@_D=mJJ$`bhloj4 z!xQ@wAD7y=!yrGn%bV&EsipKe)%?H#C#jdTHEldE0hZYRhJK0}LQ5n+ZK*l_s+9rHU=dd+zT0l_&{ zkFhspYtz#VxE}>z!B=D_67DrHE@p*3jW*r5uLvwwhi2mUI^Jy=Jq+I3^KqQC3uZL6 zKHH2qjl@Io53Cu_-DjT2o*V;G)b`lYzNhVGouf}67A`o}(MJVS_oph|5+ezbX@i9; zJFnD};Gv)$$Fe@%7Sl7i4zvs}@q%0myn_$VPMps0A0RNuPzTBw{KI!Npl73!Ee3W`dZqHv} zb^RymfEWe%%|VDGF|A|g10I_8t&~Vp1n5u4!GktDA!M+()1(LBB2(L<9a{fNsO!GV zu6P)3N^i@pnRu}wWzTSKLN#~i>oN0D9^dLFG*128#ZQJeB4q{F2yr6B1joE^ix4JK(BM5#S44lWRvJT<=g_QkIy#!zLn%x!*>-MH6CbH1*=-iHT zw7&!-&MYt87++VZf3&+c>7kKIgTzfmB5nC*ADzpVzFgEkQI^@cJEKeJX6M0(c}d_# z3-KbqJX<(7co-CBE>-VdN`#T@&z`3-$C~svt#4pFvfC$5rHRdVKBOw`)NcQ66jx=S z7)aAQ$mjq;g~rMYTMUNT6`8UdXW5o4)0{b14sQ6U_D69+3_H57SxY&Nj&`*8&06X5 zu3h{=kGqMAA9gx|mBoOF{*|A{jj_qzo@_V6wu=T4qe**JeE39qZ@X9#O%Nv?69N6N zyF&bYdU8X%9h&F8qg9=Fsly?^*pIjD)F9Nxn+HXVqs^2^k%1B2p5+{wbbR?ppPP|O zZV#BYJzF4WBChqiSf>i15iZcJAALC+Q73YE1&X6SC}4ew8~{Tg?>UCKL2 zrDf1cg&ik#D5}LfJoF64UW>-+qS$Xgi~101HQoqcE%#^t{d(61;9jb8!p>)x76-*Q zehWn%iPlk5Cd0#u>d%{eFvB;_KneoFZQGPnPts&SjO%uh~H@3TXJ z5vpsA0Bp?!YvgrKb-&pOu&_Xv9Y;@46;T!}^KGD>&%UOEIO1~pj;$e`&^NvyjmyuR zTO^w0<0|)ba+foyBHQkE7}I-4z*^bKR4fVQKk0dU}AwC3xPF2p0gJ@xv1R?^!!oTMLDhB{*~vS z#KGV($i*|DV)K)@a_IJi6nn2xX{K}PX~>@Qb@2D$9fa3cyQf+r)x2Y6Iw@7;x?#*&_gWpD09$5ONS-9haURG7C6 zB*%`V;^{iA@tTwq?~Y!iPfg>f+Ad14L);O~BKZ_+EvF&r75{2-&vfiy(3e6;EE(WN z@~i1hc@u$CIO18!a5rJ+dXISo+L8iG1v{nl?Z^w;{VWHA9g35yVvmbG~RTfu5{4 z?W)|6A3?h6ch-)gq-<}+d6I!Q(&-u3VFsKzXR%yTwA0%xdb(@;pP2N?Y=dfr5GR@I!NYjdG^pZ%jO|e;=;${v*MAml<0#wW%4b4%NqV9<>mY8rSgEe7wOh3`FwX6U~hxxW>S=Ax@}b_1ywKqJ>KG(uJUN_ieY- zF?8U>ruS8Wp8XuIC#t|^hdBo&IpDy~-VF#KEK;)@(nI&>wA{}{Wv{u~nM8HM~t!EezB2D$qhc zFKQ)f6^torO**42l^7Mj{yJCCHq}t4zAPW4gB=h96AeY*_JuNNg$Iz56I~}KMZeN^ zZwV>6PI6PhwPg2?QXr@V81}~Kaeme+JzdkO3I=K0Q^}KE<)!c+xhphB-ykPBM~7s0 zZ>8kh((a675J9!DLjL=Ncp+w$u;pL2{={mxXO^`>6|fGV90n|~hyf{N-@`~mB2nu~ zY*w;E(aH!tH)~x4{ON7K;d12N_;n(@#+itBx#-E1|Ka3jW zVroShFhp3)5}&szxB;R;l27lV_Rbh@zz`Cc zaL`4tV*=*2QVnW$n$N1EHo08gdUIR=6q&$c2jh;UsF!`4*JRxJN$J&L>Ry2={9WbF znfA&0c@YBqC;v>eI{ycnQ!S+r|)l`Kz)VHfj%igQ_Z&HPOj&pfm%c($V7e#qYT2ROa23ubl2Q0;(Dlu=Cq|t18 zgpeplb@4*&Uewkt^|kuYepJowgB_UxqO3C(Zo+wgR!!k|gw46U)(9NRGML^Knhym6 z*zoN!0fc39s@$ecT(ev+?$$nx#wylic}?~3=3%9He|^}l=i3z3V|=oV6=zkuKkr1= zg^n};?xLpcXvax*+PvbN7o%+*v)ky5p+_(#`s=UEg(TXU+3vtZx)HI#IUZB!IWY}I zf;TJei;6bw)TeXXf-FO`2QKQ&`EFCJ1g2@<{BA(Tp4OAqhw+L#?}`oVnRU zsY1ZSwNku5rT=269d%|D5UeH<9km-@85qI}t7o*Fx+XE)t;aQOx3>bz#XjRLzgZ}t zYIWQhogxPmhjw~4*urZu=Eo-syt*z!`JmqT`+bgFV044%8i-GYC?uGigIEc?bF|Tz2=FhaveFHJ6)zv!8(RHh^Uw zH$RfyssKBzcD@@TohJHIS?!_0$A17R4!Q>=-d!U`Qn995jLXa;)7=Ie1|kYxa`^nz zlzN6BS?st(%Ew2m9A#A5RIIs3V0F21XJc~wa8XxtFE6H@9gGft&MZaF@ zXiG9-0A;WrUH)2kd`LagJqPt8DPearTQSo`***u>? zZcxy6i+s|+C3t;e`H2by8G!B6&2rb7k6n`;Gc2uLmwh+Tt}+d-a8LT-gyS;)%#Ix_+Xi7MvmT()7;j4jKu zqcv0-Ev&*A>egd(N<&+n%NWLxF+s*$eTh$C+j7}zLp3*H3IPy0nc&wP)QdarM|L0U z?>uZVLwZD%75{NcfK}+yM*5|&s1v`D2wdXt8-%e>!>VQ(u#)nx#s|?|{V}0ZMAw+s z5A0ilxio#c=u4%$)y%6sD6NvH?3IN*r4sJD%NJkqmC}J;k7|YIgG5(g9C9Jpw{Ye? zu7T}S<$}z0@zu(|o@H;}B1dF57Ke_`&tbg{pjZL+FyH5N$9OmE9_PQ;bJ4!Ql}_Ik z{iE#(w0)}3k{2O;eXS^lJZ50)h=Ib8Raa+z0}?e z&P_ii2U8T}oYn+&;CtTQ;J=>tXl30E9v*`#Cm}hW>VmAzCANq06?>bD7-468I5b;4 zaf_DO#p3AOye{h1A}}P|>okL|diai-L>O`=)EpZeRrZp@Hn+ar?@W?a)M71b-d*fTd(6l2s5B?LSn$R*hW zInjskL7tYn4wA>Bx_ukq5~t5(wl~y3-;>%~(%U@}r_T}!lYvhpRImZ@K%u*ksclP( zEZF+mT|dMzIwL*^wy^;MOfRws>YTMUlY)p4`o16aqmi*?$}8KT$a!xbp6&6rl2ydsth6!^#9%JAamNzz^!ogOHxGp zFtz(AE>#1DKR(CqwAQ~i`q!L(TH>w9G3>Y=W~Pf&40Q)Mf=BM1mul6VdF=nG^inHZwVE9p;o>rWchW{?i0bZh2XlYEodL_R^u{dLXAz0UFO&v38 z@ckd#R6>kLsf&r2gZ{mNtk`4vPt zL{|ZpW3hIAG}J!jiz%$C1~F`efgweZeyX|F?(g7t5 zJfT8?^7fc`wQss^@85dg!7^k2Y~cuOktTO`FKU@RKprQytOAZ*7&i{LI6JurS1A3D zUEO&|djehC(-pCTx*njhe`_-g_MHIyDdrvhZ6N?>WyYI*8|)?)^~rpv(ZY3{JB*JBc2yCS z4%U1Z5g&nufY8^V7mcg)(%@hoG)Z)D@x^KG(cGbpQV9F~W;t(&zF%42@OXPW;iMwi zD`23t-Gil+|9(npwp3Wx@gLQsp5OZ2U}Z7HDPYhBdcW=+ae~Z!;<;uA!p`aVLb3M* zhrQ8N2@%Le#V;9{FYv|_hZ>v)q@f|F>L?Vfb;9Eedu{1muS0|3`H%D4wZ@*kZcj0B zE^e^+^rnB^-;DpeZu!6deQfemXbtP_@{ELQhO+LY?AjA7BXg%!2N3?l$H#~6>r<(t~ql=PgQf@9Uwtx-_04Z-GtS3tr z_@}At?D5a8a9KCz@kak`{`M_{x?$hGJjgSN?1Z&)OwZF=CI@2fFn6FZtkLVre`eNF z;`t!bL!Y~O^4#S3MrVQF+dlyW#J`Er@W)ZwKIdOzCgqCOv1yziQWw)7L0(heY|$`w z65{fPt>gIWk`d$vs_Q&(`tt2Vx%aWE zsb8F5#mKa8qIPjA$vJ0HE(@7b9-Q>;pRN6Xccm~A;oAFx7=FCa}-5IS<~@dc;n}DQu-y)WpCzdQ`*qRlA2=xO4E_b8ij@$B8PtuYtmOx z+tOS|Bg#k%f?SOu#!dfKsmdWG#DYI-|V1lkxWZMxgZ zJq9hSCXcxpA4V+-&f^n5RFVilZ8PoEhdVkh@Df-fv2G*5inzUu2i>yR1pd?_QVYe}5$;b(E&GU%lIiGW88g_ruWv&$p4 ztQ%Ud(AU-)ca^w$w%gApY20V*m$yDbc%!`fGInK?CGa`9BBTS4F|CzrH8BiCSe!ZqRsZ*XH?}%_mu^fc%Z)ZGV;FHl z+`ZYl0*H29T^t+r9ey4ZHHRp?!pPphFcKi-pI z&qhfi6-mFqFNb6+pz=HF>`9SalrLWTRQU+3`q^PM9v|7Yr%qhHna=xD}4 z6D9QN9~&C4|E^z0E)R+GjBy4gL!B?f+u}!%5$HZ8R}r@_>EkOAZ@jL}?!Wk3FT0<~juw8ko|i~$<8=DmtHb3!Jj3grFAQB3exH0!K;&Kv%VCzyY#K9Ij7QTiKZ7q9 zYP-1^OS`6+5IWQ*y20pH^<(?>q#L9kf2#pnqOl3}0n(oO^<_BIW-eJf zwoepB#EHmbF-2l7y*;LR`9JSR4E%{bk$svb9MtpIo)=@}qG>EslO{BWi2?8Y zs~ktGI6N(i$UV#yxwjC!`@J8~X757eZSWB_19m_A&TDGbFH1`yDSD2R6PY(*@AV+V zh=mxu$opscCw6m#ZIsrq^|kC~Aym5K2r({{R?}sBykkoL5-!4uu`q|BSG?uWz1g!) zxPU0`_8*VxZ+aNl=IV}`Sl8|5Bk#k-teha1eltYFj^9OXU%qG{976YtjTNcy$^U3c zU;mvQgP5_^>E6w1Fb&n7HUSbebIgen9LkMwZ&)PVX&sFjo{f$127KChrfi z-q$~AUXH;p9)I8$Q!`6?Ow%z!DWYihYk&Ngeq96?b)|M#zI5m6ce(g?&kF4r7lg3E zoyWE_HIK#Es0<>dFAPMp2p$RZ9;?x}A+5Kc29ok*Pd2|XwIj^O2W{&g{bp-4%(Om) zRxAMfqbutw`KO3Yt+b$goIo$3v3tEf&Feoe`TrwR={uE-#M!8M&4WNhSn^ip(J$A` z3*pLJBXHh2ChwAjZxFrwtVPc?Z+WouU>`bai!t zY5w5#FsXYw)~xKqudf(6_R2eg9-Lo<^^{IbRpO$VI<-UbOKELEUE%kr*edGG*f69x z0@ex0qpteCUOmVzk)~Nkj*fYMTq-zWZ)4Y+dmJaMReg8?~YQZLzLV%^&I>*`%8T!ZL z2jg@uWxBMn)w?iq<6~FJv%u5l4#dfekPaA-<))vrA1gU~x<){2C4Vv3jH&BesjB+d{Ua<+2nig2nGkAT4P!Wj#+w`IA9rmr#j(NmLHSN>T4FK-n)d;&P-A(md2!kBC-i`@DAU>F&9hwG zHTb*yZk#%HgN+pPU91<VZ9?w4tKjd1*ewJfTx7gFG#vre1|^2U$FS zcv+CU@Enm?szoWdxac3yT-}rnr{rI>@fC;fZ<V9x8u|b@o64}96#P%&fUaQ>_YJhM!W`}1I?!7rS8v~ zjfOQ-ZzFa96Xf{Svt-vxkSoiHr>u^?@_i!yLC$7(sGp6gtjpYktZ4-O9w2$1GIfGTnPf>PC`(`4tz|GFLQ zKlB|+Ntm1@+_{#J4W%k1P;r*d;DQYU(JTj5~Bp0j;wdGqiLK9_jf6v?UaJ&GYeh$EW4 zEk#~Ce%}ytVfht-dX%Q+K%ydx&C17l(yRe!dJM2=wTL~LN>UJy)j86-#w&~0xQ<(g z>ip{BO3h*8h~YkJR`~l@6nbl8tQZeHc$M(PEo1vbwVmP3lQo{NiZ-y6MOk@8I0QX_ zt;mvwdAkP-#Lh?$H$(L*o3#(7XP8;1<)EOIioN`Oek^UI;eK^}-@vIFL0To&#iaOn89+OobaZsPi$*Q2$3$!AX zYRxY@B{tz@rnE4gFYqKy8n$oVy&BgC5hB3;S6z`uoMU7!8`Vp^|!wl zu>GC+3AJ7SkE{0%OZ(p2fUoDA^PHUav`I6}Fj1Sh;y@c$f{Hn<8V6D9jsrY(D~>u4 zfvC^Zk;ENQA);dIo>);tMD%Ur2+leHC!V?$l{$$M_5Jm|t|$HS{_lnSetf^5aewa5 zeS4?{MV1PvZPOR)miNU6lOo_A!+G}*g2aOkgVqk(WMG9`kIFb}y>kWlFOXHr@q^CD zH~q2~S=)?5-3zPa&10F<5bz-<-3Li2X9X#HzI#|6kKFd?#2P)b(d1+d%-NtR>A^jT z<4FHzBU03*$?NkAl7&X&D?~t{2>q*>-<61Vhuftr#~oVxCIL5mui*d~fJsz7Uzb(o zX{|ysd4AXK$JOl7^JNpsUc>+RKW)c%=VYW@&jv!b{kt&^InDb1jlR8!dyS?*Q3ZXK z=NpJ2^tTBWj;}t5cbO%`axL`Z1 z>C%6opn!72;8C%rq{V8nL!aQg_p6Od(6^n7brtIUCT1lpD0{K=;X2mJW$OW30)x|$F zP}^!xmXRESx$Y5tb8~lo0lQDyQYVWa+q#58Q)Z=!irH#R4e^loMgcHclGt_Puo(36 z3EpbF+FVz2ttmS&vyvpK z%|{p$vkX+NNo8R!Za?CgT>sz~R>R3-ow7_CsrFzP^bp8&#(Y)a+ zfA8EPgWjil7()OEGP})AJc$5=?3~tvD zMn^FZjN*Z}wyGxVY?+-bJw!^p_tK0dWA?BzF`Nm)AqXC(9&UVp=jcI#Cwl2dgQW? zPnclA;%*30ZKRxW=UCsp*=OMJDS)|1?6&*t!={$6)Rl&yy_N&Dc;>6gOeQE~q#yF` zd*8--hUC}zZY(L^1|qPO3%s?gzJDJx&Uz9l0y3vC0(Xtu8OXdEo4}9f9_Gr0rW?X# z8lL$^Fpt``wG_P2D_afdO5!;H(e{rlCM&8t`-bzy#G`z7L5?WIb%bsGPoN|!TFQws zK)UMkb-exX$)&u>@UM(Bw}5aAbsz$960B)+GzGQWX&@}y>mcpz+WrQN56_^@xDxC~ zO8(B&wHllH7Fa-(Pmf1`yI|09f9>LC;%3l^kwOB zdlX>m107^FjQAk+76P023i+$;D?W&PwXA`!_v?z3a{;xO=0QK3JH&6d6}u9Y7I=9E`f6 z_e?0B+e&7^+o0TD97z?^vh9$NHb0#z9f~;lnnq(Vb5?+ZG-5Zr_qKn;{@~cQ6WK%b z9&^FajwdlBptOe4(@emFIn^o+A}SW=WM0wTr3#J}aIKZ2v$dsN|@?pNVm9_*IZ0cC<*{kLQ>oVtYCZPl1|OELSA zJX?x&xXG7yNUe%TmEMC$KdbN>&rU# z3&7HTFQ58XSuFXXUx<|awHQ|0cu(nC+558Da`z9V2-cuMxpY2}GN;-(5x6?qYQx_K zFo=hmQ&p97%6S3#HoM*qv%>r}>a%bM;|svaKSjkh8;yKfqnc^68|qKZt(NU{JeBKR z{}s!I4V&ana?_)51r6=p4>YAH`y28luW(`sVGKtnucPq1Od^pgY_5Evu=3J)w zHv^(~Vit0W(jKSZVYN5r5(jbtVj#p|qcu?TZ>vsSgdOx7P6tYa7Bj^?H|1(Ke8$bV z5#2C}dOIc`P9TX*l0smz>%d{_D%zn@2T_g@3J5GO4XrM$#c#(8xxkl&^O($b7dz5$ zl3L>`W0fD|ZD%9q(=GuY;>aji@fjoCQp{dT4qEn{qAp&&poF>sTvFOn(AF%z(yBy5 zF*z`}a4c#-wO}p*4=Ch7mBk*l%j%P7GZmjmT5$?;o2nxCm`wq3nuUpNoqq{jO}4Tud@|(o$bmH{8mEI~9w*-tRCs*8@9rh$ zEB||FyfHIpD}xLa`CZu`e$b#e6J!+UoTO6MswJh5jofAXf+q#izAZTYONW)vw(DO* zYQeOi3Nax`U;l66@2}6<=LCu-lCR7Y9Y7$u0g~_#hmM)GX#xfd^Nq!?oa<4!#v#`l zFsTP7kjvn9Yi|c|@*&L3$<>pk5r)5vsOXQd4oaL0>OMfpWo#MA)5*q@EQozkSq^DT z1|E1xCV!ie!%mO3o21^JheudmT(z!~`}VfZus!x8`ALeeFtg4&w$^UH^^>|&Xk3X| zYfF;T`dDg``TpkVKdTi^?vcd6wHhJ~nH;d}{x(${i!%+eS4m3G8td8bQ1o+N*S%SH zQQ>_*4^5~-+!36Pzr(|?Mr!h6^+^)yz4{(+utxcuQq)rMN@F}3+BIo6kSLCAKOmlu zEc^W*fIU+C6798X#EqT8w(S^5iK?(3JLJ^V@%QW>-Xq{p1LgS7O!l(Eq_sO`vPqXa z)rOZ8^aF_ylEPjOD|?g_xkJldO3YV4#2)J(w@YsTEq@9$f@0_&m zcgd}2u=9cB=p`|%=S4?1C1Yg^$?o-PneN_GtM5<2A0FSFxft}fPiG2BPp*2os|+s_ z+JX_OsekJ0K`pRy-4L^U7-bc5-YY2rjvaBfDIb3ymTn(i5UI-$Lk;~CN49isDkjWD ziXYm2+@J*fg3w7x<7{s0-A~47qWyG5%z+Owt2>FBfUpRpBjBwo7LASR*t3kis?149 z6~f4NjQr!E$J?gdNX2K6L81?*C3bbRBeD;`$D!r9ij2eXT&_@|nAY9sKK=j~tK_9`NU_cG3e%5LL>?q(mwO;@nmlp?*Brl?@T~Kiiw%mI_ZE?-{c8-7tLuShc+Oo8_Yu-38t);~W2Ed;ncn372 z)oFu1Ua745@k2e&=ST3P*IU(Fsm7x?r7pPKd>H1`KE) z+IBX&qcPvjju~OZzvTmsF*L;b%G*)J%jH0q%Hf4CzO&eNXqeHJ8>9S;eJCXx_2B$U z*MHkQJ`QROvrdfx6(ga=gs3fC3+%$blTZw$rlZ-%t1A=zc6g9FcB;po_jUYWz3XP6 zL-VNtJ>{YB?&&E4TojYoS;z<_2s`Z)XvEBV`;$gw3x_!Kx)_)(L3gLJhSIY9n~X?# zN`F$Tp;@UcVc)+Aq|%e04_zlcGbpf!;K6L{xpfoA8>1GjZR`QZqm5rX zC7{2O{$GqO;~LyO&LIEP+QDOpU0J6(?*ozcG- zECylh&OPLdN855E=1)E&K;y%gj=E7NIVCVt%F0R!4RNM)nd zY@oL5Z$nd7aYQwVQe)Vmm#b1T20&3H5)x6x;!&<(liBZ){J+!_`%(6csEP%a)hhA4 zu)HQm(uA+I<$#zZ)At+aPROn(0R;xsLQmWxW@>TC+SHCW_0xgI$hoaef?UqVZ?O26n=s51>}pgJAAlE<)mIb%;~x&4ko z@5qMAO_A2Sb0OvV;idq(2R*eiVOyYA0lUm6_ZWrL5YYc?k)$S9>ugzx2JU>H!Dg-b zy1v8xX#TX(WUQJguRhX1rYB@&T=$GOCskP#H4DAAwO8|jTnf47)Ugtn_EFBs5)$jl zX;LBIC2ye>ELR~J2gBlv7f1RdOHadFuJ~b83}gT1)#79{TQ3oiY<> zrCpVYB1MAz#>I)pGly^&$+u6o@>#yk^<*0@Or|;LuypRS(A%BMKeuxV1zKxCrcPr_ zf)XLtNA9L_mN??U3ZCNO45fqeq$8OMD;QgC0TK!@UEB%y+{Z^u|IL{%;&eh3xcdBG<~O?J1UV;HV;`A_9l zh#y-I*>n|lpJGoe8wKey6RYtP6zT4O+%)3R3qJ&?`$L&t2S>Z$GymU zvcS}>X}3|qI*bERf8NPgxUu($1Zkyglyxa0^JmR>WiHGdxniX++5Vg`yh$#6X4rch0Ds`2(!gyr%HLG6Bn zdXMr|AdYrPNSMSD9Fl{5LG}(hO#DLXgZogwZWrhkAk~7O0+`ja*WKOr@|O49$plGj zJ4?JvGWy6`$F2z-<*VC3#aS|FVFYbJ4 zI3)0n8r!_4U@&mBh4ctxEtv>HbHH>8ZB9+SZo{(KP#E^fFF^H#r^D@&AAuV&5T)^6 zR3yI}6IR+q`EnpWZJHk5ej=y6pN(5aS>nj;z4>B>PU}`3aw|sh3F!{`f z+(J#GaeF9AHPb%m^(^y55PZOBl1`5o6V-&U@I!5%KEEIFje-#DDo|ca)fz>mc^zs| z8`*)LJJiAq{A#Mt?iO%$pf$Wwnjq!BZijtWohAJALgB(!oMH}FAE-hknskZ%$-Z99 zpmiD3&+SeASV-M?d%G40$;1xdR~T~F^}d9P5kLCd=f5N+()fPjG~uZbMK zOpxE{O)4o&m^KI>$zJlDaG8(2<32|Zn0OB?Kr32}#cif&&8LCcmrLmmgRg@M4!z6v zmw-M1TIftbHq;He)~*%URgz)SXFg-U&w*()h4M5lOF%CoCujdKi_WY|uQc0p)M^05 zb0v1?M>KKR8$sDZbz*+L3;CG%ArsS%1_E`;Ly>!u_t92LxTSR*!T|Hnb?;tX!fVhm z>>5Us(eq-#K)6+!(_DZ0q0(=vQv7hOJkQB%z)#ISPi^afJ!t2AzN^N8>S0GIw)bmmSrso`4B zH0VjuvW76-o%F-$?=${HeV}1$RLtSXe?nKWJRDciHNlHXE>6(GgA>dWQGQYtM&o2j zYkGrJ@Q8A6g)O3>7B61;znBA|OO&FG41UkdQ#C0&=+y+n zvHd(N?HH3E!qUSY+54;_J_jQxYM1Fvv|z+`H6o)d$%j&BkIdZol>s1vLQM^>Ubxo`vdK` zRK4QtCB?3%L&=U8y3)Zzy+&$Sdt$c$6^Dwq>jv+f96k-7VuFHJkQ>F!^O?`q<1|Kn zAXgqr9=1+tYt&E%GEVW^h1@xq;;Ai-$?Fe$_nmT*z>6YB_)-3xANtzf)?1d=8nn<_ zH^?T?v`Aoc3+--H#rE6nF?*I@&>t|oFMLpk=Ln6i0Z1iO`5jv+HtVKN9;bh(wV>m- zuBda&!-1OZBam(SuCmm=-!Ppf{mQZ`!?ry-t#}$ZZxAeZ@R8Z^r)Zs2K~fK{nBnAi zVa>z4@4k+RS^(r9p#{g`$)IvrU8V+so*q)T z8$e)9^@%|2=W~K5jlB{OJEp&A>O#KZ)sxVjc$b2D&n$v?#f}W?>4b&;c56S%yNMz! ztN`v(FeR=5RrhIu`qpJF^C*U~Gs>Z320C?HSvjj9$(FXHfC-(_HseE`-n7$VbA_5y zov3+Qj^EdPP|v+K7yD?qR7YjUoSIiqE65Lc02I{_`)FyrEKjE)^C_kRkvoE{HT3v-f+I>G>I(jluTngOM zGe{QjhK=iC$k!WxOg}Iigp=4q_c-Q?;5`}*ZP#Ron=qSEBtc}UnBBqnegeKHnAoiW zBK{e~PVSnsxy3$$YKtQO=9(v2O}j$@SAh!gkKpCF!S)L?6wa&OrC?j$6iaELhxYae4N~#qqIq=KR>x~Sxkapc)s;C-o&X}P3NNRhpzpE_{k+QBt${-caf^m# zA7$voIYRiIYdurdv#id&gb5A@io1ym7UBm7-hLb@m*yPj4i9;@ zX0exJ{_NG3vr`lXY$(s}Xsb<`CinQ+=!RcyWVE?>7Yw{BvH-F1a|1U{;H6i;Od^fw*^FG_DjF0jOa)D5c}A@RQ!XfAZ`ue8Ec*$| z>xz2YCh7`)4OjTFKy`P)fIbtxIH-Lz3#%0cGIM)2MyF!wpd=<#VeoB<@ww&;Y06@Q zgEn0!7>}lX%G!@>9M0c^f$N3e>K%2G9t{{2KC8Z#^l@xS z_R?~=bJ<4c9Ywr!^V-YD32fHtYmDFe>44qx#Y@;`MQ>G64NR`uH1jRdq#T%l#F# z=FPn?nzQ0OEy!SF=@=W{S39CR`slLKURqt@1Xir2p2=hbyJgV6_$*3nG`ewWyL~%3 zyZ`j&oPw(l6;#TAV0Nk_TolxZu*OCEi}m$qhI3T&!`=Q|MmYOaJ-ZDqQAY^U`{R`F zHGhJn+SiH#D2W%h&q?{KO2o{pR~7e@!s0-)p7^u$N3WCTi&YT ztMn8%j+9*=4g&9=7I^SLS!RCsjQYd7X!|z>w=E77#!X7P9ZbFCDMt)8_mB+2h*bm0K|tt4}yw{u7cvg47jZoYmIA$gNUp zGf{I-Yse83)>e}MVADlQh2!S1Aokv~ zwQ!qv(M!yu@Xo<8+0P(-*sj&xvst@#+C*$j&lW;K8r#=ab3L z$3`35Y;u!y-I>!Npv+%#FOx$at9+t@oFKkvbW@WUIf=?@T!CH~!6O@uO}aYDZYmgT zz3I^8?G}66{b&P}fe z$-JlDv)tO2W>)C91}*k7>fS(GRg|h+gBe+AC(g$l+v<^fD3#apeMb7S=%DD3#7<<^ zqU&U!`gq?wQ*}27jf|Yz{zrta@%Lz-j(nCF5uLBc|l+PfCiTG8I8>9O<^)|mmljm0Id!EmOr$Cl2_O+QcQ5U*c z!JJa3vL?B>%voWzoMK)NQ)G@q8%$4@%9IQ4SGuK~YxQBc0&xCcNwVpNS+crELup;) zj&tQlH#b7O;GkINsv3pqk=ar~yIC6aIL7IAMLs=y@yA@i(Gpq*j;#NERDFwS6@W_Z z`U*`96URy8t^v}cMAG84j8)-uBgka5h5BU5YvVJgu#Cyi0eNmnQeMf>+Y=u4kR+bG z6jrnU6xJ|lngNJL&F2=`Sit#u_bSswiCTE`A0dK@&%SgO(ENw2+Tjvv70>K>`r(yJ zxacXNecGkq3V;+03C_d@9HIj=+O2$&LLRg1Q(YvZ{Ce=6K)&)L3B$gO&9Hhi>`~!Q zTGEwxRmpWw%NW56-%ItSFFCWSOSI$Ma<^5(_3?s0@Sgj{cG^G_sJMN|YD?p)WQH0r zY#v)v1%#7TwUUUO6*|ejZB3vzI;TET;8BR*8U)mhRPu0P)97Gx9T?jFP(3)M&un$& z)-*B(h@htnrm=@iYEiDc8}fzFxSaO8cjbX8cynk=veV;M4CSjFtFn*+*G9EE=G>8E z0jO7k-~|Xcp0B!7_s(K_YnDfAj6F;{BX#Be&2gJJOQT1k3g3SD=0_6D-j7Jw(hYgP zD{^Xmd1BLysik@n`As;w$EV~{+`cnoBMmI?{Cp*D@grIzqP_cH?uGdx$(;hiS%?j% z060w0?(%-b!BWVwL#gSrCwVU?Jh#InW5Yn-IAXWGp2cN#S~k2Zjg4t4L$y>lG({{u z0_Z=Gadt*!8BH5Ud7-sRRByt%J~KZ(d|a;+&f-m&sZ*ooD~3n$ z0Dk>nyr%GxoWRD1q^i2aG2H<1rdfT1ob}W?>K=FVz-9L_@>GF!{^vHi~Zp@TM1M3_j5 zOL~5U3n^|mfrZ?<6vBBt!0dU|2kw%_kw%!zIP4B&#$+LTV?I?rv(3zSXB!L*nJ)Bm zg3}O2>G?_4vNsFkS+lKk_D%`s0sJ%N>lp4zH9D=^?8mjAG@MJI<*}*ji13HN!G`=b zjarwR%cVOmv5wlEt``wn_MCxtz!ig3yU^~7-E&Xg7Nf?O7Js$c1;N| z#%5C0+P1ZBqjscVI`UAYt?=hS`e9p}pi;D(@6+;v-mdOl=ie$p$5nKIwhj=%!Do1? zE~DDUO_;;x_rM-)NuCCQ036iWM9rO)Q!+~i+WYdqCjK~O9|a@l&j7_m9LXJN1#@lH zygalA?R?uy>b5mU@iuLTlnFF+DvcP=&@71LaS4x=QH>EJ{p2s)sb?5eI6L{P2OcuC<@# zu#&Y~HnM)ALTR2$&>aVcSrD%c9W+bMdc{1v&(*QpOjh@&jBZ>n0D57_F=R3XeiXFm zrTi+K*3*}Gj$5NJ1dpwhQ+}HHo#t4`ICg+k;O^w4r3+i7YxjkZfS3*mReA2U4614 zHK^F3c14Fkd_lSB5x{>} zFl%=sd(sVRP?kbi?=T&#hzK2k$1cA%sA6AClT~$g4q(~lL#A|tx z>H2JrKm7yH9T7<(*5tm9hBzkQS?dL8iS zW8i_43BqshZ*kQV93XS3OF<62ZEU#vyop@LLDAUz%H6wPU)^Tg|A@K?pFwF36@voK zko>4E)l)ns@#|so)tfV~{>Eb1w?>{ob5L<|iAhdZ+c%KrJ zkV`&wVPF)R3j&w1E5G|9K(DfIlXyWTcwPeZD)n| z<1ksYALDyu9@)C_*q{*s3V5Y_850R-iJEW8RM}S*#x?h0bu82H**EjE+Wo3oef(Pv+x6T?I+O8xefFb2S3xp~}T%-SxpMB?!En1w@fzw$G zT0_ZQ55L`=+&;s$KEEmEc?BnrB`e86U}4^$(j{l*AN0G_>i=`#txl_;=~<$ewqY^u zmpbg@;6DMyv;QoZ+R&+}QWJ$OOu${r3)A!-DVl=4uzLAhveZ~PVq#BHQn__qx_&POH3Qb?p3+6b}fOpaEW6UyJ8 z{X}hP<3;$j(Hi9JFo{9ts*-c<{v4D;vI$!z3H!Uk%vozswt?%Ef%pN^#=%e%xF1D< zX57KC$9Ke6w%U8fAH;fR8|V(p`Lo#$dt$;cZ=#lSZq4)%#UxIc4mur7KG0-yYw0%! z0u{pU^gkW(dYqQ2aMb;#AB+YWAL7rM;=bGTY7OnwSC<)hHREf`w#Kgj)ll>|?KRcs z^WhO4dG&gSFRx~LM2*h*%L{)0w$)PH7|Ob18v6#>=cCJ#)~&iI{uR^>WcSfdHu5N` zlu(+}Vhput(Nj7r_z>vp&pCXFEo#Pe{14>89PYEiwe-%q*S`E49O!bTWnZ+1bRl~@ zoU)fj10U&-sKaJbtuQd4f18HkCyA#QFbSgs2jBS{PHDC=gmeLLXo;jDANo*GR+06< z@TGu{;HHn7PLl%|z&`%DWt4i<4Mcf)S!px2fEd9Z!b&FBjYPmZ(PW2~Pd!rbX|=ZD zTnaJrYWK94(Qbj$-p}pPaTzVB;Ca{h;(gm;n@5AyqFD|Y0gINVQ5d-UHuf?sp?iFg zVeccRjY<9uiu3Bxg-sSh5|?=GW1?m=-5{&c_tA_4$nW_Ua+QzICssTeDuta4wdq;+ z3ZBPqvO%4DNS0c}VipBvqOFWYH}*W>TRn?qWy8T>{OiF!G=vq7?IvsCXVt$tV#8OW zxQ|L8lGgh_f~2d9hl|!b{wE^1G)fxnut*wRIIOuSyal|K#x@b_<0Ow`drt_@O7f*J zSHh{g9wERJLG(E1hJ2%?h%=vaeC1*86}#1yrJj0sIlPz=jA^0{Y#mfAT|wTtkQ9$* zwZo&@A>eq9MvJyE1$SmeJVC&zZ-WZ2`7z;h?yYslHC&nl z2#r#IICRt+CM6uJ9xa_hAc8%u)qGnE22QviYL|qUcAu>FESc*q z|EZ}2aer+(uU7DC*Y(x)DL1&tE%mB}Dc2z2nJ;M5u?mGg>f2AX@VMNmy}T*!gdx=_ zU?E$@%~#TL>}3-*fZWe|_s4hPmg%RjSxf?2ZBUVp4MjJ+@M_douexIxZ##l?YEW;m z23sU;Iw?yb}lInb7JO~`WFd19lRnap8w<+L*# zzKk-F&R4&T-GI7=y}vO0Qm5NRQr91cfer?0hc_yg?y2XGS+kx^PI>k#yN;N}8EFG8 z-LI5eh`C=i;Cu}#tH0wuZ(Sg}p3G7Jf_7&Irl6z@lEHpwF*ao|M5=dwdO$7>2LKI- z2mYj{NO55ga(RM=JJWg0!k)t?LeM!7!Hc8hyt_Jj@TtI<^r~2MpKd9uQN0oUXa1Pa zeTq9jRMijDu~OAcMbws8?@fl9{T&FVL{d`d@qPLLms?#AOYfPli{&Bs5CjSMwMfRdd-=i6!W`R!WhFf8)f-spn$65?%}mu z&kv_0p`{|qWVlT%udL@_t`w-Pq!`Usrea0f!Hz90Eb)MbP*Z&nmkoVVY)i2WV-6llvb zIC{l;+fOskTW4YFaj*73oDy4G?$ufncV}B?Qxt^v>jv*-N1TZtJ9^s(fS4im2X8IB zNj_OOz1Po=QPSn`C6`&4z_I|+5QMS)ROE35UhyvS8`ERqkDFsFx13kD13)3jqQJt= ziQ0iT(EM{#U%jik<8`G{V+ia0GyfqN>bp02)myy*cNdXTM>;^`*WZ@6bSy`{kK2$+ zolopX;)5GcV{1z{Y;?D@m)&MY?I%lt{t>FV{iP$4=6Fn$x!})F-NZFO;l)C;ky=c8Mfx zBnOqd-@*z-A)m6eO`^0Cg1w#tyz{P4r`!Y7?7SS@{LqKt8j;h=WIuls01|=hf3n#9 z!>BtCDaIEluc8*pTAX7Wn&mA^t!MsPrs4&w48>?e;`j%7?zxmO;6y&WEAbv8Gqu=8 zmzBP{RI4X#ogo&{^gwO>UnxbeUApr{QJ0b)u4OL~0%tnP5_jrA3WA^6k60#Szamh- zbX`fi(qSD}kpgF*2W8&B6y+Od?ig(+ogYO|5}RP{9td<=yS!ze(~{x}(k0AmpQaJ# zo$`h7$p$8y4*Ysaez6`7Xihmnriu^Q*|hY~TAXgW=L)`(dD8d>O-8x}ok$1E4yI~* zIwW*;A51}zy!S1yxP*1q`O$l)!MpWg!$2S#%t3UQ&|Y)0Xr%lURlb;g55fdY;XG99Xx z%2Bumef1Gl@7+t;;gZD2igDeMpFyiwH(%E2aAnHKn|3RvQj@=R!l41$QMoDx7zclw zju{!1d{{$wZIRe8mNhKXv-vJMAd7)l{nETKQ%?&Lu6Tel_fL~P84oDOgYW=t3H@jr z?{>rR@dU>9mf@6m&BA*AN3a$9IYVqw7UsZUJqw-kc}Ks4UpX*nmbSb&Tb@r) zv)0~1tfT214`J$)igM8Z01~52TH-gq^>%lY=09)<%5;PI@eRS`52?*FyV)1|Z^+J= zmrV)>2Kq!JW*(5W*ZV3Q;*b=qci&z8?15%w+~mv={>#F%&9`Et z2w_*`s;-1&@5lKX0yAaDU2Y9kBUjXt+8&)+Yu8Q@An%W)f-3L3^qIlUh^b@8N={Tk zk7Yd`b>tl>rvsnF!{+fr$mV4)vT%2ihtTB2cr_MD2LOaWmLH?Sw?1EA4<1#vtEas* z-I%BdXtV@tCfh?d;XH3e*V0JjnUXJ9Xzru$(GzUtlI`*DFPMQf8l%+KCs}%0F?s;nnJPhf;e9<}`M23KLvjzpT1P8e} z)2=oF$$}Z$Tt;m#RBBwMi$*3BK-<6)5?7e8n&;b+hDI95UNLO;y~|c{vA`=STEb_Y z8fy$hLL}`0s(%lw<+33PHwX5f5<8E7MsobtTPbU^8c~bUKLj7((=rLbQe#*2Hyg=) z0v*=UCtHyZNys;o_omk*=gz*AyMN-zK1neN+L)@ zI0i(LXLvxvJvAZ8s=c#W&?4bP<8IwdE37Fudo4q&iFhr$;N(%K7-(rA ztTm&xV?=v~le)bRHLrm?xa$4WdeP5dnAN6RE|xPZCXQVg*Yd0N)rD)EJa=RvprQe7 zFrO^?_5mY6kpk8Cj*T_T+FY`_DdwsQ zt$cNZ7*W>%TGf=0qA_fJiek`D(9Z*&iIVTRXx~vlwI|NYZvRsX``5cV{}P~ujjZ2hB8|JVw<~k@>5s!EKVtz zDRKnh9f%C;7<8Kd1k>r+lBuzc;8hF5i`Fy^0g;+>(LC%HKQ903{nXPWtJ$s}Z(mp` z4H=RfW2A{YN+a|c_4!?S9o;O4QLJ!XT$BWABS39uLB}<0!J>!riP_>jz1Q$g|JbcP zxo1un`%D+d4YY8qPTn;Xzt9!PT8qaHQz~zn%8)GHI(*q@?ic~z3ac@D{x)J~wqD)mriYmv`qsf*rnz30 ziN70DPAM}U&wuJDXdx~D+5eha6(hKP(P@!uE%q|la~vbU?2t;qKqvQ5(+kHuWgXXK z)s~uJcNFXxN+VT$lTz^PV>HS0%FcnxkZFL_Z1LXc#GY1CO%yn|`9U8Z#X~qv-J@4a z)I}~iRGA&xMynXWB%#DTjCRU{aYQzZVhW{EZ`6diWYQ{Un(`kQyuQNs^zYv#o^MyFWjk*fk`Vyi?yayK`$pZ6i_?b4H5__jCUc&(k)!Iy3@ykCyC1r=~%io(~WI-;v z#;Ji0qME1~?0t?LCvZBo{C?)Kt>AJg+iz#XvmdYaFc)bCP&T{tB@C=`@9AG+r%RKr z6ueHKaH$lNc-HY9uhN=TSOQSn#j}#e6YXu&{S3qrClKV8GKt*5jWnJ3v)-Gdb zU|>ixaV1h2bf5b7R`-tC@UTl3;sq+Vd&nj#dOBbb|1Hp$Ab48#n7Q1dWohHWald&; zdeyRQpV1!%6aY!~0u$su?yf#G9TFZFirlS)FK#r4#mixDKHa0?)|)@;Qu*DR-@Wo? z8)i~#0E((L-V$6oFT4Jci8|w)dk+u`= zXYw;ye=07k`1;D4lKkw4``q^-zowX6UtL1o3Ks+{ijaW=^OU*i&b2>AH?%+ z&0a1u8~>9@-ld73?;_DXg5HKgM#w?on<9hI4o^}=8qb3sk3L=Y><12XJ{O+TP zTlfNOF8552j@0(=q-Wsh{%8Rk3>ZIsPxf%Ic=7F^x7t=@2bOR2whEkY^@blv6c4Odh;0(Bx}0v}@!i+oc9 zHPcKz3rx;uI^%ntW*`&qoPw~a#hYnR zErSllmmF|~6)VMH@`2WNd_C=?wl&f;jc9|$y8S1b{Nh3IqNi(AcSsS|_Cyt`Pwr2} zfn;W>AM>qdC}!LH`CnzROmdpMyZ>k5gO8 zZzlzOVtX-gNhNk!f%u*%gI+V*@vwi$I+7QJd8{IR0DvX)6mv;rm|H=B$LMd?y7(9Q zIf96z)-S-$g=~15|1~>0wIF*9cAMr(DdkQ$lUqT&8LD=gTd(^>oEd*!Y^pAJaOrjF zeW#dfz~V_)=r^V_!%;5b5u*z><_tR;d?eQHCYTi zvz58Nls>e9x~#QAuIj2boxd8OJKXXpKxrYdW$AR>MB;uq)CvHorShH76?L>kLGLa% zb?x@Rrs!UQH9Ud;O)uG=RU6uTE;l%-&^)%NE%0B;i{&VJ1lQ1U+p2!zNV-~5{!8m_ zY>ZwHf(vJC38K6TA-TWm(#n_VbkIU^t)WKb|Ahyq3mOt7b2@EO$09x285 zXD+3|!91(riVJl}?Wm6THRRVC7HkaAxf-IgQ&tiu9hMipO!vcsUi5_a`S20^jZ< zKeATn_N?--mbj>+Gz}KP?fL*KWT9+g5lN%%r$olpvp+p=Vx4;k?aSu#{STc`p7^PI z4_Cjqz#ypG1vF!Ca4et`cc17VYb@5TTg&s`_;h}#TWS%Y$}kOs%i<;Dv0@bZkPH0P zX=-E9n&U0^M#AgAgxbcFe~WF4%~Jx6JUR-jj)??Bk@++yqz8+H1}`5GjxPDBWmCzF z^UeG=HN4LTdhJW4zd+IR`J0qnhgkeO$qDYBXAJy$Lgz_*!D;!rY|Ce1@S0}NS(obm zh-F8<;dC)`(#82Le*Vq(4&Q_ho_^kBWJx~CyHc;dmL?W9aEMKv7Z!JPqr+i9hQZ&l>(1M^B)6JetDli~bFb)H z9%G&cqxwh9)L`;H``hJ4*3aoK4t3ER4V4-24YcP5+^QGaU zGnTX>rtZTVw5!UyX6f)38TaAZ97wWF(VL$zvpTsacQlndH8O&=RQx^`dG85jETk3Y7L z8|sSL_HpLAQ>ZFO$` znMsp*iJVd{vB4}^VeUvay6Iiz*?X5|cBAD24ApywD=tqTAxxzkH&%x zTpN({Nqhp5A4Nm%6#T|&HJ)HM6ilm{|7bgNl}?)T{KW%ibOc`U$02&^2fc2Z zOzI1fkCsb4hpXI^p~)H$jSxx4=mW=SRot{ogzlMa4_<%3?lS!9KWXG&G~d?^r|dhr zBCjzK)@C<~s(s}3%T(&G_cl!(ZprSTdXB=45{8x!-?Ygcw@p1woUGrXHnT0c`!IT% z9-ZXLIW~eOYj^^qksgN%Qmqd&@JwA%T^!Cs8q{t;w|K-!`Lz3?*rP#2B!HqQu5J(K zZk3DvJA_C7QzCysxTdju`}71Z=s2DMthkT^PNOT8@tTC~2a+W_N z8;2eiq~sK=NT@a{Iy6nF9jvq?Ve2hRno6M$0ruwV1L3C@Fljdkd<0jz6I+s0${+BB zM$>@8Uy{P>!6g3a(T51?1kP*+HEsFh&`ALuVU8s>nCnu%dYH|K0&WSJPxaygzA%>@tmE~oWF*N zfXtpcT*I5zSuU*R-AWayvLqH1QNAWrAl(1g&abKUNgwQM`;DuYzfiDrO%J4x%MZyJ z!S(oB6Xd!5nV#YJ=H`LUsCw92uYBoxNcsNjL+12paWdB{a%?WqZ;nWZ;48q3g+xu%xpno`-9^mW9g1#6as_MNgj^*F&e6MIypQC zzt9^5w=^yDllqt+2d@wO%C?S%E*NMABmt9(E>c7{`Q*Cmy;E9olVb@pO05uP8pJm3 z+CrnsoNq=sIqk_E9kat%wrx9MD$Vx=S3;}v>NexjE56<$g!csNWn0a0yrD<=8^NI| zjiP};pNZU`xSdFRRFsoDVgH5P-4H3$%dgPpzBY--+7|-yv3czz6FNz!l)qY|nr{^> ziyj?*)L(V%d@HMj6Gn$bFXyAbQ#?;?yLQaVkVYD)=jzor86rDd0-@|Bk*SZ+#xnKO zqzbP893@k86I6x(2GvC(rhlsy=_*q z+u&I!r@;CerPEA5yH@+BNaSJUcPtvKdOThqcAp1q0?CyYs@ieEr)6;&WnPupI38=B za~-PAPxO89OS_IjX6@?QF=Z(vR<>QY?O!f;1abi5jFm8I!dTt8T7+~&)Gk+W=HN#A z=>L$k1o!CNN5_t?L-)(j-XVUh0Zzpf%mX;pc>LZX=tdmU)s9k3?emt|&))o7AIfj< zt2J>Jt1c5l1Ide&rEpXa**800&?_}uPqkTRT#Zm54Xp6#@C+cTci5kW<|NBf8@l3zgxR}k-y zF$)$hsntY+!+a1!x3<}Nr}gf8a98u&>G7~d!CkjS74Gu&41Uw&*~Z*7SpX~%AZd?U zvz%y5s4o(|?Tvn10=lyavs3i0lvsr_@j&Tf=46b0gOwi{iUp?} zZKx0Gou|9rxvIsswa`$d3s!XN1E7Zmqx=vSZs=;8$7xPz)`9X^E`={e`@!)1`|o;3 z9jo6lXM~O#=G#6PxM*5cRrWr74F0v#RButurEyBq5nspD8sT z#{dhuD7<6CH_iMX+vp>M@X^0V>_A2(*M_yKla5YjjjG`r60ecrcMl4X=`^WN{S|9( zFM8Je?9w5Zf?YL-lX3adeBrihTX5xZNsN-iFNr6S&p!_x$@BONJp|yFHBVORHwE1T zLh_XN%Dx)Q@A2F|3HDCJ6R6m1_v3S>tW_uUfegET?A=J}GN~4inhpo7US85d5+L=Ht`LNf{&S zrgkn2!e8^DKhdOhqrH;TUcMj__Z!8n1%*C-{q?Ty_mCw6=+U<8uw4VL1}^Q>qEg^aeC zqi>)`8F7*dxA+XFOUs#p>)pLEOw$X`(uiVcwgCD?DU+XZ)iCbdoPoi}Pipu{lP&82 zBl#%lRT1$<0m21Bb(jIVV_9o?{MU|(5fCi? zTQ&itQKKwgDZyFKETb(#p_)0^e>!q=+(-g>iNR|U)TCX3u+^g!`1sw`57EuS6fL}RZ z*QqburftWJx@SJk)nO#-@|!<|-+s`4Lbxr1fxr>oeRsa#37{4m^R{bkPC?jV5V8kV zk#h>>ZL4B^i37rK>R@j@`Q!h7TfpN4gi-fvRhm;1^4hn-j08;4vMyOG#l_dyZQOACk-b$XFTl1A<7(*$k_9 zJZy4^{cszVKbz0@Z~FCX{M(i2PGBXVpg#-cxiT{Y zT!KP%nQamCd}XfOJ*Jg;_P!J`63JEsPJhGiMq`<@j`#_=Yhjg|d-wRgV20XsXyMB{ zW2`1W{HYQv2<-`kV}+iy&v$NrGTQgkJ*-pCspy2V-@jje{Pq_FN^Gc2^E9hR$O{}< z=7=y@4^>-M+Li#llk^ninqS-$4QWH}Vc#pZ6O=Z;ZfvNAgFa5PN-#QnPTXdfe^O-J zsQrR*h#keRKn0#m4Y^Ch#jFXyE?G2j&n^G9=`uCc77{x;`KoU}DnJj(t>~&L#XS-~P9C=v3^6A8xCuuXP z<`b&t1!`UY+c9@-ga=^&06n^XzC5kpkCd)73A6=@&Zem+*LVE_H$~s$y3&?~n20Qg zSkH_W)@=?`yd}B_rB48r_ad#-f6P5f3wy2n)l~di?Zh2PXqq7u8u5g_;k#nb%JUMk z*{zitblc>V^HEtitn+FhRA-ctqKc0h22&11-$w2qt;o`t#1G}(eg}#{cJV0CNf}fd zbg8449kp7Vg1EvbL1)Ib7OPZ^!G0=3D^8^CLoCPP!^jZ51I&;m`0qQT}aq#1n4dgh1yXi~Gjh*1LERE&A4_nB(g+b4dnLsnJTwCm&=)Ym*3}qc) z?JW9y(w=a|np0p^)e)Fjh#a%gI&AKR%$-%NzVo1p+KAZ>c(v*Uw?zxv=*%@dB^{!k z15L*k;h1UHK#040G}7v|V`YWed^6;;dJ>d^Y|>nRrRNy1OIdPMK)VQPDdPz~W$=az z2xIPEcu40BuT928qN>0US2m|!)~PK&KOEBZ)hU4%72F5oJ_5{(^=(w zm&^@Bma1;9{-pBgjL5z0ZL0lK-P0Y{;P2030JsM_0FxeUzY$t#S_emTwF}Sm<{M&@ z4zoXO){Y4+Qbty6dPmnfefcW(q!^Fo6plV061t(e_R4x^H}UQSksFf9#|FwX{a4*BfyPIC^ZgQZQYY zxdMuNJ%=a*1Y;xlUvmHF$egicf=R}blWJZ%BDbh?*=wv${9jZb;2~#ktRxCBH*X7j z<^;Un72LOG`JSQXs&Dh0Of5+#ybw@XTh*omlFME5I{O|GaMFv=djqC;ksAeZJ@&hS zeF?;u7Ud;^ho9^xugP7I4u_=!T(k5vxuwKbxSVz_uI_?N&f@uEP4SphxSm#eOBfEB zI;cwT#-@yo%ERtD!}nHP2AVZUy`LI1^`5aLPKz4zA#x!&`}_@FU#*jm_b9sVUba@F z>9u9^#CiB(_Zs`QOOGBEP1va>WsI}pCCoxEyd_j&06Ejo1CZDznqdDvG0i(a-EF`2 zMeHBYmIZ99+c+L7WS{(17taof#>(!dmGc}tMEo0p@k1N)X2_sEYp1B6^C(3aSttly zggyhH`<7d(Z+sue+yBa{{$-|WWNu58b~+9E{bcV?a;lgkg-TsX+*+lW4X60Z^mzN> ze7HZpShE(;Qoj3fC&>MY>aUeEn&%vxLZe~a>d$+Px9j(Xc4D8=mrg5m)t1I@k0K*F zU^zapxCr3;;RkA@j>B#)&${fJzRCKsDjbTnpxi0en~43|igI+hCOQ56NsT$AWlUe& zFLGB5wH+jz*hLv#wU8DvafPKJ90RS%FqkS=zGU8;lb*SmdNclbn(Z7pwlM8DBMFi- z?0o%d2vaJhHP1W5KCtcdZWD&gunhic6`#BYZa{geTTjS6c4@aVo^LQqCwghIa-wp) zOEbI|>czJQrC@BcfK%aGZnPRYxWdyR@aAHE87>;VmNiUJpVl*4nKjU;c8`-=VMSR} zO4_*7$9Ww`d8^d}Qev9#RqA!+7&ze@rd#Rxuwe6ij1ng* zS3Rvj-@>6VIV3L?>y9Sf9fKHXVDuxdin-e#1tj?{UyVVW(XkVk`+Gv;E|n*xaYD?= z-yaNqnqV0usM6g4Oke{e7}W??rXe#a`3;5a8j5xcMPJ7wdm?gf5GwO-gh>=xIdq-V ziFTgt-C7Q__OUJp7Eqcy`EJQ{=a$|L!VH4DJ@c+NV}RP!KyS>2F=Y9r_|dhvfzO+i z(Sq)#fBMexloN8}ryv;T`+WBL7Js_Pw~|70iKGcIY${<&qyj$kfT=Y z+n27QCIdE3bF`tE4~W*gtsYzH&G(*t%3(Mc%wj~?rkXYuZ2V=-J@03abMfOM_gZyZ z2KDw!=_5O5lHe#QA)qYdtUtfotIFI{e;(=h0CxiuK!p}5H#E&_8}oTxh9svwOi;#{ zOVNh4Y0w_LB90?iCwK20UOu-o^De#QWyS4Qis_2-T%X*6BOsyL#GX)|kR=G{ne>ev zw$aHcE`wHO&+=c-JnGof4?hSQP1{0nbC+gEIzzEs*oGD;E^urOJ(&j#g99s5J;~MM zg4;M3F${FdVlN3AM1ISUS$5GRqy5zv%vTv_RL!9m2bv`HWnRaEvPTE(*N+y zoF=YLKF$4}#|~u{71cDV8P@ThI^gLOKF{IRguwMj_g7uHMX?iH= zS6-Q!?~NS4YG-&NFpY*x{Rjj3AGIAfw3funOd6j>rWbY&jy+;-7c>kMD+$i zA}avy@sL_lU$770Uo)ii&j#(n;ef&Uc@2yDtQi|x^d^}VdIJVO z-ha0+v7YM2q@Ep}{|`=fopMe#<2vpohvwMnuYIZWb*u~0gs!oY%=@UHZH8Khwp3ty zRM2y)h28yF%THF+PdO2oG{!LYpF(E=NHV90uE@MsM3}{wr$i|Bc!ReKuMD;u2G>1v z23hPKvIUHXM0u}QABWYY$w=BTLgF)ZnQ=#Ae*dH`y;HF-YKPZX7elLtoRXg9cR09c zE_hc}k(uY3^I4S}>83ru!m5k_1ar%rCVR4tdY>}o5`qt0KBwnHrMN(-A25~HuAajO zYTdmx8ZY4SED@X6f7yxWz^Af&DULTf>hCj+HgSIRFu}ZnKI&N)3H!DhCE@Wm5yAyWvnDE+-u*ww(}Il{BF1SGSSAN8<9&uhaLGBru&6u!=YIn?5e?X$h;f zBma=4FRq_IzKDScjez&%QZD7+o8M<60(>K8)jI`y={#2#xEapbC{F>tM1>r?T++)n zZFDZ)f`0~XU1GkC+<0%ny=SMCoEDK0uyS;Lr!{`l1YUOitXk9Tu(`cnY?_fXi|Gu) zi2U1@FO-jd82S=V{`h@(e-A>l13L3Z4>)=S+3lFyfJFOC&a9GU0$jVQTyj5 z!+835M6~cP+T)*l13W)xo7RjvFZNLr_z|YpW6}+ouozh9BCGFdOvz@+&AkFuo79Yz zB2L5f47~Ql6DDt~+IP~%6v@KsryBV+_&EYG1q0#Pf$Z;M1$DIi=a}@PXZ{P1^*A*@ zNSEy7^3?m2$s)9$V{@~u9($0)dh8kJXNf_>HQZVvyoF#MD%TmAW(feyjx=uc9 zR4xM920*&RpW%^=~EHq!EKEhQLt z1={=hHc3}Lwrnx4!INC1M{V#(yr-89frCKMu*lgeV?UPSiL<#GILp|v$m-;^&M6oK z#%Jd=y896?WU6r4g8BdXu+Zmdx+p>l_qu?GmX6uOv-f7dj(?22JE%M7%1OpYv!Sdh zQrk#LSmtA9Bgocn%_xSgdzqw(G7PsCtL-^)^r`y6%*R#(|1Ie z-F(#MKH+Pw*c>JUzk=DK*{y9jl(M7b=NdK_VZ1YAokeFJKVUz)WM$J zZ$|4-x|6z{k%huTr(#Ik43rvi%T}oY#da-W^_~lxx|;O4$?!NStZd>Yapu)gwm%jE zHxp#TDPq)Vk!>?t4i!Hom{4Y0=}10x5#{+`OIMjox-^suoi^FuOg)PycNDy-WIhJSMhS*}O@_3EV=t0%ZDXvSf6GN$Vy(dkCnQ#{4S6GR`-?(_mTXMo5eDKt z$kcG-Y51)%{7KTcb853KPyOo6e>@0*K18K*Db{t4jxdTOGa@r8kyVY2C`7m`H1`6b zzT{Sg#HJHcwGCAMj-QNx{Tw{YCnRdXdAr$VoW7U=Wy z>LV56utNXC)BEV|k`uvK`|kEjrI+Ds`fo2s%f-Z#uTp8NzKGYK6q-bB<9~60t>V&q z6B?V^nkz?E4AhbL-!aehQc9^W$1In+US*~W41L-@4) zDx_S;jq4ul>0(pVI%-S9)fv|ZOq8Jo!&lDIf<~70BXOQTAm*_c_htiv?y-f?)d7~p zI_zi2sh6g_iP6 zIi>^wbTMhr@|IO~%#Y_7-H?=y#7VjSnWc}T?Um8JfsZb4&vy9L6{WMG8G=YnGnZs- zP+Q$J|9C^YGhMYwG;1@dQ~`&S-}IRQV$sSrg>T>zbV)TkgE^`RUdrXxbk9wEpi z>MVQW+M7Wl=~!!XSiWnXk+fXgxTSv3ScqTC3|0uHQIFa4sI1NLcI-2h$`j zqdiB5E!bSnA$xY~i3kMDjl79w^hRNUK9@<&}HAIu{ zj`sFKCZ4Man%B2)1+dif+k^?h)uwj1nr&xxw>Bk*6+U%UM4RA>_hSuBdr)g!H z*7{Kj>}EC}Q?^?_w4$TlEBWov`L=1Xp=bH1R4kV{%yZ~@M|o`VBYT}7!^V59=lxm* z3s8@AJpBQ}<;8tPm2*n!8HML)4rRxi?M!%sfF}?g7!BG}aSCOW%#r6tSaS-Uje=_` zU_KC5jzsNGw4hsauKsSyLoXJX53nA>N&RU|THE0?;?~C52`{x_A(`T3J$d8{cXXft zq#AoMZY$cwZ|d%zzhK;zR^8d~2W<8CcdR{*zvt+MSDP$W^HUsisCB}3`$6BvnwvQA z5B74;LI`=SP;^KC?r{FP6b;d&PJU)D#d^~*Yc|Te}n*JI@7#lHqoH=YSiTLO2r6ZLGZ z>u-mn#<3&=Wpgd9(-jW~kjp!+5PosmE`l ztyc(t2zn>yOrBKIK5chwW}=pm{|L}0mFd@^l>7$0Nhiex6GwW_QRC1(ij7!W1; zgm}q3tLl1p>UpNtwE2t7QFu(KCMkWr_c~~Mder3_x&`&kDU^mTf5bTAJwZoD8Q2B#KfEhHYF6D=aw05vC3RK%FJ2? z-p>-=o0Tp-dY+hA=q&;Gy0m5UD@NFf+vVdH5K90YeYXkEzO(g5c^xBpwL?p@`E7?T zHjtbzSaA!cVgoel*%<F(eTG)(>ZnhfrlP*S+Ck!kF0RK9Aa8r#XY4y^dg>{U{%Ct4*CIqGc zhF_wpFeywR-058g&f2-ZvrsxrIWPIAR4-(XD?fioS5fEW6|p=m`HmWftV+%&5y$ONS4QJq218C;W5Zqfqn|)Ufg5cjATPI-^W*9v z>R)+>g_ibFojzDtr4MY~PESj%u^NI$!d%%C`>WVh8ATEVxyy4vcP^@oW z=9^DqaG|#kAVf`94u1YTaZ+_^L;?S^@8K|M{o+k%$=-Fb#@s>Qhqc-Uj0=nr@jx!2 zcE9S5BCHQyzNA2zuhB2sMR1Qantf#z#(jz_rj~L==V^u1DsP!_BjUyz*{9}*hb1v-Rk!bJB}>j34xe5o$=`M zSwaqMeGHWJO`M19hFQDO|5*vFKq5Rw0?=9X896#IjkwU}R#=hzrt1Uk_>Y;IR?GB_ z46WeNfHH>HOO}m#f|vAuZPkqPY=wg#3xe9H+3E36 z9y~S8CW}kkyy|n8q~EsXXFc}welee93_(o5OSxyvP$KLXRv()*SGh>T(ul}JPYCFI z{|UjfTVLG2KVe%PU3?Itg)FJMOOJ$796-GNv=|tS(@YPrJNs)uGelqfd^gFd1uJebRGF>uO~6D+E{DJ;Av=u4uG%-vx@qGPM)y z*qs9gaTItt?Pf+Mg(pdq5ePO+r3U~-;l>{cOMb^V38>Cd!I#{ymWiS-q2~n>-3&Bm{KSA6iJmKb?sMB*=s!sCETfJ``&>}Y480N_dqAx#I-MHws z7`LH%(4Z%%qasyqGp z!E9dA2Ten;ECvXY$D1f;LfN$pzeuC3+RaGM`KB!;Xs-aUi_tmeZL=%6OToTX$;2QZ z>CPiq+Xmdx9mO_T-sgO~qXC7LBLi(oCEF_(g1Q3$-5hpq=H#<PXaBc-a_$)C3kc+O!MG8L#=Ip*3d~Nso4@* z;exnS)V4L?>sseMexh9x*}pY+*ql7}8I;0;Qi#S!o1d0>V^TgbPwvf5h^~W=|hzm#i{!ksnvWd=J8V-dJsK z)C;(^WwbN@bHX0r)w0K&b;9ZV!zd^efIV=F<}(LBOD7YK!6+@0QJmNsob*=1>QC1r z^SjcE{QUMUhn>&8t8jTg^;_O}f`Y*^c!G7=^__r)-S7rk=YVowY=>=lW9XLiDRdL>;<#4st^ zDOR>cUX~~_{fKCL6+8ZwY=}r=%?&;KjFS*Er+Ac!LM;jgwA6cfk&Kgt>k+_?6uFgJ=<}t;4IqWRjGc z%aqGHU8M)5!_W`>eL*U2$GT~+pl#JfzbNF~P#o2t$Ano&VDQ(a!~U`KJfN~#bcdLa z9SvFFaLKS$yW7q!+$_@TGBs=3ef#sP#wC>7$@i+Dbu|#yo%|<SV9XD z(0%kcFv|zvH1XDv>fBR-qkD|f?cr;??qW_udp;~s^;vSEa}_ zX%CNw-ImEu>G+K`b6Mxx${fJD0aUwfDlxzA@cr$SLb_3KX#vvW1r;WZ zy|3jvqU2EG|IZ6bcZ`ypXndm)cb*c=ALv2vl%_m3SLmmMp8mWqg^UBh`;(o>`+ z%5$Em_t=b1L5^IFN$W>f4DOY7Izvl-Fd=SE$xflrYkc z*4UixWOrY_b5J5}kZLwx7Igy(j-Zn)8vjvvO%r=YZ@Gz95-hs3GP+p!kG}vR^GW`b z%D8MDj@1_v_|ukKvDi`yby^?(I^anziZH*cI{pKe~5}ZxD*z>sT@BiY?10@E@Z8N_je8Qt%=Y_P|*$%}4{$c5^?CJW0w^40LA|WhRr3~cx9iA@xJ*e$XW079@fV#YqUhn?Aw!QU6&%&%7 z5wp#|wH0O=>YMNKBN+nqIa;?3RLO)}Ft=Ll@N_Vs3zCVbxE6=<6Jw=R`WbQlzC8 zn7Vb!2^N8!{CUpmOTvIF*}d&$xXZO4>WXZVu0hH3KO9_=q_(}ZnHW~AEfDst@PgcC zWF}Au2d8Y-SqVL$=p8?M;Yo>^mbz%lje~@He4tAu5-uLA9=trg&*~YuUYszkHNnq; zmW2Sjp{+MrNlTd~OaEub#5=ssys%@83YVtkOX%ME-+C5;09~-ni(IC`l8O^esU1)d z03I$E^nNF#096CgJ*|W2r36l*pkc}rIsqe2J}%}LqK#a;a)TokO#eA`eOO0_Y>~fObF(3wxFqyw?QoXgZ00T< z4ErtJt|tSxCH|&kcmfrbSq>)?Ae}QjHKHVSpk?~8jiSBR((qbwd#w;E5NJdn}tEO?LHsBi=flM1gI!06~?CV4F=X zKL{HVO|-K<=B4nh{4Ak7edDvKTm09SwdEFeZoGx+v*A?HqIKB<9BY6~aimB{rM+p) zOOU81?wrl?kJ2HL{h_n;M&JB!Z|==-!-@39&}xwBO#QZ`-$ERe0cnQacq%N!Tl>`8 z3Y}Wr&M_=2=VT%huAvd4)__HxP>=Ec;{4D1r?ac8Ci`iTbOjxCW2kEeoI^?{6;*U; z+E#3b8Bs+v(F?*=#W4Oej=-i@^|Y1xWUc;mtt}vI>u%c}n^+VygubCU#dA?5Ia?p) zS@Bd4^b0+YyhkW0Fa|!&*``*=yjfTH#$(5m?=up_&e@nAy9Gy_`@~X#mbIpPSME}B z=HS-V+Vv<#!S(CV%KrXO2Fbm3`ypIBpw5_XUtFAcxqhYgzyppsUuXxnU*~98=I)Yd ziOrV&DctfGSe@@72lqcEOg#43ZJU514QA?{vS=)!3RwfU4n1~m z>&Hno`tFua?FKO5ec|6s@BUB}8%)_F64Ekrk3Mvn2=ou&B*9pp|8VNdo>#bLDC7oT zwj-AvI@;_W`q%11&kHonq`sTck3*<>S;MtPq0}+S)9YL147t9TenvX>hn~S_fhZt< zu2w|tXCWlT7-^5(>9rAdG|dKHe*9!r>R5xrYXlV3=^2-sxL+*AQd;0*I)Uo)1-|q^R z)Pfd~rx7%Hb=~5WwKB#4Nqk*V>sL zl8?Co(JD?Yo9N6M$`kXA^SGjlvaX45;DI$D(KAv)le7#~xCe!zW>#ySsR6s*MNEe-&q7BoKP&&5o^za5pXtC)sj(#|24dQ26;1 zs#~>{d~0+pD~#GiJ0S1q&ukoARx*P16Tu!dm15OW;9ei52;_~_QAxKqhLGw|cK&xS zJv*`Oda*kIFmt;bkj;1mO0UTW9xQ;UJH6qarZwevT1hhlm4Os~;*ApzLZ@lO$wnY5 zH?$LX7F;=s&Y8>_FqQS@{udk`Pl|8c%wvb?qeC+FrbRlDjZ|nx1%?76f+*>} ziK~X<^`5&IKHxA;T&5q(85MmzK06o6ME9-(tF|`G8*A5qgYwEo9NYtUY5G=-qd2_I z+RXCA9uos!ABm!wiX}WfO7cGu6aOJzxSktEa(aFKoZFp^!FU1m;=t&8@=H2JKW+1x zBCvAj@r3qgWr7H}^L+nrrVd*vsm{@swlZ{(sJ-&d`rITw8yZkN%fF(U?JRy_H!rxTF79Y#bGs@wC=65LBdVwOxST2z-{nM#fjF##lSeBzjDz-<7iwP?LFW)oE1Bt6|yw5t2pb zw)U-xNQmSKI_(Ht>AE&gHb0#KaB}TI$@^myJVkj7`q1>&wyL-184ep!>7{NpuZTao z0}-tNe0IpF_llEiAaZ=;Y>BwvA}JCvmkUdNzQa|Xkv_o!FNw7v&O?A-Ni5mdg+l(H zvZ1ufJn!DoPsgsT=v7{PT6i)EA$ceLVBtxg=G*3u`5h6 zHfq8eOvzl$R4qrIF}AK|6nnyWZfmYOxzQo^)h1cBXmIagoJBbO9bbZELZr!>_ z8@{KelJ*YsMyaHR@~UGu7$R7MiYMT%$mdpw-p%+ChaHyhp}FdOf|uO(s`-QUP3*zI zQ`M89_D-WTb*FSZB5&m-)KYZaXctuRjtW|b&nK8=%vO!JR8ag5vwnS>;Qr+FB|W>s z&uTqhcW2wBcGaX}Rag}b@$ykt9M%@+&&v5Ua(CcLGiA=(vt+lI0?qY6Z?j_6vZ7;l zbe1E;u=I-ARZ~e_p)lYMuzbu9eQ&Ola)WV*hG%-h_@+`85xNsMzHD!#9}H_~9s`nr zzci+$GVO(xok|guG~x&jx5qn6!Wepf(!yU0DHQghN3rq%z1U2 zj*aw$hOQ?7Z8z&4{m+TbJ*R8nXv{_Qf;~vOc@>%85=^_7sYs%#Ni~&Q3`^(m4 z)NZSAxOl^9uJ5+LdQwWuEV2m17?_CCX=Y8$uyP1^vBUf*?PIq^RSN;(*GoqBQ=G|K zEf_lUe(ryC6ZhG{^fbGC*W{1Qv>f=ZQx&Z+?Yyb%OZUmgdWL}*QcC_$Ov-+uNcV+q zJ0$M+^S@l0Z2V%JnBJr1-c@r~S#?xtClda`3#YwYiVpJvqE7FhU9c%C%?m-$C%xrX z!#hd|_9j#Og%g)=__~OMeSV#FF-*JxfHE%z79my2U8-8uX)j#?)2Byt zJJaZlB6exGv1GbRM=ohCT2LOv-}D&;qg3mi2xX6`?1ICO1~Q;I$)AMfc13iLOvlaI z+i*xD&E&@D-t0|icnHe#Be%)X_M5XM&@zKEL{>x2>XK-w?LaG+7)NV1ng z1Oxh}jugMqgKu2X(DedsJ-cKv0xQ>3l92TaW1?@cmuVzmCapcIrCON62 zz&|c84lAW$$6)O~&}7Y*NZO6?AG*)oY{f7}tbbRSgJb>~LXT=$SG`=5hcg zQc3eL0tat&)t)KNjipcqccaC&XLdJ6FucxzeimxeCX}K0RAhhsDZrxw6~+YTn()!8GLA(F*hmUDpZU6%*(j z1^pusPhNzeF^Egvc9AX_#rdU*EmcPGX3%sL2AmzQv~^XhqJ9dMyV;|*H(qJ@!U&#~gh{5g1fM$$aI`J( z{S8sEFOFO>ObLV=od@BQeptNL#Hr6}>rnI1U$9HMrQ;1>3xFV|6iifgkvAW$V-*g+ zO;6BBh`f)_hcD>&8_mcuLyW}J4k*T6!es6j(uOS$VSIMy;^FMfA;%~L;M(c^o4D6v zL{wxUODeBr6Poo?hxZ~(*WJ&YBTwO@U`WZSa+>1bW^$0^c+`?`!GtM!Py8@qw$V6e~WPV#= z)&f1l*_-%0HUmCVhAyiSvs+jHvb68fW@zNCq_00!S6u`b2EfOwbIQlc1Fa7L4tR>J~^1jzIz!ne+-kUiVi^ z@}3wCY(mv?Z@gqsf7b8%wn=uS+WJqM*M=_KheNXW8%~HqegHxHOWVv^a8C*-`@E`eV-)ew~;g1I9H9n50!r){H(f z+Y}REQXhh6-pNo#2ZNQCSJ{Ufkt{zoygB_V6{^aB#No#&`nMNE4jt0^gdN>_db5St z#0mylUOiKhbs#!l&S6YPGzuD#B?!@nU4~k6Anp3E3*Icf1HIWpg)tK+{iB6m`$03< zZ5Iq5%afWhPCY8TjIzR!=_Y=}!bJR(7lbGS4Y(KX@;M%{-zsF-HJ5 zzP8K9!%fqaIm}W)K;!EUO{}VFOS4%Hq&5dVkxFW@W#|arzJ-$#FJ{jTjo6GnfyqLZ zE7nO{OzH`RKWJD&U$5<@9eY@CX;G-9GZ~o3;**x`3m1TWF;jA26p~u9& z$upXL9TiW0QSaChkVfqg!ju+E9$x4a66$mi@8#I8mmdCN_Z33W%J&<6H{^N)PW@jK zw|e?;K#=y;oqK6RzwN)RGKrSLE-zAb)dQP1icZNbuQvR{iMOQ0M6>y@c8D4CzPiJ9 z`($ERMJO#C-MsQ?S#`vTPyr9uqLrZsjw5ktU}O-~M$zsZq;$F*OihV#a(I3EaUStu z$E5c@s`zH*%I!i~qqR0X{7v|p8*}(|F)IFitbac?-N3eDEa$e$I8?;ATD=~MXq&bJ_>{Zss!pB3AtWOZU*Wt&*t8z0S_0qS1Uh*cs?LhaM66|rY3#=#%!XZ zp>B5nZtHqQryTgywUWBEd29FWrH7HD_DlO3QLl}1FKC1VO?8?iyPfO z1d>b}-u-TP4t08Un#r;uGY2QzLM00av*o&qa(~bGM9_c4kvXpXHUDs@Wl&B&6&GQD zS$MY#fg7vIra^V=hEe-didy0`8>(0@w-@szBpLwi{M0YA)a)( zs)$5v*-P7Z<(qJZNwd0c4npD53|u-B0#vcgb+wVx1r5>(5S&|hw+qGv_u>lWPZiT~ zWnNfqxt*_G=6v=U;p)}}8<+s!{}aAJHs{_q46>obI+XAiuM)Z&h+a_bJm%C>E3sx~ z)tT9G14`5y?7CQNR1h2+w5~1{t<7ZB^thNxH3B`0FT~P~??rqCtv4|2np)^A3&nzw zjZMpQhg}y@tT&{X|K z81IM9y}SuUNXG{lqyeh`qd(BT`$jonfE<<4rL~C>II!gyPylKcm4pSbV=dgqr-u zZ^Uj5$r+o*d6H)7Hjnl$B5eAz5f)r!JcSQ&q=lk9FO9%$Ca8k)rpKd4D?mF z@UndtC^VhYJ1WvIjd-DFs56b*?4FSfLK_SeMBxNOg9z5^s}~iPI4vnbXT!?ehoA#p zQcsv_uAbM`x}WK~7(9ZxYrw7w4AFxKPN%_Mj#q%ySxkoZ%vzBj(%wwGF#Ve)ymu;B z0X#- zMW4_M1U_jqDEB(QS}Q2g?<+YSy2zOzzNxV0ozzVWCQ*y>rc7vC{g7-9nCOq>)5~k? zjqTjxf|(y@dU9gX^XH+xqeS4v&P94|zQ#&+iG79PmL@Z?`e8zOxO?}euMA_1B5GTX zT%UL|=!zQCkLZ9cNWg&0+d}9MPrczRGDFahX+_Jg5C}Wu}dweOR+)FAZjK%A*AW@UvJILQ_2AZo z30&|3P_9cK?UJm2Ov91XsT_^@w&x>1%jnQTIss%3D;%24d8-^CyMV488t0O7trcPJ zv=LV~xzwt(qYZ?!keuhX+oFYmTXkQ;?pFUaIBH~caEi=98g%dyC7>hcO1&<}^; zi6pB#_tn=6?L4=X9s_eL`?#L@QTa_;iHx+w9mMbx%bw*b6`#bFaYWuwy#zjG?W>Xc zLDaG1sK`5c;&GWz5!nR|4vo=5BM3+Fz44UKgYRxzp*5Cdn zU!;IY%VKrcj@b--_7Sk7f7dFU{^$4M&U=*E+Tm9;gqTVmNKIw0wi2xG$Z?cDh_+3o zDrH{woGi;)Us$cdWs4rQ!(}t5LGU4s4bAgl{8-xeHt)y8Dbwc+&K1bg1B`zo3`r5i z32UF`3IlWL$dQcRg{G^}D>4$kMhr0dtlJc7R`0GH}5S zuQ)pG_LLu{$;^N^@Ll@$pU0@la0k7MO5&z$X+mwq4(l(Qv+|}z>``f9Zy+LJck$_C z|33XNUe{}snW_s+QK<|qvr5iZ-?qr!Tv(DB@Tyl-v^HiSpcnA+=o6b+H?;0&Db6d* zWbccr^Y*&UVHpIF5ebJmd6OuhLq7sV6=4Q@caqc=1p6z1)ZE$SldT}O8Rco7PU7@+ z{L5Q+L~Qtk>(3EgHeo20U{CcU%6;n`&PfQP>COAltkf2Sb~%i)o?iRi_uokY@8d6x zv+mNcfHa@Khh>Sxdp?;)Z^Hv@%}y#00#r^?STY@mSqA_Hv)P~viiT#Hf**oAvpOoK zJjcT3V7#Ok>Dn3+sTk{HFHQQO34`O&qpT9G<(!WyBLQ`RQIcwG@Q%(zYyRs5YVkCJ8?F2uRMLW3%EE|gm{N;%HnGWA=I_C+ zO{3b+z)S9@*$>3^#r#^770nwMnbuuL#V1SS|2G zBVf$2awP%fJCEdyeR@(>8`YCPe97jyV^};?8G{tKl&IC>>)IA1^?`FzbU*g+W+L4O zHh1kUPY|&GL2a&a=_oQ-AQav&oku6{jKG7en7JfK$TL!SbUh4SvImzuI|J>vb$bx#du8F}MX8oc_;Ly@|xX)OWMx`rl( znV5&eDOOeJP1*nZgOCH12obhMcV7S->;SBSsIvC3L&k1>I01F#09vlZ&&_MhC)$mj z{^i1gMvyq9;#w5!$ORN(VS3p=;O^8%mVesS($;<>FE70s#+sCdF8kJ`)IMp-+Ds}5 zd$7;2q6m`Bp$gje8Pe4xt5R1bb{I4k4gnak;6HCbM<8Njh?h( zt18&myEn-CD??=}CsZBu9uJ4g#q9g^ya`f@9ER}p@h`@CZX0G=`~s?EhBt`9!Z~8!B34E%Em?f;fd4 zUw=LCyj}a`4B|k7*`=^$DXB**6>E-`u;2FkGIIUEdCQ?^K6c)ixxJ#fT`p!Q5a#$x zhb|}f2vqwJf{O?MYTf^?u6zgnl|p9=j70 zvfb-nYN$aPQ_u>tL`!muTQ0)i_m>1NYTt#;Uvdq> z`K0wQi>MCzZdBWylm2xhU3sFCa>Bqh?~Xi!QgRllM1p38Xe|1^iwXdKnr^%1)|M<^ zF9M%ChUAGKRW0+Q%VrIszM$9e$XwjG?!D$R`Nlb?Cp1!|CO-ZUwjThjP{C}-cXq=v z58Q>;lqA8DyO?NI0?kB#VU2TI!n3f}$vgWO&iCp&?cVoMZ7;{Z`#~N9C~wB0b*5&7 zZ-?GoO3rV-yb-{XwgOiG>U$U4~eMpj56>y8XtozSh4!sHKH zd^=V&dzRC9mZQMa4$d~SfgpHbNg-+T;vYTI1>b0FzOvjq053cyuuWq3grSf!70e0(G(gvbz1>vUc2EZQw(bm9nTAJF;c1Oo;gY9YDQnc&K5UbrQfY&VO|i zO`Fn4qZ1#tG?l)5UzC6a~1ES6Ett3^!P z$HmXMj#-Lg^Y#un>lzea)sq*wgFl+sPwN{ayhisixS)A+2u1)3r!I*w;*m7np6j-Q z;M9b=KLl}p5H$nZo$YpLq4IbOO(t;NH9AnEoAO%Vg{+QBiJN?2ei#35~l?5PwG*Ft|Ox1Z*9e zFOI?IQsv6*+Gb_rKIV%g*7dcBA^wcl;^{>J9B2M#^4KA*pmv09r>|dP(X@poOyXoV zaFJcPQWCSzFPuvWN_tbfV)ZbGA3r`p4u^YCz>8zo-s?5yN~q-gY!|Z)CbbeN(U4nA zID^{#qOKYnua0ioTGcNN28&_E99W#2eR-ObcekwV5QNE!)zjlBTw-bLdI?OZ2I}1U zu}3vz(Ip!9Oe@Ww7~S4-Ij|U7OaLNqb;4r`OHU~-uP0vaC0gDuKWB8>Y4@(z1-S+U zp81<=Rc-NsG{T(kjMb90#Iw#2MuL9&3EvSzIOFdd3_Oct zFB}-xXkDeT@vSA^`@?3q+)a3c$+|+7tJmnb#rU&J-C+iaB@LZk)K{MmPWY|JED); zC0i0GyHXwYu*#Sm0=;r+M7W^Y@ai00D^r|WTZJclG9>;C(j}9~Xu+gVx3M_NP(!Kk zH^rre`wjW6)-X(9^rdIe&BMnXjoAxN6cSptItR8ELSiA@7l69NZQWRB9dZ15FaM

) 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 diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/10k/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/10k/mappings.json deleted file mode 100644 index 99264d7ebbff8..0000000000000 --- a/test/api_integration/fixtures/es_archiver/saved_objects/10k/mappings.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "number_of_replicas": "1" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "namespace": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - } - } -} diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz b/test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz deleted file mode 100644 index d65e1920b2342559fefe4d358fba3f9f8c17fff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2469 zcmV;W30n3aiwFp8?_6L217u-zVJ>QOZ*BnXTy1aLI1>KeUtxH^9c)9A(>T$m+iQ_U z7kxt$Ek9gGArg2Wc%~%W4>fCyHC2<+95`IYk}jOQ%x0Kv z45w~Xsr%S^!>=V>6B+|sO2IM8Qbw%vDapSX6mS$AldP1XAR##( zQG-ZYU^0;@hB8w^P=+(g?#)3X&#F&2^bA#lEyyl_0_N@yJi=r*?f}Bs2~3x0eAo$`Uxg+V$f5K zr*R$vqqig!iTQ*om}c|IiNI5{vhXKBn$4vkA~l*v1<-H~cl-P5%P9m{W;0l_)MNqy zp27TyTO!|(@&m*SdT8SPy_%vs3gA$^&3iW*NqlDM20pmu9Cz9h3&M zY4TET+&cbOx!adLHl|AfGK(W#(3~4JFDpbQvBV1$EWhftPmU@)CNZ?XcVJhs7!@K7 zi;1NO4Ei{4Vd_{JrG=@%|4FA>F zz4PXzPqum(sCC$9`5aJxGIHIKvnr1N>+33-v{ zxRarCI`rHN_ryOs_1)uJv{$pRY3EI#QsDcavGwvNRay@N2jEa zEobpQJ#EAWxU}B*1=iDoHZa@R@m^rI z8^TMJlE0N|ei%*y6nXnO5cf309iW`x6J^ zgM3e=ib3Z}|KHC)eH>L3btJ5xrOg%dM;)W9|Fit#wd;H1(d6{#kHz)NG(NPaQ}d)n z%4&zXwfc7MmWE$aUkZT;ACXkZ*HZki*ARUn1(&bP_z#PZSA7-WQZk^7BYSb8+->HPt3D_)Xw0sOYq;f02u(GXXk^ct3z zX*y8)rp*#JpSPvmG>+{KI-act(F5p>I_SBAth+cOSjkjNff&kog=MujX7U|n*%!bd zF=hAfNxoQx<=QFkQ>{usQ_9r+zhEr+mjs&5LHzeL+X<7|L|vJ9o)V}Man>EF@5 zws)7G4j=Fl--(6yNe{SI=@lcGf36+v>taMD4nN|V4Q$Abf^Yh*M+jJ`8cQkA9&FHX z?^Y^?kP<3){SOwm80Vkm=^ozV5J0>kEJ$&y5iY^3plPLIhsT@Rq^ky2dZIAApfpv7 z!kRQP4Bz7z=i#C$Ro_3ijm#Er6v#xej(1WZeE)#hw~h@8Ft-rP7H?YH-d2UXY15}- zBEKX&C9_M?(mRAONK(A2K}3XrJo*gG-r)TkGg`@lGukgNww0coz1d@a`dj##;pO%uWejq8`1Tk<)Mv-)slJL0Ls^6HAElg-KvZcyc5 zs1&qvNs>v#`ExV%eRJw)gt4jE&xrL@u4olm6HaY-*5qRfe*d zaoG%qp`0FX)Ha}!jPnFRIxC&Oo>Th%c2cAorjCqbZDk-EW|$}M^jugrS4en~qI;?6 zrzq;Css$>!bhavFwR>t;cOJ>CVCxJUY$^1=IP9I{qURp>AUA#8^F05x=ev{MZyzp( z&ctz+_uOA#0)tP(y~@Ph&I>AKo-tC%JgH>59uV!1Pact})4VThvb$D3w&A9|J)t(+ zu&>>TY_RXr_tiTQZT9t>jBc|3j7`Qut>D(g;{K27F(Fb z7G|-9S$@cwZDAH$n8g-m*##C`n8g-mv4vS|VHR7M#TI6=wlIq=%(8tnwlK><6=soCsnD}H&(weV5STGlTlDEGTfF7z;w{^-@XxO7qD}k% zSKwuHW7z61k8o_Ozu4+8w)%^${$i`Y*y=B~`ped2meHZ zdm4PN8mxT};c7iR!$_2D$qlYs7uME%t0kQ)Nh{t~Guj;aK0ro9e=M1Fm+%o?I(SPMR?~VWf@qxXI diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json deleted file mode 100644 index 6dac52137ef01..0000000000000 --- a/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json +++ /dev/null @@ -1,2866 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": { - } - }, - "index": ".kibana_1", - "mappings": { - "_meta": { - "migrationMappingPropertyHashes": { - "action": "6e96ac5e648f57523879661ea72525b7", - "action_task_params": "a9d49f184ee89641044be0ca2950fa3a", - "alert": "05d57e6963593484582a4de341446974", - "api_key_pending_invalidation": "16f515278a295f6245149ad7c5ddedb7", - "apm-indices": "9bb9b2bf1fa636ed8619cbab5ce6a1dd", - "apm-telemetry": "3d1b76c39bfb2cc8296b024d73854724", - "app_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", - "application_usage_daily": "43b8830d5d0df85a6823d290885fc9fd", - "application_usage_totals": "3d1b76c39bfb2cc8296b024d73854724", - "application_usage_transactional": "3d1b76c39bfb2cc8296b024d73854724", - "canvas-element": "7390014e1091044523666d97247392fc", - "canvas-workpad": "b0a1706d356228dbdcb4a17e6b9eb231", - "canvas-workpad-template": "ae2673f678281e2c055d764b153e9715", - "cases": "7c28a18fbac7c2a4e79449e9802ef476", - "cases-comments": "112cefc2b6737e613a8ef033234755e6", - "cases-configure": "387c5f3a3bda7e0ae0dd4e106f914a69", - "cases-connector-mappings": "6bc7e49411d38be4969dc6aa8bd43776", - "cases-sub-case": "2dc9dbf1fc7144e2b18fffc017358ff9", - "cases-user-actions": "32277330ec6b721abe3b846cfd939a71", - "config": "c63748b75f39d0c54de12d12c1ccbc20", - "core-usage-stats": "3d1b76c39bfb2cc8296b024d73854724", - "coreMigrationVersion": "2f4316de49999235636386fe51dc06c1", - "dashboard": "40554caf09725935e2c02e02563a2d07", - "endpoint:user-artifact": "4a11183eee21e6fbad864f7a30b39ad0", - "endpoint:user-artifact-manifest": "a0d7b04ad405eed54d76e279c3727862", - "enterprise_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", - "epm-packages": "0cbbb16506734d341a96aaed65ec6413", - "epm-packages-assets": "44621b2f6052ef966da47b7c3a00f33b", - "exception-list": "baf108c9934dda844921f692a513adae", - "exception-list-agnostic": "baf108c9934dda844921f692a513adae", - "file-upload-usage-collection-telemetry": "a34fbb8e3263d105044869264860c697", - "fleet-agent-actions": "9511b565b1cc6441a42033db3d5de8e9", - "fleet-agent-events": "e20a508b6e805189356be381dbfac8db", - "fleet-agents": "59fd74f819f028f8555776db198d2562", - "fleet-enrollment-api-keys": "a69ef7ae661dab31561d6c6f052ef2a7", - "graph-workspace": "27a94b2edcb0610c6aea54a7c56d7752", - "index-pattern": "45915a1ad866812242df474eb0479052", - "infrastructure-ui-source": "3d1b76c39bfb2cc8296b024d73854724", - "ingest-agent-policies": "8df93787e2927f227dc80db8b6d309b9", - "ingest-outputs": "8854f34453a47e26f86a29f8f3b80b4e", - "ingest-package-policies": "c91ca97b1ff700f0fc64dc6b13d65a85", - "ingest_manager_settings": "22d4d1288c2687ef6a8f6e83159b4542", - "inventory-view": "3d1b76c39bfb2cc8296b024d73854724", - "kql-telemetry": "d12a98a6f19a2d273696597547e064ee", - "legacy-url-alias": "3d1b76c39bfb2cc8296b024d73854724", - "lens": "52346cfec69ff7b47d5f0c12361a2797", - "lens-ui-telemetry": "509bfa5978586998e05f9e303c07a327", - "map": "9134b47593116d7953f6adba096fc463", - "maps-telemetry": "5ef305b18111b77789afefbd36b66171", - "metrics-explorer-view": "3d1b76c39bfb2cc8296b024d73854724", - "migrationVersion": "4a1746014a75ade3a714e1db5763276f", - "ml-job": "3bb64c31915acf93fc724af137a0891b", - "ml-module": "46ef4f0d6682636f0fff9799d6a2d7ac", - "monitoring-telemetry": "2669d5ec15e82391cf58df4294ee9c68", - "namespace": "2f4316de49999235636386fe51dc06c1", - "namespaces": "2f4316de49999235636386fe51dc06c1", - "originId": "2f4316de49999235636386fe51dc06c1", - "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9", - "references": "7997cf5a56cc02bdc9c93361bde732b0", - "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4", - "search": "db2c00e39b36f40930a3b9fc71c823e1", - "search-session": "33157cf0119e41cd4e7a1d24266beff4", - "search-telemetry": "3d1b76c39bfb2cc8296b024d73854724", - "security-solution-signals-migration": "72761fd374ca11122ac8025a92b84fca", - "siem-detection-engine-rule-actions": "6569b288c169539db10cb262bf79de18", - "siem-detection-engine-rule-status": "ae783f41c6937db6b7a2ef5c93a9e9b0", - "siem-ui-timeline": "3e97beae13cdfc6d62bc1846119f7276", - "siem-ui-timeline-note": "8874706eedc49059d4cf0f5094559084", - "siem-ui-timeline-pinned-event": "20638091112f0e14f0e443d512301c29", - "space": "c5ca8acafa0beaa4d08d014a97b6bc6b", - "spaces-usage-stats": "3d1b76c39bfb2cc8296b024d73854724", - "tag": "83d55da58f6530f7055415717ec06474", - "telemetry": "36a616f7026dfa617d6655df850fe16d", - "timelion-sheet": "9a2a2748877c7a7b582fef201ab1d4cf", - "type": "2f4316de49999235636386fe51dc06c1", - "ui-counter": "0d409297dc5ebe1e3a1da691c6ee32e3", - "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3", - "updated_at": "00da57df13e94e9d98437d13ace4bfe0", - "upgrade-assistant-reindex-operation": "215107c281839ea9b3ad5f6419819763", - "upgrade-assistant-telemetry": "56702cec857e0a9dacfb696655b4ff7b", - "uptime-dynamic-settings": "3d1b76c39bfb2cc8296b024d73854724", - "url": "c7f66a0df8b1b52f17c28c4adb111105", - "visualization": "f819cf6636b75c9e76ba733a0c6ef355", - "workplace_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724" - } - }, - "dynamic": "strict", - "properties": { - "action": { - "properties": { - "actionTypeId": { - "type": "keyword" - }, - "config": { - "enabled": false, - "type": "object" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "secrets": { - "type": "binary" - } - } - }, - "action_task_params": { - "properties": { - "actionId": { - "type": "keyword" - }, - "apiKey": { - "type": "binary" - }, - "params": { - "enabled": false, - "type": "object" - } - } - }, - "alert": { - "properties": { - "actions": { - "properties": { - "actionRef": { - "type": "keyword" - }, - "actionTypeId": { - "type": "keyword" - }, - "group": { - "type": "keyword" - }, - "params": { - "enabled": false, - "type": "object" - } - }, - "type": "nested" - }, - "alertTypeId": { - "type": "keyword" - }, - "apiKey": { - "type": "binary" - }, - "apiKeyOwner": { - "type": "keyword" - }, - "consumer": { - "type": "keyword" - }, - "createdAt": { - "type": "date" - }, - "createdBy": { - "type": "keyword" - }, - "enabled": { - "type": "boolean" - }, - "executionStatus": { - "properties": { - "error": { - "properties": { - "message": { - "type": "keyword" - }, - "reason": { - "type": "keyword" - } - } - }, - "lastExecutionDate": { - "type": "date" - }, - "status": { - "type": "keyword" - } - } - }, - "meta": { - "properties": { - "versionApiKeyLastmodified": { - "type": "keyword" - } - } - }, - "muteAll": { - "type": "boolean" - }, - "mutedInstanceIds": { - "type": "keyword" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "notifyWhen": { - "type": "keyword" - }, - "params": { - "type": "flattened" - }, - "schedule": { - "properties": { - "interval": { - "type": "keyword" - } - } - }, - "scheduledTaskId": { - "type": "keyword" - }, - "tags": { - "type": "keyword" - }, - "throttle": { - "type": "keyword" - }, - "updatedAt": { - "type": "date" - }, - "updatedBy": { - "type": "keyword" - } - } - }, - "api_key_pending_invalidation": { - "properties": { - "apiKeyId": { - "type": "keyword" - }, - "createdAt": { - "type": "date" - } - } - }, - "apm-indices": { - "properties": { - "apm_oss": { - "properties": { - "errorIndices": { - "type": "keyword" - }, - "metricsIndices": { - "type": "keyword" - }, - "onboardingIndices": { - "type": "keyword" - }, - "sourcemapIndices": { - "type": "keyword" - }, - "spanIndices": { - "type": "keyword" - }, - "transactionIndices": { - "type": "keyword" - } - } - } - } - }, - "apm-telemetry": { - "dynamic": "false", - "type": "object" - }, - "app_search_telemetry": { - "dynamic": "false", - "type": "object" - }, - "application_usage_daily": { - "dynamic": "false", - "properties": { - "timestamp": { - "type": "date" - } - } - }, - "application_usage_totals": { - "dynamic": "false", - "type": "object" - }, - "application_usage_transactional": { - "dynamic": "false", - "type": "object" - }, - "canvas-element": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "content": { - "type": "text" - }, - "help": { - "type": "text" - }, - "image": { - "type": "text" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "canvas-workpad": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "canvas-workpad-template": { - "dynamic": "false", - "properties": { - "help": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "name": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "tags": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "template_key": { - "type": "keyword" - } - } - }, - "cases": { - "properties": { - "closed_at": { - "type": "date" - }, - "closed_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "connector": { - "properties": { - "fields": { - "properties": { - "key": { - "type": "text" - }, - "value": { - "type": "text" - } - } - }, - "id": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "type": { - "type": "keyword" - } - } - }, - "created_at": { - "type": "date" - }, - "created_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "description": { - "type": "text" - }, - "external_service": { - "properties": { - "connector_id": { - "type": "keyword" - }, - "connector_name": { - "type": "keyword" - }, - "external_id": { - "type": "keyword" - }, - "external_title": { - "type": "text" - }, - "external_url": { - "type": "text" - }, - "pushed_at": { - "type": "date" - }, - "pushed_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - } - } - }, - "settings": { - "properties": { - "syncAlerts": { - "type": "boolean" - } - } - }, - "status": { - "type": "keyword" - }, - "tags": { - "type": "keyword" - }, - "title": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "updated_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - } - } - }, - "cases-comments": { - "properties": { - "alertId": { - "type": "keyword" - }, - "associationType": { - "type": "keyword" - }, - "comment": { - "type": "text" - }, - "created_at": { - "type": "date" - }, - "created_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "index": { - "type": "keyword" - }, - "pushed_at": { - "type": "date" - }, - "pushed_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "rule": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - } - } - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "updated_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - } - } - }, - "cases-configure": { - "properties": { - "closure_type": { - "type": "keyword" - }, - "connector": { - "properties": { - "fields": { - "properties": { - "key": { - "type": "text" - }, - "value": { - "type": "text" - } - } - }, - "id": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "type": { - "type": "keyword" - } - } - }, - "created_at": { - "type": "date" - }, - "created_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "updated_at": { - "type": "date" - }, - "updated_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - } - } - }, - "cases-connector-mappings": { - "properties": { - "mappings": { - "properties": { - "action_type": { - "type": "keyword" - }, - "source": { - "type": "keyword" - }, - "target": { - "type": "keyword" - } - } - } - } - }, - "cases-sub-case": { - "properties": { - "closed_at": { - "type": "date" - }, - "closed_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "created_at": { - "type": "date" - }, - "created_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "status": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "updated_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - } - } - }, - "cases-user-actions": { - "properties": { - "action": { - "type": "keyword" - }, - "action_at": { - "type": "date" - }, - "action_by": { - "properties": { - "email": { - "type": "keyword" - }, - "full_name": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "action_field": { - "type": "keyword" - }, - "new_value": { - "type": "text" - }, - "old_value": { - "type": "text" - } - } - }, - "config": { - "dynamic": "false", - "properties": { - "buildNum": { - "type": "keyword" - } - } - }, - "core-usage-stats": { - "dynamic": "false", - "type": "object" - }, - "coreMigrationVersion": { - "type": "keyword" - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "doc_values": false, - "index": false, - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "index": false, - "type": "text" - } - } - }, - "optionsJSON": { - "index": false, - "type": "text" - }, - "panelsJSON": { - "index": false, - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "pause": { - "doc_values": false, - "index": false, - "type": "boolean" - }, - "section": { - "doc_values": false, - "index": false, - "type": "integer" - }, - "value": { - "doc_values": false, - "index": false, - "type": "integer" - } - } - }, - "timeFrom": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "timeRestore": { - "doc_values": false, - "index": false, - "type": "boolean" - }, - "timeTo": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "endpoint:user-artifact": { - "properties": { - "body": { - "type": "binary" - }, - "compressionAlgorithm": { - "index": false, - "type": "keyword" - }, - "created": { - "index": false, - "type": "date" - }, - "decodedSha256": { - "index": false, - "type": "keyword" - }, - "decodedSize": { - "index": false, - "type": "long" - }, - "encodedSha256": { - "type": "keyword" - }, - "encodedSize": { - "index": false, - "type": "long" - }, - "encryptionAlgorithm": { - "index": false, - "type": "keyword" - }, - "identifier": { - "type": "keyword" - } - } - }, - "endpoint:user-artifact-manifest": { - "properties": { - "artifacts": { - "properties": { - "artifactId": { - "index": false, - "type": "keyword" - }, - "policyId": { - "index": false, - "type": "keyword" - } - }, - "type": "nested" - }, - "created": { - "index": false, - "type": "date" - }, - "schemaVersion": { - "type": "keyword" - }, - "semanticVersion": { - "index": false, - "type": "keyword" - } - } - }, - "enterprise_search_telemetry": { - "dynamic": "false", - "type": "object" - }, - "epm-packages": { - "properties": { - "es_index_patterns": { - "enabled": false, - "type": "object" - }, - "install_source": { - "type": "keyword" - }, - "install_started_at": { - "type": "date" - }, - "install_status": { - "type": "keyword" - }, - "install_version": { - "type": "keyword" - }, - "installed_es": { - "properties": { - "id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "installed_kibana": { - "properties": { - "id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "internal": { - "type": "boolean" - }, - "name": { - "type": "keyword" - }, - "package_assets": { - "properties": { - "id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "removable": { - "type": "boolean" - }, - "version": { - "type": "keyword" - } - } - }, - "epm-packages-assets": { - "properties": { - "asset_path": { - "type": "keyword" - }, - "data_base64": { - "type": "binary" - }, - "data_utf8": { - "index": false, - "type": "text" - }, - "install_source": { - "type": "keyword" - }, - "media_type": { - "type": "keyword" - }, - "package_name": { - "type": "keyword" - }, - "package_version": { - "type": "keyword" - } - } - }, - "exception-list": { - "properties": { - "_tags": { - "type": "keyword" - }, - "comments": { - "properties": { - "comment": { - "type": "keyword" - }, - "created_at": { - "type": "keyword" - }, - "created_by": { - "type": "keyword" - }, - "id": { - "type": "keyword" - }, - "updated_at": { - "type": "keyword" - }, - "updated_by": { - "type": "keyword" - } - } - }, - "created_at": { - "type": "keyword" - }, - "created_by": { - "type": "keyword" - }, - "description": { - "type": "keyword" - }, - "entries": { - "properties": { - "entries": { - "properties": { - "field": { - "type": "keyword" - }, - "operator": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "value": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - } - } - }, - "field": { - "type": "keyword" - }, - "list": { - "properties": { - "id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - } - }, - "operator": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "value": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - } - } - }, - "immutable": { - "type": "boolean" - }, - "item_id": { - "type": "keyword" - }, - "list_id": { - "type": "keyword" - }, - "list_type": { - "type": "keyword" - }, - "meta": { - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - }, - "os_types": { - "type": "keyword" - }, - "tags": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - }, - "tie_breaker_id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "updated_by": { - "type": "keyword" - }, - "version": { - "type": "keyword" - } - } - }, - "exception-list-agnostic": { - "properties": { - "_tags": { - "type": "keyword" - }, - "comments": { - "properties": { - "comment": { - "type": "keyword" - }, - "created_at": { - "type": "keyword" - }, - "created_by": { - "type": "keyword" - }, - "id": { - "type": "keyword" - }, - "updated_at": { - "type": "keyword" - }, - "updated_by": { - "type": "keyword" - } - } - }, - "created_at": { - "type": "keyword" - }, - "created_by": { - "type": "keyword" - }, - "description": { - "type": "keyword" - }, - "entries": { - "properties": { - "entries": { - "properties": { - "field": { - "type": "keyword" - }, - "operator": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "value": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - } - } - }, - "field": { - "type": "keyword" - }, - "list": { - "properties": { - "id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - } - }, - "operator": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "value": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - } - } - }, - "immutable": { - "type": "boolean" - }, - "item_id": { - "type": "keyword" - }, - "list_id": { - "type": "keyword" - }, - "list_type": { - "type": "keyword" - }, - "meta": { - "type": "keyword" - }, - "name": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - }, - "os_types": { - "type": "keyword" - }, - "tags": { - "fields": { - "text": { - "type": "text" - } - }, - "type": "keyword" - }, - "tie_breaker_id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "updated_by": { - "type": "keyword" - }, - "version": { - "type": "keyword" - } - } - }, - "file-upload-usage-collection-telemetry": { - "properties": { - "file_upload": { - "properties": { - "index_creation_count": { - "type": "long" - } - } - } - } - }, - "fleet-agent-actions": { - "properties": { - "ack_data": { - "type": "text" - }, - "agent_id": { - "type": "keyword" - }, - "created_at": { - "type": "date" - }, - "data": { - "type": "binary" - }, - "policy_id": { - "type": "keyword" - }, - "policy_revision": { - "type": "integer" - }, - "sent_at": { - "type": "date" - }, - "type": { - "type": "keyword" - } - } - }, - "fleet-agent-events": { - "properties": { - "action_id": { - "type": "keyword" - }, - "agent_id": { - "type": "keyword" - }, - "data": { - "type": "text" - }, - "message": { - "type": "text" - }, - "payload": { - "type": "text" - }, - "policy_id": { - "type": "keyword" - }, - "stream_id": { - "type": "keyword" - }, - "subtype": { - "type": "keyword" - }, - "timestamp": { - "type": "date" - }, - "type": { - "type": "keyword" - } - } - }, - "fleet-agents": { - "properties": { - "access_api_key_id": { - "type": "keyword" - }, - "active": { - "type": "boolean" - }, - "current_error_events": { - "index": false, - "type": "text" - }, - "default_api_key": { - "type": "binary" - }, - "default_api_key_id": { - "type": "keyword" - }, - "enrolled_at": { - "type": "date" - }, - "last_checkin": { - "type": "date" - }, - "last_checkin_status": { - "type": "keyword" - }, - "last_updated": { - "type": "date" - }, - "local_metadata": { - "type": "flattened" - }, - "packages": { - "type": "keyword" - }, - "policy_id": { - "type": "keyword" - }, - "policy_revision": { - "type": "integer" - }, - "type": { - "type": "keyword" - }, - "unenrolled_at": { - "type": "date" - }, - "unenrollment_started_at": { - "type": "date" - }, - "updated_at": { - "type": "date" - }, - "upgrade_started_at": { - "type": "date" - }, - "upgraded_at": { - "type": "date" - }, - "user_provided_metadata": { - "type": "flattened" - }, - "version": { - "type": "keyword" - } - } - }, - "fleet-enrollment-api-keys": { - "properties": { - "active": { - "type": "boolean" - }, - "api_key": { - "type": "binary" - }, - "api_key_id": { - "type": "keyword" - }, - "created_at": { - "type": "date" - }, - "expire_at": { - "type": "date" - }, - "name": { - "type": "keyword" - }, - "policy_id": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - } - } - }, - "graph-workspace": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "legacyIndexPatternRef": { - "index": false, - "type": "text" - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "dynamic": "false", - "properties": { - "title": { - "type": "text" - }, - "type": { - "type": "keyword" - } - } - }, - "infrastructure-ui-source": { - "dynamic": "false", - "type": "object" - }, - "ingest-agent-policies": { - "properties": { - "description": { - "type": "text" - }, - "is_default": { - "type": "boolean" - }, - "is_default_fleet_server": { - "type": "boolean" - }, - "is_managed": { - "type": "boolean" - }, - "monitoring_enabled": { - "index": false, - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "namespace": { - "type": "keyword" - }, - "package_policies": { - "type": "keyword" - }, - "revision": { - "type": "integer" - }, - "status": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "updated_by": { - "type": "keyword" - } - } - }, - "ingest-outputs": { - "properties": { - "ca_sha256": { - "index": false, - "type": "keyword" - }, - "config": { - "type": "flattened" - }, - "config_yaml": { - "type": "text" - }, - "fleet_enroll_password": { - "type": "binary" - }, - "fleet_enroll_username": { - "type": "binary" - }, - "hosts": { - "type": "keyword" - }, - "is_default": { - "type": "boolean" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - } - }, - "ingest-package-policies": { - "properties": { - "created_at": { - "type": "date" - }, - "created_by": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "enabled": { - "type": "boolean" - }, - "inputs": { - "enabled": false, - "properties": { - "compiled_input": { - "type": "flattened" - }, - "config": { - "type": "flattened" - }, - "enabled": { - "type": "boolean" - }, - "streams": { - "properties": { - "compiled_stream": { - "type": "flattened" - }, - "config": { - "type": "flattened" - }, - "data_stream": { - "properties": { - "dataset": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - } - }, - "enabled": { - "type": "boolean" - }, - "id": { - "type": "keyword" - }, - "vars": { - "type": "flattened" - } - }, - "type": "nested" - }, - "type": { - "type": "keyword" - }, - "vars": { - "type": "flattened" - } - }, - "type": "nested" - }, - "name": { - "type": "keyword" - }, - "namespace": { - "type": "keyword" - }, - "output_id": { - "type": "keyword" - }, - "package": { - "properties": { - "name": { - "type": "keyword" - }, - "title": { - "type": "keyword" - }, - "version": { - "type": "keyword" - } - } - }, - "policy_id": { - "type": "keyword" - }, - "revision": { - "type": "integer" - }, - "updated_at": { - "type": "date" - }, - "updated_by": { - "type": "keyword" - } - } - }, - "ingest_manager_settings": { - "properties": { - "has_seen_add_data_notice": { - "index": false, - "type": "boolean" - }, - "kibana_ca_sha256": { - "type": "keyword" - }, - "kibana_urls": { - "type": "keyword" - } - } - }, - "inventory-view": { - "dynamic": "false", - "type": "object" - }, - "kql-telemetry": { - "properties": { - "optInCount": { - "type": "long" - }, - "optOutCount": { - "type": "long" - } - } - }, - "legacy-url-alias": { - "dynamic": "false", - "type": "object" - }, - "lens": { - "properties": { - "description": { - "type": "text" - }, - "expression": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "state": { - "type": "flattened" - }, - "title": { - "type": "text" - }, - "visualizationType": { - "type": "keyword" - } - } - }, - "lens-ui-telemetry": { - "properties": { - "count": { - "type": "integer" - }, - "date": { - "type": "date" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - } - }, - "map": { - "properties": { - "bounds": { - "dynamic": "false", - "type": "object" - }, - "description": { - "type": "text" - }, - "layerListJSON": { - "type": "text" - }, - "mapStateJSON": { - "type": "text" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "maps-telemetry": { - "enabled": false, - "type": "object" - }, - "metrics-explorer-view": { - "dynamic": "false", - "type": "object" - }, - "migrationVersion": { - "dynamic": "true", - "properties": { - "config": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "dashboard": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "index-pattern": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "visualization": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "ml-job": { - "properties": { - "datafeed_id": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "job_id": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "type": { - "type": "keyword" - } - } - }, - "ml-module": { - "dynamic": "false", - "properties": { - "datafeeds": { - "type": "object" - }, - "defaultIndexPattern": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "description": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "id": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "jobs": { - "type": "object" - }, - "logo": { - "type": "object" - }, - "query": { - "type": "object" - }, - "title": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - }, - "type": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "monitoring-telemetry": { - "properties": { - "reportedClusterUuids": { - "type": "keyword" - } - } - }, - "namespace": { - "type": "keyword" - }, - "namespaces": { - "type": "keyword" - }, - "originId": { - "type": "keyword" - }, - "query": { - "properties": { - "description": { - "type": "text" - }, - "filters": { - "enabled": false, - "type": "object" - }, - "query": { - "properties": { - "language": { - "type": "keyword" - }, - "query": { - "index": false, - "type": "keyword" - } - } - }, - "timefilter": { - "enabled": false, - "type": "object" - }, - "title": { - "type": "text" - } - } - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "sample-data-telemetry": { - "properties": { - "installCount": { - "type": "long" - }, - "unInstallCount": { - "type": "long" - } - } - }, - "search": { - "properties": { - "columns": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "description": { - "type": "text" - }, - "grid": { - "enabled": false, - "type": "object" - }, - "hideChart": { - "doc_values": false, - "index": false, - "type": "boolean" - }, - "hits": { - "doc_values": false, - "index": false, - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "index": false, - "type": "text" - } - } - }, - "sort": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "search-session": { - "properties": { - "appId": { - "type": "keyword" - }, - "created": { - "type": "date" - }, - "expires": { - "type": "date" - }, - "idMapping": { - "enabled": false, - "type": "object" - }, - "initialState": { - "enabled": false, - "type": "object" - }, - "name": { - "type": "keyword" - }, - "persisted": { - "type": "boolean" - }, - "realmName": { - "type": "keyword" - }, - "realmType": { - "type": "keyword" - }, - "restoreState": { - "enabled": false, - "type": "object" - }, - "sessionId": { - "type": "keyword" - }, - "status": { - "type": "keyword" - }, - "touched": { - "type": "date" - }, - "urlGeneratorId": { - "type": "keyword" - }, - "username": { - "type": "keyword" - } - } - }, - "search-telemetry": { - "dynamic": "false", - "type": "object" - }, - "security-solution-signals-migration": { - "properties": { - "created": { - "index": false, - "type": "date" - }, - "createdBy": { - "index": false, - "type": "text" - }, - "destinationIndex": { - "index": false, - "type": "keyword" - }, - "error": { - "index": false, - "type": "text" - }, - "sourceIndex": { - "type": "keyword" - }, - "status": { - "index": false, - "type": "keyword" - }, - "taskId": { - "index": false, - "type": "keyword" - }, - "updated": { - "index": false, - "type": "date" - }, - "updatedBy": { - "index": false, - "type": "text" - }, - "version": { - "type": "long" - } - } - }, - "server": { - "dynamic": "false", - "type": "object" - }, - "siem-detection-engine-rule-actions": { - "properties": { - "actions": { - "properties": { - "action_type_id": { - "type": "keyword" - }, - "group": { - "type": "keyword" - }, - "id": { - "type": "keyword" - }, - "params": { - "enabled": false, - "type": "object" - } - } - }, - "alertThrottle": { - "type": "keyword" - }, - "ruleAlertId": { - "type": "keyword" - }, - "ruleThrottle": { - "type": "keyword" - } - } - }, - "siem-detection-engine-rule-status": { - "properties": { - "alertId": { - "type": "keyword" - }, - "bulkCreateTimeDurations": { - "type": "float" - }, - "gap": { - "type": "text" - }, - "lastFailureAt": { - "type": "date" - }, - "lastFailureMessage": { - "type": "text" - }, - "lastLookBackDate": { - "type": "date" - }, - "lastSuccessAt": { - "type": "date" - }, - "lastSuccessMessage": { - "type": "text" - }, - "searchAfterTimeDurations": { - "type": "float" - }, - "status": { - "type": "keyword" - }, - "statusDate": { - "type": "date" - } - } - }, - "siem-ui-timeline": { - "properties": { - "columns": { - "properties": { - "aggregatable": { - "type": "boolean" - }, - "category": { - "type": "keyword" - }, - "columnHeaderType": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "example": { - "type": "text" - }, - "id": { - "type": "keyword" - }, - "indexes": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "placeholder": { - "type": "text" - }, - "searchable": { - "type": "boolean" - }, - "type": { - "type": "keyword" - } - } - }, - "created": { - "type": "date" - }, - "createdBy": { - "type": "text" - }, - "dataProviders": { - "properties": { - "and": { - "properties": { - "enabled": { - "type": "boolean" - }, - "excluded": { - "type": "boolean" - }, - "id": { - "type": "keyword" - }, - "kqlQuery": { - "type": "text" - }, - "name": { - "type": "text" - }, - "queryMatch": { - "properties": { - "displayField": { - "type": "text" - }, - "displayValue": { - "type": "text" - }, - "field": { - "type": "text" - }, - "operator": { - "type": "text" - }, - "value": { - "type": "text" - } - } - }, - "type": { - "type": "text" - } - } - }, - "enabled": { - "type": "boolean" - }, - "excluded": { - "type": "boolean" - }, - "id": { - "type": "keyword" - }, - "kqlQuery": { - "type": "text" - }, - "name": { - "type": "text" - }, - "queryMatch": { - "properties": { - "displayField": { - "type": "text" - }, - "displayValue": { - "type": "text" - }, - "field": { - "type": "text" - }, - "operator": { - "type": "text" - }, - "value": { - "type": "text" - } - } - }, - "type": { - "type": "text" - } - } - }, - "dateRange": { - "properties": { - "end": { - "type": "date" - }, - "start": { - "type": "date" - } - } - }, - "description": { - "type": "text" - }, - "eqlOptions": { - "properties": { - "eventCategoryField": { - "type": "text" - }, - "query": { - "type": "text" - }, - "size": { - "type": "text" - }, - "tiebreakerField": { - "type": "text" - }, - "timestampField": { - "type": "text" - } - } - }, - "eventType": { - "type": "keyword" - }, - "excludedRowRendererIds": { - "type": "text" - }, - "favorite": { - "properties": { - "favoriteDate": { - "type": "date" - }, - "fullName": { - "type": "text" - }, - "keySearch": { - "type": "text" - }, - "userName": { - "type": "text" - } - } - }, - "filters": { - "properties": { - "exists": { - "type": "text" - }, - "match_all": { - "type": "text" - }, - "meta": { - "properties": { - "alias": { - "type": "text" - }, - "controlledBy": { - "type": "text" - }, - "disabled": { - "type": "boolean" - }, - "field": { - "type": "text" - }, - "formattedValue": { - "type": "text" - }, - "index": { - "type": "keyword" - }, - "key": { - "type": "keyword" - }, - "negate": { - "type": "boolean" - }, - "params": { - "type": "text" - }, - "type": { - "type": "keyword" - }, - "value": { - "type": "text" - } - } - }, - "missing": { - "type": "text" - }, - "query": { - "type": "text" - }, - "range": { - "type": "text" - }, - "script": { - "type": "text" - } - } - }, - "indexNames": { - "type": "text" - }, - "kqlMode": { - "type": "keyword" - }, - "kqlQuery": { - "properties": { - "filterQuery": { - "properties": { - "kuery": { - "properties": { - "expression": { - "type": "text" - }, - "kind": { - "type": "keyword" - } - } - }, - "serializedQuery": { - "type": "text" - } - } - } - } - }, - "savedQueryId": { - "type": "keyword" - }, - "sort": { - "dynamic": "false", - "properties": { - "columnId": { - "type": "keyword" - }, - "columnType": { - "type": "keyword" - }, - "sortDirection": { - "type": "keyword" - } - } - }, - "status": { - "type": "keyword" - }, - "templateTimelineId": { - "type": "text" - }, - "templateTimelineVersion": { - "type": "integer" - }, - "timelineType": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "updated": { - "type": "date" - }, - "updatedBy": { - "type": "text" - } - } - }, - "siem-ui-timeline-note": { - "properties": { - "created": { - "type": "date" - }, - "createdBy": { - "type": "text" - }, - "eventId": { - "type": "keyword" - }, - "note": { - "type": "text" - }, - "timelineId": { - "type": "keyword" - }, - "updated": { - "type": "date" - }, - "updatedBy": { - "type": "text" - } - } - }, - "siem-ui-timeline-pinned-event": { - "properties": { - "created": { - "type": "date" - }, - "createdBy": { - "type": "text" - }, - "eventId": { - "type": "keyword" - }, - "timelineId": { - "type": "keyword" - }, - "updated": { - "type": "date" - }, - "updatedBy": { - "type": "text" - } - } - }, - "space": { - "properties": { - "_reserved": { - "type": "boolean" - }, - "color": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "disabledFeatures": { - "type": "keyword" - }, - "imageUrl": { - "index": false, - "type": "text" - }, - "initials": { - "type": "keyword" - }, - "name": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "spaces-usage-stats": { - "dynamic": "false", - "type": "object" - }, - "tag": { - "properties": { - "color": { - "type": "text" - }, - "description": { - "type": "text" - }, - "name": { - "type": "text" - } - } - }, - "telemetry": { - "properties": { - "allowChangingOptInStatus": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "lastReported": { - "type": "date" - }, - "lastVersionChecked": { - "type": "keyword" - }, - "reportFailureCount": { - "type": "integer" - }, - "reportFailureVersion": { - "type": "keyword" - }, - "sendUsageFrom": { - "type": "keyword" - }, - "userHasSeenNotice": { - "type": "boolean" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "type": { - "type": "keyword" - }, - "ui-counter": { - "properties": { - "count": { - "type": "integer" - } - } - }, - "ui-metric": { - "properties": { - "count": { - "type": "integer" - } - } - }, - "updated_at": { - "type": "date" - }, - "upgrade-assistant-reindex-operation": { - "properties": { - "errorMessage": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "indexName": { - "type": "keyword" - }, - "lastCompletedStep": { - "type": "long" - }, - "locked": { - "type": "date" - }, - "newIndexName": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "reindexOptions": { - "properties": { - "openAndClose": { - "type": "boolean" - }, - "queueSettings": { - "properties": { - "queuedAt": { - "type": "long" - }, - "startedAt": { - "type": "long" - } - } - } - } - }, - "reindexTaskId": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "reindexTaskPercComplete": { - "type": "float" - }, - "runningReindexCount": { - "type": "integer" - }, - "status": { - "type": "integer" - } - } - }, - "upgrade-assistant-telemetry": { - "properties": { - "features": { - "properties": { - "deprecation_logging": { - "properties": { - "enabled": { - "null_value": true, - "type": "boolean" - } - } - } - } - }, - "ui_open": { - "properties": { - "cluster": { - "null_value": 0, - "type": "long" - }, - "indices": { - "null_value": 0, - "type": "long" - }, - "overview": { - "null_value": 0, - "type": "long" - } - } - }, - "ui_reindex": { - "properties": { - "close": { - "null_value": 0, - "type": "long" - }, - "open": { - "null_value": 0, - "type": "long" - }, - "start": { - "null_value": 0, - "type": "long" - }, - "stop": { - "null_value": 0, - "type": "long" - } - } - } - } - }, - "uptime-dynamic-settings": { - "dynamic": "false", - "type": "object" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "index": false, - "type": "text" - } - } - }, - "savedSearchRefName": { - "doc_values": false, - "index": false, - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "index": false, - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "index": false, - "type": "text" - } - } - }, - "workplace_search_telemetry": { - "dynamic": "false", - "type": "object" - } - } - }, - "settings": { - "index": { - "number_of_replicas": "0", - "number_of_shards": "1" - } - } - } -} \ No newline at end of file diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/data.json b/test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/data.json deleted file mode 100644 index 0c8b35fd3f499..0000000000000 --- a/test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/data.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:title-with-dash", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "my-visualization", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:title-with-asterisk", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "some*visualization", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [] - } - } -} - - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:noise-1", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "Just some noise in the dataset", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:noise-2", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "Just some noise in the dataset", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [] - } - } -} - diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/mappings.json deleted file mode 100644 index e601c43431437..0000000000000 --- a/test/api_integration/fixtures/es_archiver/saved_objects/find_edgecases/mappings.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "number_of_replicas": "1" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "namespace": { - "type": "keyword" - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - } - } -} diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/references/data.json b/test/api_integration/fixtures/es_archiver/saved_objects/references/data.json deleted file mode 100644 index 8b2095972bd4d..0000000000000 --- a/test/api_integration/fixtures/es_archiver/saved_objects/references/data.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:only-ref-1", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "Vis with ref to ref-1", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [ - { - "type": "ref-type", - "id": "ref-1", - "name": "ref-1" - } - ] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:ref-1-and-ref-2", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "Vis with ref to ref-1 and ref-2", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [ - { - "type": "ref-type", - "id": "ref-1", - "name": "ref-1" - }, - { - "type": "ref-type", - "id": "ref-2", - "name": "ref-2" - } - ] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:only-ref-2", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "Vis with ref to ref-2", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [ - { - "type": "ref-type", - "id": "ref-2", - "name": "ref-2" - } - ] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:only-ref-3", - "source": { - "type": "visualization", - "updated_at": "2017-09-21T18:51:23.794Z", - "visualization": { - "title": "Vis with ref to ref-3", - "visState": "{}", - "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", - "description": "", - "version": 1, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" - } - }, - "references": [ - { - "type": "ref-type", - "id": "ref-3", - "name": "ref-3" - } - ] - } - } -} diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/references/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/references/mappings.json deleted file mode 100644 index e601c43431437..0000000000000 --- a/test/api_integration/fixtures/es_archiver/saved_objects/references/mappings.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "number_of_replicas": "1" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "namespace": { - "type": "keyword" - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - } - } -} diff --git a/test/api_integration/fixtures/kbn_archiver/management/saved_objects/relationships.json b/test/api_integration/fixtures/kbn_archiver/management/saved_objects/relationships.json new file mode 100644 index 0000000000000..da2241952ca37 --- /dev/null +++ b/test/api_integration/fixtures/kbn_archiver/management/saved_objects/relationships.json @@ -0,0 +1,200 @@ +{ + "attributes": { + "description": "", + "hits": 0, + "timelion_chart_height": 275, + "timelion_columns": 2, + "timelion_interval": "auto", + "timelion_rows": 2, + "timelion_sheet": [ + ".es(*)" + ], + "title": "New TimeLion Sheet", + "version": 1 + }, + "coreMigrationVersion": "8.0.0", + "id": "190f3e90-2ec3-11e8-ba48-69fc4e41e1f6", + "references": [], + "type": "timelion-sheet", + "updated_at": "2018-03-23T17:53:30.872Z", + "version": "WzgsMl0=" +} + +{ + "attributes": { + "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "title": "saved_objects*" + }, + "coreMigrationVersion": "8.0.0", + "id": "8963ca30-3224-11e8-a572-ffca06da1357", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-03-28T01:08:34.290Z", + "version": "WzksMl0=" +} + +{ + "attributes": { + "columns": [ + "_source" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"id:3\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "_score", + "desc" + ] + ], + "title": "OneRecord", + "version": 1 + }, + "coreMigrationVersion": "8.0.0", + "id": "960372e0-3224-11e8-a572-ffca06da1357", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "8963ca30-3224-11e8-a572-ffca06da1357", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2018-03-28T01:08:55.182Z", + "version": "WzExLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "savedSearchRefName": "search_0", + "title": "VisualizationFromSavedSearch", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"VisualizationFromSavedSearch\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "a42c0580-3224-11e8-a572-ffca06da1357", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "960372e0-3224-11e8-a572-ffca06da1357", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2018-03-28T01:09:18.936Z", + "version": "WzEyLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Visualization\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "add810b0-3224-11e8-a572-ffca06da1357", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "8963ca30-3224-11e8-a572-ffca06da1357", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-03-28T01:09:35.163Z", + "version": "WzEzLDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.0.0-alpha1\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0\"},{\"version\":\"7.0.0-alpha1\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"}]", + "timeRestore": false, + "title": "Dashboard", + "version": 1 + }, + "coreMigrationVersion": "8.0.0", + "id": "b70c7ae0-3224-11e8-a572-ffca06da1357", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "add810b0-3224-11e8-a572-ffca06da1357", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "a42c0580-3224-11e8-a572-ffca06da1357", + "name": "panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-03-28T01:09:50.606Z", + "version": "WzE0LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" + }, + "optionsJSON": "{}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "Dashboard", + "version": 1 + }, + "coreMigrationVersion": "8.0.0", + "id": "invalid-refs", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "add810b0-3224-11e8-a572-ffca06da1357", + "name": "valid-ref", + "type": "visualization" + }, + { + "id": "invalid-vis", + "name": "missing-ref", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-03-28T01:09:50.606Z", + "version": "WzE1LDJd" +} \ No newline at end of file diff --git a/test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json b/test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json new file mode 100644 index 0000000000000..4f343b81cd402 --- /dev/null +++ b/test/api_integration/fixtures/kbn_archiver/saved_objects/basic.json @@ -0,0 +1,97 @@ +{ + "attributes": { + "buildNum": 8467, + "defaultIndex": "91200a00-9efd-11e7-acb3-3dab96693fab" + }, + "coreMigrationVersion": "7.14.0", + "id": "7.0.0-alpha1", + "migrationVersion": { + "config": "7.13.0" + }, + "references": [], + "type": "config", + "updated_at": "2017-09-21T18:49:16.302Z", + "version": "WzksMl0=" +} + +{ + "attributes": { + "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "7.14.0", + "id": "91200a00-9efd-11e7-acb3-3dab96693fab", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2017-09-21T18:49:16.270Z", + "version": "WzgsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Count of requests", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{\"title\":\"Count of requests\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "dd7caf20-9efd-11e7-acb3-3dab96693fab", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "91200a00-9efd-11e7-acb3-3dab96693fab", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzEwLDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":12,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Wed Sep 16 2015 22:52:17 GMT-0700", + "timeRestore": true, + "timeTo": "Fri Sep 18 2015 12:24:38 GMT-0700", + "title": "Requests", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "be3733a0-9efe-11e7-acb3-3dab96693fab", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "dd7caf20-9efd-11e7-acb3-3dab96693fab", + "name": "1:panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2017-09-21T18:57:40.826Z", + "version": "WzExLDJd" +} \ No newline at end of file diff --git a/test/api_integration/fixtures/kbn_archiver/saved_objects/basic/foo-ns.json b/test/api_integration/fixtures/kbn_archiver/saved_objects/basic/foo-ns.json new file mode 100644 index 0000000000000..736abf331d314 --- /dev/null +++ b/test/api_integration/fixtures/kbn_archiver/saved_objects/basic/foo-ns.json @@ -0,0 +1,97 @@ +{ + "attributes": { + "buildNum": 8467, + "defaultIndex": "91200a00-9efd-11e7-acb3-3dab96693fab" + }, + "coreMigrationVersion": "7.14.0", + "id": "7.0.0-alpha1", + "migrationVersion": { + "config": "7.13.0" + }, + "references": [], + "type": "config", + "updated_at": "2017-09-21T18:49:16.302Z", + "version": "WzEzLDJd" +} + +{ + "attributes": { + "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "7.14.0", + "id": "91200a00-9efd-11e7-acb3-3dab96693fab", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2017-09-21T18:49:16.270Z", + "version": "WzEyLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Count of requests", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{\"title\":\"Count of requests\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "dd7caf20-9efd-11e7-acb3-3dab96693fab", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "91200a00-9efd-11e7-acb3-3dab96693fab", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzE0LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":12,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Wed Sep 16 2015 22:52:17 GMT-0700", + "timeRestore": true, + "timeTo": "Fri Sep 18 2015 12:24:38 GMT-0700", + "title": "Requests", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "be3733a0-9efe-11e7-acb3-3dab96693fab", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "dd7caf20-9efd-11e7-acb3-3dab96693fab", + "name": "1:panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2017-09-21T18:57:40.826Z", + "version": "WzE1LDJd" +} \ No newline at end of file diff --git a/test/api_integration/fixtures/kbn_archiver/saved_objects/find_edgecases.json b/test/api_integration/fixtures/kbn_archiver/saved_objects/find_edgecases.json new file mode 100644 index 0000000000000..7b181e10b958f --- /dev/null +++ b/test/api_integration/fixtures/kbn_archiver/saved_objects/find_edgecases.json @@ -0,0 +1,87 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "Just some noise in the dataset", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "noise-1", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "Just some noise in the dataset", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "noise-2", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzcsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "some*visualization", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "title-with-asterisk", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzUsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "my-visualization", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "title-with-dash", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzQsMl0=" +} \ No newline at end of file diff --git a/test/api_integration/fixtures/kbn_archiver/saved_objects/references.json b/test/api_integration/fixtures/kbn_archiver/saved_objects/references.json new file mode 100644 index 0000000000000..1da6ed3731e32 --- /dev/null +++ b/test/api_integration/fixtures/kbn_archiver/saved_objects/references.json @@ -0,0 +1,116 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "Vis with ref to ref-1", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "only-ref-1", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "ref-1", + "name": "ref-1", + "type": "ref-type" + } + ], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzQsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "Vis with ref to ref-2", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "only-ref-2", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "ref-2", + "name": "ref-2", + "type": "ref-type" + } + ], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzYsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "Vis with ref to ref-3", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "only-ref-3", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "ref-3", + "name": "ref-3", + "type": "ref-type" + } + ], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzcsMl0=" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "title": "Vis with ref to ref-1 and ref-2", + "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", + "version": 1, + "visState": "{}" + }, + "coreMigrationVersion": "8.0.0", + "id": "ref-1-and-ref-2", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "ref-1", + "name": "ref-1", + "type": "ref-type" + }, + { + "id": "ref-2", + "name": "ref-2", + "type": "ref-type" + } + ], + "type": "visualization", + "updated_at": "2017-09-21T18:51:23.794Z", + "version": "WzUsMl0=" +} \ No newline at end of file diff --git a/x-pack/test/api_integration/apis/kibana/kql_telemetry/kql_telemetry.js b/x-pack/test/api_integration/apis/kibana/kql_telemetry/kql_telemetry.js index 8c67f3a42721f..95a65de81e85b 100644 --- a/x-pack/test/api_integration/apis/kibana/kql_telemetry/kql_telemetry.js +++ b/x-pack/test/api_integration/apis/kibana/kql_telemetry/kql_telemetry.js @@ -10,12 +10,8 @@ import expect from '@kbn/expect'; export default function ({ getService }) { const supertestNoAuth = getService('supertestWithoutAuth'); const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); describe('telemetry API', () => { - before(() => esArchiver.load('empty_kibana')); - after(() => esArchiver.unload('empty_kibana')); - describe('no auth', () => { it('should return 401', async () => { return supertestNoAuth From 832e2de23e6f7f99ce5b510a8ce4d68ea2cfee11 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Wed, 26 May 2021 14:24:40 -0700 Subject: [PATCH 4/6] Update suggestions tests Signed-off-by: Tyler Smalley --- .../apis/suggestions/suggestions.js | 5 +- .../index_patterns/basic_kibana/data.json | 15 -- .../index_patterns/basic_kibana/mappings.json | 253 ------------------ .../index_patterns/basic_kibana.json | 15 ++ 4 files changed, 18 insertions(+), 270 deletions(-) delete mode 100644 test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/data.json delete mode 100644 test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/mappings.json create mode 100644 test/api_integration/fixtures/kbn_archiver/index_patterns/basic_kibana.json diff --git a/test/api_integration/apis/suggestions/suggestions.js b/test/api_integration/apis/suggestions/suggestions.js index 39cff3cb2d745..b3c8ae238450c 100644 --- a/test/api_integration/apis/suggestions/suggestions.js +++ b/test/api_integration/apis/suggestions/suggestions.js @@ -8,16 +8,17 @@ export default function ({ getService }) { const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const supertest = getService('supertest'); describe('Suggestions API', function () { before(async () => { await esArchiver.load('index_patterns/basic_index'); - await esArchiver.load('index_patterns/basic_kibana'); + await kibanaServer.importExport.load('index_patterns/basic_kibana'); }); after(async () => { await esArchiver.unload('index_patterns/basic_index'); - await esArchiver.unload('index_patterns/basic_kibana'); + await kibanaServer.importExport.unload('index_patterns/basic_kibana'); }); it('should return 200 with special characters', () => diff --git a/test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/data.json b/test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/data.json deleted file mode 100644 index 54276b59dcc23..0000000000000 --- a/test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/data.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "index-pattern:91200a00-9efd-11e7-acb3-3dab96693fab", - "source": { - "type": "index-pattern", - "updated_at": "2017-09-21T18:49:16.270Z", - "index-pattern": { - "title": "basic_index", - "fields": "[{\"name\":\"bar\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"baz\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"baz.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"foo\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"nestedField.child\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"nested\":{\"path\":\"nestedField\"}}}]" - } - } - } -} diff --git a/test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/mappings.json b/test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/mappings.json deleted file mode 100644 index 99264d7ebbff8..0000000000000 --- a/test/api_integration/fixtures/es_archiver/index_patterns/basic_kibana/mappings.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "number_of_replicas": "1" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "namespace": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - } - } -} diff --git a/test/api_integration/fixtures/kbn_archiver/index_patterns/basic_kibana.json b/test/api_integration/fixtures/kbn_archiver/index_patterns/basic_kibana.json new file mode 100644 index 0000000000000..2fff00dd22664 --- /dev/null +++ b/test/api_integration/fixtures/kbn_archiver/index_patterns/basic_kibana.json @@ -0,0 +1,15 @@ +{ + "attributes": { + "fields": "[{\"name\":\"bar\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"baz\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"baz.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"foo\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"nestedField.child\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"nested\":{\"path\":\"nestedField\"}}}]", + "title": "basic_index" + }, + "coreMigrationVersion": "7.14.0", + "id": "91200a00-9efd-11e7-acb3-3dab96693fab", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2017-09-21T18:49:16.270Z", + "version": "WzEsMl0=" +} \ No newline at end of file From 034365533055d13a3766cf9fd0cbf28e8bb5eee9 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Wed, 26 May 2021 16:37:31 -0700 Subject: [PATCH 5/6] Fix build Signed-off-by: Tyler Smalley --- test/scripts/jenkins_build_kibana.sh | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/test/scripts/jenkins_build_kibana.sh b/test/scripts/jenkins_build_kibana.sh index 1bf0bc04efbc6..d2e0fece46cf6 100755 --- a/test/scripts/jenkins_build_kibana.sh +++ b/test/scripts/jenkins_build_kibana.sh @@ -38,5 +38,25 @@ node scripts/ship_ci_stats \ --metrics target/optimizer_bundle_metrics.json \ --metrics packages/kbn-ui-shared-deps/target/metrics.json +linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')" +installDir="$KIBANA_DIR/install/kibana" +mkdir -p "$installDir" +tar -xzf "$linuxBuild" -C "$installDir" --strip=1 + +mkdir -p "$WORKSPACE/kibana-build" +cp -pR install/kibana/. $WORKSPACE/kibana-build/ +cp "$linuxBuild" "$WORKSPACE/kibana-default.tar.gz" + mkdir -p "$WORKSPACE/kibana-build" -cp -pR build/default/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build/ +cp -pR install/kibana/. $WORKSPACE/kibana-build/ + +echo " -> Archive built plugins" +shopt -s globstar +tar -zcf \ + "$WORKSPACE/kibana-default-plugins.tar.gz" \ + x-pack/plugins/**/target/public \ + x-pack/test/**/target/public \ + examples/**/target/public \ + x-pack/examples/**/target/public \ + test/**/target/public +shopt -u globstar From ffe39289d9d837401d3893883f92c0a6be5efcfc Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Thu, 27 May 2021 22:28:19 -0700 Subject: [PATCH 6/6] More migrations to kbnArchiver Signed-off-by: Tyler Smalley --- test/examples/config.js | 3 + test/examples/embeddables/dashboard.ts | 5 +- .../apps/dashboard/copy_panel_to.ts | 4 +- .../dashboard/create_and_add_embeddables.ts | 5 +- .../apps/dashboard/dashboard_back_button.ts | 5 +- .../dashboard/dashboard_error_handling.ts | 10 +- .../apps/dashboard/dashboard_filter_bar.ts | 9 +- .../apps/dashboard/dashboard_filtering.ts | 4 +- .../apps/dashboard/dashboard_grid.ts | 5 +- .../apps/dashboard/dashboard_options.ts | 5 +- .../apps/dashboard/dashboard_query_bar.ts | 4 +- .../apps/dashboard/dashboard_saved_query.ts | 5 +- .../apps/dashboard/dashboard_snapshots.ts | 4 +- .../dashboard/dashboard_unsaved_listing.ts | 5 +- .../apps/dashboard/dashboard_unsaved_state.ts | 5 +- .../apps/dashboard/data_shared_attributes.ts | 5 +- .../dashboard/edit_embeddable_redirects.ts | 5 +- .../apps/dashboard/edit_visualizations.js | 5 +- test/functional/apps/dashboard/embed_mode.ts | 5 +- .../apps/dashboard/embeddable_data_grid.ts | 4 +- .../apps/dashboard/embeddable_library.ts | 5 +- .../apps/dashboard/embeddable_rendering.ts | 4 +- .../apps/dashboard/empty_dashboard.ts | 4 +- .../apps/dashboard/full_screen_mode.ts | 5 +- test/functional/apps/dashboard/legacy_urls.ts | 5 +- .../apps/dashboard/panel_expand_toggle.ts | 5 +- .../apps/dashboard/saved_search_embeddable.ts | 4 +- test/functional/apps/dashboard/share.ts | 5 +- test/functional/apps/dashboard/time_zones.ts | 4 +- .../apps/dashboard/url_field_formatter.ts | 5 +- test/functional/apps/dashboard/view_edit.ts | 5 +- .../dashboard/current/kibana/data.json.gz | Bin 20860 -> 0 bytes .../dashboard/current/kibana/mappings.json | 490 --- .../export_transform/data.json | 141 - .../export_transform/mappings.json | 499 --- .../hidden_types/mappings.json | 518 ---- .../dashboard/current/kibana.json | 2699 +++++++++++++++++ .../export_transform.json | 91 + .../hidden_types.json} | 103 +- test/plugin_functional/config.ts | 5 +- .../test_suites/core/deprecations.ts | 4 +- .../custom_visualizations/index.js | 4 +- .../test_suites/data_plugin/index.ts | 4 +- .../test_suites/data_plugin/session.ts | 11 +- .../test_suites/doc_views/index.ts | 2 +- .../test_suites/panel_actions/index.js | 19 +- .../saved_objects_hidden_type/delete.ts | 30 +- .../saved_objects_hidden_type/export.ts | 31 +- .../saved_objects_hidden_type/find.ts | 30 +- .../saved_objects_hidden_type/import.ts | 30 +- .../resolve_import_errors.ts | 30 +- .../bulk/hidden_saved_objects.ndjson | 4 + .../export_transform.ts | 15 +- .../saved_objects_management/find.ts | 32 +- .../saved_objects_management/get.ts | 32 +- .../saved_objects_management/hidden_types.ts | 17 +- .../saved_objects_management/scroll_count.ts | 31 +- .../getting_started/shakespeare/mappings.json | 4 +- .../bwc_generation_urls.ts | 8 +- .../reporting_and_security/usage.ts | 8 +- 60 files changed, 3165 insertions(+), 1880 deletions(-) delete mode 100644 test/functional/fixtures/es_archiver/dashboard/current/kibana/data.json.gz delete mode 100644 test/functional/fixtures/es_archiver/dashboard/current/kibana/mappings.json delete mode 100644 test/functional/fixtures/es_archiver/saved_objects_management/export_transform/data.json delete mode 100644 test/functional/fixtures/es_archiver/saved_objects_management/export_transform/mappings.json delete mode 100644 test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/mappings.json create mode 100644 test/functional/fixtures/kbn_archiver/dashboard/current/kibana.json create mode 100644 test/functional/fixtures/kbn_archiver/saved_objects_management/export_transform.json rename test/functional/fixtures/{es_archiver/saved_objects_management/hidden_types/data.json => kbn_archiver/saved_objects_management/hidden_types.json} (50%) create mode 100644 test/plugin_functional/test_suites/saved_objects_management/bulk/hidden_saved_objects.ndjson diff --git a/test/examples/config.js b/test/examples/config.js index 1ee095fbdedeb..fc62f185fb682 100644 --- a/test/examples/config.js +++ b/test/examples/config.js @@ -50,6 +50,9 @@ export default async function ({ readConfigFile }) { esArchiver: { directory: path.resolve(__dirname, '../es_archives'), }, + kbnArchiver: { + directory: path.resolve(__dirname, '../functional/fixtures/kbn_archiver'), + }, screenshots: functionalConfig.get('screenshots'), junit: { reportName: 'Example plugin functional tests', diff --git a/test/examples/embeddables/dashboard.ts b/test/examples/embeddables/dashboard.ts index 597846ab6a43d..553ebe126070e 100644 --- a/test/examples/embeddables/dashboard.ts +++ b/test/examples/embeddables/dashboard.ts @@ -93,6 +93,7 @@ export const testDashboardInput = { // eslint-disable-next-line import/no-default-export export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) { const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); const pieChart = getService('pieChart'); const browser = getService('browser'); @@ -102,12 +103,14 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide describe('dashboard container', () => { before(async () => { await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/dashboard/current/data'); - await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await PageObjects.common.navigateToApp('dashboardEmbeddableExamples'); await testSubjects.click('dashboardEmbeddableByValue'); await updateInput(JSON.stringify(testDashboardInput, null, 4)); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('pie charts', async () => { await pieChart.expectPieSliceCount(5); }); diff --git a/test/functional/apps/dashboard/copy_panel_to.ts b/test/functional/apps/dashboard/copy_panel_to.ts index 641d520801c4d..8eab23e416bca 100644 --- a/test/functional/apps/dashboard/copy_panel_to.ts +++ b/test/functional/apps/dashboard/copy_panel_to.ts @@ -14,7 +14,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const dashboardPanelActions = getService('dashboardPanelActions'); const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); - const esArchiver = getService('esArchiver'); const find = getService('find'); const PageObjects = getPageObjects([ @@ -40,7 +39,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('dashboard panel copy to', function viewEditModeTests() { before(async function () { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -61,6 +60,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async function () { await PageObjects.dashboard.gotoDashboardLandingPage(); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); it('does not show the new dashboard option when on a new dashboard', async () => { diff --git a/test/functional/apps/dashboard/create_and_add_embeddables.ts b/test/functional/apps/dashboard/create_and_add_embeddables.ts index 3de3b2f843f55..73c877007571e 100644 --- a/test/functional/apps/dashboard/create_and_add_embeddables.ts +++ b/test/functional/apps/dashboard/create_and_add_embeddables.ts @@ -16,13 +16,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']); const browser = getService('browser'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardAddPanel = getService('dashboardAddPanel'); describe('create and add embeddables', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -31,6 +30,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.loadSavedDashboard('few panels'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + describe('add new visualization link', () => { it('adds new visualization via the top nav link', async () => { const originalPanelCount = await PageObjects.dashboard.getPanelCount(); diff --git a/test/functional/apps/dashboard/dashboard_back_button.ts b/test/functional/apps/dashboard/dashboard_back_button.ts index 7e0bf92e3292a..7008fa101e0b5 100644 --- a/test/functional/apps/dashboard/dashboard_back_button.ts +++ b/test/functional/apps/dashboard/dashboard_back_button.ts @@ -10,14 +10,13 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['dashboard', 'header', 'common', 'visualize', 'timePicker']); const browser = getService('browser'); describe('dashboard back button', () => { before(async () => { - await esArchiver.loadIfNeeded('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -25,6 +24,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.preserveCrossAppState(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('after navigation from listing page to dashboard back button works', async () => { await PageObjects.dashboard.gotoDashboardLandingPage(); await PageObjects.dashboard.loadSavedDashboard('dashboard with everything'); diff --git a/test/functional/apps/dashboard/dashboard_error_handling.ts b/test/functional/apps/dashboard/dashboard_error_handling.ts index 5d3d8bd251d63..b3ef9f40455d7 100644 --- a/test/functional/apps/dashboard/dashboard_error_handling.ts +++ b/test/functional/apps/dashboard/dashboard_error_handling.ts @@ -9,7 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['dashboard', 'header', 'common']); const browser = getService('browser'); const testSubjects = getService('testSubjects'); @@ -19,10 +19,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { */ describe('dashboard error handling', () => { before(async () => { - await esArchiver.loadIfNeeded('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await PageObjects.common.navigateToApp('dashboard'); + await kibanaServer.savedObjects.delete({ + type: 'index-pattern', + id: 'to-be-removed', + }); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + // wrapping into own describe to make sure new tab is cleaned up even if test failed // see: https://github.com/elastic/kibana/pull/67280#discussion_r430528122 describe('recreate index pattern link works', () => { diff --git a/test/functional/apps/dashboard/dashboard_filter_bar.ts b/test/functional/apps/dashboard/dashboard_filter_bar.ts index c2d6cc4c38b6b..ad6aa9fa69e21 100644 --- a/test/functional/apps/dashboard/dashboard_filter_bar.ts +++ b/test/functional/apps/dashboard/dashboard_filter_bar.ts @@ -17,7 +17,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const filterBar = getService('filterBar'); const pieChart = getService('pieChart'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const browser = getService('browser'); const PageObjects = getPageObjects([ @@ -31,13 +30,15 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('dashboard filter bar', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); await PageObjects.common.navigateToApp('dashboard'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + describe('Add a filter bar', function () { before(async () => { await PageObjects.dashboard.gotoDashboardLandingPage(); @@ -200,6 +201,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('bad filters are loaded properly', function () { before(async () => { + await kibanaServer.savedObjects.delete({ + type: 'index-pattern', + id: 'to-be-removed', + }); await filterBar.ensureFieldEditorModalIsClosed(); await PageObjects.dashboard.gotoDashboardLandingPage(); await PageObjects.dashboard.loadSavedDashboard('dashboard with bad filters'); diff --git a/test/functional/apps/dashboard/dashboard_filtering.ts b/test/functional/apps/dashboard/dashboard_filtering.ts index 86c57efec818b..b60df350aaa99 100644 --- a/test/functional/apps/dashboard/dashboard_filtering.ts +++ b/test/functional/apps/dashboard/dashboard_filtering.ts @@ -22,7 +22,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const renderable = getService('renderable'); const testSubjects = getService('testSubjects'); const filterBar = getService('filterBar'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const security = getService('security'); const dashboardPanelActions = getService('dashboardPanelActions'); @@ -54,7 +53,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }; before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader', 'animals']); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', @@ -66,6 +65,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await security.testUser.restoreDefaults(); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); describe('adding a filter that excludes all data', () => { diff --git a/test/functional/apps/dashboard/dashboard_grid.ts b/test/functional/apps/dashboard/dashboard_grid.ts index 809fb6fc14001..0812cef9aec57 100644 --- a/test/functional/apps/dashboard/dashboard_grid.ts +++ b/test/functional/apps/dashboard/dashboard_grid.ts @@ -12,14 +12,13 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); const PageObjects = getPageObjects(['common', 'dashboard']); describe('dashboard grid', function () { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -29,6 +28,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.switchToEditMode(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + describe('move panel', () => { // Specific test after https://github.com/elastic/kibana/issues/14764 fix it('Can move panel from bottom to top row', async () => { diff --git a/test/functional/apps/dashboard/dashboard_options.ts b/test/functional/apps/dashboard/dashboard_options.ts index 1f62256a3fdb5..173854f677472 100644 --- a/test/functional/apps/dashboard/dashboard_options.ts +++ b/test/functional/apps/dashboard/dashboard_options.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['common', 'dashboard']); @@ -20,7 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { let originalTitles: string[] = []; before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -31,6 +30,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { originalTitles = await PageObjects.dashboard.getPanelTitles(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('should be able to hide all panel titles', async () => { await PageObjects.dashboard.checkHideTitle(); await retry.try(async () => { diff --git a/test/functional/apps/dashboard/dashboard_query_bar.ts b/test/functional/apps/dashboard/dashboard_query_bar.ts index bf8300defc445..780c275f822d9 100644 --- a/test/functional/apps/dashboard/dashboard_query_bar.ts +++ b/test/functional/apps/dashboard/dashboard_query_bar.ts @@ -20,7 +20,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('dashboard query bar', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -29,6 +29,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.loadSavedDashboard('dashboard with filter'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('causes panels to reload when refresh is clicked', async () => { await esArchiver.unload('dashboard/current/data'); diff --git a/test/functional/apps/dashboard/dashboard_saved_query.ts b/test/functional/apps/dashboard/dashboard_saved_query.ts index 307c34d3f3c43..7e7c82d3542b3 100644 --- a/test/functional/apps/dashboard/dashboard_saved_query.ts +++ b/test/functional/apps/dashboard/dashboard_saved_query.ts @@ -11,7 +11,6 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['common', 'dashboard', 'timePicker']); const browser = getService('browser'); @@ -21,13 +20,15 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('dashboard saved queries', function describeIndexTests() { before(async function () { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); await PageObjects.common.navigateToApp('dashboard'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + describe('saved query management component functionality', function () { before(async () => { await PageObjects.dashboard.gotoDashboardLandingPage(); diff --git a/test/functional/apps/dashboard/dashboard_snapshots.ts b/test/functional/apps/dashboard/dashboard_snapshots.ts index c93636aeb63c6..a56897732b007 100644 --- a/test/functional/apps/dashboard/dashboard_snapshots.ts +++ b/test/functional/apps/dashboard/dashboard_snapshots.ts @@ -18,14 +18,13 @@ export default function ({ const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'common', 'timePicker']); const screenshot = getService('screenshots'); const browser = getService('browser'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); const dashboardAddPanel = getService('dashboardAddPanel'); describe('dashboard snapshots', function describeIndexTests() { before(async function () { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -38,6 +37,7 @@ export default function ({ after(async function () { await browser.setWindowSize(1300, 900); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); it('compare TSVB snapshot', async () => { diff --git a/test/functional/apps/dashboard/dashboard_unsaved_listing.ts b/test/functional/apps/dashboard/dashboard_unsaved_listing.ts index 1cdc4bbff2c53..b7eccb9a7c02d 100644 --- a/test/functional/apps/dashboard/dashboard_unsaved_listing.ts +++ b/test/functional/apps/dashboard/dashboard_unsaved_listing.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardAddPanel = getService('dashboardAddPanel'); const dashboardPanelActions = getService('dashboardPanelActions'); @@ -36,7 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }; before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -44,6 +43,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.preserveCrossAppState(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('lists unsaved changes to existing dashboards', async () => { await PageObjects.dashboard.loadSavedDashboard(dashboardTitle); await PageObjects.dashboard.switchToEditMode(); diff --git a/test/functional/apps/dashboard/dashboard_unsaved_state.ts b/test/functional/apps/dashboard/dashboard_unsaved_state.ts index fd203cd8c1356..8fd153e10e7df 100644 --- a/test/functional/apps/dashboard/dashboard_unsaved_state.ts +++ b/test/functional/apps/dashboard/dashboard_unsaved_state.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']); - const esArchiver = getService('esArchiver'); const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); const dashboardAddPanel = getService('dashboardAddPanel'); @@ -23,7 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // FLAKY: https://github.com/elastic/kibana/issues/91191 describe.skip('dashboard unsaved panels', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -34,6 +33,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { originalPanelCount = await PageObjects.dashboard.getPanelCount(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('does not show unsaved changes badge when there are no unsaved changes', async () => { await testSubjects.missingOrFail('dashboardUnsavedChangesBadge'); }); diff --git a/test/functional/apps/dashboard/data_shared_attributes.ts b/test/functional/apps/dashboard/data_shared_attributes.ts index 2d6396be80f46..a5505f08e7dbb 100644 --- a/test/functional/apps/dashboard/data_shared_attributes.ts +++ b/test/functional/apps/dashboard/data_shared_attributes.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); const PageObjects = getPageObjects(['common', 'dashboard', 'timePicker']); @@ -21,7 +20,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { let originalPanelTitles: string[]; before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -31,6 +30,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.waitForRenderComplete(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('should have time picker with data-shared-timefilter-duration', async () => { await retry.try(async () => { const sharedData = await PageObjects.timePicker.getTimeDurationForSharing(); diff --git a/test/functional/apps/dashboard/edit_embeddable_redirects.ts b/test/functional/apps/dashboard/edit_embeddable_redirects.ts index be540e18a503f..ff6fb0ef74d93 100644 --- a/test/functional/apps/dashboard/edit_embeddable_redirects.ts +++ b/test/functional/apps/dashboard/edit_embeddable_redirects.ts @@ -12,14 +12,13 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); const dashboardAddPanel = getService('dashboardAddPanel'); describe('edit embeddable redirects', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -29,6 +28,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.switchToEditMode(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('redirects via save and return button after edit', async () => { await dashboardPanelActions.openContextMenu(); await dashboardPanelActions.clickEdit(); diff --git a/test/functional/apps/dashboard/edit_visualizations.js b/test/functional/apps/dashboard/edit_visualizations.js index b2f21aefcf79c..7a8708cfe418b 100644 --- a/test/functional/apps/dashboard/edit_visualizations.js +++ b/test/functional/apps/dashboard/edit_visualizations.js @@ -10,7 +10,6 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'common', 'visEditor']); - const esArchiver = getService('esArchiver'); const testSubjects = getService('testSubjects'); const appsMenu = getService('appsMenu'); const kibanaServer = getService('kibanaServer'); @@ -44,13 +43,15 @@ export default function ({ getService, getPageObjects }) { describe('edit visualizations from dashboard', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); await PageObjects.common.navigateToApp('dashboard'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('save button returns to dashboard after editing visualization with changes saved', async () => { const title = 'test save'; await PageObjects.dashboard.gotoDashboardLandingPage(); diff --git a/test/functional/apps/dashboard/embed_mode.ts b/test/functional/apps/dashboard/embed_mode.ts index b96e957262573..0924959e8b1e7 100644 --- a/test/functional/apps/dashboard/embed_mode.ts +++ b/test/functional/apps/dashboard/embed_mode.ts @@ -13,7 +13,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const retry = getService('retry'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['dashboard', 'common']); const browser = getService('browser'); @@ -28,7 +27,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ]; before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -37,6 +36,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.loadSavedDashboard('few panels'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('hides the chrome', async () => { const globalNavShown = await globalNav.exists(); expect(globalNavShown).to.be(true); diff --git a/test/functional/apps/dashboard/embeddable_data_grid.ts b/test/functional/apps/dashboard/embeddable_data_grid.ts index a9e0039de1f79..ae6016370166a 100644 --- a/test/functional/apps/dashboard/embeddable_data_grid.ts +++ b/test/functional/apps/dashboard/embeddable_data_grid.ts @@ -23,7 +23,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { before(async () => { await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.loadIfNeeded('dashboard/current/data'); - await esArchiver.loadIfNeeded('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', 'doc_table:legacy': false, @@ -36,6 +36,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await dashboardAddPanel.addSavedSearch('Rendering-Test:-saved-search'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('should expand the detail row when the toggle arrow is clicked', async function () { await retry.try(async function () { await dataGrid.clickRowToggle({ isAnchorRow: false, rowIndex: 0 }); diff --git a/test/functional/apps/dashboard/embeddable_library.ts b/test/functional/apps/dashboard/embeddable_library.ts index 20fe9aeb1387a..e9d596c70edeb 100644 --- a/test/functional/apps/dashboard/embeddable_library.ts +++ b/test/functional/apps/dashboard/embeddable_library.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']); - const esArchiver = getService('esArchiver'); const find = getService('find'); const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); @@ -21,7 +20,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('embeddable library', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -30,6 +29,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.clickNewDashboard(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('unlink visualize panel from embeddable library', async () => { // add heatmap panel from library await dashboardAddPanel.clickOpenAddPanel(); diff --git a/test/functional/apps/dashboard/embeddable_rendering.ts b/test/functional/apps/dashboard/embeddable_rendering.ts index c9ffd3f6ae86e..fa939e344cb76 100644 --- a/test/functional/apps/dashboard/embeddable_rendering.ts +++ b/test/functional/apps/dashboard/embeddable_rendering.ts @@ -21,7 +21,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const find = getService('find'); const browser = getService('browser'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const pieChart = getService('pieChart'); const security = getService('security'); @@ -94,7 +93,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe.skip('dashboard embeddable rendering', function describeIndexTests() { before(async () => { await security.testUser.setRoles(['kibana_admin', 'animals', 'test_logstash_reader']); - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -113,6 +112,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const newUrl = currentUrl.replace(/\?.*$/, ''); await browser.get(newUrl, false); await security.testUser.restoreDefaults(); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); it('adding visualizations', async () => { diff --git a/test/functional/apps/dashboard/empty_dashboard.ts b/test/functional/apps/dashboard/empty_dashboard.ts index 2cfa6d73dcb72..eeec523339817 100644 --- a/test/functional/apps/dashboard/empty_dashboard.ts +++ b/test/functional/apps/dashboard/empty_dashboard.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardAddPanel = getService('dashboardAddPanel'); const dashboardVisualizations = getService('dashboardVisualizations'); @@ -21,7 +20,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('empty dashboard', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -33,6 +32,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await dashboardAddPanel.closeAddPanel(); await PageObjects.dashboard.gotoDashboardLandingPage(); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); it('should display empty widget', async () => { diff --git a/test/functional/apps/dashboard/full_screen_mode.ts b/test/functional/apps/dashboard/full_screen_mode.ts index 1f63dcdafdcce..027777ee7b873 100644 --- a/test/functional/apps/dashboard/full_screen_mode.ts +++ b/test/functional/apps/dashboard/full_screen_mode.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); const PageObjects = getPageObjects(['dashboard', 'common']); @@ -20,7 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('full screen mode', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -29,6 +28,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.loadSavedDashboard('few panels'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('option not available in edit mode', async () => { await PageObjects.dashboard.switchToEditMode(); const exists = await PageObjects.dashboard.fullScreenModeMenuItemExists(); diff --git a/test/functional/apps/dashboard/legacy_urls.ts b/test/functional/apps/dashboard/legacy_urls.ts index 9c7f472b287a7..ad53974004594 100644 --- a/test/functional/apps/dashboard/legacy_urls.ts +++ b/test/functional/apps/dashboard/legacy_urls.ts @@ -23,7 +23,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); const dashboardAddPanel = getService('dashboardAddPanel'); const listingTable = getService('listingTable'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const security = getService('security'); let kibanaLegacyBaseUrl: string; @@ -33,7 +33,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('legacy urls', function describeIndexTests() { before(async function () { await security.testUser.setRoles(['kibana_admin', 'animals']); - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await PageObjects.common.navigateToApp('dashboard'); await PageObjects.dashboard.clickNewDashboard(); await dashboardAddPanel.addVisualization('Rendering-Test:-animal-sounds-pie'); @@ -53,6 +53,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.gotoDashboardLandingPage(); await listingTable.deleteItem('legacyTest', testDashboardId); await security.testUser.restoreDefaults(); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); describe('kibana link redirect', () => { diff --git a/test/functional/apps/dashboard/panel_expand_toggle.ts b/test/functional/apps/dashboard/panel_expand_toggle.ts index 45642542cc0ac..305b4ccf827eb 100644 --- a/test/functional/apps/dashboard/panel_expand_toggle.ts +++ b/test/functional/apps/dashboard/panel_expand_toggle.ts @@ -13,14 +13,13 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const browser = getService('browser'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); const PageObjects = getPageObjects(['dashboard', 'visualize', 'header', 'common']); describe('expanding a panel', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -29,6 +28,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.loadSavedDashboard('few panels'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('hides other panels', async () => { await dashboardPanelActions.openContextMenu(); await dashboardPanelActions.clickExpandPanelToggle(); diff --git a/test/functional/apps/dashboard/saved_search_embeddable.ts b/test/functional/apps/dashboard/saved_search_embeddable.ts index 098f6ccc00d94..2961e7ce191d4 100644 --- a/test/functional/apps/dashboard/saved_search_embeddable.ts +++ b/test/functional/apps/dashboard/saved_search_embeddable.ts @@ -21,7 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { before(async () => { await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.loadIfNeeded('dashboard/current/data'); - await esArchiver.loadIfNeeded('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -35,6 +35,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('highlighting on filtering works', async function () { await dashboardAddPanel.addSavedSearch('Rendering-Test:-saved-search'); await filterBar.addFilter('agent', 'is', 'Mozilla'); diff --git a/test/functional/apps/dashboard/share.ts b/test/functional/apps/dashboard/share.ts index 8191b5efb51f6..a7dbd4aea3216 100644 --- a/test/functional/apps/dashboard/share.ts +++ b/test/functional/apps/dashboard/share.ts @@ -10,13 +10,12 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['dashboard', 'common', 'share']); describe('share dashboard', () => { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -25,6 +24,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.loadSavedDashboard('few panels'); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('has "panels" state when sharing a snapshot', async () => { await PageObjects.share.clickShareTopNavButton(); const sharedUrl = await PageObjects.share.getSharedUrl(); diff --git a/test/functional/apps/dashboard/time_zones.ts b/test/functional/apps/dashboard/time_zones.ts index a4a586cb635d5..44443da0b3eab 100644 --- a/test/functional/apps/dashboard/time_zones.ts +++ b/test/functional/apps/dashboard/time_zones.ts @@ -13,7 +13,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const pieChart = getService('pieChart'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects([ 'dashboard', @@ -27,7 +26,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { this.tags('includeFirefox'); before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -44,6 +43,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await kibanaServer.uiSettings.replace({ 'dateFormat:tz': 'UTC' }); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); it('Exported dashboard adjusts EST time to UTC', async () => { diff --git a/test/functional/apps/dashboard/url_field_formatter.ts b/test/functional/apps/dashboard/url_field_formatter.ts index f930987f16d5f..b6b08025cd1b5 100644 --- a/test/functional/apps/dashboard/url_field_formatter.ts +++ b/test/functional/apps/dashboard/url_field_formatter.ts @@ -18,7 +18,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'timePicker', 'visChart', ]); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); const browser = getService('browser'); @@ -39,7 +38,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // FLAKY: https://github.com/elastic/kibana/issues/79463 describe.skip('Changing field formatter to Url', () => { before(async function () { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -52,6 +51,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await settings.controlChangeSave(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('applied on dashboard', async () => { await common.navigateToApp('dashboard'); await dashboard.loadSavedDashboard('dashboard with everything'); diff --git a/test/functional/apps/dashboard/view_edit.ts b/test/functional/apps/dashboard/view_edit.ts index 99a78ebd069c5..cf8de265d3cb2 100644 --- a/test/functional/apps/dashboard/view_edit.ts +++ b/test/functional/apps/dashboard/view_edit.ts @@ -12,7 +12,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const queryBar = getService('queryBar'); - const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const dashboardAddPanel = getService('dashboardAddPanel'); const testSubjects = getService('testSubjects'); @@ -22,7 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('dashboard view edit mode', function viewEditModeTests() { before(async () => { - await esArchiver.load('dashboard/current/kibana'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await kibanaServer.uiSettings.replace({ defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c', }); @@ -30,6 +29,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.preserveCrossAppState(); }); + after(() => kibanaServer.importExport.unload('dashboard/current/kibana')); + it('create new dashboard opens in edit mode', async function () { await PageObjects.dashboard.gotoDashboardLandingPage(); await PageObjects.dashboard.clickNewDashboard(); diff --git a/test/functional/fixtures/es_archiver/dashboard/current/kibana/data.json.gz b/test/functional/fixtures/es_archiver/dashboard/current/kibana/data.json.gz deleted file mode 100644 index ae78761fef0d3415c8ec05ea4bfa9dcca070981a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20860 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 diff --git a/test/functional/fixtures/es_archiver/dashboard/current/kibana/mappings.json b/test/functional/fixtures/es_archiver/dashboard/current/kibana/mappings.json deleted file mode 100644 index 9f5edaad0fe76..0000000000000 --- a/test/functional/fixtures/es_archiver/dashboard/current/kibana/mappings.json +++ /dev/null @@ -1,490 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": { - } - }, - "index": ".kibana_1", - "mappings": { - "_meta": { - "migrationMappingPropertyHashes": { - "application_usage_totals": "c897e4310c5f24b07caaff3db53ae2c1", - "application_usage_transactional": "965839e75f809fefe04f92dc4d99722a", - "config": "ae24d22d5986d04124cc6568f771066f", - "dashboard": "d00f614b29a80360e1190193fd333bab", - "index-pattern": "66eccb05066c5a89924f48a9e9736499", - "kql-telemetry": "d12a98a6f19a2d273696597547e064ee", - "migrationVersion": "4a1746014a75ade3a714e1db5763276f", - "namespace": "2f4316de49999235636386fe51dc06c1", - "namespaces": "2f4316de49999235636386fe51dc06c1", - "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9", - "references": "7997cf5a56cc02bdc9c93361bde732b0", - "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4", - "search": "181661168bbadd1eff5902361e2a0d5c", - "telemetry": "36a616f7026dfa617d6655df850fe16d", - "timelion-sheet": "9a2a2748877c7a7b582fef201ab1d4cf", - "tsvb-validation-telemetry": "3a37ef6c8700ae6fc97d5c7da00e9215", - "type": "2f4316de49999235636386fe51dc06c1", - "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3", - "updated_at": "00da57df13e94e9d98437d13ace4bfe0", - "url": "b675c3be8d76ecf029294d51dc7ec65d", - "visualization": "52d7a13ad68a150c4525b292d23e12cc" - } - }, - "dynamic": "strict", - "properties": { - "application_usage_totals": { - "properties": { - "appId": { - "type": "keyword" - }, - "minutesOnScreen": { - "type": "float" - }, - "numberOfClicks": { - "type": "long" - } - } - }, - "application_usage_transactional": { - "properties": { - "appId": { - "type": "keyword" - }, - "minutesOnScreen": { - "type": "float" - }, - "numberOfClicks": { - "type": "long" - }, - "timestamp": { - "type": "date" - } - } - }, - "config": { - "dynamic": "true", - "properties": { - "accessibility:disableAnimations": { - "type": "boolean" - }, - "buildNum": { - "type": "keyword" - }, - "dateFormat:tz": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "defaultIndex": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "notifications:lifetime:banner": { - "type": "long" - }, - "notifications:lifetime:error": { - "type": "long" - }, - "notifications:lifetime:info": { - "type": "long" - }, - "notifications:lifetime:warning": { - "type": "long" - }, - "xPackMonitoring:showBanner": { - "type": "boolean" - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "type": { - "type": "keyword" - }, - "typeMeta": { - "type": "keyword" - } - } - }, - "kql-telemetry": { - "properties": { - "optInCount": { - "type": "long" - }, - "optOutCount": { - "type": "long" - } - } - }, - "migrationVersion": { - "dynamic": "true", - "properties": { - "dashboard": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "index-pattern": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "search": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "visualization": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "namespace": { - "type": "keyword" - }, - "namespaces": { - "type": "keyword" - }, - "query": { - "properties": { - "description": { - "type": "text" - }, - "filters": { - "enabled": false, - "type": "object" - }, - "query": { - "properties": { - "language": { - "type": "keyword" - }, - "query": { - "index": false, - "type": "keyword" - } - } - }, - "timefilter": { - "enabled": false, - "type": "object" - }, - "title": { - "type": "text" - } - } - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "sample-data-telemetry": { - "properties": { - "installCount": { - "type": "long" - }, - "unInstallCount": { - "type": "long" - } - } - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "telemetry": { - "properties": { - "allowChangingOptInStatus": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "lastReported": { - "type": "date" - }, - "lastVersionChecked": { - "type": "keyword" - }, - "reportFailureCount": { - "type": "integer" - }, - "reportFailureVersion": { - "type": "keyword" - }, - "sendUsageFrom": { - "type": "keyword" - }, - "userHasSeenNotice": { - "type": "boolean" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "tsvb-validation-telemetry": { - "properties": { - "failedRequests": { - "type": "long" - } - } - }, - "type": { - "type": "keyword" - }, - "ui-metric": { - "properties": { - "count": { - "type": "integer" - } - } - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchRefName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - }, - "settings": { - "index": { - "auto_expand_replicas": "0-1", - "number_of_replicas": "0", - "number_of_shards": "1" - } - } - } -} \ No newline at end of file diff --git a/test/functional/fixtures/es_archiver/saved_objects_management/export_transform/data.json b/test/functional/fixtures/es_archiver/saved_objects_management/export_transform/data.json deleted file mode 100644 index bd3fe654a56c4..0000000000000 --- a/test/functional/fixtures/es_archiver/saved_objects_management/export_transform/data.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-transform:type_1-obj_1", - "source": { - "test-export-transform": { - "title": "test_1-obj_1", - "enabled": true - }, - "type": "test-export-transform", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-transform:type_1-obj_2", - "source": { - "test-export-transform": { - "title": "test_1-obj_2", - "enabled": true - }, - "type": "test-export-transform", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-add:type_2-obj_1", - "source": { - "test-export-add": { - "title": "test_2-obj_1" - }, - "type": "test-export-add", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-add:type_2-obj_2", - "source": { - "test-export-add": { - "title": "test_2-obj_2" - }, - "type": "test-export-add", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-add-dep:type_dep-obj_1", - "source": { - "test-export-add-dep": { - "title": "type_dep-obj_1" - }, - "type": "test-export-add-dep", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z", - "references": [ - { - "type": "test-export-add", - "id": "type_2-obj_1" - } - ] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-add-dep:type_dep-obj_2", - "source": { - "test-export-add-dep": { - "title": "type_dep-obj_2" - }, - "type": "test-export-add-dep", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z", - "references": [ - { - "type": "test-export-add", - "id": "type_2-obj_2" - } - ] - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-invalid-transform:type_3-obj_1", - "source": { - "test-export-invalid-transform": { - "title": "test_2-obj_1" - }, - "type": "test-export-invalid-transform", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} - -{ - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-export-transform-error:type_4-obj_1", - "source": { - "test-export-transform-error": { - "title": "test_2-obj_1" - }, - "type": "test-export-transform-error", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } -} diff --git a/test/functional/fixtures/es_archiver/saved_objects_management/export_transform/mappings.json b/test/functional/fixtures/es_archiver/saved_objects_management/export_transform/mappings.json deleted file mode 100644 index d85125efd672a..0000000000000 --- a/test/functional/fixtures/es_archiver/saved_objects_management/export_transform/mappings.json +++ /dev/null @@ -1,499 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "auto_expand_replicas": "0-1", - "number_of_replicas": "0" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "test-export-transform": { - "properties": { - "title": { "type": "text" }, - "enabled": { "type": "boolean" } - } - }, - "test-export-add": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-add-dep": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-transform-error": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-invalid-transform": { - "properties": { - "title": { "type": "text" } - } - }, - "apm-telemetry": { - "properties": { - "has_any_services": { - "type": "boolean" - }, - "services_per_agent": { - "properties": { - "go": { - "type": "long", - "null_value": 0 - }, - "java": { - "type": "long", - "null_value": 0 - }, - "js-base": { - "type": "long", - "null_value": 0 - }, - "nodejs": { - "type": "long", - "null_value": 0 - }, - "python": { - "type": "long", - "null_value": 0 - }, - "ruby": { - "type": "long", - "null_value": 0 - } - } - } - } - }, - "canvas-workpad": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "id": { - "type": "text", - "index": false - }, - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword" - } - } - } - } - }, - "config": { - "dynamic": "true", - "properties": { - "accessibility:disableAnimations": { - "type": "boolean" - }, - "buildNum": { - "type": "keyword" - }, - "dateFormat:tz": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "telemetry:optIn": { - "type": "boolean" - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "map": { - "properties": { - "bounds": { - "type": "geo_shape", - "tree": "quadtree" - }, - "description": { - "type": "text" - }, - "layerListJSON": { - "type": "text" - }, - "mapStateJSON": { - "type": "text" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "graph-workspace": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "type": { - "type": "keyword" - }, - "typeMeta": { - "type": "keyword" - } - } - }, - "kql-telemetry": { - "properties": { - "optInCount": { - "type": "long" - }, - "optOutCount": { - "type": "long" - } - } - }, - "migrationVersion": { - "dynamic": "true", - "properties": { - "index-pattern": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "space": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, - "namespace": { - "type": "keyword" - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "space": { - "properties": { - "_reserved": { - "type": "boolean" - }, - "color": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "disabledFeatures": { - "type": "keyword" - }, - "initials": { - "type": "keyword" - }, - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "spaceId": { - "type": "keyword" - }, - "telemetry": { - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - } - } - } - } -} diff --git a/test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/mappings.json b/test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/mappings.json deleted file mode 100644 index dfefd60a5ebe3..0000000000000 --- a/test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/mappings.json +++ /dev/null @@ -1,518 +0,0 @@ -{ - "type": "index", - "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "auto_expand_replicas": "0-1", - "number_of_replicas": "0" - } - }, - "mappings": { - "dynamic": "strict", - "properties": { - "test-actions-export-hidden": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-transform": { - "properties": { - "title": { "type": "text" }, - "enabled": { "type": "boolean" } - } - }, - "test-export-add": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-add-dep": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-transform-error": { - "properties": { - "title": { "type": "text" } - } - }, - "test-export-invalid-transform": { - "properties": { - "title": { "type": "text" } - } - }, - "apm-telemetry": { - "properties": { - "has_any_services": { - "type": "boolean" - }, - "services_per_agent": { - "properties": { - "go": { - "type": "long", - "null_value": 0 - }, - "java": { - "type": "long", - "null_value": 0 - }, - "js-base": { - "type": "long", - "null_value": 0 - }, - "nodejs": { - "type": "long", - "null_value": 0 - }, - "python": { - "type": "long", - "null_value": 0 - }, - "ruby": { - "type": "long", - "null_value": 0 - } - } - } - } - }, - "canvas-workpad": { - "dynamic": "false", - "properties": { - "@created": { - "type": "date" - }, - "@timestamp": { - "type": "date" - }, - "id": { - "type": "text", - "index": false - }, - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword" - } - } - } - } - }, - "config": { - "dynamic": "true", - "properties": { - "accessibility:disableAnimations": { - "type": "boolean" - }, - "buildNum": { - "type": "keyword" - }, - "dateFormat:tz": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "telemetry:optIn": { - "type": "boolean" - } - } - }, - "dashboard": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "map": { - "properties": { - "bounds": { - "type": "geo_shape", - "tree": "quadtree" - }, - "description": { - "type": "text" - }, - "layerListJSON": { - "type": "text" - }, - "mapStateJSON": { - "type": "text" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "graph-workspace": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "numLinks": { - "type": "integer" - }, - "numVertices": { - "type": "integer" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "wsState": { - "type": "text" - } - } - }, - "index-pattern": { - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "type": { - "type": "keyword" - }, - "typeMeta": { - "type": "keyword" - } - } - }, - "kql-telemetry": { - "properties": { - "optInCount": { - "type": "long" - }, - "optOutCount": { - "type": "long" - } - } - }, - "migrationVersion": { - "dynamic": "true", - "properties": { - "index-pattern": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "space": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, - "namespace": { - "type": "keyword" - }, - "search": { - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "space": { - "properties": { - "_reserved": { - "type": "boolean" - }, - "color": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "disabledFeatures": { - "type": "keyword" - }, - "initials": { - "type": "keyword" - }, - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "spaceId": { - "type": "keyword" - }, - "telemetry": { - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "timelion-sheet": { - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "timelion_chart_height": { - "type": "integer" - }, - "timelion_columns": { - "type": "integer" - }, - "timelion_interval": { - "type": "keyword" - }, - "timelion_other_interval": { - "type": "keyword" - }, - "timelion_rows": { - "type": "integer" - }, - "timelion_sheet": { - "type": "text" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "type": { - "type": "keyword" - }, - "updated_at": { - "type": "date" - }, - "url": { - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 2048 - } - } - } - } - }, - "visualization": { - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - }, - "references": { - "properties": { - "id": { - "type": "keyword" - }, - "name": { - "type": "keyword" - }, - "type": { - "type": "keyword" - } - }, - "type": "nested" - }, - "test-hidden-non-importable-exportable": { - "properties": { - "title": { - "type": "text" - } - } - }, - "test-hidden-importable-exportable": { - "properties": { - "title": { - "type": "text" - } - } - } - } - } - } -} diff --git a/test/functional/fixtures/kbn_archiver/dashboard/current/kibana.json b/test/functional/fixtures/kbn_archiver/dashboard/current/kibana.json new file mode 100644 index 0000000000000..07acf3c93ff71 --- /dev/null +++ b/test/functional/fixtures/kbn_archiver/dashboard/current/kibana.json @@ -0,0 +1,2699 @@ +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-table", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-table\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"table\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_color_rules\":[{\"id\":\"e0be22e0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"markdown\":\"\\nHi Avg last bytes: {{ average_of_bytes.last.raw }}\",\"pivot_id\":\"bytes\",\"pivot_label\":\"Hello\",\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "02a2e4e0-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.351Z", + "version": "WzIzNiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb time series with bytes filter split by clientip", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb time series with bytes filter split by clientip\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"metrics\":[{\"value\":\"\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"sum\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"use_kibana_indexes\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "039e4770-4194-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.220Z", + "version": "WzI1MSwyXQ==" +} + +{ + "attributes": { + "fieldFormatMap": "{\"machine.ram\":{\"id\":\"number\",\"params\":{\"pattern\":\"0,0.[000] b\"}}}", + "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":3,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":3,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "7.14.0", + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-04-16T16:57:12.263Z", + "version": "WzIyMCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: Goal unique count", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 10000\":\"rgb(0,104,55)\"}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: Goal unique count\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "03d2afd0-4192-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.269Z", + "version": "WzI1NSwyXQ==" +} + +{ + "attributes": { + "fieldFormatMap": "{\"weightLbs\":{\"id\":\"number\",\"params\":{\"pattern\":\"0,0.0\"}},\"is_dog\":{\"id\":\"boolean\"},\"isDog\":{\"id\":\"boolean\"}}", + "fields": "[{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"animal\",\"type\":\"string\",\"count\":3,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"animal.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"name\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sound\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sound.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"weightLbs\",\"type\":\"number\",\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"isDog\",\"type\":\"boolean\",\"count\":0,\"scripted\":true,\"script\":\"return doc['animal.keyword'].value == 'dog'\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]", + "timeFieldName": "@timestamp", + "title": "animals-*" + }, + "coreMigrationVersion": "7.14.0", + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-05-09T20:55:44.314Z", + "version": "WzI3MywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"weightLbs:>10\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Weight in lbs pie created in 6.2", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Weight in lbs pie created in 6.2\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"weightLbs\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "0644f890-53cb-11e8-b481-c9426d020fcd", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-05-09T20:53:28.345Z", + "version": "WzI3MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: input control with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: input control with filter\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1523896850250\",\"fieldName\":\"bytes\",\"parent\":\"\",\"label\":\"Byte Options\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":10,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "0ca8c600-4195-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.229Z", + "version": "WzI1MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: metric\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "11ae2bd0-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.133Z", + "version": "WzIyNiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: heatmap", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 15\":\"rgb(247,252,245)\",\"15 - 30\":\"rgb(199,233,192)\",\"30 - 45\":\"rgb(116,196,118)\",\"45 - 60\":\"rgb(35,139,69)\"}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: heatmap\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Greens\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.134Z", + "version": "WzIyNywyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "im empty", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "14616b50-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:02:51.909Z", + "version": "WzE1MywyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "im empty too", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "19523860-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:03:00.198Z", + "version": "WzE1MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "table created in 6_2", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"table created in 6_2\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"weightLbs\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"animal.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "edb65990-53ca-11e8-b481-c9426d020fcd", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-05-09T20:52:47.144Z", + "version": "WzI3MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:>15\"},\"filter\":[{\"meta\":{\"field\":\"isDog\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"isDog\",\"value\":\"true\",\"params\":{\"value\":true},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"script\":{\"script\":{\"inline\":\"boolean compare(Supplier s, def v) {return s.get() == v;}compare(() -> { return doc['animal.keyword'].value == 'dog' }, params.value);\",\"lang\":\"painless\",\"params\":{\"value\":true}}},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":12,\"x\":24,\"y\":0,\"i\":\"4\"},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":12,\"x\":0,\"y\":0,\"i\":\"5\"},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "Animal Weights (created in 6.2)", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "1b2f47b0-53cb-11e8-b481-c9426d020fcd", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "edb65990-53ca-11e8-b481-c9426d020fcd", + "name": "4:panel_4", + "type": "visualization" + }, + { + "id": "0644f890-53cb-11e8-b481-c9426d020fcd", + "name": "5:panel_5", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-05-09T20:54:03.435Z", + "version": "WzI3MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"bytes:>100\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: min bytes metric with query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: min bytes metric with query\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"min\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "1dcdfe30-4192-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:59:56.976Z", + "version": "WzI2MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"CN\",\"params\":{\"query\":\"CN\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"CN\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"bytes >= 10000\",\"language\":\"kuery\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Kuery: pie bytes with kuery and filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Kuery: pie bytes with kuery and filter\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "29bd0240-4197-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-16T16:56:53.092Z", + "version": "WzIxOSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: guage", + "uiStateJSON": "{\"vis\":{\"colors\":{\"0 - 50000\":\"#EF843C\",\"75000 - 10000000\":\"#3F6833\"},\"defaultColors\":{\"0 - 5000000\":\"rgb(0,104,55)\",\"50000000 - 74998990099\":\"rgb(165,0,38)\"}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: guage\",\"type\":\"gauge\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"gauge\":{\"backStyle\":\"Full\",\"colorSchema\":\"Green to Red\",\"colorsRange\":[{\"from\":0,\"to\":5000000},{\"from\":50000000,\"to\":74998990099}],\"extendRange\":true,\"gaugeColorMode\":\"Labels\",\"gaugeStyle\":\"Full\",\"gaugeType\":\"Arc\",\"invertColors\":false,\"labels\":{\"color\":\"black\",\"show\":true},\"orientation\":\"vertical\",\"percentageMode\":false,\"scale\":{\"color\":\"#333\",\"labels\":false,\"show\":true},\"style\":{\"bgColor\":false,\"bgFill\":\"#eee\",\"bgMask\":false,\"bgWidth\":0.9,\"fontSize\":60,\"labelColor\":true,\"mask\":false,\"maskBars\":50,\"subText\":\"\",\"width\":0.9},\"type\":\"meter\",\"alignment\":\"horizontal\"},\"isDisplayWarning\":false,\"type\":\"gauge\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"machine.ram\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.135Z", + "version": "WzIyOCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"}]", + "timeRestore": false, + "title": "couple panels", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "2ae34a60-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "name": "2:panel_2", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:03:29.670Z", + "version": "WzE0OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: input control", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: input control\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1523481142694\",\"fieldName\":\"bytes\",\"parent\":\"\",\"label\":\"Bytes Input List\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1523481163654\",\"fieldName\":\"bytes\",\"parent\":\"\",\"label\":\"Bytes range\",\"type\":\"range\",\"options\":{\"decimalPlaces\":0,\"step\":1},\"indexPatternRefName\":\"control_1_index_pattern\"},{\"id\":\"1523481176519\",\"fieldName\":\"sound.keyword\",\"parent\":\"\",\"label\":\"Animal sounds\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_2_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "2d1b1620-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_1_index_pattern", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_2_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.123Z", + "version": "WzIzMiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: datatable", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: datatable\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"clientip\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "4b5d6ef0-3dcb-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.162Z", + "version": "WzI0MywyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"}]", + "timeRestore": false, + "title": "few panels", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "33bb8ad0-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "name": "2:panel_2", + "type": "visualization" + }, + { + "id": "4b5d6ef0-3dcb-11e8-8660-4d65aa086b3c", + "name": "3:panel_3", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:03:44.509Z", + "version": "WzE1NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: bar", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: bar\",\"type\":\"horizontal_bar\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":3,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "3525b840-3dcb-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.163Z", + "version": "WzI0NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb metric with custom interval and bytes filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb metric with custom interval and bytes filter\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"metric\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"value\":\"\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"sum\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"override_index_pattern\":1,\"series_index_pattern\":\"logstash-*\",\"series_time_field\":\"utc_time\",\"series_interval\":\"1d\",\"value_template\":\"{{value}} custom template\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"06893260-4194-11e8-a461-7d278185cba4\"}],\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "35417e50-4194-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T16:06:03.785Z", + "version": "WzI2MywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"range\",\"key\":\"bytes\",\"value\":\"0 to 10,000\",\"params\":{\"gte\":0,\"lt\":10000},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"range\":{\"bytes\":{\"gte\":0,\"lt\":10000}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: geo map", + "uiStateJSON": "{\"mapZoom\":4,\"mapCenter\":[35.460669951495305,-85.60546875000001]}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: geo map\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":3}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "37a541c0-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.156Z", + "version": "WzI0MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "1", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "3de0bda0-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:01.530Z", + "version": "WzE2MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: pie", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "3fe22200-3dcb-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.130Z", + "version": "WzIyNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: input control parent", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: input control parent\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1523481216736\",\"fieldName\":\"animal.keyword\",\"parent\":\"\",\"label\":\"Animal type\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1523481176519\",\"fieldName\":\"sound.keyword\",\"parent\":\"1523481216736\",\"label\":\"Animal sounds\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "42535e30-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_1_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.124Z", + "version": "WzIzNCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "2", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "46c8b580-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:16.472Z", + "version": "WzE2MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"field\":\"isDog\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"isDog\",\"value\":\"true\",\"params\":{\"value\":true},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"script\":{\"script\":{\"inline\":\"boolean compare(Supplier s, def v) {return s.get() == v;}compare(() -> { return doc['animal.keyword'].value == 'dog' }, params.value);\",\"lang\":\"painless\",\"params\":{\"value\":true}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"weightLbs:>40\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: scripted filter and query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: scripted filter and query\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"sound.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "4c0c3f90-3e5a-11e8-9fc3-39e49624228e", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.166Z", + "version": "WzI0NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: markdown", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":20,\"openLinksInNewTab\":false,\"markdown\":\"I'm a markdown!\"},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "4c0f47e0-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.111Z", + "version": "WzIzMSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: region map", + "uiStateJSON": "{\"mapZoom\":2,\"mapCenter\":[8.754794702435618,-9.140625000000002]}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: region map\",\"type\":\"region_map\",\"params\":{\"legendPosition\":\"bottomright\",\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"selectedLayer\":{\"attribution\":\"

Made with NaturalEarth | Elastic Maps Service

\",\"name\":\"World Countries\",\"weight\":1,\"format\":{\"type\":\"geojson\"},\"url\":\"https://staging-dot-elastic-layer.appspot.com/blob/5715999101812736?elastic_tile_service_tos=agree&my_app_version=6.3.0\",\"fields\":[{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},{\"name\":\"iso3\",\"description\":\"Three letter abbreviation\"},{\"name\":\"name\",\"description\":\"Country name\"}],\"created_at\":\"2017-07-31T16:00:19.996450\",\"tags\":[],\"id\":5715999101812736,\"layerId\":\"elastic_maps_service.World Countries\"},\"selectedJoinField\":{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},\"isDisplayWarning\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}},\"mapZoom\":2,\"mapCenter\":[0,0],\"outlineWeight\":1,\"showAllShapes\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "4ca00ba0-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.131Z", + "version": "WzIyNSwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "4f0fd980-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:30.360Z", + "version": "WzE2MCwyXQ==" +} + +{ + "attributes": { + "title": "logstash-*" + }, + "coreMigrationVersion": "7.14.0", + "id": "to-be-removed", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-04-12T16:24:29.357Z", + "version": "WzE0NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "vis with missing index pattern", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"title\":\"vis with missing index pattern\"}" + }, + "coreMigrationVersion": "7.14.0", + "id": "to-be-removed", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "to-be-removed", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-05-25T15:16:27.743Z", + "version": "WzI3NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "optionsJSON": "{\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"6cfbe6cc-1872-4cb4-9455-a02eeb75127e\"},\"panelIndex\":\"6cfbe6cc-1872-4cb4-9455-a02eeb75127e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6cfbe6cc-1872-4cb4-9455-a02eeb75127e\"}]", + "timeRestore": false, + "title": "dashboard with missing index pattern", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "502e63a0-9e93-11ea-853e-adc0effaf76d", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "to-be-removed", + "name": "6cfbe6cc-1872-4cb4-9455-a02eeb75127e:panel_6cfbe6cc-1872-4cb4-9455-a02eeb75127e", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-05-25T15:16:27.743Z", + "version": "WzI3NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: animal sounds pie", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: animal sounds pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"sound.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:34.195Z", + "version": "WzI0NywyXQ==" +} + +{ + "attributes": { + "columns": [ + "agent", + "bytes", + "clientip" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"clientip : 73.14.212.83\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"range\",\"key\":\"bytes\",\"value\":\"100 to 1,000\",\"params\":{\"gte\":100,\"lt\":1000},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"range\":{\"bytes\":{\"gte\":100,\"lt\":1000}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Bytes and kuery in saved search with filter", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "55d37a30-4197-11e8-bb13-d53698fb349a", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2018-04-16T16:58:07.059Z", + "version": "WzIyMSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"bytes:>9000\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: split by geo with query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: split by geo with query\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "584c0300-4191-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T18:36:30.315Z", + "version": "WzI2NiwyXQ==" +} + +{ + "attributes": { + "columns": [ + "animal", + "isDog", + "name", + "sound", + "weightLbs" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:>40\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "weightLbs", + "desc" + ] + ], + "title": "animal weights", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2018-04-11T20:55:26.317Z", + "version": "WzE0NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "savedSearchRefName": "search_0", + "title": "Rendering Test: animal weights linked to search", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: animal weights linked to search\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"name.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:34.200Z", + "version": "WzI0OCwyXQ==" +} + +{ + "attributes": { + "description": "dashboard with scripted filter, negated filter and query", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:<50\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"name.keyword\",\"negate\":true,\"params\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"Fee Fee\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"name.keyword\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"is dog\",\"disabled\":false,\"field\":\"isDog\",\"key\":\"isDog\",\"negate\":false,\"params\":{\"value\":true},\"type\":\"phrase\",\"value\":\"true\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"script\":{\"script\":{\"inline\":\"boolean compare(Supplier s, def v) {return s.get() == v;}compare(() -> { return doc['animal.keyword'].value == 'dog' }, params.value);\",\"lang\":\"painless\",\"params\":{\"value\":true}}}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":true,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"4\"},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "section": 0, + "value": 0 + }, + "timeFrom": "Wed Apr 12 2017 10:06:21 GMT-0400", + "timeRestore": true, + "timeTo": "Thu Apr 12 2018 10:06:21 GMT-0400", + "title": "filters", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "5bac3a80-3e5b-11e8-9fc3-39e49624228e", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", + "type": "index-pattern" + }, + { + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "4c0c3f90-3e5a-11e8-9fc3-39e49624228e", + "name": "3:panel_3", + "type": "visualization" + }, + { + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "name": "4:panel_4", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-12T14:11:13.576Z", + "version": "WzE2OCwyXQ==" +} + +{ + "attributes": { + "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"activity level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"barking level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"breed\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"breed.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"size.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"trainability\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "title": "dogbreeds" + }, + "coreMigrationVersion": "7.14.0", + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2018-04-12T16:24:29.357Z", + "version": "WzE2OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "non timebased line chart - dog data", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"non timebased line chart - dog data\",\"type\":\"line\",\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Max trainability\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Max trainability\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true},{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"3\",\"label\":\"Max barking level\"},\"valueAxis\":\"ValueAxis-1\"},{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"4\",\"label\":\"Max activity level\"},\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"trainability\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"breed.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"barking level\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"activity level\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "5e085850-3e6e-11e8-bbb9-e15942d5d48c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-12T16:27:17.973Z", + "version": "WzIxNiwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 2", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "60659030-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:59.443Z", + "version": "WzE1NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"animal\",\"value\":\"dog\",\"params\":{\"query\":\"dog\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"animal\":{\"query\":\"dog\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "dashboard with filter", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "61c58ad0-3dd3-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "2:panel_2", + "type": "search" + } + ], + "type": "dashboard", + "updated_at": "2018-04-11T21:57:52.253Z", + "version": "WzE0NywyXQ==" +} + +{ + "attributes": { + "columns": [ + "animal", + "sound", + "weightLbs" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:>10\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"sound.keyword\",\"value\":\"growl\",\"params\":{\"query\":\"growl\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"sound.keyword\":{\"query\":\"growl\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Search created in 6.2", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "6351c590-53cb-11e8-b481-c9426d020fcd", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2018-05-09T20:56:04.457Z", + "version": "WzI3NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"US\",\"params\":{\"query\":\"US\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"US\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"Filter Bytes Test:>5000\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: geo map with filter and query bytes > 5000 in US geo.src, heatmap setting", + "uiStateJSON": "{\"mapZoom\":7,\"mapCenter\":[42.98857645832184,-75.49804687500001]}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: geo map with filter and query bytes > 5000 in US geo.src, heatmap setting\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Heatmap\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":4}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "63983430-4192-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.275Z", + "version": "WzI1OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 3", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "65227c00-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:07.392Z", + "version": "WzE1NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 4", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "6803a2f0-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:12.223Z", + "version": "WzE1NywyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 5", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "6b18f940-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:17.396Z", + "version": "WzE1OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "dashboard-name-has-dashes", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "6c0b16e0-3dd3-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T21:58:09.486Z", + "version": "WzE1MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 6", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "6e12ff60-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:22.390Z", + "version": "WzE1OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\n \"query\": {\n \"language\": \"kuery\",\n \"query\": \"\"\n },\n \"filter\": [\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": true,\n \"type\": \"phrase\",\n \"key\": \"name\",\n \"params\": {\n \"query\": \"moo\"\n },\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"\n },\n \"query\": {\n \"match_phrase\": {\n \"name\": \"moo\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": true,\n \"type\": \"phrase\",\n \"key\": \"baad-field\",\n \"params\": {\n \"query\": \"moo\"\n },\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"\n },\n \"query\": {\n \"match_phrase\": {\n \"baad-field\": \"moo\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": false,\n \"type\": \"phrase\",\n \"key\": \"@timestamp\",\n \"params\": {\n \"query\": \"123\"\n },\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"\n },\n \"query\": {\n \"match_phrase\": {\n \"@timestamp\": \"123\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": false,\n \"type\": \"exists\",\n \"key\": \"extension\",\n \"value\": \"exists\",\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[3].meta.index\"\n },\n \"exists\": {\n \"field\": \"extension\"\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": false,\n \"type\": \"phrase\",\n \"key\": \"banana\",\n \"params\": {\n \"query\": \"yellow\"\n }\n },\n \"query\": {\n \"match_phrase\": {\n \"banana\": \"yellow\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n }\n ]\n}" + }, + "optionsJSON": "{\n \"hidePanelTitles\": false,\n \"useMargins\": true\n}", + "panelsJSON": "[{\"version\":\"8.0.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"94a3dc1d-508a-4d42-a480-65b158925ba0\"},\"panelIndex\":\"94a3dc1d-508a-4d42-a480-65b158925ba0\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_94a3dc1d-508a-4d42-a480-65b158925ba0\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "now-10y", + "timeRestore": true, + "timeTo": "now", + "title": "dashboard with bad filters", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "6eb8a840-a32e-11ea-88c2-d56dd2b14bd7", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "to-be-removed", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[3].meta.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[4].meta.index", + "type": "index-pattern" + }, + { + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "name": "94a3dc1d-508a-4d42-a480-65b158925ba0:panel_94a3dc1d-508a-4d42-a480-65b158925ba0", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-06-04T09:26:04.272Z", + "version": "WzI4MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 7", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "708fe640-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:26.564Z", + "version": "WzE2MywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"US\",\"params\":{\"query\":\"US\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"US\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: max bytes in US - area chart with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: max bytes in US - area chart with filter\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Max bytes\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Max bytes\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "760a9060-4190-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.235Z", + "version": "WzI1MiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb top n with bytes filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb top n with bytes filter\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"top_n\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"filters\",\"metrics\":[{\"id\":\"482d6560-4194-11e8-a461-7d278185cba4\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"override_index_pattern\":0,\"series_index_pattern\":\"logstash-*\",\"series_time_field\":\"utc_time\",\"series_interval\":\"1m\",\"value_template\":\"\",\"split_filters\":[{\"filter\":{\"query\":\"Filter Bytes Test:>100\",\"language\":\"lucene\"},\"label\":\"\",\"color\":\"#68BC00\",\"id\":\"39a107e0-4194-11e8-a461-7d278185cba4\"}],\"split_color_mode\":\"gradient\"},{\"id\":\"4fd5b150-4194-11e8-a461-7d278185cba4\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"4fd5b151-4194-11e8-a461-7d278185cba4\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"Filter Bytes Test:>3000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"06893260-4194-11e8-a461-7d278185cba4\"}],\"bar_color_rules\":[{\"id\":\"36a0e740-4194-11e8-a461-7d278185cba4\"}],\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "76c7f020-4194-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:34.583Z", + "version": "WzI0OSwyXQ==" +} + +{ + "attributes": { + "description": "and_descriptions_has_underscores", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "dashboard_with_underscores", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "76d03330-3dd3-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T21:58:27.555Z", + "version": "WzE0OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: tag cloud", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tag cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "78803be0-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.127Z", + "version": "WzIyMywyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "Hi i have a lot of words in my dashboard name! It's pretty long i wonder what it'll look like", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "7b8d50a0-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:45.002Z", + "version": "WzE2NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "bye", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "7e42d3b0-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:49.547Z", + "version": "WzE2NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: vega", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: vega\",\"type\":\"vega\",\"params\":{\"spec\":\"{\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v2.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: _all\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 0\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "7fda8ee0-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.344Z", + "version": "WzIzNSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: Data table top hit with significant terms geo.src", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: Data table top hit with significant terms geo.src\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_hits\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\",\"aggregate\":\"average\",\"size\":1,\"sortField\":\"@timestamp\",\"sortOrder\":\"desc\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"significant_terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"geo.src\",\"size\":10}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "7ff2c4c0-4191-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.270Z", + "version": "WzI1NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: vega", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: vega\",\"type\":\"vega\",\"params\":{\"spec\":\"{ \\nconfig: { kibana: { renderer: \\\"svg\\\" }},\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v2.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: _all\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 0\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "8090dcb0-4195-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T19:28:21.967Z", + "version": "WzI2OCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "last", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "846988b0-3dd4-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:59.867Z", + "version": "WzE2NiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"size.keyword\",\"value\":\"extra large\",\"params\":{\"query\":\"extra large\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"size.keyword\":{\"query\":\"extra large\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: non timebased line chart - dog data - with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"field\":\"trainability\"},\"schema\":\"metric\",\"type\":\"max\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"breed.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"field\":\"barking level\"},\"schema\":\"metric\",\"type\":\"max\"},{\"enabled\":true,\"id\":\"4\",\"params\":{\"field\":\"activity level\"},\"schema\":\"metric\",\"type\":\"max\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":100,\"filter\":true},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Max trainability\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":\"true\",\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\"},{\"data\":{\"id\":\"3\",\"label\":\"Max barking level\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\"},{\"data\":{\"id\":\"4\",\"label\":\"Max activity level\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Max trainability\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"title\":\"Rendering Test: non timebased line chart - dog data - with filter\",\"type\":\"line\"}" + }, + "coreMigrationVersion": "7.14.0", + "id": "8bc8d6c0-3e6e-11e8-bbb9-e15942d5d48c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.173Z", + "version": "WzIzMywyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "* hi & $%!!@# 漢字 ^--=++[]{};'~`~<>?,./:\";'\\|\\\\ special chars", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "9b780cd0-3dd3-11e8-b2b9-5d5dc1715159", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [], + "type": "dashboard", + "updated_at": "2018-04-11T22:00:07.322Z", + "version": "WzE1MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: timelion split 5 on bytes", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: timelion split 5 on bytes\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(*, split=bytes:5)\",\"interval\":\"auto\"},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "9bebe980-4192-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:59:42.648Z", + "version": "WzI2MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb markdown", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb markdown\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"markdown\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"filters\",\"metrics\":[{\"id\":\"482d6560-4194-11e8-a461-7d278185cba4\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"override_index_pattern\":0,\"series_index_pattern\":\"logstash-*\",\"series_time_field\":\"utc_time\",\"series_interval\":\"1m\",\"value_template\":\"\",\"split_filters\":[{\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"label\":\"\",\"color\":\"#68BC00\",\"id\":\"39a107e0-4194-11e8-a461-7d278185cba4\"}],\"label\":\"\",\"var_name\":\"\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"06893260-4194-11e8-a461-7d278185cba4\"}],\"bar_color_rules\":[{\"id\":\"36a0e740-4194-11e8-a461-7d278185cba4\"}],\"markdown\":\"{{bytes_1000.last.formatted}}\",\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "9fb4c670-4194-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T16:32:59.086Z", + "version": "WzI2NCwyXQ==" +} + +{ + "attributes": { + "description": "I have two visualizations that are created off a non time based index", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"}]", + "timeRestore": false, + "title": "Non time based", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "a5d56330-3e6e-11e8-bbb9-e15942d5d48c", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "5e085850-3e6e-11e8-bbb9-e15942d5d48c", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "8bc8d6c0-3e6e-11e8-bbb9-e15942d5d48c", + "name": "2:panel_2", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-12T16:29:18.435Z", + "version": "WzIxNywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: standard deviation heatmap with other bucket", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"-4,000 - 1,000\":\"rgb(247,252,245)\",\"1,000 - 6,000\":\"rgb(199,233,192)\",\"6,000 - 11,000\":\"rgb(116,196,118)\",\"11,000 - 16,000\":\"rgb(35,139,69)\"}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: standard deviation heatmap with other bucket\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Greens\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"std_dev\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"_term\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "b3e70d00-4190-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.236Z", + "version": "WzI1MywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: max bytes guage percent mode", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 1\":\"rgb(0,104,55)\",\"1 - 15\":\"rgb(255,255,190)\",\"15 - 100\":\"rgb(165,0,38)\"}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: max bytes guage percent mode\",\"type\":\"gauge\",\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"extendRange\":true,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":500},{\"from\":500,\"to\":7500},{\"from\":7500,\"to\":50000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"#333\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"#eee\",\"bgColor\":false,\"subText\":\"Im subtext\",\"fontSize\":60,\"labelColor\":true},\"alignment\":\"horizontal\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "c10c6b00-4191-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.267Z", + "version": "WzI1NCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"bytes\",\"value\":\"0\",\"params\":{\"query\":0,\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"bytes\":{\"query\":0,\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: tag cloud with not 0 bytes filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tag cloud with not 0 bytes filter\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "df72ad40-4194-11e8-bb13-d53698fb349a", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.276Z", + "version": "WzI1NywyXQ==" +} + +{ + "attributes": { + "description": "Bytes bytes and more bytes", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":17,\"h\":8,\"i\":\"4\"},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":18,\"h\":13,\"i\":\"5\"},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":37,\"w\":24,\"h\":12,\"i\":\"6\"},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":18,\"y\":30,\"w\":9,\"h\":7,\"i\":\"7\"},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":28,\"y\":23,\"w\":15,\"h\":13,\"i\":\"8\"},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":43,\"w\":24,\"h\":15,\"i\":\"9\"},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":49,\"w\":18,\"h\":12,\"i\":\"10\"},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":58,\"w\":24,\"h\":15,\"i\":\"11\"},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":61,\"w\":5,\"h\":4,\"i\":\"12\"},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":73,\"w\":17,\"h\":6,\"i\":\"13\"},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":65,\"w\":24,\"h\":15,\"i\":\"14\"},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":79,\"w\":24,\"h\":6,\"i\":\"15\"},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":80,\"w\":24,\"h\":15,\"i\":\"16\"},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":85,\"w\":13,\"h\":11,\"i\":\"17\"},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"x\":24,\"y\":95,\"w\":23,\"h\":11,\"i\":\"18\"},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "All about those bytes", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "b60de070-4197-11e8-bb13-d53698fb349a", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "7ff2c4c0-4191-11e8-bb13-d53698fb349a", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "03d2afd0-4192-11e8-bb13-d53698fb349a", + "name": "2:panel_2", + "type": "visualization" + }, + { + "id": "63983430-4192-11e8-bb13-d53698fb349a", + "name": "3:panel_3", + "type": "visualization" + }, + { + "id": "0ca8c600-4195-11e8-bb13-d53698fb349a", + "name": "4:panel_4", + "type": "visualization" + }, + { + "id": "c10c6b00-4191-11e8-bb13-d53698fb349a", + "name": "5:panel_5", + "type": "visualization" + }, + { + "id": "760a9060-4190-11e8-bb13-d53698fb349a", + "name": "6:panel_6", + "type": "visualization" + }, + { + "id": "1dcdfe30-4192-11e8-bb13-d53698fb349a", + "name": "7:panel_7", + "type": "visualization" + }, + { + "id": "584c0300-4191-11e8-bb13-d53698fb349a", + "name": "8:panel_8", + "type": "visualization" + }, + { + "id": "b3e70d00-4190-11e8-bb13-d53698fb349a", + "name": "9:panel_9", + "type": "visualization" + }, + { + "id": "df72ad40-4194-11e8-bb13-d53698fb349a", + "name": "10:panel_10", + "type": "visualization" + }, + { + "id": "9bebe980-4192-11e8-bb13-d53698fb349a", + "name": "11:panel_11", + "type": "visualization" + }, + { + "id": "9fb4c670-4194-11e8-bb13-d53698fb349a", + "name": "12:panel_12", + "type": "visualization" + }, + { + "id": "35417e50-4194-11e8-bb13-d53698fb349a", + "name": "13:panel_13", + "type": "visualization" + }, + { + "id": "039e4770-4194-11e8-bb13-d53698fb349a", + "name": "14:panel_14", + "type": "visualization" + }, + { + "id": "76c7f020-4194-11e8-bb13-d53698fb349a", + "name": "15:panel_15", + "type": "visualization" + }, + { + "id": "8090dcb0-4195-11e8-bb13-d53698fb349a", + "name": "16:panel_16", + "type": "visualization" + }, + { + "id": "29bd0240-4197-11e8-bb13-d53698fb349a", + "name": "17:panel_17", + "type": "visualization" + }, + { + "id": "55d37a30-4197-11e8-bb13-d53698fb349a", + "name": "18:panel_18", + "type": "search" + } + ], + "type": "dashboard", + "updated_at": "2018-04-16T17:00:48.503Z", + "version": "WzIyMiwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: timelion", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(*, metric=avg:bytes, split=ip:5)\",\"interval\":\"auto\"},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "b92ae920-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.110Z", + "version": "WzIyOSwyXQ==" +} + +{ + "attributes": { + "columns": [ + "agent", + "bytes", + "clientip" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Rendering Test: saved search", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "be5accf0-3dca-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2018-04-17T15:09:39.805Z", + "version": "WzI1OSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"animal.keyword\",\"value\":\"dog\",\"params\":{\"query\":\"dog\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"animal.keyword\":{\"query\":\"dog\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" + }, + "savedSearchRefName": "search_0", + "title": "Filter Test: animals: linked to search with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Test: animals: linked to search with filter\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"name.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "befdb6b0-3e59-11e8-9fc3-39e49624228e", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T17:16:27.743Z", + "version": "WzI2NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-ts", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-ts\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"count\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"use_kibana_indexes\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "c40f4d40-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.347Z", + "version": "WzI0MCwyXQ==" +} + +{ + "attributes": { + "columns": [ + "agent", + "bytes", + "clientip" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[{\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"bytes\",\"value\":\"1,607\",\"params\":{\"query\":1607,\"type\":\"phrase\"},\"disabled\":false,\"alias\":null,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"bytes\":{\"query\":1607,\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Filter Bytes Test: search with filter", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "ca5ada40-3dca-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2018-04-17T15:09:55.976Z", + "version": "WzI2MCwyXQ==" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"weightLbs:<50\",\"language\":\"lucene\"},\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"name.keyword\",\"value\":\"Fee Fee\",\"params\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"name.keyword\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":true,\"useMargins\":true,\"hidePanelTitles\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"}]", + "timeRestore": false, + "title": "bug", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "cbd3bc30-3e5a-11e8-9fc3-39e49624228e", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "befdb6b0-3e59-11e8-9fc3-39e49624228e", + "name": "2:panel_2", + "type": "visualization" + }, + { + "id": "4c0c3f90-3e5a-11e8-9fc3-39e49624228e", + "name": "3:panel_3", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-12T14:07:12.243Z", + "version": "WzE2NywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-metric\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"metric\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"sum_of_squares\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "cc43fab0-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.353Z", + "version": "WzIzOSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"CN\",\"params\":{\"query\":\"CN\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"CN\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: area with not filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: area with not filter\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100,\"filter\":true},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"schema\":\"group\",\"params\":{\"filters\":[{\"input\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"label\":\"\"},{\"input\":{\"query\":\"bytes:>10\",\"language\":\"lucene\"}}]}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "e6140540-3dca-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.165Z", + "version": "WzI0NSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: goal", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: goal\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":4000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":2,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "ffa2e0c0-3dcb-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.153Z", + "version": "WzI0MSwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-guage", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-guage\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"gauge\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_color_rules\":[{\"id\":\"e0be22e0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "e4d8b430-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.106Z", + "version": "WzIzMCwyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-markdown", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-markdown\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"markdown\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_color_rules\":[{\"id\":\"e0be22e0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"markdown\":\"\\nHi Avg last bytes: {{ average_of_bytes.last.raw }}\",\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "f81134a0-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.355Z", + "version": "WzIzNywyXQ==" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-topn", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-topn\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"top_n\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"use_kibana_indexes\":false,\"hide_last_value_indicator\":true},\"aggs\":[]}" + }, + "coreMigrationVersion": "7.14.0", + "id": "df815d20-3dcc-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.349Z", + "version": "WzIzOCwyXQ==" +} + +{ + "attributes": { + "description": "I have one of every visualization type since the last time I was created!", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"panelIndex\":\"2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_2\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"4\"},\"panelIndex\":\"4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_4\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"5\"},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"6\"},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"7\"},\"panelIndex\":\"7\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"8\"},\"panelIndex\":\"8\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9\"},\"panelIndex\":\"9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_9\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"10\"},\"panelIndex\":\"10\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_10\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"11\"},\"panelIndex\":\"11\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_11\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"12\"},\"panelIndex\":\"12\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_12\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"13\"},\"panelIndex\":\"13\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_13\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"14\"},\"panelIndex\":\"14\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_14\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"15\"},\"panelIndex\":\"15\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_15\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"16\"},\"panelIndex\":\"16\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_16\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"17\"},\"panelIndex\":\"17\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_17\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":120,\"w\":24,\"h\":15,\"i\":\"18\"},\"panelIndex\":\"18\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_18\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":135,\"w\":24,\"h\":15,\"i\":\"19\"},\"panelIndex\":\"19\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_19\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":135,\"w\":24,\"h\":15,\"i\":\"20\"},\"panelIndex\":\"20\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_20\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":150,\"w\":24,\"h\":15,\"i\":\"21\"},\"panelIndex\":\"21\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_21\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":150,\"w\":24,\"h\":15,\"i\":\"22\"},\"panelIndex\":\"22\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_22\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":165,\"w\":24,\"h\":15,\"i\":\"23\"},\"panelIndex\":\"23\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_23\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"x\":24,\"y\":165,\"w\":24,\"h\":15,\"i\":\"24\"},\"panelIndex\":\"24\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_24\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":180,\"w\":24,\"h\":15,\"i\":\"25\"},\"panelIndex\":\"25\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_25\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"x\":24,\"y\":180,\"w\":24,\"h\":15,\"i\":\"26\"},\"panelIndex\":\"26\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_26\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":195,\"w\":24,\"h\":15,\"i\":\"27\"},\"panelIndex\":\"27\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_27\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":195,\"w\":24,\"h\":15,\"i\":\"28\"},\"panelIndex\":\"28\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_28\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":210,\"w\":24,\"h\":15,\"i\":\"29\"},\"panelIndex\":\"29\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_29\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":210,\"i\":\"30\"},\"panelIndex\":\"30\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_30\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "dashboard with everything", + "version": 1 + }, + "coreMigrationVersion": "7.14.0", + "id": "d2525040-3dcd-11e8-8660-4d65aa086b3c", + "migrationVersion": { + "dashboard": "7.11.0" + }, + "references": [ + { + "id": "e6140540-3dca-11e8-8660-4d65aa086b3c", + "name": "1:panel_1", + "type": "visualization" + }, + { + "id": "3525b840-3dcb-11e8-8660-4d65aa086b3c", + "name": "2:panel_2", + "type": "visualization" + }, + { + "id": "4b5d6ef0-3dcb-11e8-8660-4d65aa086b3c", + "name": "3:panel_3", + "type": "visualization" + }, + { + "id": "37a541c0-3dcc-11e8-8660-4d65aa086b3c", + "name": "4:panel_4", + "type": "visualization" + }, + { + "id": "ffa2e0c0-3dcb-11e8-8660-4d65aa086b3c", + "name": "5:panel_5", + "type": "visualization" + }, + { + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "name": "6:panel_6", + "type": "visualization" + }, + { + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "name": "7:panel_7", + "type": "visualization" + }, + { + "id": "2d1b1620-3dcd-11e8-8660-4d65aa086b3c", + "name": "8:panel_8", + "type": "visualization" + }, + { + "id": "42535e30-3dcd-11e8-8660-4d65aa086b3c", + "name": "9:panel_9", + "type": "visualization" + }, + { + "id": "42535e30-3dcd-11e8-8660-4d65aa086b3c", + "name": "10:panel_10", + "type": "visualization" + }, + { + "id": "4c0f47e0-3dcd-11e8-8660-4d65aa086b3c", + "name": "11:panel_11", + "type": "visualization" + }, + { + "id": "11ae2bd0-3dcc-11e8-8660-4d65aa086b3c", + "name": "12:panel_12", + "type": "visualization" + }, + { + "id": "3fe22200-3dcb-11e8-8660-4d65aa086b3c", + "name": "13:panel_13", + "type": "visualization" + }, + { + "id": "4ca00ba0-3dcc-11e8-8660-4d65aa086b3c", + "name": "14:panel_14", + "type": "visualization" + }, + { + "id": "78803be0-3dcd-11e8-8660-4d65aa086b3c", + "name": "15:panel_15", + "type": "visualization" + }, + { + "id": "b92ae920-3dcc-11e8-8660-4d65aa086b3c", + "name": "16:panel_16", + "type": "visualization" + }, + { + "id": "e4d8b430-3dcc-11e8-8660-4d65aa086b3c", + "name": "17:panel_17", + "type": "visualization" + }, + { + "id": "f81134a0-3dcc-11e8-8660-4d65aa086b3c", + "name": "18:panel_18", + "type": "visualization" + }, + { + "id": "cc43fab0-3dcc-11e8-8660-4d65aa086b3c", + "name": "19:panel_19", + "type": "visualization" + }, + { + "id": "02a2e4e0-3dcd-11e8-8660-4d65aa086b3c", + "name": "20:panel_20", + "type": "visualization" + }, + { + "id": "df815d20-3dcc-11e8-8660-4d65aa086b3c", + "name": "21:panel_21", + "type": "visualization" + }, + { + "id": "c40f4d40-3dcc-11e8-8660-4d65aa086b3c", + "name": "22:panel_22", + "type": "visualization" + }, + { + "id": "7fda8ee0-3dcd-11e8-8660-4d65aa086b3c", + "name": "23:panel_23", + "type": "visualization" + }, + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "24:panel_24", + "type": "search" + }, + { + "id": "be5accf0-3dca-11e8-8660-4d65aa086b3c", + "name": "25:panel_25", + "type": "search" + }, + { + "id": "ca5ada40-3dca-11e8-8660-4d65aa086b3c", + "name": "26:panel_26", + "type": "search" + }, + { + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "name": "27:panel_27", + "type": "visualization" + }, + { + "id": "5e085850-3e6e-11e8-bbb9-e15942d5d48c", + "name": "28:panel_28", + "type": "visualization" + }, + { + "id": "8bc8d6c0-3e6e-11e8-bbb9-e15942d5d48c", + "name": "29:panel_29", + "type": "visualization" + }, + { + "id": "befdb6b0-3e59-11e8-9fc3-39e49624228e", + "name": "30:panel_30", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-16T16:05:02.915Z", + "version": "WzIxOCwyXQ==" +} \ No newline at end of file diff --git a/test/functional/fixtures/kbn_archiver/saved_objects_management/export_transform.json b/test/functional/fixtures/kbn_archiver/saved_objects_management/export_transform.json new file mode 100644 index 0000000000000..4ae4d8649a0bd --- /dev/null +++ b/test/functional/fixtures/kbn_archiver/saved_objects_management/export_transform.json @@ -0,0 +1,91 @@ +{ + "id": "type_1-obj_1", + "attributes": { + "title": "test_1-obj_1", + "enabled": true + }, + "references": [], + "type": "test-export-transform", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_1-obj_2", + "attributes": { + "title": "test_1-obj_2", + "enabled": true + }, + "references": [], + "type": "test-export-transform", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_2-obj_1", + "attributes": { + "title": "test_2-obj_1" + }, + "references": [], + "type": "test-export-add", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_2-obj_2", + "attributes": { + "title": "test_2-obj_2" + }, + "references": [], + "type": "test-export-add", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_dep-obj_1", + "attributes": { + "title": "type_dep-obj_1" + }, + "references": [ + { + "id": "type_2-obj_1", + "type": "test-export-add" + } + ], + "type": "test-export-add-dep", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_dep-obj_2", + "attributes": { + "title": "type_dep-obj_2" + }, + "references": [ + { + "id": "type_2-obj_2", + "type": "test-export-add" + } + ], + "type": "test-export-add-dep", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_3-obj_1", + "attributes": { + "title": "test_2-obj_1" + }, + "references": [], + "type": "test-export-invalid-transform", + "updated_at": "2018-12-21T00:43:07.096Z" +} + +{ + "id": "type_4-obj_1", + "attributes": { + "title": "test_2-obj_1" + }, + "references": [], + "type": "test-export-transform-error", + "updated_at": "2018-12-21T00:43:07.096Z" +} \ No newline at end of file diff --git a/test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/data.json b/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_types.json similarity index 50% rename from test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/data.json rename to test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_types.json index ef86f5e74865e..2ece0ee218eba 100644 --- a/test/functional/fixtures/es_archiver/saved_objects_management/hidden_types/data.json +++ b/test/functional/fixtures/kbn_archiver/saved_objects_management/hidden_types.json @@ -1,71 +1,65 @@ { - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-actions-export-hidden:obj_1", - "source": { - "test-actions-export-hidden": { + "attributes": { + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "7.14.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "updated_at": "2017-09-21T18:49:16.270Z", + "version": "WzgsMl0=" +} + +{ + "id": "obj_1", + "attributes": { "title": "hidden object 1" - }, - "type": "test-actions-export-hidden", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } + }, + "references": [], + "type": "test-actions-export-hidden", + "updated_at": "2018-12-21T00:43:07.096Z" } { - "type": "doc", - "value": { - "index": ".kibana", - "id": "test-actions-export-hidden:obj_2", - "source": { - "test-actions-export-hidden": { + "id": "obj_2", + "attributes": { "title": "hidden object 2" - }, - "type": "test-actions-export-hidden", - "migrationVersion": {}, - "updated_at": "2018-12-21T00:43:07.096Z" - } - } + }, + "references": [], + "type": "test-actions-export-hidden", + "updated_at": "2018-12-21T00:43:07.096Z" } { - "type": "doc", - "value": { - "index": ".kibana", - "id": "visualization:75c3e060-1e7c-11e9-8488-65449e65d0ed", - "source": { - "visualization": { + "id": "75c3e060-1e7c-11e9-8488-65449e65d0ed", + "attributes": { "title": "A Pie", "visState": "{\"title\":\"A Pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":0,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" + "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" } - }, - "type": "visualization", - "updated_at": "2019-01-22T19:32:31.206Z" }, - "references" : [ - { - "name" : "kibanaSavedObjectMeta.searchSourceJSON.index", - "type" : "index-pattern", - "id" : "logstash-*" - } - ] - } + "references": [ + { + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern", + "id": "logstash-*" + } + ], + "type": "visualization", + "updated_at": "2019-01-22T19:32:31.206Z" } { - "type": "doc", - "value": { - "index": ".kibana", - "id": "dashboard:i-exist", - "source": { - "dashboard": { + "id": "i-exist", + "attributes": { "title": "A Dashboard", "hits": 0, "description": "", @@ -74,11 +68,10 @@ "version": 1, "timeRestore": false, "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[]}" } - }, - "type": "dashboard", - "updated_at": "2019-01-22T19:32:47.232Z" - } - } -} + }, + "references": [], + "type": "dashboard", + "updated_at": "2019-01-22T19:32:47.232Z" +} \ No newline at end of file diff --git a/test/plugin_functional/config.ts b/test/plugin_functional/config.ts index 1ff55edc010da..79c92ac01e1bf 100644 --- a/test/plugin_functional/config.ts +++ b/test/plugin_functional/config.ts @@ -44,7 +44,10 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { }, apps: functionalConfig.get('apps'), esArchiver: { - directory: path.resolve(__dirname, '../es_archives'), + directory: path.resolve(__dirname, '../functional/fixtures/es_archiver'), + }, + kbnArchiver: { + directory: path.resolve(__dirname, '../functional/fixtures/kbn_archiver'), }, screenshots: functionalConfig.get('screenshots'), junit: { diff --git a/test/plugin_functional/test_suites/core/deprecations.ts b/test/plugin_functional/test_suites/core/deprecations.ts index a78527d0d82e2..393d2f2538d0e 100644 --- a/test/plugin_functional/test_suites/core/deprecations.ts +++ b/test/plugin_functional/test_suites/core/deprecations.ts @@ -66,8 +66,8 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide ]; describe('deprecations service', () => { - before(() => esArchiver.load('../functional/fixtures/es_archiver/deprecations_service')); - after(() => esArchiver.unload('../functional/fixtures/es_archiver/deprecations_service')); + before(() => esArchiver.load('deprecations_service')); + after(() => esArchiver.unload('deprecations_service')); describe('GET /api/deprecations/', async () => { it('returns registered config deprecations and feature deprecations', async () => { diff --git a/test/plugin_functional/test_suites/custom_visualizations/index.js b/test/plugin_functional/test_suites/custom_visualizations/index.js index eaca1ad3f4d3b..a2def064d3e68 100644 --- a/test/plugin_functional/test_suites/custom_visualizations/index.js +++ b/test/plugin_functional/test_suites/custom_visualizations/index.js @@ -13,8 +13,8 @@ export default function ({ getService, loadTestFile }) { describe('custom visualizations', function () { before(async () => { - await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/logstash_functional'); - await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/visualize'); + await esArchiver.loadIfNeeded('logstash_functional'); + await esArchiver.loadIfNeeded('visualize'); await kibanaServer.uiSettings.replace({ 'dateFormat:tz': 'Australia/North', defaultIndex: 'logstash-*', diff --git a/test/plugin_functional/test_suites/data_plugin/index.ts b/test/plugin_functional/test_suites/data_plugin/index.ts index d39eb839d322d..cc0bee679538a 100644 --- a/test/plugin_functional/test_suites/data_plugin/index.ts +++ b/test/plugin_functional/test_suites/data_plugin/index.ts @@ -18,9 +18,7 @@ export default function ({ describe('data plugin', () => { before(async () => { - await esArchiver.loadIfNeeded( - '../functional/fixtures/es_archiver/getting_started/shakespeare' - ); + await esArchiver.loadIfNeeded('getting_started/shakespeare'); await PageObjects.common.navigateToApp('settings'); await PageObjects.settings.createIndexPattern('shakespeare', ''); }); diff --git a/test/plugin_functional/test_suites/data_plugin/session.ts b/test/plugin_functional/test_suites/data_plugin/session.ts index ae4f8ffdf4072..7e83e0e2e9d55 100644 --- a/test/plugin_functional/test_suites/data_plugin/session.ts +++ b/test/plugin_functional/test_suites/data_plugin/session.ts @@ -15,6 +15,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide const testSubjects = getService('testSubjects'); const toasts = getService('toasts'); const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const getSessionIds = async () => { const sessionsBtn = await testSubjects.find('showSessionsButton'); @@ -70,10 +71,8 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide describe('Dashboard', () => { before(async () => { - await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/dashboard/current/data'); - await esArchiver.loadIfNeeded( - '../functional/fixtures/es_archiver/dashboard/current/kibana' - ); + await esArchiver.loadIfNeeded('dashboard/current/data'); + await kibanaServer.importExport.load('dashboard/current/kibana'); await PageObjects.common.navigateToApp('dashboard'); await PageObjects.dashboard.loadSavedDashboard('dashboard with filter'); await PageObjects.header.waitUntilLoadingHasFinished(); @@ -85,8 +84,8 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide }); after(async () => { - await esArchiver.unload('../functional/fixtures/es_archiver/dashboard/current/data'); - await esArchiver.unload('../functional/fixtures/es_archiver/dashboard/current/kibana'); + await esArchiver.unload('dashboard/current/data'); + await kibanaServer.importExport.unload('dashboard/current/kibana'); }); it('on load there is a single session', async () => { diff --git a/test/plugin_functional/test_suites/doc_views/index.ts b/test/plugin_functional/test_suites/doc_views/index.ts index 2fed8e10ffc8e..6c931d670fbfa 100644 --- a/test/plugin_functional/test_suites/doc_views/index.ts +++ b/test/plugin_functional/test_suites/doc_views/index.ts @@ -13,7 +13,7 @@ export default function ({ getService, loadTestFile }: PluginFunctionalProviderC describe('doc views', function () { before(async () => { - await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/discover'); + await esArchiver.loadIfNeeded('discover'); }); loadTestFile(require.resolve('./doc_views')); diff --git a/test/plugin_functional/test_suites/panel_actions/index.js b/test/plugin_functional/test_suites/panel_actions/index.js index 4951b810854fe..a1804149b6f14 100644 --- a/test/plugin_functional/test_suites/panel_actions/index.js +++ b/test/plugin_functional/test_suites/panel_actions/index.js @@ -6,17 +6,6 @@ * Side Public License, v 1. */ -import path from 'path'; - -export const KIBANA_ARCHIVE_PATH = path.resolve( - __dirname, - '../../../functional/fixtures/es_archiver/dashboard/current/kibana' -); -export const DATA_ARCHIVE_PATH = path.resolve( - __dirname, - '../../../functional/fixtures/es_archiver/dashboard/current/data' -); - export default function ({ getService, getPageObjects, loadTestFile }) { const browser = getService('browser'); const esArchiver = getService('esArchiver'); @@ -26,8 +15,8 @@ export default function ({ getService, getPageObjects, loadTestFile }) { describe('pluggable panel actions', function () { before(async () => { await browser.setWindowSize(1300, 900); - await esArchiver.load(KIBANA_ARCHIVE_PATH); - await esArchiver.loadIfNeeded(DATA_ARCHIVE_PATH); + await kibanaServer.importExport.load('dashboard/current/kibana'); + await esArchiver.loadIfNeeded('dashboard/current/data'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*', }); @@ -37,8 +26,8 @@ export default function ({ getService, getPageObjects, loadTestFile }) { after(async function () { await PageObjects.dashboard.clearSavedObjectsFromAppLinks(); - await esArchiver.unload(KIBANA_ARCHIVE_PATH); - await esArchiver.unload(DATA_ARCHIVE_PATH); + await kibanaServer.importExport.unload('dashboard/current/kibana'); + await esArchiver.unload('dashboard/current/data'); }); loadTestFile(require.resolve('./panel_actions')); diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts index 666afe1acedca..5e67069ecb7a4 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/delete.ts @@ -6,23 +6,39 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('delete', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync( + path.resolve(__dirname, '../saved_objects_management/bulk/hidden_saved_objects.ndjson') + ) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: ['test-hidden-importable-exportable', 'test-hidden-non-importable-exportable'], + }, + }, + }, + }) ); it('should return generic 404 when trying to delete a doc with importableAndExportable types', async () => diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts index af25835db5a81..2c66953ef8e5b 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/export.ts @@ -6,6 +6,8 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; @@ -15,20 +17,33 @@ function ndjsonToObject(input: string): string[] { export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('export', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync( + path.resolve(__dirname, '../saved_objects_management/bulk/hidden_saved_objects.ndjson') + ) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: ['test-hidden-importable-exportable', 'test-hidden-non-importable-exportable'], + }, + }, + }, + }) ); - it('exports objects with importableAndExportable types', async () => await supertest .post('/api/saved_objects/_export') diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts index 723140f5c6bf5..5650acf6250e8 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/find.ts @@ -6,23 +6,39 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('find', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync( + path.resolve(__dirname, '../saved_objects_management/bulk/hidden_saved_objects.ndjson') + ) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: ['test-hidden-importable-exportable', 'test-hidden-non-importable-exportable'], + }, + }, + }, + }) ); it('returns empty response for importableAndExportable types', async () => diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/import.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/import.ts index 5de7d8375dd8c..b9862bef99a21 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/import.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/import.ts @@ -6,23 +6,39 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('import', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync( + path.resolve(__dirname, '../saved_objects_management/bulk/hidden_saved_objects.ndjson') + ) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: ['test-hidden-importable-exportable', 'test-hidden-non-importable-exportable'], + }, + }, + }, + }) ); it('imports objects with importableAndExportable type', async () => { diff --git a/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts b/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts index dddee085ae22b..b877db676cd63 100644 --- a/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts +++ b/test/plugin_functional/test_suites/saved_objects_hidden_type/resolve_import_errors.ts @@ -6,23 +6,39 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('export', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync( + path.resolve(__dirname, '../saved_objects_management/bulk/hidden_saved_objects.ndjson') + ) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: ['test-hidden-importable-exportable', 'test-hidden-non-importable-exportable'], + }, + }, + }, + }) ); it('resolves objects with importableAndExportable types', async () => { diff --git a/test/plugin_functional/test_suites/saved_objects_management/bulk/hidden_saved_objects.ndjson b/test/plugin_functional/test_suites/saved_objects_management/bulk/hidden_saved_objects.ndjson new file mode 100644 index 0000000000000..f02b093d73ed2 --- /dev/null +++ b/test/plugin_functional/test_suites/saved_objects_management/bulk/hidden_saved_objects.ndjson @@ -0,0 +1,4 @@ +{ "index" : { "_index" : ".kibana", "_id" : "test-hidden-importable-exportable:ff3733a0-9fty-11e7-ahb3-3dcb94193fab" } } +{ "type" : "test-hidden-importable-exportable", "updated_at": "2021-02-11T18:51:23.794Z", "test-hidden-importable-exportable": { "title": "Hidden Saved object type that is importable/exportable." } } +{ "index" : { "_index" : ".kibana", "_id" : "test-hidden-non-importable-exportable:op3767a1-9rcg-53u7-jkb3-3dnb74193awc" } } +{ "type" : "test-hidden-non-importable-exportable", "updated_at": "2021-02-11T18:51:23.794Z", "test-hidden-non-importable-exportable": { "title": "Hidden Saved object type that is not importable/exportable." } } diff --git a/test/plugin_functional/test_suites/saved_objects_management/export_transform.ts b/test/plugin_functional/test_suites/saved_objects_management/export_transform.ts index 87bf5e0584a7d..7ade3e9a644f6 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/export_transform.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/export_transform.ts @@ -16,20 +16,11 @@ function parseNdJson(input: string): Array> { export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); describe('export transforms', () => { - before(async () => { - await esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/export_transform' - ); - }); - - after(async () => { - await esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/export_transform' - ); - }); + before(() => kibanaServer.importExport.load('saved_objects_management/export_transform')); + after(() => kibanaServer.importExport.unload('saved_objects_management/export_transform')); it('allows to mutate the objects during an export', async () => { await supertest diff --git a/test/plugin_functional/test_suites/saved_objects_management/find.ts b/test/plugin_functional/test_suites/saved_objects_management/find.ts index e5a5d69c7e4d4..95a7f0d9f335e 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/find.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/find.ts @@ -6,25 +6,43 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('find', () => { describe('saved objects with hidden type', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync(path.resolve(__dirname, './bulk/hidden_saved_objects.ndjson')) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: [ + 'test-hidden-importable-exportable', + 'test-hidden-non-importable-exportable', + ], + }, + }, + }, + }) ); + it('returns saved objects with importableAndExportable types', async () => await supertest .get( diff --git a/test/plugin_functional/test_suites/saved_objects_management/get.ts b/test/plugin_functional/test_suites/saved_objects_management/get.ts index fa35983df8301..dcf281a9fa473 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/get.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/get.ts @@ -6,25 +6,43 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); describe('get', () => { describe('saved objects with hidden type', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync(path.resolve(__dirname, './bulk/hidden_saved_objects.ndjson')) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: [ + 'test-hidden-importable-exportable', + 'test-hidden-non-importable-exportable', + ], + }, + }, + }, + }) ); + const hiddenTypeExportableImportable = 'test-hidden-importable-exportable/ff3733a0-9fty-11e7-ahb3-3dcb94193fab'; const hiddenTypeNonExportableImportable = diff --git a/test/plugin_functional/test_suites/saved_objects_management/hidden_types.ts b/test/plugin_functional/test_suites/saved_objects_management/hidden_types.ts index 464b7c6e7ced7..6ff7835d2bdbc 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/hidden_types.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/hidden_types.ts @@ -18,21 +18,12 @@ const fixturePaths = { export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) { const PageObjects = getPageObjects(['common', 'settings', 'header', 'savedObjects']); const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); - describe('saved objects management with hidden types', () => { - before(async () => { - await esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_types' - ); - }); - - after(async () => { - await esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_types' - ); - }); + describe('with hidden types', () => { + before(() => kibanaServer.importExport.load('saved_objects_management/hidden_types')); + after(() => kibanaServer.importExport.unload('saved_objects_management/hidden_types')); beforeEach(async () => { await PageObjects.settings.navigateTo(); diff --git a/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts b/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts index f74cd5b938447..dba9885350b22 100644 --- a/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts +++ b/test/plugin_functional/test_suites/saved_objects_management/scroll_count.ts @@ -6,25 +6,42 @@ * Side Public License, v 1. */ +import fs from 'fs'; +import path from 'path'; import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService }: PluginFunctionalProviderContext) { const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); + const es = getService('es'); const apiUrl = '/api/kibana/management/saved_objects/scroll/counts'; describe('scroll_count', () => { describe('saved objects with hidden type', () => { before(() => - esArchiver.load( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.bulk({ + refresh: 'wait_for', + body: fs + .readFileSync(path.resolve(__dirname, './bulk/hidden_saved_objects.ndjson')) + .toString() + .split('\n'), + }) ); + after(() => - esArchiver.unload( - '../functional/fixtures/es_archiver/saved_objects_management/hidden_saved_objects' - ) + es.deleteByQuery({ + index: '.kibana', + body: { + query: { + terms: { + type: [ + 'test-hidden-importable-exportable', + 'test-hidden-non-importable-exportable', + ], + }, + }, + }, + }) ); it('only counts hidden types that are importableAndExportable', async () => { diff --git a/x-pack/test/functional/es_archives/getting_started/shakespeare/mappings.json b/x-pack/test/functional/es_archives/getting_started/shakespeare/mappings.json index 0e030c54d4912..c9b63dd079f86 100644 --- a/x-pack/test/functional/es_archives/getting_started/shakespeare/mappings.json +++ b/x-pack/test/functional/es_archives/getting_started/shakespeare/mappings.json @@ -20,8 +20,8 @@ }, "settings": { "index": { - "number_of_replicas": "1", - "number_of_shards": "5" + "number_of_replicas": "0", + "number_of_shards": "1" } } } diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/bwc_generation_urls.ts b/x-pack/test/reporting_api_integration/reporting_and_security/bwc_generation_urls.ts index fd194a1df1f65..2678075483305 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/bwc_generation_urls.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/bwc_generation_urls.ts @@ -10,9 +10,9 @@ import pathNode from 'path'; import { FtrProviderContext } from '../ftr_provider_context'; import * as GenerationUrls from '../services/generation_urls'; -const OSS_KIBANA_ARCHIVE_PATH = pathNode.resolve( +const KIBANA_ARCHIVE_PATH = pathNode.resolve( REPO_ROOT, - 'test/functional/fixtures/es_archiver/dashboard/current/kibana' + 'test/functional/fixtures/kbn_archiver/dashboard/current/kibana' ); const OSS_DATA_ARCHIVE_PATH = pathNode.resolve( REPO_ROOT, @@ -27,7 +27,7 @@ export default function ({ getService }: FtrProviderContext) { describe('BWC report generation urls', () => { before(async () => { - await esArchiver.load(OSS_KIBANA_ARCHIVE_PATH); + await kibanaServer.importExport.load(KIBANA_ARCHIVE_PATH); await esArchiver.load(OSS_DATA_ARCHIVE_PATH); await kibanaServer.uiSettings.update({ @@ -36,6 +36,8 @@ export default function ({ getService }: FtrProviderContext) { await reportingAPI.deleteAllReports(); }); + after(() => kibanaServer.importExport.unload(KIBANA_ARCHIVE_PATH)); + describe('Pre 6_2', () => { // The URL being tested was captured from release 6.4 and then the layout section was removed to test structure before // preserve_layout was introduced. See https://github.com/elastic/kibana/issues/23414 diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/usage.ts b/x-pack/test/reporting_api_integration/reporting_and_security/usage.ts index a69534cfc4df7..154ff3c1bea55 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/usage.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/usage.ts @@ -12,9 +12,9 @@ import { FtrProviderContext } from '../ftr_provider_context'; import * as GenerationUrls from '../services/generation_urls'; import { ReportingUsageStats } from '../services/usage'; -const OSS_KIBANA_ARCHIVE_PATH = path.resolve( +const KIBANA_ARCHIVE_PATH = path.resolve( REPO_ROOT, - 'test/functional/fixtures/es_archiver/dashboard/current/kibana' + 'test/functional/fixtures/kbn_archiver/dashboard/current/kibana' ); const OSS_DATA_ARCHIVE_PATH = path.resolve( REPO_ROOT, @@ -35,7 +35,7 @@ export default function ({ getService }: FtrProviderContext) { describe('Usage', () => { before(async () => { - await esArchiver.load(OSS_KIBANA_ARCHIVE_PATH); + await kibanaServer.importExport.load(KIBANA_ARCHIVE_PATH); await esArchiver.load(OSS_DATA_ARCHIVE_PATH); await kibanaServer.uiSettings.update({ @@ -45,7 +45,7 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await esArchiver.unload(OSS_KIBANA_ARCHIVE_PATH); + await kibanaServer.importExport.unload(KIBANA_ARCHIVE_PATH); await esArchiver.unload(OSS_DATA_ARCHIVE_PATH); });