Full Code of akshata29/entaoai for AI

main aa6cfbfbf6f1 cached
179 files
6.9 MB
1.8M tokens
328 symbols
1 requests
Download .txt
Showing preview only (7,255K chars total). Download the full file or copy to clipboard to get everything.
Repository: akshata29/entaoai
Branch: main
Commit: aa6cfbfbf6f1
Files: 179
Total size: 6.9 MB

Directory structure:
gitextract_onih7gum/

├── .deployment
├── .genaiscript/
│   └── .gitattributes
├── .github/
│   └── workflows/
│       ├── backendapp.yml
│       ├── dockerapi.yml
│       ├── dockerapp.yml
│       └── pythonapi.yml
├── .vscode/
│   ├── chatpdf.code-workspace
│   ├── extensions.json
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── Configuration.md
├── Deployment/
│   ├── azuredeploy.json
│   ├── azuredeploy_1.json
│   ├── backendapp.yml
│   ├── northwind.sql
│   └── pythonapi.yml
├── Features.md
├── GettingStarted.md
├── LICENSE
├── LICENSE.md
├── LLMOps.md
├── README.md
├── READMEWORKSHOP.md
├── api/
│   └── Python/
│       ├── .dockerenv.example
│       ├── .dockerignore
│       ├── .dockerrun
│       ├── .funcignore
│       ├── ChatGpt/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── DocGenerator/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── Dockerfile
│       ├── IndexManagement/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── OpenChatGpt/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── QuestionAnswering/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── Utilities/
│       │   ├── __init__.py
│       │   ├── azureBlob.py
│       │   ├── azureSearch.py
│       │   ├── cogSearch.py
│       │   ├── cogSearchVsRetriever.py
│       │   ├── embeddingSchema.py
│       │   ├── embeddings.py
│       │   ├── envVars.py
│       │   ├── fmp.py
│       │   ├── formrecognizer.py
│       │   ├── messageBuilder.py
│       │   ├── modelHelper.py
│       │   └── redisIndex.py
│       ├── VerifyPassword/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── companies_info.json
│       ├── host.json
│       ├── requirements.txt
│       └── sample.settings.json
├── app/
│   ├── backend/
│   │   ├── .deployment
│   │   ├── .dockerenv.example
│   │   ├── .dockerignore
│   │   ├── .dockerrun
│   │   ├── Dockerfile
│   │   ├── Utilities/
│   │   │   ├── ChatGptStream.py
│   │   │   ├── fmp.py
│   │   │   └── modelHelper.py
│   │   ├── app.py
│   │   └── requirements.txt
│   └── frontend/
│       ├── env.example
│       ├── index.html
│       ├── package.json
│       ├── src/
│       │   ├── .deployment
│       │   ├── api/
│       │   │   ├── api.ts
│       │   │   ├── chat.ts
│       │   │   ├── index.ts
│       │   │   ├── models.ts
│       │   │   └── util.ts
│       │   ├── components/
│       │   │   ├── AnalysisPanel/
│       │   │   │   ├── AnalysisPanel.module.css
│       │   │   │   ├── AnalysisPanel.tsx
│       │   │   │   ├── AnalysisPanelTabs.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── Answer/
│       │   │   │   ├── Answer.module.css
│       │   │   │   ├── Answer.tsx
│       │   │   │   ├── AnswerChat.tsx
│       │   │   │   ├── AnswerError.tsx
│       │   │   │   ├── AnswerIcon.tsx
│       │   │   │   ├── AnswerLoading.tsx
│       │   │   │   ├── AnswerParser.tsx
│       │   │   │   └── index.ts
│       │   │   ├── ClearChatButton/
│       │   │   │   ├── ClearChatButton.module.css
│       │   │   │   ├── ClearChatButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── DataTable/
│       │   │   │   ├── DataTable.module.css
│       │   │   │   ├── DataTable.tsx
│       │   │   │   └── index.ts
│       │   │   ├── Example/
│       │   │   │   ├── Example.module.css
│       │   │   │   ├── Example.tsx
│       │   │   │   ├── ExampleList.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── MediaCard/
│       │   │   │   ├── MediaCard.module.css
│       │   │   │   ├── MediaCard.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── QuestionInput/
│       │   │   │   ├── QuestionInput.module.css
│       │   │   │   ├── QuestionInput.tsx
│       │   │   │   └── index.ts
│       │   │   ├── QuestionListButton/
│       │   │   │   ├── QuestionListButton.module.css
│       │   │   │   ├── QuestionListButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── RenameButton/
│       │   │   │   ├── RenameButton.module.css
│       │   │   │   ├── RenameButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SessionButton/
│       │   │   │   ├── SessionButton.module.css
│       │   │   │   ├── SessionButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SettingsButton/
│       │   │   │   ├── SettingsButton.module.css
│       │   │   │   ├── SettingsButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SqlViewer/
│       │   │   │   ├── SqlViewer.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SupportingContent/
│       │   │   │   ├── SupportingContent.module.css
│       │   │   │   ├── SupportingContent.tsx
│       │   │   │   ├── SupportingContentParser.ts
│       │   │   │   └── index.ts
│       │   │   ├── Symbols/
│       │   │   │   ├── Amex.tsx
│       │   │   │   ├── Nasdaq.tsx
│       │   │   │   └── Nyse.tsx
│       │   │   └── UserChatMessage/
│       │   │       ├── UserChatMessage.module.css
│       │   │       ├── UserChatMessage.tsx
│       │   │       └── index.ts
│       │   ├── index.css
│       │   ├── index.tsx
│       │   ├── pages/
│       │   │   ├── NoPage.tsx
│       │   │   ├── admin/
│       │   │   │   ├── Admin.module.css
│       │   │   │   └── Admin.tsx
│       │   │   ├── chatgpt/
│       │   │   │   ├── ChatGpt.module.css
│       │   │   │   └── ChatGpt.tsx
│       │   │   ├── help/
│       │   │   │   ├── Help.module.css
│       │   │   │   ├── Help.tsx
│       │   │   │   └── README.md
│       │   │   ├── layout/
│       │   │   │   ├── Layout.module.css
│       │   │   │   └── Layout.tsx
│       │   │   ├── oneshot/
│       │   │   │   ├── OneShot.module.css
│       │   │   │   └── OneShot.tsx
│       │   │   └── upload/
│       │   │       ├── Upload.module.css
│       │   │       └── Upload.tsx
│       │   └── vite-env.d.ts
│       ├── tsconfig.json
│       └── vite.config.ts
├── azure.yaml
├── chroma-docker-compose.yml
├── docs/
│   ├── Auto Evaluator.excalidraw
│   ├── Azure Architecture.excalidraw
│   ├── Azure Architecture_1.excalidraw
│   ├── ChatAsk.vsdx
│   ├── Chatbot.excalidraw
│   ├── Cognitive Search and ChatGpt.excalidraw
│   ├── Import and Qa.excalidraw
│   ├── Ingestion Process.excalidraw
│   ├── Ingestion and Qa.excalidraw
│   ├── PIB.excalidraw
│   ├── QA with Cache.excalidraw
│   ├── Query Process.excalidraw
│   ├── SpeechAnalytics.excalidraw
│   ├── SpeechAnalyticsDetails.excalidraw
│   ├── Typical Query Process.excalidraw
│   ├── Use-cases.excalidraw
│   └── Video Indexer Gpt.excalidraw
├── infra/
│   ├── abbreviations.json
│   ├── core/
│   │   ├── ai/
│   │   │   └── cognitiveservices.bicep
│   │   ├── host/
│   │   │   ├── appservice.bicep
│   │   │   ├── appserviceplan.bicep
│   │   │   └── function.bicep
│   │   ├── monitor/
│   │   │   └── applicationinsights.bicep
│   │   ├── search/
│   │   │   └── search-services.bicep
│   │   └── storage/
│   │       └── storage-account.bicep
│   ├── main.bicep
│   └── main.parameters.json
├── milvus-standalone-docker-compose.yml
└── weavite-docker-compose.yml

================================================
FILE CONTENTS
================================================

================================================
FILE: .deployment
================================================
[config]
SCM_DO_BUILD_DURING_DEPLOYMENT=true

================================================
FILE: .genaiscript/.gitattributes
================================================
# avoid merge issues and ignore files in diffs
*.json -diff merge=ours linguist-generated
*.jsonl -diff merge=ours linguist-generated        
*.js -diff merge=ours linguist-generated


================================================
FILE: .github/workflows/backendapp.yml
================================================
# This workflow will build and push a Python application to an Azure Web App when a commit is pushed to your default branch.
#
# This workflow assumes you have already created the target Azure App Service web app.
# For instructions see https://docs.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=bash&pivots=python-framework-flask
#
# To configure this workflow:
#
# 1. Download the Publish Profile for your Azure Web App. You can download this file from the Overview page of your Web App in the Azure Portal.
#    For more information: https://docs.microsoft.com/en-us/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials
#
# 2. Create a secret in your repository named AZURE_WEBAPP_PUBLISH_PROFILE, paste the publish profile contents as the value of the secret.
#    For instructions on obtaining the publish profile see: https://docs.microsoft.com/azure/app-service/deploy-github-actions#configure-the-github-secret
#
# 3. Change the value for the AZURE_WEBAPP_NAME. Optionally, change the PYTHON_VERSION environment variables below.
#
# For more information on GitHub Actions for Azure: https://github.com/Azure/Actions
# For more information on the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples

name: Deploy App

env:
  #AZURE_WEBAPP_NAME: dataaipdfchat  # set this to the name of your Azure Web App
  PYTHON_VERSION: '3.11'              # set this to the Python version to use
  NODE_VERSION: '16.x'                      # set this to the node version to use (e.g. '8.x', '10.x', '12.x')
  AZURE_NODEJS_PACKAGE_PATH: 'app/frontend'       # set this to the path to your function app project, defaults to the repository root
  AZURE_FUNCTIONAPP_PACKAGE_PATH: 'app/backend'

on:
  push:
    branches: [ "main" ]
  workflow_dispatch:

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node ${{ env.NODE_VERSION }} Environment
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}

      - name: 'Resolve Project Dependencies Using Npm'
        shell: bash # For Linux, use bash
        run: |
          pushd './${{ env.AZURE_NODEJS_PACKAGE_PATH }}'
          export NODE_OPTIONS="--max_old_space_size=4096"
          npm install
          npm run build
          popd
        
      - name: Set up Python version
        uses: actions/setup-python@v3.0.0
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: 'pip'

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: 'Resolve Project Dependencies Using Pip'
        shell: bash
        run: |
          pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          popd

      # Optional: Add step to run tests here (PyTest, Django test suites, etc.)

      - name: Upload artifact for deployment jobs
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            ./${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
            !venv/

  deploy:
    permissions:
      contents: none
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Development'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: python-app
          path: .

      - name: 'Login via Azure CLI'
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_RBAC_CREDENTIALS }} # set up AZURE_RBAC_CREDENTIALS secrets in your repository
          
      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: ${{ secrets.AZURE_WEBAPP_NAME }}
          scm-do-build-during-deployment: true
          enable-oryx-build: true


================================================
FILE: .github/workflows/dockerapi.yml
================================================
name: Docker Api

on:
  push:
    branches:
      - main

jobs:
  build-and-push:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

      - name: Build and push Docker image
        uses: docker/build-push-action@v2
        with:
          context: ./api/Python
          file: ./api/Python/Dockerfile
          push: true
          tags: ${{ secrets.DOCKER_HUB_USERNAME }}/entaoai-python:latest

================================================
FILE: .github/workflows/dockerapp.yml
================================================
name: Docker App

env:
  #AZURE_WEBAPP_NAME: dataaipdfchat  # set this to the name of your Azure Web App
  PYTHON_VERSION: '3.11'              # set this to the Python version to use
  NODE_VERSION: '16.x'                      # set this to the node version to use (e.g. '8.x', '10.x', '12.x')
  AZURE_NODEJS_PACKAGE_PATH: 'app/frontend'       # set this to the path to your function app project, defaults to the repository root
  AZURE_FUNCTIONAPP_PACKAGE_PATH: 'app/backend'

on:
  push:
    branches:
      - main

jobs:
  build-and-push:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Setup Node ${{ env.NODE_VERSION }} Environment
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}

      - name: 'Resolve Project Dependencies Using Npm'
        shell: bash # For Linux, use bash
        run: |
          pushd './${{ env.AZURE_NODEJS_PACKAGE_PATH }}'
          export NODE_OPTIONS="--max_old_space_size=4096"
          npm install
          npm run build
          popd

      - name: Set up Python version
        uses: actions/setup-python@v3.0.0
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: 'pip'

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: 'Resolve Project Dependencies Using Pip'
        shell: bash
        run: |
          pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          popd

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

      - name: Build and push Docker image
        uses: docker/build-push-action@v2
        with:
          context: ./app/backend
          file: ./app/backend/Dockerfile
          push: true
          tags: ${{ secrets.DOCKER_HUB_USERNAME }}/entaoai-app:latest

================================================
FILE: .github/workflows/pythonapi.yml
================================================
# This workflow will build a Python app and deploy it to an Azure Functions App on Linux when a commit is pushed to your default branch.
#
# This workflow assumes you have already created the target Azure Functions app.
# For instructions see https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-vs-code-python?pivots=python-mode-configuration
#
# To configure this workflow:
# 1. Set up the following secrets in your repository:
#   - AZURE_FUNCTIONAPP_PUBLISH_PROFILE
# 2. Change env variables for your configuration.
#
# For more information on:
#   - GitHub Actions for Azure: https://github.com/Azure/Actions
#   - Azure Functions Action: https://github.com/Azure/functions-action
#   - Publish Profile: https://github.com/Azure/functions-action#using-publish-profile-as-deployment-credential-recommended
#   - Azure Service Principal for RBAC: https://github.com/Azure/functions-action#using-azure-service-principal-for-rbac-as-deployment-credential
#
# For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples/tree/master/FunctionApp

name: Deploy Python API

on:
  push:
    branches: [ "main" ]
  workflow_dispatch:

env:
  #AZURE_FUNCTIONAPP_NAME: 'dataaichatpdf'   # set this to your function app name on Azure
  AZURE_FUNCTIONAPP_PACKAGE_PATH: 'api/Python'       # set this to the path to your function app project, defaults to the repository root
  PYTHON_VERSION: '3.11'                     # set this to the python version to use (e.g. '3.6', '3.7', '3.8')

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    environment: dev
    steps:
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@v3

    - name: 'Login via Azure CLI'
      uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_RBAC_CREDENTIALS }} # set up AZURE_RBAC_CREDENTIALS secrets in your repository

    - name: Setup Python ${{ env.PYTHON_VERSION }} Environment
      uses: actions/setup-python@v4
      with:
        python-version: ${{ env.PYTHON_VERSION }}

    - name: 'Resolve Project Dependencies Using Pip'
      shell: bash
      run: |
        pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
        python -m pip install --upgrade pip
        pip install -r requirements.txt --target=".python_packages/lib/site-packages"
        popd

    - name: 'Run Azure Functions Action'
      uses: Azure/functions-action@v1
      id: fa
      with:
        app-name: ${{ secrets.AZURE_FUNCTIONAPP_NAME }}
        package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
        scm-do-build-during-deployment: true
        enable-oryx-build: true


================================================
FILE: .vscode/chatpdf.code-workspace
================================================
{
	"folders": [
		{
			"path": ".."
		}
	],
	"settings": {
		"debug.internalConsoleOptions": "neverOpen",
		"python.terminal.activateEnvironment": true,
		"[python]": {
			"editor.defaultFormatter": "ms-python.black-formatter"
		},
		"python.formatting.provider": "none"
	}
}

================================================
FILE: .vscode/extensions.json
================================================
{
  "recommendations": [
    "ms-azuretools.vscode-azurefunctions",
    "ms-python.python",
    "github.copilot-chat"
  ]
}

================================================
FILE: .vscode/launch.json
================================================
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Python Functions",
      "type": "python",
      "request": "attach",
      "port": 9091,
      "preLaunchTask": "func: host start"
    }
  ]
}

================================================
FILE: .vscode/settings.json
================================================
{
    "azureFunctions.deploySubpath": "api\\Python",
    "azureFunctions.projectSubpath": "api\\Python",
    "azureFunctions.scmDoBuildDuringDeployment": true,
    "azureFunctions.pythonVenv": ".venv",
    "azureFunctions.projectLanguage": "Python",
    "azureFunctions.projectRuntime": "~4",
    "appService.zipIgnorePattern": [
        "node_modules{,/**}",
        ".vscode{,/**}"
    ],
    "appService.defaultWebAppToDeploy": "/subscriptions/afa061ef-5d63-4e4f-99a7-b5027ec38eba/resourceGroups/fpdoaoai/providers/Microsoft.Web/sites/fpdoapp",
    "appService.deploySubpath": "app\\backend",
}


================================================
FILE: .vscode/tasks.json
================================================
{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "func",
      "label": "func: host start",
      "command": "host start",
      "problemMatcher": "$func-python-watch",
      "isBackground": true,
      "dependsOn": "pip install (functions)",
      "options": {
        "cwd": "${workspaceFolder}/api\\Python"
      }
    },
    {
      "label": "pip install (functions)",
      "type": "shell",
      "osx": {
        "command": "${config:azureFunctions.pythonVenv}/bin/python -m pip install -r requirements.txt"
      },
      "windows": {
        "command": "${config:azureFunctions.pythonVenv}\\Scripts\\python -m pip install -r requirements.txt"
      },
      "linux": {
        "command": "${config:azureFunctions.pythonVenv}/bin/python -m pip install -r requirements.txt"
      },
      "problemMatcher": [],
      "options": {
        "cwd": "${workspaceFolder}/api\\Python"
      }
    }
  ]
}

================================================
FILE: Configuration.md
================================================
# Configuration

## API Configuration

