From b9cfb93d322cfbc69cab8afbb99084add0d881e4 Mon Sep 17 00:00:00 2001 From: Abdulrasheed Lawal Date: Wed, 13 Sep 2023 11:31:49 +0100 Subject: [PATCH 01/11] fix(property-select): trim whitespace from select options in PropertyFilters (#17303) --- .../PropertyFilters/components/PropertyValue.tsx | 10 ++-------- .../LemonSelectMultiple/LemonSelectMultiple.tsx | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/frontend/src/lib/components/PropertyFilters/components/PropertyValue.tsx b/frontend/src/lib/components/PropertyFilters/components/PropertyValue.tsx index eed63c5ca7258..3d07a4bed1261 100644 --- a/frontend/src/lib/components/PropertyFilters/components/PropertyValue.tsx +++ b/frontend/src/lib/components/PropertyFilters/components/PropertyValue.tsx @@ -109,9 +109,9 @@ export function PropertyValue({ const commonInputProps = { onSearch: (newInput: string) => { - setInput(newInput) + setInput(newInput.trim()) if (!Object.keys(options).includes(newInput) && !(operator && isOperatorFlag(operator))) { - load(newInput) + load(newInput.trim()) } }, ['data-attr']: 'prop-val', @@ -212,12 +212,6 @@ export function PropertyValue({ setInput(option.title) setValue(toString(val)) }} - onKeyDown={(e) => { - if (e.key === 'Enter') { - setInput(toString(input)) - setValue(toString(input)) - } - }} ref={autoCompleteRef} > {[ diff --git a/frontend/src/lib/lemon-ui/LemonSelectMultiple/LemonSelectMultiple.tsx b/frontend/src/lib/lemon-ui/LemonSelectMultiple/LemonSelectMultiple.tsx index 5cdbadf0510a7..4bec9b6b1002d 100644 --- a/frontend/src/lib/lemon-ui/LemonSelectMultiple/LemonSelectMultiple.tsx +++ b/frontend/src/lib/lemon-ui/LemonSelectMultiple/LemonSelectMultiple.tsx @@ -87,7 +87,7 @@ export function LemonSelectMultiple({ const typedOnChange = onChange as (newValue: LabelInValue[]) => void typedOnChange(typedValues) } else { - const typedValues = v as string[] + const typedValues = v.map((token) => token.toString().trim()) as string[] const typedOnChange = onChange as (newValue: string[]) => void typedOnChange(typedValues) } From 031654201db71821788e46ba3c34f5e76598cc31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 13 Sep 2023 13:36:52 +0200 Subject: [PATCH 02/11] feat: Skip migrate for disabled plugins unless flag is passed (#17347) --- .../commands/create_batch_export_from_app.py | 10 +- .../test/test_create_batch_export_from_app.py | 97 ++++++++++++++++--- 2 files changed, 93 insertions(+), 14 deletions(-) diff --git a/posthog/management/commands/create_batch_export_from_app.py b/posthog/management/commands/create_batch_export_from_app.py index 20b0b4c89ca86..eadf71532db02 100644 --- a/posthog/management/commands/create_batch_export_from_app.py +++ b/posthog/management/commands/create_batch_export_from_app.py @@ -48,6 +48,12 @@ def add_arguments(self, parser): default=False, help="Backfill the newly created BatchExport with the last period of data.", ) + parser.add_argument( + "--migrate-disabled-plugin-config", + action="store_true", + default=False, + help="Migrate a PluginConfig even if its disabled.", + ) def handle(self, *args, **options): """Handle creation of a BatchExport from a given PluginConfig.""" @@ -82,8 +88,8 @@ def handle(self, *args, **options): "destination_data": destination_data, } - if dry_run is True: - self.stdout.write("No BatchExport will be created as this is a dry run or confirmation check rejected.") + if dry_run is True or (options["migrate_disabled_plugin_config"] is False and plugin_config.enabled is False): + self.stdout.write("No BatchExport will be created as this is a dry run or existing plugin is disabled.") return json.dumps(batch_export_data, indent=4, default=str) else: destination = BatchExportDestination(**batch_export_data["destination_data"]) diff --git a/posthog/management/commands/test/test_create_batch_export_from_app.py b/posthog/management/commands/test/test_create_batch_export_from_app.py index 4a51975d86648..bbbb36079d013 100644 --- a/posthog/management/commands/test/test_create_batch_export_from_app.py +++ b/posthog/management/commands/test/test_create_batch_export_from_app.py @@ -1,4 +1,5 @@ import datetime as dt +import itertools import json import typing @@ -116,6 +117,20 @@ def plugin_config(request, s3_plugin_config, snowflake_plugin_config) -> PluginC raise ValueError(f"Unsupported plugin: {request.param}") +@pytest.fixture +def disabled_plugin_config(request, s3_plugin_config, snowflake_plugin_config) -> PluginConfig: + if request.param == "S3": + s3_plugin_config.enabled = False + s3_plugin_config.save() + return s3_plugin_config + elif request.param == "Snowflake": + snowflake_plugin_config.enabled = False + snowflake_plugin_config.save() + return snowflake_plugin_config + else: + raise ValueError(f"Unsupported plugin: {request.param}") + + @pytest.mark.django_db @pytest.mark.parametrize( "plugin_config,config,expected_type", @@ -155,7 +170,6 @@ def test_create_batch_export_from_app_fails_with_mismatched_team_id(plugin_confi @pytest.mark.parametrize("plugin_config", ["S3", "Snowflake"], indirect=True) def test_create_batch_export_from_app_dry_run(plugin_config): """Test a dry_run of the create_batch_export_from_app command.""" - output = call_command( "create_batch_export_from_app", f"--plugin-config-id={plugin_config.id}", @@ -166,6 +180,7 @@ def test_create_batch_export_from_app_dry_run(plugin_config): batch_export_data = json.loads(output) + assert "id" not in batch_export_data assert batch_export_data["team_id"] == plugin_config.team.id assert batch_export_data["interval"] == "hour" assert batch_export_data["name"] == f"{export_type} Export" @@ -178,19 +193,14 @@ def test_create_batch_export_from_app_dry_run(plugin_config): @pytest.mark.django_db @pytest.mark.parametrize( "interval,plugin_config,disable_plugin_config", - [ - ("hour", "S3", True), - ("hour", "S3", False), - ("day", "S3", True), - ("day", "S3", False), - ("hour", "Snowflake", True), - ("hour", "Snowflake", False), - ("day", "Snowflake", True), - ("day", "Snowflake", False), - ], + itertools.product(["hour", "day"], ["S3", "Snowflake"], [True, False]), indirect=["plugin_config"], ) -def test_create_batch_export_from_app(interval, plugin_config, disable_plugin_config): +def test_create_batch_export_from_app( + interval, + plugin_config, + disable_plugin_config, +): """Test a live run of the create_batch_export_from_app command.""" args = [ f"--plugin-config-id={plugin_config.id}", @@ -237,6 +247,69 @@ def test_create_batch_export_from_app(interval, plugin_config, disable_plugin_co assert args[key] == expected +@pytest.mark.django_db +@pytest.mark.parametrize( + "interval,disabled_plugin_config,migrate_disabled_plugin_config", + itertools.product(["hour", "day"], ["S3", "Snowflake"], [True, False]), + indirect=["disabled_plugin_config"], +) +def test_create_batch_export_from_app_with_disabled_plugin( + interval, + disabled_plugin_config, + migrate_disabled_plugin_config, +): + """Test a live run of the create_batch_export_from_app command.""" + args = [ + f"--plugin-config-id={disabled_plugin_config.id}", + f"--team-id={disabled_plugin_config.team.id}", + f"--interval={interval}", + ] + if migrate_disabled_plugin_config: + args.append("--migrate-disabled-plugin-config") + + output = call_command("create_batch_export_from_app", *args) + + disabled_plugin_config.refresh_from_db() + assert disabled_plugin_config.enabled is False + + export_type, config = map_plugin_config_to_destination(disabled_plugin_config) + + batch_export_data = json.loads(output) + + assert batch_export_data["team_id"] == disabled_plugin_config.team.id + assert batch_export_data["interval"] == interval + assert batch_export_data["name"] == f"{export_type} Export" + assert batch_export_data["destination_data"] == { + "type": export_type, + "config": config, + } + + if not migrate_disabled_plugin_config: + assert "id" not in batch_export_data + return + + assert "id" in batch_export_data + + temporal = sync_connect() + + schedule = describe_schedule(temporal, str(batch_export_data["id"])) + expected_interval = dt.timedelta(**{f"{interval}s": 1}) + assert schedule.schedule.spec.intervals[0].every == expected_interval + + codec = EncryptionCodec(settings=settings) + decoded_payload = async_to_sync(codec.decode)(schedule.schedule.action.args) + args = json.loads(decoded_payload[0].data) + + # Common inputs + assert args["team_id"] == disabled_plugin_config.team.pk + assert args["batch_export_id"] == str(batch_export_data["id"]) + assert args["interval"] == interval + + # Type specific inputs + for key, expected in config.items(): + assert args[key] == expected + + @async_to_sync async def list_workflows(temporal, schedule_id: str): """List Workflows scheduled by given Schedule.""" From e2a3bcf567433f0f69383ab01a9d57328fbceac7 Mon Sep 17 00:00:00 2001 From: Ben White Date: Wed, 13 Sep 2023 14:57:42 +0200 Subject: [PATCH 03/11] feat: Added button in playlist player to add the Replay below (#17411) --- .../player/PlayerMetaLinks.tsx | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx b/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx index fc5f0cc5ed158..451f1cf616f8a 100644 --- a/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx +++ b/frontend/src/scenes/session-recordings/player/PlayerMetaLinks.tsx @@ -4,16 +4,18 @@ import { } from 'scenes/session-recordings/player/sessionRecordingPlayerLogic' import { useActions, useValues } from 'kea' import { LemonButton, LemonButtonProps } from 'lib/lemon-ui/LemonButton' -import { IconComment, IconDelete, IconLink } from 'lib/lemon-ui/icons' +import { IconComment, IconDelete, IconJournalPlus, IconLink } from 'lib/lemon-ui/icons' import { openPlayerShareDialog } from 'scenes/session-recordings/player/share/PlayerShare' import { PlaylistPopoverButton } from './playlist-popover/PlaylistPopover' import { LemonDialog } from 'lib/lemon-ui/LemonDialog' import { NotebookSelectButton } from 'scenes/notebooks/NotebookSelectButton/NotebookSelectButton' import { NotebookNodeType } from '~/types' +import { useNotebookNode } from 'scenes/notebooks/Nodes/notebookNodeLogic' export function PlayerMetaLinks(): JSX.Element { const { sessionRecordingId, logicProps } = useValues(sessionRecordingPlayerLogic) const { setPause, deleteRecording } = useActions(sessionRecordingPlayerLogic) + const nodeLogic = useNotebookNode() const getCurrentPlayerTime = (): number => { // NOTE: We pull this value at call time as otherwise it would trigger re-renders if pulled from the hook @@ -78,9 +80,24 @@ export function PlayerMetaLinks(): JSX.Element { Share - - Pin - + {nodeLogic ? ( + nodeLogic.props.nodeType !== NotebookNodeType.Recording ? ( + } + size="small" + onClick={() => { + nodeLogic.actions.insertAfter({ + type: NotebookNodeType.Recording, + attrs: { id: sessionRecordingId }, + }) + }} + /> + ) : null + ) : ( + + Pin + + )} {logicProps.playerKey !== 'modal' && ( Date: Wed, 13 Sep 2023 14:58:00 +0200 Subject: [PATCH 04/11] feat: Create insight graphs directly in Notebooks (#17404) --- .../notebooks/Nodes/NotebookNodeQuery.tsx | 6 + .../scenes/notebooks/Notebook/Notebook.scss | 2 +- .../notebooks/Notebook/SlashCommands.tsx | 185 +++++++++++++++++- 3 files changed, 190 insertions(+), 3 deletions(-) diff --git a/frontend/src/scenes/notebooks/Nodes/NotebookNodeQuery.tsx b/frontend/src/scenes/notebooks/Nodes/NotebookNodeQuery.tsx index 3616fe485725a..da4c15000bc40 100644 --- a/frontend/src/scenes/notebooks/Nodes/NotebookNodeQuery.tsx +++ b/frontend/src/scenes/notebooks/Nodes/NotebookNodeQuery.tsx @@ -123,6 +123,12 @@ export const NotebookNodeQuery = createPostHogWidgetNode, + command: (chain) => + chain.insertContent({ + type: NotebookNodeType.Query, + attrs: { + query: { + kind: 'InsightVizNode', + source: { + kind: 'TrendsQuery', + filterTestAccounts: false, + series: [ + { + kind: 'EventsNode', + event: '$pageview', + name: '$pageview', + math: 'total', + }, + ], + interval: 'day', + trendsFilter: { + display: 'ActionsLineGraph', + }, + }, + }, + }, + }), + }, + { + title: 'Funnel', + search: 'funnel insight', + icon: , + command: (chain) => + chain.insertContent({ + type: NotebookNodeType.Query, + attrs: { + query: { + kind: 'InsightVizNode', + source: { + kind: 'FunnelsQuery', + series: [ + { + kind: 'EventsNode', + name: '$pageview', + event: '$pageview', + }, + { + kind: 'EventsNode', + name: '$pageview', + event: '$pageview', + }, + ], + funnelsFilter: { + funnel_viz_type: 'steps', + }, + }, + }, + }, + }), + }, + { + title: 'Retention', + search: 'retention insight', + icon: , + command: (chain) => + chain.insertContent({ + type: NotebookNodeType.Query, + attrs: { + query: { + kind: 'InsightVizNode', + source: { + kind: 'RetentionQuery', + retentionFilter: { + period: 'Day', + total_intervals: 11, + target_entity: { + id: '$pageview', + name: '$pageview', + type: 'events', + }, + returning_entity: { + id: '$pageview', + name: '$pageview', + type: 'events', + }, + retention_type: 'retention_first_time', + }, + }, + }, + }, + }), + }, + { + title: 'Paths', + search: 'paths insight', + icon: , + command: (chain) => + chain.insertContent({ + type: NotebookNodeType.Query, + attrs: { + query: { + kind: 'InsightVizNode', + source: { + kind: 'PathsQuery', + pathsFilter: { + include_event_types: ['$pageview'], + }, + }, + }, + }, + }), + }, + { + title: 'Stickiness', + search: 'stickiness insight', + icon: , + command: (chain) => + chain.insertContent({ + type: NotebookNodeType.Query, + attrs: { + query: { + kind: 'InsightVizNode', + source: { + kind: 'StickinessQuery', + series: [ + { + kind: 'EventsNode', + name: '$pageview', + event: '$pageview', + math: 'total', + }, + ], + stickinessFilter: {}, + }, + }, + }, + }), + }, + { + title: 'Lifecycle', + search: 'lifecycle insight', + icon: , + command: (chain) => + chain.insertContent({ + type: NotebookNodeType.Query, + attrs: { + query: { + kind: 'InsightVizNode', + source: { + kind: 'LifecycleQuery', + series: [ + { + kind: 'EventsNode', + name: '$pageview', + event: '$pageview', + math: 'total', + }, + ], + lifecycleFilter: { + shown_as: 'Lifecycle', + }, + }, + full: true, + }, + }, + }), + }, { title: 'HogQL', search: 'sql', - icon: , + icon: , command: (chain) => chain.insertContent({ type: NotebookNodeType.Query, attrs: { query: examples['HogQLTable'] } }), }, From 7c9d67e6ff38242f45a6d57b3264cacf550150e0 Mon Sep 17 00:00:00 2001 From: Neil Kakkar Date: Wed, 13 Sep 2023 14:32:16 +0100 Subject: [PATCH 05/11] feat: Allow creating a basic survey from a flag (#17358) --- .../test/__snapshots__/test_cohort.ambr | 20 +- .../test/__snapshots__/test_property.ambr | 2 +- ...ickhouse_experiment_secondary_results.ambr | 162 +++- .../test_clickhouse_experiments.ambr | 818 +++++++++++++----- .../views/test/test_clickhouse_experiments.py | 2 +- ...ok-select-button--closed-popover-state.png | Bin 2179 -> 1429 bytes ...onents-notebook-select-button--default.png | Bin 15918 -> 12357 bytes ...-with-no-existing-containing-notebooks.png | Bin 14097 -> 11022 bytes ...ebook-select-button--with-no-notebooks.png | Bin 15918 -> 12357 bytes ...h-slow-network-response-closed-popover.png | Bin 2576 -> 1697 bytes ...ect-button--with-slow-network-response.png | Bin 16246 -> 12609 bytes ...ordings-play-list-no-pinned-recordings.png | Bin 76583 -> 77018 bytes .../queries/nodes/DataTable/dataTableLogic.ts | 3 +- .../FeatureFlagCodeInstructions.stories.tsx | 1 + .../feature-flags/activityDescriptions.tsx | 1 + .../feature-flags/featureFlagLogic.test.ts | 1 + .../scenes/feature-flags/featureFlagLogic.ts | 54 +- .../notebooks/Nodes/NotebookNodeFlag.tsx | 73 +- .../notebooks/Nodes/NotebookNodeFlagLogic.tsx | 21 +- .../notebooks/Nodes/NotebookNodeSurvey.tsx | 9 +- frontend/src/scenes/surveys/surveyLogic.tsx | 28 +- frontend/src/types.ts | 1 + ...Side-Bar-Shown-Mobile-1-chromium-linux.png | Bin 35920 -> 35929 bytes posthog/api/feature_flag.py | 14 +- posthog/api/test/test_feature_flag.py | 4 +- posthog/api/test/test_survey.py | 74 ++ 26 files changed, 1011 insertions(+), 277 deletions(-) diff --git a/ee/clickhouse/models/test/__snapshots__/test_cohort.ambr b/ee/clickhouse/models/test/__snapshots__/test_cohort.ambr index d8c1a92e6e35f..955c3b33da9d3 100644 --- a/ee/clickhouse/models/test/__snapshots__/test_cohort.ambr +++ b/ee/clickhouse/models/test/__snapshots__/test_cohort.ambr @@ -83,7 +83,7 @@ (SELECT pdi.person_id AS person_id, countIf(timestamp > now() - INTERVAL 2 year AND timestamp < now() - AND event = '$pageview') > 0 AS performed_event_condition_15_level_level_0_level_0_level_0_0 + AND event = '$pageview') > 0 AS performed_event_condition_17_level_level_0_level_0_level_0_0 FROM events e INNER JOIN (SELECT distinct_id, @@ -113,7 +113,7 @@ HAVING max(is_deleted) = 0 AND (((((NOT has(['something1'], replaceRegexpAll(JSONExtractRaw(argMax(person.properties, version), '$some_prop'), '^"|"$', ''))))))))) person ON person.person_id = behavior_query.person_id WHERE 1 = 1 - AND ((((performed_event_condition_15_level_level_0_level_0_level_0_0)))) ) as person + AND ((((performed_event_condition_17_level_level_0_level_0_level_0_0)))) ) as person UNION ALL SELECT person_id, cohort_id, @@ -148,7 +148,7 @@ (SELECT pdi.person_id AS person_id, countIf(timestamp > now() - INTERVAL 2 year AND timestamp < now() - AND event = '$pageview') > 0 AS performed_event_condition_17_level_level_0_level_0_level_0_0 + AND event = '$pageview') > 0 AS performed_event_condition_19_level_level_0_level_0_level_0_0 FROM events e INNER JOIN (SELECT distinct_id, @@ -178,7 +178,7 @@ HAVING max(is_deleted) = 0 AND (((((NOT has(['something1'], replaceRegexpAll(JSONExtractRaw(argMax(person.properties, version), '$some_prop'), '^"|"$', ''))))))))) person ON person.person_id = behavior_query.person_id WHERE 1 = 1 - AND ((((performed_event_condition_17_level_level_0_level_0_level_0_0)))) ) )) + AND ((((performed_event_condition_19_level_level_0_level_0_level_0_0)))) ) )) ' --- # name: TestCohort.test_cohortpeople_with_not_in_cohort_operator_for_behavioural_cohorts @@ -195,7 +195,7 @@ FROM (SELECT pdi.person_id AS person_id, minIf(timestamp, event = 'signup') >= now() - INTERVAL 15 day - AND minIf(timestamp, event = 'signup') < now() as first_time_condition_18_level_level_0_level_0_0 + AND minIf(timestamp, event = 'signup') < now() as first_time_condition_20_level_level_0_level_0_0 FROM events e INNER JOIN (SELECT distinct_id, @@ -208,7 +208,7 @@ AND event IN ['signup'] GROUP BY person_id) behavior_query WHERE 1 = 1 - AND (((first_time_condition_18_level_level_0_level_0_0))) ) as person + AND (((first_time_condition_20_level_level_0_level_0_0))) ) as person UNION ALL SELECT person_id, cohort_id, @@ -237,9 +237,9 @@ (SELECT pdi.person_id AS person_id, countIf(timestamp > now() - INTERVAL 2 year AND timestamp < now() - AND event = '$pageview') > 0 AS performed_event_condition_19_level_level_0_level_0_level_0_0, + AND event = '$pageview') > 0 AS performed_event_condition_21_level_level_0_level_0_level_0_0, minIf(timestamp, event = 'signup') >= now() - INTERVAL 15 day - AND minIf(timestamp, event = 'signup') < now() as first_time_condition_19_level_level_0_level_1_level_0_level_0_level_0_0 + AND minIf(timestamp, event = 'signup') < now() as first_time_condition_21_level_level_0_level_1_level_0_level_0_level_0_0 FROM events e INNER JOIN (SELECT distinct_id, @@ -252,8 +252,8 @@ AND event IN ['$pageview', 'signup'] GROUP BY person_id) behavior_query WHERE 1 = 1 - AND ((((performed_event_condition_19_level_level_0_level_0_level_0_0)) - AND ((((NOT first_time_condition_19_level_level_0_level_1_level_0_level_0_level_0_0)))))) ) as person + AND ((((performed_event_condition_21_level_level_0_level_0_level_0_0)) + AND ((((NOT first_time_condition_21_level_level_0_level_1_level_0_level_0_level_0_0)))))) ) as person UNION ALL SELECT person_id, cohort_id, diff --git a/ee/clickhouse/models/test/__snapshots__/test_property.ambr b/ee/clickhouse/models/test/__snapshots__/test_property.ambr index d27396834cf99..b3f6f049cf619 100644 --- a/ee/clickhouse/models/test/__snapshots__/test_property.ambr +++ b/ee/clickhouse/models/test/__snapshots__/test_property.ambr @@ -146,7 +146,7 @@ )) ', { - 'global_cohort_id_0': 47, + 'global_cohort_id_0': 1, 'global_version_0': None, }, ) diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiment_secondary_results.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiment_secondary_results.ambr index 76b856caa0287..f312dde127a84 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiment_secondary_results.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiment_secondary_results.ambr @@ -1,6 +1,6 @@ # name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results ' - /* user_id:51 celery:posthog.celery.sync_insight_caching_state */ + /* user_id:138 celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, date_diff('second', max(timestamp), now()) AS age FROM events @@ -12,50 +12,78 @@ --- # name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results.1 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$pageview' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) ' --- # name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results.2 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test', 'ablahebf', ''] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') in (['control', 'test', 'ablahebf', '']) + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value ' --- # name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results.3 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results.4 ' /* user_id:0 request:_snapshot_ */ SELECT groupArray(value) FROM - (SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + (SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, count(*) as count FROM events e WHERE team_id = 2 - AND event = '$pageview' + AND event IN ['$pageleave_funnel', '$pageview_funnel'] AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') GROUP BY value @@ -64,6 +92,78 @@ OFFSET 0) ' --- +# name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results.4 + ' + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + pdi.person_id as aggregation_target, + pdi.person_id as person_id , + if(event = '$pageview_funnel', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave_funnel', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave_funnel', '$pageview_funnel'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop + ' +--- # name: ClickhouseTestExperimentSecondaryResults.test_basic_secondary_metric_results.5 ' /* user_id:0 request:_snapshot_ */ diff --git a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr index 15bbb8312a341..be61b4ccc3d33 100644 --- a/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr +++ b/ee/clickhouse/views/test/__snapshots__/test_clickhouse_experiments.ambr @@ -1,25 +1,91 @@ # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results ' - /* user_id:58 celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) ' --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results.1 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + pdi.person_id as aggregation_target, + pdi.person_id as person_id , + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop ' --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results.2 @@ -137,54 +203,6 @@ ' --- # name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones - ' - /* user_id:59 celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.1 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.2 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.3 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.4 ' /* user_id:0 request:_snapshot_ */ SELECT groupArray(value) @@ -202,7 +220,7 @@ OFFSET 0) ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.5 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.1 ' /* user_id:0 request:_snapshot_ */ SELECT countIf(steps = 1) step_1, @@ -274,31 +292,7 @@ GROUP BY prop ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants - ' - /* user_id:61 celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.2 ' /* celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, @@ -310,7 +304,7 @@ ORDER BY age; ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.3 ' /* celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, @@ -322,7 +316,7 @@ ORDER BY age; ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.4 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.4 ' /* user_id:0 request:_snapshot_ */ SELECT groupArray(value) @@ -332,15 +326,15 @@ FROM events e WHERE team_id = 2 AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') + AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') GROUP BY value ORDER BY count DESC, value DESC LIMIT 25 OFFSET 0) ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.5 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_and_events_out_of_time_range_timezones.5 ' /* user_id:0 request:_snapshot_ */ SELECT countIf(steps = 1) step_1, @@ -375,7 +369,7 @@ min(latest_1) over (PARTITION by aggregation_target, prop ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , - if(has([[''], ['test_1'], ['test'], ['control'], ['unknown_3'], ['unknown_2'], ['unknown_1'], ['test_2']], prop), prop, ['Other']) as prop + if(has([['test'], ['control']], prop), prop, ['Other']) as prop FROM (SELECT *, if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop @@ -400,8 +394,8 @@ HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id WHERE team_id = 2 AND event IN ['$pageleave', '$pageview'] - AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') - AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'Europe/Amsterdam') >= toDateTime('2020-01-01 14:20:21', 'Europe/Amsterdam') + AND toTimeZone(timestamp, 'Europe/Amsterdam') <= toDateTime('2020-01-06 10:00:00', 'Europe/Amsterdam') AND (step_0 = 1 OR step_1 = 1) ))) WHERE step_0 = 1 )) @@ -412,55 +406,7 @@ GROUP BY prop ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation - ' - /* user_id:62 celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.1 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.2 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.3 - ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; - ' ---- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.4 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants ' /* user_id:0 request:_snapshot_ */ SELECT groupArray(value) @@ -478,7 +424,7 @@ OFFSET 0) ' --- -# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.5 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 ' /* user_id:0 request:_snapshot_ */ SELECT countIf(steps = 1) step_1, @@ -513,13 +459,13 @@ min(latest_1) over (PARTITION by aggregation_target, prop ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , - if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop + if(has([[''], ['test_1'], ['test'], ['control'], ['unknown_3'], ['unknown_2'], ['unknown_1'], ['test_2']], prop), prop, ['Other']) as prop FROM (SELECT *, if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop FROM (SELECT e.timestamp as timestamp, - replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$account_id'), ''), 'null'), '^"|"$', '') as aggregation_target, + pdi.person_id as aggregation_target, pdi.person_id as person_id , if(event = '$pageview', 1, 0) as step_0, if(step_0 = 1, timestamp, null) as latest_0, @@ -550,9 +496,9 @@ GROUP BY prop ' --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 ' - /* user_id:65 celery:posthog.celery.sync_insight_caching_state */ + /* celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, date_diff('second', max(timestamp), now()) AS age FROM events @@ -562,7 +508,7 @@ ORDER BY age; ' --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.1 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 ' /* celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, @@ -574,28 +520,447 @@ ORDER BY age; ' --- -# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.2 +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.4 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) + ' +--- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.5 + ' + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([[''], ['test_1'], ['test'], ['control'], ['unknown_3'], ['unknown_2'], ['unknown_1'], ['test_2']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + pdi.person_id as aggregation_target, + pdi.person_id as person_id , + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop + ' +--- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation + ' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) + ' +--- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.1 + ' + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$account_id'), ''), 'null'), '^"|"$', '') as aggregation_target, + pdi.person_id as person_id , + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop + ' +--- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.2 + ' + /* celery:posthog.celery.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id ORDER BY age; ' --- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.3 + ' + /* celery:posthog.celery.sync_insight_caching_state */ + SELECT team_id, + date_diff('second', max(timestamp), now()) AS age + FROM events + WHERE timestamp > date_sub(DAY, 3, now()) + AND timestamp < now() + GROUP BY team_id + ORDER BY age; + ' +--- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.4 + ' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) + ' +--- +# name: ClickhouseTestFunnelExperimentResults.test_experiment_flow_with_event_results_with_hogql_aggregation.5 + ' + /* user_id:0 request:_snapshot_ */ + SELECT countIf(steps = 1) step_1, + countIf(steps = 2) step_2, + avg(step_1_average_conversion_time_inner) step_1_average_conversion_time, + median(step_1_median_conversion_time_inner) step_1_median_conversion_time, + prop + FROM + (SELECT aggregation_target, + steps, + avg(step_1_conversion_time) step_1_average_conversion_time_inner, + median(step_1_conversion_time) step_1_median_conversion_time_inner , + prop + FROM + (SELECT aggregation_target, + steps, + max(steps) over (PARTITION BY aggregation_target, + prop) as max_steps, + step_1_conversion_time , + prop + FROM + (SELECT *, + if(latest_0 <= latest_1 + AND latest_1 <= latest_0 + INTERVAL 14 DAY, 2, 1) AS steps , + if(isNotNull(latest_1) + AND latest_1 <= latest_0 + INTERVAL 14 DAY, dateDiff('second', toDateTime(latest_0), toDateTime(latest_1)), NULL) step_1_conversion_time, + prop + FROM + (SELECT aggregation_target, timestamp, step_0, + latest_0, + step_1, + min(latest_1) over (PARTITION by aggregation_target, + prop + ORDER BY timestamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 0 PRECEDING) latest_1 , + if(has([['test'], ['control'], ['']], prop), prop, ['Other']) as prop + FROM + (SELECT *, + if(notEmpty(arrayFilter(x -> notEmpty(x), prop_vals)), prop_vals, ['']) as prop + FROM + (SELECT e.timestamp as timestamp, + replaceRegexpAll(nullIf(nullIf(JSONExtractRaw(properties, '$account_id'), ''), 'null'), '^"|"$', '') as aggregation_target, + pdi.person_id as person_id , + if(event = '$pageview', 1, 0) as step_0, + if(step_0 = 1, timestamp, null) as latest_0, + if(event = '$pageleave', 1, 0) as step_1, + if(step_1 = 1, timestamp, null) as latest_1, + array(replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '')) AS prop_basic, + prop_basic as prop, + argMinIf(prop, timestamp, notEmpty(arrayFilter(x -> notEmpty(x), prop))) over (PARTITION by aggregation_target) as prop_vals + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) AS pdi ON e.distinct_id = pdi.distinct_id + WHERE team_id = 2 + AND event IN ['$pageleave', '$pageview'] + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (step_0 = 1 + OR step_1 = 1) ))) + WHERE step_0 = 1 )) + GROUP BY aggregation_target, + steps, + prop + HAVING steps = max_steps) + GROUP BY prop + ' +--- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results + ' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$pageview' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) + ' +--- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.1 + ' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['test', 'control'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview' + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') in (['test', 'control']) + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value + ' +--- +# name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.2 + ' + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$feature_flag_called' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', '')) + AND has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', ''))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) + ' +--- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.3 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(DISTINCT person_id) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + breakdown_value + FROM + (SELECT person_id, + min(timestamp) as timestamp, + breakdown_value + FROM + (SELECT pdi.person_id as person_id, timestamp, replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') as breakdown_value + FROM events e + INNER JOIN + (SELECT distinct_id, + argMax(person_id, version) as person_id + FROM person_distinct_id2 + WHERE team_id = 2 + GROUP BY distinct_id + HAVING argMax(is_deleted, version) = 0) as pdi ON events.distinct_id = pdi.distinct_id + WHERE e.team_id = 2 + AND event = '$feature_flag_called' + AND (has(['control', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', '')) + AND has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', ''))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') in (['control', 'test']) ) + GROUP BY person_id, + breakdown_value) AS pdi + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value ' --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results.4 @@ -749,50 +1114,97 @@ --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants ' - /* user_id:66 celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$pageview1' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (has(['control', 'test_1', 'test_2', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) ' --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.1 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(day_start) as date, + groupArray(count) AS total, + breakdown_value + FROM + (SELECT SUM(total) as count, + day_start, + breakdown_value + FROM + (SELECT * + FROM + (SELECT toUInt16(0) AS total, + ticks.day_start as day_start, + breakdown_value + FROM + (SELECT toStartOfDay(toDateTime('2020-01-06 00:00:00', 'UTC')) - toIntervalDay(number) as day_start + FROM numbers(6) + UNION ALL SELECT toStartOfDay(toDateTime('2020-01-01 00:00:00', 'UTC')) as day_start) as ticks + CROSS JOIN + (SELECT breakdown_value + FROM + (SELECT ['control', 'test_1', 'test_2'] as breakdown_value) ARRAY + JOIN breakdown_value) as sec + ORDER BY breakdown_value, + day_start + UNION ALL SELECT count(*) as total, + toStartOfDay(toTimeZone(toDateTime(timestamp, 'UTC'), 'UTC')) as day_start, + replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') as breakdown_value + FROM events e + WHERE e.team_id = 2 + AND event = '$pageview1' + AND (has(['control', 'test_1', 'test_2', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature/a-b-test'), '^"|"$', ''))) + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND replaceRegexpAll(JSONExtractRaw(properties, '$feature/a-b-test'), '^"|"$', '') in (['control', 'test_1', 'test_2']) + GROUP BY day_start, + breakdown_value)) + GROUP BY day_start, + breakdown_value + ORDER BY breakdown_value, + day_start) + GROUP BY breakdown_value + ORDER BY breakdown_value ' --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.2 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT groupArray(value) + FROM + (SELECT replaceRegexpAll(JSONExtractRaw(properties, '$feature_flag_response'), '^"|"$', '') AS value, + count(*) as count + FROM events e + WHERE team_id = 2 + AND event = '$feature_flag_called' + AND toTimeZone(timestamp, 'UTC') >= toDateTime('2020-01-01 00:00:00', 'UTC') + AND toTimeZone(timestamp, 'UTC') <= toDateTime('2020-01-06 00:00:00', 'UTC') + AND (has(['control', 'test_1', 'test_2', 'test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag_response'), '^"|"$', '')) + AND has(['a-b-test'], replaceRegexpAll(JSONExtractRaw(e.properties, '$feature_flag'), '^"|"$', ''))) + GROUP BY value + ORDER BY count DESC, value DESC + LIMIT 25 + OFFSET 0) ' --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.3 ' - /* celery:posthog.celery.sync_insight_caching_state */ - SELECT team_id, - date_diff('second', max(timestamp), now()) AS age - FROM events - WHERE timestamp > date_sub(DAY, 3, now()) - AND timestamp < now() - GROUP BY team_id - ORDER BY age; + /* user_id:0 request:_snapshot_ */ + SELECT [now()] AS date, + [0] AS total, + '' AS breakdown_value + LIMIT 0 ' --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_for_three_test_variants.4 @@ -892,7 +1304,7 @@ --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_out_of_timerange_timezone ' - /* user_id:68 celery:posthog.celery.sync_insight_caching_state */ + /* user_id:1 celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, date_diff('second', max(timestamp), now()) AS age FROM events @@ -1089,7 +1501,7 @@ --- # name: ClickhouseTestTrendExperimentResults.test_experiment_flow_with_event_results_with_hogql_filter ' - /* user_id:70 celery:posthog.celery.sync_insight_caching_state */ + /* user_id:3 celery:posthog.celery.sync_insight_caching_state */ SELECT team_id, date_diff('second', max(timestamp), now()) AS age FROM events diff --git a/ee/clickhouse/views/test/test_clickhouse_experiments.py b/ee/clickhouse/views/test/test_clickhouse_experiments.py index 9f86ee3fe1d51..07764b83845d8 100644 --- a/ee/clickhouse/views/test/test_clickhouse_experiments.py +++ b/ee/clickhouse/views/test/test_clickhouse_experiments.py @@ -777,7 +777,7 @@ def test_used_in_experiment_is_populated_correctly_for_feature_flag_list(self) - ).json() # TODO: Make sure permission bool doesn't cause n + 1 - with self.assertNumQueries(11): + with self.assertNumQueries(12): response = self.client.get(f"/api/projects/{self.team.id}/feature_flags") self.assertEqual(response.status_code, status.HTTP_200_OK) result = response.json() diff --git a/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--closed-popover-state.png b/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--closed-popover-state.png index 7e09e95a91e3da72c4fce27d44044680afe273c1..72044664032ffe7078a5bb6faba55b5faec20ce8 100644 GIT binary patch literal 1429 zcmeAS@N?(olHy`uVBq!ia0y~yU^E2c2^`Eok&nNZ3j#R{1AIbUfm{ZL{|ur3865sI z82^{C{4eV8U&Qafkmr8^hyOC}|D}BYi+cSRasMyt`d`}fzm(g5DVP5e9{;7i{!4lM zm+|^9?G9!GrGQ+Zxc7f4pkh=hSucRt?17agg z7NH*I5{TnLT3~8`42U35F~m%`7ocuHQUI3%Dvox^Jq?Vau96_XUYCbyrsmeJ z?w$z~CrzF*b=vgVbLP!ouyFB`rOQ^VT)%zCzWoOd9y)yF=&|D`PM$h*_T2dk7cX7D za`nc|+js6ic=+h?lc&#KynOrd)8{W=zkUDl^Vi>h0)1=485o!)JzX3_DsH{K5m`JX zRD|^cZ=eW!h>U_@AdeK=K}K~cQPEBwp&kn*K}KN*o)v*}9A+{-`I99-sigj(h=TsD zUDv$dTh->*Ufuoc-l}&j3=BX1znHzEtus|>=S2CeKF;1d9-*PnORb9c?n{flG~?L6 znZY}kM!mhWD*Ldm&Dv7!{J-APw>Rg_J9g~#?AIn`#_~n)X8jLJuAWp{pZR9tt#JOV zoPWoxzDFHCJ^lUM8cok@{xMQ@i)SfDMul#*kd)YOVrQ`X|I~-v`*S?1Ep|UUnJn(V z)<0-(kqq!drS)qefq)I6KO z>hSu2{_}6_e?PnYd-=5O?Z(-1v!&wpetq@XbMD=n_95AqZ(ilQ8ddY;_wP%0dv(|H zRxX>S=I%DRCrr77@6w6R)|Zx*32C1KKRN8ZA>p^)vhMgI*WZ4sr79;k9`22O8<5{W zcjx}!eyR7P&we+%x@oukO7ThDw1eCJB zf8#1&=+^z*?>Fw;w`SF<=98@lRo(;bld|5gd-B1~V@slX6Sq!^`MYO35SXt#sA7H2 zv}~*M-+f!dN~4pnmuyeTN;%pksvPY7>FPz59|!HOXt!RM`1- zJi@-Im6}8rJPJq-w+>mI{^t7bUAs4?XID;oy45f{dqw^CnO^EDo^^7uQ`f9o_;2s# z`+YZ$Ssk8fD*tVNRi%4SdfE5=@!3+lZ!L_f{Bf#a`rSX*O}^cHsdDnA|K#4~`n`^$CLN(EsGACT^{%6<<2D=6M(UFGv;sXl^bvV z+tyj!d$aP&jr+gdH|Ea^KDp=DGVR-oH%9Nh3NGg8MJ%ZP%gOpr;lScEb7Dbudb;|# JtaD0e0swkriqHT6 delta 1758 zcmV<41|j*C3xg4m8Gi-<0071%S0exb00DDSM?wIu&K&6g00=!vL_t(|obB9wh^18> z2k`H?vm35hR46R7b7?6^NK3PzqClm@nOj!2l%fXPAAywE3xY&Nl0@YnWu?6lmh@%_ zDJ#v6R=CA#M(9fR0=4Xl%SrYb{?*%g&)1R_^V$oPBVz-Mx{10aog4u+`Uw zp1_i%WoM^y!-o0t>q0vsWRnt#NmCtI7IY^~d?dNNjFJ0|L*-CosLuPz%TeymrQtykwDF;5r6T)U@I zU;KYNd@Hfawf*EBo0+ncyd_CmvTHN*uIEVmgFMpefhW_3ZtSnCa_#iqwmV67^fqUa zGdf>C#Gm?Bb$qSPFelEFuc5nO6q4ITmRjGWak{6}r&8>2ODj%DkYM)<>Su5vy^>lmn zrb;eLa({d(f2x)%4^Fl(F1wDEtz*6VN|N)E{H-NdOi#9}m&Ob-u3^Uh+=+VD(aFt8 zj%|)&r~_f^ZSofTWkv0k0mNxqPl zeN{OxEf1&iu3=-A+Vao*rILvxspO}XOx&M5lz${Udi92pmg}nJKvmAKmY&&X$kjk&p&jm?tYRT0*ChEN_`oAzq zrJwU#WnYr3#>VS{#q)!VYnZV=`?PxY(JkL^$#IpOZUSSo9iHvvCfhz*w7` z(tj#@((?K3?^ON>)lBw?emUwDr zvP~_X>r^hS)({-_1<6cP@^9tXD5dCl@98#-QUG zV(ia(=C=H>Dr0kVdHL)uZDx(@0vqy#KAo(7POr*mhHbZXe(RWiC%2EDRmb-Gxjjj? zcII#NFF3Jk{`jN)C3mbyHAu`rDmgjHk8*vROOotskMvviEgWB~-93xH&;FqODSt_- z<(S8lGfC3&nwFfj?U6ii)X{nHsH5{>TFz<7^H&t`(-kdmOXb92#x-c2Ex9-?rzH9H z>@972-7&xhJfSPGnW?rf$-ZIRRkEuk=_Cg-mt^Fz<4HdCXk1%7Gp|)TEB`xmkeC6r z`4ax8*fq1Ymi}hvoDWGq$^L#nAAejk?tjNWQp@`sq=v!jtUOT3ms`svqZ4)3?A~_M zdgFj$Jt1FqeLUYQ>z+}gNnV-C{<*oFvG|k9{#0JIa6YO0vQ=KSqWLS9eHtX@5UQ46 ztCrlIIYD=eb>ca6287Ak-dXn7Hk~TY)+h(WQ{@JOvztfpt;eRdbW7+tt zRr2a2zZj;5LF=rRPtQD@52SL}Nb;qzGwZp-T@hH{5r0ptw&X3XrOj0?p1rvpSUf&D zQU4fexhq?9c9N@8`E2Xt>)naEwkkKama{4uTedV9Bxbc5l7pR=-snXAY;iR)mwa-h zWl#5^TvOw9W9GNEC(KpexPQ^H4w`eddis@5jI`|O_HteI>$=v-2}wRY(sE6b{Y#qf z=uXr%Rk;9d8ipGCzV=A@$+FqQA6U&$6Vajm0erOyZN2T|6a5tp;OS|o?WDI? z07sgQz1g)__pW@W*easx=k$fAkdInx#Rl+rZ0zY|Kf5dW<7%f`%kI^V0~`(;dOEqV z((;B@lMw}MlOP3MlOP3MlOP3MlOP2$7@mIq3x>T;!_)F;W&i*H07*qoM6N<$f?7MQ AMF0Q* diff --git a/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--default.png b/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--default.png index 2d8bc66db9e219317dc1525b328caa16d807d1ba..ca05fd2fff918163893480c2e43e9c32616b7e94 100644 GIT binary patch literal 12357 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 literal 15918 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 literal 14097 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 diff --git a/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--with-no-notebooks.png b/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--with-no-notebooks.png index 2d8bc66db9e219317dc1525b328caa16d807d1ba..ca05fd2fff918163893480c2e43e9c32616b7e94 100644 GIT binary patch literal 12357 zcmbt)2T+sSzbzI-R78WIf;6d8L^@JckluSoLa(6+NN5TQMx;ou;m|uVARr|m5KGHcV4pf#M476%rB>3MEB3Z4#1m z{J?MY*Hzn)|%yUp>6 zUg@;+n*_-j&z`OlBPTVZ&5}x6G5<}!`@MlLJxC=^-d^#ZD~w;W4(9Cc3n(CH;TP~E z0@_WH*|RrngkJ^?C^Cbjw(WW3j3}xVF5MuNRm>`(*=0(tjvwwe=iG{LxE87&iD^r_ztqR+YzukX)=vXY*%o=?st_;27>{WIC>W7b^ zN=*EmQ?u5F>h9I~DjGKwuPMuc-E-ffFSA}!{Kyo2=blY-yM->&dt&BrT*UUMD!C&( zcCi4)(_?1D6|R3Jmj%fs@+(KuFG~z)4$kXgaoyDFs){a{ZTuiA2dK}4OaggcTs+?TDD4I9}*V&xJ87yS3vy_P_u`?CJgFTC2Q| zSA;E$>vJF;a_Aw$(&t~z7)kqku+@pH!?kek7rj$=JV;m8u+E!n&N44OY@9$3XJF^V z1MM<0T@h8~!#$hHtzu<{ZSd$MR_u@sTxaA%Y+2RrGOUUJ0e>Ue9NsuB^yo{%6fUsY zgI3wldBfw6dNGH&>k(<gM6;N%ZkiECW6}euD99{-T>5BSOWJ zgF|gf)!$YM;qK2!CCoB2tD)9P1SQTUVj4X4ZBn;;OHsb4&$t;SBZo*`TZbE{gWx8x z-5Xy^J)7|u_4CS4$Kqe_v8U;#{bkD6BH)xltyAh&E1!gB;_akDaN)7+RluIhXUTwP z9#)$79MRw1aY%f)Ip&*}0#U{zSa+O*3OMwa52mK=Y1*iZ;cvtX+S=3Z+@tpdKM&$Q z)anTO9%sjRi8MF#7PP5Pf(NPUP#!&2_Uzdf?M_b#dtEFW4PUP=&OJ0TGFsX#G<5j; z%?ZB418$Ry7botkH;UoYxbZT}Qj?8gZ&6Ul4mZ-2eGgIYN#!Z!nFb%@4P*_~2qVJ4 z`AGjco*)Le!c__m!8{ly#G~W1ZyX=q7w!0IRnHpM(k-YLurnE8$9P)JikxCdFx)zb z*KdBNR%_>Jid;<=D??ZHrZLQhQgKh5-scxvWL*?0m*3D7;6F^~6Xo^ul-$4w`*=(c zE?U`x2cXf5;28FOs~n|4D%1R$iWiXYM5*XR_8P%`F#$y$SNJDfdxaJ(z+}~>3~I~_ za~W~xFn7MD(KR^SvG^4{EO_{}Z0NH-A3boSdtpRVR{a*+$D*ebaUSj?5}?$(H_T;4 zUEu3l7j~Bho@sX_vA`GlT{MBp<(<$P6vQUv9yavqcgj3gDajhV;Dm{yx=O;P zQg_Z)kD zbnyAqM~8#Q@WepJyPwW6AqBYkVI7G>6S$ci)off~ifLGaAAX~_<20?1z2-yLuQ4UX79*_@bPg+uCC! z`>Vx>iE^7x=gtIP5y-Tp-$u=nvYB-*8!{^{90*^e_QwO?ewZ76ZOdyv$;y%;WL`pg zF7@Q#GW>U7sKdon#cQy0piXn}$s^>~!MtZX+9B_E?PP`oora6zrFOdnM{2#W&!mJG zgq_D8IZb>i1U~zqd&`z4)vn!;SH}3+Fvf|ieDyCbkkP#N>4# zQ+9W7nUCpU=_hW~!iP~GSOQm#wcIz4(|M+j)l!6zKGVK!`lZJ4JH3}srzZs0lwO(B zN$ObIcxxd~+a}E_U@cs&v>8%GAyp?t0)`G!|7m6m?!TjC;OsO~(!P19^n$P9Aj>aO zC~kN%jrA*Jrs24?Xts>C&U@V$JBG}zOH&7HNa5m4?^FM9&2%=z z%3yxosO67nW~C*P=rJu(4t9sa%$Li3O)mFRei~fZvdPPE)SaEzWYIx1EAU-Dmgmzi zF`N}?c+q@yKWk`N2v6hui%SKp*~>iqSt;0ef85TBvLbkexbq#AO-{xB6&3$dwppxg zbF;#2_Ir-dCJGP7_@OGJ*cu*?l*Zw0C4R{N6={3Oo9*sukMx)%$u@e)Ni(UD(Bw?_VP_m}w0V z7T%q9Y;?qP$D;3)Ii=0x@#Ku*(6@op?!Zd6@&Q}RVdSg36@K=nycD0*NBIcag_A<7 zC*a(p^fB~m?qR4Sa>bIa0OTeFGV1$feYygnXj8D1Lv9}=-Le$U*Wi}%>*U7L;Zlar5;VBr zCP7wIc=6|r)?OB6aEAefXHzh#5?1Im$Nz%~cqP=4ibGwMR^4^%GxLKCV4f38t*&QH zJLk<>e?As-I4&2eE)XvayHk=14N;!Yc3BDi`5LYKYerpJ|HQg6@cNZwOnX(j{1R*V zRGm-Vt`u#c{c?8bW1kJvYGyUK#Q5s9*kc@M6kdt0siy9h518R@ejI?;YTo zcbLTqgDJ(bFKDb4uT@V&i~G=l?n1SPQ)a^qzEVjhS zL->Rzul2;XJdn{z*_zB)Wmj^U_|k4RLZ=;HOvJhM=L@84?)9fyb|YKNLOqy~n~9i4 zFthstmq2^AMuxO2LQ%u3T_F}bTOH>Zca&m5A&1!X$|gI#Do&ApynggbpRwCECaEL( zfK?!Vs!)fcT3P`tcK4P?p2j`tgP#|w@zlq+SXU2-y%Kx!x>6>m7SeHO4jS;m)@+$> zz)DYwF!yPiBK?!&L$99&K22 z+*uZL`}~C`;A3A$5>5z+APu@ea>kL*qRAP=yM0t#BLkvK^c~QJ*V+2uqp-T!M$kEu z=Z42c$b_-ClwDk-A`-+)6`hPiSc$3^CW)4|jrAjI znDyzM3AO1HN|bJNo(;rq#?jUfpNmjwdum&0l9H}9wRSAgee_XDUC=Sbs70aPe@~}V zx>)2^8iz~+<|g7K@UX~=xNn{kz9E8@%5#&-UcDizrU}OQB8kpkWTvU` zOkSRsFOv!uAxe^W69p>Kc|EuUwj_7K?i4TlfDhe@i^bRPn3EnJ$YHnA^o~(=620_V zY4JW~g#@j_=t7ies_?q42()%wO#_ORwper-jW+1?GWPR&^(D7j@&W&?>55Tjp2Tz+$Rgr>>KTkT3GE~f%X7EJldet;K zH0`8BOxKn*Us-k2Q>zFGtG6LvRnG4brnP1$YAI~okJSt=SYl_swA-#5Cgz~4A6sVY z8})Ahc$^PoPa^qsc!p4y;ny35-Ys=)3vnd->Ph2QFfn#xF1-!O=-GV}T~a z*xZYqgMG!JgJX+4ocE-y^85&0YCqhFG!;u})2&jysi>i5DiaYeazw1^_ZY1Jwg}Zj zG|*?Az^8Cu;m4<9UhiY&ZHSqnq9wzdRCa@p&cUd|(L(M1O*2;$ePpE|V!wJJ@gNfdd=VC1NltBLvW;8V*Ic9g`mooV}`d{Dx3H^aOd z4vO(F>amkGid~2h_DMZ5wY2=z7JJu?6!CWK{E!7kSVj+#p16qApRWC+b7hH2518}d zw%o+~;tJ3e;81;d3VxPh_O^4-O)GYu))nqoXH?uUt@4^FCS*VMa=_39ZAuqR&m=4R zUSTkMyB--)73bSra%h_4X?TsS=q(tXG(^`S-4pc=*{uQget3G$IM8Xbq{%6T{`SKy}I$J)6ZWy3omb0YUno1?zwlSOZg~u?B48=7~}^yu6Ep5%mTKg z$upotrFVP(Fwp{&UFwAF|FYOP%5Cb)*%J+9P zgQ|TFc;gjgI-huH0xm_^9pyFr+TqeCXve4OxD_+?K`-?_UHu5DpM^VAYh@>b8wtNK zU2%cz`l5okwh~Xz?|w%c$|}5A&9r`&<%hzfbG%~GX!n@x3|B;5+c#ROfaT_Ho?6s#K`1nKY6fX%a;-doa5XeiFm2ZIG;>g!k^@h}px$%&8V9jeYGcax zPzpX5V_56YHWvx`*sXy`q?nL)8~b>_+bWmJI?w7n5bl_eEh?k65jzz5iEIzll54)f z{TsH>Cj*F){Is#r8%`Q8z%!7^)rBvcN8U&k9=(PT5GtFWYH{M2lzZw>k~aux@1@N! z3nPAQZvWbL5nvxHRN;KL5$<&P(#XEa-lT2MSg7UU{i}iCe(-0^;CNMlkMW`NM0q!@ z2%TmLNF^Qt{RD|1^qJcWqv6oZjLJY9Zz^GB=b3NlJdyIY9UD^h?6n7D)MqN{{|aOO zAG`TmKL?UcC1K3SF5QOFf9q+7OVH6^hVmZz0QZ2x>BWU;{^m9cInDy{ccaiDWUPSqEIJ)5t91IGB`Dn(elBO^HlAy`Kwvd zV$IB8Gq)yE{bGGyK-Q^crkXZdyqbL{;_*wd?s%tj9gulFy;ftNExn1jQ4GK&A$rC7 zUWxMwvw|Cw`r0}M7>s1)%IW+9BO~Q3j%x4BrrwjQOb>5{W)zsYja##8g_^xEZ z^%SQv_ugS5eg;A(;;iULFOVKvaQs1gR1C+xS{Yd@a)LAa{NfGp`tFnCB^gYF==3t2 z@JMT+O^GTY3EF|5^o)`stW_L3*!IHL;TMK+Z^#%vN6?9a^LM!T`}5T33}_rR3t2}h z>@@1;K5#n&1icE7VRZc9x0s(VS>6W__G>(yIv~4?-S0y4rK2Qw-cJSKrvROiF+OS$ zI*Le;^{je2i^lfaFr zAIMWpp6i%fub%NvB+gHv{Hig1OFikSjT)QNsPzOB*Y>gS!Of*K&&c5tqrt`A49L~n z55EAqa%y#`Fm_+uTAV}ckUF<4dDURZDSc()U=+WY3h`zu@rx19Gm)V?o(z@+(qmf6QvEP*O!zbdf@I@`V?6gm>tX*DN1uZ{V3m z*QmK)cR;X>py^nRXTINsL;sz2jt#XmW$;nJRIS&c!!Sk@F%K+?Mu$$sa}A=H%|RPz z&Fce$6qHqoP?!%dU+hj@;+t`Aqu-!lQ~(#@cNRK#tBadXafqPql{C49L>IH{owF76 zbU6;l)5w6wEdopD=BMP|2`FApq&W&Y4ovgX^!)5}5i8IB#*~xa{#ujzf)V(c6oXXm zupqgJsuX{G&nCs8|Itdm_jb$KNhA{R7(i@0l^R!iWPFV0Hh9ST`lauoC_I$e@mJt7 ztcdw}n!vH-PzZUJxuzx<&~oYY(*9%gjt-bSwN$W*DxoDE67H#bG>vy=27z-`ejAUaM_t{vxPHx+sLXBhwRvjvKcKidl$*Zd8s>ddF*Vq_8o&! z(PE%*!T?jMXUxM!XDn^Jg%-jq%_&wLyz1L}GtL4Kt${{~rXDcj0$-5QxM2JbnWN?G zbpQ=4@4)1K*GI5+VDho5xxkpJiaC}IZt1-(Q zD>mB7XX5#3*77F`KTTKnr@X7xOy4`NuuJcVwPM+a$^NiBR*WLV@U$1YvZu*CSREj|QdI_bxtO)3K>3OLrviX$*hTO8p{XBVDWS~2dKXgD|msYN>B zrwuX9JnjPzzC`Wg5~-h_k*c9W1UIs`;b5YhaF`%l@|?9X@ez2g|Qa1`Z% ziq*UGhOogtJaEfuJr>pAL}--!l|*Wc}lO; z>U$4g!GxW5^XTe)Hp44X1t62vA&z0d%2?ljgrt0pp7sun*uXR`kU~gt@|sxrs8dcQ zaG;O_|JV^ly6sG0wc!4KmU0)h(H7NJ4oG(eK=e6i&i2RO?!aFL@V|ul|FEI{mjWM| z9im*>C9ffK1o=`$jA{Us`Y*76YrtT}6BsJbtLj3kiQYRgw>KmD2 ztG|77^UhzYzUt7t^H?pI(1g^B%^V#!5T?-5?}kb9C%RIR=~NmIjU=QY)e6yAEF!6n}nFP)Pe z+IV0{v?SqsdZzJjP(I zY6nqB*;*b4$}59!w<;=aj(5}r8_&UiyfV@S3h&sRdOYosK4LqcHt&Dt1UN)i2lSdF zPKz-+Ai z!WS8Z#Y!j8Dvm8b2?U&65nc z&L~n>n#u8eor;Yg)@Ro(4>23HoGypbtl};fYD-k0vv!6a*B9lD7T*F5#Z#sZ+eiBr z*x);K2dOXU1X8hPSqrR?&Qm%^QXU05l^l$ zV-2~q4zNP`IdJ(K!fUF)D(MK2kE*q?IaqfnP=2C~$C|A_mQi(`oud;mMQGrA+oraQnhrezRizuiUC4)fW;C&(T*~pxLSNEH1=$4 z5kaOCdAm8Yglde#+F6UvKk97r^>9^c$#iC+t_R_p!gT!O&V8>coUpH?V5Y1I4>W>6 zgkk3P*yHE%hBMVy+4tKTH*xkt4)AdFkV${}Y7xxmw<(c!>Qmvg%8CFmRE2UKV;Suu zrHgoBl#)?2+M}{-$PGz1*M7STE0R5P;Elh2$DSiwdVCHR{}|?iS)o|!X{h`eVI)4J zQnXLWhhm50^i>*{?jyx~Z3(dFac)E5D`H~=)n^be+ogbp=y3E~X}vzyn$@z5LTN~n z@XT5{8A^z*nx=$Na0<)pNUW(&t@MC85hz&`b444V5{0u{q>N6G{XyDExB5O~8~@yat#n+!i2-S3lMwZrUbFzwm|%S6rb?rtssd zDW@k(9(Hx`miMaI-4wzKvOkV$um`oypx3Q%nR?skm>Dre1Al4=W%og2BeSY zl|GkfHMo>Cg%7SalSTbs&|hp<<(v26WyHfC-wol3weNNHp4--B75f*m5$m7oz1U({4>bqS0`zZQ>-P%JM1*aHuQke(DwYYE<~xCQr=_ znVc+l26q%a6<%NL&M%mCoLcIvUuVgG)p=^aw2nws@OWQjQD)O1(PmOMIN?00TA^S9 z?TlS~g~5x-<~{I4dHrd#es-I-I`11){sSW|jLe|T+;JV5T1y;F@uExiKR5j3iyCgG z4q@N+YJ?Yl>ypOS>PtAwP+dw=gjYxD_;(e-0P|x>ue88x$@cr)3ZE&3!V?VBoJ^`+ znktEdrO9mGIb~*(PT4zjFSk}p!s16LD1S)n0HJ5QH=osSiYoHkh9CgMa6_1iGghR+ zH~dOMV%ZK?0mB;$BVn2hVLFtTS(tBU?W@rtr5>G5EnH`17aca$Om7gIe0l1ZfwZ%J z_S5=V>%97ZVzA#T+3u^og~{Gx+UzJ=)QHPr+0XW}g&s(2@8HswWd(*7sy!sF1qv6x zy=qi2N|mF$-UX7-9(@Spc%|;jwK4t6@byJ4Ri@riPxyd-*^DL6pZx@%2&&;Yyfm;` zO2}($60&{;Sh@T1>DiDy)6V0m2-^q=4hUqdeGM->2bfEnFJ;RC%X!LFG0p1Q;wMK2 z{xo(SxHKqZgxf_oFuCU)bVwX==Gj)DBY#zfd%9>(MTyg7ocXuxhGaOgWGZep*vj|g zs-kfn`tGBs-B3NP2;O+~cTs5bXx3Sql7jEV;`3eWvsBl}Mjc*hH`g#P0q8ug$b+%^ z$bwY${cxyKFHbKmv%*T_^-#!KUxP()zUS}NiB+y|I-Vb5R;P`}h0#ub)^F5Ei$E(s z2iIPXIIodL?NmY4Q5oeY`;lqYTw$1RRG@ftm;HN)S%6x-;tOv_%vLH&jJ zVoTBGQmta3&ba(ggA~JtIZKG^0|S`Da-Ng#vSyPvMW@Fn!-r>6O+FpEF4P;GF`Mx5c&iy;{iaa{-6W0A=*%*$)a4uv6?ZWxdP68;(QI!tOkrlZMJvzT$0f>WcL38@|vdrU;-{52k39B?|%?W|1hrqmwfp*lp9Sl0m-fan{xm{FO+D}R6hKT z(`RrUNe!cywBB#MT%p4FNCK5&^qc!8nvO??bU9WFNo3cKANr)=?oy>M{Z4v$@6rYwLx95{?((zx)kc zwgxWF*8$)y4{b!48bt5^#k(7yBuDxV2~~WEdgaxx!E0BfBC?ck1F1M#M+x1Yav70m zc^q|y!B2r3DmMC+W#er4RF|=5vhO_ZBfT%wUlHDP*#8gZ)ihGdbr7xSAMAF84w&E% z%ZCot(y=ayB(2>-PQSqvDnJf@UE#{_B-7`-b&>CMcjHlAF>Kt>F5^#T&9=$XRA^ZY z*Z8tM5|K9NGV?nRwuZ$*8yUrxh2`V<&K)fq4i^mD51Rc^U=`>SS#6qM>GLtFYA=DK z8&(E%Ujay!Mf;aDU!Y7>^?IM$nwazte3ielpa}jC;Wc=Q`*7T$>@4jh0>#!|S4p3V zz;&1XgT!LpFKWD|MMha?dYLqEFW1G5R!~}tINkYypWlg#iu#M z&y6T{grW?YpPC(hHj22Ej0NG3t;I+F%s&aQI40ne@X>~KuuE4KRKa1CeyEV!eo0b& zU37V*bQyt=DbW*2SsSdUrDD>ab1V$6{e@j^Ia?&>7EP+`3Q;B;eGi~ zi%9}!YgcC8%Pk?MI+)|@_9Lb2p?j~!mLYJ1?)y(qFS_+3_xZR#YWnU*&5OBO@3$ED&5|RmQeH< zoR9N`6)x$mGfqcq$96(Jb7#W2`1x&XMSV;Cdr(s)@q={ZK}Wwv%tJAk=^ni>Vmwk+>@2Xu$yp+-)&|wZ}zn zC+@4!57Z96>XwZtK}i;#ffrVC7Iw7q7QgL{KWiTSdhT4b;p5n`13Zd3IkcTt0Pu#m zML~l(Rf~yx!vT%%lm7p4iT=7Q@GpPq9}M#~3kPzO<)2CYZ~R=yO(4xLw$JLlUs@Ho zJ$iPN&FB~XA%`7IFK|yYs){IS*SIMCP?bh zq5SlxAdiG3@00O(lRz!xV&;b3l*g-pt;TE);J({Nv|ZZG7ks`POQNw2Xi%oc>FI-; zr)%g&v29t7z+dP_@$F6Z<1nhz6?BlqwvN}Yv;#&C^_S1&rCMMX;@jLDf%9lcy4Vy< zFimU_HuHF!Aa~4s^Hk-ATw&-84YBI5PR>t?r9Utz)xNh;`OBsbXq||bBgjb4hMcM& z%*uco4o2U~1SV~@%aGmM4VeQO8iHjMS&;K-2i0;dfobyAGCp&x9D$#n+2*r-PfX#f z5gcO`m4Da(6k~Ok}>WrdH~lt09&(DPrI=k zPio`sICt?to8Wankm~&)Fz)!vRkDpPCtQ8D8WioFn*r(3_V|^H35B=4v)UDmEX=qaT zDqkFbWO^?^Ju7k)du#3k3xe|v{Y{t+clirMSH>1)2M_0$KZg8~M1v=8K(pzWt9nnb zDRFa_{ZW4+{4<#G(mk!L^PT$Eg;1MWxRIuP!_Wx}t7tG&hwViSwlNG%z2Td?8W8{C z8<5zH{4vnJ_Vsmc2$)bU6a!5B9*dp?Mb-TL{a^8=-y+|m%WoQSC6m6Ri8I!8F1)C4 zLv9@AWfw9&l7CH$s^+DJV4-8-5DW3HN;7q#~9>(vnxh2}oQ7!+RSQMOJ7 zhGZ;`1ionizB$Ri|DzavF+s_?&^kfcekDi#hTLIz&4_UuLQ{{j2rN>2a) literal 15918 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 delta 2157 zcmV-z2$J`q4UiO&8Gi-<0071%S0exb00DDSM?wIu&K&6g013)TL_t(|obB9yjHT6C z2k`H?ceiD?RF;NGhS`}wtd#`NRv>CCWVf-nJJ+t#ZnW)E1O3BOyIeqD5C(holZX7TFzW4t}0*tugbLtXWHJ?js<~?Iu>+;hn7+|rH7O}OJ9gB~v^30&0 zYYxn`cO2N=K6-FZ`_hre+EcR+w7U=NYTNqH=BlbZvwt|}8(HQB41 zhl!u;)y-4As?&}6ZZXQa`@b|6|Gy2rh@Ep~O$?GpDmj=WRXI90$hHH!+ec59Gy6ch zd+=PYUfkANUOlm;-nGhN- zuJVp2cYn7BPn9?OK)ZYSrDf~pvQZ12*jg8)<)TzRndIV)z54!9`vAWCtQjG8EJ?bZ z9IfQh_DnuKY+^l^kK|=}^9v1m!wBOhNm|SHB+nijec&?9DmK(hxW8XNis2AZ|f%SOY-U@U+yO# znBCPrd9wbddR3{sw~`Cfa#gDwO6529&9o0K#H`fksp^^P)lXM)bCL^E`D(R%@W9UY zhfB_5W$k3IK9Xcdl7lU|W#7(r+v1pE<~7RPUo~Cdvp(6K+2WMi-1+-;)z$L(Zp$4Tx71Ir zG>=MtrIN2z@~%q0SS`0sOxF($)8|U{On+^yEmgTIl`mwFcP6>FCAV#yu3uU<{&h(z zgIwJzdy?EbxwYQ8@cA(F8fESqHrIyrE%&!%tdcicz<8;RvJ+diBgx^j=6~ytB}rPo zF-rdU);d2em$X6Nog}StPg*`SzO~MOa;AOdc-Su{d2HX#ws61guBl$VF3F{fx_=rb z=6U-+-Hs)hnd()N%C?Fu7AtlRAsW?&t-o8@a6ARzZKG43JBz63)ht>9(Bx$+4C4aA7H>Uj9o)zO>JpXPj9dno(hO4vkbR~b(T5g<}u5Gis z+P$Zm2aIayo!H#m(w$hh<-GALYV2h33&yXgv2M$GEA_RKsVi$D$&aS8x8Ki|3ty@1 zP385+KTj(E(kicCmi{A4j)sXjiK?aNswMxJWK({o<`;#{wWd?qbbq{kRYvJ^c|A!U zX-S)%$wRX#yabl{w1>dIsDWJH+O4I z-r8DPzjDLu?)LaX`+vlA{b#r3b6K0WB)Kh>-)o)x`P6j%SyevOTDDa(xnyfFOw5UD zNDg#bdK1(2=)!KIpZs>W<({c;<@VZIpUV8D?M3~{PYpY_<%aF^MD+|RztwHIXR4Pw zYEXByPA*FFzHZCyNfy6+zj121Zm-I{Y1!UdexUNgvwXwUFn`kA_q4g{)wQkiSUUOr zWa)E*aJoi%V*l76pIv<1I$7I2Gn>xs)nyZ#>zrI#YjbI>o!DIGoZG9*x@Trn>tyXp zeGFlHRrby9dSL-elG$DD@v7`Qeo2}AGwowZuCL^ct>xoMx-Ge7an3L?CsHjxSIH~8 z$(>`p8b3b%y?_16+ml?@T0YS#m-H)dKb=daVf#E;J%d4hwvr24%O{dtKS*xb_l?}J zIJYIYR!cvf{6&&YRk>mR&i3(9Y8Z9y`**e{l6;`G?3mnIZ&~g6ffE_|ZqWF2UD!=7 zT+Lw5&gGvD-rv5snp}VrS=BA=)huKdFyMc}s{bkC**R~jv(|O;!;9~cok;a__}Czy z{pJJh@M^~bIGNM>_teS!i{We5WJ8j%g{S(DKT~#aZZ3yLxrq;xAqHrZFa}wZFa}wZ jFa}wZFa|>yoR0qnb?UsbOGweA00000NkvXXu0mjfKqsT_ diff --git a/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--with-slow-network-response.png b/frontend/__snapshots__/scenes-app-notebooks-components-notebook-select-button--with-slow-network-response.png index cc47c9d64706cf2ef86ba10cf773b7c55448d5e6..2e25a8113f1d1583a6e3fe8ff45b69d602e3506e 100644 GIT binary patch literal 12609 zcmbVy2UJt*wl(MIu_F?if`DQuQl%?Zfe4|6-U$-v5KtgMs45BsqzjR*^d>FzdXy*~ zqy`8@dI%4_Z=8mAsHlW5K$RZpd5w}&&Q~)G)-=VA`Ovwvb#;YL80o%cjtvlF zHbp?9Z9cy$ZJB_)3!%QoK%aSuCnTIp|1QTXu}6ua9HHs%kEB9)8a9s>BykJLBW^pX z4Lc*xF4eDX7A_`R5~qF!vWJ-L#0C}&AD`DNJwsDqb3RsOF2S9B*?+)q z|ICYIz0#w_`t>2=<)>->I87z8>4 ze#~)O_#p!P>!kvMO6BcqJQarZFpSq@>$dnxucG7VYsDU1@m1-bmG35%y{4(pThT*< zL=X0qsMq)p3aTqVm_4ev3#mbdI#QYO0{5$H&DCwew}o@>fi^il(bmlBE7-uT9tQ)L zcswz2kDpjdRcE6<=*C1{f0u+mw6r|;fYqe=oR4e4ZonXUAkDB;9N0eQse{|n^pu93-pGeted~aI}MJLyV z>M=FYdxYVy$`K;ubA!f7PGrzFB!T2)PL9i&kYl9@$V-uf;Z!ghnVTtCv8YzR-%}PM(BFCyCo4$c1w__LbE@F*sS-5WB`@Zo`$3bjF;?NhOC+WArmFi}P5yoQbF16V_YZ|n* z&_<=pj{jAuSs4;N(>t})d#pyyni0y;6p130Lh+TW@=|)n6EJ~=<>3jmugSJ|?<|)~ z)7->!nHVn8YZ14K7P>=fcug8R^NKXA#U%YWap<#}pAI_Si{@PrC)@R_EpehSCB%VY zMMnK(&a$ZjWJ~2ryRBv?owgogqHB+j;3q!9o}@-J3jH{13vZaw>FqaiL3^vadhX8= z%KU@%tCDnBQBU=>1kveB*c{>%yroWxLDs);@?=+Cy3<9Gx=s+qf9C2ZXGtIV^9TF+ zBk~|lgN`9DYuNxTjkTp7?cwZYyU0_O|AaxVlUz!7+54dLDk&Q+P+|R8|c?doir-Nu`>CVb>K8Ea%;VsXC z9t*&g{fs(}Dbv`i{nLm|?44JxZ8K708>9EW@~w58d_n{}7>lg8Cz7*hV%pc0C?48k zx?P%E9YvNJo4lfGKJ~t$^(xz~XYz+>Rhhl{IMj$R1+o|umWrL$A4r+(EEJ+E-P4ShTe!8 z{svOGAhi)x&sEpYId5Q-z2l{*3{zS2QEU#IzFTQgW%PRdj!B~$OY-OqvosX*Q1*n1 zMI`>in0#qSXsbB$W=6@d|GxSvuZu&GZ737QoHl#lr@f(3Ji%CQJzhStC*x~S?1Rnf z$6D|scJBj!S{9uyojO$kVS42Y@TSq=aR~my;XM8oW}PoXq))~;ru7iHUL#igRz|)AIZMN-8#@U>_PX9{>A$yq zuH1Qu50hu?d*Yt)xWqnPiwkFp8fcln@jB| zSZTh88$^r}g{@TU6$hkl|9pthf`dB5B;#Ql={fy-RWHEcb920KcJ1RnD?Q?ShFdZlocO7$z(b2&F zMP0v$`3-aj_!I!l|M9Z=`9lWjs0f98;Je{&pa(su4kg2EZ|e_a9>l^gwVied{>)3# z@3vN9Qg>&wLJ2M z1wkSdR~0uMkIr|eIO1%3xS~}uK~VoF?%A+QoTVtz(8%HbCXzf_QTepxDjPdh6z%?_ z)F`3Z@Jn|}eLF8vU5gmweT%2(SRJhh<2ys8xiVJMzx()2^!snMR8;#vrm25L1mc0t z0P(0^;G?bsp-(RshM+A3s{8}FjA!Qk3LnL?9m511WvOnJUJ@v6Of3W#IYC9vP=O6@ zb22gvx0a?cLg17zdb9I@MqYu<1a=-V&Tv`JhCYGKDK!BY4j zYL>pCfQ>fp9SW)V4zMp3{s7FIX8d@HBwY+v>UBrjk(Sj^zCNGNY_xJAkWNkx@i_4( ze^NP)mgk8(4S$ED=NL?JHX7P3{k1gmhu>4ZrZ1BEbByX|zJ=p*QoY-Ss?@N8JLIa# zY?MJtQ@nsFg_ss_j6PVcTPyQ$9u#&Q;`gB}<%G2#93QOpZ)han?=>m6n{o-5Pq1C- z5NhHdmGGmuH+A3JCJ}m;_L?gN;q}9l*_LQxC6bKmk>l&_&ZL-c;5oCK9u3yG+4_(x z2%#H`LbqNo{CL9z|H*CuB-|OiqnGwdGv4`_OCxcZ=+cA?V-#rLvkjc^S(BCTSx5_5 z4TGkriX@8VdGQ=_>yO`^&io8jigqZt-<7a6J zqPE#{=!F!|!^PeTU>&_PzPsa|M|Qd!)X@(WF9stfDv>M(!#&H1jQMLuG(wvlt?RmN4i@GH$BMPmESl<5F# znO>=AFP2Iuyg{ia*eL+<)Ub4@;-B|SdbM;mC6~=cEt=E782j8z zRDzUcrJor%ULYXm)|aOmF-Cps!3TENZ$f%=!#+$eNZo}QVL2qA>e_DEizXY)Qtr9( zD}%6y2!_?Lqh~&K-7cfqU8ZXK!5rKg4}&-F-nQ^ve{%w+3BDgGe_Sn3po65`zge3n zsvLaJ@&**7TeJLL)TUF#G-sbX4p+w+kIa>D7|1Q3nhj;(>uZ1h;JCz@)r}s4s|kwj z1q$~y%HCNUsq^|eGAaGh+{NBXC&gzE5!M?n+?)l^$}Hp$9s_wMYPv9j%QTWC_BUmj z{p}VrA|9ZY^_uR4vr1R;q)o&_9lU*V>>jykct6dpidLXi$#@)o=vQt&nQY(414SS@ z-wQ+N4)PDeB`0`p&wD4RnQH@$M zW7A4-d!d~!?Le0Z&eJb2*zfRG%=fNnViTn3J>E>Y?JZjPK!RYMOAk7*%sS#@1Q~wh zh?Vi)TAWgbc;~ChC7MMxW$EP%5Du4bdHWT!$Wko6+b_~P6IyT-I|(daFBs1qowur) zBDGH*p=)l-jdJsw{t3XqL9gMKZdB$Bjr`ho7Hvr7RFf}H7>pnP=gTvGc|mbfEJyBOg2=5>+2b59kKk6IH^e33uic;m5&4dJ5IiEB;8Vn%v+#(kzjmDp zG}EJd=Am`$FirG7aQq5Y)OFCA7k)|zd0?{n1@J2spnmzW@RPU;R4<%bnR?|fX|00# zErLT%{CIv{5jzSkwYOXv${h19m~IMB~(u#6BfVlKD0*7-JCp{?iB5t1P^hY(0c#>YtWfiP%jzdrFyi;$_bmdRbzRO56xoTXVz9;i$>0sNL zOhYncVJWBCNOo;7-u=i)Oc*#vkkQ6`BH9_$HI6JvCVeu}IR8dfu+)p&UE|H;vq(5K zSZuqa6XfIRP{RNDN}AQs%G|9JwZK5KDAQTuWa>@+COIx6x%o>t^SW0krlbCq#BXiL z{r)){4GR$;w^t+9H0MZiX-rOpD8r6zlk>>xI_nY{E^+#a`mauA`6*08H2#x~&7Y2X zDeQ~aZnpR#U!l%S-tCSppe{mx*%WMpKTG2-N$QOEQ(QO;HgLco$DKWP$d3j}kUmh1 z`RJd8l=06|Zi>9)gB&4t3Yv$?&&3RzkfpC}IwgtKBP&%**=l!mO`V-h>g%nnONu&P zOiLvD@a28hnru(_~6%uhgH3FY}Y+NSSgf!SU zLW5E|BZ^{85rSmGMn+H08lkmdEmtiRYd-oThI{l}8yip)=P++l$etB}Je($JL2y)k zw}kcMHhK|vg_53ucUQ2*5$m(KOa?@6_R1#eUs_O%1>8JQA~MaR4}RR_ps$GxY87y4V{lY)-G!dTcZh5oH~rxa%YHpG4JW`_i`jI z@~oonNAxX}0d)u4iq?C);QFW*xoFEWkwcbx(iP$kEZSe3#3;m99Q3B*PBRoMQ9XMx zQjI8_%Bdj_!+tdw&uVhnkBYg*QL`&Fo-#HW6+=WWns z;)jc#6_4l^64I}Cb)^^z`85CwH{aCVt-8E1*3WAs>1EdD8grTxZ!_<^>28_WtH2?W zR8e2Vg?afg3p%)(HFwPvOE?aSdR@E*asBQOvJBz41+jCKq~{X;2xAa~7D+7HX7{jg z!6c(>i?5Pt7S3#Y=%g9(aFC@kt@Z_xt#RD`X8Dp752jPT3YvkfQ~k{%PtW)% z==?87e+Pu=N|jAg;)veRR6)ZpU_Yy8SkN7Nwy;mx$uroe1OuBe#GJ2 z7K+MIweN)mR9p8Uw|cTeGtP8$ zYIfIgoI{xK^!JB|IdCbH_gmLkqsTFk?!vLd)TMxsQJ3$T<6NbguI8NCxo%U_`Vjk; zh!jnbo9t%GX|ur5>HI{S&X#_0*cqs_0kfTcsmzSW3zUM5sOH-8YRyOBy-2Dxvsu~$QhqE)|j_wx7eB|;rC4;Kn~Vn(P@%w@YokIiMqe! zeVT=2xzat?9Z-|oGTr5_qbsb!;sTfWK*n2iVT?zIDz@ZW4dXeS!?uazaN(|VoKdzb z1Ef*-P|+t{Kfq@ZWB6$s=Q2D1Tfp*&rcN9@^8lt=6!5WcBh7#N_tpC!9tWTk{;J-; zPr-^GP-M0dtZtpcI{;^}9ot!uKdDiNsSl@ae2AJcuk-k1?lEFLHo~w-2}1d84;m)# z`8`4`r1}(nGOa55p=rLTVPee51yJvZDBv{m31J5F^*flw9bV(x?{6p}fG$bSzI?Ra z!cHu0VRL-i5}~m&P~1q#7pkYzy#M+5c(;jIx7KJ{j+||c_BXZ+RTH-AN)+G0)4`15 zc=cB@V>Qd_R%<)r`Hgj^xd?0AX})FDY%;^$QY3z#y{X`^_UreayfF8gdgC#T;Whzg z)FW$xl!Eu}Dw(|li0Wc!j*1Is7SCVw3Z`LSU8{3j=uSTbMvQG@<&)2^lzs~$r;6Ff zq`vjDUOcc zKfE0GCVjfW$yJ)K7ywLDr{f@nbg)gb%}Mb{48I}zZLP5O`QWOYALafaEnCNfh2*Ee z{J3eoK4j{$-!ZlBJX+qiwy2w#K>-O2Wb z7Je0jz{o~IwW2g*+W9n0-71R92~vcLi^XemSc_FPy#+YU-3kj-&Cps5x1ewv377yY zSfxGoIshSIcWw}83p1^L_EFq#0U|@W+8M8@%HkL%yqJS> zV}qeEJ?gt=%NIJd&eB1&we%3nzMHUB!Nt1 zA5_Y?#)PS96l+~bw&D|-tmKL_9CakSBFmua(K%rszWkb{Qh;zfgr;Nhr&het0b9Mw z5Z$|!i#{*$1GmM}T#xq`u-7$tO+qdUjamYNQ4){vc;{%N_x5r+pn=w?s*~?;c8VgW z@fds3p!Sz3?INi!B7j5^Z}1o^Xs#OaIF{_KY5^z=$75ZoQATpV@-X^ec_0m$S@~Y~ znhBSbA^_D@sFrcL0xI-OjD{)wW5&j7JJY@>cHU?_z8<}Kc>7^_h8_HNvdUnr7F`~* zpc1#~w$*@Dy|a!V6*G78>!HKg)G>Ddy^r!1)4ZiW!`}r_c`Ig%&{vo}`}~JLw@2Qc zerE)LCYbwU4%TE`H+yH*{{Uf5>buZpUPyR$@x+4_UCdPd#82wDmiroXS=ze@#-Hx;P5}<= z7L=xh55DUC@`H%jZ=d$7e8F5>qjLO;#jVn)<=Gy-ngQDMDF}dkN8IHTR~+D6smh8C z`T7Nn4J*TRppJ!Pa2yt9YTnLAuFwP)v%uuF0MqSu z7PG3Mi^lfHs`+)X_2Q~`T5aHSZFb#CDN1Qqz8e5tGw*xJOcoYi<}jF_1wofH07K0s zvCi)@2@`w0z~4{R!T%3Z^boD$w6ih-24UWLasUL0^^|}_%Gppbups^ zsMCJ?+Nm7qZ&J2G1QDB&s*#n8j>S6xgdyLm&uAYV^g6xm>fzkZScePoPM5cFY|epk z+Dkg*I7MR&0<_=vv}?Z8muFwLcn_Cov)jJw#tBhZjcmq`oY!42>K`gTu%F2m&?L@u zu5aA6XD71=@<9@sp1dJsr#9l{4yGNOR{n`nRmW0A89nT{8u+RCa&e~oY&4ac9DA2?2@P;H$3s1KVttK~k*JN}#%{vaXZ2Mu71*ZIeV^Il z($jCSs^_sbdrd;{S}ARWX%%vpuzllRuf2~w=g?x?#E!zQwmqrRnYw*d`Wc5Ohzcai zB1d^@amhl!%%kyjnLTlTvOufa&t2eh6=k# z{-fpg1^qjHs!m0ORCT(8#42JZUXBXn)4?J^aXG)h)Wk5r^5~O~8(!HSbXhl+@n~g` z@Qvs>>GEs>Zi3n82=hlw#eG6oR*?4azyFuS{EMppgSh`K|NaL&`!9|7-j*(~x@Zn7m|L@1*gq*CVt{e>4{w zU+zjJxp<7}+XU2(6+)_}4~3|&?ig1WdX2Y;2BL~1+spu}X(M!1M0zIvLj-SC0<~Ap z7V?>ZsBZhvQu$bEvGI7kjWQhJFR)SXInn}HPTxhG+9{G`^_HMh%cWbKOh<4QkzwWCd=xK19u*!>J~|otQ?OKgh+)3kOVn)Y{9eov_vpS#ahUuPY+cY))xe{;F z2GVWNu(&keF6eX5Xm`K<$-$53pIwhCANhfr(~3Iqr~Uhm$V}b4uOuTKYdlp zn8p?^u5jV3C%=zG8{L4av))!>)g&1NSRCpNx-JmHHgiScqaVDCwf{uItc#y^nc(bk zq1Xk%OYM4@`lAxFyrNbFL0kdzIh_GHC@A)VVtnD1A=Hg){Cs6v19Vw7<6|H-UfqSC zW72`SIx1QVW6lN(FUJ(c$)-onxb37)iOfE8fme>SoYU}l){ zC!be~=p|k$DG;9`1|l8eABkn{$*>GdrNngBfBozMQ6Gs?p?@H=uX>I8Xgg?2M6Ex_ z%sNQL*QB@}I%i*l>RCZYYy<^TOJ}(R%#NI{WOEmrD88E9XpXvR&RvBsqs9jKSbC=_ zr@}+cKZH>vnf&&(Ksl7EYBBIqOMLREreAXi;ro4r#_ABe-34?Y426cjNlHtE2^5k z=%0XR5tz)P7DVe2*q6^Xn;gk4p8Txl>(HfjrU6Az~m6e!-KSe+_fjq_=D|ALFT! zY#WNuJPaN|Z}$;`50FAFOs+wQU+$vSQB}|xl&+DG*)RU{oW@>7cLLI1jY+a&lZ^`oD)Im3-|DMLC=2VI1 zrd}jUm{^^_!W?z|!~=9HbpG#Z#$T$*f9oI*fhp}jymJ^XP+HmWDzGq@+k#AF%JaaE zB+>00ck3GvJS`frQAQ6Yz8`FaOWH<{WDEFIy#+!ko}#bOT+Hx4u#^#ZM^L1|HEHC9 zXCDjkUr`j>>-K(R()q%UVI#K%G=6wB_iy|>Amzj>GJd+y9+JIAV8V{4Cyn?aJ0mvQ zk2}O|gqot^JHOP|?e@mul|s|NnJ|lotTWa$iAVFlJ>T|hNz^T2p40_-;}{cV z36m?;1)az4=W3&dI6hGd@{IA+;?`Dm2 zhB299lQZd5i4X_z>0&BKtYW!nL)?FZ?ew>NMRC8o?_t_4gS9;ie-O_{UXDK*5gfLV zjGP4wb_LQ+Sx%!O!l=_87*}U{uH$L;S)!zmV)k?0K-6CfYlhW`;vMS%5x(JLX9szd zLfrU@HO?Z%WvB1Q*5%x*=}3o@_)l5V-<}p-$o%eN^*x(T<|CYdcY1HQmLl*Tai7uxTf^-;rFVQS2X6l7R2`4_g!qR3{&;mZLZ6u;ZZ7M43dQQE0F?L0DRF)M%U zqJOVza~hFULRbryiaT~?ck#kg>v-%waJ(uhUFN^7W^j&Fd*wnrYQ4Jv3(t;^9W}H| z!Ajhd-tE36LR;I`Q!`%Jea5-D&CJ@ciRg61g`>`MHw^oc$1X6lnsZscc=_$^vc z%E2^uUA%PDD%_^E$lS(I{7Po7Uko_jU69_GXBne|b9Tm%^Bfnvk?yd^y}~O0qV+!7 zs&{8-ZgY)(@9ZTzB_`9Sdr&NyIr)&%0HCtu`=Be4a%qhX+6%KR4d0~#0`iP!x|fJ7 z9wO4U5lH}Uc1wT{$Zz($-c;XwTK-mjGh|(+ru|CvUO5~c+unf^q}L|ZKSrNoIx&{e zJvVAq%Z}o|Er@*9Mu!aK(45D&LlL$2nhKCRTFN+hbD*WZj%^3HbT543XU(sWk?prM z&~sG*z60AUlXoX;Wtb`P?A6Bw)DUxFq|ousS_CNmF&kJRN;39 zD%=_*{vCjW4Fo~`5IcJGG`~?|npSs{%}z)`ADltQY& zOhmR9SXz=>pY@$Kk1sQQ5-Hr&lTD_<_;xd3yEzkf5_W~gleDStmj8gs7=E<-qSul5 za8POai2Q2*W#$fpNlvO)uax+H;u6$rTK?63&7wD*c8F;t`0n@JA2PJ#u$g~@<;jKie0>TAMn9;{5mP&SK8&Lm~o`U_tcv^H8@C= z?U(W`Kk$8&Q^n>fo&7v>%6#94s}1^D9{t!QOTX&QrEvavjkQ3kLJC=V`JH=bM$Xw& zzpTZ}v*QW6^WALated~y$r;wZNYsT-hU`iBd%u7qHu+R9HUW8xuXpO>l&*+cuqRQ> zOt<_FwA=LNtTrC&{xT+F|8LscV9AZkAk8|5k@nkAg@41P6^+&sI6H~rS<%I|Y&Yas zJ;IGsRpr-J?&K0~OOGJj$nNAxxD@w(lzA@NHZUTw06FR1JMSWRA*d(?epzZg{?opO zhcW@m^}HZqi%i%VG-x9Z3Ej|1jZkh0W!f$~I9va<_I<<-xxMs)m(MkZg zCVdI0yxiU(DL!)at#0WcWse58xg7VFhZ1>p^rIg*Tmj6;mSL4!X*VsSOCOsjP_&>7 zxNJEQ+o=XiLc(UmUk)2!+BT0a`f@&egMH6Y9Cm!;%3blALP{?z=lqb2{fO6rrX8QC@g5amkGs_5clu!UTWfF%Oy~%UJtnH1%w(PD-&)8z z+3b4>kI|;t?kld}auhlmQfu1mqlHWLsVSqEcHvS|amP`r0pMtrxx_Dx*LS)mb10egJ#o^4j@q%E|Fv_Cr`Z%}LzG*QT7q^_h3DWAW+t>}0{0UpaR&_(8-T zwUcOvVHhrC1q+vIRSUL?8kx$YR~4WqM$>)l1twI0G`R% z&$J7W5##t&viA5+@fn??L#90cG>s<*U(d$Vzaa}_tXT{mLm0cGkNCqn(-oxefwCZT zk2#`wA4~CokgV6~47t!p{1WFG8H^Gjmh!Dn@O>dGIXA2ruZqs-T>i=kYXb6TohY*1 zd`3it@214Jx$XY(TP3o*rA{1f(Z*(W9|zKxn82Vsg)A@jBlNlFHLZNmCq7Du{ZM}9 zxHoji+6j<1jBzGBm1&T(%0OJr(4C%>2q+(KQEvUQ?DQ*k<(t~szjqi~C8U>mSurx0 z@Kl_HwuLKk=y%eSi%)LQ8Om(5)BDAR{V4+NgjkJORa)Ttv`dea8QXx=Z@>~L_T}tr z*jvTEe^e@i<0D%|+W2|Pa|hB99pL*QjNWsd`r>17V7dQI((ZF~T+*Lrka!K7=O4dj z#Y3Hebx&uhAMH$*h44Y)a~vh$=(!kRQzQ7(6dAS;6rW_#Z}5t~oC6tiC0K(@B=Ufu n?bze5kIdxTr^02woSav!dRMa96;g2e^e7afsZ^x!3q|zZEAl=OjASsO^4Fl2*(%qoa-7PtEGsD2M z@xK07-PecvexKj-en6dZv)9_^TIX?`$8oOxNmW@6AD0Rj1qB8FmHbO}6cki$;3ozf z6Zod*sTL#f7pk+m90;X!@XRwcQ1Vhas>6wC0M9vhV;o7@r;L@17f$}e`LUl9hhosKb^R^@W9)O1{2><7Mc4YMm_Fh_0^j6uq5cJkfKtX&LO5sB0fwd$y^^ z8Rg+b9W+;0B#YX=sS@jweh%dw%0gZQ66HRle-_BakHbwLSnw(ohhFJ5ND156>dFfN z|HZFBit|i;Y%3~Als~_KL`(IN8kvBpX>Ipl^bLz9HvRWL=g=9pQ%>DD=49EU;uHQz zlMj638T6XvdLB|U6sB)&27T*6*efh5d0&40($ZvwniH1mV-4pUvl>~Fd2JYHFxhGv9=VFs2Of6i5mj1N{bFy6iwcG*H$21J#5?t z>=QR-vZvYeKt6Thmv+EjFR{EnWNx0vXWBiNN^ySjen{eLwHZ5$M)j`FGnC4sMDsN! zcbN8GarqqOHcy5ueq&FkC$r`lHr6m39EtB-+5FhP#w+mo%V6n#;un_TvV{YKdT!Lb zagh(mx-soxI(x-G9IY&K3d(}arwd9f$2$jysK#rVt*&N6h*l>}uU*vDXxqNUhV>{9 z47z0%&5}5OSGEp|5AJm>ekd>Gz(3G)D;-;k@mq|l65}xc`!N%07Yi%YBvamSR!G0n zA#d%?n90ghv`>vrk?K+Flw|Ni6wQY(igDk$1_!m!3Npk9nXP!5t!t3}phufFuRZpd ze3lMB)g;vP%73Bx9K7IKgF-t{K}Y{W$Me=JW#Ako{l{X@54WrDdj)O^(#o1pH-ymwg`cd2;~E6yEprD3Cb;3i5P)+XF&5|H~K*0p{>L9(c) zF}VlRCgR>G-#Q$PfAkrvYZ4xAFv>LP9O->EHxBe^b{D*I9`xxfn+UXXEbS!YkkWL) zK#RB@os=|gx9$h8O~2z)QErcEh-+`>^R;vgO4&rHmydosiW=xpO*rDGm65g-khKcK zCyV?kfQSAlJklnCa}KgjmGdzm(c1sG<~~CSm4)~|9lcL>kee2Lu&(ZwB5PO;5XelYv8Feu3`(4wYEJH~d6NRFKJcT+~2 zM%OO%f7_Q)TiJsG8R1KIh%A(y`^^#~)R;!dE+FAhYGIZ+`aCIFA$rw+nlsOoT{HFV zi*NC*%%!?KbxT`rl!d%8LKsHhK48on_hq=Fq#mD&H99jW^o@C~p1-@4 zSCVq7Ayq_h$y=Ij%H;?ZkQ_~4wI?v34@Wn|rIk#v#Z?=bvcB+(_f#mb9LEAf;*)F5 z(ga3(xFUn6uPQwryZNoQPsc$b%QH78rlDqy$_7v!F-b7m2QpntD*W(!#2VQYSm7jV zkI86q|S=Ka1C~*qqVF&e^uUqy5LU=3*3fcZ|xae0y zow|pSX$ln&UyOww75su7$m*hNTVj-pSmR=uizG7#$@DcOcYr1-G3O|=Ht=^UMThkndDsRjp;9O zsZw3MFY30YCe#mjSwa56`6{`E5LmehzF9*kRIueNsX5)2>VuZXv`IBgFr0rA8f3O` zGtT<1mME75%crpYU7Ett(sX70BUJXSgs_qqt% zjL4Kdp%P1%YHOFF(J6~$*??7)etbe_Y334(oh)M^4ya0 z?Ae&qX0~hwZbr%IhcH>;6o$53>=#+7qaO;ZEK_fce|BoEGPeE!yZ{TYEELI z&Q`Q+Srd@GPNvrjKVflS8*q0v%(%=<%SfYsn;AGFKD#poF-iD_2bnXEYFr5+#2r{3MyqA*p@%`>@m3d?Ovp}Mom`!`PYL?Fx6@$6?HaHo4VaHJ~ zG-4uTo5Ta2Tm{w;eS5r)FzV9dA2e~sXJL0vA_9>-zp|GDVQYLLdI(BP4ooEK7=P0B zcd}HRt=4Y|e-WAz_=jEnDG(;o^tb_kKIA>l`8(Ba(aG(Ve3Vva_QXdEyZ6hLN3CwO z)R-_ZLPMs$i&NLjc#1KQ2!u`lw?70Q;y6Kgc}Fg)0nXkS>W=0~%V#3c@3;Mq+6}ZDWgG969+hwu4=Zox zNh*#dUt7N*2N_W@pgs$H?%`V0t|+~nSvo)So#Wtltz_R-xY+Qfgl`-Wr5>585RJ`~ z+odwLPe0$pGIG&(MQYYkJ$bfyOV#8fVgwWg#3uh5lKZ!PHF0qy#KgpPUS}+BjXo-A zL<~&f-5^y}qV->2vtE887JRQHP4Bin`g9N~sS<=s`rNQdNVBLq14ax=j2SRrJ6`Wg z6?G@bA$h78&vwX-AEa$!!tj;lZG-VomOw71q6vip^_+5TwkJ=X%*PP%y1d@qnJ6OR zG;GSSegK+h2qR_fnJCh-|DhcW>bI-SvecEDVhF60(PoRMcH7fmOe6UZ%lD63XW$S@ zv;KBBme*#1vM(LI_myI!Y%GI6U!hTC{D754W3EqHD-nY)E??IM$8~_MsHwq5PL6>o zY*4#qKO)Dha#n1<)j%r#abR6HsdlIte))b{vU;PenblM=2)Jt(t+?WwQ;r%#BMzx& zfj^4S>YtH$|Bm2o>xtNsjvjoSmKRlRt(hsenHxblg5_5tYWhjs>6y`5PF`N+`=7*% z5QMFv_a48*#o*y_A1ApRW$^qDT^iFgQTP4e2qrsQ3}O?#?~nY0 z-Y_Rvr^K+VZ!H!SC?cAYc`XQfqi9TrGo&J@1*13&8p?gHj#C(Z;07dhXoOy~#EkuH zMnt0zZ|$o_?^#XdE0L66v^hSu&x`x{^XKkTE7TVWGa8gs=QL^&OU`xN8m8B+w)&a} z2_o81eM}!855aHSQ%ek3BjIJ=(@pPn@~PGF@oDN4wB@s&j4&TauCH2X^5nIiDt*e$ z9qY9I%W(;OQ6D(J-j{H7Hf1zZYfoosX*phMkaB}WXw=x~45kWqR#}d1O_kBLULWJR z?u;7)b4Ph8Cs%3QiK(uxo^RMJ5*r&E$C^;T$IZ>nrdt&nPR^-bqRWp-@JK$1$IQtl z+%%$>);mHboGdmj?&aCe1f`I};~d2Vw;BZUV(AL_d8MqJtDd89x;yiw@t}p;Z=uos zWWjw2^)9w!-(>J;A(zI|bA%4Zzh7+(rYZXPh>@~tW_w@k^V!W$=S1cmfi2hGRn8;| zJ3k|3dGnZuhuBX#gn--k#^>|r&-rRunCMsp*>4Ke>q|N9>?cQEZzH~RS*`fho51y*8^hWj@9mP9Bk|iU4EqRB*2xmPneiaqJ6Ie2xvqc zPPf$D_GW=7u*<)CW!xEzKW!txz{qGhTg5CTB?UzEq?gW@h?4TvRH;F|#}NaNftj{* zHQBkj-yPRv)ipG>=W01^XRC~d(#0Q1_#|!&q-;*d0|_r+H~-@+tCq*IKbHQiD4MW{ zNOHCH6wkXh6tB}QsZYdDFOPcZ3V?OG0|8*WjTgQR-R}8rVJO3;2BJ5JrCX6+H3e?qi8s~a7VMaS2!zlhH^Vw7gDv(-8KR@X*$x5hLHF#PxIBKKkdp~RM0Av198r%#{m zX4AOe5bo!PvPnK7ydP;N`2q-ffmRtUim|b=euK*=Aiz!+3+~iFY*LCROAQo3AT$+8 zBp+Eggec@S5`I$fa0Z$jN|$*Qm^yfpFr&EUABphe38{BL1@1{ zjPKpMS8l%~5k)Jm01Td|oCa*B&YahiV{O^lPfGRcSC2c!`35L)wMz9-9ca7#XxX;6 zw`ps84ZM3j_^l^hERD(x#UZyy_gW<70>p2&+5j4U_taZkA3E0%>TCY!Sa)mi@R`!% z$B$3sDr{!H^L-fhi`K)cYl>zgd8 z)kMA$fVqz(+~U7lpQ2c=Y^v;wMs={fE$o`Fcix_<%yXW><7`?6WK3#angX-=VCpL% zyDsLP3EdZ5$^HHPIpj=cgh6d{39VP~pwFIHXbOxlk6B2_ZoBzu_+CT=w0Qs^A5^5S zK?nhje!Te2<=P`*r$8{`{0P7f$06~H;XD;O>FUrqMSt+L>+%_4x!oM4w|KeR`iC{_ zhA|6biktT;VPrVRo~f-j@bLWn=Y~E<-H+rbfx%JYI1G}3Z2l4#_gm~OTAjlRnm`J^ zUtr+9s7JybU7sGNKBWk8A7}6o7J|qN0M$ zsAYa_nk+mBvELXCAlie64?BbK$hE(}$0^b*VGt6U-n2dHF{v1?ceWs7*X;tx6nb5uP)zeL3;nCRS@qFA8`g&V7(Y+Bi>ydulroBC+IhOeFefY*6i)R z-+W?CP)R7TSwJAr)@(Ja^XA~0 z5F~-a04R(4Qv{;{Kn6)mQ*xW!lagwodrNhPX~mkXlDF5DCu?}oV#lF>Ln6>2L1yu045IAJ8xdXVP%x!UVQG0 zo=jl)sd4*9jO^@e)htSvc~fHeYSxo7b8rIM;|CC_%_r(FoCGHLJaJ5n=1^|b)ii$|5}^}u@6Bf zvF?hypMQ+30o70)HnL8mpA3OSZjH!bB(gA5?c>LfsYZuPfkcb?^-ei$E%)d}rRm(* z^=jBQ2h*gPWhzX%Q*TqH0dMR3jE#PaPZAzEN1czfqZAK`3BXb>$M}G1SIGOkI8_&y z-pQ;&8ygq*8$cv+&(&6gBP=h6qJV!oc7_pyu(N(Iy!uyD?ceL?f07jcs7e3JfBWBF z+PFfm$qs78p%0Y&5ql?B?2?Fz$WVuxQ=D%?mX;uLkO_vPCpUTN_D0Ny&9%+Wb0&X*nfFc+R7+JwbpVp|lO1Qz|6W zL0}OqN`GC@2I@cJcz>QUvhJytM0SgRHOBX~Yk1!Egnwd~qBu;a5r|Fk%}` zaJNELXovc4k5Rk9E~wpMCp0Izg2Bs=FRJ_XvA_Om$1=^3#a2p0^)@*(D-!6;XC5vW z@Zq7|nHtaYZG^DsSKRMU&z7{)RPohs%CCUav=|U1V~+Jm&-HLQVzOzc)z9nU%gzZs z$!S}jqNm4!_>i+CxVPE|9_IOVaI`JS5(b*JcCtd-ILDkgZr^jv8$7%br{Y^~@m@al zytEU(zlU{Zy~Wuk=_Xa?ZQRN6VF6oU&mSz8VUE2kfqm=q%bBKxy1gqCzUI9nHOI6P zoi>~=(4UBPR@fQB=|6$CFxPg|$+gC`HH#Z|4`z%DZ(gg2h0|CCws{Z1qP-XJ5YZjQ zIb0dx5<_?M^rL+jaD$V_+4enpB??y-%1(b=)&|7rBpRv-4I&4&8b~0EveoY9bA2CZ5NgCvwRyY zSp2oJL|l)8vViWLcf9pSg>5;9vqFSsz=%l5`P7Ab*6iVIRllH2VBG_|86sAl`->2c z&Ff7D;}b&)VGPJZhLNe47craemzi7_9Hh%`w83yol0?~SQ~5?*1VN)=*01mfu@1}6 zBM|as#=CMv&X0mEL}iNgX(w$aqV0SN=$4gy%x^iH2z}`Sm=N&0ait_Dt`DEe%TF%7 zBwCfNH)IRzKSBvRJ+e=-HWhyP!|8YLY4FflRlW2rQ@BVM6it(||g@$)Xbm-Ha)SaK&3=Ks*C_}?Ps zf3|e~fxiR8?z_}y7wtltr8C_Hm7hpB$&|iePHfLq3%5&^c0LmE2`066BX$=_Z)-!@ znJQ3#(y~9-`Su)T?Up}fxR8{BzerG9-kaDU;|DnV^EG#q!hJ7@(k;bi=9G%iN@e^%#6wTt9 zpA`=`)5aD(U{j$xnWWn@!p_KFUlo?hD}snhugOe+>v3@JFaM-Bz#+iR7+H8%JNHT4 zE51mJ7rOz%R|D9Z9|O=lyyUgQNJh|$ULG;@!;SIv+PGRFKR)Q-wdcB zQ&BM;j^Bu7zGW3czn`JZF7Bt?W#BMaWRS&^qe!|Ias_*((z;Q`gB(3*X;nF%)msv^ zfAv$#Zh9Jotp#Z=rz3fP*rt54m@Oas7*ldOy(^rVO}9nZH|VN*wDv+E~bwwW-ou*YRpOR*J3 zf`qkZnbPKY-7|uHf_Meu~TmgOgDDeMK7wT90yvJ1 z$9kczu<5|@@gkp-PO5WSA*oY3Z=GWp8IO%y0%Mh3TJmQIe*kAIBC_?I#$v1{;JV6# zas5|(24Euz!}mt&nSqI1XeH4iZ09pXdQ}YHZU3^}UG$DP@YN-JF(%8eKbxbky!LL_ za&us7J39|pM$ffcq9SiCY!&?NUtfW71?_2kZA4y#2;fujWi%@`Hd<*qwtTtl{CLI| zJ*&JhOCRCWAPCqD&ZpMZx)j%{SRc`laLX8d1kG?B|K8mEz_~$1e^P6DT-+N>f)6SI zUhWOW-n(6%=7UjAi|0r%&ypz~{jn?_zShp=_YMvqM@0+&)N`6I44^q;)kBd!CjZGN z{J#K%e`-nod!k}R#3^J15-K$+P2LyJpPGyfNU>hN#4i6o4Yixc>-W(AEk{qUA zvJfDlFVn>5s359X^#F5wL1lbu0X8}DyP<#x?$mFlYXAn^TRn@G*S4Lwc2e@w{wl!a*YCZxY7yC_?dEQzM;no#@E=` z%sBNOV1|WeeeqW3yE8k01!e_o7pv2)5j!a33Jae;^JxI{9=zmGnoV5X;0!jU5=qJ1 zQ{R8o(f{LzDvgMXDyvqhi_YzsisV~B)elrlx&s=19I!Z3$3)$BRZDcMe^s=s9TjNg zrP|sGqyVPbm)UaT07dA?$Vj36QcG};gH0b`W*ERP0mst-g!rmusCLkF66NgmBZmHN zQuTHk=S0@P8ihqhx^gVtE!bR*ZOi$myc?gA2@PLQaA~BNV3g}*iQeX@`9^=z&L^gH zF0qza0UhaGSXry4iuhTaf{KcJO=Nhub8xx3LQYOj!T9*N{zcM{pLFya7kFHN3#pVY zmP9WdTy8VNvol!&(|6nGr{pkfk_Svn{YlHE7IEi|{v*#+!2SAe+Dibew2;Fx3ScYQ z%`G|h(r~zT_4e{wjXzJYR&{Hn$>F&TZ^+{wOc(D1%qz>W+{iv5VDoYSLi@seH2YN( ze5VNLHbjYgpC69M(NQiA0+yKwT>__3IuOq~TkH2wj~!0V>IN8R*--V!CT0e(LL6fy zdbQ@0#X7;g7dbtyu*o9;ZB76`?*R$P?^HTsVi2GlJplmO28>KVTlbAXpKD_{k=9EE zV2Yje^IijH;YRbtB5zexE+wIHZr(n7!OSmk!V!U}hYE*IPfi zVtcFI-mX`(Zg7KFglyeZZmafpZC6&Qz-Dof!j%bke|czYe4ooOePzM345AN$dY zdzAwi3GA=6rkFkZs|BXzCEXLaKDDRaqdT+#OvThO-|HhRz_jNTYZ;+Jy*aqOi3VJ- zbl)3K!2Xi~vJ(aHf!6>>tjcEQGvLsU=Dw!xiKgSEcS9$gW;#blLrWC%cO^$W!Lm2RPnry4?60W^`);7}}{Ku3-R@eTik1I|f2SN!3}w{)I{98DIh5 z-JjF2|MOEtr--RWcl&q_gI|ED379rTDy?df)`uaFqcYS&V1O(#S1F$OX7DSZO#a;nM5r8p$Cy~|APoX$I(aR-OUr{0GJ3Pun7sZpy2bQ2CuV107%V;(o4L~c5;#h?MrEWuN{Fr zEPZ5a10V|UOeX^b?oN&62X>y2Kd?|RA%6!8;^KmLnEkd$)9UsHY1QV3S_qhYg}%2p z!W_fYG)o#Oy9dfFIpY9xzX9y>H|px2)fEbaoj39U=e@vtzg|upShG7&q`gS{@jDt1 zq5Gjuy*J^CpIk;jff;bsDMa0D{AoU2g(q2&ZfLQiDYH!#`>m~hKOUD5JU%)^a|1db z05QnO%3=bRxsh?gS}bs7hZLyT58#xD<>hw(xr5%ld-u=(vwoh(CCJJI0Fh^@7yP==eBxjrrl@-S0I+`*+fW2fTGi2?&N)^V=S1=;--Ic`RVB zs*LxazO~q96Rqa1P7%#jZ$3v!&XpXbH9?t>W*yCP<|XFLEq5B=kU*}I_e3>8O=JS_ z*@t$LdK=KoO$L;s(u59D2lo$0D*IDuWX^`e?o$o>vleV$!{-PjL><$)I}t>W9&MEw z0KL=pYg!XP2E41*ovyxkzOr!eb0ili+{a76SSV%+q-)^^5YxUWX_uzj%*=J2iTcI; z=m9MK+)BNAbEbAFR59^vR++GSBE3mxom6*ySpyjSYTk+drSZ`me}#qxu`nG}sT1x# z3J5ZsPt2)eqz8^^$^0xZSh{lmm{XQ=dKgoc6^4Z$>Ucp8*5ao+ysI5OY_+;;wG() z9tpb45-L^r8LSppTO}pqTJk_(lDKTL4@CILr~4c7M15*F}>4%wOw-z`Vh=ijxFmcV`C&Ifr8|aXrobHkKM3iZjTMwxv5Q)02irwkR z;tyP|R!dTM!c~{=$Ki2PU6DCyx@WN{>*Vh55DXa3{b5Oy2P0WQCqIC*fXe@sexz=c zpwKzBYHXnj{YtbQINN#w*zWg3#J?U1_o@MPHp!Eyi zIflGkG}zH{2ZBZpq!v(#&Y$-i?ucv@KOKfU0`{rl)jf%u_UfVe^O9N#^0ELs##7rZ z0T9$p$Wfs3w!rzc_Z4$epVkddvn=e)#S62=AiXj;;y%S~#bWNj!^45mR9mr$Wku=` zMXhE3gp5vAA?kycw7TZ2GneC{?%`~LCgh{k78Gg2kO6PwWBIM&N4Y}*XQHPy7w#yp z14yZPr;I8dd_>Q*n43oc-el7m#%T+AZu9->gFtS&wn?OCQM){}lF4jw(f0ux*~OXg zf45A-zpX?LWg2KC3efK2wixb$m%MhIC(J4MF{mbkReGe6$?#MAl(TixzO6HKzM?!y z4#PK4!#krkhfWQ`L(otij5Bs-#G?al)c0-4jSQ)YG+w>09rJXzdE#AFq_jHjeFzQl z=jC4aOefC+g#3IisPn5)U@$AcmBPkp_U+CIhyHlp7f#sN*rr*H=ayLxW<+1=zK~LZ z#j{2_M*3F;dssYqgtSwL>r-D~S@fU;ZjI^zHwACP>ER+ewTOTN{XA%ToG|#fSmNLW zdb-_W8n+|-tNOq&>r`Oh1LoW&l+zHY%F>yuV$`Qv*jK3_E+k2Py zs}u5kzV&RA0pBGHOBGRt1L)$&p|3mQx&`I|abcpHkXGyyKrG`T z-zhXgPLhnuK1~!SUrisSwD?#eTi$acCHTcFUoS<$?U9#H>O61=dfWS=8xLBQUdc;f ze`)=gmB$nPao@arj}&k~OG&pK2UoH`$X zwJ&yh9ys6mvY3;w-U(FA4`W?t@;}qq5vK@D!umnN@{MBdqImpwhHo~iVyPk~w}p6Y z7qCGrUQ3vc-mK$zhzENsk(A|DUufTVhl8fLF7}xE{ccN!r86|}C@68jM!$^kW#RK+ zq8nc7^g23`n#0As?#@>Y2J82+i}){UWD#!^Bq#c8TLhCajqz93d&O!iXAJW81g5wn z$KO>A63ZAn*eBMbd=rqmm`t~RSX&FiuW-uAFyKY%YWonMTH&=z?ay)Qmg>$wkny;hL%R6r`N-(or3HAtw2m|pOm#ZzkY|Rwl z4O(4$--acbCTkgs7YIaeg0VzA?WolsOxpMdS-;!IMSgRzYn=hFlnep;*IgCM#b5Gb zi}P^H)|2iab`j1Dt1IyGxINJjB2H+vrFc*P&5c4}Ll#g>B|j#vaf!__o2(y~n-@V` z)(-WvZ+d!xhiQQJPb@7MRQ0$n@E#>0TMt`qN)Nt(!A0#K(lY2uAeY2Xp1|xGuve5b zL$u3k;1f;Xb27lZL$5D!)*oH5V(ua{A#oPa)ls|z2}*{P=v3N zZ-~n{Nu3uyE&kAwfQvmowB;N0JSrK@n_zovMx|4N7K^!n>&^jAtlvM?qCd}W*)M+T zmER;h@4CRWj}=ZTdn+fI>~*5Em9U-=^=GT7wqiDMVM7dyLeh!qM}W)}X(>L$m2bsm zrweMi*rp4pqv>KYYneeggjvA2B)v`iq5vciDjR_+g zg61=4XBMr*t|#l2$pfV;%wS3ENGs`n?!-po{noN_)`uObxa?gvZXT}5kUi65`Kf54 z`CqgL=vt$vW8;)388((km(ejf#XzEcQusDdrkt-wkNpI-0tPkF75#ra)Bf)U(*KZE z{=d|MZW5>0I5W!eh&D8ss>)f37`_19WaD;u0IIX67~jT9g9cp{@g``6`&l|0pL(mh zqXdfMRwgu@AMH8SUAzJ#0p79lYLBk>paHsVWlOe!5_=A-HXGZ!gFp%?}-gYQFJnyc1 zy;1~J+5{DyYmVLo0NxUZfj^evM*`^;nGYH$-l%0SYxkz4u^pn z%Q}3o-j{X4G0~ciamlq6EL-b14s3ugH$_8@4r);4mSPnZs6~?sR--|I)a{$XZXz&^ zJEC*0WlL1HAU#VTvCseO#91%q?tyZL!b@Rik8;M5ruv8@&45^e%oT;^qk8pbIo1iA z7a-s5_}W51%u&+CW~Et0 z1<_IJgc&%I?5&q|H#9GN{{5|I)tr7WpE}UXQzQv$Z#LdQ3!S~Upyyrs`fh0Ue_}fy zy;eK^>6Rte#i&+1xBlSj<)PM7I?W;s9-H!QPB6sHjnhAQLHrCA!x*2(H#DnOs)C{A z?8}mEzalh2!}vD|Qe<2b+JEa&UDy%d43}`ZH&z;O^|y`r3^tUd4u7EEywd`dTZ5U% zl`H>pWAY|}*JUM2uZ%8!?ftYTKbL0dNM8?Jzc)d3k$*KodoJ0#TK;0e>bO5F$Q;n=$8k7`JzcKntG8et@}OR96+zWxDrLwM%tS zd*6Zrw6b}BGM&r#BmOfN)}rBXt1bT<`yH?M;x+O(vI56oFgUng_-^i9`3D(%sw4eb ztBw8FdtCoNa^8P`k!+VtlO0Xs`eu?^F|_ze*L+=)VVs}_J80hK5A|-;5>?KuwBoI_ z7^~*dxj@J^$_Dif|6M`V4}J9om5r$8N&XQ<`wdOH_mtAmRa8cMcmJK4gr}0~Q4Ha# zMtOT*N|EV8MYX8S2UZVa;?RK8A#`-2X)|sJRPdro>$+iUtgT@aK||!Q^)?{F&NahF zkmxb7sB4mwb5)*bEkDhm-v8-5O1nM%`A>Zh7~U3`Q^}jsY6-_w!mk9uJNNHu$@##3 zPk;hWHjWdd(j!$n$z|L?`%DL1O_4nAUkeQwBY*b;R_@8EM2ka{+-J>UMwhth>S*|5Y;X=QuMWfxp1kSVk zkl#Xlwx$jzWGefc7P@|G{48a`b=GdI_vG0(@g{C`P216cVh^<~str#XmAT?K`)e%g z&16}K-nkm80su{(hIK42!ufmue!vB*HE6nHf~%aoNgM=~@M7^rE@;rH5=}ln!60eI z4{KzLTTX=5=&hO(|8)o2c{F28)TH9__<;Mh>^-xX8ygo(@T`vuLM zQ^vaDIjcK%{OjeYAiv(b6{^HWQ0t-f@2#G+O@=ePQ^vfuGU`)7g7oxz z;gi2xC#Qud5V4B~;dE^P7muTt+Oi~s@avs1h84rz0;}hYdzTJhfM@Zq-iegMmaqFkYFQrcOLc!b*SmJ|@G*(WoxXiKd z={A>bDql=;A>W3I7htUxKZS>H46Iz0osBpkbr+_i-;L2C)B3SQ8fvaQ9%W~Dgt{;5 zn`~Sg+MX3fn<+{m%&&^F{xHQfSaqrAZ-->+@1g?Gx^^)aToOJqo-zb#Wm~cSQ#*{8 zp>p2;2%Xx=WO^wz`d?D0ysyp?Fp|OpR&wY)^(2ujRX!x}#k>$G5yJuS{ipS0QU`rw zeg~Q9yW3`x(2MugW!Uq-pyx04$e6VUBn`dqM=ex={_U@#_wIG9F zqE)wt&X0b@uPQ+h74vF~Ek4^KzHv{0H-y*`H2e8&oL75H@AQ;ryYB0aK$2xx$wz2` zcaY>ffg?JNiECbd?0RLyZr!=cKkR*}GQJ)-(P!&4f45Ip9A*Fx4HjNzD$@u4c$@Tj zM@b&z3^s}U^l(*6>j&Jv=ETL=s1f3PG3{8X-)aWl-Hr#R?Fu^8lY>a2c5gXeuRB#5 z{q=pZ;CJz0A0I18ge0!oZ(5catXl66Yg?TogAd-vc!!$#vIW*TI^lhuH$0d*SisP= z^Ix~@_i?^higKdv;vRaSbZ*nf_WM5fo|h;PK|5tx5F2bHF;=y2PkvA%e_e5ssE<}6 z%JcWJkavt3es1x~Q#oVM{I!oT6)&+>dI#&!?e-jv%B?#OqQLB2s*=uFc-EqszIWOku{+bQeEI1RO5bN#WDGL9r`f#=9*k$I&(ezk1 z#K`Wq(*e0`RF{+D`23=y3%UM&RMV5Hz`FW6Q71hqK zG)$)u2k|%+ZkMFxdHy-VJIqa`jY0KpSwb~pFkzT@b#l`>zh19*>{{%EgsX+)3(CXQ lNwd??!ZwNVoxxiyp*CZw?l43Y@FG3RD;edNrJ#2o{|_prL0SL+ diff --git a/frontend/__snapshots__/scenes-app-recordings--recordings-play-list-no-pinned-recordings.png b/frontend/__snapshots__/scenes-app-recordings--recordings-play-list-no-pinned-recordings.png index 8e3052db551e144cc7fd665a750da778f6f95e71..55b81bc98fcce46755f2a765676eaf1d277f0fa9 100644 GIT binary patch literal 77018 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 z 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

i*`D2bwc9;! z*17&9z}T5OQ12_%=O}WF zTyjw=(+8>vEL)xCvUpQbPOb2ZN7hhTqS1y#dv~t zrBY$j^UsV>i>v{lE%G;FnYG9%DB5YPH8331)nkG~cK3Ai?Jymw*xNcfLP}G)ES1Ai zw4-%Dy`Z>bL0Lb4{P^`e?LjcIk63O_|Nb$CfhQ?MRN)NQNH9ZCyiMMj^g1B}*a< z(z?^i#Wq6K*(iC`ke*%=-ro?jYTKVY;yyjZltS#i^Ix&2jiNS)oaKZ+$1^?bJR51<8#AI`FUx%$mF@ zoF35yRMf$%K{Pb9ZJm)z_>S72+tSz2Ft@V$zU@8=I@-j<#A~L%NoC<72xGIll^U;J zNa&QwV<^iD_Ip`DTcjvNLfaE_=A_9?o~e(IzjimzW_b$BufLevV|ChUtn1z@Q6;jq z(Q=?>x*bwzr+*Y%bQWhEH1@LE+o_P{mHN$Zt-0ci%wToGNQ0;M+bo280sDCFgPL$( z>57G}B%n~Mlvwnqn;)un!<}D-4Z3s>oC-!U%Ur4|%E}gdjG772kb#)5wRC2wGhh@5 z1`$@awi-a=VjiB|?0f4YdXM7|FMjoDX^q$w}tp3=Qz>E1mVZllvD;m?*Ux56_F>kF~utb$DXz7N(gL+=iO2hQfBo zUmCQ5Xj3_UrZspO0?<9iAqD7YAdpE|XYLs!$*SWAzVXhRoN7idFE3h~cFAvD3L07( z4Z3s9-pTBzhlc=*M^_vS=wfi><>sye%mcUyFyFk)_YlJOcx+YXI8$9jl-b*`a&e8URV14i(_u}QP z^2Df=$k5OP0YehgeJEcazefDNCb)uh+O6Bm9_#ma_dG`@EI^z!ngCV<29Nj9LsUG_P=3z}U{1##o7FRaKQ&Bln|HH-&?vHV-B!Xw-O&aGBX6Q&L#w zMHm_L?NR?kKf--1M4yN!&WSRjcxhPg*E05>!;(BQ!s9iGVtcv^gBXO+rSFwoo;%ez z7~YGoauredKpsURjV;$GOMoUFB1-J>sf!jC-pOmKk}1F2xDCVkq58D4yCB2%aw-rHREE9h(oZ^ zVy;pW7xFrbC=LDe39l5tMNZa4qpD;Kus`PsW&{KT=D*WDX`u%P2VPy@Uu9K5Am_ip zQ!UFofXn)&^=U!N>k@9a)6e$K;4Y^ja2%s1yyG);Yr>tPu3IiV-X-(HIlqS!gKsFJ z&M4@sm$2Asy~Wt*^)cJArbA0QQVf&*(HjCocJdRc>JG^RJa(66v`=4UEqWHDvlXpk zH6*9tG5aq9x<=v{?NMt;?mU!+fh+TZucn(cIjF;f-yQrt32prJP2Yea z%$Lo3nCH(NDQT1A1mMhI-Lb!aeF5Z}LA`T+db*LG-VF8sBJC~1s#?1@-UWh42#BNz z7&HiogtUTyv~)?Av`9CIh=72kNJw{grvefpAuS=@C7ow1-1~js|M_&T>+Fx)wODgL z^NBI;`!~iEMAxX%Fzq9xE&@@D4wG6aPSE`b<`9*TM=m%%T1>C3w=RP&Dsa@2^`aVZ z6IInAuqMI5_SjkM4X2Y!U+y*O>g-f>dIz$AK=zv5Y{JUjzW;3D}zRw4IX!g-s6 z0N%;~99uqzRZ>WT3tB;h@}7i434tiRY=(u@=-EgEP-~GkpoyZ9q2bg%GFd}L=%laT zKnh-Qw-F8oIMfMLb>XtX6K`QfJ|<*}1E29m_*hGN_4oCuO#)+z;?b1Dt^pu z!tszFL%@~(2hQCT&|g63LkcX&mMH(IhnGM7qoS~1jQGWubU%O+^LTB)cIn(NO8CE^ z@3Qk>&8JOmu^yL`fs>hY18Fq;E4_Pdpd$0^i@}3VL;w8^q|focVDJAI5&!>14*Pgd z|B@MrmF7SO`^eh@%6KZ)I5u|G`j6qc1}?_Mufp$qb7XD=zo$xvo`C^Uh?R}I#3Uqi zw6uHsEFJWWjKI^aE-sQr;3daYSMxH4(-II6KrPguYKsSB)aeiQ$B?OdGPdqt`S)k) zrBH(X{gE{mrKP2i=W}sQ0DlzE=XkXHj*^m+g@wheEH1mZuP^zKC8npRN7vFaK0G{S z*OPchJnx}u{&OD3^_w!(baXY<)q4`3_OyiySbh0k>QdK>U;G5}q|(CLT#y({nSpFn3x&7&O3|OCezEy_aG}0522(tx*CkDzSf^AtlG6xW8`FHk&%%_*?rzFrbAsG zAJy&o*e(lQJao9JxLDQIrR%M=Lwk*piW7Q-TvGlrPFGPx>aU}~gP`rbGkKjA2Mg7`~+Zb}KrYK;};NiiJ*V57g%3P4+lm1|(oJ$zEACwh}+(@== zX9_}@m~@G{{A>d3`mh}mo2E8v+Dbfh-Y-~AJ}OfI+73zzfr^48U5QGgdo+RMDJTxT z+Y@7~D;q|*78||=7wgq)L(Z$+!xB&XcJFQ#Ac{`04y zg+&)72F-*ouFLGVYZD=o;)cnxQc?Zan~j49D(@x?03D|rrOS69Qd z7^;;HTW)R^w(M#F#nh>UGIl^LhW%~y(fA##-)NitAEg#YTSdp`LJwK~U zy#aIo`K~e{CtF$a+vKBPAgJ^ti5MFjCkS~GSKvJUzP`SWdvP!#5OoB)T-)ltr*FkG zMky;56ja*N%Sr~r!luC^1^WX7^*xRaN>l^NL)du0y<1ybGt8rIJktsP#84|%URK7* z&fW)`ImE;h6Q7MG7G4O~yKTAWO{;S?SyR$N@($))%kGcPPO0L+liSd?05J9zF8X`- zjIjS~Zx0se{5aO)fhSn&HXyodo@Zum4h^~_THM{-zLjRZ9M!H*vaqnI<=+SRq>Y(A8&i4(M{7(igqa_YH8aUj5SC{MD}pxMo=V zrXL}}7ZnxtSAKrhqZ9*5+wRI^!zH`h-Q_#``zZu~`+6MCkub(#7rN1ewlPp0P|QG0 z-Puc0%)*najiq0qj;YQ&ig_J4FSp2pA_X^oTRlCnUK|`D9TM@w-Mad8R?WJw5<{6^ z>N?bH7~IvI`1un#3%IST1$XP+kM#`y+|FLd6$a|f4_ zpZ;7=g3rgtXQVVB`KU&PgjG9L2-hv~03IHIrKw4oOMpq6nVIQcge8bat|;|x0>Om7 zPgM2VSg%LJhI8UEC7a;iFYDD#ZqgOqln#>IV7}Jzs=Aq&7_ZiKi0As6ftD_o)X|yT z*|7ut13U10ZKh0Ym!e_Zo6lI9%YGMtZLQs)8HowNOzp ze%8bJN{hETKt$2>u6QstmB-<>sEy4vCOybdKu}b2diw2Nj4^6%Vc0u%jCH1C3O3}L zzrB>5pHGVcRM2gIn#q*w{&_O8vRvHUCX`ZQ;zuN)uJ^-pHsD5t6ND?A9WErm1P2=! z)1T@SPwX7M9@M>1{0q1%*X? zC=KX(P+>JLX~I1AsCEP7qRPbpC_yywQ`CYDprfhjHyk3x-P$|Q03_5}(N^L{z*!5Z z*^S8P6(WNIwBh!9-}V}bj3^pb{d+7n9|R8jxiU6_lmiVl`av)?471>+nZvANl9`<~ zEaCGrtd{6aXa|}#>wU!?6y;L34-o1Eb*p*irRp$J&pVOI^8cm3{6G> z4yK^pdw&S-+_~d~Y4^JuU@w|$zPP{q_V{#BSAmL{STV4$s0D$GfKB0HeN^cls8(WP zVzIncwhOo`71Sl14<10>Z+LC6{jL61uqjLL^E@EhJvp?^k3Xqb*6|X|ABeUlvw%@a}cIRjAXT5~PoQN|00`>C3 z!o(CbG_*}}FK2HfBcoCqI3z+mA{VSKVtnKR))7zYIeH$Tu!ov@D*pOKk^`#rdWWkQ z`Hkg`@tTF{=~|<}IWXA|7xks20%6Ki@jKmOSSqT_jEXXDudB2G{fLuQh;ui~+Z#m& zDEeN;!O+g_9aAjLwAG$4tOuP$BxkGY*#VMwwsC(|?C~{jps2`*h=>>&r5WmJYLYwO zpknOGDkz|{RXpC)@MvI)RMgO5^lZq_wLQ51K;%&5nR}_z<9v{~p&lV1`EssG>3s^( zkyh9dL0oA71n;6G*G~$ATKei>4LSB_~@Ji_VUXIiBM_3tu^SQ&4k(E5V-R=`#=5&SF6>k%gm;xO<(Ci0;Dfos*V`9v}+5^>he%6qV zR!{>>JljqZ*3TlUQ@F2 zdfKxt+2QR%b%|0yDT>-YaVsrZ{qz)JhiP+VYB|F>}P@|*PSsARgi zktFm_j@v-?&~rR4DgB_52RH@Rz#Xvk5?tDo*^ zeR2Qd^A~z&(`L$!Xyp7}r*KW;`2YTy%G2b(D*NA>O17>SjMlx~9_lZJ{$A8Y-lOZ3 z2p!{~&TdZqL91aK|4NPDok)S}*p`2jmcKu|Ouuqwv}|5ynD8aQ$Fu7w{QHE!O@CS4 ze=h(or8?y%rwMQDa-5*Bq4f;mkbk;NaleT`@uu zl9||xipdL-alZ($FL7JoUc$~>YC0hy&q78w$nAj%CL|{2;^bU|lLHdwOPhXj&;K+L zOyw4$%Ag%I`J=_0Dm&J}AO1IYgpqjr1_A6%=ueq=UVG5~q0Z!6SC?TYga%iyUTq5^ z-(M+cn4g{P34>V~viPQB>(8HXLP2me!R&_J#Aa`G1iHTofoTR{)_iw-Y*<)xIqY{8 z<>g##Y>5Vd0&c@cEu6Kq#=&rdC5oKzumFlBw@2B(=waA9I+A!|^~sBii}OxHBmzqp z(vI}xN4_#m*-+fiZa&B?ARqu+$DRZYvsN{zI~f+$>FIArAJ;!x6Ra=BdKwd>e6Y7R zW>Eq%zp;r4(=lheXCE>ldYoki|K&zLUGjvmss2-7U?3>|Cm26!<1_pbepO=qxxEh` z_>!AUw5!tQLtyapiIRvJnHiObFa#6fjMAOJ& zMl(D*3Wj{n0jEEc7++sOWmcAdaE;TJem3R30;qbUkl-|pS%&?k3!YKuxkjYGm^yQ# z-07r6LXDsCeu0B>c^x|nEv6^*W`&v(I1b(E%R9Qd-h0GaPu9ywNZd9}fPD;jxxZ-F zg0f_9yqXb_N%iP*%MKpOJWh$ z0E<0g>GXq1cMPXg$|FvcC@W=)aae~-j|>|uI0Xei+u3Bs6v(3lxq7AL1bmc;QQWG0 zVrV!EROE{$sPQUYiB1wgb2)WwSkp8%so4H@C{(NHR{V2S)!+&T)i-yjbk?x6ut+uX z^gIWm62>H4I|?enhPMhfTNMYUgQev?k||^msr(0nwejK-c|Fx2(%3** zUtOgpgU}=HfeEgbW6RL{Zi&KD5gP(#+I*l_EOsFTRm_l0Q(WtPZ=oAs-0J9i)mWc^%kZAx+FFZ-T z8Bm|p_6th8J3bpcVV6L6adIl$0k5?{r{QxNY%U*ztqc<@ago9Q=V z$a~SVwr+s+>u|iTs^c!&b|ZVWckj-{oi}w#O zM!%r0#OU4o_s=U|-u}F76O#0Oa-zCcAb0;k+M}2kEtINjhFY zWB_U^73sVX@91&7#_b_gsPFA_ZEA1Nffqma=?EwyZev&|Di-w)=m%MY-_jjEImt5q zhW;CNjEgLX=VtfKfPMyd~(3)D3Vx zEf48<%BcK!qPn_|+M3)z(P0czam&tf{`%;P!f=|?3$ z1j&QLuHozIUh8!)^tCy3{FWt|U-8q!l%%%rB7V@;LP>vNZeCVxSa~0f)Jy(rvWIR^ zJrZ{SL#7thZS>xomQ3tTUCFn=1)-2?jhf>aFMLhLG21`A(6_xp@pX-vpKH8*=4Glk zT59UJA@)7td<#O3p`efv}kBnwo{#SqLi(zP#OKM{%&X zkB8tKbYGx{0ZEZ&WFne^(j|YAr=1ZKeSJ5tUzdsP=P>= zVSWakhD;By;CTN>jQ3OZN?ZD+Dxp6!Gjo#y?|Teq;F)9vFi5@HK|xpD+S)?GQ&Dr( z5-q~vd;k4uerRy<^XJn}=B@Q{dan1Mpyi=?T0~~%)A|&UMb%Ndzdc=ug**OlpO2|f z;;GqLI>mHp=-&P9$B!}K+F)xoiD0FtDzvPOeU}%`Cj*`B)y9@Z# zVAMU$|9cg;iKm+UntFN%2Rl?ZCPSc$^e~C}9GQ7S1r!mS`DW=BDKHg`8LqjIJU;2u8 zm2yCKwkXTXyPBhxHV3s{d!8l~5W0cZru38;`3J>_jvl7t86CZN3xC%@1ZgX7Z*Ok~ z-ay>N<0&Lc__*p>4%L}8HRKEU@bOzNU^2M4KrXjf5}9iErlE)&hXPQ~9h9rE3$=P7 zKrOnOPKSli<%ED{2k%A8`RccmF66bpzl{RPJ?!1UTTnTptYe!C_JcS0mHx_0IP)er zP)P5+di5%I*jI4gW*K>DpAh6YZ$Y?`C(!jFN?3wu1T|b2Wz($53a9*vhcyrKGjB-R zgdpS&jzWYqV!(?AP*5mQVP$OAV>Xih9Wr|4B7uhj12xmhfna5Y5jjXe`e1J*k%+~` zflaEDj^ZRyG);wnUV{9y7a!Neyr?Qhu7Zm;iO63^yd{x-jr{WaR0KD7g_80Ra8VJe zN}4xH4b07%;Cqko*but2f1k=ACfi5>(F7AVCkAqOD=|nBx^F|{&~kFhGPqKb*mC)W zDw+2+F!40fo{T;rdntrQBV5(Eb(wq z`R5gKT+HkB1ZT&#zhec2jeqMpemeCzdA`PQJ32b@G%M==bn^jHc)pa80CUKYY!SNxHYPrO50Cm0R1mp|?`gn3kP4k7H{qNB z>6H30Dg#0^O`HLi}16{2m*PU>9TKVmpLOXZ=?(T;hP!>A*|^JIn! z6vJmVEI1wIZim~DW(995UqV``s3<5ZtpSv}lT1aPt5u7RG%D50V+~jcQWZOo`tpeK zxywYFrVY%m1G4Z>iKII4C!TZa3Mz#1O);jQbfW6DTQ?`mwBkg3Q!{^nKl`C{>0HY~ z+iQ1&M%17n-%8I$XWTgVzSWTswy$4S^$pU!p6G+$E_&;7)6EeDzA=}zP;=#(A9FqR zH(|y0otw{hidC~!IS=6u!1mOkB~-;VBXO`>lK4}f_RlCX6X;GuSt$S3+37LA`{ua~ z&>!F|-zO6F{CH1O4Eup`7uW`KWT4gx9!y>Gcv6D8`uq3ekqNgy-yu|T0A;PT7HAxS zHia>O%H2WPVg3U<>d8&OXaCaAvZMSq&`mbg;4MA{rmD;)o%OajtwW< zoxs0$tAGm0t*?6Zk=H$fskmB#Sdq`2DkIYF)~Cw}csf?v^+**_OTw5U`YclN8A;(ZCaSrSQqj#~v6d^Tqlaa#XmLisefsAebnb8Xc%!)P z#40d{>V(;DXE$Jt=Wc%fudE#JF3PoTa@GBKA`t8BF$=|tUI$MY1eX*<+n%wu9$7!6 z&Oe(sJY^9On6@Sk_}FeSo?CgRxI>MxQQ_klG#16r{t32MRvc@?Nm!kHNweeHXv>2* zUi*LvSvdaeu-FuTf$^mg91>!JE3s_8r)I{d-QW=)1?8iApihtPOf_B7NMkHw-@W-! zkOXq)v`<+?N~l@Ix$=< zNOIyZ`^4*`&Ty2#!c!m1oBXY@2$Q*poBS^R?m7L}BR)BJzrTH}F&#H|(qqJAqGqEW zaCVo~;rj%-8qi!-iBPv0S{HqPHNaKW%#+?`|MKN6iZp9X1&YWyNHNfk$4?>iA8m<> ziV91Y{mg&Z=zS?QqLd$cz3h#@&VAbzj%@uRK8g3jyL?+`YalpHOZgKbCmtg?H+MDO zapDt)DS>-MqM}T&j3%_fZZ8ib?O*1ebh8B)02%21Z{oCb@R@?553W1&zL3ZeHwb#ZT*^`BFIx1!StR8ZBFm z&S}**4y*%PBHBJ(imxu^-OnI-vgJ}bJbV6}(Snz;)G?a1ynM^I2t>9~83U~q!P5qI zen}Elo#R)!nNG{!md->Dl$7D1waHN5@+%RMD@DKGk`Y`Vfn7Omt8 z$*^kJMJJ(& zA`0z$))KJrNo-Zu46@eL6ch-c4g}OME=~@Pr=34-e?eZ{=NIwQyWP~({M9R%HO%8< zV`ENvv9W;E5eX@zxfZO9-2{J9;MQ7Fpa&Y z@3{U;LQ_Ooc$o3{aeSn-rzsCVf1G8&yLTVX0ty_M*Ro@<3a6cKEk5cC=vDoIY#~4x zpI01ez2oa2wX(9Z6q}HRcrb3H%EjIAdiS)CktUhyV2%V5fzhO59b%GH?H^WLd2`Z*EYL}v6YhfOyAFsRP~w8W)y9lhfM#p zgo)*s-KXt7(ynwElI}mNmwqnulpNow+}bi_IkIoUw=_;G%aih2j?BX3gch4!)}YMH zujR)oWPxbW_DaRv0)wK5kljftFT<``3OT=F2aiE3j>ZIJ%$}2Hizy*$^99s=Xk6&VuwTvav0(%t3Oy$r1h*9`%w5Sp=25rR$^BWK5)&odsdl|vZ=16ANx z!4fX3UoS@K9aLYcsSU$#Na!qdeS(DX6J_}M^%3pa1&cT3qN-QDLa$93I$037VJi-3sMb}rxTWNk?8N^sx%FhVLcn;b9O+ z#4@yG6;v#lMF_VCxQ5=`wrbxtvzgD6VERtAa=xQ%J%8hO%GKoEB7=CWo`J^jv(_i0 zANA)oYz}ou>OP#S=`iI#x#8#OXdlZu$RVF%ntOI)g3g$*ra8R7!BqG7qwo(FJjI}# z4L3Ts?V7FawTDLO%>fH4c*PyjXBixvoLQJ`{TWb$BahY3$j*@^34v~J?7bT0$oGMD znEmW^a(%80c>px^tD3kd&NblSp0M`~-D{^yNw&x}ROezsdwBP*0VLF=*h`tBZS3Rn zM|<5zrA8t#yQ@}icuR{1Fjr`$qaP(aOApfLObuyatv`4@`HShe{ZToIJ5EurSi|{Q z4Ls^vUOPjYp)-3gjJ)7fgq*u|-AA2h=B=>=3Qn=dfRA0_zub$+cjeg zz)b|8O6Szq*IUFznsOJ6(lQ`zvFo}=v&K5^(n5JWN0BLzyqi zLD>j3*MZVde8KVM7S4{q2Iw=1tlTHuPW?lOx|yv6u2kqOF)1CpDSyiDcw@zFQC{QG z`WDsmdKdSBkJsx*YF}22oG7j8q8;oT=ywP?U>hk5FWJuM8c0SE5HQi!AD?22IGpeK zM@Rp3WOZ{7M?Tln1%>-t^3`TniT3r~OHNv~#_F|yEln<)-BPDg=dD`w^kk_%%{$hA z%N^D5A>rzW`Mg9$Jzs=5$66U{i;UcnpWYA$>3*L1O?q)Io{~M5*)ORn*DzbHHl=>I zI_GJOl`-ZzS=qZks#PN++hGBL3P%xRK3UY-r2u3MXazDNmlJWveKLi$ZMIQXRu=vz zQ^H8JrG7=mWi+%xcK~4hVb50JO_=t+I(B>bM?7e8Mh2Xr6Bs!QY5{!gxKx7D)=Nl+ zQ4R$PhECfen?0fcWUkRqiRPi=Gd|f!Q+Mn8B);C)~7=N|JXSFaT2pIp7V3w?%n^Rc0^zu#aJU06jY%hfB7SeHS^^OWGVFW(&N+>7vpc zGseb%g~x-O5FXs+#pmI2HxDiUSg#8G$_ms=-a7m$GVoiqSS{ZD-C1!rJgwqPlH0rK z!ECthQqkmxFV}=>OG1Bs^rb{eCw-52P%%5YxB013(qAF!>^7~-FSpzBjE(j|STs!Q zEzI%;Y7+4tO|w?g+0`nF5hhokU37Zo;GS2 zYaOU0OnGDeE_07%TtL`QFEOJ!X+-T)*n$R;3V(&m2W7EVIFMN>Qp}g*AS5-m9@-iD z@@lkaowbdjhsd9UbLkORvG+y7OVw2h8=O~>58iD~?0xC= z=vBv+3ESeD*KK)-W3&nKTEzLuA35li_Aam{AtAwWO``{NX$Ys@KJx=u)=$z4D&gp% znsbpNXhIW;m65r%RFVD_j_VBc0onP2N60L-u4!I=k8si4U{Mfslr)G-LgN8Osyt$$x_leV7nRT z>`;nMbk@rjt)p|{YX#KEQA0H*k*;K_OyOYfDaOxXQMa8?+(@H|nzOn|NRm!Np0MvG zXPx6K%I@P;*zH|c&2WG4;Wo|K0S@Iz<%=c!7hFzi8pWg9T}>9pPtr4mZ_@GG_#PUJ z#Cz(|nz%a7q<(d|QJGvI=XzdMPu0vDbT{)bcZj*6l;}L6OeB#rruD5J>nL>q)7ChO zjeTc=hN`6N$3X7)CSI0CB0cBFwn-&YWzA*_Q7TogJ*bl!{cO)-a@mR9b3Z%`9W9yz zNw_XOT`XN;hpUsS`pdlZeC#m&BJ_A-)~SDPqg#@b!<5#~M|Z3oI-XGt?}G^HcrjE} zTYK^aPsotFp=aOz6z0Z#dir;LuxYzS9juN#P`N&`NEtLEN!R2egU*Fm2Klm&Qn%b} z)H2_l(N4SU_HS;w8G%36?o5IyW2;{+1e2znCVxPo!s4>j}N}J-5Po5^x+b#rcue!!WY;xWcT>a11ZvH zlG~CH`!dF^c|}*A*UZ;94~S3UuuO56+~B#8u@6p&bbAmRUTNSiB4vw zYR_J?kbb_I^U&wM<{l2&x5D}j6no)9C>Jh2Wt9^c{JC-WAEqHxc>Vin(k?zNi9!1c$=Qjf6&YBrL1$k3-F=eVgm z84a=!{p_yHYjQ&Ve4R>WP_LcKv^!?qkXG?z#FdsDJ&*p?>)Daoo&3%tp{4Q9hJ9uz z#*w!@PPW=~j-UlGhbwa#1*Y)Oe(I>Rs7@y%Adw=?2Ff239%4Fj>>`gK8t)RK?OTR;A zrk8nU4ldc;;2&XC|Kja{xA_i}t>qLWOI#N117-q`=UuvjH!^5>^Nll-UJMQ+hlG(z z8gz}R^*eI05fPbDO_P(>y~(~iM8KYi_I>^hBJJTHq4XW_${}gYqzN;r2V20c09ol? zGYhKF(p7rM6Kd$|w#MtoMUVT^K^cySAdKA|`1(~Ge6@jmx;4>_=7?~vUJ`Sc6hIg` z?`a^16F+{{QABqE$Gp+cpH;^g=_24?2O6YzF7$BOtciA!|$3X&$h^YC?# z__aZ6g1KhJetc6`LGmcV=mDMi&!pt!*V?lXHZQHN{`A0Qa~)5z{0v*zg=E>^WjUc`li~g zR`QL8^ZFfzuL@S;wBhT5E@7QVhu~stk)|e{tKR67DBKq5*vVWywGBztYT`wY#;VZp z@+a?|ChSS|BuqGAL2HxbP0tp+cBdhmkRHYLIW#B|9H6pn`Eq)kft3FC!*7^k4qA+>1VRy=KA z$voV#51$k>&w|(}2;Os;QAq25TJYnI_1+bA(RtRWJr>`&X1TrOODALcMSSmszDX8Y z-B@rq#QlA0uRrX+!7C^7I zdqw#@e)pr&(U&%5Gs`?*PTF*Mi5a-v`|rA^{V`p#Mu7wJmcP{fQPy)4L!T4QM3PyR z1@8gzCH;mX&*6t8x~4UPV|UK{f~gIw(524m_Tqw=>22Pi4|8zbbgIQ<3p^12G2=)bt!F?_DPYvA(akGa;0IS_&(ChB#?J~5<)%gfSd6C{1m$D~W zh;!(uxO2)0e4>!hMqe7j1@DfYvGbzTTD84Um|sS^pjN%xA^445SZtWf;#BUbT5_X- z_37aj;acH?moIDUr{81RYy;sBa;D6~sw$qHvx9NRNqOL4FBy4&J2q!yYYSi}*{s9r z9>Vr`w~jzcFZ7bn{U=r)zBO{QESgkU8jmJ7IwwsnmVR{;L)Kn_a*6Hj)I>|$5)S4n zWjFw+Q#c{~)bTWDf9vqFos)r;rq^hyI{p4G`QCu`Sx*#uteD4>)dO2sX9+g-oMcZ@}j>o0^W zd#F(>q<;lnZA(nY!F6*Hi_LM0iCZ54W<55$4`gBEMXpEfx(vR35^s@|5{1Ca*!xv; z(=CBcjxU^@$?kD;LyrK?Y?@anR@T<8;N}Vo3p<&1cY6X_5mocTIKAlX{{3E13x|lO zfcKXZI*pL*$)_6wOeM_vm5q%$v>nWCJUZenb}T=E`fz7f%?aSZK~^5#hHCo7u18jF z>jI6^E=vW|jEF}LK_msvxz2Fzw+2u(dZOZ@qo1}w-^wZK5H`2j2PKnuLxI?( zM?yN$OD!~~2HcP1u<-l-%q2f{ktVZxLY^SjO50_-&DBlua;1Lj_pn8|kPTLy+*cIl zhzULX^}X@hN2p|wzMOTU{w~N7=^w5$`D!!HpBY5hN4UmQWQcll`dF_+C;~m2^W4Sr zkD{#(CW^75;ivAmoa=8NjcEv>Y21LKU}(xp4dRG%9QGO*&gr`kKm`ZkxTFgjJ>JqR zFDaRGPYv*Y?gi}~jkw7HG;}#$tEdWOU*V$QguqJW>RD~&;2`muOK}}&h)z7`Tew})Oi^1oO2h}rZ%Y-EkFY7Qo5h`(&Gatr2e!4L{m9JIYO zyPpI4rRoo~fKL0MR=PNU7FFi-gdOgAoej2U+kHY`Q@AVq_p238EQAd224&U3>s8Uq z;)P@MRlM-3{gsm+T*s%4;b~xcOxqan-IEB->16Vf+w5#2Z4-OYyLa#E_XShb!svl$ z+x*tqId|H+wPh0=>}UKvM$~hFpbR~l;^|;b&h5rr-2IKVJpoLCM=p-}`T{cO2fZn1 zBagw1RL#@a1)91)RVosOE{&e72%e&C(zCQl>6OOI%(cI69wqcgXp zO&tQk`e0R0%Z6c^y^4xk`<(619urN;vxn<`gy1BO(P**ei zVUhyhnsk1t__OkePbI^deQ#kLN{)%QaglKY{g(jL++nvXo6#h?8;y&P1urvDQ_uFx z2}KHK!K<)W;l&sxK2adVXe}M+5lC@8tIEm>MGK>us3UI?V`id-Hg}WN_JJQAAS!}z zSOAroLJ$JARd@pc@}Xyn_ECT%fA`)8rBB3+j2-H4p|8=?ka{Su;Nu&EYHiqsUXKLt zN)#dxBF&l7uZ`jnD+y>|uZy8Caj52Ak3RD#QZ6_uFK>8xi7ksYa-JZQxzxhGjlm|M zGOzo!>br;Z8ZutzM&1t_ett1w{VH{*adPzw*lQ4HIZ)1e26FtW$meglG5P& z>nN0NXMo1Cw}a+SO+y24A2gfx<=6!Z+O2OM05ISaNr;KRetp9FywdBfV1@( z@VL9i$$Q0JX>m z`8kw`h4bXlnDJlsmsXRv+P%WIl9m4In+E4{`(8ju$X%LrjeCF}!iUq*1zjQ<_q2-i zTguEI_oX=6l|u4xe15V}&@)=(fiyldNk=6L&HBjS%6VnIe9nq!lgs=T6lSRxv-axKihz@)EC{wTLueqcw$JyT*MXc zrKIK@uC@e=VW}1Bh>d&UxFxhOUptdcb+4+q5m;!z=RRV4>W>M`u!`cTprtkb_}3W3B81TKqA) zrAlCNfJVt)&Z#`IT+!=eKyswwQ#&FbuB+h)Je}H~@FEK>X{s*b5!N+S6w3DqXc*%N zJ!mj7@qU*^!=hrlg&~RJil%7H82V&QRe-6%3nl{%(>B*Olmm@5_Wkbm*YikEEu}PP53VmtqF+h_tGqV zDs&j1nB;w9Ykvjm#is&=WFpkAj%(<{gMO2kI7oQoqMR0K`HOwJoq#6Qq1!6Fa`TXx zQ%y7D(Z@eYJB}aY@nS1J5j!QH-R^OlU_LVUMKE3m5-H zQV$036ulq`T>aQ-V)vXET~Vf=FdkK!$GzZdUvsbGkYayeE-C6MbBY=~&^(1ZNZ{lz zpn%Hk@oD~>LScY196HM{VM~>C4SKxr$D1McGaV%Z0by9gK{b4Uv)L+OM1;xzBE4g4vRK}6)2qF&JS|a-+mzF|7 zAHcL~)Qz1(qh>!)Wyp{?3T+cA0_Q4n)goZjDW^uOFPAYSs{g%Wxar2szsL{(EDW!$ zT0ir6YTbVke)bCa-F29c(I`k#1%XImY0S_nV1QR4dtXe>!+-FWMtm$bQF#g9r7081 z(oBHjQSax!eT3mleUryIXhO$H(prpCK7F^@DEj!tZF=zx_&veKNR1i<|nhW9I8Z*#BHRbE61>fu>i!>IjL+YCOi`fWa3CzJVz5vm5^!ylECRxd0# zIpYNOJbYV}l{AZYfL6#zCuv_!EV{i#MOZ%Vm;m zUP)tzIDgRdTxB0P{87>**N^3_y!-QT;*Y|~jjNgb*5t4bC>Z;kP} z>Hf25_+wDx;$lq75Wv#c?cJgBIQZR3t7H~wxP&izrI2e$J*{Td?bRQqZ^YT=H>wWS z9C4ohV7$HJ8XX}*D5%x+BumB@(APX0)TQZM7VHBqFB>JXRn zDC}~<33{77aZ53q~$$u&=8rEJbPaE#iF;csKM_t|2 z+0s^uFYPOh;d=Q#P3T>kyNY)lgWNwPjbjCc-(`w>HF^^_Q9r9&g2B1eg0a!ezMlN} zJ>wtdl;}Mfw=gN;Zw{s#i_{O^2TNrH&H;II6pNmclS9W>5yzsaXshY!njz+EM6XS8 zs_NaqM%a1Z&Ov^@wpr3(WnGBRV?NzZ+(VX-{KaTyQ^h{bAqMg|f+Jw+HnDC_iH#rh zC!CR2SHDjxLm`O5l}C+6Dw1gbYJHl5AakQs!*~9&&0>%g3CgNo!twsH(JsdunILU+2eW- zPHO+fGvUy|ODV&xK!nU*yEbD$z%1+0YkL$jMPXjH`@OW|h>Z-UGfW7eMaIT^MvPn% z*VjL1n2H*XlDMT<#G|GWd|OCXVGf@QjZ#-q_?}~E%HtMUMcghVaU;-@OMA?MpHn00 ze73MzJ)@|oJ8b}#xQ0pb3(1W|(#2(F=B(-OHv9giJU8*-Na9oCjLDMM6HpaDSN_m# zl%^)DVT`F9dtTvMh*X5#9Ln{HYK7!o2EK z=XH2&a0olmqYwX;{XpzhuXVb1@6QgXK7eZTL0$ru$=ObS_3PJek~p}y^E2VlW0Hj_ zN(D?O`*JqR(bC37DR{HRXt7b?o;NrEEgD4+fry86o>n%l5^4@G@TS#e=s_Ww|8X82 z3~x;u?NgAx&Gp&U%g8J#6TfE7O~y7#b&%o8%lJxHzogEcpw$S?%>E^E#|Y%PWqh_F|pV`OQT{J>nrkA1>`)U1ZHPZs6aK zm$+S!xGnZ#x?bdLX9(-IA<>|%{f-X0!;_#_Pv1L^9TO7@gak`1XcZ%qxyGg|g{H1L zTpWTr?H=|n1oHUKcf-(_K_xaqf$j3uE(da`*qZf7LSTGm^fsE z^?!#X%>RiftYHAP^102&ypU4;*>DR*c-^zJ5rtG&7sCUJ`Fr$um@1i@*g`Rx&yg#i zLcS(WYH0ekFoEm|QP}1~aT%|H8!vw2zj&}lq4L&&Ah+Kt2~f?ocN=oLPhXgGKWWS8 zZwS+$IzbLy3KU_4UTmCl;rRGdlfAuyFqak=UHQqgmOw}ve&y~?F>+VaV~5_`;r@X9 zRh0A{CAMg%1upeIOW}&Ay*Rf!TNz##vF9Z1o!6MO3vLz;Yl3n zR?|1jEv9cAZf+X)U)kNm!U(zSax|HjZAD#SV~48{hsFdeK2|WhI{iNV!EX<7PoJbf z{kF#&-=cq3A4UB-!KyFtuu0Q`E#){nqVCj7)nT%(#^;)Dl6AFi>=zVgqmVkPfrO9>ZX(^X%N;j3zwOm4 zoqLVesF^en-sRsUe{TRo?=W%{=YXw@6Gw$;z5a>EXvd$w86z*(OxM;-*vn51S)7nd zJoW3>P0G|zX&Zefbk2+l4vD_gc^nm_baPc5J{{e+s0_$tV(=SkCNsmhh{mx;oPwsr7v{* z&+NMwHdsa-4t={S_LGVFN!DMP*QAVi6R>3^+e?(5|G{FEcs6p$$!T)+7P{J^D-J;p zk;MGkx7qb|$~BeD_?vV6q#vyo>^{ZkCx@AxqDpTZ|K9&xoRaVgTjmGjT&zBoaiJZ= z5^mF0WLqJ{sd5GiH8Bc*Pj2#Ld0ftp`OUOI5BYS}C!-Gkj9suR3gv7`=mTuub576U z9|K=Zn&UCH2Yx@~V6`%8BeLBx5J3FiT{wOHdrvd9H{jtHv!+xJO zCQw16Vt%djFH(H`AevE{T@AXpTDd8k+LUCfZdzn=}1iQsa=(UQWjOxI?>il%AvF9`AvC z&+7p*$#bK0>s5$4%4NOB@SJ*uOoL`Wx~$#RzUq;AKo%Mu*Vfi#%AvEC_`Ws0JkZ0@ zapY*Vba!jBp>w|0P?j`ETHK|mza}R3)@wGPAg4UFQaUIS(WgM+;8M|P%% zhTklpk=xz1Zi0=8pkxdDAsa|DP&_cJh{GNwFu}3C6B-__YP0jx{>Xx~Uo|N^{r;UJ z2KP~k7D}~yjrP0uR>|ZIRK40KbdD9iu|^gIUqZ>xC88)R_dF0j5Gi7c-uh0dxADn4 zj>!>AoFAjCeMkD$H)|sEr*|yl5hdO|z)i?p`jhXyCH~lE08XW}xiT#+fmF+kqqfJT zr4ApyeVWg}GZ$aDbyS!VQk6L6NA1mgY9o0Dv+l+X&DfZ+kg8uFWO17_^Q`CN6Y?x6 zRv&w@FPcAsP^g%DFZb8>C2^KW<)3}mAa3DFz#g=HVs_0v<=M&mMBYCOSF$-_&~J8- z5k&o**q8nqTXFp`m=DjTzkOsxsLW5bQDE=U6P5wPPW&moI5hK3IZ~)WZH8)>*FHYj z*w|3O34MACL4uToH-JTRS&o7*M=!v#eg->v<^Mz1TgO$oby1_F0Scmof`SUtp&(r% zq5=Za9n#(1iim)KlG5EBn=S*TySux)xpTvL&-;G&yZ8LgKPv3~#9DLBIp&ySfJ3zS zf96RBHRkunJ#gVCf}^9wxEc$?NyS&5L7U@cc2x9PQp8tuq=HN&#L54Ud6oM)Q~RVK z(JJ~{x#9se#rx~ADH0KoGScvE+Fet{H1zznL5C^S_V)xq0%%9~G+RwxVC$SY_IlOd zpWI_tp{MSgFH5~rVa={}=@6IwUPx}Inzp9*!p~*0k8aBJ&g+HdOQ+Am$xLprap7d~ zwcw?=B<9iH679SH?hkQ3PLWgpFCyB7o79zMBEv<-k#D=1)RUqiRs_lUsHS8BFdUbH zW<1EaqE$zU&C-YEcJyN3u;Q&^qB-dsWvWNClKV%@7V(+NSp?B!{t{_<_CY(5_-#qW zC@e=hZUF5&N`70)sCxULRwL?LjI8C^JIb@Sqpr2S3}L}NUu7d^?e@H16H$m9 z$yoZZ*%tRFIGP5gze&{_w>f%ZYr#%Y4*nY8* zFcrR9ULjCv^$H}RbA8!=ucFz>x+fyn_AO3wQ8Dq_p}yJL^c^@)cydiOtdxBM_N;1J z$k1uFM=lvdIfb#GOsKJIodCR}H!(cnNgKbf&Osl7uMS^S{Q|jEVWn|)aoOMUyLpRD zvKR~vUA9`-D@Elt%ndIW=o9KAlx(bvDoRV6qq)O)FVQeF2byheZ^v0@Ok7M7-OmBg zq4x0!x{?d-I=r=#qu+RyZJQs3B7f^7BuamFr8jj{qk39gFK@uKsV4QK!aKp?a10O0 z=nT(4{W?B<@}c^4H7So4=qFK?Qp*C5YIZ6Z95sw<+@h-~l*XzkEM(SCtu%{!s|Wtp zj53TqI--!KroQD`OeD7~b3>!c*5Gbtx~$AtO^%OhRt@J>qg}eF%U!+Kt&4ex_zqP2 z?TXjrlZY*d7UpL@KAqUf%^FLxr)0(WK9t+ePI#zD3W$*^1wS3njAPS&khD^Kw)8mQ zN_!mp2ddsPZQR3ax7R5U?#Y)iM&=eEt38-vQ5xd19ikghR*#vWQZ*aFa?6su zj$pTi10{Q%YOadBne^Lo#J%VF)CDSCm!CBvUsx;VSQ<&ZcTzQepCH+WH~&K|DHEK_ z?dlnw@%*_We`N|CS2@P7qq@>y*bo1|2Cl@hk%-Bk5)`wc;uUDm>tb?L)UZTquhsCo zy$hmGwdUOHsFl;>&v%mh7Egdv1UP{7j)OGxvlS8^&Jwmra&_h*gmk_vcL+01uq3#NKagi+t*JYdS zk*F*M{F$d!V#2-72oFn$lQhw+UWEFxp+C4EE7?}$w(p^UvEqA}i1eacUReRjzL4+x zX{DvqY;3yV-2@tewFWR*zG??IHA?0tqTY9qN znd8AIDHdMPDCh9r7>CNBO;58t|7o$X<9&mM2l*db)PLGt{KfzJpq8R9musvrRaSP&Hn|a_t}N6|gBKK3@M|7Hn;#q}w1= zllEn~(~9&Re)vH0$z{W!5yk7s5?8*vTV`lrz!kbPKqmvsn;Z`hUeW_!B#3rps}tva zXwD+hc<=7}?0`ff`+`zC7wRsP*1)<&)?sxF)d{?E@wDrpALBemHNmCE7Rq{Vuy{B;LuQStc9 zL$_jLK7FZUW1;gmWY(RQQ)c2xzRq$~jWh%rr^}zDb4p5Qd7G%&SpNW)Kv4@y?{KOD zrr-}?h_rhXt)atZ`m1wnBoZs+feAsOg*V8E%$5Wny~gITU`)zO5~(;aygakaG0tm_ zYyN7k)nhb}?DO@%DyHqdE?&nADjfquYx8YvGXyd*`*dL0js)CKk$`(Ca>1zSqK5K) z-Ock_Pwu>-FEVEJ(m|FDgX;w|{Xl~gjFt^7tenQ&RN5(}@t0zxC)&%-U`dg_6pfZ; zk+qBSAhGtlJ-eh0b!qVB^q+f|g-G;#jMxmFq$tt^gR6w-M;S{1*jLdFO%z$86y-Rh=RFTTncdDivOg|vP>YwPo2 zF0iP4yn9XoM>y|0iL}9~-EZ+_eitD> zH#PP&v4Zn`HczB+$Sej>a4s=kNBZ{9*|wwPG=TqdD%QT9i7S)E)_(UtojVE4!yFSX z;JgcBXbVbr-3q?7_x-Kt`(YN~K^8utkwM|4wYISE$Y5A&tz;^Wou=%#O6V2n z>Oe1p?#{%6c9WG$j(xZ2o!{Uz9aomWTXublBYbO;OlROOAwT-QGl5+91i_jAbE-EQsw zJ51VLU3?5C3DkWOn_i25V0A|0p%~1%R5p_!mXZ04UsvKDjj4){rGg=H*uM6)CIaaK z&-3ODJ4x_$*qm{f?O&{1L2DMBUvZ&{VBy2C|H6D1t(oe+%T-MKGtP;2%pTdeSUf%( z015`VFrnaKz3$l1pxcFt;x36d&Re`HJ*I5NMoj|HzrD~Js5pOjsXthR)C%%)rP&3B z?0fI~ruMiG&G^S>W(ivLj++`X^Y~poH)G4pEArP2B31ZH@9_ez%)O~M(9=`$maE3< zPd6!yNQ#$vZW>TL1vPAMks&QGS5*;;EMDE?aa?qSi8uo-=@Dq>txcp87m~+wh#7SUr!} z6oO6p`|59v(WU@NKfEb%6l06s!jv_=X?!?X>>nSE;Y(`(WsIV)nmFnuEzoC&UZ+p| zekk->$eC)#&KzX|P^8%)4s6h3nX5dXHFZ)yoO~|zqFUg?52~@VCi3OrrR;>x#l=C& zHg_jIrcu1ZltL=r&;FvhIR@JmH=RbgpG&$!oJk^c@ce^n3(y}DXkKoYa-uM+94DzW z`_Kcr$CR{w&Y!ZpqrB+-wY?7lmg6AU50uSV52wr)@9wr%NBC|kDya<(cjojOK4hlc zsr@FZ$f+~!*Jt`@+3woo+vQIq?g#NULPz^~%HCrdFPWehqVtjJ-{fDi%_JJsJtc0% zRA30O=ftTt=ZtE*WTc`)YxN&kp7yX>G<+bMv!GB<)w4%D<&QTr!#_a#f)Z8obVort z3LTq(vFkERMswj8%|Z4JVa7X5LqZz}UbLEL;Uk`{@iu5*HqroER1-sW{r){C+KU;4 zMLx@0TzOhmxNNuGwisC$Bk*!!{_gKkZZ58&BPup}>YRtM_=nuM4Q_|lX_5HilI~a6 zL_6d?{H*FZVzH}Z>OqA|)iER3Wo0JY@F5J8AvZH%8!$ESl z>+B7G-7fKvtj^s*vCgK;T{zW04XLE3UNm6oaW-f;h%+045w9_t?3ZPE$KZ7*8e^im zzTKw#waxD(Dm)ARvMnwjc_Q^E?CUVUpQh+cBga_Yd|*X6`cq?5Llryj8tF&m7UuwM zt*)X3DD_m={R(WbrhmN{ad`+SFNP<@I;oHlD&<7HaT5D=zwDxrYp*23S4Z87x8m5{ zKDygxKV{4BObWP5O`ATdGne?vJz1GRSyg$Ao=&CWs#Je<)>xpVf=V4-%1V%9>(#b& z7gh+td)z)@9#1Ws_ySU9ZT)r|SKow=zT@7<%8Y*FcPm+;RDe0%RMG$eY*V)P5fTfX zzOo8Z$r~3N0oh%2M^SzNMkv@d!^!hN!^fB;SV7f&C}8?lb?CRp2(gG6SL*QdXz{W8 z6&LvRT;MaQZ}M*)$e&t3U+XZFvQ}FTx_j6@F~A$x!jX{Hfn2SmtM}C)f0iVjpV&*( z(ASax6PR+V`(h|$_aJN%B5iJ$TeJPh>f7*9oDL$s-q%XLy%#Y{#GC54X)$8B5^`_E z5LGVg%lYOm_^Bvva5Y$3(p@aF*8lV;?xT~9M=LanKdNLn4=&4t6_4!cgUYqv77xUN-lzNmt8sD8nE6A(~b!!OYSNC*qky8 ztFB($a;$#z{lYuwpfBA;%bpY2h$42l9cK3XGA2Kdg+Jq~99t(~ z<8PUx0f@;O%iPWmw@N>mfc&7(-bDFtyZE`Hz%%#k8_??gL||k>pyz}n1>~+$C_uu< z=7la5L(tn(qCFSNeeA%x?#Po&a&59m_}i28;Fw5t-TfWxOkdW2FGce zG2K$RLO|{v0s^+3Pk}=uv;&37;izb${1M11(5T8+5~T3N!j_S(B*-=P>5zHhoL@bY zWA#w0eC6E}boZV?;JkJIZ)nL1X=RJVpxY465j=Y#r;GXhgxPXk|32qqS$a-{yTpfN zc%iFq&o0{VZ$JQMhqy%j@02V5@!|^sY~-qxb;DWr_`Up#>O=8>ec;t$|2M0vY^~EW zZ&m6#quVecW?8s>cKI%_TVPYOj}p09O+}Kfc)7}I;BK{b2b0J~X@S>#;Jt6;7THpn z5PRj6)C3+8{3P|Dh^7#Jd7MbU`|O@{p_Gx0S?&$I=tg2!K!Xw5`}s<@wAt!oSAWg9 z0Ro30G2JyRpzPZXfR@Qfv zOaEg;axUNTMH1C@V#)3$-=j@~e53*c9oN;~^%|?IyMGx2ntwg$d2}XHnTsS!mYcNxG3BdnthU`om_Q2v#fum2MoYvBdQh2P9C4%QJkEDHEE^{F zLp~(Tky~+GdE74iFJ>jbu%jGsX{%mc2+4#1j)W2#PZ4sX!R~X9KfC<|tFJ`~Ng(0^9C7}6E9?lZwkDqq;ke7^RtkX{PV$|dzHZVsZ zm?)$uR8{?aOGAfYUyrHKtLnD@qCKsDR+PGS%DDS!^%C-TfW0tP-(ZxoE9#xc1muO; z-;b^x%S=O_b~Ew+BrRMm@dsoZAn#@F>9t$8$r&hS6dy4C25Og8an`V<*OYwP4Im)x zTxa0ff(<0tDqk{S&&hSUqrf0UJ6Tdh)acdt&OY1#VBC_AknD!ms7frSjT>rEd72s< zhFpbM)kahD_AGNx3^!gOZoxu_Fr)urT|$3ZV>8WCW(+bP>m1$re)$fpVY897gSmn6 zR0GdYEc1851ouQ2-y3>$<$U_%`B+)7j>zNXd&&GZ9MbFf646I1gXOw0IcLzmc~q$9 zZn5SXku80H#c7b?DWIY3f46s7KK{#H03o6N?&j*I0@>m>$Y+A_9V*D^Xyw*R1H}lE z@0pMjA=wI&4!~B(5sGPNB1xbK3+-boDH6qASX`X&EGn^M*0b93xi3qXnP$UB@}}ve zI=XCVl%2IIEvMS^qt`X6U4c(oA_bk)GfV+_P>uVDWM&#g@}RFqSJ`{r9OC8@Rt3IU zrV;T;&hMB#|F2gcr>|j-QP)*O5MV#$&1rs4pqvC4&R9X)uO61DIV1*3t8c~OJ}90M z6&(1g37&|QC8tuoL(uL+t7}UdOw?Y{dhV|GW!1u_+QmJl`mQdgJN|AwYw~tg) zn>bU$ZKm+)_J`0+FysKL&GD#o_$du(s}FX3;im#3j{&p>%Ofi+ia&m0CWq<<#K^l# z)6}l%O#C<|`mTby+V%WQhdqd9j6c4)$xIp&LO^bwGXyh(x#qpppQ+*ep^-DG;xK(a z_(NGi1<};{ciAN`1+CePb~f~9u-1~RM8OL}z?tBXh(J_d5ElB(c+1C0be8bzU7AOz zI%mzFy?y;$?On3<--^B16`uK#j*fIWWds@mn(jh|LI$y@y=M*7wAsDnwaeD|(ssPt zcuT#Z3$Y6mS*16)jHtOKi7^Z0gJC#N?!&2k#LJN8;$ZrS&g9&WKLcs~`fx7-HnQWs zvEYM@Zc9YtBevCYSMnBug_^bX5#`0+$co0+07f7GNv^V?R|w>QIW)naLH|vzn(UAz zc~|e8no5MGEGt$w=T$)^uW)i`y(+CX`{ctiJm=AydJ`726pJ`tNU4hmvCUqR7 zkR@`KWZR$-1ieQcm$EUjXQ>`NTBO-p9Z5ruU1j7b7N#U6eeVPb^#g1pP-PFk3D(RG z`g<4iSkK<7M?1O8etJf-dFwaYcl%Tm?ePrY%KW$FBQGR)F4I)Y<# z@C!S+xGS3ImJ~E~#lx-J%?unE?&-h+5Ru4!-UDtVJL{vI78iuQp@=r2%lKa$;Hr&JjnUy_GBB*dW3;(lp`GSUaWBdtyE#LdS zq%OWf;dmO0E8LXNLqpR5D_aWHb;^$&coN^hGXjhuK(U3Ji?p$&WdIah zKqR##RQM=Id5=8Z(r{6_vBqNRl8Bjs0f@D`W}B(lnV5*FsxqYKBI|K+oO}8pGk2p~ zUe0|WN#IYq_hMbTH&6*?rEeKrdF=GvTuB$sbb*$a{aH2tcP?3JYj8=h&);JdvdJP* z816~5x6p6;!!3NKogT=1Ve_fZp- z@(-fUX#{NzFYGVB^m@s22Nkuq`UWv;cUs8H_Y-?k{S*p4tbPJNa3PT_+-QaXU?|(! zCB>BtsY@WbbX}k{_CAHe{}J1)+#xo>P+tK)kWA@f(3>&rBQQWrvpBu145<(*!Yt79x9S5A+EZ{-C%TBjT?iRZ^z!F=_4}_l zDYQ=95|H6YuV1OxUihw7*V#WUWlS_@^#i)Zl|}ttceLe{_k3~t9+cgD6NCN+=Ora& zp`ss}&RXq!A<&$hJU`FN z*d~jYk7k5kbL=}4kT$- zygPLYb%?Ls^QjQUEwPyT1d|Y7`}yr};Bve4Ks3|1D|pCYa|8*gZR&=(2Xa~ixK`^| zu9|B}Z*@pd>g$;$ceIYWOeN5GoJPJ!%=!BG_#|Zyg7Ko{Pnc{g&62v5E)H7DIBM<; zv|ZM>ge{$&qY|g$6$^Dc)UPbk^`Kv?<(O4^{nMbN{pVx`wL9&t!jyEvF*w~nq+y`0$Gx&1%VlE- zgsGt!aNL3^&Z{^$Ak-T78?LXYM90UK@B>WB z#n(O{@Ab<%a^MLb@oh^~M%wgsoGV8rUcOVYr$uj-`yS_DD6I6V%S!axu{`d2P4k9a zmg*L8l0YIbP%~6$lbnp@YFUJ^1oy&Y$Nz5Gy0tZS3~y z7da^z$^N}?BG)pyd6>vg)&cd*qH^bK1}NO%K|qeflMohHBEOdMgsQgJhIs0{zIjZ6 zwroEv!8H~_uipiP>T^J*>T>D-O+pUWf=Q3oA4ur@o=*W& z9WF-|_17Zz)V}zz#`x5KmjNb{;iGf5aMg*NjQrShOu3$?otENio+lf0GMSJava=x~ z12WG?c54SdYfv?R@mu!{bAy{8jvEfKgv6vXs!vl(-2kD=ok5=s@02&7fgu{K_)0!bK!q;X{0(uQp|FUZ763)7iiV3%fylRbr4cB^P5=c}mBc z$g;!Q6-5_(mb}AK2O<1W8K9_eLElLyG`7gLM(Y^>FD9y6zmo12h!jxrvZgZAbU+yp zwy=83AO}}&?M}+3!H(j~CkG~zK`I3tjI~@$WQe9&a})y6M-&&3Yo_e8jk^)NTf|f# zlf?}TX8)n?;oe@;ud5H?;nV^^%p-{8Gb41U1SC8yU^_uY4xNE3=HO`yBC935O4MF6>@T^_h_+b|aTqscFe6Rv+ z`oe+?fozPQM^f88<6g!C2P*4TrB6o*-Y|Bjz8sP9&*JmBqu>&=chCQR{GiT~AU5Yqhuydn1nd+)Eb17+ zLOr!3ZNqC?p?Ape4~@-H1wiIv717Ytvf_ZfrLS+C{QD2( z6onuV(1S^VXnf?Q^IiArh)yFzW^r|Rr(zgQVqU3XSad*4L}p0(7N52s%Nwj$kz9ui z@>#ON1WYPtGc32u?L`1VrBB^`B*)V*h`f575ELVsq3s*G>a_n!s*xzf#xVNu(2!Fj zL$J!~>WSWh;-dkF8RAPq-mp4(3=Jc*sQso*#vYsjpAri0B4TH%1-boOn$*<$WVS|@dZko`S|DPaKV<+?H?H;ddLx)YOFFZ) z>F;3A13V4GumqG$Rn5AfESFh?#B4iOo+d&J_uX#thks6N2s-a?x9y<>(Qf-;vnn+L zurK7XxUev?G#(bN+9>^+W#3%gSA<+|Xlndb=e(6-RM_XJmEUDwL1!WVPGGl)hDtdh z5q_ZgWbW6Ge>smsJ2o4+ilf4%b-5N5o_IuL?FI}oOhy76YBkWCa{zS7scS(8(um~9 z*LI2%gsRnlCAJ(y`bY2;#s9ky&L5?+?Uh1;Kj%|6|EvHjkSZ>R#p(Y=I6Kpf7Ta&9NUWhPw2;gmky-7immJQ##8XB4-&!vu8~* zO6JUHYX8V{@NH}c=H2e#8L*yl%mGp36{c7YD~;E|5g1F8Gg&${C2_e1+31A1@2ccS z_cg2iP%_D|Laiik=_@W3H$2F)QBadEtK>nB8G$Zv?MLSu&~F}fIab{lz$@z^(PGKb zB{}9<9`Lo35yQ)y5|%eKbTv{j3d@<9UsE>q;Yn{vGtS0bAze;bORzisn#HdE2c}T3>!k+G%k*l~j=7aT>YPbX2|JmF*$xhoNGvsIsi?l`z+iS8lcjRWQ-JZol zmtOdQ=Q}*FJ<`{L%tN;?zVXc!wBys48pY;>UN4!H%lO&PB$pO#ZFX|8!`57qPxz#! zOsV8#$-Z#sUV7YQ!{NOAv*PrQvc2fVwnu&GepSF7l`nXx?B5&s31fqxLJSxv^ushh zprAjCbU)vKaF&0+u?i^#5(q}VD-2ZARlM&g?K1zp8TfH$>JlqF4T$XUA(S5>AA@w` z-(R@o&UP``1u4?w2gC3!=b0k%IzZ2#{4r`=`o)Qf{ACQ(OZ#t4=N{I=hrx%usdu_L z9vFC&0wb;roK9Z2!+_ZNH9@kXe*~^bbHiMF0KWab3c3nC>9uv46~L`4@z;sNQ@x-&<96@%-||H)2w)(q1x~XPmKz%FC6DFk>DV`J;LT-Yv?-n~YR+e*{@|1e-}j z@&54vi;Z$=(Y7}}-_bIQq85Ga&g%0kaBmljVE7n~2MPd-sXqq3AUP3&1+ZMl>QYK- zDhalERmF|YP0Uj86XfUTXJOf5L#ZU1UZFJOa#%V)0k5n(RiPh)CV-Le#KeTuJ8)wG zs08#-gExVC_yx0cRP~C%1e%JPS`1itf)|Ih^sg#b_dSowk!dk1GhPSui}!8L!h^0N zDai+>J3;9&U~HnUrlu?AZZhEcm5{O4ulhPBiWu{L0v?+2+PIcp-+MD2bQBy_#+Cp z-FNDP`NUo41z1(j+)WPeY2>R1jiG{X0s&=>7Fe2m%DRe;ji9V8UVi=>n`nG*T@BNn z(iy#xQ5vmSq&gyBn-LQD%WYA8&0wesK$N=64gnf$&o3x~UF(xNCJkMKuO1=f7DzqlF*eRKAg6kmN>0_Yh+)6g+vK!6%4xxzTvQZX z6N-Ye{vN4PJO*wJAf1I&ErwTrzWy+7N4RG!ep=9}+hXT7CoP4A8*;$sHkQZ7z;TMw#Z%h^vNR$lDJ?g#V4-$I!8SZ35YvfyIwAt z7~yFoSC^HQZBn_hz%#iB6?hu@n#N=Y^aneA<*HdDN37oExbziI!%&*i5mKmp=Hs;> zt-IfJ^^vDl?N=Dz_mCYOWMG95@=1;yT=jZ-&T2du_&1Cs-IF($+-jA=QS?;G63-h-$QTEo z_so4L1!b(2-h7o$$d~@#i1S+c)_7ya;;jbxZ6odcf;(;^1WMmglu6J`?$>5pT-mN` zvit4CZp=+gNXmez_-{n|T1;8%w42(ZkT>OZVqm!8)#vNvst*02K?;RSXv0dBKe#OE zT_y@%TZ{~aW0L>zqF$4wq=zNYC?$|_v5O$wy(TF`ze{MLz?oN|u2{5zV{U6}`|Q~> zP?ZGFZBRM}W7bTQ!}^n!!0f?a>QhV{LaRXyf?tz{0}PZH=O-0_C(saGJKX z+$2*&G>UL)29WXsY4d1jsYL6qf6C2qPZBW`+vCadLw-GFQcP8&1--9H1^2lP>Gr64 zSVvC^2cz@Na46`AObo?Q8FSN?S6K!5mk%P7zZGn{zRSnoUP_M0`Zu(GEndHtH(PtX zU<@?LeIk(tv>!i$VU!G3f-_9MNh`CT`M*{LKN#78m#DpqOM9KYUS3|fcbH!gf(K_a zX20e=BNGv`w?0L;Wv3A?(wbR=7wLT?q#D1bXe7rVZsJNP5HE%h=4`QCrkVMk9z zr3WI=3G+(a;0GiX9~aj;AR;PS7ZfSt&X6*_5Lva&Zo}|$gprVKH8-_ImuTEnP2GFI z@K%fn-g zuOT7Pc0Bg205sntVXb9kmz0!*v4V)PVvTDRJ&1aKXE#FLLvqPIF6%V#KIbzBi0wC( z38#RE)#{W*&s`uBO0$UxG*ZlX?Pk8+M&we=S6%5a05^t(0hLDC?@GpA=Ja~24r z-IMrlWk!ZaZi+{-YKR(bRyB7aiz;;zGa2hZdY^5d84<;Yn2Nz6i@UictzQ4WsA<9D zI}{!K`64I8@Q-X*=2dNnV3PQdKF7}1wzaX5*;Fo5D_d+!I`0JIx_>gidXSOk!&<4) zLcIWd+qKbbB8`*yzhCZXoz8CpLUy)WQUh{o={r)XrKRtz$oh;bHNR61SRJ=i^Xv8H z^viPF+eUATz+r%iJ7!EEOZY0fCWkF`Tx@fd_W`^8@p{7AIJHhV5V4|4r{Y*)aDR)=)%S zrfL#nED)u_g(^CZ1%Em^B+urv%3$5)_oifZ$9}j^h5(<|q8Yd^9m~rKZeq=t3VbuK zzTEDBeF4%^hC~8xMuz|uTH@mw6A=*wZ86Z$c>DR?V>gXj<^VzR6atMcs`rm#y{a8Z z`ybYvDzPglac1zX-ui;kKbf$%trXym7}y)7-Y)gD*?W(OIQ5OtCDb=U%W_~syCzl# z&6>0ARQ{8lT(^@Z_0yYo47Oh%fY8efivZTye!y88snz=49xfJE!3=dl(^=(99P8C# zPLiWym~s`1WZNJ{JwF5>n83TYcAN`A}sK(@bny`D+2#@1wd@Oxe76l_cv$d17Xv zV`PW2qf5Nju6DV1oHPU3Oanqbl$c&A!WE2*r@>I*k;7W*%MA91os5B*jTlD1Hc>t#ITGI=Pw<~k@oz(S{|=|+be3Xa zj!GGr>6w8Q78nfHQ-v&#g6S1xnIf16ao|ejo0++Eur)VhzWE@fW&QF+N`S1tvK5>Z zG%L`Jf+(1r{P3qMf)C`=US7#VD8?aFrz_&v#oicj;BQTYMIe2(f zv=thWV%bi&#vQd*%K;k@|r~$s9Fi$|u$Ot;KLAI9_x@C@cW6us^X9WLf zhn*d_ogIVC2G~Qq!Ptl8m6`P|v3_m{Or56%-zeRxsCGN6zWeb0{qfk-g;=nXIo(k| zlchfd^BYA)MXC4P$m|3hi3*2#(8gf@+;A?NjJkpE#1CqFW3Knw zf`lSI=l1$~`zJb*z9;+lG*1f3p^~+ZM6Wt^AyZn^n1ho@J@@2wam@Y5 z>u&1Hdk!O?mwqO&`yK^FsJZvF-Cyw*#!|kuHLxAhXwRfpop_0-DIqIZOzM5Czz0e^ z4V%jfPi&VJbP6G_&@9x92kWytPxafurLj&3qOhD18^)k^82{Np+rwHgZlASt2gb`m zSk18z-=pK>V~}IoJU-Y0@yXW$gWm!;(qS2FF`aEPZO%v?A3!a#dA0D}uS;s=kWNF6 z#dig@ciFD(^r^7mz1vDO#n^eD(}+LPd)iUe;*cBi$EZ}SO-BmRy!On;UeYbc8kIV# zaWPDF>-!C*f@HeuRpF+eI^XuNeRZlXl7|=W@mDeTL5K}R-gq6iZ?hT(JGVtbM;QE& zhet*d6BD6$W3qJGo|oKu(0-`;^XJdg!@inEN?)L`T)X`kY8o)S;^yG6Ug*@BX$*k~ zaR%@C5gja?Qs|C=A2n=0MPlePW8>n6rEF`-UX+_(+30FT9A_kaece%NVjr}>k~SLo z({maovC>v^R?yMfU+$2nEmrXkAwaUI8*ZwEn&ZM-iOhV6n8wPY6(2i0e~wra5&Qh; zBHx444n?qO0wlbETcp<-m0wsmWq6Umen1%#(UINRNTNGrEvUbzfl(@(ibuURQp(F_ zEcV7j*A=p5#m_!I;N)ayV>41>MkbFA(hs9$BmatuBd3Z< zF?;JC{7r8Z^!v4c(l*)#c@+Ms5^rMeOLpAq7_5u$(3v4vWXr8{s@Y7HxpK`vu(80` zZ*+hBhYJHP8DTYfhfC_KSFi}6Dn9wAa9vYz?^zk!#^{(&SV4l)5|6IRR+ zo{=`_Q~u0OjJ?jyivcApR0S6&aw(8`e$R4P3>Iu+dE=vbBz9+yXY$Xz-ez}2a21Fq zR&CUO`!!N-|SB8cT>dPJ$+8ZJmug3>r2->6h?1ZW;|+R&DnsY|?i^%sg< z0{r2S9WaO*yfO!)l!KPmoL`H~Pmehf94?1*pr#`cE>oJZUlsU zZ+C!!XCPE)Wo7l^ZHQ&$Qv|GPuyUoMqy%H-SFhHrY;DCwMP+S3&kL{t`<+Ds*51K! zl{bbrF>Wi72Z#)2oiwIDsBQ23O2oC5-O$)5m5uDtZK*!=`pVC4+<$|VloSsyA08rz z_76yzzSVJ2tQOk{!+>RY=}KOCq7&^(Ioscma)vAusb5LCDs8=N1Jt#QT+g3>=t+V0 zDFgT}ufHoLO7T?P+LhlU`clCCa80 zaE}j>+AM0p%8MdKyT;%L);XP>o!|-r=1Y8z+iBZ&IqEfPhUghewzkEFE0E*xp5pe)@gyTo3C>Z^{X=LnDx41L)To9bG2#5Hd!XHWl zq3Y;tkE5%jmsgXVVj+l*KT(j>xrI8Kuk{y5Ex$E%_FyLW^Ivd@)`5qS zP?}HxK-stKNH&u|!vboCG+ixCO+et7Y@h&V^pb0J9wP)s)dg>No!|o zbxr007Q<;El3Z!j{kzq0dMjjUAl?XvX6@uix?+Z)Kxza_4i`O>CUH!6a~fLkmo76w z;<+Ed|0j)ARyG8Q+2cMZG?4ifa~)%UwuR(6fd(sv(rMl1?k@8kG?&e3;gj`Q*q7nB z@A+((zpq+MnxEXzH>p~gyTBad)xaio^#t!*kJI&Ousq3N&6l2v@Y7cjJc&LAW!D$( z_wL^1vRhpSgX4*bcjwDm2N1u1uDM7!hT#+~uVL-Mg4>hQ_!{)APh6QWoY)J_d<_i? z4M8_gFq$?Wkdlx@hJ{5&I1V;ts=s~vH6MlFSwUYwKoD>cFe}qV4W{`G<1O0aTd_#xH>wHR8&-og!A4M_5QJX0B6ws+V)-W z`QqIo{boj~Vg+di$&H=gW>x5sJsJi!bo~GoBr0Yml^+Vhst0GaVeQ;1C%5^rnwrE! zt+DDD%?!v8SO_&5Vt6HI`DwIQ<~cbBI_(_~@5nOT*H{FJb;MzT+M6D*pzZ7114wq~ z^jhGtla~3ffzW?00C|M2JHeyJw65B-N&X;X6r}4J_ORAD{L%#^JdP{m&c6<4LEf$o zF-ipTAU=oE@H940F}^Rod2IzKlo1HpkaF8*f#!;`G~A?;lA+qx`ou4&1Iz+FM5F1@_Cgv9q5DO}f@6j(K&A+3g87h_s5x~2VTC8V; zZLa{6=0KrK8f<88mJtKIT$meBSa1lPg3#!8yzy$mU1;OdMREryB*4dFwV?kn)As%Q z?I-=y)7l3t92^`B3?^Vc26sYq9Zok<6_u!NNfCNh`O25K#=(vWZ!kDG7|u4)=(xBz z2*f_LzPB?~0g0i_PPYw4X>#oGw=a;1WH*ahd}d?AntSDcZ=dk@OjB5$8xnQ>Pdf?V{u}>!=+Nr8id;DV$*yi8x57oA0s~qV=j2UfpW(^{YDN$T>ubY?=JidibYJanUP*k7H#0|NnxP$m0)QB`j;gNwq!y+b{s5Wg5EN&l1g7 zu6ak~Yj}k|de;G&kcG?tT%9WwT2!FrA`%c;9W3rN&8(;vaS`mhd${r1@z8VVCQUsu zvmd_xFJ5y4V?P^XpPc3AFZrfJIP$^1ir=yO@q!e?)2WlWKQ>EPtm((^vDbrjYNC0Lm>F04!s*TEh#*H#tAgnIvdH?M~PQ*o4q!-)8?hI?Y- z6s$)qtkn#|o*pI`DPNeK-QD<01`bfenns?UxUjO9fFA&7+DwlbDA6Bg^PdE>8Fo|a z>CG{!mSbRIh6LmHRfPSZ48j4=T^tBThsz5KWsuwj84|YDmzErkXlVr;9v+sLmcBj# zPOoB(#t$?_CcXHKmEk)yz5oDx+XO#9XJ=;_)*y^eFFbQNwfU9@oH@29+vnj;l9i$? zC2t3X=MGa#wX=qbZ z7=e2%tZ|FxL|3roY&X4!P)pkF#J(}}jPxy?T;-Fo`>p802J(S29RvC-53i=T_u7bYzJINdSs1R=RJNu@CyQl9%dlGdC) z8+YzJHMQ&jp`OHOM4F|}%vMH*NWP|Gb8Bm$&`cXd@WqK~DhUyK=L}uK?*VRdIYy>+ zshv5ZIs=%fa^XeW>|S_g7#tJJq61tG3uaytC*|f^EdZe91UN`bk#8r1wR0-kKGo z0YPa|hK!NusHmij}IS`D)l6~0jMe3XnPr(A&1d_d`AOA;p#d&iJ?eS zhHs1v+3V9CH;2B~t8Q9_=rxW#Mw^*bIz7p`EKl~?O{}-i_Iq3RPsI@24m}6B8A~G< zqODiVMTs<6{W1=F^+mgbGwN>(xSPNfSmS0YD{3!AR}x}zkqD}yhoN9;1qgxEgU65G zx&=e*H#%hCblm>Dp|-=O&sZCgvWVF~iM(Vi zjOhBq5FH}zFVL?guie3U&qzZx1bnK$wP8u{}5DCnp~^ojDNQ zB_On@Cqz}dNm#|PEf|Zj)Wwk-+Q(v)hEmP^Gw)bmb0 z|6^2u=7?50UO--@u0B>@e{Ydes_W%F{gcC;*+^j14#PIA#6vZGk4C@dInz`_fLH>! z)!Df+Gc(h{2UQsHVV>`*P8LM6sn(k^^KX${YgHdRp!S&U3uM@OK02Dg2RxLsate7 z-=);%E`K@DZRE~T=G5oG_v%&5qcbh*r;;{K!uKv>(djtG{tu6%KoG1I^upO)S>lAU zo^7@NEo$hW9ucAQhLTrnbeYv`qu-V+jFSIzakUrt%6VB{zZE-uXsjl@q z?VXOVtjtVLPeb0WlkH_0Oy>3lOgDnmpgv*c;i&|`9F~`C*F1=Mu>>)+b`lclkzqNFA#@6LA!hVUOP7j`7R zQZEnw77~Iqp8&%VH90;fx%e1#=k;+{Vc~p);q2wWs^7SX+*Zr`8-Jh`sBdeSe{Z0~ zR#gAzy5*IR zXz)%Nqv zX=j?NR`pPab)yYrED^eXdx(C)PtO3MMwSZ5YPM&@-d_U6m^8Ue= z9wZ!KkFro?fC{g*_f3!XE2Exf+#=VLLjjLV=@Y^5?(f_o+CekUzb6)hNcplfH#aBj zVxhG%Z;6kfVPcYJOI+A8B(uu)Pd_kzjUpADFI>ohD*`xBr3{yLTQGM zp<@hCKqQA4Qc6O)hq`M})c4%y_ul*5`{y}_Gc(`Vd$0AWg@S>&-TWX{3C82^dsnwv zM6{VUuHb9>ASARt4<2|S6FE}%LNi=(FbyBQ zsN);aTyR99ZYc|7VRABkXC^13;n<#Ld5|fr31HGRR7;WRqD3~3U9vs{N18f!-oSS0S>pp$b zUo3k_aR@3n8276S4e<5G1cKnpKr#UgO+_u)fxq(1iR5=qfL_7gD)C#~D3HaZ zeK-%$H;}R*<7FU}QgEH_H0sqOC(pIX?@jT5;T8R`sS4h{1i9e&ZWRBPJtYWBc`E8_ zHtJ$GpBmrV+uK{hyW6Mk?nwG!1gXX)mF`M0GD$=OO_BWM^NWk+p7Zbf%GaUTgCYZ} zq2c^L{hGZp5u=CThqVdgbo6S$&``pQ7lTrMxUQa_)gRq1-TBF*qh|b5n@6-83Brh6HEWm`#%+32r33xs;TTWYzqFf`L#JBOh4~J$`5{^lTTs-7uF>g+c-=U$2!~^1c^=%2P+b%*zFV>HWvYv$6q@B5jX~scz%r$OBav3;KecpG&v6s58o4mMO^N? zmSsQx9iu0(X7(P`G2)VBkaE53&?7GKs-*f2u!HFCfMW&~bXZxwv;C4=CKIsgG*5AH zSv9|rfu0M5CP0l~M2^zX2*ZR9Shs*3A{d8Y&K|5>M_1Qy>12Z(2Yrb$l#~NN*|1T9 z0s-D!fGNB-w)Jh*f&G8{^y!bzocNgFLdUhao5MCX*9S~D?k*ucX8YBQixgjhj_%K0 zVPHkW7f#l|M=3nMkRywTVnY0Z#nF&D61qL3j1`d;*?X9iNO;cO|A_Qo;Jj z1<-ihc7l1A4&4DZb}-t_sM1?AtEsLobQzEj;c=vlU+^>qgYXX+Y=d!sB?v3+&ttzu zEPCe5nPHE1zE7kFbJs7lLh-p=j|>i0l9zu}RC2rSuqBwl;)7<2c_W_itO;=J-%gEgXv$~M4)d_2)c`N=GSVOt?m&t z&@Wbwu;#ZA+1lmEtqx!lT>Ia>yZP0&y0o|$)+C5}4dZNr37*pnDM}N2qXP*OuRibS6$N-Iq98y2>GOV3LVJUq zEIw#~&x(rbWPNFB%Gv#NKDa1XfZwsWQIE7s}XP+uy72Ejb2-S1hT$@*wTEEiq2m#=; z&Eh$Rog*`VI>VkV;8Pcmi?sx8o$G}5u5fq8zJGrXRk)id z8=LG@E~>3Kugd={H#ZWBb-0RzcOVXOI7sAMoqHRIKE2y{PSa3<*(C6c*4Nh$7_pM* zwtwu}v?%-=Zc=ryT0_^>b5YGo#<`A~^m=i9Hf5#f;^tQK-&mW!6-+(CEZ?0p3A4C= z6`Z>&I^yH~`@ajAZRJWU8?5@@tb2lb7_rKIEK*jN%PjpQ#?~qen)N8VN(!7JiRNNo z$o;?Is^f#?5tMKSCj#;c`sPT(-+=$G)Vh@`vDw}w0F8yYY!)xswXx0BDm=4_xZk`~)5 zPqYJ>sU^Gfd2TA`6kZ|Af8-4iE#U(XMH9!qX=6Ljg5wTzPma4aXp@0-PwnjtyQ5>c z697y1$z!pK2>uM2E>GrP@3(#$LGVoUKOe$m8DHbKi0G5?-9^aQT;q$9C>I4`O1%u9MS@kGt_AJ?@f*IqR4Nt z35}bXWcBxiW+MP=tEGDz5nEp!P{eG=EpjOkmP+($Yz=}EHYGy;jI^F=ET1t~Mb)<> zea-Iny=$Y119`>8@ZJC^Z*gcfL+O=ZQanuLO_U2MbNT)ZWer`KcJ^jJbg5r6U>Alu z-)AM0NJ2J{us@W*rXOEz;rBa7^+R)0-<#{}d6tMOL<>WSHi6--gY$cSejZrYo&pYJ zO}(b9Y$*cKQ#`)$P2MRsDCkt9P^TlWcZzT6^@7ag=`lKX)Q84L`WZ zL)ekC{_UY8&{Yn3&TPUwO#Zk+je1)C7@)&ZI(EyGn$9!{@37G?Uk<^V&D1YGECbg> zA42b!2rakdQQL*)S%gCFB@n~^+%FK;M>7YdRqj&vzE;TnLL$mKoB$_j(Z3kv6=0A- zE&%?`cp;m}Oa&#S>7Gt?Wb^W_Dr*6e>)4VYOS9q7thu!uS_7qM z`Xvzi2^dwpA-x5h$r*e}pf#(Df71%p`Zxbk!-ZUS`rc{hw|GuoSM0tux`4M{vHLW& z?G9bi=B6*hRT(8zObnwxDQI&E2)7*rNUfYK3zJ%;gKqPq_fwoW;-x+c8Z{97KE?v) z^W@kQ{+V97^cARx5a+Fipd39R#p}C}bmcarnc9I?0m?OmxZ4w~Ut5YY{Eyl}FA@`1 zA8QBGA^Tv%k%rEbrRPt>rR$Kz6edqHQBZisW5yu(`7#vdFUS^B-|0?mIP_}T5b^f& zAbIKI5eQcPtnmJo0=#I%GDJg56S4Vym|~+%QIY5N7DY~<&QAQx{QQ1WXwOFlCWk*g zw-YPVuxWOwCLtjqr#BAy)plqHB2Kg4^#DN5!9hSsWo?gKj!m$m-oG+G-?37UXNF~; zV}d?T(isZPl^~J%O0W2xoSbks>$bPIu`|W?eQHzc0N8|nq3JoR08r!LAe(guzYT}m z_peOd+(IEudQ$K-aX=YNkn$X$k>=XlUsl$41_!sEAH0no|El=(=-Bp za2<%m`JVWLhUG>FwB?jd;m@MlLxUz~38eiu&0NpXX* z-j})K102SW@w+_&^iR6FQ7<<)FKijAv!T^w>@@4Xe$D4Zn-)w=SVRi!boBKZZWo$I zKrKe9WtGR|H#1P3T6TK$20&~aT6(J?$b!-QJ%x;wS0&lnnp$`Ng9BG zd(KMmTv-TtBegU6X2&%hl1D^Mt49v32&v3*YY7UGQokV`iKUo%&ke& z0U@@jZY=j&G#4rex4aF=I~3=`QOTL8#HQSvA7J(*Yx(Bp;xg#vlq7hx?&)rpnxu2_ zod%%ed-5pog?OSNJ$+qQf6CfzIT(sizxf(k=xD^8hVDIoUThR-h6i2UyNexiU{^F? zVQ3;Ew7+58HrrRe8u|?1pG*Dh6c((#eSF~GYU4@YGvIkyR~i}{69xojVZk{_F0(Yx zzr{4D*6&3h$hSu-n_mb1S>&~1c)Y=y}tYRJ> zp{ih3`^;02Q>B7f2l|pxB}7fU%u$Z> z+jggd+?Pb|!1_T7;P4Yum^SNr=V3wd~~!jKV5a=i;S!G@Y2 z-j0&VvqD`;v%lkzBap)aIsW-|ot@gk7$2b{gOTe(l}IGFkdUTPGYr*Ml976R+e}X{ zIx`C9NW!eq%a<=hzYoG?O}}-91w1t+X4CMO$P7z;_68Co>cxwb z@rVvRXb9 zYF#d3ad8no-ZG1lfuu_>h!pNG2+Gn?=FMz>8co=nI$6`$p^eT^1`S+jO(^SC(1|WU zU`$7M-s)BFY{^%_VB%RLj;Zjt=!;o{A7(C0#N z_nQ;^pa1D3dUn+Y2XP1^VfR&a2=rfw1Xq~-uGf<^$sCQ0jAUg=;&Ta#PX2FzMQbYu z$j;$VhinkvuS7bR`%jvgnJt)y{wF>WdBIOF8ak4wC@%(r%##jBybzxeqkUVqexVEi zxPfZ#;3>Xu%t}8y^#2nZo_+2&G<57P!GELMe}gDT{s20=z!H4G9)^N1gaI{K&xYnV zkN`e#7X!p^=ewLeIDUR1K|lY;zZ(<8%b(w#P^BG^YbZ!E2@Y6m;? zUole+esZF?i>Lc3k!`E(q3Y{4HC?#%QQ7enm=DkN_TqNlQ~=tdqiE&>@7?Tv>coLpTQ0SW|lMUh=k%J!}C#imqh zT3RcK?Im?=+Kt4R*x1p=qf}HHYHGIrADR8ThNq{^92^E<&x7=tSCLXJ%;&|#te`u0 ze)Cf08!)-wCu0Ft-0e?ua~M*|%rwr<=hWH}%H9x^ z#KTPA>IFU#5PKjDRD)CHj+pF5#hpY8uksdLBzKE^KR_ai=g>sYV@s+~nL3p01Is)- z@isQCZB3s&Oou6-A2?$bM#NhNeR&rY32Dv%Hf(KejZU8o1~^yECsq>C4gj==k^V9ACLcC)%VtnKfcuV8Cobhg!#j+p}GHmuaA671;0Q z;ZfXW5hM;uY}lHTq+w_bsbu(bBD;?zfOgOe1 zd;vPHD`pr`i!HnUk}x{lspfo3g8{6G{CZ@-=9*I&NJ!<(EiBR(05Ssw<7n{08<`;3 zww7kRajuGR?3ji54m373wYe7;1^aSD3Jfe{`2m50m!%q}fGkz?@C;;9x{{l!{1^=mST3 zNkg}O=!KdLuU#0VB&z|<)R06W*mA@07 zd*8pyy?b44a62O9UczJ9d_QVQ_yP*$LFLZiL)=)HEy zocS;gwuCAc>ffCP*?=JB;Hm(cX8K0Rc>uWtU+a2955m5KI{ko-9@ht;KGsifYX$^k z;S2DxFCj+wPMUeCDwL*;=ha9tw5Mwa!np;P7DA%aht*{A+*}LACOr^mh@t#HtQ}#3jCm_lPqLL8}6pS;8)~ zD9@9Xz1H?tCqcKUpOijO?Cd#BMfxMx(zkZzHItfLhsapGK9X;qH>QhLC z%zXEYiimu=Jq0UO+-)++ud*Y~Cmi1{cIOAbJBK!<1n_mC(ty0-^Z~~PDicuf={|k* z=z1_bnHx9CmGvU47uCK48>J@YXi^AE%O+<9P;_~skc?1kg*E0lWuiIRH0|;uO z8~XNv^H4qf!U9-9xm>{_b(WQP=z8oB>D9Vup3VZH2}4GDraUnf781K;jb=HShG+TZ zbz3(VEdo_zL~rK%H^rraBs*AmYHZAWCcBo%)`@mes5NS7>0HCB0G@%=QPnCl7BruF zAXK<8^`H)K!aK|?WkALx;eI}9rUXRWW)Dmopg=6X5r~P^vAfG7v>vGtPd=Gem%+%$ zNJ>sW0&+!OG^|@s?+!caZmp&{1O&8-n>Zcih5GyFaXTnSHizYNite6yrqIG(@+tmAOv;^Oq1 z|GZ?Bzo4s33aPrkVEkTUB3r4Z0{;-y>n2LW*;xW`0LfH{NI>n=TH(LtjdFwKVJ(-@ z+ZzMReZfr^Tr{NwJypTldw_lm_FVWl-%XaDQ zx*z=SpMvKWf^R;{HYbTR@9o}BtbS>`-}+@6;)S! z4emFT2)pR7^pZj@*wIVB{-@0De?IsBKE8Lo>2T)n9{9g`zn>Og_<~9U)Um--Ri#CceVse!aQVp>+-^)JgrjMtmX6iT3?&pLe|CZiV&iqU4`i=5NEn?rp-~t>1uiYZ-A#K2ls_ z_3dW&8|DA}PxZv2JgJUQpe$Gf2}3T?uLZtKc2VNp&vrKycsfqdG(<>u+J%TbE>b`` z0p|G^N05Xfn*)=|P_a$%$4-WH_K5Y@`2YIns%nUA8}c#_&Oreyg&R-w@OZ|oo6ujG zqz!iD%YoDs%uDWFLP%nZ*dLRm+&Sw*tuZvO6NuH`yQ|C`VJ`K(fMu)28A zq#;yWp=dN33aFFlqOi!w4%n1|VyfsIpu|gshgUz5M6-N;O<=_{loK(A_LF`pMUj;Wp8PD5^4>+A80bV=POFY8_SC+mAXa}LQ1Fy1bmbA}`EvWWuZh?4fXS^k`Oo~xDJH&1qHC4}x_L zx4sT+F`u+_0H6gB^!6fxnwr{FDl|0I%ggJ|ojZhtg!%bpW#W>OhIlf7TR@<=;|@e} zoYisS#v2y~4@kBSB-4hW-_iFK@1 zqR%UQ1m!y-U-Lrm#lS}6ZkPuwb6(=qDZIHG$~R{ZkLORGSpQyrSqg!6ba{^<7oen+ zSV!vp6?V;a_%>4ns(QeZn(1Y}?-$@0F&P&0JX)D}mAHG8ma4L{@+*GBmoHxy3W08+ zg}BR9^&aG0KD>7?ZQ&6m>lJTuZ_Dzx-81GW<@tZWBJmYei+tA?nxuCs;LVDr1jlRRhYz>FmVoWk)+a70 zEY!HoD=geGq-B<+*h2+{a@#Y@EDlrS)?@2k)T?0;&zYr#$KQrL=r}3j<3mWZ_{yfW zI$#GRn#gbUAv7kzGf1x-qd?TDarUVxYLjKbpGpsqY=UHFCfvt2sqGE zQ|XjAL#lK+LsLuY69?s>)@k&D44x-`7qs7Dph}XBjSXI$b1dtx%N@U6vb0PC{mrIT zB0&z=RH4}(nl}E1cin7&ybmP=PSG1z&yPR$Z7(Y=1p^4oFmncu3`b$Qcmiu_N$y-w zOldN)2_HQgy)@N13yZHK`%C!|6PFgd7X%H_zD#gq?0!FeW(f3{{{q0k)hky%$IpHi zW8lE&*BBDkLpbBY19o}o(#xlbcc)nq262rsJUR%q|>77cH zxxMd_&tYBZeNo#HngZ(9*2s>#Fthqinb!d8uifqxnWLg&UlK1I#9+>Cm}ujQ4hGe6 zjCe$EaZc)QsWW}1b~jj9QZ4%MG9BO-(jpc}3=zlhX5oCilnf9QYkw?khme2sT03lC zU9rM&B)K?jliWPeK0whr+c&)Wf^yJ<1-_bN8&SsN}sqT%>Le)6fkD`f{G)j%D{U;xF zcqhCNf{i|s-zv;Ocj~6nu|e2UG_^$rjm9OYP1aMDY&U^_g_u}nMa5R*+hN-7z-vI2 z3OnelSFDnfeGLsZz$NdUT_R0K#sS%E&^F@o-CFKEM8n(Mn-6*}&>KdEI?dyjZNMIV z=)i01T%-Jdx!aDFQXh&~Zi>@PN{NefctLTZSAdHvQV6o8yWwpSFs%PvU%$D~AOPR& zV5BU7?$9ghhyr=mNY5s8%5da=2g#7zBvl0!p+7BA=2dbI&;%?567GY&6^!ssu*Wq% zN=QiXUimRGIC#dsw*(vwS+VfrO3TZeqRxFv@}uMcgc10u&Yln8H2W!E*?>(Juttdl zR9t)2iIaWMXA4xVT^e|XI#I+)XwL~7zm4&8u~)&ow95Qdb$0Gy+QRJYa+Qqm!6Ah%&TS{Q@T`E%q z2m(~V7z|nlMcjGq{rw1n0LYH~3A@;erK+YrIxiKleXTEOy7_I8WztwADDkhkwqtQn zcXn2DsimR7J9!@riMmuKV!c3VNAl^5+vx>H$9G%|B!^p0rvQRH3X12T?@TQefF+~ioaV&eSG*B2aM*z>3=JYeCs`AEI< zCH?1JSNbAVp^n8Ls4$i;GTq|!(Y@O}s~CtGAA-2&{_WUDj}GXvPBCz!k?8;_S|K1L z8Fi`|n$PAHSST-@Z+_c{N=s1@$}v}J=nz*oGGaHI=6HrFvAhd*-_CPJLO;u+?Pij$ z+Pr97l5vS$FhOccoV&9#H;)f8D-;H=CuRb&sw4~!s1zhDn8(lhzeCBMf_!;l*G2WS zgl7@EXNxUyx@BZE6Ln5{9Tb6l;~Cwp`KYf3rOvuvm6W4}U<5dnN`uMxBGKSiwP{a6 zA0@Guz}B#Un0?kkX4Y7a96b}@<9dXe^kGNQ2OFaxsf31 z!T$s_i-Jcnl`rL3zfGkIE(P-~pARt_9KmT7{ z58#ad#VUkHB7dW{co=t2ZSsG>B>&&~k)&_Hv3W`qTx22H`=<4~^7yo|LKM&;j7pz> z8HZ?eFF2kz6y7VJp&#nC-Lnl<=-3I)?$k62c&4?BxHi7sy4uzz(ECyzbPrEk2Zh~5 zeqX~Sy##`Q+j1b_*B$tcj9R-zuef|SEbNY4P|10|UE?RcqHj_9?gmTcnEr0MP4P@G zJbc&{@ExE3ccLG&v&=`%XpVv*+ijm#LmUmYWD(~r*gv?eQEzkVG=!d0O^X>O~C zWrXRTwFl;;7DE%?A)u3cu|tU!iTxTIx@-Rpo6)_Hfc4nkT&GzTnz`-l-1>9>helod z`gIYS&Y?Oylbu~wUJfEoPp{>kGPjJH4BQ6_AE>t>G6^c-JkR+dcx7upsqM(*T4NMT zum8eLvnu&J^de8Qv)9)t7Qhks_U(YAkJim;-fQ&FAxQ=FsXxYlnUOj_n>yH49Da!& zOluZ;_~oG_g5n|A6^d2e?{-HWhyy?-%s@IU><2FVCqxzpfkWf94|v{%2%yIDc%_wq_d zQc$m6x;Q%kJ1VtuSDKH%g3jgK}T2m z0qcYZth{19!@Kk}HIsGncmaE@OL&<9isG%Rj%R7pJ|GO}))qrxi~CjNuFk5jUP|Vb z(A%IO!kB}d7V1OY z94|UcO|y5b+$&5`$hD;%e9oH(?}y)>R~gEl@9ni zv}O^+iu99pZEI^9Uq!tQ6Pda<-NA>lRAz#LCABZeu*f$3czR80teKzXxJO$GiRG&E za+dCeNGRXeNzQsPk?U#6d4GGq{y?fG%U$D>-yRUU1ozzJBzmmrH+BGT)n*(BjZZa` z3S$7oRDR0_JjvNO9|Zw)v*TbOQUd)8kYLhl`Hpzsnx;s6D$#3oWnfd16U!L z#q-nT1i=VS&LrLr_j{faQw8*}l#~?C&+bQ(5TO=_zM2}ZN)-frfsh%~mv>D?kWL`0 zHC>%!+Wg0zeH(UECi)L9G8AUY2|j$_&tWEJ1F}faNe5fpbUIMz&s$b^#B#A8>&XOO z~Y09?-5w8zJ!!ytU-y9Fj?ZOt=Jup78wygO&P3W*2r>r9KYm~K?()OA_u zi(B!d**P}mZhnI<4}`p2cew-j4e1w_tkM+*Kwc($`1I9K^{^l;CmPy(KI3gWJg>Vv z$@Z!SgTdf`FfS+wK7!&aIRh35lwww(5knQ^uAP$y6rWey#tUmTI{ev6uuJ_K9&`*|-k+=wNe7$vt)_3N5(N*%ReCn~+TiZ%=chMb3)tNY zf9aw39fk9Ud}wPZcw*De>fB+*;|6eI@t7WFRHi+qqEgOJqMPY5JeXE=c9r_~N<4`s zmv?dsg^(o(kOObbDYNaO!l<98tj;9YSv3sq6nn56-C$Zjv7^)<|6WO6kmAx@;jM<30PM#)~J z)Cd(q2ML`|;6n+AATZ*JWhxf22DnCre{Bbd=^kDdC;5E$sU#RJj$u zCDqV(m#RYcRyncup{lKz`A?TvfzU_bc3V}O(aAwg26^!fF(uueb^ zp{%Ov(a(PtVG|bSLArlGG%SF=FiQEpuKteqM*jqD2Tz&MW3w!oQ;qSjrQ~~mtmiFbT&Wr#% zVo_dRjR+;hC&~0oOw&n*L$k92m<8vsaG+L-?E9Voa`Rj4FJK%vH8n-FZ(ohxY+pv? zrHdB>3q`30L0*~;c6U*$S6AfZ6x~2U2h+Nelan{kUj1oN$1}&P2MB@NKW3~fFW+oL z@_lSJs>ozwJZ$;ee*PIw=Uf~16Um>(Ib-oP`Cw6Fj`uI^pWAjVA>mP%`oD$6- zES#2hl0!5}DKiHlB50w^&1PEUof-reE^Tl5s9;eVT3XTYq@udO01r~ej@E4+;^bp`$}$DvevFlzXU=jcvVgubH{!#Mk%)b5a?*tJzb}Zw0 z)kgM3y`dp3H~l~x8yi5k%$wq-r=}Pf8DnB9)T=XSfOY@+ae>ozvK+LJl)<8uLypp`6+r=47A{P zpq{`ur!KU7;PTeFW$(<1ZmM~>A6FQ1AU7%AzRIxWkiVw?jrUWiuD~dA%u3)aU25iDty$uI3a;tJ)$?^yqmt%@<79 zG6|g*w(IHZc?^EV|MV=_91fjWV|&;=QUmqHE^-g@cCcf@SWBM&EW8 zZng(Sx78aQ`t6VHw5w1xh1V{%HI9|7gl5>p(U16Nq2|ZC&8-gNzKDNbQq@oP{b5@W zCZi!QejU#rVn%P^5FATHmuoCgA5O>|g*kq4p(M3*vB4awpiJ zlMbYM^z>O~l%?O=c>5Q{nLpMg4;(6Zx|LLUp?yG*uMG3qwnj{|G^tllxp#Q&;AW~v zPleF5WX>z$zKT&#`@WLI@(5*Gf6D+TzvR!{#Ww1hoy&*wRLaxSD-p*RvRNBrw_V|P zeru#J{RJ89s$h&?5J<1GHM?k`;wqP}%T|*9cuCMR%epmtt4Dmx6IrRof6ddGb#YjK zXUgz$kgMwi)59zQ>4sV1EyoYY(1}z;$d{D@JHD^9cQWKftmt+;lzzP8nu-=7%*`lba@(cPLsu%rU>dI|b z-|wjTaD##AT8@v$={|pvY`&4jj_HX;+5pcq`0BBoseA&4_@FB6MAlw1?xx1G7|z$U zrG8r-ta=T~ZLxD*RFA0&yQl!Q_8VW#)_WZ>=Sgx zh1Hb76E$+-+x=lL>uzK*-_w_C$|ugTovyXDiwksb5Hg>#uu-b-DZiiPXBvTXoqhHZ zgA%FiREl5HNVIA*DqBxyYi6n}5tiDoDdcIhS8hpDx9COK+-Jw+3rK3Cdy!oj_m@+k+ESLWF3fa_2nRwk|o7P$n z!AD_AO09y30EybNCpx^HpSe_sbpjetV=0~6oqB!on2K|Wr33rzqBXHiSs5OupNW6& zEW7FEELV`W0V`}ay{JIV$D`5k784(9dH1*Hm!(VQ#nO=P^kESAZvMnt`f2;TDlGYP zh4gfx;+*tygCqlOvT2`64GpFJR-s>CLl%G!w)nF+oys=@j02myy-9VQ1|#qN3`= zf)*||a2$Q>@o4n9Q3uoK6xrfvdyh3CdBe)YsbuBhF&$O9F$XdCB3&}QrhU4Nu%9 z*VDF`xf9?VD;~ji?t&kV>cL}zRbN8(5pBkwz=FRF(PnQVF@y)kpB^1efrIxMgNO=a z$^Pv+>JukshK8WyduJT~Q&#qC%j=^uLC|Ia)I4Ri=sWkuAG}8(p;*WXU*AVXI3~77 zJ6D?%R#}xTx_M`>I2lh>f%eiWbi7j*?rNSct(`$&K|#|~Mlm&}$${zsJ*?6Ex8~;S zZmuAx2lq8Nr4eUt0_$MDVPvq;3hj4BJsm4ob*3QF4`m|>FGDx&46?PLx|?XD`u&x z6q}!<`TI&;^!2XT04M4HQ$tYcqu$rs`|)%#70P^W)Yt9tg zcB>g0vK2*zhimBI6PMq=c@s4`o^4nMw)X^JTi6oX5=wyEa};fYc~aoz;^NgSq&phZG5az z4O8&;8{UBO(E;UB6ISD(={5B6@y1HBg3Ng#e*1{0TE@oO`ueOixZ&s0PX>^x^h)~+ zO0}@b&0SrC-@d)A{2K9SpN+#yyAJ7wym$ILYuK7a?5PwXSuQTrsS7mkc6ZGR#LJSBbdZypxr+YV zHNfFm2{J->DG7K+#GKyWJ6Kx!T?Iz?LZId385^x;pcz5*y|93-&ewUIcHDXAQ%PCb zlY2d?YNx#h(RWPS)v`0rRnONlbaz`6(si`=c6!rLjbw0%iH$f4{;3-sDUJ@(795Ne z&BYQoJR%6@v+?G#02!c{r>8vJ3=9?(A1p5baeVs5e2NvOH5RSP+ZbYt^Pkth7IDnv><7Yqq+QHvN^d}Qi$sB!-bU#S0|UcI z+PJ-r&T9xHZ%tAFt*UimCKgLir`%)a4cB0ehSq&jn=6{QT|qUrk6H8@iLMVOC3{Co{N6cbbpk8tp}1OtnnT&CShVk=R1t*|L6{kGr1dz29e|brs@7 ztyePv-7mdYl)3~rUrflJOL5a~X8 zJul~)*V<(Nctm3-b|D5b(gw)g8VLUfkW4$ucMQ;L!Sh?%Z5PM32Hy( zs538Nu7-PdWS&IS!pdsRHh+!qQTd`P2QoP+|IL!^D#jDef`7lNR}bVm8`hyNg*Eaw zt9fod=}L0j!0b?tU2l<)yz*D8O$8S_NBBrr_h_R z(3AbD&R;9%9)V#Yd;hpwMDMjMyYk#!bZunhJMy(tGW| ze?jH{i?V1BH^o*ygcrEPIIa zfxoI9h{XeN)D85c{yHPFRm+-_<=o!}J0H5Z2pC1k%OG1hA9}a+{87G4JSN(VW}2U$ zO7erFiJzYzIO!JLg@K*Eb+%exw*|&{BZ_sIN4W>rYKI>;IL*<(*BS z8YO53k2Ydy>2gO+n$Ri_x4-+ie3NX{kwN2l0uP_GXgwEC+b5ja{SL{t>Jf)qv$Qk+ zI4fVo@u0tMNYfJ9TU-ASBeFe5N4%!{p!I}#@k8-w-7^Bt<&EV7ANj7b3D4e1M!5b( zY^-^a5d zJkr-;Q=JCUNGpF(nmugmFD4;9Z@Q`R%NO78u^uD6vcWXzF6H7;An~YkgQ($-VuyjV zxB4LwL||FF?(^rlg@sAj%2QLn0}pGP9T%~jWnlOW#3@nN%qCwf5~6&UF?e$Ath>444AFt&Se8mzk-D&bZQ z)nIvS7}Ujna9s<&IcFvR{+5~+8)KpIifuKcxHvzbx!d1;L3Ig%wC8nc8?6_}C-2j1 zTD`nVbE>z!Vf{jI>ghPvhfb$ar))b`pfE6V%FFpQ9C77jNfJ1R-Tj8iO$KhJGS zYYS6j=;!O(ekv+SeB|~;J}~ROaKE7#^2k^G^n4mXNTxMveB5QH zG}%;YYGj#Wd9ssZdoXpJ=?(Qbt*sn=Tia{S3o35oiO(Tqm2)T=5;6Tpdj#JIf9%H12aDAi zDz2Tm4`!O04sjBa4PzWO=Xh9EFFP-LM{VIOM$1;TVj}!>#T&TxN^_{rJk$dLn-Szk z=ZKlY`+|MT98l5P;s(=hlMQan7a$`e`ogU>G{V*L!Cuyr6Hp{poS%Ow!2T6`0ccgG z&3-J5#y^S1mgJRvY?2QA3?3XFGtZ1(ai%lQhhvR=N>*wdrWcj7PwMX`vS zvgq%{EFr8pY$3K; za|V73?;UqeH1C~VWD39M4!$~x#%d{8kJW#OmwL>Xb1GBBnXfm1;Jt9Q zaAP&V?s{Md?;R}{JOvOw`W76gbus0xyT7M<$Mm=_J(gX^>GA%M1CFi+(f5>d;THV_ zh1N(8=BB2mYRJ}sHe=aG;BgLK1m?%mS?BZqneaQk3eP-ujjX%wCEL0Z+DY0Hc>Z3P zL542s=|9_+O{q>dZ{D0txqH`qay38=p(571Q};GSobGzVcuQRUX;c>S>498t?M%D7 zqhLncF^Ra1RL*T5vYrODB@+TUU%zH0xiLI+`S zKV18MX5YcFG4^Px5;?EM1e|_vOKEz#4`^i* zcgT{nRUoObhmw*K91B$O;Q=tZdIc~<;Q@m7Vh7_;5mbg&YV@S<#RwklZML?s(z-!G z%^;X4-<1oMS`aBY%&RUQc?(kh=5Ilg;8yaPt>loV2T{dngR~IB25#?)X3($4tzm85 z`0Xqg9CA2RqgqkA;{FNt*uUPynP&v6Isw<8Xo4Ta0IM(?f;*kdX>YWxxseFRe*Igc z`3d9S46RIH`3v2GyX|ECVlGk>t@<{tJxrn(YOPDpX0)v^f2BSa3CE(A$TNirzP*?v0nKxRC(L*4}eaPpqehAJoyq2`AY(=2! zz@bACG+Q?q3f(8ttFL&Ka=})~PkH3X5hf6gL7H>(vJs~W5tEIxD<%hA`TtOv9ab>o1C4k z_S-08k|b0RmmBf&bNkiS|XqhT3putq+fGt#zz5}^nL0H>uJSB6@y~KWk??Wd zA`nh-@uh29Y!F)z6TsiO&i2t$Nl`ILQb0fzdGO#tY{np@9A%Tu74%B{5sdU+9w4xp z6~j!m?WdR|uOgwI537aLXn7w9Kn{sjY;t*i!`gZ_3a8!tN?=Fb`^hI2gs}1yBR%fp zrDR(Hv~zuXy83ebXNc#0HF=lhked4Hy@wB#y!y&eO&$?#!}QwPT5B3^){N0MNRfunrRckp z4+W#@NAP1GfD8CCrgy^<@#=%=XXi8q;1v2R!?dpi&JI*-!)vdj<4GRF@?8Ez_yvCd zJHH_9>T86c>RmviFV25}Jn(63#08k5!ZlEGBW>WI7X;~mvip_1jQEttrH-d(h1^tE ziFNEQXSv_$FZj-L)`*#zdEU_t=9y?L^Lwn$goD&i$qN+KhaX}A^w5A=M=s9!$zWe5 zMfeq+{{$kSCg<4^%_D<8t4Nq31W8Ts!?0+sg-0VYb;GSIL?`zcmanS>84l&t<>~|b zGX3_q4kxlXIb{%?$n$oKado$Ry1eYRG8GnbU@mdBI0fSIxL1uJM;VT^R3`Y)3!Zat zaC3I@@}HqIUCKZ$U&f;zyyCEG`T4)@Q79w)Wv74r9+P#yGl<5|SxzHP6FaOddp}~A z=Msv_Ktc#?S9pX;Uf|du?Ogm)4u$aXJtb(xTELl2(?uKF Slp6Re0tH!>E7_M!?*1>C0xjnN literal 76583 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 H{YU=;([ showReload: query.showReload ?? showIfFull, showTimings: query.showTimings ?? flagQueryTimingsEnabled, showElapsedTime: - query.showTimings || - flagQueryTimingsEnabled || + (query.showTimings ?? flagQueryTimingsEnabled) || (query.showElapsedTime ?? ((flagQueryRunningTimeEnabled || source.kind === NodeKind.HogQLQuery) && showIfFull)), showColumnConfigurator: query.showColumnConfigurator ?? showIfFull, diff --git a/frontend/src/scenes/feature-flags/FeatureFlagCodeInstructions.stories.tsx b/frontend/src/scenes/feature-flags/FeatureFlagCodeInstructions.stories.tsx index 642ef3e6a88a6..5ac711aabde81 100644 --- a/frontend/src/scenes/feature-flags/FeatureFlagCodeInstructions.stories.tsx +++ b/frontend/src/scenes/feature-flags/FeatureFlagCodeInstructions.stories.tsx @@ -29,6 +29,7 @@ const REGULAR_FEATURE_FLAG: FeatureFlagType = { performed_rollback: false, can_edit: true, tags: [], + surveys: [], } const GROUP_FEATURE_FLAG: FeatureFlagType = { diff --git a/frontend/src/scenes/feature-flags/activityDescriptions.tsx b/frontend/src/scenes/feature-flags/activityDescriptions.tsx index 1210c89089463..f774616afe7ba 100644 --- a/frontend/src/scenes/feature-flags/activityDescriptions.tsx +++ b/frontend/src/scenes/feature-flags/activityDescriptions.tsx @@ -250,6 +250,7 @@ const featureFlagActionsMapping: Record< can_edit: () => null, analytics_dashboards: () => null, has_enriched_analytics: () => null, + surveys: () => null, } export function flagActivityDescriber(logItem: ActivityLogItem, asNotification?: boolean): HumanizedChange { diff --git a/frontend/src/scenes/feature-flags/featureFlagLogic.test.ts b/frontend/src/scenes/feature-flags/featureFlagLogic.test.ts index 23aedb1086bba..f0516fe9956e1 100644 --- a/frontend/src/scenes/feature-flags/featureFlagLogic.test.ts +++ b/frontend/src/scenes/feature-flags/featureFlagLogic.test.ts @@ -37,6 +37,7 @@ function generateFeatureFlag( usage_dashboard: 1234, tags: [], has_enriched_analytics, + surveys: [], } } diff --git a/frontend/src/scenes/feature-flags/featureFlagLogic.ts b/frontend/src/scenes/feature-flags/featureFlagLogic.ts index 24f90439d16f8..aeb4b9471f764 100644 --- a/frontend/src/scenes/feature-flags/featureFlagLogic.ts +++ b/frontend/src/scenes/feature-flags/featureFlagLogic.ts @@ -19,6 +19,8 @@ import { DashboardBasicType, NewEarlyAccessFeatureType, EarlyAccessFeatureType, + Survey, + SurveyQuestionType, } from '~/types' import api from 'lib/api' import { router, urlToAction } from 'kea-router' @@ -40,6 +42,7 @@ import { userLogic } from 'scenes/userLogic' import { newDashboardLogic } from 'scenes/dashboard/newDashboardLogic' import { dashboardsLogic } from 'scenes/dashboard/dashboards/dashboardsLogic' import { NEW_EARLY_ACCESS_FEATURE } from 'scenes/early-access-features/earlyAccessFeatureLogic' +import { NEW_SURVEY, NewSurvey } from 'scenes/surveys/surveyLogic' const getDefaultRollbackCondition = (): FeatureFlagRollbackConditions => ({ operator: 'gt', @@ -73,6 +76,7 @@ const NEW_FLAG: FeatureFlagType = { experiment_set: null, features: [], rollback_conditions: [], + surveys: null, performed_rollback: false, can_edit: true, tags: [], @@ -414,6 +418,15 @@ export const featureFlagLogic = kea([ features: [...(state.features || []), newEarlyAccessFeature], } }, + createSurveySuccess: (state, { newSurvey }) => { + if (!state) { + return state + } + return { + ...state, + surveys: [...(state.surveys || []), newSurvey], + } + }, }, ], featureFlagMissing: [false, { setFeatureFlagMissing: () => true }], @@ -520,12 +533,33 @@ export const featureFlagLogic = kea([ null as EarlyAccessFeatureType | null, { createEarlyAccessFeature: async () => { - const updatedEarlyAccessFeature = { + const newEarlyAccessFeature = { ...NEW_EARLY_ACCESS_FEATURE, name: `Early access: ${values.featureFlag.key}`, feature_flag_id: values.featureFlag.id, } - return await api.earlyAccessFeatures.create(updatedEarlyAccessFeature as NewEarlyAccessFeatureType) + return await api.earlyAccessFeatures.create(newEarlyAccessFeature as NewEarlyAccessFeatureType) + }, + }, + ], + // used to generate a new survey + // but all subsequent operations after generation should occur via the surveyLogic + newSurvey: [ + null as Survey | null, + { + createSurvey: async () => { + const newSurvey = { + ...NEW_SURVEY, + name: `Survey: ${values.featureFlag.key}`, + linked_flag_id: values.featureFlag.id, + questions: [ + { + type: SurveyQuestionType.Open, + question: `What do you think of ${values.featureFlag.key}?`, + }, + ], + } + return await api.surveys.create(newSurvey as NewSurvey) }, }, ], @@ -869,6 +903,22 @@ export const featureFlagLogic = kea([ return (featureFlag?.features?.length || 0) > 0 }, ], + canCreateEarlyAccessFeature: [ + (s) => [s.featureFlag, s.variants], + (featureFlag, variants) => { + return ( + featureFlag && + featureFlag.filters.aggregation_group_type_index == undefined && + variants.length === 0 + ) + }, + ], + hasSurveys: [ + (s) => [s.featureFlag], + (featureFlag) => { + return featureFlag?.surveys && featureFlag.surveys.length > 0 + }, + ], }), urlToAction(({ actions, props }) => ({ [urls.featureFlag(props.id ?? 'new')]: (_, __, ___, { method }) => { diff --git a/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlag.tsx b/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlag.tsx index 0e315def449b9..066917f6f3c9a 100644 --- a/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlag.tsx +++ b/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlag.tsx @@ -2,7 +2,7 @@ import { createPostHogWidgetNode } from 'scenes/notebooks/Nodes/NodeWrapper' import { FeatureFlagType, NotebookNodeType } from '~/types' import { BindLogic, useActions, useValues } from 'kea' import { featureFlagLogic, FeatureFlagLogicProps } from 'scenes/feature-flags/featureFlagLogic' -import { IconFlag, IconRecording, IconRocketLaunch } from 'lib/lemon-ui/icons' +import { IconFlag, IconRecording, IconRocketLaunch, IconSurveys } from 'lib/lemon-ui/icons' import clsx from 'clsx' import { LemonButton, LemonDivider } from '@posthog/lemon-ui' import { urls } from 'scenes/urls' @@ -15,6 +15,7 @@ import { FeatureFlagReleaseConditions } from 'scenes/feature-flags/FeatureFlagRe import api from 'lib/api' import { buildEarlyAccessFeatureContent } from './NotebookNodeEarlyAccessFeature' import { notebookNodeFlagLogic } from './NotebookNodeFlagLogic' +import { buildSurveyContent } from './NotebookNodeSurvey' const Component = (props: NotebookNodeViewProps): JSX.Element => { const { id } = props.attributes @@ -24,12 +25,17 @@ const Component = (props: NotebookNodeViewProps): JS recordingFilterForFlag, hasEarlyAccessFeatures, newEarlyAccessFeatureLoading, + canCreateEarlyAccessFeature, + hasSurveys, + newSurveyLoading, } = useValues(featureFlagLogic({ id })) - const { createEarlyAccessFeature } = useActions(featureFlagLogic({ id })) + const { createEarlyAccessFeature, createSurvey } = useActions(featureFlagLogic({ id })) const { expanded, nextNode } = useValues(notebookNodeLogic) const { insertAfter } = useActions(notebookNodeLogic) - const { shouldDisableInsertEarlyAccessFeature } = useValues(notebookNodeFlagLogic({ id, insertAfter })) + const { shouldDisableInsertEarlyAccessFeature, shouldDisableInsertSurvey } = useValues( + notebookNodeFlagLogic({ id, insertAfter }) + ) return (

@@ -64,37 +70,67 @@ const Component = (props: NotebookNodeViewProps): JS
+ {canCreateEarlyAccessFeature && ( + } + loading={newEarlyAccessFeatureLoading} + onClick={(e) => { + // prevent expanding the node if it isn't expanded + e.stopPropagation() + + if (!hasEarlyAccessFeatures) { + createEarlyAccessFeature() + } else { + if ((featureFlag?.features?.length || 0) <= 0) { + return + } + if (!shouldDisableInsertEarlyAccessFeature(nextNode) && featureFlag.features) { + insertAfter(buildEarlyAccessFeatureContent(featureFlag.features[0].id)) + } + } + }} + disabledReason={ + shouldDisableInsertEarlyAccessFeature(nextNode) && + 'Early access feature already exists below' + } + > + {hasEarlyAccessFeatures ? 'View' : 'Create'} early access feature + + )} } - loading={newEarlyAccessFeatureLoading} + icon={} + loading={newSurveyLoading} onClick={(e) => { // prevent expanding the node if it isn't expanded e.stopPropagation() - if (!hasEarlyAccessFeatures) { - createEarlyAccessFeature() + + if (!hasSurveys) { + createSurvey() } else { - if ((featureFlag?.features?.length || 0) <= 0) { + if ((featureFlag?.surveys?.length || 0) <= 0) { return } - if (!shouldDisableInsertEarlyAccessFeature(nextNode) && featureFlag.features) { - insertAfter(buildEarlyAccessFeatureContent(featureFlag.features[0].id)) + if (!shouldDisableInsertSurvey(nextNode) && featureFlag.surveys) { + insertAfter(buildSurveyContent(featureFlag.surveys[0].id)) } } }} - disabledReason={ - shouldDisableInsertEarlyAccessFeature(nextNode) && - 'Early access feature already exists below' - } + disabledReason={shouldDisableInsertSurvey(nextNode) && 'Survey already exists below'} > - {hasEarlyAccessFeatures ? 'View' : 'Create'} early access feature + {hasSurveys ? 'View' : 'Create'} survey } - onClick={() => { + onClick={(e) => { + // prevent expanding the node if it isn't expanded + e.stopPropagation() + if (nextNode?.type.name !== NotebookNodeType.FeatureFlagCodeExample) { insertAfter(buildCodeExampleContent(id)) } @@ -107,7 +143,10 @@ const Component = (props: NotebookNodeViewProps): JS Show implementation { + onClick={(e) => { + // prevent expanding the node if it isn't expanded + e.stopPropagation() + if (nextNode?.type.name !== NotebookNodeType.RecordingPlaylist) { insertAfter(buildPlaylistContent(recordingFilterForFlag)) } diff --git a/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlagLogic.tsx b/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlagLogic.tsx index b597575854e69..aa0ed54d437d7 100644 --- a/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlagLogic.tsx +++ b/frontend/src/scenes/notebooks/Nodes/NotebookNodeFlagLogic.tsx @@ -5,6 +5,7 @@ import { buildEarlyAccessFeatureContent } from './NotebookNodeEarlyAccessFeature import { NotebookNodeType } from '~/types' import type { notebookNodeFlagLogicType } from './NotebookNodeFlagLogicType' +import { buildSurveyContent } from './NotebookNodeSurvey' export type NotebookNodeFlagLogicProps = { id: FeatureFlagLogicProps['id'] @@ -17,13 +18,16 @@ export const notebookNodeFlagLogic = kea([ key(({ id }) => id), connect((props: NotebookNodeFlagLogicProps) => ({ - actions: [featureFlagLogic({ id: props.id }), ['createEarlyAccessFeatureSuccess']], - values: [featureFlagLogic({ id: props.id }), ['featureFlag', 'hasEarlyAccessFeatures']], + actions: [featureFlagLogic({ id: props.id }), ['createEarlyAccessFeatureSuccess', 'createSurveySuccess']], + values: [featureFlagLogic({ id: props.id }), ['featureFlag', 'hasEarlyAccessFeatures', 'hasSurveys']], })), listeners(({ props }) => ({ createEarlyAccessFeatureSuccess: async ({ newEarlyAccessFeature }) => { props.insertAfter(buildEarlyAccessFeatureContent(newEarlyAccessFeature.id)) }, + createSurveySuccess: async ({ newSurvey }) => { + props.insertAfter(buildSurveyContent(newSurvey.id)) + }, })), selectors({ shouldDisableInsertEarlyAccessFeature: [ @@ -39,5 +43,18 @@ export const notebookNodeFlagLogic = kea([ ) }, ], + shouldDisableInsertSurvey: [ + (s) => [s.featureFlag, s.hasSurveys], + (featureFlag, hasSurveys) => + (nextNode: Node | null): boolean => { + return ( + (nextNode?.type.name === NotebookNodeType.Survey && + hasSurveys && + featureFlag.surveys && + nextNode?.attrs.id === featureFlag.surveys[0].id) || + false + ) + }, + ], }), ]) diff --git a/frontend/src/scenes/notebooks/Nodes/NotebookNodeSurvey.tsx b/frontend/src/scenes/notebooks/Nodes/NotebookNodeSurvey.tsx index 6ae601eeeab8b..d0b0cf87742b5 100644 --- a/frontend/src/scenes/notebooks/Nodes/NotebookNodeSurvey.tsx +++ b/frontend/src/scenes/notebooks/Nodes/NotebookNodeSurvey.tsx @@ -6,7 +6,7 @@ import { LemonButton, LemonDivider } from '@posthog/lemon-ui' import { urls } from 'scenes/urls' import { LemonSkeleton } from 'lib/lemon-ui/LemonSkeleton' import { notebookNodeLogic } from './notebookNodeLogic' -import { NotebookNodeViewProps } from '../Notebook/utils' +import { JSONContent, NotebookNodeViewProps } from '../Notebook/utils' import { buildFlagContent } from './NotebookNodeFlag' import { defaultSurveyAppearance, surveyLogic } from 'scenes/surveys/surveyLogic' import { StatusTag } from 'scenes/surveys/Surveys' @@ -140,3 +140,10 @@ export const NotebookNodeSurvey = createPostHogWidgetNode([ if (surveyId === 'new') { return null } + const createdAt = (survey as Survey).created_at const surveysShownHogqlQuery = `select count(distinct person.id) as 'survey shown' from events where event == 'survey shown' and properties.$survey_id == '${surveyId}'` const surveysDismissedHogqlQuery = `select count(distinct person.id) as 'survey dismissed' from events where event == 'survey dismissed' and properties.$survey_id == '${surveyId}'` return { surveysShown: { kind: NodeKind.DataTableNode, - source: { kind: NodeKind.HogQLQuery, query: surveysShownHogqlQuery }, + source: { + kind: NodeKind.HogQLQuery, + query: surveysShownHogqlQuery, + filters: { dateRange: { date_from: dayjs(createdAt).format('YYYY-MM-DD') } }, + }, + showTimings: false, }, surveysDismissed: { kind: NodeKind.DataTableNode, - source: { kind: NodeKind.HogQLQuery, query: surveysDismissedHogqlQuery }, + source: { + kind: NodeKind.HogQLQuery, + query: surveysDismissedHogqlQuery, + filters: { dateRange: { date_from: dayjs(createdAt).format('YYYY-MM-DD') } }, + }, + showTimings: false, }, } }, @@ -304,6 +315,11 @@ export const surveyLogic = kea([ surveyMultipleChoiceQuery: [ (s) => [s.survey], (survey): DataTableNode | null => { + if (survey.id === 'new') { + return null + } + const createdAt = (survey as Survey).created_at + const singleChoiceQuery = `select count(), properties.$survey_response as choice from events where event == 'survey sent' and properties.$survey_id == '${survey.id}' group by choice order by count() desc` const multipleChoiceQuery = `select count(), arrayJoin(JSONExtractArrayRaw(properties, '$survey_response')) as choice from events where event == 'survey sent' and properties.$survey_id == '${survey.id}' group by choice order by count() desc` return { @@ -314,7 +330,13 @@ export const surveyLogic = kea([ survey.questions[0].type === SurveyQuestionType.SingleChoice ? singleChoiceQuery : multipleChoiceQuery, + filters: { + dateRange: { + date_from: dayjs(createdAt).format('YYYY-MM-DD'), + }, + }, }, + showTimings: false, } }, ], diff --git a/frontend/src/types.ts b/frontend/src/types.ts index cb40bbbaf4e09..187bcba34863d 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -2191,6 +2191,7 @@ export interface FeatureFlagType extends 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 delta 28294 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

#il;!uZU)N_K8YqnZl%pg(0<=i2s z=gk{+%Z__ST+?42Z=GpMZWBZyN3wJ1IC$M!#z@qk{hinuSu@5DXq2h zh)Lkn_z-{N0WRUP1A3I&zH{oJ^~Rulfd3>o63zZJZVGWgl=bV2&8IITxW`eK^6a>prFi+X#i_)+GffQsop$W*`<0wl5n1oS0Ub-*I$(JD_io4o8Z zeM&2{v(4FqUr~5BvdOv(@0)vpCIl$3LR=oRe=JD>3InE!iEvT=)C0zyD_UDx&VXd`a^g>Zuw267 zB5vdA(m-XMnN~gpUUdMl&m^iMUu=YctheHvx!05Vpz| z$*;no1!-wfZfXFQ@}&Huledlh?{6+oh>3~0b{P%BFQXy)W7Jsrl@Gz%k~bo^fH*8r z+GEDxlxn~bd0`eWg|DM$PY`vfpsP>z_WD-zKm<#`+2JEGb$cgRPSm^t3s1vi%nKs% z7vfoM;L^9r77QX=d<7U?fBjbUCGT&+OdM`ot0MUp3DF}ErjBlHx^9lLu}*qV z8ha7eiSsDY(fN(q+-PR=IcFc$GvYw%tSZ(5^z1T7BC53NNr(#_9!A5)6$Bih8Yysa z3UOLdk*5G%N^4*`DUExbvN&3u2~6a0@Jvif%27Cz)e_v(G%K@jeH-94I5M)L6NBbJ zT?Q0sQ7vGE=oBn@D8{Cy!t%F?6#s2n#N(>jvmaG0pNrgzuZTA*o0n?qNQwfqEdl|Y zBo~2(3Xq4|AaCa=P>X_wq|bZ8Z|xl8fXjhcho5>%5Jj^Rv{a+e}?a3f}nFaWUpx(1d(|nW&&3 zEpYjMt6qAn4&?K&Z8%zO|0E!%RvdxqjUYMa1SH~;mQ@d(_WolU0JO8~h}F%T-li2G zV3!Bn(6-Kxf4t((6?A0&{{5S#e-tGzBXb=1jt3ZQQ%R3{W&+tQ3;U7J6Y#49CoqMK zY~D?ky2lI!PfiAHPDvdIJgai$R(Px|X;l+eQgR7Sjq2@c1 zsZ>~5pI)(fdbrd%RB5q-PDF&zu4z|Z=uO+vw+$@V>U(*drDf$$Y*jNdGj$gTtg<7& z!>?p)=PSCoY-#D(LsemPp|upp(P~8z!LlvrNPNj}Q1v$h2FIJ=+6K55(4% zt{$wVDiH?_p$~S0y&OnnX!X)!koVZ=GeC{p1DTqX_!avdyFm=-L14BT_)b75Nr&8C z{c{__8vNRrZ{IR9G8$bHKv2e5Lst=7t%S64WnvGMTpd=Rq)K%h zZQdvdJW7RgS`f=?JxCCcbLN6&73*lVcWWS(!f1dj19zKOp*EC;Zczj9+`yn8J0cHe z70`A(=TlN`u=E~vbm9{N=u``flnzQ$^U%|^q!Pciz0uk%N@hj|Jcv6}l0)BHwO_Nb z5v<*uWT{z$x)ljBz*Pji=xyEI4M2{!l4tGN45(??9|7jvmL=%m&FseAN)^gj29Qly zl?I7@=vQEq?U#KpC$S{`7IL8O7`892pe8H6X?Zw_O}Zh<4m z)U3cgMbX3W$Av{iCV;}=TfUi8H5Bg%tdGUTUxa{`07OE!egD2u@j4a|*^|h+O?nU- z|Hov9`b8JjnXhKodGeAIXB3!a0EMava#COf^ur~`H_i##0(|t{|l6C<|CIP@|lbzH%?m(HOJUymmfeI8qJXN`^{cT{4vZ&ATl{b`& zU->m%=)Q~7uWH3TBxa5GG|Pz#^|3U(Y>^GW5+<8$V z$jsAJRDC0~H($xJ`B%xkd}-l_s;WVk!!jTsqkxai=38U}n9S9Ix9LaSL7_BwRhWT7 z)O9~U6=%vN9CdN!%h8@<*4R&Xt0c51@8tN(rD*GhZ%~s8ktI6qC^Hbq+=kA5{U+i*d z#%EtEuDuJ(PVeP8^1DlhWEJJ~x7?H)AU`MiSgbPDsZJk+U}kHg>3ys$j1k?4l%tZ9 z)F8DS$SxXeXVU`;v-wH|(5VQ9ue2&+rA+uE!S=@=^x!9K0O9d3&n58Rh%N(73H>a9 xDut^2Uji%+V5GaCYklGzVr& Dict: return MinimalEarlyAccessFeatureSerializer(feature_flag.features, many=True).data + def get_surveys(self, feature_flag: FeatureFlag) -> Dict: + from posthog.api.survey import SurveyAPISerializer + + return SurveyAPISerializer(feature_flag.surveys_linked_flag, many=True).data # type: ignore + # ignoring type because mypy doesn't know about the surveys_linked_flag `related_name` relationship + def get_rollout_percentage(self, feature_flag: FeatureFlag) -> Optional[int]: if self.get_is_simple_flag(feature_flag): return feature_flag.conditions[0].get("rollout_percentage") @@ -343,7 +350,9 @@ def get_queryset(self) -> QuerySet: .prefetch_related("experiment_set") .prefetch_related("features") .prefetch_related("analytics_dashboards") + .prefetch_related("surveys_linked_flag") ) + survey_targeting_flags = Survey.objects.filter(team=self.team, targeting_flag__isnull=False).values_list( "targeting_flag_id", flat=True ) @@ -434,6 +443,7 @@ def my_flags(self, request: request.Request, **kwargs): .prefetch_related("experiment_set") .prefetch_related("features") .prefetch_related("analytics_dashboards") + .prefetch_related("surveys_linked_flag") .select_related("created_by") .order_by("-created_at") ) diff --git a/posthog/api/test/test_feature_flag.py b/posthog/api/test/test_feature_flag.py index 9efebf97b878b..b0d6f73c87ebb 100644 --- a/posthog/api/test/test_feature_flag.py +++ b/posthog/api/test/test_feature_flag.py @@ -939,7 +939,7 @@ def test_my_flags_is_not_nplus1(self) -> None: format="json", ).json() - with self.assertNumQueries(9): + with self.assertNumQueries(10): response = self.client.get(f"/api/projects/{self.team.id}/feature_flags/my_flags") self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -950,7 +950,7 @@ def test_my_flags_is_not_nplus1(self) -> None: format="json", ).json() - with self.assertNumQueries(9): + with self.assertNumQueries(10): response = self.client.get(f"/api/projects/{self.team.id}/feature_flags/my_flags") self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/posthog/api/test/test_survey.py b/posthog/api/test/test_survey.py index 45e13024c1a0b..f393e5cec4379 100644 --- a/posthog/api/test/test_survey.py +++ b/posthog/api/test/test_survey.py @@ -77,6 +77,80 @@ def test_can_create_survey_with_linked_flag_and_targeting(self): {"type": "open", "question": "What would you want to improve from notebooks?"} ] + def test_used_in_survey_is_populated_correctly_for_feature_flag_list(self) -> None: + self.maxDiff = None + + ff_key = "notebooks" + notebooks_flag = FeatureFlag.objects.create(team=self.team, key=ff_key, created_by=self.user) + + response = self.client.post( + f"/api/projects/{self.team.id}/surveys/", + data={ + "name": "Notebooks power users survey", + "type": "popover", + "questions": [{"type": "open", "question": "What would you want to improve from notebooks?"}], + "linked_flag_id": notebooks_flag.id, + "targeting_flag_filters": { + "groups": [ + { + "variant": None, + "rollout_percentage": None, + "properties": [ + {"key": "billing_plan", "value": ["cloud"], "operator": "exact", "type": "person"} + ], + } + ] + }, + "conditions": {"url": "https://app.posthog.com/notebooks"}, + }, + format="json", + ) + + response_data = response.json() + assert response.status_code == status.HTTP_201_CREATED, response_data + assert response_data["linked_flag"]["id"] == notebooks_flag.id + assert FeatureFlag.objects.filter(id=response_data["targeting_flag"]["id"]).exists() + + created_survey1 = response.json()["id"] + + response = self.client.post( + f"/api/projects/{self.team.id}/surveys/", + data={ + "name": "Notebooks random survey", + "type": "popover", + "questions": [{"type": "open", "question": "What would you want to improve from notebooks?"}], + "linked_flag_id": notebooks_flag.id, + "conditions": {"url": "https://app.posthog.com/notebooks"}, + }, + format="json", + ) + + response_data = response.json() + assert response.status_code == status.HTTP_201_CREATED, response_data + assert response_data["linked_flag"]["id"] == notebooks_flag.id + assert response_data["targeting_flag"] is None + + created_survey2 = response.json()["id"] + + # add another random feature flag + self.client.post( + f"/api/projects/{self.team.id}/feature_flags/", + data={"name": f"flag", "key": f"flag_0", "filters": {"groups": [{"rollout_percentage": 5}]}}, + format="json", + ).json() + + with self.assertNumQueries(12): + response = self.client.get(f"/api/projects/{self.team.id}/feature_flags") + self.assertEqual(response.status_code, status.HTTP_200_OK) + result = response.json() + + self.assertEqual(result["count"], 2) + + self.assertEqual( + [(res["key"], [survey["id"] for survey in res["surveys"]]) for res in result["results"]], + [("flag_0", []), (ff_key, [created_survey1, created_survey2])], + ) + def test_updating_survey_with_targeting_creates_or_updates_targeting_flag(self): survey_with_targeting = self.client.post( f"/api/projects/{self.team.id}/surveys/", From 3b1f9192a86c5129ea3b50df9a22b37d915140f1 Mon Sep 17 00:00:00 2001 From: Brett Hoerner Date: Wed, 13 Sep 2023 08:49:09 -0500 Subject: [PATCH 06/11] feat(plugin-server): add KAFKA_CONSUMPTION_RDKAFKA_COOPERATIVE_REBALANCE which defaults to true, fix metrics for eager (#17406) * fix(plugin-server): fix and test countPartitionsPerTopic * feat(plugin-server): add KAFKA_CONSUMPTION_RDKAFKA_COOPERATIVE_REBALANCE which defaults to true, fix metrics for eager --- plugin-server/src/config/config.ts | 1 + plugin-server/src/kafka/batch-consumer.ts | 6 +++-- plugin-server/src/kafka/consumer.ts | 26 ++++++++++++++----- .../src/main/ingestion-queues/kafka-queue.ts | 1 + plugin-server/src/types.ts | 1 + .../main/ingestion-queues/kafka-queue.test.ts | 22 ++++++++++++++++ 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/plugin-server/src/config/config.ts b/plugin-server/src/config/config.ts index e0d9e3c49ad13..9cecab54d8c4a 100644 --- a/plugin-server/src/config/config.ts +++ b/plugin-server/src/config/config.ts @@ -44,6 +44,7 @@ export function getDefaultConfig(): PluginsServerConfig { KAFKA_SASL_PASSWORD: undefined, KAFKA_CLIENT_RACK: undefined, KAFKA_CONSUMPTION_USE_RDKAFKA: false, // Transitional setting, ignored for consumers that only support one library + KAFKA_CONSUMPTION_RDKAFKA_COOPERATIVE_REBALANCE: true, // If true, use the cooperative rebalance strategy, otherwise uses the default ('range,roundrobin') KAFKA_CONSUMPTION_MAX_BYTES: 10_485_760, // Default value for kafkajs KAFKA_CONSUMPTION_MAX_BYTES_PER_PARTITION: 1_048_576, // Default value for kafkajs, must be bigger than message size KAFKA_CONSUMPTION_MAX_WAIT_MS: 1_000, // Down from the 5s default for kafkajs diff --git a/plugin-server/src/kafka/batch-consumer.ts b/plugin-server/src/kafka/batch-consumer.ts index 3acae7a88b57d..03c9e2de6db37 100644 --- a/plugin-server/src/kafka/batch-consumer.ts +++ b/plugin-server/src/kafka/batch-consumer.ts @@ -33,6 +33,7 @@ export const startBatchConsumer = async ({ topicCreationTimeoutMs, eachBatch, autoCommit = true, + cooperativeRebalance = true, queuedMinMessages = 100000, }: { connectionConfig: GlobalConfig @@ -48,6 +49,7 @@ export const startBatchConsumer = async ({ topicCreationTimeoutMs: number eachBatch: (messages: Message[]) => Promise autoCommit?: boolean + cooperativeRebalance?: boolean queuedMinMessages?: number }): Promise => { // Starts consuming from `topic` in batches of `fetchBatchSize` messages, @@ -113,12 +115,12 @@ export const startBatchConsumer = async ({ // https://www.confluent.io/en-gb/blog/incremental-cooperative-rebalancing-in-kafka/ // for details on the advantages of this rebalancing strategy as well as // how it works. - 'partition.assignment.strategy': 'cooperative-sticky', + 'partition.assignment.strategy': cooperativeRebalance ? 'cooperative-sticky' : 'range,roundrobin', rebalance_cb: true, offset_commit_cb: true, }) - instrumentConsumerMetrics(consumer, groupId) + instrumentConsumerMetrics(consumer, groupId, cooperativeRebalance) let isShuttingDown = false let lastLoopTime = Date.now() diff --git a/plugin-server/src/kafka/consumer.ts b/plugin-server/src/kafka/consumer.ts index 32a6594009f7a..62b8e951ebc9f 100644 --- a/plugin-server/src/kafka/consumer.ts +++ b/plugin-server/src/kafka/consumer.ts @@ -59,17 +59,20 @@ export const createKafkaConsumer = async (config: ConsumerGlobalConfig) => { export function countPartitionsPerTopic(assignments: Assignment[]): Map { const partitionsPerTopic = new Map() for (const assignment of assignments) { - if (assignment.topic in partitionsPerTopic) { + if (partitionsPerTopic.has(assignment.topic)) { partitionsPerTopic.set(assignment.topic, partitionsPerTopic.get(assignment.topic) + 1) } else { partitionsPerTopic.set(assignment.topic, 1) } } - return partitionsPerTopic } -export const instrumentConsumerMetrics = (consumer: RdKafkaConsumer, groupId: string) => { +export const instrumentConsumerMetrics = ( + consumer: RdKafkaConsumer, + groupId: string, + cooperativeRebalance: boolean +) => { // For each message consumed, we record the latest timestamp processed for // each partition assigned to this consumer group member. This consumer // should only provide metrics for the partitions that are assigned to it, @@ -94,6 +97,7 @@ export const instrumentConsumerMetrics = (consumer: RdKafkaConsumer, groupId: st // // TODO: add other relevant metrics here // TODO: expose the internal librdkafka metrics as well. + const strategyString = cooperativeRebalance ? 'cooperative' : 'eager' consumer.on('rebalance', (error: LibrdKafkaError, assignments: TopicPartition[]) => { /** * see https://github.com/Blizzard/node-rdkafka#rebalancing errors are used to signal @@ -103,14 +107,22 @@ export const instrumentConsumerMetrics = (consumer: RdKafkaConsumer, groupId: st * And when the balancing is completed the new assignments are received with ERR__ASSIGN_PARTITIONS */ if (error.code === CODES.ERRORS.ERR__ASSIGN_PARTITIONS) { - status.info('📝️', 'librdkafka rebalance, partitions assigned', { assignments }) + status.info('📝️', `librdkafka ${strategyString} rebalance, partitions assigned`, { assignments }) for (const [topic, count] of countPartitionsPerTopic(assignments)) { - kafkaRebalancePartitionCount.labels({ topic: topic }).inc(count) + if (cooperativeRebalance) { + kafkaRebalancePartitionCount.labels({ topic: topic }).inc(count) + } else { + kafkaRebalancePartitionCount.labels({ topic: topic }).set(count) + } } } else if (error.code === CODES.ERRORS.ERR__REVOKE_PARTITIONS) { - status.info('📝️', 'librdkafka rebalance started, partitions revoked', { assignments }) + status.info('📝️', `librdkafka ${strategyString} rebalance started, partitions revoked`, { assignments }) for (const [topic, count] of countPartitionsPerTopic(assignments)) { - kafkaRebalancePartitionCount.labels({ topic: topic }).dec(count) + if (cooperativeRebalance) { + kafkaRebalancePartitionCount.labels({ topic: topic }).dec(count) + } else { + kafkaRebalancePartitionCount.labels({ topic: topic }).set(count) + } } } else { // We had a "real" error diff --git a/plugin-server/src/main/ingestion-queues/kafka-queue.ts b/plugin-server/src/main/ingestion-queues/kafka-queue.ts index da51173e0507f..7989efd4b356a 100644 --- a/plugin-server/src/main/ingestion-queues/kafka-queue.ts +++ b/plugin-server/src/main/ingestion-queues/kafka-queue.ts @@ -255,6 +255,7 @@ export class IngestionConsumer { consumerMaxWaitMs: this.pluginsServer.KAFKA_CONSUMPTION_MAX_WAIT_MS, fetchBatchSize: 500, topicCreationTimeoutMs: this.pluginsServer.KAFKA_TOPIC_CREATION_TIMEOUT_MS, + cooperativeRebalance: this.pluginsServer.KAFKA_CONSUMPTION_RDKAFKA_COOPERATIVE_REBALANCE, eachBatch: (payload) => this.eachBatchConsumer(payload), }) this.consumerReady = true diff --git a/plugin-server/src/types.ts b/plugin-server/src/types.ts index a6bd8fe69ce17..9a0e0f4ebfe52 100644 --- a/plugin-server/src/types.ts +++ b/plugin-server/src/types.ts @@ -129,6 +129,7 @@ export interface PluginsServerConfig { KAFKA_SASL_PASSWORD: string | undefined KAFKA_CLIENT_RACK: string | undefined KAFKA_CONSUMPTION_USE_RDKAFKA: boolean + KAFKA_CONSUMPTION_RDKAFKA_COOPERATIVE_REBALANCE: boolean KAFKA_CONSUMPTION_MAX_BYTES: number KAFKA_CONSUMPTION_MAX_BYTES_PER_PARTITION: number KAFKA_CONSUMPTION_MAX_WAIT_MS: number // fetch.wait.max.ms rdkafka parameter diff --git a/plugin-server/tests/main/ingestion-queues/kafka-queue.test.ts b/plugin-server/tests/main/ingestion-queues/kafka-queue.test.ts index c0912a2ca499b..31dc19d000f3b 100644 --- a/plugin-server/tests/main/ingestion-queues/kafka-queue.test.ts +++ b/plugin-server/tests/main/ingestion-queues/kafka-queue.test.ts @@ -1,4 +1,7 @@ +import { Assignment } from 'node-rdkafka-acosom' + import { KAFKA_EVENTS_PLUGIN_INGESTION } from '../../../src/config/kafka-topics' +import { countPartitionsPerTopic } from '../../../src/kafka/consumer' import { ServerInstance, startPluginsServer } from '../../../src/main/pluginsServer' import { LogLevel, PluginsServerConfig } from '../../../src/types' import { Hub } from '../../../src/types' @@ -79,3 +82,22 @@ describe.skip('IngestionConsumer', () => { expect(bufferCalls.length).toEqual(1) }) }) + +describe('countPartitionsPerTopic', () => { + it('should correctly count the number of partitions per topic', () => { + const assignments: Assignment[] = [ + { topic: 'topic1', partition: 0 }, + { topic: 'topic1', partition: 1 }, + { topic: 'topic2', partition: 0 }, + { topic: 'topic2', partition: 1 }, + { topic: 'topic2', partition: 2 }, + { topic: 'topic3', partition: 0 }, + ] + + const result = countPartitionsPerTopic(assignments) + expect(result.get('topic1')).toBe(2) + expect(result.get('topic2')).toBe(3) + expect(result.get('topic3')).toBe(1) + expect(result.size).toBe(3) + }) +}) From a75f09d30c256b34d8297c51c7790de39e17a18d Mon Sep 17 00:00:00 2001 From: Tiina Turban Date: Wed, 13 Sep 2023 16:01:47 +0200 Subject: [PATCH 07/11] chore: refactor webhooks groupIntoBatches (#17395) --- .../batch-processing/each-batch-onevent.ts | 15 ++++--- .../batch-processing/each-batch-webhooks.ts | 34 +++++++++++----- plugin-server/src/utils/utils.ts | 8 ---- .../main/ingestion-queues/each-batch.test.ts | 39 +++---------------- 4 files changed, 41 insertions(+), 55 deletions(-) diff --git a/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-onevent.ts b/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-onevent.ts index a97d034778ac4..4d12925f0ce6b 100644 --- a/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-onevent.ts +++ b/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-onevent.ts @@ -4,20 +4,18 @@ import { EachBatchPayload, KafkaMessage } from 'kafkajs' import { RawClickHouseEvent } from '../../../types' import { convertToIngestionEvent } from '../../../utils/event' import { status } from '../../../utils/status' -import { groupIntoBatches } from '../../../utils/utils' import { runInstrumentedFunction } from '../../utils' import { KafkaJSIngestionConsumer } from '../kafka-queue' import { eventDroppedCounter, latestOffsetTimestampGauge } from '../metrics' +import { eachBatchHandlerHelper } from './each-batch-webhooks' // Must require as `tsc` strips unused `import` statements and just requiring this seems to init some globals require('@sentry/tracing') export async function eachMessageAppsOnEventHandlers( - message: KafkaMessage, + clickHouseEvent: RawClickHouseEvent, queue: KafkaJSIngestionConsumer ): Promise { - const clickHouseEvent = JSON.parse(message.value!.toString()) as RawClickHouseEvent - const pluginConfigs = queue.pluginsServer.pluginConfigsPerTeam.get(clickHouseEvent.team_id) if (pluginConfigs) { // Elements parsing can be extremely slow, so we skip it for some plugins @@ -50,7 +48,14 @@ export async function eachBatchAppsOnEventHandlers( payload: EachBatchPayload, queue: KafkaJSIngestionConsumer ): Promise { - await eachBatch(payload, queue, eachMessageAppsOnEventHandlers, groupIntoBatches, 'async_handlers_on_event') + await eachBatchHandlerHelper( + payload, + (teamId) => queue.pluginsServer.pluginConfigsPerTeam.has(teamId), + (event) => eachMessageAppsOnEventHandlers(event, queue), + queue.pluginsServer.statsd, + queue.pluginsServer.WORKER_CONCURRENCY * queue.pluginsServer.TASKS_PER_WORKER, + 'on_event' + ) } export async function eachBatch( diff --git a/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-webhooks.ts b/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-webhooks.ts index 427297a613b1b..fb671f0cd9633 100644 --- a/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-webhooks.ts +++ b/plugin-server/src/main/ingestion-queues/batch-processing/each-batch-webhooks.ts @@ -17,10 +17,10 @@ import { eventDroppedCounter, latestOffsetTimestampGauge } from '../metrics' require('@sentry/tracing') // exporting only for testing -export function groupIntoBatchesWebhooks( +export function groupIntoBatchesByUsage( array: KafkaMessage[], batchSize: number, - actionMatcher: ActionMatcher + shouldProcess: (teamId: number) => boolean ): { eventBatch: RawClickHouseEvent[]; lastOffset: string; lastTimestamp: string }[] { // Most events will not trigger a webhook call, so we want to filter them out as soon as possible // to achieve the highest effective concurrency when executing the actual HTTP calls. @@ -32,7 +32,7 @@ export function groupIntoBatchesWebhooks( let currentCount = 0 array.forEach((message, index) => { const clickHouseEvent = JSON.parse(message.value!.toString()) as RawClickHouseEvent - if (actionMatcher.hasWebhooks(clickHouseEvent.team_id)) { + if (shouldProcess(clickHouseEvent.team_id)) { currentBatch.push(clickHouseEvent) currentCount++ } else { @@ -58,18 +58,36 @@ export async function eachBatchWebhooksHandlers( hookCannon: HookCommander, statsd: StatsD | undefined, concurrency: number +): Promise { + await eachBatchHandlerHelper( + payload, + (teamId) => actionMatcher.hasWebhooks(teamId), + (event) => eachMessageWebhooksHandlers(event, actionMatcher, hookCannon, statsd), + statsd, + concurrency, + 'webhooks' + ) +} + +export async function eachBatchHandlerHelper( + payload: EachBatchPayload, + shouldProcess: (teamId: number) => boolean, + eachMessageHandler: (event: RawClickHouseEvent) => Promise, + statsd: StatsD | undefined, + concurrency: number, + stats_key: string ): Promise { // similar to eachBatch function in each-batch.ts, but without the dependency on the KafkaJSIngestionConsumer // & handling the different batching return type - const key = 'async_handlers_webhooks' + const key = `async_handlers_${stats_key}` const batchStartTimer = new Date() const loggingKey = `each_batch_${key}` const { batch, resolveOffset, heartbeat, commitOffsetsIfNecessary, isRunning, isStale }: EachBatchPayload = payload - const transaction = Sentry.startTransaction({ name: `eachBatchWebhooks` }) + const transaction = Sentry.startTransaction({ name: `eachBatch${stats_key}` }) try { - const batchesWithOffsets = groupIntoBatchesWebhooks(batch.messages, concurrency, actionMatcher) + const batchesWithOffsets = groupIntoBatchesByUsage(batch.messages, concurrency, shouldProcess) statsd?.histogram('ingest_event_batching.input_length', batch.messages.length, { key: key }) statsd?.histogram('ingest_event_batching.batch_count', batchesWithOffsets.length, { key: key }) @@ -88,9 +106,7 @@ export async function eachBatchWebhooksHandlers( } await Promise.all( - eventBatch.map((event: RawClickHouseEvent) => - eachMessageWebhooksHandlers(event, actionMatcher, hookCannon, statsd).finally(() => heartbeat()) - ) + eventBatch.map((event: RawClickHouseEvent) => eachMessageHandler(event).finally(() => heartbeat())) ) resolveOffset(lastOffset) diff --git a/plugin-server/src/utils/utils.ts b/plugin-server/src/utils/utils.ts index 69c56640bf886..aace016721449 100644 --- a/plugin-server/src/utils/utils.ts +++ b/plugin-server/src/utils/utils.ts @@ -312,14 +312,6 @@ export function escapeClickHouseString(string: string): string { return string.replace(/\\/g, '\\\\').replace(/'/g, "\\'") } -export function groupIntoBatches(array: T[], batchSize: number): T[][] { - const batches = [] - for (let i = 0; i < array.length; i += batchSize) { - batches.push(array.slice(i, i + batchSize)) - } - return batches -} - /** Standardize JS code used internally to form without extraneous indentation. Template literal function. */ export function code(strings: TemplateStringsArray): string { const stringsConcat = strings.join('…') diff --git a/plugin-server/tests/main/ingestion-queues/each-batch.test.ts b/plugin-server/tests/main/ingestion-queues/each-batch.test.ts index 617978884fe29..0580f53d2724b 100644 --- a/plugin-server/tests/main/ingestion-queues/each-batch.test.ts +++ b/plugin-server/tests/main/ingestion-queues/each-batch.test.ts @@ -9,13 +9,10 @@ import { eachBatchLegacyIngestion, splitKafkaJSIngestionBatch, } from '../../../src/main/ingestion-queues/batch-processing/each-batch-ingestion-kafkajs' -import { - eachBatch, - eachBatchAppsOnEventHandlers, -} from '../../../src/main/ingestion-queues/batch-processing/each-batch-onevent' +import { eachBatchAppsOnEventHandlers } from '../../../src/main/ingestion-queues/batch-processing/each-batch-onevent' import { eachBatchWebhooksHandlers, - groupIntoBatchesWebhooks, + groupIntoBatchesByUsage, } from '../../../src/main/ingestion-queues/batch-processing/each-batch-webhooks' import { ClickHouseTimestamp, @@ -24,7 +21,6 @@ import { PostIngestionEvent, RawClickHouseEvent, } from '../../../src/types' -import { groupIntoBatches } from '../../../src/utils/utils' import { ActionManager } from '../../../src/worker/ingestion/action-manager' import { ActionMatcher } from '../../../src/worker/ingestion/action-matcher' import { HookCommander } from '../../../src/worker/ingestion/hooks' @@ -150,26 +146,6 @@ describe('eachBatchX', () => { } }) - describe('eachBatch', () => { - it('calls eachMessage with the correct arguments', async () => { - const eachMessage = jest.fn(() => Promise.resolve()) - const batch = createKafkaJSBatch(event) - await eachBatch(batch, queue, eachMessage, groupIntoBatches, 'key') - - expect(eachMessage).toHaveBeenCalledWith({ value: JSON.stringify(event) }, queue) - }) - - it('tracks metrics based on the key', async () => { - const eachMessage = jest.fn(() => Promise.resolve()) - await eachBatch(createKafkaJSBatch(event), queue, eachMessage, groupIntoBatches, 'my_key') - - expect(queue.pluginsServer.statsd.timing).toHaveBeenCalledWith( - 'kafka_queue.each_batch_my_key', - expect.any(Date) - ) - }) - }) - describe('eachBatchAppsOnEventHandlers', () => { it('calls runAppsOnEventPipeline when useful', async () => { queue.pluginsServer.pluginConfigsPerTeam.set(2, [pluginConfig39]) @@ -333,11 +309,9 @@ describe('eachBatchX', () => { kafkaTimestamp: '2020-02-23 00:10:00.00' as ClickHouseTimestamp, }, ]) - const actionManager = new ActionManager(queue.pluginsServer.postgres) - const actionMatcher = new ActionMatcher(queue.pluginsServer.postgres, actionManager) - // mock hasWebhooks 10 calls, 1,3,10 should return false, others true - actionMatcher.hasWebhooks = jest.fn((teamId) => teamId !== 1 && teamId !== 3 && teamId !== 10) - const result = groupIntoBatchesWebhooks(batch.batch.messages, 5, actionMatcher) + // teamIDs 1,3,10 should return false, others true + const toProcess = jest.fn((teamId) => teamId !== 1 && teamId !== 3 && teamId !== 10) + const result = groupIntoBatchesByUsage(batch.batch.messages, 5, toProcess) expect(result).toEqual([ { eventBatch: expect.arrayContaining([ @@ -375,8 +349,7 @@ describe('eachBatchX', () => { ]) // make sure that if the last message would be a new batch and if it's going to be excluded we // still get the last batch as empty with the right offsite and timestamp - actionMatcher.hasWebhooks = jest.fn((teamId) => teamId !== 1 && teamId !== 3 && teamId !== 10) - const result2 = groupIntoBatchesWebhooks(batch.batch.messages, 7, actionMatcher) + const result2 = groupIntoBatchesByUsage(batch.batch.messages, 7, toProcess) expect(result2).toEqual([ { eventBatch: expect.arrayContaining([ From 2e1a48bcddeb689df722254971c11eccc5f9a428 Mon Sep 17 00:00:00 2001 From: danielxnj <115043334+danielxnj@users.noreply.github.com> Date: Wed, 13 Sep 2023 10:11:07 -0400 Subject: [PATCH 08/11] chore: Update base postgres to version 15 (#17159) * Update base postgres to version 15 * Pin pg12 for hobby installations * Update docker-compose.hobby.yml Co-authored-by: Xavier Vello --------- Co-authored-by: Xavier Vello --- docker-compose.hobby.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker-compose.hobby.yml b/docker-compose.hobby.yml index cc61b627e0a0c..bf63efa21e0b2 100644 --- a/docker-compose.hobby.yml +++ b/docker-compose.hobby.yml @@ -13,8 +13,11 @@ services: extends: file: docker-compose.base.yml service: db + # Pin to postgres 12 until we have a process for pg_upgrade to postgres 15 for exsisting installations + image: ${DOCKER_REGISTRY_PREFIX:-}postgres:12-alpine volumes: - postgres-data:/var/lib/postgresql/data + redis: extends: file: docker-compose.base.yml From 239173c904ed15fd2c337f15b2159faa1dbcf7c2 Mon Sep 17 00:00:00 2001 From: Ben White Date: Wed, 13 Sep 2023 16:36:01 +0200 Subject: [PATCH 09/11] chore: Update rrweb (#17382) --- package.json | 4 ++-- pnpm-lock.yaml | 36 ++++++++++++++++++------------------ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 7626fd830faa6..684b66f89332d 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "@monaco-editor/react": "4.4.6", "@posthog/plugin-scaffold": "^1.3.2", "@react-hook/size": "^2.1.2", - "@rrweb/types": "^2.0.0-alpha.9", + "@rrweb/types": "^2.0.0-alpha.11", "@sentry/react": "7.22.0", "@testing-library/dom": ">=7.21.4", "@tiptap/core": "^2.1.0-rc.12", @@ -154,7 +154,7 @@ "react-virtualized": "^9.22.5", "require-from-string": "^2.0.2", "resize-observer-polyfill": "^1.5.1", - "rrweb": "^2.0.0-alpha.9", + "rrweb": "^2.0.0-alpha.11", "sass": "^1.26.2", "use-debounce": "^9.0.3", "use-resize-observer": "^8.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c78c38396aa16..3ce1f9a71b1d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,8 +39,8 @@ dependencies: specifier: ^2.1.2 version: 2.1.2(react@16.14.0) '@rrweb/types': - specifier: ^2.0.0-alpha.9 - version: 2.0.0-alpha.9 + specifier: ^2.0.0-alpha.11 + version: 2.0.0-alpha.11 '@sentry/react': specifier: 7.22.0 version: 7.22.0(react@16.14.0) @@ -282,8 +282,8 @@ dependencies: specifier: ^1.5.1 version: 1.5.1 rrweb: - specifier: ^2.0.0-alpha.9 - version: 2.0.0-alpha.9 + specifier: ^2.0.0-alpha.11 + version: 2.0.0-alpha.11 sass: specifier: ^1.26.2 version: 1.56.0 @@ -3928,10 +3928,10 @@ packages: type-fest: 2.19.0 dev: false - /@rrweb/types@2.0.0-alpha.9: - resolution: {integrity: sha512-yS2KghLSmSSxo6H7tHrJ6u+nWJA9zCXaKFyc79rUSX8RHHSImRqocTqJ8jz794kCIWA90rvaQayRONdHO+vB0Q==} + /@rrweb/types@2.0.0-alpha.11: + resolution: {integrity: sha512-8ccocIkT5J/bfNRQY85qR/g6p5YQFpgFO2cMt4+Ex7w31Lq0yqZBRaoYEsawQKpLrn5KOHkdn2UTUrna7WMQuA==} dependencies: - rrweb-snapshot: 2.0.0-alpha.9 + rrweb-snapshot: 2.0.0-alpha.11 dev: false /@sentry/browser@7.22.0: @@ -12993,7 +12993,7 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 /jsprim@2.0.2: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} @@ -16607,27 +16607,27 @@ packages: resolution: {integrity: sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q==} dev: false - /rrdom@2.0.0-alpha.9: - resolution: {integrity: sha512-jfaZ8tHi098P4GpPEtkOwnkucyKA5eGanAVHGPklzCqAeEq1Yx+9/y8AeOtF3yiobqKKkW8lLvFH2KrBH1CZlQ==} + /rrdom@2.0.0-alpha.11: + resolution: {integrity: sha512-U37m0t4jTz63wnVRcOQ5qFzSTrI5RdNgeXnHAha2Fmh9+1K+XuCx421a8D1wZk3WcDc2sFz/04FVdM0OD2caHg==} dependencies: - rrweb-snapshot: 2.0.0-alpha.9 + rrweb-snapshot: 2.0.0-alpha.11 dev: false - /rrweb-snapshot@2.0.0-alpha.9: - resolution: {integrity: sha512-mHg1uUE2iUf0MXLE//4r5cMynkbduwmaOEis4gC7EuqkUAC1pYoLpcYYVt9lD6dgYIF6BmK6dgLLzMpD/tTyyA==} + /rrweb-snapshot@2.0.0-alpha.11: + resolution: {integrity: sha512-N0dzeJA2VhrlSOadkKwCVmV/DuNOwBH+Lhx89hAf9PQK4lCS8AP4AaylhqUdZOYHqwVjqsYel/uZ4hN79vuLhw==} dev: false - /rrweb@2.0.0-alpha.9: - resolution: {integrity: sha512-8E2yiLY7IrFjDcVUZ7AcQtdBNFuTIsBrlCMpbyLua6X64dGRhOZ+IUDXLnAbNj5oymZgFtZu2UERG9rmV2VAng==} + /rrweb@2.0.0-alpha.11: + resolution: {integrity: sha512-vJ2gNvF+pUG9C2aaau7iSNqhWBSc4BwtUO4FpegOtDObuH4PIaxNJOlgHz82+WxKr9XPm93ER0LqmNpy0KYdKg==} dependencies: - '@rrweb/types': 2.0.0-alpha.9 + '@rrweb/types': 2.0.0-alpha.11 '@types/css-font-loading-module': 0.0.7 '@xstate/fsm': 1.6.5 base64-arraybuffer: 1.0.2 fflate: 0.4.8 mitt: 3.0.0 - rrdom: 2.0.0-alpha.9 - rrweb-snapshot: 2.0.0-alpha.9 + rrdom: 2.0.0-alpha.11 + rrweb-snapshot: 2.0.0-alpha.11 dev: false /rtl-css-js@1.16.0: From ceb38baeff3c9c452e97e59370d1929a81e25065 Mon Sep 17 00:00:00 2001 From: Marius Andra Date: Wed, 13 Sep 2023 16:46:24 +0200 Subject: [PATCH 10/11] feat(insights): upgrade lifecycle to hogql, part 2 (#17414) --- frontend/src/lib/constants.tsx | 1 + frontend/src/queries/query.ts | 9 +- frontend/src/queries/schema.json | 22 ++ frontend/src/queries/schema.ts | 6 + ...ide-Bar-Hidden-Mobile-1-chromium-linux.png | Bin 21499 -> 33084 bytes posthog/api/query.py | 19 +- posthog/hogql/placeholders.py | 2 +- posthog/hogql/property.py | 22 +- .../hogql_queries/lifecycle_hogql_query.py | 257 +++++++++++------- posthog/hogql_queries/query_date_range.py | 87 +++--- .../test/test_lifecycle_hogql_query.py | 103 +------ .../test/test_query_date_range.py | 48 +--- posthog/schema.py | 9 + 13 files changed, 295 insertions(+), 290 deletions(-) diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index c0d87142bfd6d..122f62be237a1 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -165,6 +165,7 @@ export const FEATURE_FLAGS = { SURVEY_NPS_RESULTS: 'survey-nps-results', // owner: @liyiy // owner: #team-monitoring SESSION_RECORDING_ALLOW_V1_SNAPSHOTS: 'session-recording-allow-v1-snapshots', + HOGQL_INSIGHTS: 'hogql-insights', // owner: @mariusandra } as const export type FeatureFlagKey = (typeof FEATURE_FLAGS)[keyof typeof FEATURE_FLAGS] diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index 06ff315deeb24..2621f27fa3a64 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -10,6 +10,7 @@ import { isTimeToSeeDataSessionsNode, isHogQLQuery, isInsightVizNode, + isLifecycleQuery, } from './utils' import api, { ApiMethodOptions } from 'lib/api' import { getCurrentTeamId } from 'lib/utils/logics' @@ -27,6 +28,8 @@ import { toParams } from 'lib/utils' import { queryNodeToFilter } from './nodes/InsightQuery/utils/queryNodeToFilter' import { now } from 'lib/dayjs' import { currentSessionId } from 'lib/internalMetrics' +import { featureFlagLogic } from 'lib/logic/featureFlagLogic' +import { FEATURE_FLAGS } from 'lib/constants' const EXPORT_MAX_LIMIT = 10000 @@ -104,10 +107,14 @@ export async function query( const logParams: Record = {} const startTime = performance.now() + const hogQLInsightsFlagEnabled = Boolean( + featureFlagLogic.findMounted()?.values.featureFlags?.[FEATURE_FLAGS.HOGQL_INSIGHTS] + ) + try { if (isPersonsNode(queryNode)) { response = await api.get(getPersonsEndpoint(queryNode), methodOptions) - } else if (isInsightQueryNode(queryNode)) { + } else if (isInsightQueryNode(queryNode) && !(hogQLInsightsFlagEnabled && isLifecycleQuery(queryNode))) { const filters = queryNodeToFilter(queryNode) const params = { ...filters, diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 4412d012c5efb..5bcc6f9c57460 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -1411,6 +1411,9 @@ ], "description": "Property filters for all series" }, + "response": { + "$ref": "#/definitions/LifecycleQueryResponse" + }, "samplingFactor": { "description": "Sampling rate", "type": ["number", "null"] @@ -1433,6 +1436,25 @@ "required": ["kind", "series"], "type": "object" }, + "LifecycleQueryResponse": { + "additionalProperties": false, + "properties": { + "result": { + "items": { + "type": "object" + }, + "type": "array" + }, + "timings": { + "items": { + "$ref": "#/definitions/QueryTiming" + }, + "type": "array" + } + }, + "required": ["result"], + "type": "object" + }, "LifecycleToggle": { "enum": ["new", "resurrecting", "returning", "dormant"], "type": "string" diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 1a7814cc71cb7..24a10fac1d5b8 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -440,6 +440,11 @@ export type LifecycleFilter = Omit & { toggledLifecycles?: LifecycleToggle[] } // using everything except what it inherits from FilterType +export interface LifecycleQueryResponse { + result: Record[] + timings?: QueryTiming[] +} + export interface LifecycleQuery extends InsightsQueryBase { kind: NodeKind.LifecycleQuery /** Granularity of the response. Can be one of `hour`, `day`, `week` or `month` */ @@ -448,6 +453,7 @@ export interface LifecycleQuery extends InsightsQueryBase { series: (EventsNode | ActionsNode)[] /** Properties specific to the lifecycle insight */ lifecycleFilter?: LifecycleFilter + response?: LifecycleQueryResponse } export type InsightQueryNode = diff --git a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Mobile-1-chromium-linux.png b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Mobile-1-chromium-linux.png index 9af7ece13c6b09de46e44a98023c0d1acbeb6b51..3b185216c6362ede6b3137df9665f125cdecf287 100644 GIT binary patch literal 33084 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 literal 21499 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 W9sx&H5*;q} bool: @@ -59,16 +59,30 @@ def property_to_expr(property: Union[BaseModel, PropertyGroup, Property, dict, l return ast.And(exprs=properties) elif isinstance(property, Property): pass - elif isinstance(property, PropertyGroup): - if property.type != PropertyOperatorType.AND and property.type != PropertyOperatorType.OR: + elif ( + isinstance(property, PropertyGroup) + or isinstance(property, PropertyGroupFilter) + or isinstance(property, PropertyGroupFilterValue) + ): + if ( + isinstance(property, PropertyGroup) + and property.type != PropertyOperatorType.AND + and property.type != PropertyOperatorType.OR + ): raise NotImplementedException(f'PropertyGroup of unknown type "{property.type}"') + if ( + (isinstance(property, PropertyGroupFilter) or isinstance(property, PropertyGroupFilterValue)) + and property.type != FilterLogicalOperator.AND + and property.type != FilterLogicalOperator.OR + ): + raise NotImplementedException(f'PropertyGroupFilter of unknown type "{property.type}"') if len(property.values) == 0: return ast.Constant(value=True) if len(property.values) == 1: return property_to_expr(property.values[0], team) - if property.type == PropertyOperatorType.AND: + if property.type == PropertyOperatorType.AND or property.type == FilterLogicalOperator.AND: return ast.And(exprs=[property_to_expr(p, team) for p in property.values]) else: return ast.Or(exprs=[property_to_expr(p, team) for p in property.values]) diff --git a/posthog/hogql_queries/lifecycle_hogql_query.py b/posthog/hogql_queries/lifecycle_hogql_query.py index 2df71a976d1a9..6b73034fdfcf3 100644 --- a/posthog/hogql_queries/lifecycle_hogql_query.py +++ b/posthog/hogql_queries/lifecycle_hogql_query.py @@ -1,43 +1,27 @@ -from typing import Dict, Any +from typing import Optional from django.utils.timezone import datetime from posthog.hogql import ast from posthog.hogql.parser import parse_expr, parse_select +from posthog.hogql.property import property_to_expr, action_to_expr from posthog.hogql.query import execute_hogql_query +from posthog.hogql.timings import HogQLTimings +from posthog.models import Team, Action from posthog.hogql_queries.query_date_range import QueryDateRange -from posthog.models import Team -from posthog.schema import LifecycleQuery +from posthog.schema import LifecycleQuery, ActionsNode, EventsNode, LifecycleQueryResponse -def create_time_filter(date_range: QueryDateRange) -> ast.Expr: - # don't need timezone here, as HogQL will use the project timezone automatically - # :TRICKY: We fetch all data even for the period before the graph starts up until the end of the last period - time_filter = parse_expr( - """ - (timestamp >= dateTrunc({interval}, {date_from}) - {one_interval_period}) - AND - (timestamp < dateTrunc({interval}, {date_to}) + {one_interval_period}) - """, - placeholders={ - "date_from": date_range.date_from_as_hogql, - "date_to": date_range.date_to_as_hogql, - "one_interval_period": date_range.one_interval_period_as_hogql, - "interval": date_range.interval_period_string_as_hogql, - }, - ) - - return time_filter - - -def create_events_query(date_range: QueryDateRange, event_filter: ast.Expr): - if not event_filter: - event_filter = ast.Constant(value=True) - +def create_events_query( + query_date_range: QueryDateRange, + event_filter: Optional[ast.Expr], + timings: HogQLTimings, + sampling_factor: Optional[float] = None, +): placeholders = { - "event_filter": event_filter, - "interval": date_range.interval_period_string_as_hogql, - "one_interval_period": date_range.one_interval_period_as_hogql, + "event_filter": event_filter or ast.Constant(value=True), + "interval": query_date_range.interval_period_string_as_hogql_constant(), + "one_interval_period": query_date_range.one_interval_period(), } events_query = parse_select( @@ -61,105 +45,182 @@ def create_events_query(date_range: QueryDateRange, event_filter: ast.Expr): GROUP BY person_id """, placeholders=placeholders, + timings=timings, ) - return events_query + if sampling_factor is not None and isinstance(sampling_factor, float): + sample_expr = ast.SampleExpr(sample_value=ast.RatioExpr(left=ast.Constant(value=sampling_factor))) + events_query.select_from.sample = sample_expr -def run_lifecycle_query( - team: Team, - query: LifecycleQuery, -) -> Dict[str, Any]: - now_dt = datetime.now() + return events_query - query_date_range = QueryDateRange(date_range=query.dateRange, team=team, interval=query.interval, now=now_dt) - interval = query_date_range.interval.name - one_interval_period = query_date_range.one_interval_period_as_hogql - number_interval_period = query_date_range.interval_periods_as_hogql("number") +def run_lifecycle_query(team: Team, query: LifecycleQuery) -> LifecycleQueryResponse: + now_dt = datetime.now() + timings = HogQLTimings() + + event_filter = [] + with timings.measure("date_range"): + query_date_range = QueryDateRange(date_range=query.dateRange, team=team, interval=query.interval, now=now_dt) + event_filter.append( + parse_expr( + "timestamp >= dateTrunc({interval}, {date_from}) - {one_interval}", + { + "interval": query_date_range.interval_period_string_as_hogql_constant(), + "one_interval": query_date_range.one_interval_period(), + "date_from": query_date_range.date_from_as_hogql(), + }, + timings=timings, + ) + ) + event_filter.append( + parse_expr( + "timestamp < dateTrunc({interval}, {date_to}) + {one_interval}", + { + "interval": query_date_range.interval_period_string_as_hogql_constant(), + "one_interval": query_date_range.one_interval_period(), + "date_to": query_date_range.date_to_as_hogql(), + }, + timings=timings, + ) + ) - time_filter = create_time_filter(query_date_range) - event_filter = time_filter # TODO: add all other filters + with timings.measure("properties"): + if query.properties is not None and query.properties != []: + event_filter.append(property_to_expr(query.properties, team)) + + with timings.measure("series_filters"): + for serie in query.series or []: + if isinstance(serie, ActionsNode): + action = Action.objects.get(pk=int(serie.id), team=team) + event_filter.append(action_to_expr(action)) + elif isinstance(serie, EventsNode): + if serie.event is not None: + event_filter.append( + ast.CompareOperation( + op=ast.CompareOperationOp.Eq, + left=ast.Field(chain=["event"]), + right=ast.Constant(value=str(serie.event)), + ) + ) + else: + raise ValueError(f"Invalid serie kind: {serie.kind}") + if serie.properties is not None and serie.properties != []: + event_filter.append(property_to_expr(serie.properties, team)) + + with timings.measure("test_account_filters"): + if ( + query.filterTestAccounts + and isinstance(team.test_account_filters, list) + and len(team.test_account_filters) > 0 + ): + for property in team.test_account_filters: + event_filter.append(property_to_expr(property, team)) + + if len(event_filter) == 0: + event_filter = ast.Constant(value=True) + elif len(event_filter) == 1: + event_filter = event_filter[0] + else: + event_filter = ast.And(exprs=event_filter) placeholders = { - "interval": ast.Constant(value=interval), - "one_interval_period": one_interval_period, - "number_interval_period": number_interval_period, + "interval": query_date_range.interval_period_string_as_hogql_constant(), + "one_interval_period": query_date_range.one_interval_period(), + "number_interval_period": query_date_range.number_interval_periods(), "event_filter": event_filter, - "date_from": query_date_range.date_from_as_hogql, - "date_to": query_date_range.date_to_as_hogql, + "date_from": query_date_range.date_from_as_hogql(), + "date_to": query_date_range.date_to_as_hogql(), } - events_query = create_events_query(date_range=query_date_range, event_filter=event_filter) + with timings.measure("events_query"): + events_query = create_events_query( + query_date_range=query_date_range, + event_filter=event_filter, + sampling_factor=query.samplingFactor, + timings=timings, + ) - periods = parse_select( - """ - SELECT ( - dateTrunc({interval}, {date_to}) - {number_interval_period} - ) AS start_of_period - FROM numbers( - dateDiff( - {interval}, - dateTrunc({interval}, {date_from}), - dateTrunc({interval}, {date_to} + {one_interval_period}) + with timings.measure("periods_query"): + periods = parse_select( + """ + SELECT ( + dateTrunc({interval}, {date_to}) - {number_interval_period} + ) AS start_of_period + FROM numbers( + dateDiff( + {interval}, + dateTrunc({interval}, {date_from}), + dateTrunc({interval}, {date_to} + {one_interval_period}) + ) ) - ) - """, - placeholders=placeholders, - ) + """, + placeholders=placeholders, + timings=timings, + ) - lifecycle_sql = parse_select( - """ - SELECT groupArray(start_of_period) AS date, - groupArray(counts) AS total, - status - FROM ( - SELECT - status = 'dormant' ? negate(sum(counts)) : negate(negate(sum(counts))) as counts, - start_of_period, - status + with timings.measure("lifecycle_query"): + lifecycle_sql = parse_select( + """ + SELECT groupArray(start_of_period) AS date, + groupArray(counts) AS total, + status FROM ( SELECT - periods.start_of_period as start_of_period, - 0 AS counts, + status = 'dormant' ? negate(sum(counts)) : negate(negate(sum(counts))) as counts, + start_of_period, status - FROM {periods} as periods - CROSS JOIN ( - SELECT status - FROM (SELECT 1) - ARRAY JOIN ['new', 'returning', 'resurrecting', 'dormant'] as status - ) as sec - ORDER BY status, start_of_period - UNION ALL - SELECT - start_of_period, count(DISTINCT person_id) AS counts, status - FROM {events_query} + FROM ( + SELECT + periods.start_of_period as start_of_period, + 0 AS counts, + status + FROM {periods} as periods + CROSS JOIN ( + SELECT status + FROM (SELECT 1) + ARRAY JOIN ['new', 'returning', 'resurrecting', 'dormant'] as status + ) as sec + ORDER BY status, start_of_period + UNION ALL + SELECT + start_of_period, count(DISTINCT person_id) AS counts, status + FROM {events_query} + GROUP BY start_of_period, status + ) + WHERE start_of_period <= dateTrunc({interval}, {date_to}) + AND start_of_period >= dateTrunc({interval}, {date_from}) GROUP BY start_of_period, status + ORDER BY start_of_period ASC ) - WHERE start_of_period <= dateTrunc({interval}, {date_to}) - AND start_of_period >= dateTrunc({interval}, {date_from}) - GROUP BY start_of_period, status - ORDER BY start_of_period ASC - ) - GROUP BY status - """, - {**placeholders, "periods": periods, "events_query": events_query}, - ) + GROUP BY status + """, + {**placeholders, "periods": periods, "events_query": events_query}, + timings=timings, + ) response = execute_hogql_query( team=team, query=lifecycle_sql, query_type="LifecycleQuery", + timings=timings, ) # ensure that the items are in a deterministic order order = {"new": 1, "returning": 2, "resurrecting": 3, "dormant": 4} - results = sorted(response.results, key=lambda result: order.get(result[2], result[2])) + results = sorted(response.results, key=lambda result: order.get(result[2], 5)) res = [] for val in results: counts = val[1] - labels = [item.strftime("%-d-%b-%Y{}".format(" %H:%M" if interval == "hour" else "")) for item in val[0]] - days = [item.strftime("%Y-%m-%d{}".format(" %H:%M:%S" if interval == "hour" else "")) for item in val[0]] + labels = [ + item.strftime("%-d-%b-%Y{}".format(" %H:%M" if query_date_range.interval_name == "hour" else "")) + for item in val[0] + ] + days = [ + item.strftime("%Y-%m-%d{}".format(" %H:%M:%S" if query_date_range.interval_name == "hour" else "")) + for item in val[0] + ] label = "{} - {}".format("", val[2]) # entity.name additional_values = {"label": label, "status": val[2]} @@ -173,4 +234,4 @@ def run_lifecycle_query( } ) - return {"result": res} + return LifecycleQueryResponse(result=res, timings=response.timings) diff --git a/posthog/hogql_queries/query_date_range.py b/posthog/hogql_queries/query_date_range.py index 4d76b222deb2b..35695b37181c5 100644 --- a/posthog/hogql_queries/query_date_range.py +++ b/posthog/hogql_queries/query_date_range.py @@ -1,11 +1,12 @@ +import re +from functools import cached_property from datetime import datetime -from functools import cached_property, lru_cache from typing import Optional +from zoneinfo import ZoneInfo -import pytz from dateutil.relativedelta import relativedelta -from posthog.hogql.parser import parse_expr, ast +from posthog.hogql.parser import ast from posthog.models.team import Team from posthog.queries.util import get_earliest_timestamp from posthog.schema import DateRange, IntervalType @@ -19,96 +20,96 @@ class QueryDateRange: _team: Team _date_range: Optional[DateRange] _interval: Optional[IntervalType] - _now_non_timezone: datetime + _now_without_timezone: datetime def __init__( self, date_range: Optional[DateRange], team: Team, interval: Optional[IntervalType], now: datetime ) -> None: self._team = team self._date_range = date_range - self._interval = interval - self._now_non_timezone = now + self._interval = interval or IntervalType.day + self._now_without_timezone = now + + if not isinstance(self._interval, IntervalType) or re.match(r"[^a-z]", self._interval.name): + raise ValueError(f"Invalid interval: {interval}") - @cached_property def date_to(self) -> datetime: - date_to = self._now + date_to = self.now_with_timezone delta_mapping = None if self._date_range and self._date_range.date_to: date_to, delta_mapping = relative_date_parse_with_delta_mapping( - self._date_range.date_to, self._team.timezone_info, always_truncate=True, now=self._now + self._date_range.date_to, self._team.timezone_info, always_truncate=True, now=self.now_with_timezone ) is_relative = not self._date_range or not self._date_range.date_to or delta_mapping is not None - if not self.is_hourly(): + if not self.is_hourly: date_to = date_to.replace(hour=23, minute=59, second=59, microsecond=999999) elif is_relative: date_to = date_to.replace(minute=59, second=59, microsecond=999999) return date_to - def get_earliest_timestamp(self): + def get_earliest_timestamp(self) -> datetime: return get_earliest_timestamp(self._team.pk) - @cached_property def date_from(self) -> datetime: date_from: datetime if self._date_range and self._date_range.date_from == "all": date_from = self.get_earliest_timestamp() elif self._date_range and isinstance(self._date_range.date_from, str): - date_from = relative_date_parse(self._date_range.date_from, self._team.timezone_info, now=self._now) + date_from = relative_date_parse( + self._date_range.date_from, self._team.timezone_info, now=self.now_with_timezone + ) else: - date_from = self._now.replace(hour=0, minute=0, second=0, microsecond=0) - relativedelta( + date_from = self.now_with_timezone.replace(hour=0, minute=0, second=0, microsecond=0) - relativedelta( days=DEFAULT_DATE_FROM_DAYS ) - if not self.is_hourly(): + if not self.is_hourly: date_from = date_from.replace(hour=0, minute=0, second=0, microsecond=0) return date_from @cached_property - def _now(self): - return self._localize_to_team(self._now_non_timezone) - - def _localize_to_team(self, target: datetime): - return target.astimezone(pytz.timezone(self._team.timezone)) + def now_with_timezone(self) -> datetime: + return self._now_without_timezone.astimezone(ZoneInfo(self._team.timezone)) @cached_property def date_to_str(self) -> str: - return self.date_to.strftime("%Y-%m-%d %H:%M:%S") + return self.date_to().strftime("%Y-%m-%d %H:%M:%S") @cached_property def date_from_str(self) -> str: - return self.date_from.strftime("%Y-%m-%d %H:%M:%S") - - def is_hourly(self): - return self.interval.name == "hour" + return self.date_from().strftime("%Y-%m-%d %H:%M:%S") @cached_property - def date_to_as_hogql(self): - return parse_expr(f"assumeNotNull(toDateTime('{self.date_to_str}'))") + def is_hourly(self) -> bool: + return self.interval_name == "hour" @cached_property - def date_from_as_hogql(self): - return parse_expr(f"assumeNotNull(toDateTime('{self.date_from_str}'))") - - @cached_property - def interval(self): + def interval_type(self) -> IntervalType: return self._interval or IntervalType.day @cached_property - def one_interval_period_as_hogql(self): - return parse_expr(f"toInterval{self.interval.capitalize()}(1)") + def interval_name(self) -> str: + return self.interval_type.name - @lru_cache - def interval_periods_as_hogql(self, s: str): - return parse_expr(f"toInterval{self.interval.capitalize()}({s})") + def date_to_as_hogql(self) -> ast.Expr: + return ast.Call( + name="assumeNotNull", args=[ast.Call(name="toDateTime", args=[(ast.Constant(value=self.date_to_str))])] + ) - @cached_property - def interval_period_string(self): - return self.interval.value + def date_from_as_hogql(self) -> ast.Expr: + return ast.Call( + name="assumeNotNull", args=[ast.Call(name="toDateTime", args=[(ast.Constant(value=self.date_from_str))])] + ) - @cached_property - def interval_period_string_as_hogql(self): - return ast.Constant(value=self.interval.value) + def one_interval_period(self) -> ast.Expr: + return ast.Call(name=f"toInterval{self.interval_name.capitalize()}", args=[ast.Constant(value=1)]) + + def number_interval_periods(self) -> ast.Expr: + return ast.Call(name=f"toInterval{self.interval_name.capitalize()}", args=[ast.Field(chain=["number"])]) + + def interval_period_string_as_hogql_constant(self) -> ast.Expr: + return ast.Constant(value=self.interval_name) diff --git a/posthog/hogql_queries/test/test_lifecycle_hogql_query.py b/posthog/hogql_queries/test/test_lifecycle_hogql_query.py index 5cc56252b046f..fb35ace5f5baa 100644 --- a/posthog/hogql_queries/test/test_lifecycle_hogql_query.py +++ b/posthog/hogql_queries/test/test_lifecycle_hogql_query.py @@ -1,11 +1,7 @@ -from datetime import datetime - from freezegun import freeze_time -from posthog.hogql.query import execute_hogql_query from posthog.models.utils import UUIDT -from posthog.hogql_queries.lifecycle_hogql_query import create_events_query, create_time_filter, run_lifecycle_query -from posthog.hogql_queries.query_date_range import QueryDateRange +from posthog.hogql_queries.lifecycle_hogql_query import run_lifecycle_query from posthog.schema import DateRange, IntervalType, LifecycleQuery, EventsNode from posthog.test.base import APIBaseTest, ClickhouseTestMixin, _create_event, _create_person, flush_persons_and_events @@ -67,99 +63,6 @@ def _create_test_events(self): ] ) - def _run_events_query(self, date_from, date_to, interval): - date_range = QueryDateRange( - date_range=DateRange(date_from=date_from, date_to=date_to), - team=self.team, - interval=interval, - now=datetime.strptime("2020-01-30T00:00:00Z", "%Y-%m-%dT%H:%M:%SZ"), - ) - time_filter = create_time_filter(date_range) - - # TODO probably doesn't make sense to test like this - # maybe this query should be what is returned by the function - events_query = create_events_query(event_filter=time_filter, date_range=date_range) - return execute_hogql_query( - team=self.team, - query=""" - SELECT - start_of_period, count(DISTINCT person_id) AS counts, status - FROM {events_query} - GROUP BY start_of_period, status - """, - query_type="LifecycleQuery", - placeholders={"events_query": events_query}, - ) - - def test_events_query_whole_range(self): - self._create_test_events() - - date_from = "2020-01-09" - date_to = "2020-01-19" - - response = self._run_events_query(date_from, date_to, IntervalType.day) - - self.assertEqual( - { - (datetime(2020, 1, 9, 0, 0), 1, "new"), # p2 - (datetime(2020, 1, 10, 0, 0), 1, "dormant"), # p2 - (datetime(2020, 1, 11, 0, 0), 1, "new"), # p1 - (datetime(2020, 1, 12, 0, 0), 1, "new"), # p3 - (datetime(2020, 1, 12, 0, 0), 1, "resurrecting"), # p2 - (datetime(2020, 1, 12, 0, 0), 1, "returning"), # p1 - (datetime(2020, 1, 13, 0, 0), 1, "returning"), # p1 - (datetime(2020, 1, 13, 0, 0), 2, "dormant"), # p2, p3 - (datetime(2020, 1, 14, 0, 0), 1, "dormant"), # p1 - (datetime(2020, 1, 15, 0, 0), 1, "resurrecting"), # p1 - (datetime(2020, 1, 15, 0, 0), 1, "new"), # p4 - (datetime(2020, 1, 16, 0, 0), 2, "dormant"), # p1, p4 - (datetime(2020, 1, 17, 0, 0), 1, "resurrecting"), # p1 - (datetime(2020, 1, 18, 0, 0), 1, "dormant"), # p1 - (datetime(2020, 1, 19, 0, 0), 1, "resurrecting"), # p1 - (datetime(2020, 1, 20, 0, 0), 1, "dormant"), # p1 - }, - set(response.results), - ) - - def test_events_query_partial_range(self): - self._create_test_events() - date_from = "2020-01-12" - date_to = "2020-01-14" - response = self._run_events_query(date_from, date_to, IntervalType.day) - - self.assertEqual( - { - (datetime(2020, 1, 11, 0, 0), 1, "new"), # p1 - (datetime(2020, 1, 12, 0, 0), 1, "new"), # p3 - (datetime(2020, 1, 12, 0, 0), 1, "resurrecting"), # p2 - (datetime(2020, 1, 12, 0, 0), 1, "returning"), # p1 - (datetime(2020, 1, 13, 0, 0), 1, "returning"), # p1 - (datetime(2020, 1, 13, 0, 0), 2, "dormant"), # p2, p3 - (datetime(2020, 1, 14, 0, 0), 1, "dormant"), # p1 - }, - set(response.results), - ) - - # def test_start_on_dormant(self): - # self.create_test_events() - # date_from = "2020-01-13" - # date_to = "2020-01-14" - # response = self.run_events_query(date_from, date_to, IntervalType.day) - # - # self.assertEqual( - # { - # (datetime(2020, 1, 12, 0, 0), 1, "new"), # p3 - # # TODO this currently fails, as it treats p1 as resurrecting. - # # This might just be fine, later in the query we would just throw away results before the 13th - # (datetime(2020, 1, 12, 0, 0), 1, "resurrecting"), # p2 - # (datetime(2020, 1, 12, 0, 0), 1, "returning"), # p1 - # (datetime(2020, 1, 13, 0, 0), 1, "returning"), # p1 - # (datetime(2020, 1, 13, 0, 0), 2, "dormant"), # p2, p3 - # (datetime(2020, 1, 14, 0, 0), 1, "dormant"), # p1 - # }, - # set(response.results), - # ) - def _run_lifecycle_query(self, date_from, date_to, interval): series = [EventsNode(event="$pageview")] query = LifecycleQuery( @@ -175,7 +78,7 @@ def test_lifecycle_query_whole_range(self): response = self._run_lifecycle_query(date_from, date_to, IntervalType.day) - statuses = [res["status"] for res in response["result"]] + statuses = [res["status"] for res in response.result] self.assertEqual(["new", "returning", "resurrecting", "dormant"], statuses) self.assertEqual( @@ -357,5 +260,5 @@ def test_lifecycle_query_whole_range(self): "status": "dormant", }, ], - response["result"], + response.result, ) diff --git a/posthog/hogql_queries/test/test_query_date_range.py b/posthog/hogql_queries/test/test_query_date_range.py index 82966cc5f1bff..42787912887b2 100644 --- a/posthog/hogql_queries/test/test_query_date_range.py +++ b/posthog/hogql_queries/test/test_query_date_range.py @@ -10,32 +10,17 @@ def test_parsed_date(self): now = parser.isoparse("2021-08-25T00:00:00.000Z") date_range = DateRange(date_from="-48h") query_date_range = QueryDateRange(team=self.team, date_range=date_range, interval=IntervalType.day, now=now) - parsed_date_from = query_date_range.date_from - parsed_date_to = query_date_range.date_to - self.assertEqual( - parsed_date_from, - parser.isoparse("2021-08-23T00:00:00Z"), - ) - self.assertEqual( - parsed_date_to, - parser.isoparse("2021-08-25T23:59:59.999999Z"), - ) + self.assertEqual(query_date_range.date_from(), parser.isoparse("2021-08-23T00:00:00Z")) + self.assertEqual(query_date_range.date_to(), parser.isoparse("2021-08-25T23:59:59.999999Z")) def test_parsed_date_hour(self): now = parser.isoparse("2021-08-25T00:00:00.000Z") date_range = DateRange(date_from="-48h") query_date_range = QueryDateRange(team=self.team, date_range=date_range, interval=IntervalType.hour, now=now) - parsed_date_from = query_date_range.date_from - parsed_date_to = query_date_range.date_to - + self.assertEqual(query_date_range.date_from(), parser.isoparse("2021-08-23T00:00:00Z")) self.assertEqual( - parsed_date_from, - parser.isoparse("2021-08-23T00:00:00Z"), - ) - self.assertEqual( - parsed_date_to, - parser.isoparse("2021-08-25T00:59:59.999999Z"), + query_date_range.date_to(), parser.isoparse("2021-08-25T00:59:59.999999Z") ) # ensure last hour is included def test_parsed_date_middle_of_hour(self): @@ -43,34 +28,25 @@ def test_parsed_date_middle_of_hour(self): date_range = DateRange(date_from="2021-08-23 05:00:00", date_to="2021-08-26 07:00:00") query_date_range = QueryDateRange(team=self.team, date_range=date_range, interval=IntervalType.hour, now=now) - parsed_date_from = query_date_range.date_from - parsed_date_to = query_date_range.date_to - - self.assertEqual(parsed_date_from, parser.isoparse("2021-08-23 05:00:00Z")) - self.assertEqual(parsed_date_to, parser.isoparse("2021-08-26 07:00:00Z")) # ensure last hour is included + self.assertEqual(query_date_range.date_from(), parser.isoparse("2021-08-23 05:00:00Z")) + self.assertEqual( + query_date_range.date_to(), parser.isoparse("2021-08-26 07:00:00Z") + ) # ensure last hour is included def test_parsed_date_week(self): now = parser.isoparse("2021-08-25T00:00:00.000Z") date_range = DateRange(date_from="-7d") query_date_range = QueryDateRange(team=self.team, date_range=date_range, interval=IntervalType.week, now=now) - parsed_date_from = query_date_range.date_from - parsed_date_to = query_date_range.date_to - self.assertEqual( - parsed_date_from, - parser.isoparse("2021-08-18 00:00:00Z"), - ) - self.assertEqual( - parsed_date_to, - parser.isoparse("2021-08-25 23:59:59.999999Z"), - ) + self.assertEqual(query_date_range.date_from(), parser.isoparse("2021-08-18 00:00:00Z")) + self.assertEqual(query_date_range.date_to(), parser.isoparse("2021-08-25 23:59:59.999999Z")) def test_is_hourly(self): now = parser.isoparse("2021-08-25T00:00:00.000Z") date_range = DateRange(date_from="-48h") query_date_range = QueryDateRange(team=self.team, date_range=date_range, interval=IntervalType.day, now=now) - self.assertFalse(query_date_range.is_hourly()) + self.assertFalse(query_date_range.is_hourly) query_date_range = QueryDateRange(team=self.team, date_range=date_range, interval=IntervalType.hour, now=now) - self.assertTrue(query_date_range.is_hourly()) + self.assertTrue(query_date_range.is_hourly) diff --git a/posthog/schema.py b/posthog/schema.py index 72b581e8c863c..e5a4f6a6ab9b2 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -594,6 +594,14 @@ class Config: toggledLifecycles: Optional[List[LifecycleToggle]] = None +class LifecycleQueryResponse(BaseModel): + class Config: + extra = Extra.forbid + + result: List[Dict[str, Any]] + timings: Optional[List[QueryTiming]] = None + + class PersonPropertyFilter(BaseModel): class Config: extra = Extra.forbid @@ -1143,6 +1151,7 @@ class Config: PropertyGroupFilter, ] ] = Field(None, description="Property filters for all series") + response: Optional[LifecycleQueryResponse] = None samplingFactor: Optional[float] = Field(None, description="Sampling rate") series: List[Union[EventsNode, ActionsNode]] = Field(..., description="Events and actions to include") From ab0e9892c2289b51addc3a1d8b1b3c525b4c5634 Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 13 Sep 2023 16:29:04 +0100 Subject: [PATCH 11/11] feat: add notebooks to universal search (#17398) * feat: add notebooks to universal search --- ...ordings-play-list-no-pinned-recordings.png | Bin 77018 -> 76583 bytes .../src/layout/navigation/TopBar/TopBar.tsx | 38 ++++++++++-------- frontend/src/lib/api.ts | 2 +- .../TaxonomicFilter/taxonomicFilterLogic.tsx | 33 ++++++++++++--- .../lib/components/TaxonomicFilter/types.ts | 1 + .../UniversalSearchPopover.tsx | 2 + .../notebooks/Nodes/NotebookNodeBacklink.tsx | 24 ++++++++++- .../notebooks/Notebook/BacklinkCommands.tsx | 12 +++--- posthog/api/notebook.py | 4 +- .../test/notebooks/test_notebook_filtering.py | 2 +- 10 files changed, 86 insertions(+), 32 deletions(-) diff --git a/frontend/__snapshots__/scenes-app-recordings--recordings-play-list-no-pinned-recordings.png b/frontend/__snapshots__/scenes-app-recordings--recordings-play-list-no-pinned-recordings.png index 55b81bc98fcce46755f2a765676eaf1d277f0fa9..8e3052db551e144cc7fd665a750da778f6f95e71 100644 GIT binary patch literal 76583 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 z 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

i*`D2bwc9;! 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 Slp6Re0tH!>E7_M!?*1>C0xjnN diff --git a/frontend/src/layout/navigation/TopBar/TopBar.tsx b/frontend/src/layout/navigation/TopBar/TopBar.tsx index cf73ee60f4b8b..4c51c2453ae40 100644 --- a/frontend/src/layout/navigation/TopBar/TopBar.tsx +++ b/frontend/src/layout/navigation/TopBar/TopBar.tsx @@ -30,6 +30,26 @@ export function TopBar(): JSX.Element { const { hideInviteModal } = useActions(inviteLogic) const { groupNamesTaxonomicTypes } = useValues(groupsModel) const { featureFlags } = useValues(featureFlagLogic) + + const hasNotebooks = !!featureFlags[FEATURE_FLAGS.NOTEBOOKS] + + const groupTypes = [ + TaxonomicFilterGroupType.Events, + TaxonomicFilterGroupType.Persons, + TaxonomicFilterGroupType.Actions, + TaxonomicFilterGroupType.Cohorts, + TaxonomicFilterGroupType.Insights, + TaxonomicFilterGroupType.FeatureFlags, + TaxonomicFilterGroupType.Plugins, + TaxonomicFilterGroupType.Experiments, + TaxonomicFilterGroupType.Dashboards, + ...groupNamesTaxonomicTypes, + ] + + if (hasNotebooks) { + groupTypes.push(TaxonomicFilterGroupType.Notebooks) + } + return ( <> @@ -48,26 +68,12 @@ export function TopBar(): JSX.Element {

- +
- {!!featureFlags[FEATURE_FLAGS.NOTEBOOKS] && } + {hasNotebooks && } diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 95e72ac18729d..0da43300083d7 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -1348,7 +1348,7 @@ const api = { q = { ...q, created_by: createdBy } } if (search) { - q = { ...q, s: search } + q = { ...q, search: search } } return await apiRequest.withQueryString(q).get() }, diff --git a/frontend/src/lib/components/TaxonomicFilter/taxonomicFilterLogic.tsx b/frontend/src/lib/components/TaxonomicFilter/taxonomicFilterLogic.tsx index 773cfa0809949..c8547ae06af50 100644 --- a/frontend/src/lib/components/TaxonomicFilter/taxonomicFilterLogic.tsx +++ b/frontend/src/lib/components/TaxonomicFilter/taxonomicFilterLogic.tsx @@ -23,6 +23,7 @@ import { PersonType, PluginType, PropertyDefinition, + NotebookType, } from '~/types' import { cohortsModel } from '~/models/cohortsModel' import { actionsModel } from '~/models/actionsModel' @@ -42,6 +43,7 @@ import { groupDisplayId } from 'scenes/persons/GroupActorDisplay' import { infiniteListLogicType } from 'lib/components/TaxonomicFilter/infiniteListLogicType' import { updatePropertyDefinitions } from '~/models/propertyDefinitionsModel' import { InlineHogQLEditor } from './InlineHogQLEditor' +import { FEATURE_FLAGS } from 'lib/constants' export const eventTaxonomicGroupProps: Pick = { getPopoverHeader: (eventDefinition: EventDefinition): string => { @@ -77,6 +79,8 @@ export const taxonomicFilterLogic = kea({ ['groupTypes', 'aggregationLabel'], groupPropertiesModel, ['allGroupProperties'], + featureFlagsLogic, + ['featureFlags'], ], }, actions: () => ({ @@ -146,15 +150,17 @@ export const taxonomicFilterLogic = kea({ s.groupAnalyticsTaxonomicGroupNames, s.eventNames, s.excludedProperties, + s.featureFlags, ], ( teamId, groupAnalyticsTaxonomicGroups, groupAnalyticsTaxonomicGroupNames, eventNames, - excludedProperties + excludedProperties, + featureFlags ): TaxonomicFilterGroup[] => { - return [ + const groups = [ { name: 'Events', searchPlaceholder: 'events', @@ -209,7 +215,7 @@ export const taxonomicFilterLogic = kea({ filter_by_event_names: true, }).url : undefined, - expandLabel: ({ count, expandedCount }) => + expandLabel: ({ count, expandedCount }: { count: number; expandedCount: number }) => `Show ${pluralize(expandedCount - count, 'property', 'properties')} that ${pluralize( eventNames.length, 'has', @@ -237,7 +243,7 @@ export const taxonomicFilterLogic = kea({ filter_by_event_names: true, }).url : undefined, - expandLabel: ({ count, expandedCount }) => + expandLabel: ({ count, expandedCount }: { count: number; expandedCount: number }) => `Show ${pluralize(expandedCount - count, 'property', 'properties')} that ${pluralize( eventNames.length, 'has', @@ -408,8 +414,8 @@ export const taxonomicFilterLogic = kea({ value: '$session_duration', }, ], - getName: (option) => option.name, - getValue: (option) => option.value, + getName: (option: any) => option.name, + getValue: (option: any) => option.value, getPopoverHeader: () => 'Session', }, { @@ -422,6 +428,21 @@ export const taxonomicFilterLogic = kea({ ...groupAnalyticsTaxonomicGroups, ...groupAnalyticsTaxonomicGroupNames, ] + + if (featureFlags[FEATURE_FLAGS.NOTEBOOKS]) { + groups.push({ + name: 'Notebooks', + searchPlaceholder: 'notebooks', + type: TaxonomicFilterGroupType.Notebooks, + value: 'notebooks', + endpoint: `api/projects/${teamId}/notebooks/`, + getName: (notebook: NotebookType) => notebook.title || `Notebook ${notebook.short_id}`, + getValue: (notebook: NotebookType) => notebook.short_id, + getPopoverHeader: () => 'Notebooks', + }) + } + + return groups }, ], activeTaxonomicGroup: [ diff --git a/frontend/src/lib/components/TaxonomicFilter/types.ts b/frontend/src/lib/components/TaxonomicFilter/types.ts index 5d03149f671ea..5dd74ef575aae 100644 --- a/frontend/src/lib/components/TaxonomicFilter/types.ts +++ b/frontend/src/lib/components/TaxonomicFilter/types.ts @@ -83,6 +83,7 @@ export enum TaxonomicFilterGroupType { GroupNamesPrefix = 'name_groups', Sessions = 'sessions', HogQLExpression = 'hogql_expression', + Notebooks = 'notebooks', } export interface InfiniteListLogicProps extends TaxonomicFilterLogicProps { diff --git a/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx b/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx index 2412e0b8bff8d..dc8e9384a7fd5 100644 --- a/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx +++ b/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx @@ -109,6 +109,8 @@ function redirectOnSelectItems( ) } else if (groupType === TaxonomicFilterGroupType.Dashboards) { router.actions.push(urls.dashboard(value)) + } else if (groupType === TaxonomicFilterGroupType.Notebooks) { + router.actions.push(urls.notebook(String(value))) } } diff --git a/frontend/src/scenes/notebooks/Nodes/NotebookNodeBacklink.tsx b/frontend/src/scenes/notebooks/Nodes/NotebookNodeBacklink.tsx index 9935f9c6f1608..154600a7e1d3f 100644 --- a/frontend/src/scenes/notebooks/Nodes/NotebookNodeBacklink.tsx +++ b/frontend/src/scenes/notebooks/Nodes/NotebookNodeBacklink.tsx @@ -2,7 +2,16 @@ import { mergeAttributes, Node, NodeViewProps } from '@tiptap/core' import { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react' import { InsightModel, NotebookNodeType, NotebookTarget } from '~/types' import { Link } from '@posthog/lemon-ui' -import { IconGauge, IconBarChart, IconFlag, IconExperiment, IconLive, IconPerson, IconCohort } from 'lib/lemon-ui/icons' +import { + IconGauge, + IconBarChart, + IconFlag, + IconExperiment, + IconLive, + IconPerson, + IconCohort, + IconJournal, +} from 'lib/lemon-ui/icons' import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' import { urls } from 'scenes/urls' import clsx from 'clsx' @@ -22,6 +31,7 @@ const ICON_MAP = { events: , persons: , cohorts: , + notebooks: , } const Component = (props: NodeViewProps): JSX.Element => { @@ -67,6 +77,8 @@ function backlinkHref(id: string, type: TaxonomicFilterGroupType): string { return urls.experiment(id) } else if (type === TaxonomicFilterGroupType.Dashboards) { return urls.dashboard(id) + } else if (type === TaxonomicFilterGroupType.Notebooks) { + return urls.notebook(id) } return '' } @@ -139,6 +151,16 @@ export const NotebookNodeBacklink = Node.create({ return { id: id, type: TaxonomicFilterGroupType.Dashboards, title: dashboard.name } }, }), + posthogNodePasteRule({ + find: urls.notebook('(.+)'), + editor: this.editor, + type: this.type, + getAttributes: async (match) => { + const id = match[1] + const notebook = await api.notebooks.get(id) + return { id: id, type: TaxonomicFilterGroupType.Notebooks, title: notebook.title } + }, + }), ] }, }) diff --git a/frontend/src/scenes/notebooks/Notebook/BacklinkCommands.tsx b/frontend/src/scenes/notebooks/Notebook/BacklinkCommands.tsx index 49badffaf69e5..ef925ef805870 100644 --- a/frontend/src/scenes/notebooks/Notebook/BacklinkCommands.tsx +++ b/frontend/src/scenes/notebooks/Notebook/BacklinkCommands.tsx @@ -6,6 +6,7 @@ import { PluginKey } from '@tiptap/pm/state' import { Popover } from 'lib/lemon-ui/Popover' import { forwardRef } from 'react' import { + TaxonomicDefinitionTypes, TaxonomicFilterGroup, TaxonomicFilterGroupType, TaxonomicFilterLogicProps, @@ -41,18 +42,18 @@ const BacklinkCommands = forwardRef(functi const { editor } = useValues(notebookLogic) const onSelect = ( - { type }: TaxonomicFilterGroup, + group: TaxonomicFilterGroup, value: TaxonomicFilterValue, - { id, name }: { id: number; name: string } + item: TaxonomicDefinitionTypes ): void => { if (!editor) { return } const attrs = { - id: type === TaxonomicFilterGroupType.Events ? id : value, - title: name, - type: type, + id: group.type === TaxonomicFilterGroupType.Events ? item.id : value, + title: group.getName?.(item), + type: group.type, } editor @@ -81,6 +82,7 @@ const BacklinkCommands = forwardRef(functi TaxonomicFilterGroupType.FeatureFlags, TaxonomicFilterGroupType.Experiments, TaxonomicFilterGroupType.Dashboards, + TaxonomicFilterGroupType.Notebooks, ], optionsFromProp: undefined, popoverEnabled: true, diff --git a/posthog/api/notebook.py b/posthog/api/notebook.py index 7f3cfae9be957..a7db45a2a9a44 100644 --- a/posthog/api/notebook.py +++ b/posthog/api/notebook.py @@ -250,8 +250,8 @@ def _filter_request(self, request: request.Request, queryset: QuerySet) -> Query queryset = queryset.filter( last_modified_at__lt=relative_date_parse(request.GET["date_to"], self.team.timezone_info) ) - elif key == "s": - queryset = queryset.filter(title__icontains=request.GET["s"]) + elif key == "search": + queryset = queryset.filter(title__icontains=request.GET["search"]) elif key == "contains": contains = request.GET["contains"] match_pairs = contains.replace(",", " ").split(" ") diff --git a/posthog/api/test/notebooks/test_notebook_filtering.py b/posthog/api/test/notebooks/test_notebook_filtering.py index 4e9f9370c178d..5881c609ebe81 100644 --- a/posthog/api/test/notebooks/test_notebook_filtering.py +++ b/posthog/api/test/notebooks/test_notebook_filtering.py @@ -75,7 +75,7 @@ def test_filters_based_on_title(self, search_text: str, expected_match_indexes: ] response = self.client.get( - f"/api/projects/{self.team.id}/notebooks?s={search_text}", + f"/api/projects/{self.team.id}/notebooks?search={search_text}", ) assert response.status_code == status.HTTP_200_OK