From 04b4af6e0f0d71bae10b9d4ce7b30e3377a25cae Mon Sep 17 00:00:00 2001 From: Anderson Filho <115162146+andifilhohub@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:48:36 -0300 Subject: [PATCH 1/3] fix: protect image downloads by flow ownership (#12234) * fix: protect image downloads by flow ownership * test: add clarifying comments for image access review --------- Co-authored-by: Janardan Singh Kavia --- src/backend/base/langflow/api/v1/files.py | 7 +- src/backend/tests/unit/api/v1/test_files.py | 129 ++++++++++++++++---- 2 files changed, 107 insertions(+), 29 deletions(-) diff --git a/src/backend/base/langflow/api/v1/files.py b/src/backend/base/langflow/api/v1/files.py index 690937aabb..b604ef5853 100644 --- a/src/backend/base/langflow/api/v1/files.py +++ b/src/backend/base/langflow/api/v1/files.py @@ -138,12 +138,13 @@ async def download_file( @router.get("/images/{flow_id}/{file_name}") async def download_image( file_name: ValidatedFileName, - flow_id: UUID, + # Security: resolve flow through get_flow so image access requires authentication and owner match. + flow: Annotated[Flow, Depends(get_flow)], + storage_service: Annotated[StorageService, Depends(get_storage_service)], ): """Download image from storage for browser rendering.""" - storage_service = get_storage_service() extension = file_name.split(".")[-1] - flow_id_str = str(flow_id) + flow_id_str = str(flow.id) if not extension: raise HTTPException(status_code=500, detail=f"Extension not found for file {file_name}") diff --git a/src/backend/tests/unit/api/v1/test_files.py b/src/backend/tests/unit/api/v1/test_files.py index 4f6edfee9f..65809d71ee 100644 --- a/src/backend/tests/unit/api/v1/test_files.py +++ b/src/backend/tests/unit/api/v1/test_files.py @@ -10,6 +10,7 @@ from pathlib import Path import anyio import pytest from asgi_lifespan import LifespanManager +from fastapi import status from httpx import ASGITransport, AsyncClient from langflow.main import create_app from langflow.services.auth.utils import get_password_hash @@ -50,6 +51,32 @@ async def files_created_api_key(files_client, files_active_user): # noqa: ARG00 await session.delete(key_to_delete) +@pytest.fixture(name="files_other_created_api_key") +async def files_other_created_api_key(files_client, files_other_active_user): # noqa: ARG001 + # Separate API key to emulate requests from a second tenant. + hashed = get_password_hash("other_random_key") + api_key = ApiKey( + name="files_other_created_api_key", + user_id=files_other_active_user.id, + api_key="other_random_key", + hashed_api_key=hashed, + ) + # Reuse an existing key when present, otherwise create one, then clean it up after the test. + async with session_scope() as session: + stmt = select(ApiKey).where(ApiKey.api_key == api_key.api_key) + if existing_api_key := (await session.exec(stmt)).first(): + api_key = existing_api_key + else: + session.add(api_key) + await session.flush() + await session.refresh(api_key) + yield api_key + async with session_scope() as session: + key_to_delete = await session.get(ApiKey, api_key.id) + if key_to_delete: + await session.delete(key_to_delete) + + @pytest.fixture(name="files_active_user") async def files_active_user(files_client): # noqa: ARG001 async with session_scope() as session: @@ -76,6 +103,31 @@ async def files_active_user(files_client): # noqa: ARG001 await session.delete(user) +@pytest.fixture(name="files_other_active_user") +async def files_other_active_user(files_client): # noqa: ARG001 + # Secondary user used to validate cross-user access restrictions. + async with session_scope() as session: + user = User( + username="files_other_active_user", + password=get_password_hash("testpassword"), + is_active=True, + is_superuser=False, + ) + stmt = select(User).where(User.username == user.username) + if active_user := (await session.exec(stmt)).first(): + user = active_user + else: + session.add(user) + await session.flush() + await session.refresh(user) + user = UserRead.model_validate(user, from_attributes=True) + yield user + async with session_scope() as session: + user = await session.get(User, user.id, options=[selectinload(User.flows)]) + await _delete_transactions_and_vertex_builds(session, user.flows) + await session.delete(user) + + @pytest.fixture(name="files_flow") async def files_flow( files_client, # noqa: ARG001 @@ -781,6 +833,7 @@ async def test_download_image_for_browser(files_client, files_created_api_key, f # Download the image - simulates browser tag behavior response = await files_client.get( f"api/v1/files/images/{files_flow.id}/{file_name}", + headers=headers, ) assert response.status_code == 200, ( @@ -813,7 +866,7 @@ async def test_download_image_returns_correct_content_type(files_client, files_c file_name = file_path.split("/")[-1] # Download image - response = await files_client.get(f"api/v1/files/images/{files_flow.id}/{file_name}") + response = await files_client.get(f"api/v1/files/images/{files_flow.id}/{file_name}", headers=headers) assert response.status_code == 200 assert "image/png" in response.headers.get("content-type", "") @@ -835,33 +888,58 @@ async def test_download_image_rejects_non_image_files(files_client, files_create file_name = file_path.split("/")[-1] # Try to download via /images endpoint (should fail) - response = await files_client.get(f"api/v1/files/images/{files_flow.id}/{file_name}") + response = await files_client.get(f"api/v1/files/images/{files_flow.id}/{file_name}", headers=headers) # Should reject non-image content types assert response.status_code == 500 assert "not an image" in response.json().get("detail", "").lower() -async def test_download_image_with_invalid_flow_id(files_client): - """Test that /images returns 500 for non-existent flow_id.""" +async def test_download_image_requires_authentication(files_client, files_created_api_key, files_flow): + """Test that /images rejects unauthenticated requests.""" + headers = {"x-api-key": files_created_api_key.api_key} + + png_content = ( + b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01" + b"\x08\x06\x00\x00\x00\x1f\x15\xc4\x89\x00\x00\x00\nIDATx\x9cc\x00\x01" + b"\x00\x00\x05\x00\x01\r\n-\xb4\x00\x00\x00\x00IEND\xaeB`\x82" + ) + + response = await files_client.post( + f"api/v1/files/upload/{files_flow.id}", + files={"file": ("auth_required.png", png_content, "image/png")}, + headers=headers, + ) + assert response.status_code == status.HTTP_201_CREATED + + file_path = response.json()["file_path"] + file_name = file_path.split("/")[-1] + + # No auth header: browser-like unauthenticated request must be rejected. + response = await files_client.get(f"api/v1/files/images/{files_flow.id}/{file_name}") + + assert response.status_code == status.HTTP_403_FORBIDDEN + + +async def test_download_image_with_invalid_flow_id(files_client, files_created_api_key): + """Test that /images returns 404 for non-existent flow_id when authenticated.""" import uuid fake_flow_id = uuid.uuid4() - - response = await files_client.get(f"api/v1/files/images/{fake_flow_id}/nonexistent.png") - - # Should return 500 (file not found) - assert response.status_code == 500 - - -async def test_download_image_browser_compatible(files_client, files_created_api_key, files_flow): - """Test that /images endpoint works for browser tag rendering. - - This ensures the endpoint correctly serves images for chat display. - """ headers = {"x-api-key": files_created_api_key.api_key} - # Upload an image + response = await files_client.get(f"api/v1/files/images/{fake_flow_id}/nonexistent.png", headers=headers) + + assert response.status_code == status.HTTP_404_NOT_FOUND + + +async def test_download_image_returns_404_for_other_users_flow( + files_client, files_created_api_key, files_other_created_api_key, files_flow +): + """Test that /images does not disclose images across tenants.""" + owner_headers = {"x-api-key": files_created_api_key.api_key} + other_headers = {"x-api-key": files_other_created_api_key.api_key} + png_content = ( b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01" b"\x08\x06\x00\x00\x00\x1f\x15\xc4\x89\x00\x00\x00\nIDATx\x9cc\x00\x01" @@ -871,22 +949,21 @@ async def test_download_image_browser_compatible(files_client, files_created_api upload_response = await files_client.post( f"api/v1/files/upload/{files_flow.id}", files={"file": ("browser_test.png", png_content, "image/png")}, - headers=headers, + headers=owner_headers, ) - assert upload_response.status_code == 201 + assert upload_response.status_code == status.HTTP_201_CREATED file_path = upload_response.json()["file_path"] file_name = file_path.split("/")[-1] - # Download - simulates browser tag - download_response = await files_client.get(f"api/v1/files/images/{files_flow.id}/{file_name}") - - assert download_response.status_code == 200, ( - f"REGRESSION: /images endpoint broken! " - f"Got status {download_response.status_code}. " - "This breaks browser tags in chat." + # Hide resource existence across tenants by returning 404 for non-owners. + download_response = await files_client.get( + f"api/v1/files/images/{files_flow.id}/{file_name}", + headers=other_headers, ) + assert download_response.status_code == status.HTTP_404_NOT_FOUND + # ============================================================================ # Tests for path traversal protection (ValidatedFileName) From 198fab1dc7d4e018fd92767e226b6da6057cd704 Mon Sep 17 00:00:00 2001 From: vjgit96 Date: Fri, 20 Mar 2026 15:22:09 -0400 Subject: [PATCH 2/3] feat: Add Windows Playwright test fixes to RC (#12265) * feat: Add Windows Playwright tests to nightly builds - Add windows-latest to typescript_test.yml runner options - Add shell: bash to all script steps for cross-platform compatibility - Split Playwright installation into OS-aware steps (Linux uses --with-deps, Windows/macOS/self-hosted don't) - Fix artifact naming with OS prefix to prevent conflicts: blob-report-${{ runner.os }}-${{ matrix.shardIndex }} - Split frontend-tests into separate Linux and Windows jobs in nightly_build.yml - Add ref parameter to all test jobs to checkout code from release branch - Add resolve-release-branch to needs dependencies - Update Slack notifications to handle both Linux and Windows test results - Windows tests are non-blocking (not checked in release-nightly-build condition) - Update .secrets.baseline with new line number (263 -> 347) for LANGFLOW_ENG_SLACK_WEBHOOK_URL Fixes LE-566 * fix: Use contains() for self-hosted runner detection - Replace exact string equality (==, !=) with contains() for substring matching - Fixes issue when inputs.runs-on is array format: '["self-hosted", "linux", "ARM64", ...]' - Ensures self-hosted Linux runners correctly skip --with-deps flag Addresses CodeRabbit feedback on PR #12264 --- .github/workflows/nightly_build.yml | 16 +- .github/workflows/typescript_test.yml | 6 +- .secrets.baseline | 1591 ++++--------------------- 3 files changed, 216 insertions(+), 1397 deletions(-) diff --git a/.github/workflows/nightly_build.yml b/.github/workflows/nightly_build.yml index cbec24de2e..d40d0dc935 100644 --- a/.github/workflows/nightly_build.yml +++ b/.github/workflows/nightly_build.yml @@ -208,12 +208,13 @@ jobs: frontend-tests-linux: if: github.repository == 'langflow-ai/langflow' && !inputs.skip_frontend_tests name: Run Frontend Tests - Linux - needs: create-nightly-tag + needs: [resolve-release-branch, create-nightly-tag] uses: ./.github/workflows/typescript_test.yml with: tests_folder: "tests" release: true runs-on: ubuntu-latest + ref: ${{ needs.resolve-release-branch.outputs.branch }} secrets: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} STORE_API_KEY: ${{ secrets.STORE_API_KEY }} @@ -223,16 +224,16 @@ jobs: frontend-tests-windows: if: github.repository == 'langflow-ai/langflow' && !inputs.skip_frontend_tests name: Run Frontend Tests - Windows - needs: create-nightly-tag - # Allow Windows tests to fail without blocking the nightly build - # This gives us visibility into Windows-specific issues while we stabilize the tests - # Remove this once Windows tests are consistently passing - continue-on-error: true + needs: [resolve-release-branch, create-nightly-tag] + # Windows tests are non-blocking - the release-nightly-build job only checks + # frontend-tests-linux.result, allowing Windows tests to fail without blocking the build. + # This gives us visibility into Windows-specific issues while we stabilize the tests. uses: ./.github/workflows/typescript_test.yml with: tests_folder: "tests" release: true runs-on: windows-latest + ref: ${{ needs.resolve-release-branch.outputs.branch }} secrets: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} STORE_API_KEY: ${{ secrets.STORE_API_KEY }} @@ -242,11 +243,12 @@ jobs: backend-unit-tests: if: github.repository == 'langflow-ai/langflow' && !inputs.skip_backend_tests name: Run Backend Unit Tests - needs: create-nightly-tag + needs: [resolve-release-branch, create-nightly-tag] uses: ./.github/workflows/python_test.yml with: python-versions: '["3.10", "3.11", "3.12", "3.13"]' runs-on: ${{ inputs['runs_on'] || github.event.inputs['runs_on'] || 'ubuntu-latest' }} + ref: ${{ needs.resolve-release-branch.outputs.branch }} secrets: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} diff --git a/.github/workflows/typescript_test.yml b/.github/workflows/typescript_test.yml index b79af7377c..c6a5a55d22 100644 --- a/.github/workflows/typescript_test.yml +++ b/.github/workflows/typescript_test.yml @@ -314,14 +314,14 @@ jobs: playwright-${{ env.PLAYWRIGHT_VERSION }}-chromium-${{ runner.os }} - name: Install Playwright Browser Dependencies (Linux) - if: steps.cache-playwright.outputs.cache-hit != 'true' && runner.os == 'Linux' && inputs.runs-on != 'self-hosted' + if: steps.cache-playwright.outputs.cache-hit != 'true' && runner.os == 'Linux' && !contains(inputs.runs-on, 'self-hosted') shell: bash run: | cd ./src/frontend npx playwright install --with-deps chromium - name: Install Playwright Browsers (Windows/macOS/Self-Hosted) - if: steps.cache-playwright.outputs.cache-hit != 'true' && (runner.os != 'Linux' || inputs.runs-on == 'self-hosted') + if: steps.cache-playwright.outputs.cache-hit != 'true' && (runner.os != 'Linux' || contains(inputs.runs-on, 'self-hosted')) shell: bash run: | cd ./src/frontend @@ -362,7 +362,7 @@ jobs: if: always() uses: actions/upload-artifact@v6 with: - name: blob-report-${{ matrix.shardIndex }} + name: blob-report-${{ runner.os }}-${{ matrix.shardIndex }} path: src/frontend/blob-report retention-days: 1 diff --git a/.secrets.baseline b/.secrets.baseline index 239d92baad..3551a59b6a 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -153,7 +153,7 @@ "filename": ".github/workflows/nightly_build.yml", "hashed_secret": "3e26d6750975d678acb8fa35a0f69237881576b0", "is_verified": false, - "line_number": 271, + "line_number": 347, "is_secret": false } ], @@ -435,7 +435,7 @@ "filename": "docs/docs/Develop/integrations-langfuse.mdx", "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", "is_verified": false, - "line_number": 100, + "line_number": 109, "is_secret": false } ], @@ -2443,7 +2443,7 @@ "filename": "src/backend/tests/unit/agentic/services/helpers/test_flow_loader.py", "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", "is_verified": false, - "line_number": 237, + "line_number": 219, "is_secret": false }, { @@ -2451,7 +2451,7 @@ "filename": "src/backend/tests/unit/agentic/services/helpers/test_flow_loader.py", "hashed_secret": "f8ca0d7266886f4b5be9adddc9b66017b3bf1a4b", "is_verified": false, - "line_number": 431, + "line_number": 413, "is_secret": false } ], @@ -2517,7 +2517,7 @@ "filename": "src/backend/tests/unit/api/v1/test_deployment_schemas.py", "hashed_secret": "99091d046a81493ef2545d8c3cd8e881e8702893", "is_verified": false, - "line_number": 51, + "line_number": 49, "is_secret": false }, { @@ -2525,7 +2525,7 @@ "filename": "src/backend/tests/unit/api/v1/test_deployment_schemas.py", "hashed_secret": "a62f2225bf70bfaccbc7f1ef2a397836717377de", "is_verified": false, - "line_number": 73, + "line_number": 71, "is_secret": false } ], @@ -2539,15 +2539,6 @@ "is_secret": false } ], - "src/backend/tests/unit/api/v1/test_mcp.py": [ - { - "type": "Secret Keyword", - "filename": "src/backend/tests/unit/api/v1/test_mcp.py", - "hashed_secret": "00980ac41a7332ed73a041592a79160e132c1a87", - "is_verified": false, - "line_number": 19 - } - ], "src/backend/tests/unit/api/v1/test_mcp_projects.py": [ { "type": "Secret Keyword", @@ -3022,7 +3013,7 @@ "filename": "src/backend/tests/unit/components/llm_operations/test_batch_run_component.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 40, + "line_number": 28, "is_secret": false } ], @@ -3076,7 +3067,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_agent_component.py", "hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030", "is_verified": false, - "line_number": 200, + "line_number": 459, "is_secret": false }, { @@ -3084,7 +3075,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_agent_component.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 239, + "line_number": 494, "is_secret": false }, { @@ -3092,7 +3083,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_agent_component.py", "hashed_secret": "2e7a7ee14caebf378fc32d6cf6f557f347c96773", "is_verified": false, - "line_number": 280, + "line_number": 528, "is_secret": false } ], @@ -3192,7 +3183,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_language_model_component.py", "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", "is_verified": false, - "line_number": 256, + "line_number": 271, "is_secret": false } ], @@ -3912,7 +3903,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5717a1ee406aa657a2dacc80e2816c8f7dcae7e2", "is_verified": false, - "line_number": 930, + "line_number": 863, "is_secret": false }, { @@ -3920,22 +3911,39 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d43f7dd3e51ce7cb8b9f3c26531a9e4c3a685785", "is_verified": false, - "line_number": 1464, + "line_number": 1360, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "697ccfba2c15c7cd8cf6307fd83a491b5c2c9e3e", + "hashed_secret": "f261488408e7c6c4f5e9721426e652052ff36092", "is_verified": false, - "line_number": 1985 + "line_number": 1484, + "is_secret": false + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "e47929f0dc35b0d4eea6b4c80fa8fcdedd506d23", + "is_verified": false, + "line_number": 1852, + "is_secret": false + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "a1d4fff4042a2dcb8c40293e53611f28a8721d8d", + "is_verified": false, + "line_number": 2239, + "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "42a810efde880424b1aec6d80360d8befa6c6521", "is_verified": false, - "line_number": 3103, + "line_number": 2908, "is_secret": false }, { @@ -3943,7 +3951,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7014798bb60656a38da4a856545a06c773976112", "is_verified": false, - "line_number": 5044, + "line_number": 4784, "is_secret": false }, { @@ -3951,7 +3959,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "36ec1308f12e9f599e3845a6ad07d6591fb0c301", "is_verified": false, - "line_number": 5467, + "line_number": 5195, "is_secret": false }, { @@ -3959,7 +3967,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b664327352fbd206a6ab38a8903fcabf1b1036a9", "is_verified": false, - "line_number": 5707, + "line_number": 5424, "is_secret": false }, { @@ -3967,7 +3975,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "59d43c509612f89c187f862266890ae0dd5fbb9a", "is_verified": false, - "line_number": 6049, + "line_number": 5753, "is_secret": false }, { @@ -3975,7 +3983,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "597868714ac401a26b57be0f857457eeb984be18", "is_verified": false, - "line_number": 9284, + "line_number": 8824, "is_secret": false }, { @@ -3983,7 +3991,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a178830480afc434270a7a53512d97758ec6d139", "is_verified": false, - "line_number": 9544, + "line_number": 9069, "is_secret": false }, { @@ -3991,7 +3999,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6c7724fbb114bfc616ee7bbbb3214e58907abaf1", "is_verified": false, - "line_number": 10024, + "line_number": 9524, "is_secret": false }, { @@ -3999,7 +4007,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "794ae8fea8a51838b63423486552f5398a47e6fc", "is_verified": false, - "line_number": 10459, + "line_number": 9941, "is_secret": false }, { @@ -4007,7 +4015,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "97e68220b094141268772b8b601fa6cd7432de92", "is_verified": false, - "line_number": 10747, + "line_number": 10204, "is_secret": false }, { @@ -4015,7 +4023,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a5af47522dc8a08746c380da81917bdd6eda057a", "is_verified": false, - "line_number": 11387, + "line_number": 10809, "is_secret": false }, { @@ -4023,7 +4031,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9f66cbc518bb79dc6f0a78af0aa52bbadefe2399", "is_verified": false, - "line_number": 11863, + "line_number": 11269, "is_secret": false }, { @@ -4031,7 +4039,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b3c2f9fda15f2d3816c7edc667bb24267be41a58", "is_verified": false, - "line_number": 12109, + "line_number": 11505, "is_secret": false }, { @@ -4039,7 +4047,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "72be8a21dd766c795332576419e6864eddc5db4e", "is_verified": false, - "line_number": 12340, + "line_number": 11727, "is_secret": false }, { @@ -4047,7 +4055,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1659f95bebec345a9e20e32fa71e8eac4f32f6a2", "is_verified": false, - "line_number": 14660, + "line_number": 13992, "is_secret": false }, { @@ -4055,7 +4063,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "15e5f792860e53987a756bed19fba1204a671e19", "is_verified": false, - "line_number": 15313, + "line_number": 14639, "is_secret": false }, { @@ -4063,7 +4071,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "91700b2378ff5d682d1d57cff40818586609015d", "is_verified": false, - "line_number": 16619, + "line_number": 15933, "is_secret": false }, { @@ -4071,7 +4079,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4b9838e8ff9ae89c3d23d3c853e0d07935618f00", "is_verified": false, - "line_number": 18578, + "line_number": 17874, "is_secret": false }, { @@ -4079,7 +4087,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1aa0d90add98cf00965a327eed79bf65d589e3ce", "is_verified": false, - "line_number": 19231, + "line_number": 18521, "is_secret": false }, { @@ -4087,7 +4095,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3698dc86868353e8ff5ed4564f78d45f1e6c08b7", "is_verified": false, - "line_number": 19884, + "line_number": 19168, "is_secret": false }, { @@ -4095,7 +4103,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "def35d315dd1ab5b0b4a05fc66847f6b73d0d853", "is_verified": false, - "line_number": 23149, + "line_number": 22403, "is_secret": false }, { @@ -4103,7 +4111,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "932fd84fba062a90506c3086945b53d4a6a3f169", "is_verified": false, - "line_number": 24455, + "line_number": 23697, "is_secret": false }, { @@ -4111,7 +4119,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d1a66c6f4de1b56cc6e24cb0a9c78f5ba0230f56", "is_verified": false, - "line_number": 25108, + "line_number": 24344, "is_secret": false }, { @@ -4119,7 +4127,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ddd35c43ce79e9b7ffc5f2894a1a92ad4da3297d", "is_verified": false, - "line_number": 25761, + "line_number": 24991, "is_secret": false }, { @@ -4127,7 +4135,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "bfa2c52c96d82a086f93287e90c3c889e292989e", "is_verified": false, - "line_number": 26414, + "line_number": 25638, "is_secret": false }, { @@ -4135,7 +4143,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ac40271e91c0d84c26bf3613a94545872a801998", "is_verified": false, - "line_number": 29679, + "line_number": 28873, "is_secret": false }, { @@ -4143,7 +4151,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "691ee8aa156c92e8ae67859d9463020d1d5bec11", "is_verified": false, - "line_number": 32291, + "line_number": 31461, "is_secret": false }, { @@ -4151,7 +4159,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5c33c0e3b39aa99ab095bf885b5f0688a9332b95", "is_verified": false, - "line_number": 32944, + "line_number": 32108, "is_secret": false }, { @@ -4159,7 +4167,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7bfbc3a0161bb7553a4e14c1eb459d30cf104fdf", "is_verified": false, - "line_number": 33597, + "line_number": 32755, "is_secret": false }, { @@ -4167,7 +4175,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "da7592fd328658e5e783f4d16c62d1d6f9d3acd4", "is_verified": false, - "line_number": 34250, + "line_number": 33402, "is_secret": false }, { @@ -4175,7 +4183,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f0e0ec0ff365d37b4fe860d63a9625ae529d3079", "is_verified": false, - "line_number": 34903, + "line_number": 34049, "is_secret": false }, { @@ -4183,7 +4191,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "23ce66526235ae0035cd8da3920a63c12c1c137a", "is_verified": false, - "line_number": 36862, + "line_number": 35990, "is_secret": false }, { @@ -4191,7 +4199,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a75703e0eb9d3a13d977bf04fa3cc42e9d3c94a2", "is_verified": false, - "line_number": 40127, + "line_number": 39225, "is_secret": false }, { @@ -4199,7 +4207,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2efc38920659af83e871e71004839171d3eaeba4", "is_verified": false, - "line_number": 42086, + "line_number": 41166, "is_secret": false }, { @@ -4207,7 +4215,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4f514a159d49488561a2efe8585871ce25141548", "is_verified": false, - "line_number": 42739, + "line_number": 41813, "is_secret": false }, { @@ -4215,7 +4223,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "adb1d675969fb13f1d752232026b9872475aca4b", "is_verified": false, - "line_number": 46004, + "line_number": 45048, "is_secret": false }, { @@ -4223,7 +4231,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "99b6e13d3c63e4f323776aec40dda0551bc0aa56", "is_verified": false, - "line_number": 46657, + "line_number": 45695, "is_secret": false }, { @@ -4231,7 +4239,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "914bd29a063d63f5cda65b9193612041bf1b04e9", "is_verified": false, - "line_number": 49269, + "line_number": 48283, "is_secret": false }, { @@ -4239,7 +4247,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "dca20b45dc15f99f985e0f87aacf5569b014ede8", "is_verified": false, - "line_number": 49922, + "line_number": 48930, "is_secret": false }, { @@ -4247,7 +4255,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9d48b00c8700d1dcab9108609465af7112840243", "is_verified": false, - "line_number": 50575, + "line_number": 49577, "is_secret": false }, { @@ -4255,7 +4263,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e72cb4e0e589831cbbd71514f5b6db7f0d09fd37", "is_verified": false, - "line_number": 53187, + "line_number": 52165, "is_secret": false }, { @@ -4263,7 +4271,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "753c0fdfc1e518b8c44cd464fb28080f3f94a9f4", "is_verified": false, - "line_number": 54072, + "line_number": 53039, "is_secret": false }, { @@ -4271,7 +4279,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ab9b46808af9e1164b7a21d946a2cefcbfa9b769", "is_verified": false, - "line_number": 54750, + "line_number": 53690, "is_secret": false }, { @@ -4279,7 +4287,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f4a6791157ee757125b9f46c2cf72ea19cdfb50e", "is_verified": false, - "line_number": 55198, + "line_number": 54110, "is_secret": false }, { @@ -4287,7 +4295,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "23a1f3524f7b992e6a225072ec63fc780f21da34", "is_verified": false, - "line_number": 55432, + "line_number": 54336, "is_secret": false }, { @@ -4295,7 +4303,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ed86f90a2d697ce47e0cff9b805f9761c4390048", "is_verified": false, - "line_number": 56885, + "line_number": 55727, "is_secret": false }, { @@ -4303,7 +4311,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9a96eb0a8598688b358bdb4b37cdd0019f9934c7", "is_verified": false, - "line_number": 57613, + "line_number": 56392, "is_secret": false }, { @@ -4311,7 +4319,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f846d79058594083280ddae8a1dbce083aaf6427", "is_verified": false, - "line_number": 57969, + "line_number": 56731, "is_secret": false }, { @@ -4319,7 +4327,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "fb0e32db4013340e8e096da4d7cba00c099d9542", "is_verified": false, - "line_number": 58102, + "line_number": 56858, "is_secret": false }, { @@ -4327,7 +4335,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b87e1fbb6e7bc22eafe7983b42d1b2bb7e4a60c2", "is_verified": false, - "line_number": 58294, + "line_number": 57035, "is_secret": false }, { @@ -4335,7 +4343,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d33546b1bd9d0542435f0f0946a6231edc175701", "is_verified": false, - "line_number": 59110, + "line_number": 57815, "is_secret": false }, { @@ -4343,7 +4351,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f9ca36cde6942f27b76eac83290189854ff3acd5", "is_verified": false, - "line_number": 59332, + "line_number": 58022, "is_secret": false }, { @@ -4351,7 +4359,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cf2179b851fcddc8328e4f40e46bec14a56747f8", "is_verified": false, - "line_number": 59407, + "line_number": 58093, "is_secret": false }, { @@ -4359,7 +4367,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cc008700c5e02d5c9a7ca24219677922a3f82f17", "is_verified": false, - "line_number": 59606, + "line_number": 58280, "is_secret": false }, { @@ -4367,7 +4375,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e054a834b866b974a3c4802bab3a96e64226dc2e", "is_verified": false, - "line_number": 60029, + "line_number": 58677, "is_secret": false }, { @@ -4375,7 +4383,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7863a3a0eb2ed4e19329374549df3cef1ab7ed16", "is_verified": false, - "line_number": 60888, + "line_number": 59511, "is_secret": false }, { @@ -4383,7 +4391,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "41da17b522aa582bfb292d52e8dd307bada14400", "is_verified": false, - "line_number": 62088, + "line_number": 60681, "is_secret": false }, { @@ -4391,7 +4399,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3632913dea26578a835e7c77ab7f4293d6ec1fe6", "is_verified": false, - "line_number": 62750, + "line_number": 61325, "is_secret": false }, { @@ -4399,7 +4407,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "0321ad34ab13e2dee03faa30b7645b932f24c4d6", "is_verified": false, - "line_number": 63940, + "line_number": 62466, "is_secret": false }, { @@ -4407,7 +4415,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cb2623c527dbce4b4e4ac56407979cad7149ea9a", "is_verified": false, - "line_number": 64202, + "line_number": 62710, "is_secret": false }, { @@ -4415,7 +4423,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "427a8b3d029b9d8020cf1648330b5b0a01eb7e65", "is_verified": false, - "line_number": 65917, + "line_number": 64348, "is_secret": false }, { @@ -4423,7 +4431,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2fd7f5b7d8a18e5143661e9f7b51a5d9d36a917a", "is_verified": false, - "line_number": 67131, + "line_number": 65495, "is_secret": false }, { @@ -4431,7 +4439,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5bc62a0f48f3bd1f4c9aa548fba2a0b0234fbbd8", "is_verified": false, - "line_number": 68633, + "line_number": 66913, "is_secret": false }, { @@ -4439,7 +4447,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "af246ca4758a5700d172533c40ff71522ae42d99", "is_verified": false, - "line_number": 68763, + "line_number": 67033, "is_secret": false }, { @@ -4447,7 +4455,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "8c21d79a6f6a5080d3521470b90b316c89080f83", "is_verified": false, - "line_number": 69220, + "line_number": 67478, "is_secret": false }, { @@ -4455,7 +4463,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1f01a7c11bde62eaf153d74394c282aa11574f2a", "is_verified": false, - "line_number": 69908, + "line_number": 68150, "is_secret": false }, { @@ -4463,7 +4471,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f1bd76c4aa6a65698214508669f07eb4c000a08b", "is_verified": false, - "line_number": 70167, + "line_number": 68403, "is_secret": false }, { @@ -4471,7 +4479,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a0378f1e9fbdee2f5792824f32acc16f95534180", "is_verified": false, - "line_number": 70621, + "line_number": 68841, "is_secret": false }, { @@ -4479,7 +4487,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "38245225908230e946fe961530d7b9bceca0d939", "is_verified": false, - "line_number": 71227, + "line_number": 69418, "is_secret": false }, { @@ -4487,7 +4495,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1d3051aec8271f45991f72a68fc9be099d3e92c1", "is_verified": false, - "line_number": 71433, + "line_number": 69612, "is_secret": false }, { @@ -4495,7 +4503,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "fb5c8ecafee0b2788e395c40f95b13eb45b464d8", "is_verified": false, - "line_number": 72300, + "line_number": 70415, "is_secret": false }, { @@ -4503,7 +4511,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d377ef5b36367a118f28c20eb126e6ec376e02ea", "is_verified": false, - "line_number": 72566, + "line_number": 70660, "is_secret": false }, { @@ -4511,7 +4519,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f0b2022fc412b5599ddcb48c6f8f87c5a53c26af", "is_verified": false, - "line_number": 73429, + "line_number": 71467, "is_secret": false }, { @@ -4519,7 +4527,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "78f473648929d4b9dd716a3874df23eca9a2d9ed", "is_verified": false, - "line_number": 73577, + "line_number": 71603, "is_secret": false }, { @@ -4527,7 +4535,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "446fa65c4cc6c235fabac8cb7d9241fb018514b8", "is_verified": false, - "line_number": 74948, + "line_number": 72899, "is_secret": false }, { @@ -4535,7 +4543,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9cc81943eb951dbf87e0fbb52da90903304b8db9", "is_verified": false, - "line_number": 75455, + "line_number": 73383, "is_secret": false }, { @@ -4543,7 +4551,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c69107ff29daaa4b30788f9cecd01d67bfc29b71", "is_verified": false, - "line_number": 75638, + "line_number": 73555, "is_secret": false }, { @@ -4551,7 +4559,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "54be28b91891ca9ef7b85502a59b32a2a03a5cb9", "is_verified": false, - "line_number": 75804, + "line_number": 73711, "is_secret": false }, { @@ -4559,7 +4567,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "60f948a394e2811370ba0bb6849777f217ab5274", "is_verified": false, - "line_number": 75977, + "line_number": 73875, "is_secret": false }, { @@ -4567,7 +4575,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 77491, + "line_number": 75355, "is_secret": false }, { @@ -4575,7 +4583,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "8b7be7f7fae86960989b939578d36ce617b498c6", "is_verified": false, - "line_number": 78428, + "line_number": 76231, "is_secret": false }, { @@ -4583,7 +4591,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a6c79dfeb177d34d195c2be48cc62800e629f115", "is_verified": false, - "line_number": 78951, + "line_number": 76722, "is_secret": false }, { @@ -4591,7 +4599,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ef417aa1e71aee527bd6fa12f4490f7d960ec54f", "is_verified": false, - "line_number": 79151, + "line_number": 76918, "is_secret": false }, { @@ -4599,7 +4607,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a356ce34c2d87126e0170adbec7077e4421af5a5", "is_verified": false, - "line_number": 80007, + "line_number": 77714, "is_secret": false }, { @@ -4607,7 +4615,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ccc2dbe82ed3362b249ba70e1bb009cebe0896da", "is_verified": false, - "line_number": 80957, + "line_number": 78622, "is_secret": false }, { @@ -4615,7 +4623,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6adc7a1a0903ddb6445918094b91181d7a0ad97b", "is_verified": false, - "line_number": 81277, + "line_number": 78914, "is_secret": false }, { @@ -4623,7 +4631,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "871ca8e6c9f88aba0a0e921f9d2f47120b55bdfc", "is_verified": false, - "line_number": 81692, + "line_number": 79301, "is_secret": false }, { @@ -4631,7 +4639,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "aa89465172bb84c366111aeeac493739fa195482", "is_verified": false, - "line_number": 82366, + "line_number": 79935, "is_secret": false }, { @@ -4639,7 +4647,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f746c3a4610d3b777453c50c95dc93598c8ad694", "is_verified": false, - "line_number": 82571, + "line_number": 80127, "is_secret": false }, { @@ -4647,7 +4655,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cd37616882a8287de17e49c9f91ecad00e0b0eae", "is_verified": false, - "line_number": 83549, + "line_number": 81057, "is_secret": false }, { @@ -4655,7 +4663,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9373f1ccd9980640fbcec9c685d34eac3c4b9867", "is_verified": false, - "line_number": 84345, + "line_number": 81802, "is_secret": false }, { @@ -4663,7 +4671,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "227af0d6a86c8c8619233794dcb4ea5ed1195be3", "is_verified": false, - "line_number": 84450, + "line_number": 81897, "is_secret": false }, { @@ -4671,7 +4679,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e907fb1ce9090d3555f18d6b2f2ea364d94c6217", "is_verified": false, - "line_number": 85416, + "line_number": 82813, "is_secret": false }, { @@ -4679,7 +4687,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a71266907512ba33211f8ee38accedd3b84bf81a", "is_verified": false, - "line_number": 87534, + "line_number": 84827, "is_secret": false }, { @@ -4687,22 +4695,15 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7bdcea8d073c580f79a0a1982007a226a2439dbb", "is_verified": false, - "line_number": 87827, + "line_number": 85102, "is_secret": false }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "bfbe6518e32c74fbe3fd483bcb773963c60d1358", - "is_verified": false, - "line_number": 88101 - }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "436a12a91365f61ddddfeb89b28089218f76b339", "is_verified": false, - "line_number": 88359, + "line_number": 85596, "is_secret": false }, { @@ -4710,7 +4711,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2a296c37a4e26df0a86488d15b17ac9d8ec0dfcd", "is_verified": false, - "line_number": 88643, + "line_number": 85866, "is_secret": false }, { @@ -4718,7 +4719,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3b991cdd2510d7fd1de8b025f0c7cbb9ac84b931", "is_verified": false, - "line_number": 88960, + "line_number": 86155, "is_secret": false }, { @@ -4726,7 +4727,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "573b6322edd45ab8e47491791f0909764e4a2f37", "is_verified": false, - "line_number": 89481, + "line_number": 86658, "is_secret": false }, { @@ -4734,7 +4735,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "8712dea5a30e8180a3f3cfb94b94dd2dce7db414", "is_verified": false, - "line_number": 89758, + "line_number": 86919, "is_secret": false }, { @@ -4742,7 +4743,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ad51c22552ff8cf9c6399db508ceed9dfca2c3c8", "is_verified": false, - "line_number": 91191, + "line_number": 88297, "is_secret": false }, { @@ -4750,7 +4751,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "327c06fdd2c0f5c179499c1702ab323443093c42", "is_verified": false, - "line_number": 91746, + "line_number": 88825, "is_secret": false }, { @@ -4758,7 +4759,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "47ce443fa2c6d2894c896af5bf215e058b9211a7", "is_verified": false, - "line_number": 93071, + "line_number": 90090, "is_secret": false }, { @@ -4766,7 +4767,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4676cd86733e19676c0704d55f548833f5273643", "is_verified": false, - "line_number": 93231, + "line_number": 90243, "is_secret": false }, { @@ -4774,7 +4775,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1348b145fa1a555461c1b790a2f66614781091e9", "is_verified": false, - "line_number": 93310, + "line_number": 90318, "is_secret": false }, { @@ -4782,7 +4783,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f16b56e2e46c4df6bf412a7a9b90c86957016575", "is_verified": false, - "line_number": 93715, + "line_number": 90699, "is_secret": false }, { @@ -4790,7 +4791,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a60fc256aaca59a332b08d58bd88404348a8bcb9", "is_verified": false, - "line_number": 93892, + "line_number": 90867, "is_secret": false }, { @@ -4798,7 +4799,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "04d0a3a2f4c5f2e29f293507958a27b53728c4e8", "is_verified": false, - "line_number": 94754, + "line_number": 91683, "is_secret": false }, { @@ -4806,7 +4807,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "dede8930d7418d092a12d114de08e444bf0dd82e", "is_verified": false, - "line_number": 95829, + "line_number": 92730, "is_secret": false }, { @@ -4814,7 +4815,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2a6863fb102cdb7c5f83b6afd00a794efb701566", "is_verified": false, - "line_number": 96157, + "line_number": 93039, "is_secret": false }, { @@ -4822,7 +4823,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4048123bacfc4d262ce85016a54ae55c8063edeb", "is_verified": false, - "line_number": 96390, + "line_number": 93252, "is_secret": false }, { @@ -4830,7 +4831,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "89a477e59f5dec443fcb5e0487bc4816bba70cad", "is_verified": false, - "line_number": 96573, + "line_number": 93428, "is_secret": false }, { @@ -4838,7 +4839,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3de7722ca43ab9676c384eb479950083fb2385bb", "is_verified": false, - "line_number": 97407, + "line_number": 94224, "is_secret": false }, { @@ -4846,7 +4847,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5ab5903f6c15a46a71c8db55e70119352304cc15", "is_verified": false, - "line_number": 98723, + "line_number": 95497, "is_secret": false }, { @@ -4854,7 +4855,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4311a7e1eaf728d4f31467084f690eff7493a9e4", "is_verified": false, - "line_number": 99305, + "line_number": 96054, "is_secret": false }, { @@ -4862,7 +4863,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "778447ca63a67ae59fea8307b5c436abe9ebeb4f", "is_verified": false, - "line_number": 99632, + "line_number": 96363, "is_secret": false }, { @@ -4870,7 +4871,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a229317aa176166d90f06d566b71932cff018638", "is_verified": false, - "line_number": 99818, + "line_number": 96528, "is_secret": false }, { @@ -4878,7 +4879,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b4e24e4256b2c7bc502403f3155d8c5b70dc490c", "is_verified": false, - "line_number": 100775, + "line_number": 97380, "is_secret": false }, { @@ -4886,7 +4887,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f11f7e5870cc432ebcfeeca740aa4d4c351a3d95", "is_verified": false, - "line_number": 101596, + "line_number": 98141, "is_secret": false }, { @@ -4894,7 +4895,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "39a0fb1555a8bcd605b65b7b76dc3af2652d1bb8", "is_verified": false, - "line_number": 101724, + "line_number": 98258, "is_secret": false }, { @@ -4902,7 +4903,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6516fc2579d674314a52e49462a84159df8479d9", "is_verified": false, - "line_number": 101909, + "line_number": 98428, "is_secret": false }, { @@ -4910,7 +4911,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9d8a13c0d939f6b5790c6cb248c86f0a4aecc3e1", "is_verified": false, - "line_number": 102074, + "line_number": 98582, "is_secret": false }, { @@ -4918,7 +4919,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c89fdd11b805574e2ba8910cf63c4273044b887c", "is_verified": false, - "line_number": 102304, + "line_number": 98785, "is_secret": false }, { @@ -4926,7 +4927,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d7b281574944c11832ceba7860689cc5a6606a56", "is_verified": false, - "line_number": 102427, + "line_number": 98895, "is_secret": false }, { @@ -4934,7 +4935,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "29f233f1b444c5844c32773ad0e4db968a2e60ae", "is_verified": false, - "line_number": 102747, + "line_number": 99188, "is_secret": false }, { @@ -4942,7 +4943,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7f06239cd274b6930ed82b15c617c6bee4e455aa", "is_verified": false, - "line_number": 103058, + "line_number": 99462, "is_secret": false }, { @@ -4950,7 +4951,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "162232a42f9158e82bb9cd3bac15ff2b2d7efc59", "is_verified": false, - "line_number": 103198, + "line_number": 99587, "is_secret": false }, { @@ -4958,7 +4959,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "76d1ef48b3fa8990b7a1aff6a177e5a5b2d018f8", "is_verified": false, - "line_number": 103330, + "line_number": 99710, "is_secret": false }, { @@ -4966,7 +4967,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "efa90513d8e6348d4005c33485f2981bb2cc3411", "is_verified": false, - "line_number": 103575, + "line_number": 99936, "is_secret": false }, { @@ -4974,7 +4975,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "df722750079d5f4eafa6946825f9dbc2dbb50330", "is_verified": false, - "line_number": 103791, + "line_number": 100138, "is_secret": false }, { @@ -4982,7 +4983,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cb9c3fb93bf299a1eeaa8085a06e791f72d1c245", "is_verified": false, - "line_number": 104549, + "line_number": 100862, "is_secret": false }, { @@ -4990,7 +4991,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cd50293b35634a61add9cbfeb9e48fbd44e78bc3", "is_verified": false, - "line_number": 105617, + "line_number": 101875, "is_secret": false }, { @@ -4998,7 +4999,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b016c72dac43dd6eec034d8b49aa1ded1cc0c6fa", "is_verified": false, - "line_number": 105859, + "line_number": 102108, "is_secret": false }, { @@ -5006,7 +5007,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "72979300428bd6d483243f5d1cb7430ed1ebf6d3", "is_verified": false, - "line_number": 106197, + "line_number": 102433, "is_secret": false }, { @@ -5014,7 +5015,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "08509f7cd25c76dc5ca97e64d21478a617fa193b", "is_verified": false, - "line_number": 106439, + "line_number": 102656, "is_secret": false }, { @@ -5022,7 +5023,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2acd680fbb8b14e98aea68cfef28ce81eba86c71", "is_verified": false, - "line_number": 107887, + "line_number": 104025, "is_secret": false }, { @@ -5030,7 +5031,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2dd96ae1cb8802018fb2f6a27926bb5f78957fb0", "is_verified": false, - "line_number": 108021, + "line_number": 104148, "is_secret": false }, { @@ -5038,7 +5039,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3b61d62768cfb3c63d994d7988306f1ebd2acd6b", "is_verified": false, - "line_number": 108207, + "line_number": 104325, "is_secret": false }, { @@ -5046,7 +5047,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d17b2d823c9310229ad18c83ffe543f49406ff9b", "is_verified": false, - "line_number": 108725, + "line_number": 104807, "is_secret": false }, { @@ -5054,7 +5055,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e7d0065af9edfc8b2de193bbe26faf5a636e0e9f", "is_verified": false, - "line_number": 108895, + "line_number": 104964, "is_secret": false }, { @@ -5062,7 +5063,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1bfed9fbd700374425b35a35ddf0f49a1e2469c2", "is_verified": false, - "line_number": 109321, + "line_number": 105370, "is_secret": false }, { @@ -5070,7 +5071,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "28ab1b1b9c8f05c055b6741bcaeab7337f5b5dc7", "is_verified": false, - "line_number": 109547, + "line_number": 105585, "is_secret": false }, { @@ -5078,7 +5079,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "76377d63ef7d864c0cefc5b38c762e16d3ab39b5", "is_verified": false, - "line_number": 109949, + "line_number": 105959, "is_secret": false }, { @@ -5086,7 +5087,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "562c0bc758bca6446fabf1aacf71f63d47bc62ed", "is_verified": false, - "line_number": 110084, + "line_number": 106083, "is_secret": false }, { @@ -5094,7 +5095,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "0113110e3d49f7b3a48e00192d478584449800e7", "is_verified": false, - "line_number": 110294, + "line_number": 106276, "is_secret": false }, { @@ -5102,7 +5103,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "8c8c106382a84413372980d0991df3e2a20c3797", "is_verified": false, - "line_number": 110499, + "line_number": 106469, "is_secret": false }, { @@ -5110,7 +5111,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1fd6ae619425c7c342273faad31539a8d2f61787", "is_verified": false, - "line_number": 111083, + "line_number": 107014, "is_secret": false }, { @@ -5118,7 +5119,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4ffc5d8cd514be957c9b87ac84c66205ab6d08d3", "is_verified": false, - "line_number": 112088, + "line_number": 107966, "is_secret": false }, { @@ -5126,7 +5127,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c0576697d180e97695dd29883a4e1ccb01b2f653", "is_verified": false, - "line_number": 112501, + "line_number": 108354, "is_secret": false }, { @@ -5134,7 +5135,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "497af5dcf573db44fc30ac071ebb008e7ac37669", "is_verified": false, - "line_number": 112840, + "line_number": 108671, "is_secret": false }, { @@ -5142,7 +5143,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6a5f46048b547457e72572c2d38fb1046591ca71", "is_verified": false, - "line_number": 113887, + "line_number": 109670, "is_secret": false }, { @@ -5150,7 +5151,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7d770d0728208206c486b536b06077c9953d21f2", "is_verified": false, - "line_number": 114271, + "line_number": 110039, "is_secret": false }, { @@ -5158,7 +5159,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6fb5a96582d72c338a3f3a7d8144190630d64133", "is_verified": false, - "line_number": 114673, + "line_number": 110427, "is_secret": false }, { @@ -5166,7 +5167,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "270c9abba84329e1be2fa7130b44134c23891f1f", "is_verified": false, - "line_number": 115011, + "line_number": 110756, "is_secret": false }, { @@ -5174,7 +5175,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a781a6064ef5e2cb085282bb1912e65232fb55d1", "is_verified": false, - "line_number": 115416, + "line_number": 111151, "is_secret": false }, { @@ -5182,7 +5183,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4943819ce50b5209882a4b91dd4b6140260ec428", "is_verified": false, - "line_number": 115978, + "line_number": 111686, "is_secret": false }, { @@ -5190,7 +5191,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "12690ce26e17773a811f28f4ce4fc91b7e42a747", "is_verified": false, - "line_number": 116287, + "line_number": 111978, "is_secret": false }, { @@ -5198,7 +5199,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b8e5d31cffa4e410fe6b03a0855c592bceb48d82", "is_verified": false, - "line_number": 116807, + "line_number": 112473, "is_secret": false }, { @@ -5206,7 +5207,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ef3435e29e3a2c5dcbbb633856c85561848cd995", "is_verified": false, - "line_number": 117184, + "line_number": 112838, "is_secret": false }, { @@ -5214,7 +5215,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "be1df677c309419f4efa0ac48afb2a573beeb95d", "is_verified": false, - "line_number": 117899, + "line_number": 113508, "is_secret": false }, { @@ -5222,7 +5223,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5d65cf087adec89fb18354508030304fc3809586", "is_verified": false, - "line_number": 118166, + "line_number": 113771, "is_secret": false }, { @@ -5230,1200 +5231,16 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "76913f65d6da6c5660de587c8a3e807aafa039dd", "is_verified": false, - "line_number": 118378, + "line_number": 113972, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "956de3d3a5f541e665c53428b70e0c2be27977ce", + "hashed_secret": "388f5f398b4e4d7f3f069b4be2743b563c6618ba", "is_verified": false, - "line_number": 118542 - } - ], - "src/lfx/src/lfx/_assets/stable_hash_history.json": [ - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "5717a1ee406aa657a2dacc80e2816c8f7dcae7e2", - "is_verified": false, - "line_number": 16 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "d43f7dd3e51ce7cb8b9f3c26531a9e4c3a685785", - "is_verified": false, - "line_number": 34 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "42a810efde880424b1aec6d80360d8befa6c6521", - "is_verified": false, - "line_number": 70 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "7014798bb60656a38da4a856545a06c773976112", - "is_verified": false, - "line_number": 94 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "36ec1308f12e9f599e3845a6ad07d6591fb0c301", - "is_verified": false, - "line_number": 100 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "b664327352fbd206a6ab38a8903fcabf1b1036a9", - "is_verified": false, - "line_number": 106 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "59d43c509612f89c187f862266890ae0dd5fbb9a", - "is_verified": false, - "line_number": 112 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "597868714ac401a26b57be0f857457eeb984be18", - "is_verified": false, - "line_number": 184 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a178830480afc434270a7a53512d97758ec6d139", - "is_verified": false, - "line_number": 190 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "6c7724fbb114bfc616ee7bbbb3214e58907abaf1", - "is_verified": false, - "line_number": 196 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "794ae8fea8a51838b63423486552f5398a47e6fc", - "is_verified": false, - "line_number": 202 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "97e68220b094141268772b8b601fa6cd7432de92", - "is_verified": false, - "line_number": 208 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a5af47522dc8a08746c380da81917bdd6eda057a", - "is_verified": false, - "line_number": 220 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "9f66cbc518bb79dc6f0a78af0aa52bbadefe2399", - "is_verified": false, - "line_number": 226 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "b3c2f9fda15f2d3816c7edc667bb24267be41a58", - "is_verified": false, - "line_number": 232 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "72be8a21dd766c795332576419e6864eddc5db4e", - "is_verified": false, - "line_number": 238 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "1659f95bebec345a9e20e32fa71e8eac4f32f6a2", - "is_verified": false, - "line_number": 268 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "15e5f792860e53987a756bed19fba1204a671e19", - "is_verified": false, - "line_number": 274 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "91700b2378ff5d682d1d57cff40818586609015d", - "is_verified": false, - "line_number": 286 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4b9838e8ff9ae89c3d23d3c853e0d07935618f00", - "is_verified": false, - "line_number": 304 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "1aa0d90add98cf00965a327eed79bf65d589e3ce", - "is_verified": false, - "line_number": 310 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "3698dc86868353e8ff5ed4564f78d45f1e6c08b7", - "is_verified": false, - "line_number": 316 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "def35d315dd1ab5b0b4a05fc66847f6b73d0d853", - "is_verified": false, - "line_number": 352 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "932fd84fba062a90506c3086945b53d4a6a3f169", - "is_verified": false, - "line_number": 364 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "d1a66c6f4de1b56cc6e24cb0a9c78f5ba0230f56", - "is_verified": false, - "line_number": 370 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ddd35c43ce79e9b7ffc5f2894a1a92ad4da3297d", - "is_verified": false, - "line_number": 376 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "bfa2c52c96d82a086f93287e90c3c889e292989e", - "is_verified": false, - "line_number": 382 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ac40271e91c0d84c26bf3613a94545872a801998", - "is_verified": false, - "line_number": 412 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "691ee8aa156c92e8ae67859d9463020d1d5bec11", - "is_verified": false, - "line_number": 436 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f0e0ec0ff365d37b4fe860d63a9625ae529d3079", - "is_verified": false, - "line_number": 442 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "5c33c0e3b39aa99ab095bf885b5f0688a9332b95", - "is_verified": false, - "line_number": 448 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "7bfbc3a0161bb7553a4e14c1eb459d30cf104fdf", - "is_verified": false, - "line_number": 460 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "da7592fd328658e5e783f4d16c62d1d6f9d3acd4", - "is_verified": false, - "line_number": 466 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "23ce66526235ae0035cd8da3920a63c12c1c137a", - "is_verified": false, - "line_number": 478 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a75703e0eb9d3a13d977bf04fa3cc42e9d3c94a2", - "is_verified": false, - "line_number": 508 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "2efc38920659af83e871e71004839171d3eaeba4", - "is_verified": false, - "line_number": 526 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4f514a159d49488561a2efe8585871ce25141548", - "is_verified": false, - "line_number": 532 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "adb1d675969fb13f1d752232026b9872475aca4b", - "is_verified": false, - "line_number": 562 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "99b6e13d3c63e4f323776aec40dda0551bc0aa56", - "is_verified": false, - "line_number": 568 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "914bd29a063d63f5cda65b9193612041bf1b04e9", - "is_verified": false, - "line_number": 592 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "dca20b45dc15f99f985e0f87aacf5569b014ede8", - "is_verified": false, - "line_number": 598 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "9d48b00c8700d1dcab9108609465af7112840243", - "is_verified": false, - "line_number": 604 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "e72cb4e0e589831cbbd71514f5b6db7f0d09fd37", - "is_verified": false, - "line_number": 628 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "753c0fdfc1e518b8c44cd464fb28080f3f94a9f4", - "is_verified": false, - "line_number": 640 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ab9b46808af9e1164b7a21d946a2cefcbfa9b769", - "is_verified": false, - "line_number": 652 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f4a6791157ee757125b9f46c2cf72ea19cdfb50e", - "is_verified": false, - "line_number": 664 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "23a1f3524f7b992e6a225072ec63fc780f21da34", - "is_verified": false, - "line_number": 676 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ed86f90a2d697ce47e0cff9b805f9761c4390048", - "is_verified": false, - "line_number": 694 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "9a96eb0a8598688b358bdb4b37cdd0019f9934c7", - "is_verified": false, - "line_number": 712 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f846d79058594083280ddae8a1dbce083aaf6427", - "is_verified": false, - "line_number": 724 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "fb0e32db4013340e8e096da4d7cba00c099d9542", - "is_verified": false, - "line_number": 730 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "b87e1fbb6e7bc22eafe7983b42d1b2bb7e4a60c2", - "is_verified": false, - "line_number": 736 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "cc008700c5e02d5c9a7ca24219677922a3f82f17", - "is_verified": false, - "line_number": 748 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "7863a3a0eb2ed4e19329374549df3cef1ab7ed16", - "is_verified": false, - "line_number": 760 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "41da17b522aa582bfb292d52e8dd307bada14400", - "is_verified": false, - "line_number": 766 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "3632913dea26578a835e7c77ab7f4293d6ec1fe6", - "is_verified": false, - "line_number": 772 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "e054a834b866b974a3c4802bab3a96e64226dc2e", - "is_verified": false, - "line_number": 784 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "d33546b1bd9d0542435f0f0946a6231edc175701", - "is_verified": false, - "line_number": 796 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "0321ad34ab13e2dee03faa30b7645b932f24c4d6", - "is_verified": false, - "line_number": 820 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "cb2623c527dbce4b4e4ac56407979cad7149ea9a", - "is_verified": false, - "line_number": 826 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f9ca36cde6942f27b76eac83290189854ff3acd5", - "is_verified": false, - "line_number": 832 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "cf2179b851fcddc8328e4f40e46bec14a56747f8", - "is_verified": false, - "line_number": 838 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "427a8b3d029b9d8020cf1648330b5b0a01eb7e65", - "is_verified": false, - "line_number": 862 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "2fd7f5b7d8a18e5143661e9f7b51a5d9d36a917a", - "is_verified": false, - "line_number": 886 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "5bc62a0f48f3bd1f4c9aa548fba2a0b0234fbbd8", - "is_verified": false, - "line_number": 904 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "af246ca4758a5700d172533c40ff71522ae42d99", - "is_verified": false, - "line_number": 910 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "8c21d79a6f6a5080d3521470b90b316c89080f83", - "is_verified": false, - "line_number": 922 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "baacde28e4cf5095a02fd332813556fb52842d7b", - "is_verified": false, - "line_number": 933 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f1bd76c4aa6a65698214508669f07eb4c000a08b", - "is_verified": false, - "line_number": 938 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a0378f1e9fbdee2f5792824f32acc16f95534180", - "is_verified": false, - "line_number": 944 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "38245225908230e946fe961530d7b9bceca0d939", - "is_verified": false, - "line_number": 962 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "1d3051aec8271f45991f72a68fc9be099d3e92c1", - "is_verified": false, - "line_number": 968 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "fb5c8ecafee0b2788e395c40f95b13eb45b464d8", - "is_verified": false, - "line_number": 998 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "d377ef5b36367a118f28c20eb126e6ec376e02ea", - "is_verified": false, - "line_number": 1010 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "78f473648929d4b9dd716a3874df23eca9a2d9ed", - "is_verified": false, - "line_number": 1040 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f0b2022fc412b5599ddcb48c6f8f87c5a53c26af", - "is_verified": false, - "line_number": 1046 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "446fa65c4cc6c235fabac8cb7d9241fb018514b8", - "is_verified": false, - "line_number": 1088 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "9cc81943eb951dbf87e0fbb52da90903304b8db9", - "is_verified": false, - "line_number": 1100 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "c69107ff29daaa4b30788f9cecd01d67bfc29b71", - "is_verified": false, - "line_number": 1106 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "60f948a394e2811370ba0bb6849777f217ab5274", - "is_verified": false, - "line_number": 1112 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "54be28b91891ca9ef7b85502a59b32a2a03a5cb9", - "is_verified": false, - "line_number": 1118 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", - "is_verified": false, - "line_number": 1142 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "8b7be7f7fae86960989b939578d36ce617b498c6", - "is_verified": false, - "line_number": 1172 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a6c79dfeb177d34d195c2be48cc62800e629f115", - "is_verified": false, - "line_number": 1190 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ef417aa1e71aee527bd6fa12f4490f7d960ec54f", - "is_verified": false, - "line_number": 1196 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a356ce34c2d87126e0170adbec7077e4421af5a5", - "is_verified": false, - "line_number": 1220 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ccc2dbe82ed3362b249ba70e1bb009cebe0896da", - "is_verified": false, - "line_number": 1238 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "6adc7a1a0903ddb6445918094b91181d7a0ad97b", - "is_verified": false, - "line_number": 1262 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "871ca8e6c9f88aba0a0e921f9d2f47120b55bdfc", - "is_verified": false, - "line_number": 1292 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "aa89465172bb84c366111aeeac493739fa195482", - "is_verified": false, - "line_number": 1304 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f746c3a4610d3b777453c50c95dc93598c8ad694", - "is_verified": false, - "line_number": 1310 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "cd37616882a8287de17e49c9f91ecad00e0b0eae", - "is_verified": false, - "line_number": 1328 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "9373f1ccd9980640fbcec9c685d34eac3c4b9867", - "is_verified": false, - "line_number": 1358 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "227af0d6a86c8c8619233794dcb4ea5ed1195be3", - "is_verified": false, - "line_number": 1364 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "e907fb1ce9090d3555f18d6b2f2ea364d94c6217", - "is_verified": false, - "line_number": 1370 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "8b4eda70b9518efe3b9b2d03b791324ef4b913e7", - "is_verified": false, - "line_number": 1406 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "bfbe6518e32c74fbe3fd483bcb773963c60d1358", - "is_verified": false, - "line_number": 1407 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "15978126ab20054ba1215d2250564590cb6ba403", - "is_verified": false, - "line_number": 1412 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "436a12a91365f61ddddfeb89b28089218f76b339", - "is_verified": false, - "line_number": 1413 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "7bdcea8d073c580f79a0a1982007a226a2439dbb", - "is_verified": false, - "line_number": 1418 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "2a296c37a4e26df0a86488d15b17ac9d8ec0dfcd", - "is_verified": false, - "line_number": 1424 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "3b991cdd2510d7fd1de8b025f0c7cbb9ac84b931", - "is_verified": false, - "line_number": 1430 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "573b6322edd45ab8e47491791f0909764e4a2f37", - "is_verified": false, - "line_number": 1442 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "8712dea5a30e8180a3f3cfb94b94dd2dce7db414", - "is_verified": false, - "line_number": 1448 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ad51c22552ff8cf9c6399db508ceed9dfca2c3c8", - "is_verified": false, - "line_number": 1473 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "591e20afc4fe981a10fed4cff9ea150e520d8585", - "is_verified": false, - "line_number": 1478 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "327c06fdd2c0f5c179499c1702ab323443093c42", - "is_verified": false, - "line_number": 1479 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "47ce443fa2c6d2894c896af5bf215e058b9211a7", - "is_verified": false, - "line_number": 1502 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4676cd86733e19676c0704d55f548833f5273643", - "is_verified": false, - "line_number": 1508 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f16b56e2e46c4df6bf412a7a9b90c86957016575", - "is_verified": false, - "line_number": 1514 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a60fc256aaca59a332b08d58bd88404348a8bcb9", - "is_verified": false, - "line_number": 1520 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "04d0a3a2f4c5f2e29f293507958a27b53728c4e8", - "is_verified": false, - "line_number": 1532 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "dede8930d7418d092a12d114de08e444bf0dd82e", - "is_verified": false, - "line_number": 1550 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "2a6863fb102cdb7c5f83b6afd00a794efb701566", - "is_verified": false, - "line_number": 1562 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "89a477e59f5dec443fcb5e0487bc4816bba70cad", - "is_verified": false, - "line_number": 1568 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4048123bacfc4d262ce85016a54ae55c8063edeb", - "is_verified": false, - "line_number": 1574 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "3de7722ca43ab9676c384eb479950083fb2385bb", - "is_verified": false, - "line_number": 1580 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "5ab5903f6c15a46a71c8db55e70119352304cc15", - "is_verified": false, - "line_number": 1598 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4311a7e1eaf728d4f31467084f690eff7493a9e4", - "is_verified": false, - "line_number": 1610 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "778447ca63a67ae59fea8307b5c436abe9ebeb4f", - "is_verified": false, - "line_number": 1616 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a229317aa176166d90f06d566b71932cff018638", - "is_verified": false, - "line_number": 1622 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "b4e24e4256b2c7bc502403f3155d8c5b70dc490c", - "is_verified": false, - "line_number": 1646 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "f11f7e5870cc432ebcfeeca740aa4d4c351a3d95", - "is_verified": false, - "line_number": 1676 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "39a0fb1555a8bcd605b65b7b76dc3af2652d1bb8", - "is_verified": false, - "line_number": 1682 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "6516fc2579d674314a52e49462a84159df8479d9", - "is_verified": false, - "line_number": 1688 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "9d8a13c0d939f6b5790c6cb248c86f0a4aecc3e1", - "is_verified": false, - "line_number": 1694 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "c89fdd11b805574e2ba8910cf63c4273044b887c", - "is_verified": false, - "line_number": 1706 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "d7b281574944c11832ceba7860689cc5a6606a56", - "is_verified": false, - "line_number": 1712 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "29f233f1b444c5844c32773ad0e4db968a2e60ae", - "is_verified": false, - "line_number": 1724 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "7f06239cd274b6930ed82b15c617c6bee4e455aa", - "is_verified": false, - "line_number": 1736 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "162232a42f9158e82bb9cd3bac15ff2b2d7efc59", - "is_verified": false, - "line_number": 1742 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "76d1ef48b3fa8990b7a1aff6a177e5a5b2d018f8", - "is_verified": false, - "line_number": 1748 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "efa90513d8e6348d4005c33485f2981bb2cc3411", - "is_verified": false, - "line_number": 1754 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "df722750079d5f4eafa6946825f9dbc2dbb50330", - "is_verified": false, - "line_number": 1760 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "cb9c3fb93bf299a1eeaa8085a06e791f72d1c245", - "is_verified": false, - "line_number": 1766 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "cd50293b35634a61add9cbfeb9e48fbd44e78bc3", - "is_verified": false, - "line_number": 1790 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "b016c72dac43dd6eec034d8b49aa1ded1cc0c6fa", - "is_verified": false, - "line_number": 1796 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "72979300428bd6d483243f5d1cb7430ed1ebf6d3", - "is_verified": false, - "line_number": 1802 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "08509f7cd25c76dc5ca97e64d21478a617fa193b", - "is_verified": false, - "line_number": 1814 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "2acd680fbb8b14e98aea68cfef28ce81eba86c71", - "is_verified": false, - "line_number": 1850 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "2dd96ae1cb8802018fb2f6a27926bb5f78957fb0", - "is_verified": false, - "line_number": 1856 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "3b61d62768cfb3c63d994d7988306f1ebd2acd6b", - "is_verified": false, - "line_number": 1862 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "d17b2d823c9310229ad18c83ffe543f49406ff9b", - "is_verified": false, - "line_number": 1874 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "e7d0065af9edfc8b2de193bbe26faf5a636e0e9f", - "is_verified": false, - "line_number": 1886 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "1bfed9fbd700374425b35a35ddf0f49a1e2469c2", - "is_verified": false, - "line_number": 1892 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "28ab1b1b9c8f05c055b6741bcaeab7337f5b5dc7", - "is_verified": false, - "line_number": 1898 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "76377d63ef7d864c0cefc5b38c762e16d3ab39b5", - "is_verified": false, - "line_number": 1904 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "562c0bc758bca6446fabf1aacf71f63d47bc62ed", - "is_verified": false, - "line_number": 1910 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "0113110e3d49f7b3a48e00192d478584449800e7", - "is_verified": false, - "line_number": 1916 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "8c8c106382a84413372980d0991df3e2a20c3797", - "is_verified": false, - "line_number": 1922 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "1fd6ae619425c7c342273faad31539a8d2f61787", - "is_verified": false, - "line_number": 1928 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4ffc5d8cd514be957c9b87ac84c66205ab6d08d3", - "is_verified": false, - "line_number": 1970 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "c0576697d180e97695dd29883a4e1ccb01b2f653", - "is_verified": false, - "line_number": 1982 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "497af5dcf573db44fc30ac071ebb008e7ac37669", - "is_verified": false, - "line_number": 2000 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "7d770d0728208206c486b536b06077c9953d21f2", - "is_verified": false, - "line_number": 2018 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "6a5f46048b547457e72572c2d38fb1046591ca71", - "is_verified": false, - "line_number": 2024 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "270c9abba84329e1be2fa7130b44134c23891f1f", - "is_verified": false, - "line_number": 2030 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "6fb5a96582d72c338a3f3a7d8144190630d64133", - "is_verified": false, - "line_number": 2036 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a781a6064ef5e2cb085282bb1912e65232fb55d1", - "is_verified": false, - "line_number": 2042 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "4943819ce50b5209882a4b91dd4b6140260ec428", - "is_verified": false, - "line_number": 2054 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "12690ce26e17773a811f28f4ce4fc91b7e42a747", - "is_verified": false, - "line_number": 2066 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "b8e5d31cffa4e410fe6b03a0855c592bceb48d82", - "is_verified": false, - "line_number": 2078 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "ef3435e29e3a2c5dcbbb633856c85561848cd995", - "is_verified": false, - "line_number": 2090 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "be1df677c309419f4efa0ac48afb2a573beeb95d", - "is_verified": false, - "line_number": 2108 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "5d65cf087adec89fb18354508030304fc3809586", - "is_verified": false, - "line_number": 2114 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "76913f65d6da6c5660de587c8a3e807aafa039dd", - "is_verified": false, - "line_number": 2126 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "a71266907512ba33211f8ee38accedd3b84bf81a", - "is_verified": false, - "line_number": 2132 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "697ccfba2c15c7cd8cf6307fd83a491b5c2c9e3e", - "is_verified": false, - "line_number": 2150 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", - "hashed_secret": "1f01a7c11bde62eaf153d74394c282aa11574f2a", - "is_verified": false, - "line_number": 2162 + "line_number": 114125, + "is_secret": false } ], "src/lfx/src/lfx/base/models/unified_models.py": [ @@ -6432,7 +5249,7 @@ "filename": "src/lfx/src/lfx/base/models/unified_models.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 1239, + "line_number": 1185, "is_secret": false }, { @@ -6440,7 +5257,7 @@ "filename": "src/lfx/src/lfx/base/models/unified_models.py", "hashed_secret": "3f2df46921dd8e2c36e2ce85238705ac0774c74a", "is_verified": false, - "line_number": 1250, + "line_number": 1196, "is_secret": false }, { @@ -6448,7 +5265,7 @@ "filename": "src/lfx/src/lfx/base/models/unified_models.py", "hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030", "is_verified": false, - "line_number": 1264, + "line_number": 1210, "is_secret": false } ], @@ -6714,7 +5531,7 @@ "filename": "src/lfx/tests/unit/inputs/test_max_tokens_propagation.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 121, + "line_number": 107, "is_secret": false }, { @@ -6722,7 +5539,7 @@ "filename": "src/lfx/tests/unit/inputs/test_max_tokens_propagation.py", "hashed_secret": "e9b4dce312643ee0e1bd0561a50d9d5a7e5a2be1", "is_verified": false, - "line_number": 154, + "line_number": 140, "is_secret": false }, { @@ -6730,7 +5547,7 @@ "filename": "src/lfx/tests/unit/inputs/test_max_tokens_propagation.py", "hashed_secret": "3f2df46921dd8e2c36e2ce85238705ac0774c74a", "is_verified": false, - "line_number": 234, + "line_number": 220, "is_secret": false } ], @@ -6857,5 +5674,5 @@ } ] }, - "generated_at": "2026-03-19T00:50:07Z" + "generated_at": "2026-03-17T14:09:34Z" } From 15c803a7bc8144f3ec92acf6615b34732ecf6c87 Mon Sep 17 00:00:00 2001 From: Eric Hare Date: Fri, 20 Mar 2026 14:37:10 -0700 Subject: [PATCH 3/3] fix: Sanitize folder names for CodeQL (#12263) --- .secrets.baseline | 4 +-- .../base/langflow/api/utils/__init__.py | 2 ++ src/backend/base/langflow/api/utils/core.py | 13 +++++++ src/backend/base/langflow/api/v1/files.py | 34 +++++++------------ src/backend/tests/unit/api/v1/test_files.py | 4 +-- 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/.secrets.baseline b/.secrets.baseline index 3551a59b6a..b50516ca29 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -1325,7 +1325,7 @@ "filename": "src/backend/base/langflow/api/utils/core.py", "hashed_secret": "e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4", "is_verified": false, - "line_number": 440, + "line_number": 453, "is_secret": false } ], @@ -5674,5 +5674,5 @@ } ] }, - "generated_at": "2026-03-17T14:09:34Z" + "generated_at": "2026-03-19T21:43:41Z" } diff --git a/src/backend/base/langflow/api/utils/__init__.py b/src/backend/base/langflow/api/utils/__init__.py index 918cb3b45c..e0a0f381ef 100644 --- a/src/backend/base/langflow/api/utils/__init__.py +++ b/src/backend/base/langflow/api/utils/__init__.py @@ -16,6 +16,7 @@ from langflow.api.utils.core import ( DbSessionReadOnly, EventDeliveryType, ValidatedFileName, + ValidatedFolderName, build_and_cache_graph_from_data, build_graph_from_data, build_graph_from_db, @@ -55,6 +56,7 @@ __all__ = [ # Enums "EventDeliveryType", "ValidatedFileName", + "ValidatedFolderName", "build_and_cache_graph_from_data", "build_graph_from_data", "build_graph_from_db", diff --git a/src/backend/base/langflow/api/utils/core.py b/src/backend/base/langflow/api/utils/core.py index 73412cde60..c57d91036a 100644 --- a/src/backend/base/langflow/api/utils/core.py +++ b/src/backend/base/langflow/api/utils/core.py @@ -55,6 +55,19 @@ def _get_validated_file_name(file_name: str = Path()) -> str: ValidatedFileName = Annotated[str, Depends(_get_validated_file_name)] + +def _get_validated_folder_name(folder_name: str = Path()) -> str: + """Validate folder_name path parameter to prevent path traversal attacks.""" + if ".." in folder_name or "/" in folder_name or "\\" in folder_name: + raise HTTPException( + status_code=400, + detail="Invalid folder name. Use a simple folder name without directory paths or '..'.", + ) + return folder_name + + +ValidatedFolderName = Annotated[str, Depends(_get_validated_folder_name)] + # Message to raise if we're in an Astra cloud environment and a component or endpoint is not supported disable_endpoint_in_astra_cloud_msg = "This endpoint is not supported in Astra cloud environment." diff --git a/src/backend/base/langflow/api/v1/files.py b/src/backend/base/langflow/api/v1/files.py index b604ef5853..365c61f5eb 100644 --- a/src/backend/base/langflow/api/v1/files.py +++ b/src/backend/base/langflow/api/v1/files.py @@ -12,7 +12,7 @@ from fastapi.responses import StreamingResponse from lfx.services.settings.service import SettingsService from lfx.utils.helpers import build_content_type_from_extension -from langflow.api.utils import CurrentActiveUser, DbSession, ValidatedFileName +from langflow.api.utils import CurrentActiveUser, DbSession, ValidatedFileName, ValidatedFolderName from langflow.api.v1.schemas import UploadFileResponse from langflow.services.database.models.flow.model import Flow from langflow.services.deps import get_settings_service, get_storage_service @@ -167,8 +167,8 @@ async def download_image( @router.get("/profile_pictures/{folder_name}/{file_name}") async def download_profile_picture( - folder_name: str, - file_name: str, + folder_name: ValidatedFolderName, + file_name: ValidatedFileName, settings_service: Annotated[SettingsService, Depends(get_settings_service)], ): """Download profile picture from local filesystem. @@ -177,34 +177,27 @@ async def download_profile_picture( then fallback to the package's bundled profile_pictures directory. """ try: - # SECURITY: Validate inputs to prevent path traversal attacks - # Reject any path components that contain directory traversal sequences - if ".." in folder_name or ".." in file_name: - raise HTTPException( - status_code=400, detail="Path traversal patterns ('..') are not allowed in folder or file names" - ) - # Only allow specific folder names (dynamic from config + package) allowed_folders = _get_allowed_profile_picture_folders(settings_service) if folder_name not in allowed_folders: raise HTTPException(status_code=400, detail=f"Folder must be one of: {', '.join(sorted(allowed_folders))}") - # Validate file name contains no path separators - if "/" in file_name or "\\" in file_name: - raise HTTPException(status_code=400, detail="File name cannot contain path separators ('/' or '\\')") + # SECURITY: Extract only the final path component to prevent path traversal. + # This is defense-in-depth on top of ValidatedFileName/ValidatedFolderName. + safe_folder = Path(folder_name).name + safe_file = Path(file_name).name - extension = file_name.split(".")[-1] + extension = safe_file.split(".")[-1] config_dir = settings_service.settings.config_dir config_path = Path(config_dir).resolve() # type: ignore[arg-type] # Construct the file path - file_path = (config_path / "profile_pictures" / folder_name / file_name).resolve() + file_path = (config_path / "profile_pictures" / safe_folder / safe_file).resolve() # SECURITY: Verify the resolved path is still within the allowed directory # This prevents path traversal even if symbolic links are involved allowed_base = (config_path / "profile_pictures").resolve() - if not str(file_path).startswith(str(allowed_base)): - # Return 404 to prevent path traversal attempts from revealing system structure + if not file_path.is_relative_to(allowed_base): raise HTTPException(status_code=404, detail="Profile picture not found") # Fallback to package bundled profile pictures if not found in config_dir @@ -212,18 +205,17 @@ async def download_profile_picture( from langflow.initial_setup import setup package_base = Path(setup.__file__).parent / "profile_pictures" - package_path = (package_base / folder_name / file_name).resolve() + package_path = (package_base / safe_folder / safe_file).resolve() # SECURITY: Verify package path is also within allowed directory allowed_package_base = package_base.resolve() - if not str(package_path).startswith(str(allowed_package_base)): - # Return 404 to prevent path traversal attempts from revealing system structure + if not package_path.is_relative_to(allowed_package_base): raise HTTPException(status_code=404, detail="Profile picture not found") if package_path.exists(): file_path = package_path else: - raise HTTPException(status_code=404, detail=f"Profile picture {folder_name}/{file_name} not found") + raise HTTPException(status_code=404, detail=f"Profile picture {safe_folder}/{safe_file} not found") content_type = build_content_type_from_extension(extension) # Read file directly from local filesystem using async file operations diff --git a/src/backend/tests/unit/api/v1/test_files.py b/src/backend/tests/unit/api/v1/test_files.py index 65809d71ee..d31a5e63e8 100644 --- a/src/backend/tests/unit/api/v1/test_files.py +++ b/src/backend/tests/unit/api/v1/test_files.py @@ -694,8 +694,8 @@ async def test_download_profile_picture_path_traversal_attempt(empty_config_dir, """ # Try path traversal to access parent directories response = await files_client.get("api/v1/files/profile_pictures/../../../etc/passwd") - # Should either be 404 (file not found) or the path should be sanitized - assert response.status_code in [404, 500] + # Should be 400 (invalid input), 404 (not found), or 422 (validation error) + assert response.status_code in [400, 404, 422, 500] async def test_download_profile_picture_special_characters_in_filename(empty_config_dir, files_client): # noqa: ARG001