| Key | Default Value | Detail |
| --- | --- | ------------- |
|OpenAiKey||Your Azure OpenAI Key.  <br>You can get the OpenAI Key from Azure Portal for your deployed OpenAI service.
|OpenAiEndPoint||Fully qualified endpoint for Azure OpenAI <br>(https://<yourresource>.openai.azure.com/)
|OpenAiVersion|2023-05-15|API Version of the Azure OpenAI
|OpenAiEmbedding|text-embedding-ada-002|Deployment name of <br>text-embedding-ada-002 model in Azure OpenAI
|MaxTokens|500|Maximum Tokens
|Temperature|0.3|Temperature
|OpenAiChat|chat|Deployment name of gpt-35-turbo model in <br>Azure OpenAI
|PineconeKey|key|Pinecone Key
|PineconeEnv|env|Pinecone Environment
|VsIndexName|oaiembed|Pinecone Index name
|RedisPassword|Password|Redis Password
|RedisAddress|localhost|Redis URI
|RedisPort|6379|Redis Port
|OpenAiDocStorName||Document Storage account name
|OpenAiDocStorKey||Document Storage Key
|OpenAiDocContainer|chatpdf|Document storage container name
|SearchService||Azure Cognitive Search service name
|SecDocContainer|secdoc|Document Storage container to <br>store SEC documents
|SynapseName||Name of the SQL for SQL NLP (Azure SQL, Synapse)
|SynapsePool||Database or SQL Pool Name
|SynapseUser||SQL User name
|SynapsePassword||SQL Password
|UploadPassword||Password required for upload functionality.
|AdminPassword||Password required for Admin capabilities.
|DOCGENERATOR_URL|Optional Settings|Required only if you are planning to use the AWS Integration.
|*PROMPTS*||Default Prompts for Speech Analytics Use-case. <br>26 Keys with different prompt.

## Application Configuration

| Key | Default Value | Detail |
| --- | --- | ------------- |
AGENTQA_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/AgentQa?code=<yourcode>)
BLOB_CONTAINER_NAME||Blob container name where all PDF are uploaded
CHAT_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/ChatGpt?code=<yourcode>)
DOCGENERATOR_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/DocGenerator?code=<yourcode>)
INDEXMANAGEMENT_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/IndexManagement?code=<yourcode>)
QA_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/QuestionAnswering?code=<yourcode>)
SPEECH_KEY||Speech Service Key
SPEECH_REGION||Region where speech service is deployed <br> (i.e. eastus, southcentralus)
SQLCHAIN_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/SqlChain?code=<yourcode>)
SQLCHAT_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/SqlChat?code=<yourcode>)
SUMMARIZER_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/Summarizer?code=<yourcode>)
TASKAGENTQA_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/TaskAgentQa?code=<yourcode>)
TEXTANALYTICS_KEY||Text Analytics(Language) Service Key
TEXTANALYTICS_REGION||Region where Text Analytics(Language) is deployed <br> (i.e. eastus, southcentralus)
VERIFYPASS_URL||Azure Function URL with host/default key <br> (https://<yourfunction>.azurewebsites.net/api/VerifyPassword?code=<yourcode>)


================================================
FILE: Deployment/azuredeploy.json
================================================
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "prefix": {
      "type": "string",
      "minLength": 1
    },
    "location": {
      "type": "string",
      "metadata": {
        "description": "Specifies the Azure location where the app configuration store should be created."
      },
      "defaultValue": "East US",
      "allowedValues": ["East US", "UK South", "France Central"]
    },
    "embeddingModelName": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "embedding"
    },
    "embeddingModelVectorDimensions": {
      "type": "int",
      "defaultValue": 1536
    },
    "embeddingModelVersion": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "2"
    },
    "gptModelName": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "chat"
    },
    "gptModelVersion": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "0613"
    },
    "gpt16kModelName": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "chat16k"
    },
    "deploymentCapacity": {
      "type": "int",
      "defaultValue": 20
    },
    "openAiApiVersion": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "2023-07-01-preview"
    },
    "searchServiceSku": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "standard",
      "allowedValues": ["basic", "standard", "standard2", "standard3"]
    },
    "adminPassword": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "P2ssw0rd1$"
    },
    "uploadPassword": {
      "type": "string",
      "minLength": 1,
      "defaultValue": "P2ssw0rd1$"
    }
  },
  "variables": {
    "bingSvcName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'bing')]",
    "frSvcName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'fr')]",
    "speechSvcName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'spch')]",
    "aoaiSvcName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'aoai')]",
    "appInsightName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'aisg')]",
    "searchSvcName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'azs')]",
    "funcStorageName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'fsa')]",
    "storageName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'stor')]",
    "aspName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'asp')]",
    "backendName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'app')]",
    "funcAppName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'func')]",
    "funcAppId": "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]",
    "cosmosDbName": "[concat(parameters('prefix'), take(uniqueString(resourceGroup().id), 5), 'cacc')]",
    "cosmosDb": "aoai",
    "cosmosContainer": "chatgpt"
  },
  "resources": [
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2022-08-15",
      "name": "[variables('cosmosDbName')]",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": {
          "defaultConsistencyLevel": "Session"
        },
        "databaseAccountOfferType": "Standard",
        "enableFreeTier": false,
        "locations": [
          {
            "failoverPriority": 0,
            "isZoneRedundant": false,
            "locationName": "[parameters('location')]"
          }
        ]
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
      "apiVersion": "2022-08-15",
      "name": "[format('{0}/{1}', variables('cosmosDbName'), variables('cosmosDb'))]",
      "properties": {
        "resource": {
          "id": "[variables('cosmosDb')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbName'))]"
      ]
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
      "apiVersion": "2022-08-15",
      "name": "[format('{0}/{1}/{2}', variables('cosmosDbName'), variables('cosmosDb'), variables('cosmosContainer'))]",
      "properties": {
        "resource": {
          "id": "[variables('cosmosContainer')]",
          "partitionKey": {
            "paths": ["/sessionId"],
            "kind": "Hash",
            "version": 2
          },
          "indexingPolicy": {
            "indexingMode": "Consistent",
            "automatic": true,
            "includedPaths": [
              {
                "path": "/sessionId/?"
              },
              {
                "path": "/type/?"
              }
            ],
            "excludedPaths": [
              {
                "path": "/*"
              }
            ]
          }
        },
        "options": {
          "throughput": 400
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbName'), variables('cosmosDb'))]"
      ]
    },
    {
      "type": "Microsoft.Bing/accounts",
      "apiVersion": "2020-06-10",
      "name": "[variables('bingSvcName')]",
      "location": "global",
      "sku": {
        "name": "S1"
      },
      "kind": "Bing.Search.v7",
      "properties": {}
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2023-10-01-preview",
      "name": "[variables('frSvcName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "S0"
      },
      "kind": "FormRecognizer",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "apiProperties": {},
        "customSubDomainName": "[variables('frSvcName')]",
        "networkAcls": {
          "defaultAction": "Allow",
          "virtualNetworkRules": [],
          "ipRules": []
        },
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2022-12-01",
      "name": "[variables('aoaiSvcName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "aoaipdf"
      },
      "sku": {
        "name": "S0"
      },
      "kind": "OpenAI",
      "properties": {
        "customSubDomainName": "[variables('aoaiSvcName')]",
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2022-12-01",
      "name": "[variables('speechSvcName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "S0"
      },
      "kind": "SpeechServices",
      "identity": {
        "type": "None"
      },
      "properties": {
        "networkAcls": {
          "defaultAction": "Allow",
          "virtualNetworkRules": [],
          "ipRules": []
        },
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "Microsoft.Insights/components",
      "apiVersion": "2020-02-02",
      "name": "[variables('appInsightName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "aoaipdf"
      },
      "kind": "web",
      "properties": {
        "Application_Type": "web",
        "RetentionInDays": 90,
        "IngestionMode": "ApplicationInsights",
        "publicNetworkAccessForIngestion": "Enabled",
        "publicNetworkAccessForQuery": "Enabled"
      }
    },
    {
      "type": "Microsoft.Search/searchServices",
      "apiVersion": "2022-09-01",
      "name": "[variables('searchSvcName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('searchServiceSku')]"
      },
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "replicaCount": 1,
        "partitionCount": 1,
        "semanticSearch": "free",
        "hostingMode": "default",
        "publicNetworkAccess": "Enabled",
        "networkRuleSet": {
          "ipRules": []
        },
        "encryptionWithCmk": {
          "enforcement": "Unspecified"
        },
        "disableLocalAuth": false,
        "authOptions": {
          "aadOrApiKey": {
            "aadAuthFailureMode": "http401WithBearerChallenge"
          }
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[variables('funcStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "Storage",
      "properties": {
        "minimumTlsVersion": "TLS1_0",
        "allowBlobPublicAccess": true,
        "networkAcls": {
          "bypass": "AzureServices",
          "virtualNetworkRules": [],
          "ipRules": [],
          "defaultAction": "Allow"
        },
        "supportsHttpsTrafficOnly": true,
        "encryption": {
          "services": {
            "file": {
              "keyType": "Account",
              "enabled": true
            },
            "blob": {
              "keyType": "Account",
              "enabled": true
            }
          },
          "keySource": "Microsoft.Storage"
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[variables('storageName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "aoaipdf"
      },
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "dnsEndpointType": "Standard",
        "defaultToOAuthAuthentication": false,
        "publicNetworkAccess": "Enabled",
        "allowCrossTenantReplication": true,
        "minimumTlsVersion": "TLS1_2",
        "allowBlobPublicAccess": false,
        "allowSharedKeyAccess": true,
        "networkAcls": {
          "bypass": "AzureServices",
          "virtualNetworkRules": [],
          "ipRules": [],
          "defaultAction": "Allow"
        },
        "supportsHttpsTrafficOnly": true,
        "encryption": {
          "services": {
            "file": {
              "keyType": "Account",
              "enabled": true
            },
            "blob": {
              "keyType": "Account",
              "enabled": true
            }
          },
          "keySource": "Microsoft.Storage"
        },
        "accessTier": "Hot"
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2022-09-01",
      "name": "[variables('aspName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B3"
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "elasticScaleEnabled": false,
        "maximumElasticWorkerCount": 1,
        "isSpot": false,
        "reserved": true,
        "isXenon": false,
        "hyperV": false,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0,
        "zoneRedundant": false
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts/deployments",
      "apiVersion": "2023-05-01",
      "name": "[concat(variables('aoaiSvcName'), '/', parameters('gptModelName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]",
        "[resourceId('Microsoft.CognitiveServices/accounts/deployments', variables('aoaiSvcName'), parameters('embeddingModelName'))]"
      ],
      "sku": {
        "name": "Standard",
        "capacity": "[parameters('deploymentCapacity')]"
      },
      "properties": {
        "model": {
          "format": "OpenAI",
          "name": "gpt-35-turbo",
          "version": "[parameters('gptModelVersion')]"
        },
        "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        "raiPolicyName": "Microsoft.Default"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts/deployments",
      "apiVersion": "2023-05-01",
      "name": "[concat(variables('aoaiSvcName'), '/', parameters('gpt16kModelName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]",
        "[resourceId('Microsoft.CognitiveServices/accounts/deployments', variables('aoaiSvcName'), parameters('gptModelName'))]"
      ],
      "sku": {
        "name": "Standard",
        "capacity": "[parameters('deploymentCapacity')]"
      },
      "properties": {
        "model": {
          "format": "OpenAI",
          "name": "gpt-35-turbo-16k",
          "version": "[parameters('gptModelVersion')]"
        },
        "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        "raiPolicyName": "Microsoft.Default"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts/deployments",
      "apiVersion": "2023-05-01",
      "name": "[concat(variables('aoaiSvcName'), '/', parameters('embeddingModelName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]"
      ],
      "sku": {
        "name": "Standard",
        "capacity": "[parameters('deploymentCapacity')]"
      },
      "properties": {
        "model": {
          "format": "OpenAI",
          "name": "text-embedding-ada-002",
          "version": "[parameters('embeddingModelVersion')]"
        },
        "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        "raiPolicyName": "Microsoft.Default"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "properties": {
        "cors": {
          "corsRules": []
        },
        "deleteRetentionPolicy": {
          "allowPermanentDelete": false,
          "enabled": false
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('funcStorageName'), '/default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName'))]"
      ],
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "properties": {
        "cors": {
          "corsRules": []
        },
        "deleteRetentionPolicy": {
          "allowPermanentDelete": false,
          "enabled": true,
          "days": 2
        }
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('backendName')]",
      "location": "[parameters('location')]",
      "kind": "app,linux,container",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]"
      ],
      "properties": {
        "enabled": true,
        "hostNameSslStates": [
          {
            "name": "[concat(variables('backendName'), '.azurewebsites.net')]",
            "sslState": "Disabled",
            "hostType": "Standard"
          },
          {
            "name": "[concat(variables('backendName'), '.scm.azurewebsites.net')]",
            "sslState": "Disabled",
            "hostType": "Repository"
          }
        ],
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "reserved": true,
        "httpsOnly": true,
        "siteConfig": {
          "linuxFxVersion": "DOCKER|ghcr.io/akshata29/entaoai-app:latest",
          "linuxFxVersion": "python|3.9",
          "alwaysOn": true,
          "functionAppScaleLimit": 0,
          "minimumElasticInstanceCount": 0,
          "appSettings": [
            {
              "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
              "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightName')), '2020-02-02').InstrumentationKey]"
            },
            {
              "name": "BLOB_CONNECTION_STRING",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "BLOB_CONTAINER_NAME",
              "value": "chatpdf"
            },
            {
              "name": "VERIFYPASS_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/VerifyPassword?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "INDEXMANAGEMENT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/IndexManagement?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "CHAT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/ChatGpt?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "CHATSTREAM_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/ChatGptStream?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "CHATGPT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/OpenChatGpt?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "DOCGENERATOR_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/DocGenerator?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "QA_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/QuestionAnswering?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SPEECH_REGION",
              "value": "[parameters('location')]"
            },
            {
              "name": "SPEECH_KEY",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('speechSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "SEARCHSERVICE",
              "value": "[variables('searchSvcName')]"
            },
            {
              "name": "KBINDEXNAME",
              "value": "aoaikb"
            },
            {
              "name": "COSMOSENDPOINT",
              "value": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbName')), '2022-08-15').documentEndpoint]"
            },
            {
              "name": "COSMOSDATABASE",
              "value": "[variables('cosmosDb')]"
            },
            {
              "name": "COSMOSCONTAINER",
              "value": "[variables('cosmosContainer')]"
            },
            {
              "name": "OpenAiChat",
              "value": "[parameters('gptModelName')]"
            },
            {
              "name": "OpenAiEmbedding",
              "value": "[parameters('embeddingModelName')]"
            },
            {
              "name": "OpenAiEndPoint",
              "value": "[concat('https://', variables('aoaiSvcName'), '.openai.azure.com/')]"
            },
            {
              "name": "OpenAiKey",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "OpenAiApiKey",
              "value": "Dummy"
            },
            {
              "name": "OpenAiVersion",
              "value": "[parameters('openAiApiVersion')]"
            },
            {
              "name": "PineconeEnv",
              "value": "env"
            },
            {
              "name": "PineconeIndex",
              "value": "index"
            },
            {
              "name": "PineconeKey",
              "value": "key"
            },
            {
              "name": "RedisAddress",
              "value": "http://localhost"
            },
            {
              "name": "RedisPassword",
              "value": "Password"
            },
            {
              "name": "RedisPort",
              "value": "6379"
            }
          ]
        }
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2023-01-01",
      "name": "[variables('funcAppName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]",
        "[resourceId('Microsoft.Bing/accounts', variables('bingsvcName'))]",
        "[resourceId('Microsoft.Search/searchServices', variables('searchSvcName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName'))]"
      ],
      "kind": "functionapp,linux,container",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "enabled": true,
        "hostNameSslStates": [
            {
                "name": "[concat(variables('funcAppName'), '.azurewebsites.net')]",
                "sslState": "Disabled",
                "hostType": "Standard"
            },
            {
                "name": "[concat(variables('funcAppName'), '.scm.azurewebsites.net')]",
                "sslState": "Disabled",
                "hostType": "Repository"
            }
        ],
        "reserved": true,
        "siteConfig": {
          "linuxFxVersion": "DOCKER|ghcr.io/akshata29/entaoai-python:latest",
          "alwaysOn": true,
          "functionAppScaleLimit": 0,
          "minimumElasticInstanceCount": 0,
          "appSettings": [
            {
              "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
              "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightName')), '2020-02-02').InstrumentationKey]"
            },
            {
              "name": "AzureWebJobsFeatureFlags",
              "value": "EnableWorkerIndexing"
            },
            {
              "name": "AzureWebJobsStorage",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('funcStorageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('funcStorageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "FUNCTIONS_EXTENSION_VERSION",
              "value": "~4"
            },
            {
              "name": "FUNCTIONS_WORKER_RUNTIME",
              "value": "python"
            },
            {
              "name": "BingUrl",
              "value": "https://api.bing.microsoft.com/v7.0/search"
            },
            {
              "name": "BingKey",
              "value": "[listKeys(resourceId('Microsoft.Bing/accounts', variables('bingsvcName')), '2020-06-10').key1]"
            },
            {
              "name": "UploadPassword",
              "value": "[parameters('uploadPassword')]"
            },
            {
              "name": "AdminPassword",
              "value": "[parameters('adminPassword')]"
            },
            {
              "name": "MaxTokens",
              "value": "500"
            },
            {
              "name": "OpenAiChat",
              "value": "[parameters('gptModelName')]"
            },
            {
              "name": "OpenAiDocContainer",
              "value": "chatpdf"
            },
            {
              "name": "OpenAiDocStorConnString",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "OpenAiDocStorKey",
              "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2022-05-01').keys[0].value]"
            },
            {
              "name": "OpenAiDocStorName",
              "value": "[variables('storageName')]"
            },
            {
              "name": "OpenAiEmbedding",
              "value": "[parameters('embeddingModelName')]"
            },
            {
              "name": "FormRecognizerEndPoint",
              "value": "[concat('https://', variables('frSvcName'), '.cognitiveservices.azure.com/')]"
            },
            {
              "name": "FormRecognizerKey",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('frSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "OpenAiEndPoint",
              "value": "[concat('https://', variables('aoaiSvcName'), '.openai.azure.com/')]"
            },
            {
              "name": "OpenAiKey",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "OpenAiApiKey",
              "value": "Dummy"
            },
            {
              "name": "OpenAiVersion",
              "value": "[parameters('openAiApiVersion')]"
            },
            {
              "name": "PineconeEnv",
              "value": "env"
            },
            {
              "name": "PineconeKey",
              "value": "key"
            },
            {
              "name": "RedisAddress",
              "value": "http://localhost"
            },
            {
              "name": "RedisPassword",
              "value": "Password"
            },
            {
              "name": "RedisPort",
              "value": "6379"
            },
            {
              "name": "SearchService",
              "value": "[variables('searchSvcName')]"
            },
            {
              "name": "Temperature",
              "value": "0.3"
            },
            {
              "name": "VsIndexName",
              "value": "dummy"
            },
            {
              "name": "CosmosEndpoint",
              "value": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbName')), '2022-08-15').documentEndpoint]"
            },
            {
              "name": "CosmosDatabase",
              "value": "[variables('cosmosDb')]"
            },
            {
              "name": "CosmosContainer",
              "value": "[variables('cosmosContainer')]"
            },
            {
              "name": "WEBSITE_CONTENTSHARE",
              "value": "[toLower(variables('funcAppName'))]"
            },
            {
              "name": "KbIndexName",
              "value": "aoaikb"
            }
          ]
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/azure-webjobs-hosts')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/azure-webjobs-secrets')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/chatpdf')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    }
  ]
}


================================================
FILE: Deployment/azuredeploy_1.json
================================================
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "prefix": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the app configuration store should be created."
      }
    }
  },
  "variables": {
    "langSvcName": "[concat(parameters('prefix'), 'lang')]",
    "bingSvcName": "[concat(parameters('prefix'), 'bing')]",
    "frSvcName": "[concat(parameters('prefix'), 'fr')]",
    "speechSvcName": "[concat(parameters('prefix'), 'speech')]",
    "aoaiSvcName": "[concat(parameters('prefix'), 'aoai')]",
    "appInsightName": "[concat(parameters('prefix'), 'aisg')]",
    "searchSvcName": "[concat(parameters('prefix'), 'azs')]",
    "sqlSrvName": "[concat(parameters('prefix'), 'srv')]",
    "funcStorageName": "[concat(parameters('prefix'), 'funcsa')]",
    "storageName": "[concat(parameters('prefix'), 'stor')]",
    "aspName": "[concat(parameters('prefix'), 'asp')]",
    "backendName": "[concat(parameters('prefix'), 'app')]",
    "funcAppName": "[concat(parameters('prefix'), 'func')]",
    "funcAppId": "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]",
    "cosmosDbName": "[concat(parameters('prefix'), 'cosmos')]",
    "cosmosDb": "aoai",
    "cosmosContainer": "chatgpt"
  },
  "resources": [
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2022-08-15",
      "name": "[variables('cosmosDbName')]",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": {
          "defaultConsistencyLevel": "Session"
        },
        "databaseAccountOfferType": "Standard",
        "enableFreeTier": false,
        "locations": [
          {
            "failoverPriority": 0,
            "isZoneRedundant": false,
            "locationName": "[parameters('location')]"
          }
        ]
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
      "apiVersion": "2022-08-15",
      "name": "[format('{0}/{1}', variables('cosmosDbName'), variables('cosmosDb'))]",
      "properties": {
        "resource": {
          "id": "[variables('cosmosDb')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbName'))]"
      ]
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
      "apiVersion": "2022-08-15",
      "name": "[format('{0}/{1}/{2}', variables('cosmosDbName'), variables('cosmosDb'), variables('cosmosContainer'))]",
      "properties": {
        "resource": {
          "id": "[variables('cosmosContainer')]",
          "partitionKey": {
            "paths": ["/sessionId"],
            "kind": "Hash",
            "version": 2
          },
          "indexingPolicy": {
            "indexingMode": "Consistent",
            "automatic": true,
            "includedPaths": [
              {
                "path": "/sessionId/?"
              },
              {
                "path": "/type/?"
              }
            ],
            "excludedPaths": [
              {
                "path": "/*"
              }
            ]
          }
        },
        "options": {
          "throughput": 400
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbName'), variables('cosmosDb'))]"
      ]
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2022-12-01",
      "name": "[variables('langSvcName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "S"
      },
      "kind": "TextAnalytics",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "apiProperties": {},
        "customSubDomainName": "[variables('langSvcName')]",
        "networkAcls": {
          "defaultAction": "Allow",
          "virtualNetworkRules": [],
          "ipRules": []
        },
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "Microsoft.Bing/accounts",
      "apiVersion": "2020-06-10",
      "name": "[variables('bingSvcName')]",
      "location": "global",
      "sku": {
        "name": "S1"
      },
      "kind": "Bing.Search.v7",
      "properties": {}
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2022-12-01",
      "name": "[variables('frSvcName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "S0"
      },
      "kind": "FormRecognizer",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "apiProperties": {},
        "customSubDomainName": "[variables('frSvcName')]",
        "networkAcls": {
          "defaultAction": "Allow",
          "virtualNetworkRules": [],
          "ipRules": []
        },
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2022-12-01",
      "name": "[variables('aoaiSvcName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "aoaipdf"
      },
      "sku": {
        "name": "S0"
      },
      "kind": "OpenAI",
      "properties": {
        "customSubDomainName": "[variables('aoaiSvcName')]",
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2022-12-01",
      "name": "[variables('speechSvcName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "F0"
      },
      "kind": "SpeechServices",
      "identity": {
        "type": "None"
      },
      "properties": {
        "networkAcls": {
          "defaultAction": "Allow",
          "virtualNetworkRules": [],
          "ipRules": []
        },
        "publicNetworkAccess": "Enabled"
      }
    },
    {
      "type": "microsoft.insights/components",
      "apiVersion": "2020-02-02",
      "name": "[variables('appInsightName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "aoaipdf"
      },
      "kind": "web",
      "properties": {
        "Application_Type": "web",
        "RetentionInDays": 90,
        "IngestionMode": "ApplicationInsights",
        "publicNetworkAccessForIngestion": "Enabled",
        "publicNetworkAccessForQuery": "Enabled"
      }
    },
    {
      "type": "Microsoft.Search/searchServices",
      "apiVersion": "2022-09-01",
      "name": "[variables('searchSvcName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "[parameters('prefix')]"
      },
      "sku": {
        "name": "standard"
      },
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "replicaCount": 1,
        "partitionCount": 1,
        "semanticSearch": "free",
        "hostingMode": "default",
        "publicNetworkAccess": "Enabled",
        "networkRuleSet": {
          "ipRules": []
        },
        "encryptionWithCmk": {
          "enforcement": "Unspecified"
        },
        "disableLocalAuth": false,
        "authOptions": {
          "aadOrApiKey": {
            "aadAuthFailureMode": "http401WithBearerChallenge"
          }
        }
      }
    },
    {
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2022-08-01-preview",
      "name": "[variables('sqlSrvName')]",
      "location": "[parameters('location')]",
      "kind": "v12.0",
      "properties": {
        "administratorLogin": "azureadmin",
        "administratorLoginPassword": "P@ssw0rd",
        "version": "12.0",
        "minimalTlsVersion": "1.2",
        "publicNetworkAccess": "Enabled",
        "restrictOutboundNetworkAccess": "Disabled"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[variables('funcStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "Storage",
      "properties": {
        "minimumTlsVersion": "TLS1_0",
        "allowBlobPublicAccess": true,
        "networkAcls": {
          "bypass": "AzureServices",
          "virtualNetworkRules": [],
          "ipRules": [],
          "defaultAction": "Allow"
        },
        "supportsHttpsTrafficOnly": true,
        "encryption": {
          "services": {
            "file": {
              "keyType": "Account",
              "enabled": true
            },
            "blob": {
              "keyType": "Account",
              "enabled": true
            }
          },
          "keySource": "Microsoft.Storage"
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[variables('storageName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "aoaipdf"
      },
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "dnsEndpointType": "Standard",
        "defaultToOAuthAuthentication": false,
        "publicNetworkAccess": "Enabled",
        "allowCrossTenantReplication": true,
        "minimumTlsVersion": "TLS1_2",
        "allowBlobPublicAccess": false,
        "allowSharedKeyAccess": true,
        "networkAcls": {
          "bypass": "AzureServices",
          "virtualNetworkRules": [],
          "ipRules": [],
          "defaultAction": "Allow"
        },
        "supportsHttpsTrafficOnly": true,
        "encryption": {
          "services": {
            "file": {
              "keyType": "Account",
              "enabled": true
            },
            "blob": {
              "keyType": "Account",
              "enabled": true
            }
          },
          "keySource": "Microsoft.Storage"
        },
        "accessTier": "Hot"
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2022-09-01",
      "name": "[variables('aspName')]",
      "location": "[parameters('location')]",
      "tags": {
        "azd-env-name": "[parameters('prefix')]"
      },
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "elasticScaleEnabled": false,
        "maximumElasticWorkerCount": 1,
        "isSpot": false,
        "reserved": true,
        "isXenon": false,
        "hyperV": false,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0,
        "zoneRedundant": false
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts/deployments",
      "apiVersion": "2023-05-01",
      "name": "[concat(variables('aoaiSvcName'), '/chat')]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]"
      ],
      "sku": {
        "name": "Standard",
        "capacity": 30
      },
      "properties": {
        "model": {
          "format": "OpenAI",
          "name": "gpt-35-turbo",
          "version": "0613"
        },
        "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        "raiPolicyName": "Microsoft.Default"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts/deployments",
      "apiVersion": "2023-05-01",
      "name": "[concat(variables('aoaiSvcName'), '/chat16k')]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]"
      ],
      "sku": {
        "name": "Standard",
        "capacity": 30
      },
      "properties": {
        "model": {
          "format": "OpenAI",
          "name": "gpt-35-turbo-16k",
          "version": "0613"
        },
        "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        "raiPolicyName": "Microsoft.Default"
      }
    },
    {
      "type": "Microsoft.Resources/deploymentScripts",
      "apiVersion": "2020-10-01",
      "kind": "AzurePowerShell",
      "name": "Wait5s",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]"
      ],
      "properties": {
        "azPowerShellVersion": "9.7",
        "scriptContent": "start-sleep -Seconds 5",
        "cleanupPreference": "Always",
        "retentionInterval": "PT1H"
      }
    },
    {
      "type": "Microsoft.Resources/deploymentScripts",
      "apiVersion": "2020-10-01",
      "kind": "AzurePowerShell",
      "name": "Wait10s",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]"
      ],
      "properties": {
        "azPowerShellVersion": "9.7",
        "scriptContent": "start-sleep -Seconds 10",
        "cleanupPreference": "Always",
        "retentionInterval": "PT1H"
      }
    },
    {
      "type": "Microsoft.CognitiveServices/accounts/deployments",
      "apiVersion": "2023-05-01",
      "name": "[concat(variables('aoaiSvcName'), '/embedding')]",
      "dependsOn": [
        "[resourceId('Microsoft.Resources/deploymentScripts','Wait10s')]"
      ],
      "sku": {
        "name": "Standard",
        "capacity": 30
      },
      "properties": {
        "model": {
          "format": "OpenAI",
          "name": "text-embedding-ada-002",
          "version": "2"
        },
        "versionUpgradeOption": "OnceNewDefaultVersionAvailable",
        "raiPolicyName": "Microsoft.Default"
      }
    },
    {
      "type": "Microsoft.Sql/servers/databases",
      "apiVersion": "2022-08-01-preview",
      "name": "[concat(variables('sqlSrvName'), '/northwind')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', variables('sqlSrvName'))]"
      ],
      "sku": {
        "name": "Basic",
        "tier": "Basic",
        "capacity": 5
      },
      "kind": "v12.0,user",
      "properties": {
        "collation": "SQL_Latin1_General_CP1_CI_AS",
        "maxSizeBytes": 2147483648,
        "catalogCollation": "SQL_Latin1_General_CP1_CI_AS",
        "zoneRedundant": false,
        "readScale": "Disabled",
        "requestedBackupStorageRedundancy": "Geo",
        "isLedgerOn": false,
        "availabilityZone": "NoPreference"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "properties": {
        "cors": {
          "corsRules": []
        },
        "deleteRetentionPolicy": {
          "allowPermanentDelete": false,
          "enabled": false
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('funcStorageName'), '/default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName'))]"
      ],
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "properties": {
        "cors": {
          "corsRules": []
        },
        "deleteRetentionPolicy": {
          "allowPermanentDelete": false,
          "enabled": true,
          "days": 2
        }
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('backendName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "backend"
      },
      "kind": "app,linux",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "enabled": true,
        "hostNameSslStates": [
          {
            "name": "[concat(variables('backendName'), '.azurewebsites.net')]",
            "sslState": "Disabled",
            "hostType": "Standard"
          },
          {
            "name": "[concat(variables('backendName'), '.scm.azurewebsites.net')]",
            "sslState": "Disabled",
            "hostType": "Repository"
          }
        ],
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "reserved": true,
        "isXenon": false,
        "hyperV": false,
        "vnetRouteAllEnabled": false,
        "vnetImagePullEnabled": false,
        "vnetContentShareEnabled": false,
        "siteConfig": {
          "numberOfWorkers": 1,
          "linuxFxVersion": "python|3.9",
          "acrUseManagedIdentityCreds": false,
          "alwaysOn": true,
          "http20Enabled": false,
          "functionAppScaleLimit": 0,
          "minimumElasticInstanceCount": 0,
          "appSettings": [
            {
              "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
              "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightName')), '2020-02-02').InstrumentationKey]"
            },
            {
              "name": "BLOB_CONNECTION_STRING",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "BLOB_CONTAINER_NAME",
              "value": "chatpdf"
            },
            {
              "name": "BLOB_SUMMARY_CONTAINER_NAME",
              "value": "summary"
            },
            {
              "name": "BLOB_EVALUATOR_CONTAINER_NAME",
              "value": "evaluator"
            },
            {
              "name": "ENABLE_ORYX_BUILD",
              "value": "True"
            },
            {
              "name": "SCM_DO_BUILD_DURING_DEPLOYMENT",
              "value": "True"
            },
            {
              "name": "VERIFYPASS_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/VerifyPassword?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "RUNEVALUATION_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/Evaluator?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SMARTAGENT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/SmartAgent?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "TASKAGENTQA_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/TaskAgentQa?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "CONVERTCODE_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/ConvertCode?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "PROMPTGURU_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/PromptGuru?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "AGENTQA_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/AgentQa?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "INDEXMANAGEMENT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/IndexManagement?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "CHAT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/ChatGpt?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "FMPKEY",
              "value": "dummy"
            },
            {
              "name": "CHATSTREAM_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/ChatGptStream?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "CHATGPT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/OpenChatGpt?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "DOCGENERATOR_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/DocGenerator?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "QA_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/QuestionAnswering?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SQLCHAIN_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/SqlChain?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SQLVISUAL_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/SqlVisual?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SQLCHAT_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/SqlChat?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SQLASK_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/SqlAsk?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "PFQA_URL",
              "value": ""
            },
            {
              "name": "PFQA_KEY",
              "value": ""
            },
            {
              "name": "PFCHAT_URL",
              "value": ""
            },
            {
              "name": "PFCHAT_KEY",
              "value": ""
            },
            {
              "name": "PFSQLASK_URL",
              "value": ""
            },
            {
              "name": "PFSQLASK_KEY",
              "value": ""
            },
            {
              "name": "SPEECH_REGION",
              "value": "[parameters('location')]"
            },
            {
              "name": "SPEECH_KEY",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('speechSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "TEXTANALYTICS_KEY",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('langSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "TEXTANALYTICS_REGION",
              "value": "[parameters('location')]"
            },
            {
              "name": "SUMMARIZER_URL",
              "value": "[concat('https://', variables('funcAppName'), '.azurewebsites.net/api/Summarizer?code=', listkeys(concat(resourceId('Microsoft.Web/sites', variables('funcAppName')), '/host/default'), '2018-11-01').functionKeys.default)]"
            },
            {
              "name": "SEARCHSERVICE",
              "value": "[variables('searchSvcName')]"
            },
            {
              "name": "KBINDEXNAME",
              "value": "aoaikb"
            },
            {
              "name": "COSMOSENDPOINT",
              "value": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbName')), '2022-08-15').documentEndpoint]"
            },
            {
              "name": "COSMOSDATABASE",
              "value": "[variables('cosmosDb')]"
            },
            {
              "name": "COSMOSCONTAINER",
              "value": "[variables('cosmosContainer')]"
            },
            {
              "name": "OpenAiChat",
              "value": "chat"
            },
            {
              "name": "OpenAiEmbedding",
              "value": "embedding"
            },
            {
              "name": "OpenAiEndPoint",
              "value": "[concat('https://', variables('aoaiSvcName'), '.openai.azure.com/')]"
            },
            {
              "name": "OpenAiKey",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "OpenAiApiKey",
              "value": "Dummy"
            },
            {
              "name": "OpenAiVersion",
              "value": "2023-07-01-preview"
            },
            {
              "name": "PineconeEnv",
              "value": "env"
            },
            {
              "name": "PineconeIndex",
              "value": "index"
            },
            {
              "name": "PineconeKey",
              "value": "key"
            },
            {
              "name": "RedisAddress",
              "value": "http://localhost"
            },
            {
              "name": "RedisPassword",
              "value": "Password"
            },
            {
              "name": "RedisPort",
              "value": "6379"
            }
          ]
        },
        "scmSiteAlsoStopped": false,
        "clientAffinityEnabled": false,
        "clientCertEnabled": false,
        "clientCertMode": "Required",
        "hostNamesDisabled": false,
        "containerSize": 0,
        "dailyMemoryTimeQuota": 0,
        "httpsOnly": true,
        "redundancyMode": "None",
        "storageAccountRequired": false,
        "keyVaultReferenceIdentity": "SystemAssigned"
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('funcAppName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "[resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName'))]",
        "[resourceId('Microsoft.Bing/accounts', variables('bingsvcName'))]",
        "[resourceId('Microsoft.Search/searchServices', variables('searchSvcName'))]",
        "[resourceId('Microsoft.Sql/servers', variables('sqlSrvName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "functionapp"
      },
      "kind": "functionapp,linux",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "enabled": true,
        "hostNameSslStates": [
          {
            "name": "[concat(variables('funcAppName'), '.azurewebsites.net')]",
            "sslState": "Disabled",
            "hostType": "Standard"
          },
          {
            "name": "[concat(variables('funcAppName'), '.scm.azurewebsites.net')]",
            "sslState": "Disabled",
            "hostType": "Repository"
          }
        ],
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('aspName'))]",
        "reserved": true,
        "isXenon": false,
        "hyperV": false,
        "vnetRouteAllEnabled": false,
        "vnetImagePullEnabled": false,
        "vnetContentShareEnabled": false,
        "siteConfig": {
          "numberOfWorkers": 1,
          "linuxFxVersion": "python|3.9",
          "acrUseManagedIdentityCreds": false,
          "alwaysOn": true,
          "http20Enabled": false,
          "functionAppScaleLimit": 0,
          "minimumElasticInstanceCount": 0,
          "appSettings": [
            {
              "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
              "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightName')), '2020-02-02').InstrumentationKey]"
            },
            {
              "name": "AzureWebJobsFeatureFlags",
              "value": "EnableWorkerIndexing"
            },
            {
              "name": "AzureWebJobsStorage",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('funcStorageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('funcStorageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('funcStorageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "ENABLE_ORYX_BUILD",
              "value": "True"
            },
            {
              "name": "FUNCTIONS_EXTENSION_VERSION",
              "value": "~4"
            },
            {
              "name": "FUNCTIONS_WORKER_RUNTIME",
              "value": "python"
            },
            {
              "name": "BingUrl",
              "value": "https://api.bing.microsoft.com/v7.0/search"
            },
            {
              "name": "BingKey",
              "value": "[listKeys(resourceId('Microsoft.Bing/accounts', variables('bingsvcName')), '2020-06-10').key1]"
            },
            {
              "name": "UploadPassword",
              "value": "P@ssw0rd"
            },
            {
              "name": "AdminPassword",
              "value": "P@ssw0rd"
            },
            {
              "name": "ChromaUrl",
              "value": "Dummy"
            },
            {
              "name": "ChromaPort",
              "value": "Dummy"
            },
            {
              "name": "MaxTokens",
              "value": "500"
            },
            {
              "name": "OpenAiChat",
              "value": "chat"
            },
            {
              "name": "OpenAiDocContainer",
              "value": "chatpdf"
            },
            {
              "name": "OpenAiSummaryContainer",
              "value": "summary"
            },
            {
              "name": "OpenAiEvaluatorContainer",
              "value": "evaluator"
            },
            {
              "name": "OpenAiDocStorConnString",
              "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2022-05-01').keys[0].value)]"
            },
            {
              "name": "OpenAiDocStorKey",
              "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2022-05-01').keys[0].value]"
            },
            {
              "name": "OpenAiDocStorName",
              "value": "[variables('storageName')]"
            },
            {
              "name": "OpenAiEmbedding",
              "value": "embedding"
            },
            {
              "name": "FormRecognizerEndPoint",
              "value": "[concat('https://', variables('frSvcName'), '.cognitiveservices.azure.com/')]"
            },
            {
              "name": "FormRecognizerKey",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('frSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "OpenAiEndPoint",
              "value": "[concat('https://', variables('aoaiSvcName'), '.openai.azure.com/')]"
            },
            {
              "name": "OpenAiKey",
              "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('aoaiSvcName')), '2022-12-01').key1]"
            },
            {
              "name": "OpenAiApiKey",
              "value": "Dummy"
            },
            {
              "name": "OpenAiVersion",
              "value": "2023-07-01-preview"
            },
            {
              "name": "PineconeEnv",
              "value": "env"
            },
            {
              "name": "PineconeKey",
              "value": "key"
            },
            {
              "name": "RedisAddress",
              "value": "http://localhost"
            },
            {
              "name": "RedisPassword",
              "value": "Password"
            },
            {
              "name": "RedisPort",
              "value": "6379"
            },
            {
              "name": "SCM_DO_BUILD_DURING_DEPLOYMENT",
              "value": "1"
            },
            {
              "name": "SearchService",
              "value": "[variables('searchSvcName')]"
            },
            {
              "name": "SecDocContainer",
              "value": "secdoc"
            },
            {
              "name": "SynapseName",
              "value": "[concat(variables('sqlSrvName'), '.database.windows.net,1433')]"
            },
            {
              "name": "SynapsePassword",
              "value": "P@ssw0rd"
            },
            {
              "name": "SynapsePool",
              "value": "northwind"
            },
            {
              "name": "SynapseUser",
              "value": "azureadmin"
            },
            {
              "name": "Temperature",
              "value": "0.3"
            },
            {
              "name": "VsIndexName",
              "value": "dummy"
            },
            {
              "name": "CosmosEndpoint",
              "value": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbName')), '2022-08-15').documentEndpoint]"
            },
            {
              "name": "CosmosDatabase",
              "value": "[variables('cosmosDb')]"
            },
            {
              "name": "CosmosContainer",
              "value": "[variables('cosmosContainer')]"
            },
            {
              "name": "WEBSITE_CONTENTSHARE",
              "value": "[toLower(variables('funcAppName'))]"
            },
            {
              "name": "RealTimeSpeechPrompt",
              "value": "'\"'\"'\"Write a concise summary of the following: \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RealTimeSpeechPromptIv",
              "value": "text"
            },
            {
              "name": "RtsBankingPrompt",
              "value": "'\"'\"'\"Extract the following from the conversation:\n1. Main reason of the conversation\n2. Sentiment of the customer \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsBankingPromptIv",
              "value": "text"
            },
            {
              "name": "RtsCapMarketPrompt",
              "value": "'\"'\"'\"Extract the following from the conversation:\n1. Main reason of the conversation\n2. Sentiment of the customer \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsCapMarketPromptIv",
              "value": "text"
            },
            {
              "name": "RtsComplexPrompt",
              "value": "'\"'\"'\"You must extract the following information from the phone conversation below: \n\n 1. Call reason (key: reason) \n 2. Cause of incident (key: cause) \n 3. Name of caller (key: caller) \n 4. Account number (key: account_id) \n 5. Follow-up Flag(key: followupind) \n 6. A short, yet detailed summary (key: summary) \n\n Make sure fields 1 to 4 are answered very short. Field 5 is a boolean flag which indicates whether the caller incident was resolved, 1 if follow up required, 0 if resolved.  Please answer in JSON machine-readable format, using the keys from above. Format the output as JSON object. Pretty print the JSON and make sure that is properly closed at the end. \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsComplexPromptIv",
              "value": "text"
            },
            {
              "name": "RtsFollowupPrompt",
              "value": "'\"'\"'\"Generate list of call follow up tasks from following text \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsFollowupPromptIv",
              "value": "text"
            },
            {
              "name": "RtsGeneralPrompt",
              "value": "'\"'\"'\"Extract the following from the conversation:\n1. Main reason of the conversation\n2. Sentiment of the customer\n3. What are the action items and follow-ups? \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsGeneralPromptIv",
              "value": "text"
            },
            {
              "name": "RtsHealthcarePrompt",
              "value": "'\"'\"'\"Extract the following from the conversation:\n1. Main reason of the conversation\n2. Sentiment of the customer\n3. What health condition was discussed? \n4. Was any medication mentioned in the conversation?\n5. Identify medical entities such as symptoms, medications, diagnosis from this conversaion. \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsHealthcarePromptIv",
              "value": "text"
            },
            {
              "name": "RtsInsurancePrompt",
              "value": "'\"'\"'\"Extract the following from the conversation:\n1. Main reason of the conversation\n2. Sentiment of the customer\n3. Where the accident happened?\n4. How did the accident happen?\n5. What was the weather like when the accident happened?\n6. What is customer's phone number?\n7. Was the airbag deployed when accident happened? \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsParticipantsPrompt",
              "value": "'\"'\"'\"Extract list of call participants in list format from the following text \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsParticipantsPromptIv",
              "value": "text"
            },
            {
              "name": "RtsPharmacyPrompt",
              "value": "'\"'\"'\"Provide list of medications, dose, and form discussed in the following text \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsPharmacyPromptIv",
              "value": "text"
            },
            {
              "name": "RtsPiiPrompt",
              "value": "'\"'\"'\"List of all PII and named entities and what is overall sentiment of the conversation \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsPiiPromptIv",
              "value": "text"
            },
            {
              "name": "RtsSummaryNotesPrompt",
              "value": "'\"'\"'\"Generate detailed call summary notes in list format from the following text \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsSummaryNotesPromptIv",
              "value": "text"
            },
            {
              "name": "RtsTopicsPrompt",
              "value": "'\"'\"'\"Generate list of topics discussed from text \r\n \r\n{text}'\"'\"'\""
            },
            {
              "name": "RtsTopicsPromptIv",
              "value": "text"
            },
            {
              "name": "OpenAiQuestionPrompt",
              "value": "'\"'\"'\"Please reply to the question using only the information present in the text above. If you can't find it, reply 'Not in the text'.\nQuestion: _QUESTION_\nAnswer:'\"'\"'\""
            },
            {
              "name": "KbIndexName",
              "value": "aoaikb"
            }
          ]
        },
        "scmSiteAlsoStopped": false,
        "clientAffinityEnabled": false,
        "clientCertEnabled": false,
        "clientCertMode": "Required",
        "hostNamesDisabled": false,
        "containerSize": 1536,
        "dailyMemoryTimeQuota": 0,
        "httpsOnly": true,
        "redundancyMode": "None",
        "storageAccountRequired": false,
        "keyVaultReferenceIdentity": "SystemAssigned"
      }
    },
    {
      "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('backendName'), '/ftp')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('backendName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "backend"
      },
      "properties": {
        "allow": true
      }
    },
    {
      "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('funcAppName'), '/ftp')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "functionapp"
      },
      "properties": {
        "allow": true
      }
    },
    {
      "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('backendName'), '/scm')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('backendName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "backend"
      },
      "properties": {
        "allow": true
      }
    },
    {
      "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('funcAppName'), '/scm')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "functionapp"
      },
      "properties": {
        "allow": true
      }
    },
    {
      "type": "Microsoft.Web/sites/config",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('backendName'), '/web')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('backendName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "backend"
      },
      "properties": {
        "numberOfWorkers": 1,
        "defaultDocuments": [
          "Default.htm",
          "Default.html",
          "Default.asp",
          "index.htm",
          "index.html",
          "iisstart.htm",
          "default.aspx",
          "index.php",
          "hostingstart.html"
        ],
        "netFrameworkVersion": "v4.0",
        "linuxFxVersion": "python|3.9",
        "requestTracingEnabled": true,
        "requestTracingExpirationTime": "9999-12-31T23:59:00Z",
        "remoteDebuggingEnabled": false,
        "httpLoggingEnabled": true,
        "acrUseManagedIdentityCreds": false,
        "logsDirectorySizeLimit": 35,
        "detailedErrorLoggingEnabled": true,
        "publishingUsername": "[concat('$', parameters('prefix'), variables('backendName'))]",
        "scmType": "None",
        "use32BitWorkerProcess": false,
        "webSocketsEnabled": false,
        "alwaysOn": true,
        "managedPipelineMode": "Integrated",
        "virtualApplications": [
          {
            "virtualPath": "/",
            "physicalPath": "site\\wwwroot",
            "preloadEnabled": true
          }
        ],
        "loadBalancing": "LeastRequests",
        "experiments": {
          "rampUpRules": []
        },
        "autoHealEnabled": false,
        "vnetRouteAllEnabled": false,
        "vnetPrivatePortsCount": 0,
        "cors": {
          "allowedOrigins": [
            "https://portal.azure.com",
            "https://ms.portal.azure.com"
          ],
          "supportCredentials": false
        },
        "localMySqlEnabled": false,
        "managedServiceIdentityId": 3433,
        "ipSecurityRestrictions": [
          {
            "ipAddress": "Any",
            "action": "Allow",
            "priority": 2147483647,
            "name": "Allow all",
            "description": "Allow all access"
          }
        ],
        "scmIpSecurityRestrictions": [
          {
            "ipAddress": "Any",
            "action": "Allow",
            "priority": 2147483647,
            "name": "Allow all",
            "description": "Allow all access"
          }
        ],
        "scmIpSecurityRestrictionsUseMain": false,
        "http20Enabled": false,
        "minTlsVersion": "1.2",
        "scmMinTlsVersion": "1.2",
        "ftpsState": "FtpsOnly",
        "preWarmedInstanceCount": 0,
        "elasticWebAppScaleLimit": 0,
        "functionsRuntimeScaleMonitoringEnabled": false,
        "minimumElasticInstanceCount": 0,
        "azureStorageAccounts": {}
      }
    },
    {
      "type": "Microsoft.Web/sites/config",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('funcAppName'), '/web')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]"
      ],
      "tags": {
        "azd-env-name": "[parameters('prefix')]",
        "azd-service-name": "functionapp"
      },
      "properties": {
        "numberOfWorkers": 1,
        "defaultDocuments": [
          "Default.htm",
          "Default.html",
          "Default.asp",
          "index.htm",
          "index.html",
          "iisstart.htm",
          "default.aspx",
          "index.php"
        ],
        "netFrameworkVersion": "v4.0",
        "linuxFxVersion": "python|3.9",
        "requestTracingEnabled": true,
        "requestTracingExpirationTime": "9999-12-31T23:59:00Z",
        "remoteDebuggingEnabled": false,
        "httpLoggingEnabled": true,
        "acrUseManagedIdentityCreds": false,
        "logsDirectorySizeLimit": 35,
        "detailedErrorLoggingEnabled": true,
        "publishingUsername": "[concat('$', parameters('prefix'), variables('funcAppName'))]",
        "scmType": "None",
        "use32BitWorkerProcess": false,
        "webSocketsEnabled": false,
        "alwaysOn": true,
        "managedPipelineMode": "Integrated",
        "virtualApplications": [
          {
            "virtualPath": "/",
            "physicalPath": "site\\wwwroot",
            "preloadEnabled": true
          }
        ],
        "loadBalancing": "LeastRequests",
        "experiments": {
          "rampUpRules": []
        },
        "autoHealEnabled": false,
        "vnetRouteAllEnabled": false,
        "vnetPrivatePortsCount": 0,
        "cors": {
          "allowedOrigins": [
            "https://portal.azure.com",
            "https://ms.portal.azure.com"
          ],
          "supportCredentials": false
        },
        "localMySqlEnabled": false,
        "managedServiceIdentityId": 3431,
        "ipSecurityRestrictions": [
          {
            "ipAddress": "Any",
            "action": "Allow",
            "priority": 2147483647,
            "name": "Allow all",
            "description": "Allow all access"
          }
        ],
        "scmIpSecurityRestrictions": [
          {
            "ipAddress": "Any",
            "action": "Allow",
            "priority": 2147483647,
            "name": "Allow all",
            "description": "Allow all access"
          }
        ],
        "scmIpSecurityRestrictionsUseMain": false,
        "http20Enabled": false,
        "minTlsVersion": "1.2",
        "scmMinTlsVersion": "1.2",
        "ftpsState": "FtpsOnly",
        "preWarmedInstanceCount": 0,
        "functionAppScaleLimit": 0,
        "functionsRuntimeScaleMonitoringEnabled": false,
        "minimumElasticInstanceCount": 0,
        "azureStorageAccounts": {}
      }
    },
    {
      "type": "Microsoft.Web/sites/hostNameBindings",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('backendName'), '/', variables('backendName'), '.azurewebsites.net')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('backendName'))]"
      ],
      "properties": {
        "siteName": "[concat(parameters('prefix'), variables('backendName'))]",
        "hostNameType": "Verified"
      }
    },
    {
      "type": "Microsoft.Web/sites/hostNameBindings",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('funcAppName'), '/', variables('funcAppName'), '.azurewebsites.net')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]"
      ],
      "properties": {
        "siteName": "[concat(parameters('prefix'), variables('funcAppName'))]",
        "hostNameType": "Verified"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/azure-webjobs-hosts')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/azure-webjobs-secrets')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/chatpdf')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/summary')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-09-01",
      "name": "[concat(variables('storageName'), '/default/secdoc')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageName'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ],
      "properties": {
        "immutableStorageWithVersioning": {
          "enabled": false
        },
        "defaultEncryptionScope": "$account-encryption-key",
        "denyEncryptionScopeOverride": false,
        "publicAccess": "None"
      }
    }
  ]
}


================================================
FILE: Deployment/backendapp.yml
================================================
# This workflow will build and push a Python application to an Azure Web App when a commit is pushed to your default branch.
#
# This workflow assumes you have already created the target Azure App Service web app.
# For instructions see https://docs.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=bash&pivots=python-framework-flask
#
# To configure this workflow:
#
# 1. Download the Publish Profile for your Azure Web App. You can download this file from the Overview page of your Web App in the Azure Portal.
#    For more information: https://docs.microsoft.com/en-us/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials
#
# 2. Create a secret in your repository named AZURE_WEBAPP_PUBLISH_PROFILE, paste the publish profile contents as the value of the secret.
#    For instructions on obtaining the publish profile see: https://docs.microsoft.com/azure/app-service/deploy-github-actions#configure-the-github-secret
#
# 3. Change the value for the AZURE_WEBAPP_NAME. Optionally, change the PYTHON_VERSION environment variables below.
#
# For more information on GitHub Actions for Azure: https://github.com/Azure/Actions
# For more information on the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples

name: Deploy App

env:
  #AZURE_WEBAPP_NAME: dataaipdfchat  # set this to the name of your Azure Web App
  PYTHON_VERSION: '3.9'              # set this to the Python version to use
  NODE_VERSION: '16.x'                      # set this to the node version to use (e.g. '8.x', '10.x', '12.x')
  AZURE_NODEJS_PACKAGE_PATH: 'app/frontend'       # set this to the path to your function app project, defaults to the repository root
  AZURE_FUNCTIONAPP_PACKAGE_PATH: 'app/backend'

on:
  push:
    branches: [ "main" ]
  workflow_dispatch:

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node ${{ env.NODE_VERSION }} Environment
        uses: actions/setup-node@v3
        with:
          node-version: ${{ env.NODE_VERSION }}

      - name: 'Resolve Project Dependencies Using Npm'
        shell: bash # For Linux, use bash
        run: |
          pushd './${{ env.AZURE_NODEJS_PACKAGE_PATH }}'
          export NODE_OPTIONS="--max_old_space_size=4096"
          npm install
          npm run build
          popd
        
      - name: Set up Python version
        uses: actions/setup-python@v3.0.0
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: 'pip'

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: 'Resolve Project Dependencies Using Pip'
        shell: bash
        run: |
          pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          popd

      # Optional: Add step to run tests here (PyTest, Django test suites, etc.)

      - name: Upload artifact for deployment jobs
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            ./${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
            !venv/

  deploy:
    permissions:
      contents: none
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Development'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: python-app
          path: .

      - name: 'Login via Azure CLI'
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_RBAC_CREDENTIALS }} # set up AZURE_RBAC_CREDENTIALS secrets in your repository
          
      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: ${{ secrets.AZURE_WEBAPP_NAME }}
          scm-do-build-during-deployment: true
          enable-oryx-build: true

================================================
FILE: Deployment/northwind.sql
================================================
/*
** Copyright Microsoft, Inc. 1994 - 2000
** All Rights Reserved.
*/

-- This script does not create a database.
-- Run this script in the database you want the objects to be created.
-- Default schema is dbo.

SET NOCOUNT ON
GO

set quoted_identifier on
GO

/* Set DATEFORMAT so that the date strings are interpreted correctly regardless of
   the default DATEFORMAT on the server.
*/
SET DATEFORMAT mdy
GO

go
if exists (select * from sysobjects where id = object_id('dbo.Employee Sales by Country') and sysstat & 0xf = 4)
	drop procedure "dbo"."Employee Sales by Country"
GO
if exists (select * from sysobjects where id = object_id('dbo.Sales by Year') and sysstat & 0xf = 4)
	drop procedure "dbo"."Sales by Year"
GO
if exists (select * from sysobjects where id = object_id('dbo.Ten Most Expensive Products') and sysstat & 0xf = 4)
	drop procedure "dbo"."Ten Most Expensive Products"
GO
if exists (select * from sysobjects where id = object_id('dbo.CustOrderHist') and sysstat & 0xf = 4)
	drop procedure "dbo"."CustOrderHist"
GO
if exists (select * from sysobjects where id = object_id('dbo.CustOrdersDetail') and sysstat & 0xf = 4)
	drop procedure "dbo"."CustOrdersDetail"
GO
if exists (select * from sysobjects where id = object_id('dbo.CustOrdersOrders') and sysstat & 0xf = 4)
	drop procedure "dbo"."CustOrdersOrders"
GO
if exists (select * from sysobjects where id = object_id('dbo.SalesByCategory') and sysstat & 0xf = 4)
	drop procedure "dbo"."SalesByCategory"
GO
if exists (select * from sysobjects where id = object_id('dbo.Category Sales for 1997') and sysstat & 0xf = 2)
	drop view "dbo"."Category Sales for 1997"
GO
if exists (select * from sysobjects where id = object_id('dbo.Sales by Category') and sysstat & 0xf = 2)
	drop view "dbo"."Sales by Category"
GO
if exists (select * from sysobjects where id = object_id('dbo.Sales Totals by Amount') and sysstat & 0xf = 2)
	drop view "dbo"."Sales Totals by Amount"
GO
if exists (select * from sysobjects where id = object_id('dbo.Summary of Sales by Quarter') and sysstat & 0xf = 2)
	drop view "dbo"."Summary of Sales by Quarter"
GO
if exists (select * from sysobjects where id = object_id('dbo.Summary of Sales by Year') and sysstat & 0xf = 2)
	drop view "dbo"."Summary of Sales by Year"
GO
if exists (select * from sysobjects where id = object_id('dbo.Invoices') and sysstat & 0xf = 2)
	drop view "dbo"."Invoices"
GO
if exists (select * from sysobjects where id = object_id('dbo.OrderDetails Extended') and sysstat & 0xf = 2)
	drop view "dbo"."OrderDetails Extended"
GO
if exists (select * from sysobjects where id = object_id('dbo.Order Subtotals') and sysstat & 0xf = 2)
	drop view "dbo"."Order Subtotals"
GO
if exists (select * from sysobjects where id = object_id('dbo.Product Sales for 1997') and sysstat & 0xf = 2)
	drop view "dbo"."Product Sales for 1997"
GO
if exists (select * from sysobjects where id = object_id('dbo.Alphabetical list of products') and sysstat & 0xf = 2)
	drop view "dbo"."Alphabetical list of products"
GO
if exists (select * from sysobjects where id = object_id('dbo.Current Product List') and sysstat & 0xf = 2)
	drop view "dbo"."Current Product List"
GO
if exists (select * from sysobjects where id = object_id('dbo.Orders Qry') and sysstat & 0xf = 2)
	drop view "dbo"."Orders Qry"
GO
if exists (select * from sysobjects where id = object_id('dbo.Products Above Average Price') and sysstat & 0xf = 2)
	drop view "dbo"."Products Above Average Price"
GO
if exists (select * from sysobjects where id = object_id('dbo.Products by Category') and sysstat & 0xf = 2)
	drop view "dbo"."Products by Category"
GO
if exists (select * from sysobjects where id = object_id('dbo.Quarterly Orders') and sysstat & 0xf = 2)
	drop view "dbo"."Quarterly Orders"
GO
if exists (select * from sysobjects where id = object_id('dbo.Customer and Suppliers by City') and sysstat & 0xf = 2)
	drop view "dbo"."Customer and Suppliers by City"
GO
if exists (select * from sysobjects where id = object_id('dbo.Order Details') and sysstat & 0xf = 3)
	drop table "dbo"."Order Details"
GO
if exists (select * from sysobjects where id = object_id('dbo.OrderDetails') and sysstat & 0xf = 3)
	drop table "dbo"."OrderDetails"
GO
if exists (select * from sysobjects where id = object_id('dbo.Orders') and sysstat & 0xf = 3)
	drop table "dbo"."Orders"
GO
if exists (select * from sysobjects where id = object_id('dbo.Products') and sysstat & 0xf = 3)
	drop table "dbo"."Products"
GO
if exists (select * from sysobjects where id = object_id('dbo.Categories') and sysstat & 0xf = 3)
	drop table "dbo"."Categories"
GO
if exists (select * from sysobjects where id = object_id('dbo.CustomerCustomerDemo') and sysstat & 0xf = 3)
	drop table "dbo"."CustomerCustomerDemo"
GO
if exists (select * from sysobjects where id = object_id('dbo.CustomerDemographics') and sysstat & 0xf = 3)
	drop table "dbo"."CustomerDemographics"
GO
if exists (select * from sysobjects where id = object_id('dbo.Customers') and sysstat & 0xf = 3)
	drop table "dbo"."Customers"
GO
if exists (select * from sysobjects where id = object_id('dbo.Shippers') and sysstat & 0xf = 3)
	drop table "dbo"."Shippers"
GO
if exists (select * from sysobjects where id = object_id('dbo.Suppliers') and sysstat & 0xf = 3)
	drop table "dbo"."Suppliers"
GO
if exists (select * from sysobjects where id = object_id('dbo.EmployeeTerritories') and sysstat & 0xf = 3)
	drop table "dbo"."EmployeeTerritories"
GO
if exists (select * from sysobjects where id = object_id('dbo.Territories') and sysstat & 0xf = 3)
	drop table "dbo".Territories
GO
if exists (select * from sysobjects where id = object_id('dbo.Region') and sysstat & 0xf = 3)
	drop table "dbo".Region
GO
if exists (select * from sysobjects where id = object_id('dbo.Employees') and sysstat & 0xf = 3)
	drop table "dbo"."Employees"
GO

CREATE TABLE "Employees" (
	"EmployeeID" "int" IDENTITY (1, 1) NOT NULL ,
	"LastName" nvarchar (20) NOT NULL ,
	"FirstName" nvarchar (10) NOT NULL ,
	"Title" nvarchar (30) NULL ,
	"TitleOfCourtesy" nvarchar (25) NULL ,
	"BirthDate" "datetime" NULL ,
	"HireDate" "datetime" NULL ,
	"Address" nvarchar (60) NULL ,
	"City" nvarchar (15) NULL ,
	"Region" nvarchar (15) NULL ,
	"PostalCode" nvarchar (10) NULL ,
	"Country" nvarchar (15) NULL ,
	"HomePhone" nvarchar (24) NULL ,
	"Extension" nvarchar (4) NULL ,
	"Photo" "image" NULL ,
	"Notes" "ntext" NULL ,
	"ReportsTo" "int" NULL ,
	"PhotoPath" nvarchar (255) NULL ,
	CONSTRAINT "PK_Employees" PRIMARY KEY  CLUSTERED
	(
		"EmployeeID"
	),
	CONSTRAINT "FK_Employees_Employees" FOREIGN KEY
	(
		"ReportsTo"
	) REFERENCES "dbo"."Employees" (
		"EmployeeID"
	),
	CONSTRAINT "CK_Birthdate" CHECK (BirthDate < getdate())
)
GO
 CREATE  INDEX "LastName" ON "dbo"."Employees"("LastName")
GO
 CREATE  INDEX "PostalCode" ON "dbo"."Employees"("PostalCode")
GO

CREATE TABLE "Categories" (
	"CategoryID" "int" IDENTITY (1, 1) NOT NULL ,
	"CategoryName" nvarchar (15) NOT NULL ,
	"Description" "ntext" NULL ,
	"Picture" "image" NULL ,
	CONSTRAINT "PK_Categories" PRIMARY KEY  CLUSTERED
	(
		"CategoryID"
	)
)
GO
 CREATE  INDEX "CategoryName" ON "dbo"."Categories"("CategoryName")
GO

CREATE TABLE "Customers" (
	"CustomerID" nchar (5) NOT NULL ,
	"CompanyName" nvarchar (40) NOT NULL ,
	"ContactName" nvarchar (30) NULL ,
	"ContactTitle" nvarchar (30) NULL ,
	"Address" nvarchar (60) NULL ,
	"City" nvarchar (15) NULL ,
	"Region" nvarchar (15) NULL ,
	"PostalCode" nvarchar (10) NULL ,
	"Country" nvarchar (15) NULL ,
	"Phone" nvarchar (24) NULL ,
	"Fax" nvarchar (24) NULL ,
	CONSTRAINT "PK_Customers" PRIMARY KEY  CLUSTERED
	(
		"CustomerID"
	)
)
GO
 CREATE  INDEX "City" ON "dbo"."Customers"("City")
GO
 CREATE  INDEX "CompanyName" ON "dbo"."Customers"("CompanyName")
GO
 CREATE  INDEX "PostalCode" ON "dbo"."Customers"("PostalCode")
GO
 CREATE  INDEX "Region" ON "dbo"."Customers"("Region")
GO

CREATE TABLE "Shippers" (
	"ShipperID" "int" IDENTITY (1, 1) NOT NULL ,
	"CompanyName" nvarchar (40) NOT NULL ,
	"Phone" nvarchar (24) NULL ,
	CONSTRAINT "PK_Shippers" PRIMARY KEY  CLUSTERED
	(
		"ShipperID"
	)
)
GO
CREATE TABLE "Suppliers" (
	"SupplierID" "int" IDENTITY (1, 1) NOT NULL ,
	"CompanyName" nvarchar (40) NOT NULL ,
	"ContactName" nvarchar (30) NULL ,
	"ContactTitle" nvarchar (30) NULL ,
	"Address" nvarchar (60) NULL ,
	"City" nvarchar (15) NULL ,
	"Region" nvarchar (15) NULL ,
	"PostalCode" nvarchar (10) NULL ,
	"Country" nvarchar (15) NULL ,
	"Phone" nvarchar (24) NULL ,
	"Fax" nvarchar (24) NULL ,
	"HomePage" "ntext" NULL ,
	CONSTRAINT "PK_Suppliers" PRIMARY KEY  CLUSTERED
	(
		"SupplierID"
	)
)
GO
 CREATE  INDEX "CompanyName" ON "dbo"."Suppliers"("CompanyName")
GO
 CREATE  INDEX "PostalCode" ON "dbo"."Suppliers"("PostalCode")
GO

CREATE TABLE "Orders" (
	"OrderID" "int" IDENTITY (1, 1) NOT NULL ,
	"CustomerID" nchar (5) NULL ,
	"EmployeeID" "int" NULL ,
	"OrderDate" "datetime" NULL ,
	"RequiredDate" "datetime" NULL ,
	"ShippedDate" "datetime" NULL ,
	"ShipVia" "int" NULL ,
	"Freight" "money" NULL CONSTRAINT "DF_Orders_Freight" DEFAULT (0),
	"ShipName" nvarchar (40) NULL ,
	"ShipAddress" nvarchar (60) NULL ,
	"ShipCity" nvarchar (15) NULL ,
	"ShipRegion" nvarchar (15) NULL ,
	"ShipPostalCode" nvarchar (10) NULL ,
	"ShipCountry" nvarchar (15) NULL ,
	CONSTRAINT "PK_Orders" PRIMARY KEY  CLUSTERED
	(
		"OrderID"
	),
	CONSTRAINT "FK_Orders_Customers" FOREIGN KEY
	(
		"CustomerID"
	) REFERENCES "dbo"."Customers" (
		"CustomerID"
	),
	CONSTRAINT "FK_Orders_Employees" FOREIGN KEY
	(
		"EmployeeID"
	) REFERENCES "dbo"."Employees" (
		"EmployeeID"
	),
	CONSTRAINT "FK_Orders_Shippers" FOREIGN KEY
	(
		"ShipVia"
	) REFERENCES "dbo"."Shippers" (
		"ShipperID"
	)
)
GO
 CREATE  INDEX "CustomerID" ON "dbo"."Orders"("CustomerID")
GO
 CREATE  INDEX "CustomersOrders" ON "dbo"."Orders"("CustomerID")
GO
 CREATE  INDEX "EmployeeID" ON "dbo"."Orders"("EmployeeID")
GO
 CREATE  INDEX "EmployeesOrders" ON "dbo"."Orders"("EmployeeID")
GO
 CREATE  INDEX "OrderDate" ON "dbo"."Orders"("OrderDate")
GO
 CREATE  INDEX "ShippedDate" ON "dbo"."Orders"("ShippedDate")
GO
 CREATE  INDEX "ShippersOrders" ON "dbo"."Orders"("ShipVia")
GO
 CREATE  INDEX "ShipPostalCode" ON "dbo"."Orders"("ShipPostalCode")
GO

CREATE TABLE "Products" (
	"ProductID" "int" IDENTITY (1, 1) NOT NULL ,
	"ProductName" nvarchar (40) NOT NULL ,
	"SupplierID" "int" NULL ,
	"CategoryID" "int" NULL ,
	"QuantityPerUnit" nvarchar (20) NULL ,
	"UnitPrice" "money" NULL CONSTRAINT "DF_Products_UnitPrice" DEFAULT (0),
	"UnitsInStock" "smallint" NULL CONSTRAINT "DF_Products_UnitsInStock" DEFAULT (0),
	"UnitsOnOrder" "smallint" NULL CONSTRAINT "DF_Products_UnitsOnOrder" DEFAULT (0),
	"ReorderLevel" "smallint" NULL CONSTRAINT "DF_Products_ReorderLevel" DEFAULT (0),
	"Discontinued" "bit" NOT NULL CONSTRAINT "DF_Products_Discontinued" DEFAULT (0),
	CONSTRAINT "PK_Products" PRIMARY KEY  CLUSTERED
	(
		"ProductID"
	),
	CONSTRAINT "FK_Products_Categories" FOREIGN KEY
	(
		"CategoryID"
	) REFERENCES "dbo"."Categories" (
		"CategoryID"
	),
	CONSTRAINT "FK_Products_Suppliers" FOREIGN KEY
	(
		"SupplierID"
	) REFERENCES "dbo"."Suppliers" (
		"SupplierID"
	),
	CONSTRAINT "CK_Products_UnitPrice" CHECK (UnitPrice >= 0),
	CONSTRAINT "CK_ReorderLevel" CHECK (ReorderLevel >= 0),
	CONSTRAINT "CK_UnitsInStock" CHECK (UnitsInStock >= 0),
	CONSTRAINT "CK_UnitsOnOrder" CHECK (UnitsOnOrder >= 0)
)
GO
 CREATE  INDEX "CategoriesProducts" ON "dbo"."Products"("CategoryID")
GO
 CREATE  INDEX "CategoryID" ON "dbo"."Products"("CategoryID")
GO
 CREATE  INDEX "ProductName" ON "dbo"."Products"("ProductName")
GO
 CREATE  INDEX "SupplierID" ON "dbo"."Products"("SupplierID")
GO
 CREATE  INDEX "SuppliersProducts" ON "dbo"."Products"("SupplierID")
GO

CREATE TABLE "OrderDetails" (
	"OrderID" "int" NOT NULL ,
	"ProductID" "int" NOT NULL ,
	"UnitPrice" "money" NOT NULL CONSTRAINT "DF_Order_Details_UnitPrice" DEFAULT (0),
	"Quantity" "smallint" NOT NULL CONSTRAINT "DF_Order_Details_Quantity" DEFAULT (1),
	"Discount" "real" NOT NULL CONSTRAINT "DF_Order_Details_Discount" DEFAULT (0),
	CONSTRAINT "PK_Order_Details" PRIMARY KEY  CLUSTERED
	(
		"OrderID",
		"ProductID"
	),
	CONSTRAINT "FK_Order_Details_Orders" FOREIGN KEY
	(
		"OrderID"
	) REFERENCES "dbo"."Orders" (
		"OrderID"
	),
	CONSTRAINT "FK_Order_Details_Products" FOREIGN KEY
	(
		"ProductID"
	) REFERENCES "dbo"."Products" (
		"ProductID"
	),
	CONSTRAINT "CK_Discount" CHECK (Discount >= 0 and (Discount <= 1)),
	CONSTRAINT "CK_Quantity" CHECK (Quantity > 0),
	CONSTRAINT "CK_UnitPrice" CHECK (UnitPrice >= 0)
)
GO
 CREATE  INDEX "OrderID" ON "dbo"."OrderDetails"("OrderID")
GO
 CREATE  INDEX "OrdersOrder_Details" ON "dbo"."OrderDetails"("OrderID")
GO
 CREATE  INDEX "ProductID" ON "dbo"."OrderDetails"("ProductID")
GO
 CREATE  INDEX "ProductsOrder_Details" ON "dbo"."OrderDetails"("ProductID")
GO


create view "Customer and Suppliers by City" AS
SELECT City, CompanyName, ContactName, 'Customers' AS Relationship
FROM Customers
UNION SELECT City, CompanyName, ContactName, 'Suppliers'
FROM Suppliers
--ORDER BY City, CompanyName
GO

create view "Alphabetical list of products" AS
SELECT Products.*, Categories.CategoryName
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
WHERE (((Products.Discontinued)=0))
GO

create view "Current Product List" AS
SELECT Product_List.ProductID, Product_List.ProductName
FROM Products AS Product_List
WHERE (((Product_List.Discontinued)=0))
--ORDER BY Product_List.ProductName
GO

create view "Orders Qry" AS
SELECT Orders.OrderID, Orders.CustomerID, Orders.EmployeeID, Orders.OrderDate, Orders.RequiredDate,
	Orders.ShippedDate, Orders.ShipVia, Orders.Freight, Orders.ShipName, Orders.ShipAddress, Orders.ShipCity,
	Orders.ShipRegion, Orders.ShipPostalCode, Orders.ShipCountry,
	Customers.CompanyName, Customers.Address, Customers.City, Customers.Region, Customers.PostalCode, Customers.Country
FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GO

create view "Products Above Average Price" AS
SELECT Products.ProductName, Products.UnitPrice
FROM Products
WHERE Products.UnitPrice>(SELECT AVG(UnitPrice) From Products)
--ORDER BY Products.UnitPrice DESC
GO

create view "Products by Category" AS
SELECT Categories.CategoryName, Products.ProductName, Products.QuantityPerUnit, Products.UnitsInStock, Products.Discontinued
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
WHERE Products.Discontinued <> 1
--ORDER BY Categories.CategoryName, Products.ProductName
GO

create view "Quarterly Orders" AS
SELECT DISTINCT Customers.CustomerID, Customers.CompanyName, Customers.City, Customers.Country
FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
GO

create view Invoices AS
SELECT Orders.ShipName, Orders.ShipAddress, Orders.ShipCity, Orders.ShipRegion, Orders.ShipPostalCode,
	Orders.ShipCountry, Orders.CustomerID, Customers.CompanyName AS CustomerName, Customers.Address, Customers.City,
	Customers.Region, Customers.PostalCode, Customers.Country,
	(FirstName + ' ' + LastName) AS Salesperson,
	Orders.OrderID, Orders.OrderDate, Orders.RequiredDate, Orders.ShippedDate, Shippers.CompanyName As ShipperName,
	"OrderDetails".ProductID, Products.ProductName, "OrderDetails".UnitPrice, "OrderDetails".Quantity,
	"OrderDetails".Discount,
	(CONVERT(money,("OrderDetails".UnitPrice*Quantity*(1-Discount)/100))*100) AS ExtendedPrice, Orders.Freight
FROM 	Shippers INNER JOIN
		(Products INNER JOIN
			(
				(Employees INNER JOIN
					(Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID)
				ON Employees.EmployeeID = Orders.EmployeeID)
			INNER JOIN "OrderDetails" ON Orders.OrderID = "OrderDetails".OrderID)
		ON Products.ProductID = "OrderDetails".ProductID)
	ON Shippers.ShipperID = Orders.ShipVia
GO

create view "OrderDetails Extended" AS
SELECT "OrderDetails".OrderID, "OrderDetails".ProductID, Products.ProductName,
	"OrderDetails".UnitPrice, "OrderDetails".Quantity, "OrderDetails".Discount,
	(CONVERT(money,("OrderDetails".UnitPrice*Quantity*(1-Discount)/100))*100) AS ExtendedPrice
FROM Products INNER JOIN "OrderDetails" ON Products.ProductID = "OrderDetails".ProductID
--ORDER BY "OrderDetails".OrderID
GO

create view "Order Subtotals" AS
SELECT "OrderDetails".OrderID, Sum(CONVERT(money,("OrderDetails".UnitPrice*Quantity*(1-Discount)/100))*100) AS Subtotal
FROM "OrderDetails"
GROUP BY "OrderDetails".OrderID
GO

create view "Product Sales for 1997" AS
SELECT Categories.CategoryName, Products.ProductName,
Sum(CONVERT(money,("OrderDetails".UnitPrice*Quantity*(1-Discount)/100))*100) AS ProductSales
FROM (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID)
	INNER JOIN (Orders
		INNER JOIN "OrderDetails" ON Orders.OrderID = "OrderDetails".OrderID)
	ON Products.ProductID = "OrderDetails".ProductID
WHERE (((Orders.ShippedDate) Between '19970101' And '19971231'))
GROUP BY Categories.CategoryName, Products.ProductName
GO

create view "Category Sales for 1997" AS
SELECT "Product Sales for 1997".CategoryName, Sum("Product Sales for 1997".ProductSales) AS CategorySales
FROM "Product Sales for 1997"
GROUP BY "Product Sales for 1997".CategoryName
GO

create view "Sales by Category" AS
SELECT Categories.CategoryID, Categories.CategoryName, Products.ProductName,
	Sum("OrderDetails Extended".ExtendedPrice) AS ProductSales
FROM 	Categories INNER JOIN
		(Products INNER JOIN
			(Orders INNER JOIN "OrderDetails Extended" ON Orders.OrderID = "OrderDetails Extended".OrderID)
		ON Products.ProductID = "OrderDetails Extended".ProductID)
	ON Categories.CategoryID = Products.CategoryID
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
GROUP BY Categories.CategoryID, Categories.CategoryName, Products.ProductName
--ORDER BY Products.ProductName
GO

create view "Sales Totals by Amount" AS
SELECT "Order Subtotals".Subtotal AS SaleAmount, Orders.OrderID, Customers.CompanyName, Orders.ShippedDate
FROM 	Customers INNER JOIN
		(Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID)
	ON Customers.CustomerID = Orders.CustomerID
WHERE ("Order Subtotals".Subtotal >2500) AND (Orders.ShippedDate BETWEEN '19970101' And '19971231')
GO

create view "Summary of Sales by Quarter" AS
SELECT Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal
FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID
WHERE Orders.ShippedDate IS NOT NULL
--ORDER BY Orders.ShippedDate
GO

create view "Summary of Sales by Year" AS
SELECT Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal
FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID
WHERE Orders.ShippedDate IS NOT NULL
--ORDER BY Orders.ShippedDate
GO

create procedure "Ten Most Expensive Products" AS
SET ROWCOUNT 10
SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice
FROM Products
ORDER BY Products.UnitPrice DESC
GO

create procedure "Employee Sales by Country"
@Beginning_Date DateTime, @Ending_Date DateTime AS
SELECT Employees.Country, Employees.LastName, Employees.FirstName, Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal AS SaleAmount
FROM Employees INNER JOIN
	(Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID)
	ON Employees.EmployeeID = Orders.EmployeeID
WHERE Orders.ShippedDate Between @Beginning_Date And @Ending_Date
GO

create procedure "Sales by Year"
	@Beginning_Date DateTime, @Ending_Date DateTime AS
SELECT Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy,ShippedDate) AS Year
FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID
WHERE Orders.ShippedDate Between @Beginning_Date And @Ending_Date
GO

set quoted_identifier on
go
set identity_insert "Categories" on
go
ALTER TABLE "Categories" NOCHECK CONSTRAINT ALL
go
INSERT "Categories"("CategoryID","CategoryName","Description","Picture") VALUES(1,'Beverages','Soft drinks, coffees, teas, beers, and ales',0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF00000000000000000010000000001000000001001000000000000001010100010000100100000001010001000000100100000100000010101000100000100010000000000000000000001000000001000000000000001000000000000000000000001001001000000000000000000001001001000012507070100000001000000001000100100000010000001000000000100100100000001001010101010000000000000000000001001000100000101010101000000000000000000000000000000000000101020525363777777777777753530100101000100000000001010001001000100100100000000000100000000000000000100010001001010001000000010010000000000000100000000000000000000000000000001014343577777777777777777777777777770100120001010100102000000000000000000000000100100010010000000000100010000000000000000010010000001001001010100000000000000000000000000000001021617777777775757535353525777777777777770150120000100010101000000000000000001000000000000001001001000000000010010000010010010000101001001000000100000001000000000000000000000001417777737617376377775767771707752777777776340161210300000000010000000000010000000000000000000000000000000000000000100000000000100000000000010000100000000000000000000000000100503677577571705014000000101070717775777777775334101400010101010001010010101000000000000000000000000000001000000000000000000000000000000001010001000001000000000000000000000000010357353000000000000000000000000000171777777777470612101000000001000001000000010000000000000000000000000000000100010703010101210000000000000000000000000000000000000000000000101034350000000010653435777570477474700000107757777171000000101001000101000101010000100000000000000000001041477110131035750020040477301000100000000000000000000000000000000000000000010004014176577707000067777777776560404007371734361701400001241000001000000001000020400000200000101747767777000101073777577777775372100000000100000000000000100100000000010000010000037676476700004000577470416717477421405000434140343000565120510100301014002107171370701437777777775777777112103177777777777705757771010000000100000000000000010000100000101000470440440671007477776777777614060600742524001777777747646776752060250003021716737777777777777774747727574777001016777777777767173317703000101010000000010000000001000000000000420460200077427477767777777775677777746474656606767777665746776757151253507166737777733746777577777777572776771100517777777767776015713141030020001000000001001000000000010100067440044047761477767776706767777674765673470657505767375664746757777271252167717733771737776777677567476577577121103775777777776717027753121010101000010000000000100001010000010767060004776747776776777756776777777777042477676067777467474747676777565256531311771177376477777576757777747710110701777777767777401717340000000000100001000000000001000000101004776540666050777677657777677470774777776747664607777376747476777777677717173735377717737747777777777774774770011271077777767777763171735210121010100000000000000000000010000000300406767757676775077006767477774774777774747770476777656706746777657777777777777777777737667777476574774777771001031777777776767741371771000000000010000000000000000000000101005707442567656176006767004770476707700767770000477747734656446745677676777777777777777777375667777777777777777773100010777777777777771753521010101010000000000100010000000010007777712152503004670077774767427047247776577564700076737747670474277777777777777777367777777765777777777777434777750757775377767676770172773100000000001000000000000001000101007170701614204046007746040676167470774167743656777740077776067407465677677777777777757717777737476775716161243410303077777777577775210000011350001001001000000101000100000100002100171525675070074340670005004076700706570757777767770077744746466567777677777777777777777773776777610000000137775350317777773777737750701000101021001000100000000000010100010010300067777761650604065047604760746404776406705656776770077764750474747677777777777777777773733747777773011735777777777777777757777777777767412041001001000001000001000000010001000577744140000607406706767676776777776477756767777447700774076646764777567777777777777737373737764677747753527777776777777777776365735353513010300120301010000000000000000001000107000210006147767674646040404040066667767677775476777046644644044456776767777777777733737373776777776774244777377717712777165357577534242040010010010000010001000000100010000100300050000146664000000101030734352101100065677767077770047604774377676777767777777777373737333756477657075377100770770177776525271673001012101210301001030000000100100000001000005000060046160004000125343510110101000000000007740000047744733737377757677777777777373737377737656757777777373101676770777717775671773001010300000021021010000000000000100000000100077400000414021414000000000000000000000000000300000777777773737377677677777777777373737333735677677777377710177777717774705271767340300000010101000100000100000100100000001014005660000000737560600000000000000000000000000004730777773733373737777747677777777737337353761666777777737737017771677077353777574735310012101000000010010100000100000000010004300065400000000400141254140404000000000000000000037737776773777373733777677777777777677646746565756747777773773017017710765654352735770017010303031010010000000100001001010030704000660000000000000040000000000000000000000000007777514673373373737777777476777777777474644764666776777777772711031076117307374357477373010341050043030012100100010100100012500000047000000000046742000000000000000000000000077776677777377377373733737767777777777767645676507574777657610057121101731611574777637735105270125213010050210100001070210301650000000640000000006776406776464000040641434177777767667614737337337373777777767677777776564767474664667477761775271112116101002331211101052721016120140161034106010173075617770000570047400047400446000000467770504777767173573756767776767737737773737377776777777777776564746765477576777176700774656474731010011000001250165214716170121012011070777173777400063770040000760467600000000740760600777067777777676767676767337333373737377747677777777776767747424676747677157701677677676131331213131301371317310312161525053073077777777700047577700000006006760000640400006474046740777777777676767676737737777373777777767777777777674746767467477777743670175305325352527135335353170143414371617130131211777177777777001737770006760476677047064466400047640077747777777767676767673773373333737373776746777777765467674704747674765375610731773573752534737417017035303130101010030001427777777737770047777770047460704644064400004640067004767077777777767676767673377377773737777776777777777766565665670767767775077007563153347370731013213617034343434307031417121177773777777740257737700027447000064000000000640064006760777777776767767767773373333373737777476777777777746765674464747767763477027172753717175777757757357171717171717433616163777777735737400737773400460660046000000000004000600676747777777776766766767377377777373737777747677777776756567467746765777117100537153353773777777777777777777777777737757737573777773773772047777350000474044600440000000000040047774007777700667677677633333333333737777766767777777777667476564657476760600007353375373177777777777777777777777777777737777377733753777740007177770000664024640640000000000004646700477777007767667666777777777773737777777777777776777446467565676777535373525317137177177777777777777777777777777777775377773753771737700076737350000000474664665646644400400464000077700067677677773333333333373737776676777777777767777766767765677771713175217037173777777777777777777777777775375377173753777377773700057777004007477667764766767667467600000004770000767667666677777777777337777775677777771777772604000404067761171613131535353717777777777777777777737753777777777753773717735374700000500670446677777776777776777776561004661000006767767777333131101100777777666567777567704040505140777716536353147173135371777777777777777777577577777777777777777353753777371700000001776040404040404606076767776170000470000071101100100000000000110157177776777776470124100002530004777111301313017535371777777777771771737377773777377753773717353252165376164464265700400000000000004040040076774000440000777500750000000000000000017347766777746564100000000400300652513530753303170737777775777777777777737777777773777753757035353134317137313533000046440000004400000000053770000000000077343100000000000000000004135777775676176000700000004044213052153115353371357777377737737775777777573757777777353213503161617163521657257000006700060042400000005273710000000000007577000000000000000000531117777665447405244000000040031501313030721353537737775777577753737717737777777777777035343343131303103171317337130100000567000200000031756000000000000000077771012100101101131117133375466747465707047000071502161011531534353517753773737353777737777777777737537713503353170717173561343105307030525370047014161717433700000000000000000000101011770000006402737373767456467777777773065773510137343531317073737773775777773777577375735737577777343375377373673071316352731717173137000007737352713574000000000000000000000000464000000046733737373446647777777777740007373737110310343537171773565373537577177375737777777777773353737717175357727753717163737357770000071735371677700000000000000000000000000460004004676173737374745777777777777004631713112031213131317337177737777777377777777777777777777775377737777377371717353773571747737377617771677773570000000000000000000000000400400000000406337333464673777777777774007733373311001013135317177737775377377777777777777777777777737777573777377777736771773773716717535343373525773700000000000000000000000000000000000000037337374433373777777777700007740010313133173137337357753777777777777777777777777777777737737775375737373717367171653735727367374753737174000000000000000000004600000000000000000373733643773373777777777404073000000000012137331737377777777777777777777777777777777777577773737773757575735317273353531757535737377576300000000000000000000424400000004000040007373375733337333377777770000700000000000000000070477777777777777777777777777777777777737773757753757373737777775357273673373773535737357000000000000000000004406000000000404004037337333773737737377777700400000000000004006404043777777773757777777777777777777777777773773737773777777717371737357171752573473721777340000000000000000000006446400000000004004337337333373337337337777100004705340100016503777747717717757777777777777777777777777773757757773577173577775777577377773777373757777177700000000000660000640047674000000004000003737337373377337373737774040077760004000000044004737777777777777777777777777777777777773773773577377777377377377377537177535757373537710000000000004040004640604600000000000400073733737337333737373777700000047477420000000000435777777777777777777777777777777777777757777777777777777777777777777777737737377577777000000000004600000460064600000004000000000373373337337373737373777600000000000550043617777777777777777777777777777777777777777773777777773777777777777777777777777777777737737777000000000000000000000406400000004040000003373373737337373737373770040000000002777357777777777777777777777777777777777777775777777777773777573717775777777577377777777777777757340400000000000000040004064000000000000000073373373337333373737377750000000000057777777777777777777777777777777177775737577737777777735777773777773773775377377735735735375737737000000000000000044600406060000000000000046337337337373777373733777007460000000377777777777777777777777777777777737737777377777377777737371775353753753777777777777777777737717750000000000000000000000444404400400000000063733737337333337373377774067400000000777777777777777777777777375773777757777177177377735777777777377777777777777777777777777777777777704000000000000000000006000666066000000004433733337337377333377777700676004004407777777777777777777777777777757357375377777775777737777777777777777777777777777777777777777777772010000000000000000000040004404440000000000373737337337337377777777704600674660077777777777777777777777777737777777777773773773777777777777777377377777737777753777777777777777750040000000000000000000000460460000000000463733733733733737777777770047464067000777777777777777777777777777777777777777777777777777771737177777757377377753777777777737757773737000000000000000000000644640000460000000000073373733733733777777773750660760400017777777777777777777777777777777777777777777777777777777777373773777357173775377735737777377757777240000000000000000000606400000000000000000373373773733777777777737604746400406057777777777777777777777777777777777777777775775771733735377757177175737753737537777757777777777750100000000000000000046540000000000000000007337333333777777777771771066067674767677777777777777777777777777777777377777777377737777775737573737736373717375773777373737377777371200400000000000000000046000000000000000000073737373777777777777737700656476464617777777777777777777777777775757777777575757735773735371737357737575357635733577377577777773777775000040000000000000440646000040000000000000733733377777777777777137106606476400077777777777777775777757357777777757577377375777775737777577735737377371735773757073737175777777370000000000000000046764656546400000000000007733737777537777777777774474407467005077777777777775777757377735737717737377777737777371773737373773577535373437073737757577737353777700500000000000004676474266640000000000000047333777074747777777777776567642766027777757537775777371735777777577777777577777775377777777577577777737777577737757757373737777775777000000400000000067407604040000000000000000077777103716173777777737676665646470577757377775777375777777177377777777777357357777773737777777371735737773735753737377777773577377370004000000000000666424604040000000000000000777777007677477777777767676767474003577777777773777777777777777773773573777377773777777577773777777777771775773777757353753577357777770010000000000040406404000244000000000000000777370141477567777777762476767660067777777773777777737773777753777777777777777777777777773777777777375367377375357367767767737673477140240000000000000446400004660000040000000007737520077772757777770040047667767177777757777777777777577737777757777717753717717777777757753535357777775775777777535753735757177357005004000000000000000040400476440464000000007773401616575777777006440004764256777377375775375735737777777737737737773777777777773777777777777771771777777777777773775777377577773000000040000000000400000000000067400000000077771425777367777700400060006765377777377777377737777777735735777777777777777777777757777777777777777777777777777777777777377377353770070040000000000000400000404000040000000000077770525765777777004004040440065773775717377777777377777777777777777777777777777777777777777777777777773737371775377773775657527777500004000000000000000000442424400064000000000777724077576777700400600007000373757373775775375375737777777777777777777777777777777777777737777377373577575777777573575373733771737300700004000000000000004646440000672440000000777507567657775000444040644047777377777773777777777757777777777777777777777777777777757377771777375773737373737373773377753575377577400004000000000000000000400000040440640000004777407757777700404246044604375777757737777777777777777777773777777777777777777777777377775773575737175717175717571757253372734372773007000040000000000000000000004600464000000007772525677777004704064240124373777377577777777777777773773777777573577777777777757377737373777373777737367363727373735356171737177175000400000400000000000000004600000400000000047710477777700676006564640577777777777777777777737773777777577177777777777777777377735775775377757173717535357174352537737373717717730070040000000000000000000040046000000000000077777711357047600446500072777777777737777777377777777573573777777777777777777777737777377377177377757773777377737777343574356773737710060040400400000000000000000400000000000000771571715356770446002470757775773777777377757735735773777777777777777777777777735777377777777777777737573577177535357773777371747527710160000000040000000000000006000000000000007771353777767600056440042735373775377375773777777777777777777777777777777777777777777777777777757377773777377737777735777537577373717700104004000000000000000000440000000000000077171357777674006064214357577775737757777777777777777777777777777777777777777777377777777777777777777777777777777737777373777737577777300424000400000000000000000000000000000000777174777756765404051425373735737777777777777777777777777777777777777777777777777777777777777377777577777777777777777375777737777353777100100400040400000000000000000000000000007717137577764767404061777777777777737737777777777777777377777777737537777777777777777577777777773773777737775377177577737353753737770737100400400000000000000000000000000000000077717177777467760030065377577777777777777777777777377777777777777777777777777777777373735371777775777177753777777737717757775375753573536100050040404040000000000000000000000000771717177720767000043737737737737757737773773777777777777777777777777777777777777577777777777737773777777777777777777773773737737377357753000004200000004040000000000000000000047773537777504004104375777573757777371777777777773777777777777777777777777777777373777777777777777777777777777777777777777757777777377373777200504040404000000400000000000000000077153577770000016075375373777737177777717717777777777777777777777777777777777777777777777777777777777777777777777777777777375373577177573535300100040104004000040400040040004000177353577770070007277377777537777753757777777777777777777777777777777777777777777777777777777757777777773777577777775377537727576377717252734120050040400404040000040000000400007735353777005006535357777737771773777377777777777777777777777777777777777777777777775737777377777717377777777773777777777753753735752771775173500007000040000004004000400400000477717177775004353777737377773777777777777777777777777777777777777777777777777777773737757377173717777773577737777773777773773777773771773136343700000561040405004000400400040400775317777700367771737577537757777777777777777777777777377777777777777777777777775757717777777777737177577377777775777773777353717773771776535353716000047000404004000500050010001735717777761717777573777777777777777777777777777757375777777777777777777777773737737773753777177577737777537537737777757777777771757372537737271717100005252004004040604004040077531717777177777777777777737777777775777777777777777777777777777777777777777757717753757775377737737773777777777777777777177173777737753770775363774320000416524100000400400004773717777777777737777777777777777377377777777777777777777777777777777777777777737773777773777777777577757377377777777377377777753737753771775375757377577600000106141410143405007757537777777777777377737777773777777777777777777777777777777777777777777777777753777737777777777777737777777777777777777777377777573777777377373775373735373000000000400010000077377717777737777757757571777777777777777777777777777777777777777777777777737773777777777777777777777777777777777777777777777777777777737775777777377775777777777161612161637777777101777777771771773777777777777777777777777777777777777777777177577377577757777777777777777777777777777777777737777777777777737737775773737717717771737737537777777777777777775717177777771777777777377773777777777777777777777777777777777777777777777777777777777777777777377377777377777777777377577177537777777373757737737735377735737737377737775773777377717177777777737777777777777777777377777777777777777777777777777777777777777777777357537537777577773775753573577577537377737753757357757357571753777171735735775357537737571777771717577777777777375777375735377377775377777777777777777777777777777777777777777777737777771773753757377377777737777777777773777377737737737377375377777737573537737753773777777777177777777775775737757737777777757377777777777777777777777777777777777777777357777777777777777777777777777777773777777777777777777777777777777777537717773777777777777577777717711737777173737377777377777777177377777777777777777777777777777777777777777777737377777777777777777777777773777777777737775777777777757777775373737777773777377377537737777777710101417777757757377777771735377777777777777777777777777777777777777777777777777777777377777777377377777777777775775775775737777717717371735377575735373757175365737777773737777777773617377373775737773777777777777777777777777777777777777777777777777777777377757177573737777577773575373573737737777773773737777777777777737373777175337637173573537777577717777753775777775377777777777777777777777777777777777777777777777777777777777777773737773777573573753777737777777777773773777577577737353717353577175217437753577377377771737373773777375377375377777777777777777777777777777777777777777777777777777777777777757153471773737373773771737771737377777777777773777737577777777777377737733717373717177737777777577777375377777777777777777777777777777777777777777777777777777777777777777777773737773771757577573577377717777575717377777777777377773717353717357175717577717753777175773773537777777777777777777777777777777777777777777777777777777777777777777777777777777753473535377373717353717171735373737777777777777777737777777777777737737737353735371737737777377777777777777777777777777777777777777777777777777777777777777777777777777777777777773777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777773535000000000000000000000105000000000000C7AD05FE)
INSERT "Categories"("CategoryID","CategoryName","Description","Picture") VALUES(2,'Condiments','Sweet and savory sauces, relishes, spreads, and seasonings',0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF00000000000000777777777737125353313731773543110105302502105313321714317343717135371373147317317171717121135301610131217777777770146765074747776567616774776565774040371737031611737710110100007777777777717435357353531713343030301103112161705353317353343717135371370317717737371734125031131352171777777714066544724767776774747657700577764774340735757100371507530210777777777777777731737317353731704311151303112110431731305317314171731717171354731713535373107131703011317177777770664576076567476404776147676777674174074740573312411002173611137777777777777353167171735337173531163125351615307173171737171707373173733537023177373737351611010113521737777775245006047474747407777777767657775747477416560075141200115351103077777777777777377143161735717353463107113131303343353171317373107177317173171477135353717370737312503173577777344760547061604760777777777777764677776007470774033001010035212100777777777777777173563535335371731053130707071351165343171701773417357717177130177173717717134101713353173777747640076047447000777777777777777775667570467760774040301010101053107777777777777773712531335337171735301531313134334135353361371350735331737137707137353731737433731717377777776040000407647604777777777777777777460547743565054776011001031213010077777777777777353561737534717337161352171712717103737335137137061373573171711073531737171710351171735373777704740460464746777777777777777777777040667746776007751300530101301300777777777777777373071713713717135241311030711317605117533517171075353357373734173173537373735373773777777770460464740406757777777777777777771777640577740457777000131035310701007777173777777775353431613717357131630731713735311637317173737171235353353535725377777777777777777773737777567404706425046777777777777777757777775246577777767711350131030311300177777357777777737350771731171337510531071351613735534317131717305737357377373077777777777777777777777777776540060405646777777777777374777377777774767777747771076035031110121000173735777777773535307131717373513243357317073171163353712571735073171733535735777777777777777777777777777704600564064077577777777777737777777777424577756771147741121161037100017357733577777773731603521725153251071335213317077071335373371732177373573737777777777777777737737777777776460464604046473777777777777777777737777567776657167647421121121103001035775737377777571711613531337353371435135351713131471731171735716171773753777777777737777777773777777777774740405674747777777777777777777377737176567757370470067070121121100010733531717577777371734173535353353107127713631735370371737173537107377373777777777773777377377171377777777444006640464677777777777777777777777777756777774747047741137112116100305737161373777737173107313531735352471713171173537017173717353731637535777777777777777737737737337177777770760650406047777777777777777077777373437777770567674776012101611210010131717135357777713253425343525353131031717373537171617171371717750537737777777777773737737733713537777777744404656440467777777777777777777377771577774764044774470717131071301210161335253077777757131035313137377534721717173537371637171733737343537777777777777777737737753713137377777764604646560457777777777777773777373001777574777764477611301121010001017135131314377773131716317353135313001717353353717165317371713573173777777777777777737573533373353717777777465404006400767777777777777377735000137776067664707640341216131300300035253521707577135271653531161773716173371375335373531717173757316773777777777777773773737377171313773777770460000440066757777777777777773700010577756764100674031311310100010103131313521073777731131052773171371310715377135737171773353353337717777777777777777773773737333131353353777776764007640456006777777777737371000013576644566565671341210131300010103521703170073735371730311173171371352735377335373725357353757177177777777777777777773737377173317173773777344564046466404444056477777537301000373405606746764011331352171001201013523152107177735303504373171357017005335217135307107317371337377777777777777777773377373137317133353353777706400004400676000640677471001000171464767444564031301052117100301001703117211617173531713035316127331710737171717731734071737171777737777777777777777777737377735333531737777717746654047046440044700465700016113000564440676653130171311303001010303152311340217173613530435313513531210717313613535312131713771777577777777777777777373735333337113713131377777344660240404740064000007003012446064000065641301430121217100303010117214341305030713521770035312153431340315251703537140713531737773573777777777777737373737171337311317171771777714540440064600464074764547407644764474661061711131171213001100121311331330433171353713107121713013170071631331353113013073173537752777777777777777773737337373131371731317707377776646600000000400464006460040000476461100121212163011710430103104341170510350307131714035353017317034353153417125240735317537717377373777777777737173537713137113133135371377737771404047400000000440040000046564612110016111211111303013012110331333130343135134352334031251210717107353213717131300131733737777577777777777777737173713737133713717131774353737777776646444600006000046442564670513430031611030301700012112131170552530043032531351307171335313137007153513035211071631535737716173777777777777737373733733531313133713707375737737757474604640746406546442411030301104111210110303104012112533130313134315113171371407135031707110712313253121520031173733537777777777777777737737373717373313533531177165373577777737777574746445652413513125110130012121121210110013152113152531725005303616343160335303521310243535161134112143537371777777173777777777777731737737313171731353137350737173717352573717737353737171343070110212100210130101013020210311612313171134121711311353134135311353531061303116113010013535373537370777777777777773777371737373331371335117340537153717352573737517340707317351130211011201712103103011001312531711725371124301253717135035215271212170171703130313030703535373777757377777777777773735733717171311371333173163537353707142570532717161352513307111211211401113502101211041713030371135363105331301212530431731135353107031100110411000713737177377377777777777773773733771733317131335353170143417217317073173535317071353250303071021120120301311303124330171711371133150435053537171703713107031316053160317031301071371717717734777777777777777377377337371331351733137124331335351700717053530700714351131501103112107111131030105001153012125363757312131303113121051707131716110210110101100300317137373737713777777777777777777777777377373331537174101170535321705713725353507331216121312110710003070125103130061213110133151317052521716161370213134310313514310303121310140307171717735653777777777777777777775341307071331313130060130305313003411310303014105310101012101214311130121103130131412130757377735213171213135105350311251212021030110101030035317337735731777777777777777777757171310101373535317100112535321610613161035110031310130103010131003030013112105007031301011317731730717031711612012135035335310503110212130104713535713737167377777777777777777737310010135153313530003011010511001212117121243001030012101103010051013100301130011030130077737771750731731631350717133031035302110211010121303533733753773177777777777777777777510100000017335331711043030312121041153010101001121031010102103010303100311012100121010010731737773731731711531300316153171307116111035031101433537533771774377777777777777753012110111000015617137200103110311121203103031210021110010030101010000103110121013000130131017771777771471352373053525313317037130612102103121312573713753777377773777777777735035355371731510001717701100314311430100101311011021102031211011010130010100312112100030012003037777737377335375317330131351631713150110311301535017353777377377177777777777773513513130111053351101771130070131303131053170161307050311101030102121000121211010010101013101101777777777716537131731570716331531352352311210713013343773777375377577777777777713171310135371315373103520010113161311032072113131110311212121012110110031101121213030003100100307737777773717137171731310315331707353014301311253353573573717377737377377777773177125353131735335357103131202521135271510113412163105211111113110121210003100111011100101301010177777377775637717331737071735213317317431734121314317373777777777757777777777317313113107173777531737150101013173031133043713353110631777377777373111001310312121030012121000210777777773733171316171611073135351731703101013171733525777777652104277777377731713535341717353537357571310100010351353250310351317377577525010505357730301031010112100210100101037377777777757335735331734353717371371707131343121753177050001040014077777737713713011331357777775337175000100010370351314771377775713400100000000000417531013130313051130100010077777777777345331735353125353310375313430521353531377770000400140014057777777351717351071353771775357331001111111353353211377777434001000000000000000003531051014110030100100210777777737735335731735217103341737137353413110313535377104700106756207747773537371710325175375777317735110110001107317351677771611013400100000000000000000703121313003012100010017777777777773433173131710735333113710305303431073737770777406456065570014777753103535113137773711771101110010100171771737777171607000010001000000000000000130110300611101010011077737777773717717353731730537516371737125313173171777575646747676566756704773757110717757777773773130000111001110771377777516101105010000000000000000000000532131101721000012000777777773777717317353431343133317171717035307173773777775747400456556756701773737711010343571513571110010010001001777777777357343034341010000050000000000000150121001121100010107777777777771635371353735343535353371335431713535377777770006047606677674073777777771711113173753000001000010100177777777535305141000000401070000000000000000313500310100100010077777777777373537037331530173537317137523173773737777777747650460447465677777777777777777777777300001100000010110777777573530530374175353107057310000000000001710071030010101010777777777377753713713573716137131733533507171353777777777774640540761465477777777777777777777575000000000000000007777777753577575031035257053007700000000000003100121121000300007777375777737343711713131716137171753533437173773777777576700766704465625777777777777777777777737000000000000000077777777773537077577561763571001000000000000053010121001000110077777737777773531733536173253717373373711717353777777777755046564476767477777777777777777777777111300000110101000777777753577753712707100142070070000000010010300713110100010000375771777373534371353317315171731717171707353777377777774766474677644747777757777777777777777717370100013000000007777777777777350574100005251007100000000000000611210030001000017737371777773716135271711732533537373737307377177777777777752424464765677777777777777777777777777141010011100000077777777777770712170710301701617000000000130010531031010101001071771735717777136131173731716173531717135353737377777777747654476744644777777777777777777777777713001011010100100777777777777570570110414161600071000000004170003071011000100000371737137773733417373171371217137373737737771777777777777777467444604677777777777777777777777771700000001010010017777777577757353052431201001015340000000012100171121200100101011735717773375353735317137131613717171731717377377777777777600742076565677777777777777777777777737100010110100000077777777777305705251525034000702100000000005037103101100010000037133710775737352135237317350713737371773777377777777777765046546046467777777675777777777777773710113110110110001777777777775730701006125010100050000000010030013103000010001010717717373737735357135117717334353537373773577377777777777567746644650477577775777777777777777750131100000100100077777777771775711753010530400001010000000010010703113100010000003710735357353737037333713317137373757377173737377777773776564745204646757774777777777777777773313010010101110007777777777577771650341252051012104200000000007001352100101000101017373171737373531617171371713435317337537357777777377377756470064404657777777776567777777777751111101000110011377777777777577161035214105200040101000000000101031013010001010000735377335773773535373173173353737737737737373737377375377777447476704677777775777777777777771371301001001011017777777777537577134104034001001000000000000000700033101000100001003171357331771737160152173171351733717373717177775371737776767460446044777777467774777777777771311111001101017777777777777577756134311012161401000100000000010101012121010000000077337335737377373137335353737363573735373737735337173177756104700046567777777757477777777777117131000100113777777777777776717351410401450101000000000000000016017110100010000010357371773177735371613533371353537373737717353173713717775654065400004677777774707757777777735311010112113777777777777777535757161252161210000010001000000010010310210001001010007335377377353773530713535337337173537373735377311713737765670000004004777765656577777777777531311010111777777777777777777536352141010014340100000000000000010000311010100000001071775335377373737170733735717537373717373735317373717775725650000474046777577777677777777773711311313777777777777777777777575757161050000100000000000000000001001210000100000000377335737737777737313571733733717373735353737731353733770567000007400077777677777577777777735311177777777777777777777777573537010116310100000000000000000000000131010010000010105335173353777371353053331353171735373737373713177737777770016140740004777757777747777777777531377777777777777777777777757347753777717400000000000000000000000010103001000001000035736317357357377317271737373735337171737353777333737377716140141003473777776757465777777773537777777777777777777777777775771757761601000000000000000000000000003100000001001010173317717377377373711373535353734737371717371377777777777502112007047377777756777777777777777777777777777777777777777777771777771501000100000000000000000000000003103010001021016317431635377377173727173373371313531373737377737737777733714005001737377777777777777777777777777777777777777777777777775777776142140100000000000000000000000000110001000101012017713173537377737353117317137137343777373737737373773737373737137773777777777777777777777777777777777777777777777777777777775011210010000000000000000000000000001200100010301211431617353717737353353613733537335373337777733737373373737373737737373777777474240567777777777777737173302137777777777777753435341410001010000000000000000000000010010003010101003173617313737573753353435373135337773333777733737373373373373733737773777756101000507777777777777776140500001377777777777753525210250000000000000000000000000000210010010210303117351314771737373371321733173737733337377333373333373373373733773773777714000404070747777777777400000000000400257777777757170714141001000000000000000000000000001003001011010100617335733135377717137152357333773337333333373337373737377373777377377777435777707477175777777700000000000000005377577777716171430300100100000000000000000000000000010021201210311314121353737173737313253333733337333373373337333373377337373337737777710777775077574707777700000000000000011007377757753717071050140000000000000000000000000000001000101310310035737171253537177317353057733737333333333333337373373337373777737777777775475725777770477770000000000000000003005777677757717070102101000000000000000000000000000121010100310311121312135353343737733337373373333373333333737333337373737373373777777777773470052574177777700000000000000000010077575777771751016010000100000000000000000000000000100030310130307171353433035353773731717373333333337337333333373733373737377777777777777747125352757657770000000000000000001250577777753571252501410100000000000000000000000000110001011013010112130313117312777733323323332337333333333737373333737373737737777777777777140016050257407700050000000000000041003777777777357103000000000000000000000000000000002030003071301213353413437017717737373333333333333333333333333373733737373737737777777777777375017257400747100000000000000001000075777577575307505101010000000000000000000000000010101211035351010313703113733337337333333323333333733733733373333373737373737777777777777777477405670067777000000000000000000007743477777737530302500000100000000000000000000000130300313121213013431353673377373323333333333323333333333373333737373737377777777777777776747640424000474775200000000000000007575707705753553141410010100000000000010000000000013011035217131301703137331373333233333323333333333333333373373733737373737737777777777777756777004774770576705700000000000002177677057777777347130012000000000000003500000000000013125035217050131353137337333313333323333233333332337333333333733737373737737777777777464644640004047406700677505000107161756505777000575357316153050101000000000017100000000000707125131213130137333273313332333233333333332333733333373737373733733737737777777777656740000074067640000575767700416500416777777775777777717535214010000001000005370000000000424133530351302130137333323233333333333333333333233333333333333333773377373737777777757474000004656504704756524057470770071257777777777777571771341431001010000010117430000000007406753071034111013273331333323332333333233233333333733733733737373377337377777777774246740047000064704706760077077574774774577777777777777775347131020500010000035210100000000675740243103130303033323233331333333333233333333333333333333733337373337373737377776564404004064000474404004104747724740776776777777777777774735317435102100010015035700000000004642440043101010101331333323333323333233333333233332333333733373733373737373777777706400000670400000000070470477777577074757757777777777775675775701520510521001431500010000000700040056103121312103233333332333333213333323333323333333733337333737373737373777744470000004041640560046747477757556777417677707777777776567467171353413001006143043401000000074000004640210101001033323033333231333333233333333333333733373737373737337373773774676740460000640646406756777477776775774675447407776774052467747257253143525012107100000000000464270047040121303121333333323333323333333333332333333333373333333333337337373377640444004000004004000046777770707756767775677777657574256477567057357057177171410507110100000000054640676740101001003033333132333332332333033333323337333337373737373737373777774040000600004640000470047677434475034774434774750676705657740400645717377753430001214730000000000600004404042101301333323233333333333333333312333333333733733333733373373737376420000004006040420006406767767477042457707407047765774067764740064163717575251010000573500014425604450000046500210130333131323313233333333333333333373333733373733737337373777745400044004040000405447747747577774050604077447747465765044747604776445777775200010101350102467406470640000046041030113233733312333323323323323333233337333373333733737373373774664400000004000000460467767676776770675424770747725046565677654004476064065351777777777770005470474004000600470001012031323333333333333333333333333333333737337373373337377777000400000000000040000006767477676777765702576004765406770464004604700440000577777777777777750076000000000007407646001211733330332332313333333333323333333733333733377373737373744040000000000040647400477676765657656564047645076567656440756425674004704047777777777777777710400007647600540044650030123333333331333233233231233333337333373733737333373737777000040000000000040004000445740400676472470041674004740400042447560470424747677777777777777777760004047044064600000640171130337303233333333333333333333333733333733737373737737765400400000000400046004600064000400400540470047040076000470047646404004740004377777777777777777040077047707400740000740121333331373323333333333333233333333373733373337373733777046400040000000640040074006004367400407601647400764045607404650470576474040654777777777777777770404400746440044674046002117303137133133233231233233337373337333337337737373777704640000040004040000004400440674400046764064740040410065247000006746645647704427777777777777777700600047004704670400674013031377032323333333333333333233337333373733733373773737400000000000004040074567202400460000007400564706776656065646406004007247044046577777777777777777040460057706000400005674001137117313330333333333333333333333373333733737373377740400004400004000004464044047004747440046564006004454045640474654004744064760006777777777777777777400400674147700707604060307032313733333233233213233333373373337373373737377737740004000040000040400070004406640460707656475004006020064047441600474007476500077777777777777777740000000047464064074004400117313073333333333333333333373333337333337333737373770600460004604000007006464640045061046404650640560056440540064674070465647400406477777777777777774000420000760000434007060003313753533723331333333333323333337337373737373737777704700040640004000044050065000460460074004604006544640046700470640470744006647040047777777777777000400404007704000467444044013073312713330323323323323333373333333333337373737377466400404400654060006460460447474050060000460046064740004474400564464024045240640004777777656744000640074047777047446056700053531713733333333333333333333337373737373733737377774400000000047676404746540000746447465440047406704504004467404046746540470564004740046567765656424064040060777744040610674003312731353333333333333333333333333333333333737377777400004440000464640004044604464647676766746560404046000476776767677776004646400404656676646464644400400640404777600004400460011713000000000000000000000105000000000000E0AD05FE)
INSERT "Categories"("CategoryID","CategoryName","Description","Picture") VALUES(3,'Confections','Desserts, candies, and sweet breads',0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF00000000000000113330735737777704000000000000006060000252000014131315311716037070021240161075371617637506357172512171357170173537160000025214002070000012436167777777173333737171773737377700001111131330131357737700000000000010000050040006331131313310705073430040000003070761617433514356537571773171771716167170604076776775677064253437177777737357531737373753537337113313111111113131235777000043712006767773677777711131531311777377077043125361707171177773563737373563777177371374735716771707717735637700016777476777737531333733537371373717531111313130131316131112163035371350007753477177311137133171331777777770734772516177777717777352575777357377717537533173777160277767777777043635673717737533337171353735737353773713111271131130317013111111131131670073677776771733113113135137777777771470777616777777777175377375377357177773573757073577775677777677770365635777677533753537337371737353377377313111123130131313103131313131711770477670777353533133531331177777777763777177717777777777735357377757777737777353353553737737777777777761771637535733533333135317373753371317371271131111313521313310112131171337003717377771313117113171131777777777177716777777777777777777735353773777777777775773365777777777777767160677747673173717117337335373777177775311123103121113130371131317113313143047765767171715331313133137777777777677777734377777777777437577777357777777777737357530735777777777776071777737317371733733531737177313733737131113313113303511130153311311317343077777773131331171353153137777777735377777777777777777777537737177777777777777777737777767777777777717061617717331337313173371737737373573773103111313103132130133071311311313000617277173171731331313111137777777777757175377777777777736527577173757775777775257537171777735361777253525616717373535333171371737717173753713313121011313113113153131131371310000604167113131171131713131177777775353737736535777173773753752767757377737737777736757777177777776165206353735331317337133335373753737373773111311131311301312130331303113131701070127013353133131713113113171773737773571753773527657765274371717737737777773773753637177777707177716535273533173731713717133717377317177373121131111121130313131031313313531600076507711317153131313113117777777717163763777767753717373136161634777577177757757777567075717776353613437473353131737313313353373731373735311131103111131111301731115313313131120012507317133317131713113137773577737753753435373777675756537535736173777737773773577377736777777677617437173337331737313353353753771335337131111110131303121731073131071313134107612771313535313531311313573757373535375377777567743527253473434357677537577375777735717771717171771707167317131733537317311331373337137131103331313113111113113312133131313503071650131313131531311313173757377757777737437773717377775367343717773537777375773737777777777777777167736535333373173731313133537311313313311111121353011303310335313111331312161677373135373133131135311777377777373717537717777777777725357343634777777777773757757777777777777777716573733171317171733313713317331331313331331130313311113311133173311531371753777717131171117173131311777777777757737717777777777777776347757737777777777777377377377777777777777773777173133333373531313313313331331311121773313311031341373053105313171773777771313537133713131311137777777777377777777777777777775357777775777777777777777777777777777777777777777773313713535373313313131331110103131137701710113113131317331333131337777177731731311311317171131177777777777777773717777777777377737373737777737777775777777777777777777777357777131331313331373131313113111010111773371600771213011305313171143171137777777131713131731313171131777777777777777777777777773577737777774770737777173737375777777777777777777775737331313313137353113103113331111117701677000071513131331353133131331177737753131313531371313131117777777773777777777353535777377771773773775737177777775377777777777777777777377735313313131313373113110111131113171607777000072111111134337113131133771777735317113371310117113177777777777777775377777773777535377357177377777777537777735777377777777777777777133313333131313131101011131113111677077700000000003373131013353533713777373131313135135313631317777777777777371737573773777373737717337317737537373773777773777753777777777777737331311113133133313111131353353137777343400000000000113113111312111717357713171313133131717531177777777777375377773771771717171713707531753573735371777373777173777773777777777713173133313113013313131113377377177701353700000000003113713121313131317371371311317173171317131377777737357377735371771373737371771333533723171735373777577777777773777777777777733133113111113101313131757173173343410111313410000041371353135313537375335131731713117135377177777377757377577173773777773535333171713531117373537173537373777737171737777777777313313113131111111311173337357131353131301111343035363131317133113317137133313113313313531631177377753777773313717353121013131717171312113331313312113777753737777777573777777771331333111000101111130311771733110111111110311317525753173113153035337713535317317315313171533157773773735375353717353113313131331310110110131311313101313773573737773771773777771133131311111131331131371373713131313013111311313737371173713131317137713131315317313531373513353577757771337317313133313121111313110110131111111111313033173753773777773577377733133133331331331331011171717311111111303111131353537737113312171313713713135333713713171173711313737331371731313313111111113030101210111110010101011111110313371353737753077777313113131333133131131313373775313011031113013131317777713371713131131311353733171371313107171131131135777137113111101011011011111311113100011110101000010111121131377777377307377131311331013113133713131117131111313503113317035303177353131713171131731311171137131353131213171153131137313313010101001011010101110101111000111010101010101101111317377357757077111131101013313713331133110171031131352115213131313131317131353031311353373371137171313131713133131131331310113111131130121111110313101211310011010101010101100011337177737737173131111101011173735333533331313501013111631131735353173533533313135313135317137313313171713111111111111101011010121012111110101011011131101011001101103710112110101117373773777653113101103137173133533353133131313171313113073130331213353135353131303531733711535353131311313131313170101101111113111101010101101101010311010110110351310153501011237175377771377111130111313313353335373311013113101213713103131131317335131352133533171711733313313131311111111211331130110101010110110101000101101101013030010131031131313531011137337135370527131111333331353335333171313177307335112153171725353711131713313513530337331717317171131313113311017521012110101110010101001101000101111211111101013170170103031210135337377737147131331311133317335373731113111711533113313331131310317131311713313171537171371713131311331311011313113111011101011110101100100110101011131301317010113131311111113331713317777323131131003131331333131337307131130310311213533173131131317173171253133353137131313131131110101353531010101110101101010100111010010101112101101313131310101010312111113351731777507111110313133133113373111711103131135371713413107112111313131311353571373537131311103101013531131211110101010110101010110001011010110111101310101130113111311113010311331733537707331111310113113313171131173171533131313133173133713121713535312133171173533531313111111031121111301011101101010101110111010011010131031310111110112101010121013110311331737737707713111113313013013131103113131013131313111353171353171353131113517137317173173773301013113130311111010101301030112110101011010110103101010101010111101211111312111031173131717127731303311210101313173171311131701616017337335331331313317130353373531733317717311113113011131030301010110131111011010111300101011311131110100110100101101010113101133317173777077775775311111130117113170706070700005200101731731535351731171353173171757733717310313011011011111311110111101031013110101300001011010121010110010110110101100101311111313353177577737737713131111371311777777777716705347253531731313313731135353171373317753311351011101011101010010110101311013101011011101011013131110100010100110101001110100230011311377137037777777777777377770707725777777610634305277353535353731737137137137177731310131331310111010111111310113111011101131011700101101010110110101001010010101000011031371011373131717777077737575775777777777773677761071777520735373713171773535353717313713131013011111011001010101101031101011010110101073113110111011010010100101010113010311301107333013313773770777747773773437577725777777777707767036571737753735371353137353731713731101311303013775311011101111101111011010111111710100010101101111010101001011011131121100331311011311171771777375777777537777776776776777707716537371713717135377377171713533111331113011111313377751001101011100101011010101013311111010101101010011001010101010121101100110101011033735377777777777577777777777777777777070773535373773737735317177373733113131101711300101101113733100101101110101001010111011010101010110101011001110311010111101100110012110103117377527777377777357776776777777777770525313371717353713171737335371713311133133110111110131310357710010101010101100110101701110101101001010101110001101010010100111011111010010335317777574777777775377771725707777772531715373737373717377535771737351311111011310100111010310313371011010100100110010103101010100100101010101011131111011010111211001011311111131237777375777757777777704725707436531713737177173753535377637371713331313111101111101301111131011133010101100100110110111010101101110101111101013013011011010011011111011101313011753777737777777771725073520717753431353537317351373777071757373311111111301110101110110310113101013110100110110011011031001010100110110301111301101101101011001010101101110101071371777777777771704720742577634367125313531717377575707737375311131313131101011101011011013010111010111011011011301101101101010010111011110310110110110110101131310100101011113117177717577753577073512753471777707531753773717737737735357777731113113133101010101011011011110011010101001010101110101100010101010101010110111010110011010101113130110101101013031777773437777770742616343061617707672717177777777777767377371713113111113110101101001011101111011010131011010101010101110110111010111010110101010111011011010111110103101101211771777777577777712755257777777770735357677777777777771735735737313111012111010101101111100110101001010111001011101101010010010101111010110110101010011011001031011010100112111177377777777777757616327777777777777567773577777777777777537773535313100111101101100110010111010111100111010111100110010110101010110101111011011103111101010371713101113111011107313537771717577775257507777777777737377777377777777777773777377331310113121130100110011010001010010110101011010111011010110010111010101013013121101610101217130110101010101103131717771777777171727777727777777777477777777777777777777771735375331010101121110110111010111010111010101010101010001010100101010011101101011011101311371311525110110101013101111310317775257377777507776577777777777777777777777777777777737737137131310171110010011011110101010001010101110101011301010110101011101101011011101131311111703130310110101010110101031753777775777777727353777777777773777777777777777777777353753713571013121011101101101010101001110110110001011110111010000101110110110101010313010112121353411011011011111211113153775375377535776574347777777777757777777777777777777773713331313353535131000110101313110101100010101011101100110101003110110110110110101111011352111531113701101101001011130113317775777777777353774377777777777737737377777777777777757717131777317331031110101101101110101111010111010101110113111577777370110110101100101013131613536111305301011101011010317017737777777774347034167361757772757777777777777777777737313133111371531113111101110110110101011310101011101010301077377377710110110101110113111531353113635130171010173101131713777577777777774373436756572773757737777777777777777773737131011311713101035010101011011013107101011101100101311117737775773130001011101013101213317134311113717217073110113131317777717777777034141617373777677737777777777777777777777777131310303103131131773730101011101313111010110110101010137737727170131101000101101311311037135031701315313152111013112757777775777773436216167567535777777777777777777777777717373531311153110110737777537131031311777713110110110111110737521717310101371310101110311017101131431315311713313011013113737777777777741615250716352773777777777777777777777777777313130107301031013513353173511111035331717017010101001011713537371011135377510101011101713110353171301301110111011101357775777777777216102527777777777777777777777777777777773735773513111111101101315335317301035130101311311110101117727773777710112112537371301010330110317131135311113071121013137775777777777775250753477777777777777777777777777777777775733133717730101121101031535121331134111301711212511121713513773531312113111305377771735110101213170101303011121171101013777735777777702527673477777777777777777377777777777777737717113317531121101311131121711521131215131251113031112513411777701111010311310135371121031117152131310111011103171331357735777777777753473743777773777737777777777777777777777371737353533101110101012107111031110111133111312111103013103121331310101011010533531121113101213111110110101101353131111377777773535777673757777777777777777777777777777777777777773131313305311011101311311213101211031251031011101351710101111010011011101311351317111301531113012111011010101311301257777775777773773747763477777777777777377777777777777777737777131315301011301311131211101311131111131011101370130351310101111071103110130310313161713121013110101011010131301111377777777577777757737573777737777777377777777777777777777177353101311313010110121051303101121012130111010777173111210731101011031101130111310113131211113101112101011031101121071777777777717577763572757777777737777777737777777777777777777777131317101111031111315310101111111011011377353117121177101100101170101111030131211111121301101011117017521113113137777777777777737577257277777777777777777777777777777777773773731121735310101013030130531130301211301777717171303110310110111131371100101111101113030110110301010731713112111735777777777777777572775357777377377777737377377777777777777737753531171717010111011110113130111311101137777131171110357713010101011130111101010111011110113011111310173717110131737777777777777777257276353777777737737777777777777777377377177373713537313510011010131010131010301101777371731121110373053510111010113121101110101010110111012101311173137313031777777777777757775355717777777377777777737777777777777777773777713137717131311011011003111011311110177735331071152117771313210101011010110101010101010310101011101437113717353137777777777777777276373777377377737377737777377777377777777735777313171312535301101101111301301101037771731153121211735311435112111301013131101101011111011131121313310301371311777777777777777775717777777777737777377777777777777737373737737777130317113031710110110101101100101771731521311111317731213112112101111101030110111010101010101105015315301377137777777777777777773777777777737737377377773777777777777777777337777531313111131312110010101101110117771731131303110173111010717117112101101111030103110111011101131211313171313777777777777777777777777777737773777377773777377373777373737371777773131350307105351011101101101010773121121010110017211011313130311251310101001111312113013101301011121371313777777777777777777777777777777777373735737777377777777377777777737777777112131113130107110110110101137112110111011013771101014352535211130713111131271011101110110121130113137357777777777737777777777777777773737771737737777717373777717373737717777773113573773531310351011011101713111011001101073570131313113131213113152121051111101111010111110135711153777777777777777737777777777777777737373437737737777777377637773737377777777313173573535310311211010173010111011100111773171035253143151707352111113121031101211130101735737373377777777773777777777777777777777737717353577777777735737737737377737177777311177777317353535311121110111010011001131077735303513101313131311113030101113103135121413131733757357777777777777737777777777777777773573737377777777777777777771737373773177777173733531735371307030111031001011101110503171521711213531703703130311111313105314103531316113715331737777777737777777777777777777777773772737370777777777717777733717377777177777311773771531735317110101101101010103013113773111211713121311110110121210101121131713535317313331737777737737777377777377377777777777770753573534357777377771717752737377777777777731531731735735317312101101101031111013410717031701107111303110111111311121125371773535371711777777777777735377773777777777777777777377373727373734377577777771737377777777777777773173531737173535351330100111103013101311211101130313030110110103010101113537137177377171377777773777377777777777777777777777777777707773534365737716375357163717377777777777777777313771737753535373513171010101110131071112113011101111011010111113103071717753717717335377777777777737373777777773777777777777773707167335327777714177371727377777777777777777777711335353737137153717177711110311011130113011303101011073711012103113131313353773771737777377777377777773777737777777777773777773737376335353517730115073537377777777777777777777731537353537537371737137370710131030130113101101101033717735317177571615353353573777173777737377737377777377777737777777777737773435317237277735341617317377777777777777777777777773535373537177171717537731313017113513050310110117575773535353713731331357373371317777777777777777737777777737777773777777777773363735353773777535371637777777777777777777777777713137717177713735373573534307121703035371031037773737173735373777171171331317527777773777773737737777777377777777777777377777777170736357353032525637377777777777777777777777777777513737737771773533573531717171753537173537537173537753577717137173131171637177737777373777777777773777777777777777377777377777372537236353533531377777777777777777777777777777737353537531771737537773571777731373537173537537153717373335377173537170675242477773777777377377377777777377377777777777377777773712717737252163777777777777777777777777777777777577737737773173513717353777371435753717173713173735375357533133317373001024107343777373777777777737773777777777377777377777777777371210101217377777777777777777777777777777777773677753537317131371735371777713773335373571717717171737733113100137100000100074347735777377377377773777777377777777777777773777777773737377777777777777777777777777777777777773471757373717707175371735373711757357537173737713737335353531216174213000000000160137737177377777377777777377777777377777777777777777777777737777777777777777777777777777777775773472777573717707025371735353733717337173537531717175737373171706353471000042107162473637376373777373737377773777777737777377777737773777777077777777777777777777777777777777737753577777777770735317171737371753735717353713773737333531370070714253600000010616150377177177377377777777737377377777773777737737777777777307777777777777777777777777777777777777767177777777775040603121317177377173311317777131311010343107347435341041061061777276536363717737173737371677377737777777777777777737773777017377777777777777377777777777777777777167777777777727371707576713177377311060131313371763434340347737767761207161007077573713173771776375675271735377777377777377377737773777707677737777777777777777777777777777777777177777777777525677020753673135311677166072147777140774340377677777741676167077773767776172723377373737377377777777737777777737573777370761737777777777777777777777777777777777777777777777777773577527777172531770167107757375676372537734777777777275347712777677777037017757137373735235237377537773777372777353537777173577737773777737777777777777777377377777777777777771776172577777777607077070777677777314775610477777777720536710657777777770503303323743707073773577733637777377773436777670007677377777777777777777777777777777177777777737777777774176142770776777307077070773776777430637270777777777512416370376775777727765301703353737371212537771703774371773535213170001077377737777777777777737777777777777777777577777777736012147777753574007052525777717763410505003437707176012140505717727035001000600343303030035353637163775377763477637767007000375273773773777377377777737377777777777777777777777610400030707276301000000072504761700020000077410776701600210063600534720000201006304343037020071707707127525353703170716100007737777777777777777777777777777777777777777777777101073001675250534060030104352430170507016125703676010000050002714177043401401400751437070500143163740707703727343767070700001437735373777777777777377377377171777777777777777777777777705207772521014060707617767070305204036571717771610012415636707371423000210727052572002007707307007707163701010070760002053677777737773737777777717777777077777777777777777777777775307077560210110717617167761615314172776707761670717271610707671507014252572572570500740700434300707161677677770107001671737373773777773773771677777717171771777777757775357777777525252105060601671616170105204216357071770101034725777777771060701610777777777252070307077700071616177777777770707707373777777777777777777373777777777777177777777777777070777777777770707171777777777777773573577777777777777773577777777777717770777777777775257770434000000000000000000000105000000000000E1AD05FE)
INSERT "Categories"("CategoryID","CategoryName","Description","Picture") VALUES(4,'Dairy Products','Cheeses',0x151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000424D98290000000000005600000028000000AC00000078000000010004000000000000000000880B0000880B00000800000008000000FFFFFF0000FFFF00FF00FF000000FF00FFFF000000FF0000FF00000000000000777777777777775773775737773773777777577777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777173434716174361735707353436571717377235700007777777737777737777737653777757377177737537537777777777777777777777777777777777777777777747657252103060206042434777777777777777777777777735777375374361705253432163617075727777777737777777737777777777777757775777773573777777777777777777777777777777777777777772524141210000040604004000000000004061677777777777777177763534736175370773527577757777737577777777773777773757717717717717373737771777777777777777777777777777777777777777777127052430200400604200000000000000000000000000077777777777771776773717237077052707271735735677377737357775773577737777777777777757753777777777777777777777777777777777777775251076502410040600600000000000000000000000000000000000007777777777171756757577307371717076734737177777777777773577777777377777777777777777777777777777777777777777777777777777777676107412042000000000004000000000000000000000000000000000077777777773773637075352525617357737576177357777357777737577777775371735737777777777777777777777777777777777777561600000016700604004004004000000000000000000000000000000000000000000777777777177777377677773765725772737777777777737777777357357377777777777777777777777777777777777777777776536177777777650060000000000000404000000000000000000000000000000000000000077777777757377671717075377777577573777377777777777777777777777777777777777777777777777777777777777777172577777777717777040040000200000202004004000000000000000000000000000000000000777777375775777777727171777373577777777777777777777777777777777777777777777777777777777777777777567537775767775600247142006040404040404000000000000000000000000000000000000000000077777777737370707567677774772777777777777777777777777777777777777777777777777777777777777757572536577727757700000164250400000000000000000000000000000000000000000000000000000000007777373775673773717353773577777777777777777777777777777777777777777777777777777777777756376357616767577777700000025020000000000000000000000000000000000000000000000000000000000007777777777174347777775352717777777777777777777777777777777777777777777777777777777777374357635737576167061652007560400000000000000000004020000000000000000000000000000000000000000777757377737716177767757777777777777777777777777777777777777777777777777777777777765374357434777077752161257003434246040000400400000000404004000400000000000000000000000000000000477377347563777071737377777777777777777777777777777777777777777777777777777777775161434243652527777756140007403400004204000000000000000000200200024040000000000000000000000000000377757737356177777756777777777777777777777777777777777777777777777777777777761636342707165256775777777777777000000000425200000040000000040040400402004000000000000000000000000000077373525617271617735377777777777777777777777777777777777777777777777777771775414340564167014707777777343576100000000004752440004000400000000000004204240000000000000000000000000077567773615777725777777777777777777777777777777777777777777777777777777770736340703167047025200777757202172507060000000652060004000400404004004000000040004000000000000000000000077352353634371737177777777777777777777777777777777777777777777777777777670504250746014304004043434275710050725100000000047004000000000000000000404000200000000000000000000000000077775743537477476777777777777777777777777777777777777777777777777777071072435274212420424200240041427060030052473400000000420000000000000000000000404040000400000000000000000000077172353653717353777777777777777777777777777777777777777777777777177477043425010410400004040043607404140061253043612000000040640000000000000000000000040400240400000000000000000176775253777777777777777777777777777777777777777777777777777777776537043471724202420424003043405607024240040243043416100000000060000000000000000000000000240000000000000000000000735077253434353577777777777777777777777777777777777777777777777773467743424014040040000604306521604000000000000100216034000000042500000000000000000000040004000000000000000000000527014343537072777777777777777777777777777777777777777777777770743535360500606034034070434702040000000040040042410501434020000000656504000004000000000004020400000000000000000003714363527707357777777777777777777777777777777777777777777777775347765160610014024072452400504042000400000000000200203030506000000000616160000000000000000400000000000000000000001634107107717777777777377737777777777777777777777777777777577767347724100424204070452521602002004000000000000040004000030314700000000042470040000000000000604000000000000000000061527077316703777777777777777777777777777777777777777777773752577716524612500563472524040040404000000000000000004000404004212520000000000047002400000000000421400004000000000000172016125613757777777777777777777777777777777777777777777765677741607521040256056152434306120102040000000000000000000000000040357340000000000650040000000000060000000000000000000705253573757277777777777777777777777777777777777777777775371777760524747025617256250004404464040000000000000000000000000000000000716707000000065242040000004074000040000000000000725363757257777777777777777777777777777777777777777777765671671702503244707657050656125212120350000000000000000000000000000000000001616520001060546006000002070400000000000000070707577277777777777777777777777777777777777777777777777371677564652645217771616070216525674774301000000000000000000000000000000000700712107700112034610000040470000000000000000170707257753777777777777777777777777777777777777777777776565352535214120747774343417470753537531000010000000000000000000000000000000070041650030677400046000253640000000000000007070737773777777777777777777777777777777777777777777777717374240607420547356534343743773676573000000000100000000000000000000000000000057252121013577777000040643740000000000000007071757777777777777777777777777777777777777777777777777656534343416520347736747343743571777741010000000001000000000000000000000000000217010000203177777742041677740000000000000725242737537777777777777777777777777777777777777777777753737470042430476770571734775376777177300000100000000000000000000000000000000034161001210102777777750000567704000000000003525375776777777777777777777777777777777777777777777777765743004341043177177365777167571677770000000010010000100100000000000000000000003002100010617777777600600000425600000000056102527377177777777777777777777777777777777777777777775363742524242147576525365777772773576710100100000001000000010000000000000000000000100210211037777777007000000000424000001200614357176177777777777777777777777777777777777777777775752542505252167537565372573577577357300000000000000000000000000000000000000000000010010201077777770077000000000000000025300020216177777777777777777777777777777777777777777777727772142525042536743534757777772777774100000001000001010000000100000000000000000000001210121777777700000000000700000000704034175777737777777777777777777777773777777777777777777577054252420356771776777273477777477710010010000000000001000000001000000000000000000000012107777777400000000000000000434303403434341577777777777777777777777777753777777777777777077025241504252563575257577775777177300000000000010000000010000000001000000000000000000001217777770000000000000000000000701612537363777777737773777777777777777777777777777777777167061626143473576377727573777777747100000010010000000000000000000000100000000000000000000357777770000000000000000000000761612535777777777777777777377777777777777777777777777776714161416007076175673572747377777730001000000000000100000000100001
Download .txt
gitextract_onih7gum/

├── .deployment
├── .genaiscript/
│   └── .gitattributes
├── .github/
│   └── workflows/
│       ├── backendapp.yml
│       ├── dockerapi.yml
│       ├── dockerapp.yml
│       └── pythonapi.yml
├── .vscode/
│   ├── chatpdf.code-workspace
│   ├── extensions.json
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── Configuration.md
├── Deployment/
│   ├── azuredeploy.json
│   ├── azuredeploy_1.json
│   ├── backendapp.yml
│   ├── northwind.sql
│   └── pythonapi.yml
├── Features.md
├── GettingStarted.md
├── LICENSE
├── LICENSE.md
├── LLMOps.md
├── README.md
├── READMEWORKSHOP.md
├── api/
│   └── Python/
│       ├── .dockerenv.example
│       ├── .dockerignore
│       ├── .dockerrun
│       ├── .funcignore
│       ├── ChatGpt/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── DocGenerator/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── Dockerfile
│       ├── IndexManagement/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── OpenChatGpt/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── QuestionAnswering/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── Utilities/
│       │   ├── __init__.py
│       │   ├── azureBlob.py
│       │   ├── azureSearch.py
│       │   ├── cogSearch.py
│       │   ├── cogSearchVsRetriever.py
│       │   ├── embeddingSchema.py
│       │   ├── embeddings.py
│       │   ├── envVars.py
│       │   ├── fmp.py
│       │   ├── formrecognizer.py
│       │   ├── messageBuilder.py
│       │   ├── modelHelper.py
│       │   └── redisIndex.py
│       ├── VerifyPassword/
│       │   ├── __init__.py
│       │   └── function.json
│       ├── companies_info.json
│       ├── host.json
│       ├── requirements.txt
│       └── sample.settings.json
├── app/
│   ├── backend/
│   │   ├── .deployment
│   │   ├── .dockerenv.example
│   │   ├── .dockerignore
│   │   ├── .dockerrun
│   │   ├── Dockerfile
│   │   ├── Utilities/
│   │   │   ├── ChatGptStream.py
│   │   │   ├── fmp.py
│   │   │   └── modelHelper.py
│   │   ├── app.py
│   │   └── requirements.txt
│   └── frontend/
│       ├── env.example
│       ├── index.html
│       ├── package.json
│       ├── src/
│       │   ├── .deployment
│       │   ├── api/
│       │   │   ├── api.ts
│       │   │   ├── chat.ts
│       │   │   ├── index.ts
│       │   │   ├── models.ts
│       │   │   └── util.ts
│       │   ├── components/
│       │   │   ├── AnalysisPanel/
│       │   │   │   ├── AnalysisPanel.module.css
│       │   │   │   ├── AnalysisPanel.tsx
│       │   │   │   ├── AnalysisPanelTabs.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── Answer/
│       │   │   │   ├── Answer.module.css
│       │   │   │   ├── Answer.tsx
│       │   │   │   ├── AnswerChat.tsx
│       │   │   │   ├── AnswerError.tsx
│       │   │   │   ├── AnswerIcon.tsx
│       │   │   │   ├── AnswerLoading.tsx
│       │   │   │   ├── AnswerParser.tsx
│       │   │   │   └── index.ts
│       │   │   ├── ClearChatButton/
│       │   │   │   ├── ClearChatButton.module.css
│       │   │   │   ├── ClearChatButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── DataTable/
│       │   │   │   ├── DataTable.module.css
│       │   │   │   ├── DataTable.tsx
│       │   │   │   └── index.ts
│       │   │   ├── Example/
│       │   │   │   ├── Example.module.css
│       │   │   │   ├── Example.tsx
│       │   │   │   ├── ExampleList.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── MediaCard/
│       │   │   │   ├── MediaCard.module.css
│       │   │   │   ├── MediaCard.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── QuestionInput/
│       │   │   │   ├── QuestionInput.module.css
│       │   │   │   ├── QuestionInput.tsx
│       │   │   │   └── index.ts
│       │   │   ├── QuestionListButton/
│       │   │   │   ├── QuestionListButton.module.css
│       │   │   │   ├── QuestionListButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── RenameButton/
│       │   │   │   ├── RenameButton.module.css
│       │   │   │   ├── RenameButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SessionButton/
│       │   │   │   ├── SessionButton.module.css
│       │   │   │   ├── SessionButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SettingsButton/
│       │   │   │   ├── SettingsButton.module.css
│       │   │   │   ├── SettingsButton.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SqlViewer/
│       │   │   │   ├── SqlViewer.tsx
│       │   │   │   └── index.tsx
│       │   │   ├── SupportingContent/
│       │   │   │   ├── SupportingContent.module.css
│       │   │   │   ├── SupportingContent.tsx
│       │   │   │   ├── SupportingContentParser.ts
│       │   │   │   └── index.ts
│       │   │   ├── Symbols/
│       │   │   │   ├── Amex.tsx
│       │   │   │   ├── Nasdaq.tsx
│       │   │   │   └── Nyse.tsx
│       │   │   └── UserChatMessage/
│       │   │       ├── UserChatMessage.module.css
│       │   │       ├── UserChatMessage.tsx
│       │   │       └── index.ts
│       │   ├── index.css
│       │   ├── index.tsx
│       │   ├── pages/
│       │   │   ├── NoPage.tsx
│       │   │   ├── admin/
│       │   │   │   ├── Admin.module.css
│       │   │   │   └── Admin.tsx
│       │   │   ├── chatgpt/
│       │   │   │   ├── ChatGpt.module.css
│       │   │   │   └── ChatGpt.tsx
│       │   │   ├── help/
│       │   │   │   ├── Help.module.css
│       │   │   │   ├── Help.tsx
│       │   │   │   └── README.md
│       │   │   ├── layout/
│       │   │   │   ├── Layout.module.css
│       │   │   │   └── Layout.tsx
│       │   │   ├── oneshot/
│       │   │   │   ├── OneShot.module.css
│       │   │   │   └── OneShot.tsx
│       │   │   └── upload/
│       │   │       ├── Upload.module.css
│       │   │       └── Upload.tsx
│       │   └── vite-env.d.ts
│       ├── tsconfig.json
│       └── vite.config.ts
├── azure.yaml
├── chroma-docker-compose.yml
├── docs/
│   ├── Auto Evaluator.excalidraw
│   ├── Azure Architecture.excalidraw
│   ├── Azure Architecture_1.excalidraw
│   ├── ChatAsk.vsdx
│   ├── Chatbot.excalidraw
│   ├── Cognitive Search and ChatGpt.excalidraw
│   ├── Import and Qa.excalidraw
│   ├── Ingestion Process.excalidraw
│   ├── Ingestion and Qa.excalidraw
│   ├── PIB.excalidraw
│   ├── QA with Cache.excalidraw
│   ├── Query Process.excalidraw
│   ├── SpeechAnalytics.excalidraw
│   ├── SpeechAnalyticsDetails.excalidraw
│   ├── Typical Query Process.excalidraw
│   ├── Use-cases.excalidraw
│   └── Video Indexer Gpt.excalidraw
├── infra/
│   ├── abbreviations.json
│   ├── core/
│   │   ├── ai/
│   │   │   └── cognitiveservices.bicep
│   │   ├── host/
│   │   │   ├── appservice.bicep
│   │   │   ├── appserviceplan.bicep
│   │   │   └── function.bicep
│   │   ├── monitor/
│   │   │   └── applicationinsights.bicep
│   │   ├── search/
│   │   │   └── search-services.bicep
│   │   └── storage/
│   │       └── storage-account.bicep
│   ├── main.bicep
│   └── main.parameters.json
├── milvus-standalone-docker-compose.yml
└── weavite-docker-compose.yml
Download .txt
SYMBOL INDEX (328 symbols across 45 files)

FILE: api/Python/ChatGpt/__init__.py
  function noNewLines (line 44) | def noNewLines(self, s: str) -> str:
  function formatDocs (line 47) | def formatDocs(docs):
  function main (line 50) | def main(req: func.HttpRequest, context: func.Context) -> func.HttpRespo...
  function ComposeResponse (line 86) | def ComposeResponse(jsonData, indexNs, indexType):
  function getMessagesFromHistory (line 100) | def getMessagesFromHistory(systemPrompt: str, modelId: str, history: Seq...
  function getChatHistory (line 126) | def getChatHistory(history, includeLastTurn=True, maxTokens=1000) -> str:
  function insertMessage (line 134) | def insertMessage(sessionId, type, role, totalTokens, tokens, response, ...
  function GetRrrAnswer (line 146) | def GetRrrAnswer(history, approach, overrides, indexNs, indexType):
  function GetAnswer (line 564) | def GetAnswer(history, approach, overrides, indexNs, indexType):
  function TransformValue (line 579) | def TransformValue(record, indexNs, indexType):

FILE: api/Python/DocGenerator/__init__.py
  function PartitionFile (line 54) | def PartitionFile(fileExtension: str, fileName: str):
  function GetAllFiles (line 124) | def GetAllFiles(filesToProcess):
  function summarizeGenerateQa (line 148) | def summarizeGenerateQa(docs, embeddingModelType, deploymentType):
  function blobLoad (line 200) | def blobLoad(TenantId, ClientId, ClientSecret, BlobAccountName, blobCont...
  function s3Load (line 229) | def s3Load(bucket, key, s3Client):
  function storeIndex (line 243) | def storeIndex(indexType, docs, fileName, nameSpace, embeddingModelType):
  function Embed (line 285) | def Embed(indexType, loadType, multiple, indexName,  value,
  function TransformValue (line 865) | def TransformValue(indexType, loadType,  multiple, indexName, existingIn...
  function ComposeResponse (line 928) | def ComposeResponse(indexType, loadType,  multiple, indexName, existingI...
  function main (line 944) | def main(req: func.HttpRequest, context: func.Context) -> func.HttpRespo...

FILE: api/Python/IndexManagement/__init__.py
  function main (line 21) | def main(req: func.HttpRequest, context: func.Context) -> func.HttpRespo...
  function ComposeResponse (line 58) | def ComposeResponse(indexType, indexName, blobName, indexNs, operation, ...
  function IndexManagement (line 72) | def IndexManagement(indexType, indexName, blobName, indexNs, operation, ...
  function TransformValue (line 103) | def TransformValue(indexType, indexName, blobName, indexNs, operation, r...

FILE: api/Python/OpenChatGpt/__init__.py
  function getCurrentTime (line 21) | def getCurrentTime(location):
  function calculator (line 34) | def calculator(num1, num2, operator):
  function getBingSearchResults (line 50) | def getBingSearchResults(query):
  function getStockPrice (line 64) | def getStockPrice(symbol):
  function getWeather (line 81) | def getWeather(location):
  function main (line 100) | def main(req: func.HttpRequest, context: func.Context) -> func.HttpRespo...
  function ComposeResponse (line 129) | def ComposeResponse(jsonData, indexNs, indexType):
  function getMessagesFromHistory (line 143) | def getMessagesFromHistory(systemPrompt: str, modelId: str, history: Seq...
  function insertMessage (line 169) | def insertMessage(sessionId, type, role, totalTokens, tokens, response, ...
  function checkFunctionArgs (line 181) | def checkFunctionArgs(function, args):
  function runFunctionConversation (line 196) | def runFunctionConversation(messages, functions, availableFunctions, emb...
  function GetRrrAnswer (line 301) | def GetRrrAnswer(history, approach, overrides, indexNs, indexType):
  function GetAnswer (line 646) | def GetAnswer(history, approach, overrides, indexNs, indexType):
  function TransformValue (line 661) | def TransformValue(record, indexNs, indexType):

FILE: api/Python/QuestionAnswering/__init__.py
  function noNewLines (line 37) | def noNewLines(self, s: str) -> str:
  function formatDocs (line 40) | def formatDocs(docs):
  function QaAnswer (line 43) | def QaAnswer(chainType, question, indexType, value, indexNs, approach, o...
  function ComposeResponse (line 518) | def ComposeResponse(chainType, question, indexType, jsonData, indexNs):
  function TransformValue (line 532) | def TransformValue(chainType, question, indexType, record, indexNs):
  function main (line 584) | def main(req: func.HttpRequest, context: func.Context) -> func.HttpRespo...

FILE: api/Python/Utilities/azureBlob.py
  function upsertMetadata (line 7) | def upsertMetadata(tenantId, clientId, clientSecret, blobAccountName, co...
  function getBlob (line 22) | def getBlob(tenantId, clientId, clientSecret, blobAccountName, container...
  function getAllBlobs (line 31) | def getAllBlobs(tenantId, clientId, clientSecret, blobAccountName, conta...
  function getFullPath (line 41) | def getFullPath(tenantId, clientId, clientSecret, blobAccountName, conta...
  function getLocalBlob (line 48) | def getLocalBlob(tenantId, clientId, clientSecret, blobAccountName, cont...
  function copyS3Blob (line 72) | def copyS3Blob(tenantId, clientId, clientSecret, blobAccountName, downlo...
  function copyBlob (line 81) | def copyBlob(tenantId, clientId, clientSecret, blobAccountName, blobCont...
  function deleteBlob (line 89) | def deleteBlob(tenantId, clientId, clientSecret, blobAccountName, contai...

FILE: api/Python/Utilities/azureSearch.py
  function _get_search_client (line 65) | def _get_search_client(
  class AzureSearch (line 220) | class AzureSearch(VectorStore):
    method __init__ (line 223) | def __init__(
    method embeddings (line 302) | def embeddings(self) -> Optional[Embeddings]:
    method add_texts (line 306) | def add_texts(
    method similarity_search (line 378) | def similarity_search(
    method similarity_search_with_relevance_scores (line 392) | def similarity_search_with_relevance_scores(
    method vector_search (line 403) | def vector_search(self, query: str, k: int = 4, **kwargs: Any) -> List...
    method vector_search_with_score (line 419) | def vector_search_with_score(
    method hybrid_search (line 463) | def hybrid_search(self, query: str, k: int = 4, **kwargs: Any) -> List...
    method hybrid_search_with_score (line 479) | def hybrid_search_with_score(
    method semantic_hybrid_search (line 522) | def semantic_hybrid_search(
    method semantic_hybrid_search_with_score (line 540) | def semantic_hybrid_search_with_score(
    method semantic_hybrid_search_with_score_and_rerank (line 558) | def semantic_hybrid_search_with_score_and_rerank(
    method from_texts (line 635) | def from_texts(
  class AzureSearchVectorStoreRetriever (line 658) | class AzureSearchVectorStoreRetriever(BaseRetriever):
    class Config (line 669) | class Config:
    method validate_search_type (line 675) | def validate_search_type(cls, values: Dict) -> Dict:
    method _get_relevant_documents (line 683) | def _get_relevant_documents(
    method _aget_relevant_documents (line 699) | async def _aget_relevant_documents(

FILE: api/Python/Utilities/cogSearch.py
  function deleteSearchIndex (line 30) | def deleteSearchIndex(indexName):
  function createSearchIndex (line 41) | def createSearchIndex(indexType, indexName):
  function createSections (line 118) | def createSections(indexType, embeddingModelType, fileName, docs):
  function indexSections (line 138) | def indexSections(indexType, embeddingModelType, fileName, indexName, do...
  function performCogSearch (line 170) | def performCogSearch(indexType, embeddingModelType, question, indexName,...
  function performSummaryQaCogSearch (line 213) | def performSummaryQaCogSearch(indexType, embeddingModelType, question, i...
  function generateKbEmbeddings (line 247) | def generateKbEmbeddings(OpenAiEndPoint, OpenAiKey, OpenAiVersion, OpenA...
  function createKbSearchIndex (line 273) | def createKbSearchIndex(SearchService, indexName):
  function performKbCogVectorSearch (line 326) | def performKbCogVectorSearch(embedValue, embedField, SearchService, inde...
  function indexDocs (line 349) | def indexDocs(SearchService, indexName, docs):

FILE: api/Python/Utilities/cogSearchVsRetriever.py
  class CognitiveSearchVsRetriever (line 19) | class CognitiveSearchVsRetriever(BaseRetriever):
    class Config (line 50) | class Config:
    method generateEmbeddings (line 56) | def generateEmbeddings(self, text):
    method validate_environment (line 83) | def validate_environment(cls, values: Dict) -> Dict:
    method _search (line 96) | def _search(self, query: any) -> any:
    method _asearch (line 112) | async def _asearch(self, query: str) -> any:
    method get_relevant_documents (line 115) | def get_relevant_documents(self, query: str) -> List[Document]:
    method aget_relevant_documents (line 123) | async def aget_relevant_documents(self, query: str) -> List[Document]:

FILE: api/Python/Utilities/embeddingSchema.py
  class Embeddings (line 5) | class Embeddings(ABC):
    method embed_documents (line 9) | def embed_documents(self, texts: List[str]) -> List[List[float]]:
    method embed_query (line 13) | def embed_query(self, text: str) -> List[float]:
    method aembed_documents (line 16) | async def aembed_documents(self, texts: List[str]) -> List[List[float]]:
    method aembed_query (line 20) | async def aembed_query(self, text: str) -> List[float]:

FILE: api/Python/Utilities/embeddings.py
  function generateEmbeddings (line 8) | def generateEmbeddings(embeddingModelType, text):

FILE: api/Python/Utilities/fmp.py
  function __return_json_v3 (line 331) | def __return_json_v3(
  function __return_json_v4 (line 375) | def __return_json_v4(
  function __validate_period (line 418) | def __validate_period(value: str) -> str:
  function __validate_sector (line 430) | def __validate_sector(value: str) -> str:
  function __validate_industry (line 442) | def __validate_industry(value: str) -> str:
  function __validate_time_delta (line 456) | def __validate_time_delta(value: str) -> str:
  function __validate_series_type (line 470) | def __validate_series_type(value: str) -> str:
  function __validate_technical_indicators_time_delta (line 484) | def __validate_technical_indicators_time_delta(value: str) -> str:
  function mapper_cik_name (line 497) | def mapper_cik_name(
  function searchCik (line 516) | def searchCik(
  function cik_list (line 533) | def cik_list(apikey: str) -> typing.Optional[typing.List[typing.Dict]]:
  function cik_search (line 545) | def cik_search(apikey: str, name: str) -> typing.Optional[typing.List[ty...
  function companyProfile (line 558) | def companyProfile(
  function keyExecutives (line 573) | def keyExecutives(
  function search (line 588) | def search(
  function search_ticker (line 610) | def search_ticker(
  function financial_statement (line 632) | def financial_statement(
  function income_statement (line 653) | def income_statement(
  function balance_sheet_statement (line 683) | def balance_sheet_statement(
  function cash_flow_statement (line 713) | def cash_flow_statement(
  function financial_statement_symbol_lists (line 743) | def financial_statement_symbol_lists(
  function income_statement_growth (line 757) | def income_statement_growth(
  function balance_sheet_statement_growth (line 778) | def balance_sheet_statement_growth(
  function cash_flow_statement_growth (line 797) | def cash_flow_statement_growth(
  function income_statement_as_reported (line 816) | def income_statement_as_reported(
  function balance_sheet_statement_as_reported (line 850) | def balance_sheet_statement_as_reported(
  function cash_flow_statement_as_reported (line 884) | def cash_flow_statement_as_reported(
  function financial_statement_full_as_reported (line 918) | def financial_statement_full_as_reported(
  function financial_ratios_ttm (line 936) | def financial_ratios_ttm(
  function financial_ratios (line 950) | def financial_ratios(
  function enterprise_values (line 973) | def enterprise_values(
  function key_metrics_ttm (line 996) | def key_metrics_ttm(
  function key_metrics (line 1013) | def key_metrics(
  function financial_growth (line 1036) | def financial_growth(
  function rating (line 1059) | def rating(apikey: str, symbol: str) -> typing.Optional[typing.List[typi...
  function historicalRating (line 1071) | def historicalRating(
  function discounted_cash_flow (line 1088) | def discounted_cash_flow(
  function historical_discounted_cash_flow (line 1102) | def historical_discounted_cash_flow(
  function historical_daily_discounted_cash_flow (line 1125) | def historical_daily_discounted_cash_flow(
  function market_capitalization (line 1140) | def market_capitalization(
  function historical_market_capitalization (line 1154) | def historical_market_capitalization(
  function symbols_list (line 1169) | def symbols_list(apikey: str) -> typing.Optional[typing.List[typing.Dict]]:
  function stockNews (line 1180) | def stockNews(
  function earnings_surprises (line 1201) | def earnings_surprises(
  function earningCallTranscript (line 1215) | def earningCallTranscript(
  function batch_earning_call_transcript (line 1231) | def batch_earning_call_transcript(
  function earningCallsAvailableDates (line 1246) | def earningCallsAvailableDates(
  function financialScore (line 1260) | def financialScore(
  function esgScore (line 1274) | def esgScore(
  function esgRatings (line 1288) | def esgRatings(
  function upgradeDowngrades (line 1302) | def upgradeDowngrades(
  function priceTarget (line 1316) | def priceTarget(
  function secFilings (line 1330) | def secFilings(
  function pressReleases (line 1346) | def pressReleases(

FILE: api/Python/Utilities/formrecognizer.py
  function chunk_paragraphs (line 8) | def chunk_paragraphs(paragraphs: List[str], fullPath:str,  max_words: in...
  function analyze_layout (line 108) | def analyze_layout(data: bytes, fullpath:str, endpoint: str, key: str, c...
  function normalize_text (line 141) | def normalize_text(s: str) -> str:

FILE: api/Python/Utilities/messageBuilder.py
  class MessageBuilder (line 3) | class MessageBuilder:
    method __init__ (line 15) | def __init__(self, system_content: str, chatgpt_model: str):
    method append_message (line 21) | def append_message(self, role: str, content: str, index: int = 1):

FILE: api/Python/Utilities/modelHelper.py
  function getTokenLimit (line 17) | def getTokenLimit(modelId: str) -> int:
  function numTokenFromMessages (line 23) | def numTokenFromMessages(message: dict[str, str], model: str) -> int:
  function getOaiChatModel (line 44) | def getOaiChatModel(aoaimodel: str) -> str:

FILE: api/Python/Utilities/redisIndex.py
  function createRedisIndex (line 31) | def createRedisIndex(fields, indexName):
  function getEmbedding (line 43) | def getEmbedding(text: str, client, engineType) -> list[float]:
  function batched (line 51) | def batched(iterable, n):
  function chunkedTokens (line 60) | def chunkedTokens(text, encoding_name, chunk_length):
  function getChunkedText (line 66) | def getChunkedText(text, encoding_name="cl100k_base", max_tokens=1500,):
  function setDocuments (line 73) | def setDocuments(redisClient, indexName, secData):
  function chunkAndEmbed (line 109) | def chunkAndEmbed(redisClient, indexName, secDoc, engine="text-embedding...
  function performRedisSearch (line 171) | def performRedisSearch(question, indexName, k, returnField, vectorField,...

FILE: api/Python/VerifyPassword/__init__.py
  function main (line 5) | def main(req: func.HttpRequest, context: func.Context) -> func.HttpRespo...
  function ComposeResponse (line 35) | def ComposeResponse(passType, password,  jsonData):
  function TransformValue (line 49) | def TransformValue(passType, password, record):

FILE: app/backend/Utilities/ChatGptStream.py
  class ChatGptStream (line 24) | class ChatGptStream:
    method __init__ (line 26) | def __init__(self, OpenAiEndPoint, OpenAiKey, OpenAiVersion, OpenAiCha...
    method generateEmbeddings (line 49) | def generateEmbeddings(self, embeddingModelType, text):
    method performCogSearch (line 75) | def performCogSearch(self, indexType, embeddingModelType, question, in...
    method performRedisSearch (line 118) | def performRedisSearch(self, question, indexName, k, returnField, vect...
    method noNewLines (line 148) | def noNewLines(self, s: str) -> str:
    method getStreamMessageFromHistory (line 151) | def getStreamMessageFromHistory(self, systemPrompt: str, modelId: str,...
    method performPineconeSearch (line 194) | def performPineconeSearch(self, question, indexName, k, embeddingModel...
    method run (line 210) | def run(self, indexType, indexNs, postBody):

FILE: app/backend/Utilities/fmp.py
  function __return_json_v3 (line 331) | def __return_json_v3(
  function __return_json_v4 (line 375) | def __return_json_v4(
  function __validate_period (line 418) | def __validate_period(value: str) -> str:
  function __validate_sector (line 430) | def __validate_sector(value: str) -> str:
  function __validate_industry (line 442) | def __validate_industry(value: str) -> str:
  function __validate_time_delta (line 456) | def __validate_time_delta(value: str) -> str:
  function __validate_series_type (line 470) | def __validate_series_type(value: str) -> str:
  function __validate_technical_indicators_time_delta (line 484) | def __validate_technical_indicators_time_delta(value: str) -> str:
  function mapper_cik_name (line 497) | def mapper_cik_name(
  function searchCik (line 516) | def searchCik(
  function cik_list (line 533) | def cik_list(apikey: str) -> typing.Optional[typing.List[typing.Dict]]:
  function cik_search (line 545) | def cik_search(apikey: str, name: str) -> typing.Optional[typing.List[ty...
  function companyProfile (line 558) | def companyProfile(
  function keyExecutives (line 573) | def keyExecutives(
  function search (line 588) | def search(
  function search_ticker (line 610) | def search_ticker(
  function financial_statement (line 632) | def financial_statement(
  function incomeStatement (line 653) | def incomeStatement(
  function balanceSheetStatement (line 683) | def balanceSheetStatement(
  function cashFlowStatement (line 713) | def cashFlowStatement(
  function financial_statement_symbol_lists (line 743) | def financial_statement_symbol_lists(
  function income_statement_growth (line 757) | def income_statement_growth(
  function balance_sheet_statement_growth (line 778) | def balance_sheet_statement_growth(
  function cash_flow_statement_growth (line 797) | def cash_flow_statement_growth(
  function income_statement_as_reported (line 816) | def income_statement_as_reported(
  function balance_sheet_statement_as_reported (line 850) | def balance_sheet_statement_as_reported(
  function cash_flow_statement_as_reported (line 884) | def cash_flow_statement_as_reported(
  function financial_statement_full_as_reported (line 918) | def financial_statement_full_as_reported(
  function financial_ratios_ttm (line 936) | def financial_ratios_ttm(
  function financial_ratios (line 950) | def financial_ratios(
  function enterprise_values (line 973) | def enterprise_values(
  function key_metrics_ttm (line 996) | def key_metrics_ttm(
  function key_metrics (line 1013) | def key_metrics(
  function financial_growth (line 1036) | def financial_growth(
  function rating (line 1059) | def rating(apikey: str, symbol: str) -> typing.Optional[typing.List[typi...
  function historicalRating (line 1071) | def historicalRating(
  function discounted_cash_flow (line 1088) | def discounted_cash_flow(
  function historical_discounted_cash_flow (line 1102) | def historical_discounted_cash_flow(
  function historical_daily_discounted_cash_flow (line 1125) | def historical_daily_discounted_cash_flow(
  function market_capitalization (line 1140) | def market_capitalization(
  function historical_market_capitalization (line 1154) | def historical_market_capitalization(
  function symbols_list (line 1169) | def symbols_list(apikey: str) -> typing.Optional[typing.List[typing.Dict]]:
  function stockNews (line 1180) | def stockNews(
  function earnings_surprises (line 1201) | def earnings_surprises(
  function earningCallTranscript (line 1215) | def earningCallTranscript(
  function batch_earning_call_transcript (line 1231) | def batch_earning_call_transcript(
  function earningCallsAvailableDates (line 1246) | def earningCallsAvailableDates(
  function financialScore (line 1260) | def financialScore(
  function esgScore (line 1274) | def esgScore(
  function esgRatings (line 1288) | def esgRatings(
  function upgradeDowngrades (line 1302) | def upgradeDowngrades(
  function socialSentiments (line 1316) | def socialSentiments(
  function priceTarget (line 1330) | def priceTarget(
  function secFilings (line 1344) | def secFilings(
  function pressReleases (line 1360) | def pressReleases(

FILE: app/backend/Utilities/modelHelper.py
  function getTokenLimit (line 17) | def getTokenLimit(modelId: str) -> int:
  function numTokenFromMessages (line 23) | def numTokenFromMessages(message: dict[str, str], model: str) -> int:
  function getOaiChatModel (line 44) | def getOaiChatModel(aoaimodel: str) -> str:

FILE: app/backend/app.py
  function static_file (line 24) | def static_file(path):
  function ask (line 28) | def ask():
  function chat (line 57) | def chat():
  function formatNdJson (line 80) | def formatNdJson(r):
  function chatStream (line 85) | def chatStream():
  function chatGpt (line 173) | def chatGpt():
  function getAllSessions (line 196) | def getAllSessions():
  function getAllIndexSessions (line 225) | def getAllIndexSessions():
  function getIndexSession (line 256) | def getIndexSession():
  function deleteIndexSession (line 287) | def deleteIndexSession():
  function renameIndexSession (line 328) | def renameIndexSession():
  function getIndexSessionDetail (line 358) | def getIndexSessionDetail():
  function processDoc (line 383) | def processDoc():
  function verifyPassword (line 416) | def verifyPassword():
  function refreshIndex (line 436) | def refreshIndex():
  function getDocumentList (line 492) | def getDocumentList():
  function refreshQuestions (line 526) | def refreshQuestions():
  function refreshIndexQuestions (line 562) | def refreshIndexQuestions():
  function kbQuestionManagement (line 601) | def kbQuestionManagement():
  function indexManagement (line 625) | def indexManagement():
  function uploadFile (line 650) | def uploadFile():
  function uploadBinaryFile (line 668) | def uploadBinaryFile():
  function content_file (line 702) | def content_file(path):
  function speechToken (line 715) | def speechToken():
  function speech (line 728) | def speech():

FILE: app/frontend/src/api/api.ts
  function getUserInfo (line 5) | async function getUserInfo(): Promise<UserInfo[]> {
  function askApi (line 15) | async function askApi(options: AskRequest, indexNs: string, indexType: s...
  function chat (line 60) | async function chat(options: ChatRequest, indexNs: string, indexType:str...
  function chatStream (line 101) | async function chatStream(options: ChatRequest, indexNs: string, indexTy...
  function chatGpt (line 136) | async function chatGpt(options: ChatRequest, indexNs: string, indexType:...
  function getAllSessions (line 176) | async function getAllSessions(indexType:string, feature:string, type:str...
  function getAllIndexSessions (line 195) | async function getAllIndexSessions(indexNs: string, indexType:string, fe...
  function getIndexSession (line 215) | async function getIndexSession(indexNs: string, indexType:string, sessio...
  function deleteIndexSession (line 234) | async function deleteIndexSession(indexNs: string, indexType:string, ses...
  function getDocumentList (line 253) | async function getDocumentList(): Promise<Any> {
  function renameIndexSession (line 267) | async function renameIndexSession(oldSessionName: string, newSessionName...
  function getIndexSessionDetail (line 285) | async function getIndexSessionDetail(sessionId: string): Promise<Any> {
  function refreshIndex (line 302) | async function refreshIndex() : Promise<any> {
  function refreshQuestions (line 317) | async function refreshQuestions(indexType:string, indexName: string) : P...
  function refreshIndexQuestions (line 346) | async function refreshIndexQuestions(indexType:string) : Promise<any> {
  function kbQuestionManagement (line 374) | async function kbQuestionManagement(documentsToDelete:any) : Promise<any> {
  function uploadFile (line 402) | async function uploadFile(fileName:string, fileContent:any, contentType:...
  function uploadBinaryFile (line 422) | async function uploadBinaryFile(formData:any, indexName:string) : Promis...
  function processDoc (line 434) | async function processDoc(indexType: string, loadType : string, multiple...
  function indexManagement (line 493) | async function indexManagement(indexType:string, indexName:string, blobN...
  function verifyPassword (line 534) | async function verifyPassword(passType:string, password: string): Promis...
  function getSpeechToken (line 566) | async function getSpeechToken(): Promise<SpeechTokenResponse> {
  function getSpeechApi (line 580) | async function getSpeechApi(text: string): Promise<string|null> {
  function getCitationFilePath (line 598) | function getCitationFilePath(citation: string): string {

FILE: app/frontend/src/api/chat.ts
  function handler (line 11) | async function handler(req: { body: any; }, res: {

FILE: app/frontend/src/api/models.ts
  type Approaches (line 3) | const enum Approaches {
  type SearchTypes (line 9) | const enum SearchTypes {
  type ChatMessage (line 15) | type ChatMessage = {
  type ChatSession (line 25) | type ChatSession = {
  type AskRequestOverrides (line 44) | type AskRequestOverrides = {
  type AskRequest (line 71) | type AskRequest = {
  type AskResponse (line 77) | type AskResponse = {
  type EvalRunResponse (line 86) | type EvalRunResponse = {
  type SqlResponse (line 91) | type SqlResponse = {
  type SpeechTokenResponse (line 102) | type SpeechTokenResponse = {
  type ChatTurn (line 107) | type ChatTurn = {
  type ChatRequest (line 112) | type ChatRequest = {
  type ChatRespValues (line 118) | type ChatRespValues = {
  type ChatResponse (line 123) | type ChatResponse = {
  type EvalRespValues (line 127) | type EvalRespValues = {
  type EvalResponse (line 132) | type EvalResponse = {
  type UserInfo (line 136) | type UserInfo = {

FILE: app/frontend/src/components/AnalysisPanel/AnalysisPanel.tsx
  type Props (line 10) | interface Props {

FILE: app/frontend/src/components/AnalysisPanel/AnalysisPanelTabs.tsx
  type AnalysisPanelTabs (line 1) | enum AnalysisPanelTabs {

FILE: app/frontend/src/components/Answer/Answer.tsx
  type Props (line 13) | interface Props {

FILE: app/frontend/src/components/Answer/AnswerChat.tsx
  type Props (line 12) | interface Props {

FILE: app/frontend/src/components/Answer/AnswerError.tsx
  type Props (line 6) | interface Props {

FILE: app/frontend/src/components/Answer/AnswerParser.tsx
  type HtmlParsedAnswer (line 6) | type HtmlParsedAnswer = {
  function parseAnswerToHtml (line 12) | function parseAnswerToHtml(answer: string,

FILE: app/frontend/src/components/ClearChatButton/ClearChatButton.tsx
  type Props (line 6) | interface Props {

FILE: app/frontend/src/components/DataTable/DataTable.tsx
  type DataTableProps (line 1) | interface DataTableProps {

FILE: app/frontend/src/components/Example/Example.tsx
  type Props (line 3) | interface Props {

FILE: app/frontend/src/components/Example/ExampleList.tsx
  type ExampleModel (line 5) | type ExampleModel = {
  type Props (line 19) | interface Props {

FILE: app/frontend/src/components/MediaCard/MediaCard.tsx
  type Props (line 13) | interface Props {

FILE: app/frontend/src/components/QuestionInput/QuestionInput.tsx
  type Props (line 7) | interface Props {

FILE: app/frontend/src/components/QuestionListButton/QuestionListButton.tsx
  type Props (line 6) | interface Props {

FILE: app/frontend/src/components/RenameButton/RenameButton.tsx
  type Props (line 6) | interface Props {

FILE: app/frontend/src/components/SessionButton/SessionButton.tsx
  type Props (line 6) | interface Props {

FILE: app/frontend/src/components/SettingsButton/SettingsButton.tsx
  type Props (line 6) | interface Props {

FILE: app/frontend/src/components/SqlViewer/SqlViewer.tsx
  type Props (line 5) | interface Props {

FILE: app/frontend/src/components/SupportingContent/SupportingContent.tsx
  type Props (line 5) | interface Props {

FILE: app/frontend/src/components/SupportingContent/SupportingContentParser.ts
  type ParsedSupportingContentItem (line 1) | type ParsedSupportingContentItem = {
  function parseSupportingContentItem (line 6) | function parseSupportingContentItem(item: string): ParsedSupportingConte...

FILE: app/frontend/src/components/UserChatMessage/UserChatMessage.tsx
  type Props (line 3) | interface Props {

FILE: app/frontend/src/index.tsx
  function App (line 18) | function App() {
Condensed preview — 179 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,837K chars).
[
  {
    "path": ".deployment",
    "chars": 44,
    "preview": "[config]\nSCM_DO_BUILD_DURING_DEPLOYMENT=true"
  },
  {
    "path": ".genaiscript/.gitattributes",
    "chars": 183,
    "preview": "# avoid merge issues and ignore files in diffs\n*.json -diff merge=ours linguist-generated\n*.jsonl -diff merge=ours lingu"
  },
  {
    "path": ".github/workflows/backendapp.yml",
    "chars": 4199,
    "preview": "# This workflow will build and push a Python application to an Azure Web App when a commit is pushed to your default bra"
  },
  {
    "path": ".github/workflows/dockerapi.yml",
    "chars": 733,
    "preview": "name: Docker Api\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build-and-push:\n    runs-on: ubuntu-latest\n\n    steps:"
  },
  {
    "path": ".github/workflows/dockerapp.yml",
    "chars": 2197,
    "preview": "name: Docker App\n\nenv:\n  #AZURE_WEBAPP_NAME: dataaipdfchat  # set this to the name of your Azure Web App\n  PYTHON_VERSIO"
  },
  {
    "path": ".github/workflows/pythonapi.yml",
    "chars": 2659,
    "preview": "# This workflow will build a Python app and deploy it to an Azure Functions App on Linux when a commit is pushed to your"
  },
  {
    "path": ".vscode/chatpdf.code-workspace",
    "chars": 275,
    "preview": "{\n\t\"folders\": [\n\t\t{\n\t\t\t\"path\": \"..\"\n\t\t}\n\t],\n\t\"settings\": {\n\t\t\"debug.internalConsoleOptions\": \"neverOpen\",\n\t\t\"python.term"
  },
  {
    "path": ".vscode/extensions.json",
    "chars": 123,
    "preview": "{\n  \"recommendations\": [\n    \"ms-azuretools.vscode-azurefunctions\",\n    \"ms-python.python\",\n    \"github.copilot-chat\"\n  "
  },
  {
    "path": ".vscode/launch.json",
    "chars": 220,
    "preview": "{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"name\": \"Attach to Python Functions\",\n      \"type\": \"python\",\n"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 598,
    "preview": "{\n    \"azureFunctions.deploySubpath\": \"api\\\\Python\",\n    \"azureFunctions.projectSubpath\": \"api\\\\Python\",\n    \"azureFunct"
  },
  {
    "path": ".vscode/tasks.json",
    "chars": 911,
    "preview": "{\n  \"version\": \"2.0.0\",\n  \"tasks\": [\n    {\n      \"type\": \"func\",\n      \"label\": \"func: host start\",\n      \"command\": \"ho"
  },
  {
    "path": "Configuration.md",
    "chars": 3390,
    "preview": "# Configuration\n\n## API Configuration\n\n| Key | Default Value | Detail |\n| --- | --- | ------------- |\n|OpenAiKey||Your A"
  },
  {
    "path": "Deployment/azuredeploy.json",
    "chars": 30727,
    "preview": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1"
  },
  {
    "path": "Deployment/azuredeploy_1.json",
    "chars": 54709,
    "preview": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#\",\n  \"contentVersion\": \"1"
  },
  {
    "path": "Deployment/backendapp.yml",
    "chars": 4197,
    "preview": "# This workflow will build and push a Python application to an Azure Web App when a commit is pushed to your default bra"
  },
  {
    "path": "Deployment/northwind.sql",
    "chars": 1046924,
    "preview": "/*\n** Copyright Microsoft, Inc. 1994 - 2000\n** All Rights Reserved.\n*/\n\n-- This script does not create a database.\n-- Ru"
  },
  {
    "path": "Deployment/pythonapi.yml",
    "chars": 2657,
    "preview": "# This workflow will build a Python app and deploy it to an Azure Functions App on Linux when a commit is pushed to your"
  },
  {
    "path": "Features.md",
    "chars": 3588,
    "preview": "# Features\n\n* Upload (PDF/Text Documents as well as Webpages).  **New** - Connectors support.  Connect to your data dire"
  },
  {
    "path": "GettingStarted.md",
    "chars": 12318,
    "preview": "# Getting Started\n\n**NOTE** In order to deploy and run this example, you'll need an Azure subscription with access enabl"
  },
  {
    "path": "LICENSE",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2023 Ashish Talati\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "LICENSE.md",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2023 Ashish Talati\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "LLMOps.md",
    "chars": 14122,
    "preview": "# End to End LLMOps with Prompt flow and GitHub Actions\n\nAzure Machine Learning allows you to integrate with [GitHub Act"
  },
  {
    "path": "README.md",
    "chars": 21623,
    "preview": "# Chat with your enterprise data using LLM\n\nThis sample demonstrates a few approaches for creating ChatGPT-like experien"
  },
  {
    "path": "READMEWORKSHOP.md",
    "chars": 1861,
    "preview": "# Workshop Content\n\n| Notebook | Details\n| --- | ---\n| [0_SetupandConfig](./Workshop/0_SetupandConfig.ipynb) | Introduct"
  },
  {
    "path": "api/Python/.dockerenv.example",
    "chars": 954,
    "preview": "AzureWebJobsStorage=UseDevelopmentStorage=true\nAzureWebJobs.HttpTrigger1.Disabled=false\nAdminPassword=\nUploadPassword=$\n"
  },
  {
    "path": "api/Python/.dockerignore",
    "chars": 54,
    "preview": "local.settings.json\n.env\n.dockerenv\n.dockerenv.example"
  },
  {
    "path": "api/Python/.dockerrun",
    "chars": 471,
    "preview": "-- Docker build\ndocker build --tag ghcr.io/akshata29/entaoai-python:latest .\n\n-- Docker  Push\necho <PAT_TOKEN> | docker "
  },
  {
    "path": "api/Python/.funcignore",
    "chars": 5,
    "preview": ".venv"
  },
  {
    "path": "api/Python/ChatGpt/__init__.py",
    "chars": 27121,
    "preview": "import datetime\nimport logging, json, os\nimport uuid\nimport azure.functions as func\nfrom langchain_openai import OpenAIE"
  },
  {
    "path": "api/Python/ChatGpt/function.json",
    "chars": 439,
    "preview": "{\n  \"scriptFile\": \"__init__.py\",\n  \"bindings\": [\n    {\n      \"authLevel\": \"anonymous\",\n      \"type\": \"httpTrigger\",\n    "
  },
  {
    "path": "api/Python/DocGenerator/__init__.py",
    "chars": 62296,
    "preview": "import logging, json, os\nimport azure.functions as func\nfrom langchain.text_splitter import RecursiveCharacterTextSplitt"
  },
  {
    "path": "api/Python/DocGenerator/function.json",
    "chars": 439,
    "preview": "{\n  \"scriptFile\": \"__init__.py\",\n  \"bindings\": [\n    {\n      \"authLevel\": \"anonymous\",\n      \"type\": \"httpTrigger\",\n    "
  },
  {
    "path": "api/Python/Dockerfile",
    "chars": 276,
    "preview": "FROM mcr.microsoft.com/azure-functions/python:4-python3.11\n\nRUN apt-get update\n\nENV AzureWebJobsScriptRoot=/home/site/ww"
  },
  {
    "path": "api/Python/IndexManagement/__init__.py",
    "chars": 6161,
    "preview": "import logging, json, os\nimport azure.functions as func\nfrom langchain.text_splitter import RecursiveCharacterTextSplitt"
  },
  {
    "path": "api/Python/IndexManagement/function.json",
    "chars": 439,
    "preview": "{\n  \"scriptFile\": \"__init__.py\",\n  \"bindings\": [\n    {\n      \"authLevel\": \"anonymous\",\n      \"type\": \"httpTrigger\",\n    "
  },
  {
    "path": "api/Python/OpenChatGpt/__init__.py",
    "chars": 31658,
    "preview": "import datetime\nimport logging, json, os\nimport uuid\nimport azure.functions as func\nimport openai\nimport os\nfrom Utiliti"
  },
  {
    "path": "api/Python/OpenChatGpt/function.json",
    "chars": 439,
    "preview": "{\n  \"scriptFile\": \"__init__.py\",\n  \"bindings\": [\n    {\n      \"authLevel\": \"anonymous\",\n      \"type\": \"httpTrigger\",\n    "
  },
  {
    "path": "api/Python/QuestionAnswering/__init__.py",
    "chars": 29421,
    "preview": "import logging, json, os\nimport azure.functions as func\nimport openai\nfrom langchain_openai import OpenAIEmbeddings\nfrom"
  },
  {
    "path": "api/Python/QuestionAnswering/function.json",
    "chars": 439,
    "preview": "{\n  \"scriptFile\": \"__init__.py\",\n  \"bindings\": [\n    {\n      \"authLevel\": \"anonymous\",\n      \"type\": \"httpTrigger\",\n    "
  },
  {
    "path": "api/Python/Utilities/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "api/Python/Utilities/azureBlob.py",
    "chars": 4967,
    "preview": "from azure.storage.blob import BlobServiceClient, ContentSettings, generate_blob_sas\nfrom datetime import datetime, time"
  },
  {
    "path": "api/Python/Utilities/azureSearch.py",
    "chars": 25918,
    "preview": "from __future__ import annotations\n\nimport base64\nimport json\nimport logging\nimport uuid\nfrom typing import (\n    TYPE_C"
  },
  {
    "path": "api/Python/Utilities/cogSearch.py",
    "chars": 17466,
    "preview": "from azure.search.documents.indexes import SearchIndexClient\nfrom azure.search.documents.indexes.models import *\nfrom az"
  },
  {
    "path": "api/Python/Utilities/cogSearchVsRetriever.py",
    "chars": 5145,
    "preview": "\"\"\"Retriever wrapper for Azure Cognitive Search.\"\"\"\nfrom __future__ import annotations\n\nimport json\nfrom typing import D"
  },
  {
    "path": "api/Python/Utilities/embeddingSchema.py",
    "chars": 654,
    "preview": "from abc import ABC, abstractmethod\nfrom typing import List\n\n\nclass Embeddings(ABC):\n    \"\"\"Interface for embedding mode"
  },
  {
    "path": "api/Python/Utilities/embeddings.py",
    "chars": 1255,
    "preview": "import openai\nfrom tenacity import retry, wait_random_exponential, stop_after_attempt  \nfrom Utilities.envVars import *\n"
  },
  {
    "path": "api/Python/Utilities/envVars.py",
    "chars": 4208,
    "preview": "import os\nimport logging\n\ntry:\n    OpenAiKey = os.environ['OpenAiKey']\n    OpenAiVersion = os.environ['OpenAiVersion']\n "
  },
  {
    "path": "api/Python/Utilities/fmp.py",
    "chars": 41286,
    "preview": "import requests\nimport typing\nimport logging\n\nCONNECT_TIMEOUT = 5\nREAD_TIMEOUT = 30\nBASE_URL_v3: str = \"https://financia"
  },
  {
    "path": "api/Python/Utilities/formrecognizer.py",
    "chars": 5375,
    "preview": "from azure.ai.formrecognizer import DocumentAnalysisClient\nfrom azure.core.credentials import AzureKeyCredential\nfrom ty"
  },
  {
    "path": "api/Python/Utilities/messageBuilder.py",
    "chars": 1140,
    "preview": "from Utilities.modelHelper import numTokenFromMessages\n\nclass MessageBuilder:\n    \"\"\"\n      A class for building and man"
  },
  {
    "path": "api/Python/Utilities/modelHelper.py",
    "chars": 1640,
    "preview": "import tiktoken\n\nMODELS_2_TOKEN_LIMITS = {\n    \"gpt-35-turbo\": 4000,\n    \"gpt-3.5-turbo\": 4000,\n    \"gpt-35-turbo-16k\": "
  },
  {
    "path": "api/Python/Utilities/redisIndex.py",
    "chars": 9061,
    "preview": "from redis import Redis\nfrom redis.commands.search.field import VectorField, TagField, TextField\nfrom redis.commands.sea"
  },
  {
    "path": "api/Python/VerifyPassword/__init__.py",
    "chars": 3528,
    "preview": "import logging, json\nimport azure.functions as func\nfrom Utilities.envVars import *\n\ndef main(req: func.HttpRequest, con"
  },
  {
    "path": "api/Python/VerifyPassword/function.json",
    "chars": 439,
    "preview": "{\n  \"scriptFile\": \"__init__.py\",\n  \"bindings\": [\n    {\n      \"authLevel\": \"anonymous\",\n      \"type\": \"httpTrigger\",\n    "
  },
  {
    "path": "api/Python/companies_info.json",
    "chars": 4138,
    "preview": "{\n    \"789019\": {\n        \"Company Name\": \"MICROSOFT CORP\",\n        \"SIC\": \"7372\",\n        \"State location\": \"WA\",\n     "
  },
  {
    "path": "api/Python/host.json",
    "chars": 170,
    "preview": "{\n  \"version\": \"2.0\",\n  \"functionTimeout\": \"03:00:00\",\n  \"extensionBundle\": {\n    \"id\": \"Microsoft.Azure.Functions.Exten"
  },
  {
    "path": "api/Python/requirements.txt",
    "chars": 1102,
    "preview": "azure-common==1.1.28\nazure-core==1.30.0\nazure-cognitiveservices-speech==1.33.0\nazure-cosmos==4.6.0\nazure-identity==1.15."
  },
  {
    "path": "api/Python/sample.settings.json",
    "chars": 2123,
    "preview": "{\n    \"IsEncrypted\": false,\n    \"Values\": {\n      \"FUNCTIONS_WORKER_RUNTIME\": \"python\",\n      \"AzureWebJobsFeatureFlags\""
  },
  {
    "path": "app/backend/.deployment",
    "chars": 44,
    "preview": "[config]\nSCM_DO_BUILD_DURING_DEPLOYMENT=true"
  },
  {
    "path": "app/backend/.dockerenv.example",
    "chars": 1505,
    "preview": "##################\n#### Backend URL\n##################\nQA_URL=\"http://localhost:7071/api/QuestionAnswering?code=\"\nVERIFY"
  },
  {
    "path": "app/backend/.dockerignore",
    "chars": 57,
    "preview": ".env\n.env.example\n.env.prod\n.dockerenv\n.dockerenv.example"
  },
  {
    "path": "app/backend/.dockerrun",
    "chars": 578,
    "preview": "-- Run following from /app/frontend directory\nnpm run build\n\n-- Run following from /app/backend directory\n-- Docker buil"
  },
  {
    "path": "app/backend/Dockerfile",
    "chars": 418,
    "preview": "FROM mcr.microsoft.com/azure-functions/python:4-python3.11\n\nRUN apt-get update\n\nENV AzureWebJobsScriptRoot=/home/site/ww"
  },
  {
    "path": "app/backend/Utilities/ChatGptStream.py",
    "chars": 21739,
    "preview": "from Utilities.modelHelper import numTokenFromMessages, getTokenLimit\nfrom typing import Any, Sequence\nimport logging, j"
  },
  {
    "path": "app/backend/Utilities/fmp.py",
    "chars": 41694,
    "preview": "import requests\nimport typing\nimport logging\n\nCONNECT_TIMEOUT = 5\nREAD_TIMEOUT = 30\nBASE_URL_v3: str = \"https://financia"
  },
  {
    "path": "app/backend/Utilities/modelHelper.py",
    "chars": 1640,
    "preview": "import tiktoken\n\nMODELS_2_TOKEN_LIMITS = {\n    \"gpt-35-turbo\": 4000,\n    \"gpt-3.5-turbo\": 4000,\n    \"gpt-35-turbo-16k\": "
  },
  {
    "path": "app/backend/app.py",
    "chars": 32348,
    "preview": "from flask import Flask, request, jsonify, make_response, Response\nimport requests\nimport json\nfrom dotenv import load_d"
  },
  {
    "path": "app/backend/requirements.txt",
    "chars": 647,
    "preview": "pinecone-client==3.0.2\npyodbc==5.0.1\nredis==5.0.1\nazure-functions-durable==1.2.8\nazure-functions==1.18.0\nyfinance==0.2.3"
  },
  {
    "path": "app/frontend/env.example",
    "chars": 294,
    "preview": "VITE_PINECONE_KEY=\"\"  not used for now\nVITE_PINECONE_ENV=\"\"  not used for now\nVITE_AZUREOPENAI_KEY=\"\"  not used for now\n"
  },
  {
    "path": "app/frontend/index.html",
    "chars": 360,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"/f"
  },
  {
    "path": "app/frontend/package.json",
    "chars": 1710,
    "preview": "{\n  \"name\": \"chatpdf\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n  "
  },
  {
    "path": "app/frontend/src/.deployment",
    "chars": 44,
    "preview": "[config]\nSCM_DO_BUILD_DURING_DEPLOYMENT=true"
  },
  {
    "path": "app/frontend/src/api/api.ts",
    "chars": 17841,
    "preview": "import { AskRequest, AskResponse, ChatRequest, ChatResponse, SpeechTokenResponse, SqlResponse,\n  EvalResponse, UserInfo}"
  },
  {
    "path": "app/frontend/src/api/chat.ts",
    "chars": 3568,
    "preview": "import { PineconeStore } from \"langchain/vectorstores\";\nimport { OpenAIEmbeddings } from 'langchain/embeddings'\nimport {"
  },
  {
    "path": "app/frontend/src/api/index.ts",
    "chars": 72,
    "preview": "export * from \"./api\";\nexport * from \"./models\";\nexport * from \"./chat\";"
  },
  {
    "path": "app/frontend/src/api/models.ts",
    "chars": 3269,
    "preview": "import { atom } from 'jotai';\n\nexport const enum Approaches {\n    RetrieveThenRead = \"rtr\",\n    ReadRetrieveRead = \"rrr\""
  },
  {
    "path": "app/frontend/src/api/util.ts",
    "chars": 1232,
    "preview": "import { OpenAI } from 'langchain/llms'\nimport { LLMChain, ChatVectorDBQAChain, loadQAChain } from 'langchain/chains'\nim"
  },
  {
    "path": "app/frontend/src/components/AnalysisPanel/AnalysisPanel.module.css",
    "chars": 181,
    "preview": ".thoughtProcess {\n    font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\", monospace;\n    word-wrap: br"
  },
  {
    "path": "app/frontend/src/components/AnalysisPanel/AnalysisPanel.tsx",
    "chars": 2356,
    "preview": "import { Pivot, PivotItem } from \"@fluentui/react\";\nimport DOMPurify from \"dompurify\";\n\nimport styles from \"./AnalysisPa"
  },
  {
    "path": "app/frontend/src/components/AnalysisPanel/AnalysisPanelTabs.tsx",
    "chars": 153,
    "preview": "export enum AnalysisPanelTabs {\n    ThoughtProcessTab = \"thoughtProcess\",\n    SupportingContentTab = \"supportingContent\""
  },
  {
    "path": "app/frontend/src/components/AnalysisPanel/index.tsx",
    "chars": 70,
    "preview": "export * from \"./AnalysisPanel\";\nexport * from \"./AnalysisPanelTabs\";\n"
  },
  {
    "path": "app/frontend/src/components/Answer/Answer.module.css",
    "chars": 2133,
    "preview": ".answerContainer {\n    padding: 20px;\n    background: rgb(249, 249, 249);\n    border-radius: 8px;\n    box-shadow: 0px 2p"
  },
  {
    "path": "app/frontend/src/components/Answer/Answer.tsx",
    "chars": 5442,
    "preview": "import { useMemo } from \"react\";\nimport { Stack, IconButton } from \"@fluentui/react\";\nimport DOMPurify from \"dompurify\";"
  },
  {
    "path": "app/frontend/src/components/Answer/AnswerChat.tsx",
    "chars": 1012,
    "preview": "import { useMemo } from \"react\";\nimport { Stack } from \"@fluentui/react\";\nimport DOMPurify from \"dompurify\";\nimport Reac"
  },
  {
    "path": "app/frontend/src/components/Answer/AnswerError.tsx",
    "chars": 717,
    "preview": "import { Stack, PrimaryButton } from \"@fluentui/react\";\nimport { ErrorCircle24Regular } from \"@fluentui/react-icons\";\n\ni"
  },
  {
    "path": "app/frontend/src/components/Answer/AnswerIcon.tsx",
    "chars": 210,
    "preview": "import { Sparkle28Filled } from \"@fluentui/react-icons\";\n\nexport const AnswerIcon = () => {\n    return <Sparkle28Filled "
  },
  {
    "path": "app/frontend/src/components/Answer/AnswerLoading.tsx",
    "chars": 813,
    "preview": "import { Stack } from \"@fluentui/react\";\nimport { animated, useSpring } from \"@react-spring/web\";\n\nimport styles from \"."
  },
  {
    "path": "app/frontend/src/components/Answer/AnswerParser.tsx",
    "chars": 4071,
    "preview": "import { renderToStaticMarkup } from \"react-dom/server\";\nimport { getCitationFilePath } from \"../../api\";\nimport { Link "
  },
  {
    "path": "app/frontend/src/components/Answer/index.ts",
    "chars": 119,
    "preview": "export * from \"./Answer\";\nexport * from \"./AnswerLoading\";\nexport * from \"./AnswerError\";\nexport * from \"./AnswerChat\";"
  },
  {
    "path": "app/frontend/src/components/ClearChatButton/ClearChatButton.module.css",
    "chars": 127,
    "preview": ".container {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    cursor: pointer;\n}\n\n.disabled {\n    opacity: "
  },
  {
    "path": "app/frontend/src/components/ClearChatButton/ClearChatButton.tsx",
    "chars": 564,
    "preview": "import { Text } from \"@fluentui/react\";\nimport { Delete24Regular } from \"@fluentui/react-icons\";\n\nimport styles from \"./"
  },
  {
    "path": "app/frontend/src/components/ClearChatButton/index.tsx",
    "chars": 35,
    "preview": "export * from \"./ClearChatButton\";\n"
  },
  {
    "path": "app/frontend/src/components/DataTable/DataTable.module.css",
    "chars": 501,
    "preview": ".questionInputContainer {\n    border-radius: 8px;\n    box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.14), 0px 0px 2px rgba(0, "
  },
  {
    "path": "app/frontend/src/components/DataTable/DataTable.tsx",
    "chars": 1347,
    "preview": "interface DataTableProps {\n\tdata?: Record<string, string | boolean | number>[];\n}\n\nexport const DataTable = ({data}: Dat"
  },
  {
    "path": "app/frontend/src/components/DataTable/index.ts",
    "chars": 29,
    "preview": "export * from \"./DataTable\";\n"
  },
  {
    "path": "app/frontend/src/components/Example/Example.module.css",
    "chars": 723,
    "preview": ".examplesNavList {\n    list-style: none;\n    padding-left: 0;\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n   "
  },
  {
    "path": "app/frontend/src/components/Example/Example.tsx",
    "chars": 369,
    "preview": "import styles from \"./Example.module.css\";\n\ninterface Props {\n    text: string;\n    value: string;\n    onClick: (value: "
  },
  {
    "path": "app/frontend/src/components/Example/ExampleList.tsx",
    "chars": 1053,
    "preview": "import { Example } from \"./Example\";\n\nimport styles from \"./Example.module.css\";\n\nexport type ExampleModel = {\n    text:"
  },
  {
    "path": "app/frontend/src/components/Example/index.tsx",
    "chars": 58,
    "preview": "export * from \"./Example\";\nexport * from \"./ExampleList\";\n"
  },
  {
    "path": "app/frontend/src/components/MediaCard/MediaCard.module.css",
    "chars": 197,
    "preview": ".container {\n    align-items: left;\n    gap: 6px;\n    cursor: pointer;\n    background: white;\n}\n\n.disabled {\n    opacity"
  },
  {
    "path": "app/frontend/src/components/MediaCard/MediaCard.tsx",
    "chars": 1175,
    "preview": "import {\n    DocumentCard,\n    DocumentCardDetails,\n    DocumentCardPreview,\n    DocumentCardTitle,\n    DocumentCardType"
  },
  {
    "path": "app/frontend/src/components/MediaCard/index.tsx",
    "chars": 29,
    "preview": "export * from \"./MediaCard\";\n"
  },
  {
    "path": "app/frontend/src/components/QuestionInput/QuestionInput.module.css",
    "chars": 557,
    "preview": ".questionInputContainer {\n    border-radius: 8px;\n    box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.14), 0px 0px 2px rgba(0, "
  },
  {
    "path": "app/frontend/src/components/QuestionInput/QuestionInput.tsx",
    "chars": 4206,
    "preview": "import { SetStateAction, useState } from \"react\";\nimport { Stack, TextField } from \"@fluentui/react\";\nimport { Mic28Fill"
  },
  {
    "path": "app/frontend/src/components/QuestionInput/index.ts",
    "chars": 33,
    "preview": "export * from \"./QuestionInput\";\n"
  },
  {
    "path": "app/frontend/src/components/QuestionListButton/QuestionListButton.module.css",
    "chars": 94,
    "preview": ".container {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    cursor: pointer;\n}\n"
  },
  {
    "path": "app/frontend/src/components/QuestionListButton/QuestionListButton.tsx",
    "chars": 496,
    "preview": "import { Text } from \"@fluentui/react\";\nimport { Settings24Regular } from \"@fluentui/react-icons\";\n\nimport styles from \""
  },
  {
    "path": "app/frontend/src/components/QuestionListButton/index.tsx",
    "chars": 38,
    "preview": "export * from \"./QuestionListButton\";\n"
  },
  {
    "path": "app/frontend/src/components/RenameButton/RenameButton.module.css",
    "chars": 94,
    "preview": ".container {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    cursor: pointer;\n}\n"
  },
  {
    "path": "app/frontend/src/components/RenameButton/RenameButton.tsx",
    "chars": 493,
    "preview": "import { Text } from \"@fluentui/react\";\nimport { Rename24Regular } from \"@fluentui/react-icons\";\n\nimport styles from \"./"
  },
  {
    "path": "app/frontend/src/components/RenameButton/index.tsx",
    "chars": 32,
    "preview": "export * from \"./RenameButton\";\n"
  },
  {
    "path": "app/frontend/src/components/SessionButton/SessionButton.module.css",
    "chars": 94,
    "preview": ".container {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    cursor: pointer;\n}\n"
  },
  {
    "path": "app/frontend/src/components/SessionButton/SessionButton.tsx",
    "chars": 474,
    "preview": "import { Text } from \"@fluentui/react\";\nimport { Add24Regular } from \"@fluentui/react-icons\";\n\nimport styles from \"./Ses"
  },
  {
    "path": "app/frontend/src/components/SessionButton/index.tsx",
    "chars": 33,
    "preview": "export * from \"./SessionButton\";\n"
  },
  {
    "path": "app/frontend/src/components/SettingsButton/SettingsButton.module.css",
    "chars": 94,
    "preview": ".container {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    cursor: pointer;\n}\n"
  },
  {
    "path": "app/frontend/src/components/SettingsButton/SettingsButton.tsx",
    "chars": 493,
    "preview": "import { Text } from \"@fluentui/react\";\nimport { Settings24Regular } from \"@fluentui/react-icons\";\n\nimport styles from \""
  },
  {
    "path": "app/frontend/src/components/SettingsButton/index.tsx",
    "chars": 34,
    "preview": "export * from \"./SettingsButton\";\n"
  },
  {
    "path": "app/frontend/src/components/SqlViewer/SqlViewer.tsx",
    "chars": 611,
    "preview": "import { Light as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { atomOneDark as theme } from \"react-synta"
  },
  {
    "path": "app/frontend/src/components/SqlViewer/index.tsx",
    "chars": 29,
    "preview": "export * from \"./SqlViewer\";\n"
  },
  {
    "path": "app/frontend/src/components/SupportingContent/SupportingContent.module.css",
    "chars": 564,
    "preview": ".supportingContentNavList {\n    list-style: none;\n    padding-left: 5px;\n    display: flex;\n    flex-direction: column;\n"
  },
  {
    "path": "app/frontend/src/components/SupportingContent/SupportingContent.tsx",
    "chars": 794,
    "preview": "import { parseSupportingContentItem } from \"./SupportingContentParser\";\n\nimport styles from \"./SupportingContent.module."
  },
  {
    "path": "app/frontend/src/components/SupportingContent/SupportingContentParser.ts",
    "chars": 486,
    "preview": "type ParsedSupportingContentItem = {\n    title: string;\n    content: string;\n};\n\nexport function parseSupportingContentI"
  },
  {
    "path": "app/frontend/src/components/SupportingContent/index.ts",
    "chars": 37,
    "preview": "export * from \"./SupportingContent\";\n"
  },
  {
    "path": "app/frontend/src/components/Symbols/Amex.tsx",
    "chars": 65723,
    "preview": "export const Amex = {\n    Tickers : [\n      {\n        \"key\": \"AAMC\",\n        \"text\": \"Altisource Asset Management Corp C"
  },
  {
    "path": "app/frontend/src/components/Symbols/Nasdaq.tsx",
    "chars": 974564,
    "preview": "export const Nasdaq = {\n    Tickers : [\n      {\n        \"key\": \"AACG\",\n        \"text\": \"ATA Creativity Global American D"
  },
  {
    "path": "app/frontend/src/components/Symbols/Nyse.tsx",
    "chars": 566635,
    "preview": "export const Nyse = {\n    Tickers : [\n      \n  {\n    \"key\": \"AA\",\n    \"text\": \"Alcoa Corporation Common Stock \",\n    \"co"
  },
  {
    "path": "app/frontend/src/components/UserChatMessage/UserChatMessage.module.css",
    "chars": 333,
    "preview": ".container {\n    display: flex;\n    justify-content: flex-end;\n    margin-bottom: 20px;\n    max-width: 80%;\n    margin-l"
  },
  {
    "path": "app/frontend/src/components/UserChatMessage/UserChatMessage.tsx",
    "chars": 292,
    "preview": "import styles from \"./UserChatMessage.module.css\";\n\ninterface Props {\n    message: string;\n}\n\nexport const UserChatMessa"
  },
  {
    "path": "app/frontend/src/components/UserChatMessage/index.ts",
    "chars": 35,
    "preview": "export * from \"./UserChatMessage\";\n"
  },
  {
    "path": "app/frontend/src/index.css",
    "chars": 417,
    "preview": "* {\n    box-sizing: border-box;\n}\n\nhtml,\nbody {\n    height: 100%;\n    margin: 0;\n    padding: 0;\n}\n\nhtml {\n    backgroun"
  },
  {
    "path": "app/frontend/src/index.tsx",
    "chars": 1261,
    "preview": "import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { HashRouter, Routes, Route } from \"react-rou"
  },
  {
    "path": "app/frontend/src/pages/NoPage.tsx",
    "chars": 75,
    "preview": "const NoPage = () => {\n    return <h1>404</h1>;\n};\n\nexport default NoPage;\n"
  },
  {
    "path": "app/frontend/src/pages/admin/Admin.module.css",
    "chars": 1828,
    "preview": ".container {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    margin-top: 20px;\n}\n\n.chatRoot {\n    flex: "
  },
  {
    "path": "app/frontend/src/pages/admin/Admin.tsx",
    "chars": 26304,
    "preview": "import { useMemo, useState, useEffect } from \"react\";\nimport { DefaultButton, Spinner, PrimaryButton } from \"@fluentui/r"
  },
  {
    "path": "app/frontend/src/pages/chatgpt/ChatGpt.module.css",
    "chars": 2361,
    "preview": ".container {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    margin-top: 5px;\n}\n\n.chatRoot {\n    flex: 1"
  },
  {
    "path": "app/frontend/src/pages/chatgpt/ChatGpt.tsx",
    "chars": 99792,
    "preview": "import { useRef, useState, useEffect, useMemo } from \"react\";\nimport { Checkbox, Panel, DefaultButton, TextField, SpinBu"
  },
  {
    "path": "app/frontend/src/pages/help/Help.module.css",
    "chars": 1828,
    "preview": ".container {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    margin-top: 20px;\n}\n\n.chatRoot {\n    flex: "
  },
  {
    "path": "app/frontend/src/pages/help/Help.tsx",
    "chars": 286,
    "preview": "import { useState, useEffect } from \"react\";\n\nimport styles from \"./Help.module.css\";\n//import ReadmePath from './README"
  },
  {
    "path": "app/frontend/src/pages/help/README.md",
    "chars": 3857,
    "preview": "# ChatGPT + Enterprise data with Azure OpenAI\n\nThis accelerator demonstrates a few approaches for creating ChatGPT-like "
  },
  {
    "path": "app/frontend/src/pages/layout/Layout.module.css",
    "chars": 1168,
    "preview": ".layout {\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n}\n\n.header {\n    background-color: #222222;\n "
  },
  {
    "path": "app/frontend/src/pages/layout/Layout.tsx",
    "chars": 3474,
    "preview": "import { useRef, useState, useEffect } from \"react\";\nimport { Outlet, NavLink, Link } from \"react-router-dom\";\n\nimport g"
  },
  {
    "path": "app/frontend/src/pages/oneshot/OneShot.module.css",
    "chars": 3418,
    "preview": ".oneshotContainer {\n    /* display: flex; */\n    flex: 1;\n    flex-direction: column;\n    align-items: center;\n}\n\n.onesh"
  },
  {
    "path": "app/frontend/src/pages/oneshot/OneShot.tsx",
    "chars": 43224,
    "preview": "import { useRef, useState, useEffect } from \"react\";\nimport { Checkbox, ChoiceGroup, IChoiceGroupOption, Panel, DefaultB"
  },
  {
    "path": "app/frontend/src/pages/upload/Upload.module.css",
    "chars": 1803,
    "preview": ".container {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    margin-top: 20px;\n}\n\n.chatRoot {\n    flex: "
  },
  {
    "path": "app/frontend/src/pages/upload/Upload.tsx",
    "chars": 42395,
    "preview": "import { useState, useEffect } from \"react\";\nimport { DefaultButton, Spinner, PrimaryButton } from \"@fluentui/react\";\nim"
  },
  {
    "path": "app/frontend/src/vite-env.d.ts",
    "chars": 38,
    "preview": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "app/frontend/tsconfig.json",
    "chars": 565,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"DOM\", \"DOM.Iterable\","
  },
  {
    "path": "app/frontend/vite.config.ts",
    "chars": 1992,
    "preview": "import { defineConfig } from \"vite\";\nimport react from \"@vitejs/plugin-react\";\nimport Markdown from '@pity/vite-plugin-r"
  },
  {
    "path": "azure.yaml",
    "chars": 652,
    "preview": "# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json\n\nnam"
  },
  {
    "path": "chroma-docker-compose.yml",
    "chars": 1123,
    "preview": "version: '3.9'\n\nnetworks:\n  net:\n    driver: bridge\n\nservices:\n  server:\n    build:\n      context: .\n      dockerfile: D"
  },
  {
    "path": "docs/Auto Evaluator.excalidraw",
    "chars": 507445,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"arr"
  },
  {
    "path": "docs/Azure Architecture.excalidraw",
    "chars": 437652,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Azure Architecture_1.excalidraw",
    "chars": 1182792,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Chatbot.excalidraw",
    "chars": 142111,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Cognitive Search and ChatGpt.excalidraw",
    "chars": 48570,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Import and Qa.excalidraw",
    "chars": 137067,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"id\": \"0QBnM"
  },
  {
    "path": "docs/Ingestion Process.excalidraw",
    "chars": 20165,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Ingestion and Qa.excalidraw",
    "chars": 40429,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/PIB.excalidraw",
    "chars": 407926,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/QA with Cache.excalidraw",
    "chars": 338144,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Query Process.excalidraw",
    "chars": 29181,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/SpeechAnalytics.excalidraw",
    "chars": 25121,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/SpeechAnalyticsDetails.excalidraw",
    "chars": 41858,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Typical Query Process.excalidraw",
    "chars": 23312,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Use-cases.excalidraw",
    "chars": 39288,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"rec"
  },
  {
    "path": "docs/Video Indexer Gpt.excalidraw",
    "chars": 259887,
    "preview": "{\n  \"type\": \"excalidraw\",\n  \"version\": 2,\n  \"source\": \"https://excalidraw.com\",\n  \"elements\": [\n    {\n      \"type\": \"ell"
  },
  {
    "path": "infra/abbreviations.json",
    "chars": 5072,
    "preview": "{\n  \"analysisServicesServers\": \"as\",\n  \"apiManagementService\": \"apim-\",\n  \"appConfigurationConfigurationStores\": \"appcs-"
  },
  {
    "path": "infra/core/ai/cognitiveservices.bicep",
    "chars": 1205,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\nparam customSubDomainName str"
  },
  {
    "path": "infra/core/host/appservice.bicep",
    "chars": 3808,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\n// Reference Properties\nparam"
  },
  {
    "path": "infra/core/host/appserviceplan.bicep",
    "chars": 421,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\nparam kind string = ''\nparam "
  },
  {
    "path": "infra/core/host/function.bicep",
    "chars": 4637,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\nparam emptyFunction bool = tru"
  },
  {
    "path": "infra/core/monitor/applicationinsights.bicep",
    "chars": 491,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\nresource applicationInsights "
  },
  {
    "path": "infra/core/search/search-services.bicep",
    "chars": 1106,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\nparam sku object = {\n  name: "
  },
  {
    "path": "infra/core/storage/storage-account.bicep",
    "chars": 2415,
    "preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\n@allowed([ 'Hot', 'Cool', 'Pr"
  },
  {
    "path": "infra/main.bicep",
    "chars": 7243,
    "preview": "targetScope = 'subscription'\n\n@minLength(1)\n@description('Primary location for all resources')\nparam location string\n\n@m"
  },
  {
    "path": "infra/main.parameters.json",
    "chars": 525,
    "preview": "{\n  \"$schema\": \"https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#\",\n  \"contentVersion\": "
  },
  {
    "path": "milvus-standalone-docker-compose.yml",
    "chars": 1434,
    "preview": "version: '3.5'\n\nservices:\n  etcd:\n    container_name: milvus-etcd\n    image: quay.io/coreos/etcd:v3.5.5\n    environment:"
  },
  {
    "path": "weavite-docker-compose.yml",
    "chars": 1342,
    "preview": "---\nversion: '3.4'\nservices:\n  weaviate:\n    command:\n    - --host\n    - 0.0.0.0\n    - --port\n    - '8080'\n    - --schem"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the akshata29/entaoai GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 179 files (6.9 MB), approximately 1.8M tokens, and a symbol index with 328 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!