diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 38901e12..425a33ca 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -17,9 +17,3 @@ repos:
hooks:
- id: isort
args: [ "--profile", "black", "--filter-files" ]
-
- - repo: https://github.com/odwyersoftware/brunette
- rev: 238bead5ec5c58935d6bb12c70f435f70b2bf785
- hooks:
- - id: brunette
- args: [ '--config=setup.cfg' ]
diff --git a/docs/CNAME b/docs/CNAME
deleted file mode 100644
index ad1c2a23..00000000
--- a/docs/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-docs.vanna.ai
\ No newline at end of file
diff --git a/docs/databases.md b/docs/databases.md
deleted file mode 100644
index 6924d34c..00000000
--- a/docs/databases.md
+++ /dev/null
@@ -1,142 +0,0 @@
-# How to use Vanna with various databases
-
-You can use Vanna with any database that you can connect to via Python. Here are some examples of how to connect to various databases.
-
-All you have to do is provide Vanna with a function that takes in a SQL query and returns a Pandas DataFrame. Here are some examples of how to do that.
-
-## **PostgreSQL**
-
-```python
-import pandas as pd
-import psycopg2
-
-conn_details = {...} # fill this with your connection details
-conn_postgres = psycopg2.connect(**conn_details)
-
-def run_sql_postgres(sql: str) -> pd.DataFrame:
- df = pd.read_sql_query(sql, conn_postgres)
- return df
-
-vn.run_sql = run_sql_postgres
-```
-
-## **Snowflake**
-
-We have a built-in function for Snowflake, so you don't need to write your own.
-
-```python
-vn.connect_to_snowflake(account='my-account', username='my-username', password='my-password', database='my-database')
-```
-
-```python
-import pandas as pd
-from snowflake.connector.pandas_tools import pd_read_sql
-from snowflake.connector import connect
-
-conn_details = {...} # fill this with your connection details
-conn_snowflake = connect(**conn_details)
-
-def run_sql_snowflake(sql: str) -> pd.DataFrame:
- df = pd_read_sql(sql, conn_snowflake)
- return df
-
-vn.run_sql = run_sql_snowflake
-```
-
-## **Google BigQuery**
-
-```python
-from google.cloud import bigquery
-import pandas as pd
-
-project_id = 'your-project-id' # replace with your Project ID
-client_bigquery = bigquery.Client(project=project_id)
-
-def run_sql_bigquery(sql: str) -> pd.DataFrame:
- df = client_bigquery.query(sql).to_dataframe()
- return df
-
-vn.run_sql = run_sql_bigquery
-```
-
-## **Amazon Athena**
-
-```python
-import pandas as pd
-from pyathena import connect
-
-conn_details = {...} # fill this with your connection details
-conn_athena = connect(**conn_details)
-
-def run_sql_athena(sql: str) -> pd.DataFrame:
- df = pd.read_sql(sql, conn_athena)
- return df
-
-vn.run_sql = run_sql_athena
-```
-
-## **Amazon Redshift**
-
-```python
-import pandas as pd
-import psycopg2
-
-conn_details = {...} # fill this with your connection details
-conn_redshift = psycopg2.connect(**conn_details)
-
-def run_sql_redshift(sql: str) -> pd.DataFrame:
- df = pd.read_sql_query(sql, conn_redshift)
- return df
-
-vn.run_sql = run_sql_redshift
-```
-
-Sure, here is an example for Google Cloud SQL using the MySQL connector:
-
-## **Google Cloud SQL (MySQL)**
-
-```python
-import pandas as pd
-import mysql.connector
-
-conn_details = {...} # fill this with your connection details
-conn_google_cloud_sql = mysql.connector.connect(**conn_details)
-
-def run_sql_google_cloud_sql(sql: str) -> pd.DataFrame:
- df = pd.read_sql(sql, conn_google_cloud_sql)
- return df
-```
-
-Note: Google Cloud SQL supports MySQL, PostgreSQL, and SQL Server. The above example uses MySQL. If you are using PostgreSQL or SQL Server, you should use the appropriate connector.
-
-## **SQLite**
-
-```python
-import sqlite3
-import pandas as pd
-
-db_path = 'path_to_your_db' # replace with your SQLite DB path
-conn_sqlite = sqlite3.connect(db_path)
-
-def run_sql_sqlite(sql: str) -> pd.DataFrame:
- df = pd.read_sql_query(sql, conn_sqlite)
- return df
-
-vn.run_sql = run_sql_sqlite
-```
-
-## **Microsoft SQL Server**
-
-```python
-import pandas as pd
-import pyodbc
-
-conn_details = {...} # fill this with your connection details
-conn_sql_server = pyodbc.connect(**conn_details)
-
-def run_sql_sql_server(sql: str) -> pd.DataFrame:
- df = pd.read_sql(sql, conn_sql_server)
- return df
-
-vn.run_sql = run_sql_sql_server
-```
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index 02d2fc63..00000000
--- a/docs/index.md
+++ /dev/null
@@ -1,239 +0,0 @@
-# Vanna.AI - Personalized AI SQL Agent
-
-**Let Vanna.AI write your nasty SQL for you**. Vanna is a Python based AI SQL agent trained on your schema that writes complex SQL in seconds. `pip install vanna` to get started now.
-
-
-
-## An example
-
-A business user asks you **"who are the top 2 customers in each region?"**. Right in the middle of lunch. And they need it for a presentation this afternoon. 😡😡😡
-
-### The old way 😡 😫 💩
-Simple question to ask, not so fun to answer. You spend over an hour a) finding the tables, b) figuring out out the joins, c) look up the syntax for ranking, d) putting this into a CTE, e) filtering by rank, and f) choosing the correct metrics. Finally, you come up with this ugly mess -
-
-```sql
-with ranked_customers as (SELECT c.c_name as customer_name,
- r.r_name as region_name,
- row_number() OVER (PARTITION BY r.r_name
- ORDER BY sum(l.l_quantity * l.l_extendedprice) desc) as rank
- FROM snowflake_sample_data.tpch_sf1.customer c join snowflake_sample_data.tpch_sf1.orders o
- ON c.c_custkey = o.o_custkey join snowflake_sample_data.tpch_sf1.lineitem l
- ON o.o_orderkey = l.l_orderkey join snowflake_sample_data.tpch_sf1.nation n
- ON c.c_nationkey = n.n_nationkey join snowflake_sample_data.tpch_sf1.region r
- ON n.n_regionkey = r.r_regionkey
- GROUP BY customer_name, region_name)
-SELECT region_name,
- customer_name
-FROM ranked_customers
-WHERE rank <= 2;
-```
-
-And you had to skip your lunch. **HANGRY!**
-
-### The Vanna way 😍 🌟 🚀
-With Vanna, you train up a custom model on your data warehouse, and simply enter this in your Jupyter Notebook -
-
-```python
-import vanna as vn
-vn.set_model('your-model')
-vn.ask('who are the top 2 customers in each region?')
-```
-
-Vanna generates that nasty SQL above for you, runs it (locally & securely) and gives you back a Dataframe in seconds:
-
-| region_name | customer_name | total_sales |
-| ----------- | ------------- | ----------- |
-| ASIA | Customer#000000001 | 68127.72 |
-| ASIA | Customer#000000002 | 65898.69 |
-...
-
-And you ate your lunch in peace. **YUMMY!**
-
-## How Vanna works
-Vanna works in two easy steps - train a model on your data, and then ask questions.
-
-1. **Train a model on your data**.
-2. **Ask questions**.
-
-When you ask a question, we utilize a custom model for your dataset to generate SQL, as seen below. Your model performance and accuracy depends on the quality and quantity of training data you use to train your model.
-
-
-
-
-## Why Vanna?
-
-1. **High accuracy on complex datasets.**
- - Vanna’s capabilities are tied to the training data you give it
- - More training data means better accuracy for large and complex datasets
-2. **Secure and private.**
- - Your database contents are never sent to Vanna’s servers
- - We only see the bare minimum - schemas & queries.
-3. **Isolated, custom model.**
- - You train a custom model specific to your database and your schema.
- - Nobody else can use your model or view your model’s training data unless you choose to add members to your model or make it public
- - We use a combination of third-party foundational models (OpenAI, Google) and our own LLM.
-4. **Self learning.**
- - As you use Vanna more, your model continuously improves as we augment your training data
-5. **Supports many databases.**
- - We have out-of-the-box support Snowflake, BigQuery, Postgres
- - You can easily make a connector for any [database](https://docs.vanna.ai/databases/)
-6. **Pretrained models.**
- - If you’re a data provider you can publish your models for anyone to use
- - As part of our roadmap, we are in the process of pre-training models for common datasets (Google Ads, Facebook ads, etc)
-7. **Choose your front end.**
- - Start in a Jupyter Notebook.
- - Expose to business users via Slackbot, web app, Streamlit app, or Excel plugin.
- - Even integrate in your web app for customers.
-
-## Getting started
-You can start by [automatically training Vanna (currently works for Snowflake)](https://docs.vanna.ai/notebooks/vn-train/) or add manual training data.
-
-### Train with DDL Statements
-If you prefer to manually train, you do not need to connect to a database. You can use the train function with other parmaeters like ddl
-
-
-```python
-vn.train(ddl="""
- CREATE TABLE IF NOT EXISTS my-table (
- id INT PRIMARY KEY,
- name VARCHAR(100),
- age INT
- )
-""")
-```
-
-### Train with Documentation
-Sometimes you may want to add documentation about your business terminology or definitions.
-
-```python
-vn.train(documentation="Our business defines OTIF score as the percentage of orders that are delivered on time and in full")
-```
-
-### Train with SQL
-You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.
-
-```python
-vn.train(sql="SELECT * FROM my-table WHERE name = 'John Doe'")
-```
-
-
-
-## Asking questions
-```python
-vn.ask("What are the top 10 customers by sales?")
-```
-
- SELECT c.c_name as customer_name,
- sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales
- FROM snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o
- ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c
- ON o.o_custkey = c.c_custkey
- GROUP BY customer_name
- ORDER BY total_sales desc limit 10;
-
-
-
-
-
-
-
-
-
-
CUSTOMER_NAME
-
TOTAL_SALES
-
-
-
-
-
0
-
Customer#000143500
-
6757566.0218
-
-
-
1
-
Customer#000095257
-
6294115.3340
-
-
-
2
-
Customer#000087115
-
6184649.5176
-
-
-
3
-
Customer#000131113
-
6080943.8305
-
-
-
4
-
Customer#000134380
-
6075141.9635
-
-
-
5
-
Customer#000103834
-
6059770.3232
-
-
-
6
-
Customer#000069682
-
6057779.0348
-
-
-
7
-
Customer#000102022
-
6039653.6335
-
-
-
8
-
Customer#000098587
-
6027021.5855
-
-
-
9
-
Customer#000064660
-
5905659.6159
-
-
-
-
-
-
-
-
-![png](notebooks/vn-ask_files/vn-ask_10_2.png)
-
-
-
-
-AI-generated follow-up questions:
-
-* What is the country name for each of the top 10 customers by sales?
-* How many orders does each of the top 10 customers by sales have?
-* What is the total revenue for each of the top 10 customers by sales?
-* What are the customer names and total sales for customers in the United States?
-* Which customers in Africa have returned the most parts with a gross value?
-* What are the total sales for the top 3 customers?
-* What are the customer names and total sales for the top 5 customers?
-* What are the total sales for customers in Europe?
-* How many customers are there in each country?
-
-## More resources
- - [Full Documentation](https://docs.vanna.ai)
- - [Website](https://vanna.ai)
- - [Slack channel for support](https://join.slack.com/t/vanna-ai/shared_invite/zt-1unu0ipog-iE33QCoimQiBDxf2o7h97w)
- - [LinkedIn](https://www.linkedin.com/company/vanna-ai/)
diff --git a/docs/intro-to-vanna.md b/docs/intro-to-vanna.md
deleted file mode 100644
index d935082e..00000000
--- a/docs/intro-to-vanna.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Intro to Vanna: A Python-based AI SQL co-pilot
-
-**TLDR**: We help data people that know Python write SQL faster using AI. [See our starter notebook here](notebooks/vn-ask.md).
-
-## The deluge of data
-
-We are bathing in an ocean of data, sitting in Snowflake or BigQuery, that is brimming with potential insights. Yet only a small fraction of people in an enterprise have the two skills required to harness the data —
-
-1. A solid comprehension of advanced SQL, and
-2. A comprehensive knowledge of the data structure & schema
-
-## The burden of being data-savvy
-
-Since you are reading this, chances are you are one of those fortunate few (data analysts, data scientists, data engineers, etc) with those abilities. It’s an invaluable skill, but you also get hit tons requests requiring you to write complex SQL queries. Annoying!
-
-## Introducing Vanna, the SQL co-pilot
-
-Vanna, at its core, is a co-pilot to Python & SQL savvy data people to to streamline the process of writing custom SQL on your company’s data warehouse using AI and LLMs. Most of our users use our Python package directly via Jupyter Notebooks ([starter notebook here](notebooks/vn-ask.md)) —
-
-```python
-sql = vn.generate_sql(question='What are the top 10 customers by Sales?')
-print(sql)
-```
-
-And here are the results —
-
-```sql
-SELECT customer_name,
- total_sales
-FROM (SELECT c.c_name as customer_name,
- sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales,
- row_number() OVER (ORDER BY sum(l.l_extendedprice * (1 - l.l_discount)) desc) as rank
- FROM snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o
- ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c
- ON o.o_custkey = c.c_custkey
- GROUP BY customer_name)
-WHERE rank <= 10;
-```
-
-## Getting started with Vanna in a Notebook
-
-Vanna is super easy to get started with —
-
-1. **Grab an API key** directly through the notebook
-2. **Train a custom model** on some past queries from your data warehouse
-3. **Ask questions in plain English** and get back SQL that you can run in your workflow
-
-Check out the full starter notebook here.
-
-Vanna is built with a privacy-first and security-first design — **your data never leaves your environment**.
-
-## Using Vanna with a Streamlit front end
-
-[Streamlit](https://streamlit.io/) is an open source pure Python front end. We have built an UI for Vanna on top of Streamlit, that you can either use directly (eg our hosted version), and that you can clone, download, optionally modify, and self host.
-
-If you choose to self host it, you can run Vanna with a UI without any data leaving your environment.
-
-![Image](https://miro.medium.com/v2/resize:fit:640/format:webp/1*PmScp647UWIaxUatib_4SQ.png)
-
-[Check out the Streamlit UI here](https://github.com/vanna-ai/vanna-streamlit).
-
-## Conclusion
-
-Vanna is a powerful tool for data people that know Python to write SQL faster using AI. It's easy to get started with, and you can even use it with a Streamlit front end for a more interactive experience. Best of all, it's built with a privacy-first and security-first design, so your data never leaves your environment. Give it a try and see how it can streamline your SQL writing process.
\ No newline at end of file
diff --git a/docs/onboarding.md b/docs/onboarding.md
deleted file mode 100644
index 8f15aa78..00000000
--- a/docs/onboarding.md
+++ /dev/null
@@ -1,30 +0,0 @@
-## What do I need to do to use **Vanna.AI**?
-Vanna.AI uses a combination of documentation and historical question and SQL pairs to generate SQL from natural language.
-
-### Step 1: Train **Vanna.AI**
-- Give **Vanna.AI** sample SQL
-- **Vanna.AI** will try to guess the question
-- Verify the question is correct
-```mermaid
-flowchart LR
- Generate[vn.generate_question]
- Question[Question]
- Verify{Is the question correct?}
- SQL --> Generate
- Generate --> Question
- Question --> Verify
- Verify -- Yes --> Store[vn.store_sql]
- Verify -- No --> Update[Update the Question]
- Update --> Store
-
-```
-
-### Step 2: Ask **Vanna.AI** a Question
-```mermaid
-flowchart LR
- Question[Question]
- Generate[vn.generate_sql]
- SQL[SQL]
- Question --> Generate
- Generate --> SQL
-```
diff --git a/docs/reference.md b/docs/reference.md
deleted file mode 100644
index fc4459af..00000000
--- a/docs/reference.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Vanna Package Full Reference
-::: vanna
- options:
- show_source: false
\ No newline at end of file
diff --git a/docs/sidebar.py b/docs/sidebar.py
deleted file mode 100644
index f6923a38..00000000
--- a/docs/sidebar.py
+++ /dev/null
@@ -1,130 +0,0 @@
-import yaml
-import sys
-import nbformat
-from nbconvert import HTMLExporter
-
-# Get the yaml file path from the command line
-file_path = sys.argv[1]
-
-# Get the directory to search for the .ipynb files from the command line
-notebook_dir = sys.argv[2]
-
-# Get the output directory from the command line
-output_dir = sys.argv[3]
-
-def generate_html(sidebar_data, current_path: str):
- html = '
\n'
- for entry in sidebar_data:
- html += '
\n'
- if 'sub_entries' in entry:
- # Dropdown menu with sub-entries
- html += f'\n'
- html += f'
\n'
- for sub_entry in entry['sub_entries']:
- html += f'
\n'
- highlighted = 'bg-indigo-100 dark:bg-indigo-700' if sub_entry['link'] == current_path else ''
- html += f'{sub_entry["title"]}\n'
- html += '
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-mistral-marqo.ipynb b/notebooks/bigquery-mistral-marqo.ipynb
deleted file mode 100644
index 942e6b23..00000000
--- a/notebooks/bigquery-mistral-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "fda9bc52-4501-5569-953e-0f1ebff8b5eb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Mistral via Mistral API, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "ba570f08-fcb8-5fa8-967b-7c3e400d610d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-mistral-other-vectordb.ipynb b/notebooks/bigquery-mistral-other-vectordb.ipynb
deleted file mode 100644
index 76f48f7a..00000000
--- a/notebooks/bigquery-mistral-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "95ac2fed-f042-5ddb-8a43-6055e0eb437b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Mistral via Mistral API, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a90edad1-d1a3-5c7c-83fb-e4455e43ea8c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-mistral-vannadb.ipynb b/notebooks/bigquery-mistral-vannadb.ipynb
deleted file mode 100644
index 029371cf..00000000
--- a/notebooks/bigquery-mistral-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "5320f104-0de6-5010-91da-eb74229e24f2", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Mistral via Mistral API, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "c9785756-74dc-5b62-9326-f3fcab07ba39", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-azure-chromadb.ipynb b/notebooks/bigquery-openai-azure-chromadb.ipynb
deleted file mode 100644
index f3843e1b..00000000
--- a/notebooks/bigquery-openai-azure-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "f439e467-8402-5423-9822-318c50b4831c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Azure OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "28490bf2-fdd2-54f5-985d-7de2b28c383e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-azure-marqo.ipynb b/notebooks/bigquery-openai-azure-marqo.ipynb
deleted file mode 100644
index a2554e99..00000000
--- a/notebooks/bigquery-openai-azure-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "724c58f8-dd5b-5cb7-a57d-e5feb8a34241", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Azure OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a1de0c40-6cae-5533-b5da-d1c009288950", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-azure-other-vectordb.ipynb b/notebooks/bigquery-openai-azure-other-vectordb.ipynb
deleted file mode 100644
index dc6c26ce..00000000
--- a/notebooks/bigquery-openai-azure-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "35185a9e-35a3-56fe-b403-fe55f23a645e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Azure OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "ae9f6a12-733a-59e3-8ea5-6e747247433c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-azure-vannadb.ipynb b/notebooks/bigquery-openai-azure-vannadb.ipynb
deleted file mode 100644
index a427e62b..00000000
--- a/notebooks/bigquery-openai-azure-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "fac5b46f-4116-58e0-889d-969818e7888b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Azure OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "909723d5-4778-5fc6-a3c2-1a0753650a1f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-standard-chromadb.ipynb b/notebooks/bigquery-openai-standard-chromadb.ipynb
deleted file mode 100644
index cfd6a89b..00000000
--- a/notebooks/bigquery-openai-standard-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "774bf429-d57a-589e-a818-f746cfbd1333", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "c034094a-80ae-5404-9716-f09b9c785fdd", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-standard-marqo.ipynb b/notebooks/bigquery-openai-standard-marqo.ipynb
deleted file mode 100644
index 164535aa..00000000
--- a/notebooks/bigquery-openai-standard-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "3e94b5c0-cfeb-5434-bfa1-23663e220b37", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "64d7f2aa-9641-5fba-b399-5f39b8ce0499", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-standard-other-vectordb.ipynb b/notebooks/bigquery-openai-standard-other-vectordb.ipynb
deleted file mode 100644
index fd15a798..00000000
--- a/notebooks/bigquery-openai-standard-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "e613d63a-b713-506f-8fb3-41b2c0a8e863", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "60917c76-36c7-55b7-b1c4-5c82915d0d08", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-standard-vannadb.ipynb b/notebooks/bigquery-openai-standard-vannadb.ipynb
deleted file mode 100644
index 4fb536ad..00000000
--- a/notebooks/bigquery-openai-standard-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "2475ecc1-295b-55a3-86b7-9b851bec073e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "3229453a-a3f6-5835-bf6b-e921f8abddbc", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-vanna-chromadb.ipynb b/notebooks/bigquery-openai-vanna-chromadb.ipynb
deleted file mode 100644
index bae34f4f..00000000
--- a/notebooks/bigquery-openai-vanna-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "525bec9c-32bd-5fc9-b211-7909d17a700e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI via Vanna.AI (Recommended), ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "93465ae8-5642-5cd8-abe5-20cce04e1c4f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-vanna-marqo.ipynb b/notebooks/bigquery-openai-vanna-marqo.ipynb
deleted file mode 100644
index 99a91e13..00000000
--- a/notebooks/bigquery-openai-vanna-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "8fadb025-65e0-5133-964e-2e7db62399c5", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI via Vanna.AI (Recommended), Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "0a0afd1f-06be-5e48-b6ff-44530dec901d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-vanna-other-vectordb.ipynb b/notebooks/bigquery-openai-vanna-other-vectordb.ipynb
deleted file mode 100644
index decdecf5..00000000
--- a/notebooks/bigquery-openai-vanna-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "987b3c74-035d-562b-9288-167f1a027019", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI via Vanna.AI (Recommended), Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "8468a145-ef33-5a52-b9dd-f0f5280b0e99", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-openai-vanna-vannadb.ipynb b/notebooks/bigquery-openai-vanna-vannadb.ipynb
deleted file mode 100644
index 78ba400e..00000000
--- a/notebooks/bigquery-openai-vanna-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "67a26e9c-c6fb-56bc-a8f2-fdcb5294e46e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using OpenAI via Vanna.AI (Recommended), Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "07242f18-8018-5856-96bd-02f96b0dd5cc", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-other-llm-chromadb.ipynb b/notebooks/bigquery-other-llm-chromadb.ipynb
deleted file mode 100644
index 0ec687f3..00000000
--- a/notebooks/bigquery-other-llm-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "670a54ff-01bf-5be5-bbd3-b8f7b39b67c8", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Other LLM, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "94a97b34-d9b6-56f6-a3ba-3881ab640c9f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-other-llm-marqo.ipynb b/notebooks/bigquery-other-llm-marqo.ipynb
deleted file mode 100644
index 50a6355f..00000000
--- a/notebooks/bigquery-other-llm-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "317a612f-84c0-5133-85f1-83088d93d709", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Other LLM, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "0c856b13-a416-54c7-bee1-22b1644680c0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-other-llm-other-vectordb.ipynb b/notebooks/bigquery-other-llm-other-vectordb.ipynb
deleted file mode 100644
index 3247f454..00000000
--- a/notebooks/bigquery-other-llm-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "329a34b6-ac61-5e7f-bd53-4dea75316751", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Other LLM, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "46ab4cb5-529f-5357-b72a-b6d215937d54", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/bigquery-other-llm-vannadb.ipynb b/notebooks/bigquery-other-llm-vannadb.ipynb
deleted file mode 100644
index 55255d39..00000000
--- a/notebooks/bigquery-other-llm-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "dab5efa9-fc30-5f4d-ae12-aca6cf81438d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for BigQuery using Other LLM, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "29381975-fd85-523b-9ede-7dd7b9b69cc0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "45b52fa3-74ea-5bb0-82e5-518731dbe674", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_bigquery(project_id='my-project')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/configure.ipynb b/notebooks/configure.ipynb
deleted file mode 100644
index 709d82cf..00000000
--- a/notebooks/configure.ipynb
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/connect-to-bigquery.ipynb b/notebooks/connect-to-bigquery.ipynb
deleted file mode 100644
index 39463a2e..00000000
--- a/notebooks/connect-to-bigquery.ipynb
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to use Vanna with BigQuery"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **When Running on GCP**\n",
- "If you're running on a machine hosted on GCP, you likely already have credentials so you just have to specify the project"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_bigquery(\n",
- " project_id=\"myprojectid\"\n",
- ")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **When Running on Google Colab**\n",
- "Use colab auth to authenticate with your google account and then specify the project"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from google.colab import auth\n",
- "auth.authenticate_user()\n",
- "\n",
- "vn.connect_to_bigquery(\n",
- " project_id=\"myprojectid\"\n",
- ")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Using a Credentials File\n",
- "You should only do this if you're running on a local machine and not on GCP or Colab"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_bigquery(\n",
- " project_id=\"myprojectid\",\n",
- " cred_file_path=\"path/to/credentials.json\",\n",
- ")"
- ]
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/connect-to-postgres.ipynb b/notebooks/connect-to-postgres.ipynb
deleted file mode 100644
index cc4450ad..00000000
--- a/notebooks/connect-to-postgres.ipynb
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to use Vanna with Postgres"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **PostgreSQL**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_postgres(\n",
- " host=\"hh-pgsql-public.ebi.ac.uk\",\n",
- " dbname=\"pfmegrnargs\",\n",
- " user=\"reader\",\n",
- " password=\"abcd1234\",\n",
- " port=5432\n",
- ")"
- ]
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/connect-to-snowflake.ipynb b/notebooks/connect-to-snowflake.ipynb
deleted file mode 100644
index 5657ccd5..00000000
--- a/notebooks/connect-to-snowflake.ipynb
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to use Vanna with Snowflake"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **Snowflake**\n",
- "\n",
- "We have a built-in function for Snowflake, so you don't need to write your own.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_snowflake(account='my-account', username='my-username', password='my-password', database='my-database')\n"
- ]
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/databases.ipynb b/notebooks/databases.ipynb
deleted file mode 100644
index 3f0c8fcb..00000000
--- a/notebooks/databases.ipynb
+++ /dev/null
@@ -1,176 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# How to use Vanna with various databases\n",
- "\n",
- "You can use Vanna with any database that you can connect to via Python. Here are some examples of how to connect to various databases.\n",
- "\n",
- "All you have to do is provide Vanna with a function that takes in a SQL query and returns a Pandas DataFrame. Here are some examples of how to do that."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **PostgreSQL**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import psycopg2\n",
- "\n",
- "conn_details = {...} # fill this with your connection details\n",
- "conn_postgres = psycopg2.connect(**conn_details)\n",
- "\n",
- "def run_sql_postgres(sql: str) -> pd.DataFrame:\n",
- " df = pd.read_sql_query(sql, conn_postgres)\n",
- " return df\n",
- "\n",
- "vn.run_sql = run_sql_postgres"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **Snowflake**\n",
- "\n",
- "We have a built-in function for Snowflake, so you don't need to write your own.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_snowflake(account='my-account', username='my-username', password='my-password', database='my-database')\n"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **Google BigQuery**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from google.cloud import bigquery\n",
- "import pandas as pd\n",
- "\n",
- "project_id = 'your-project-id' # replace with your Project ID\n",
- "client_bigquery = bigquery.Client(project=project_id)\n",
- "\n",
- "def run_sql_bigquery(sql: str) -> pd.DataFrame:\n",
- " df = client_bigquery.query(sql).to_dataframe()\n",
- " return df\n",
- "\n",
- "vn.run_sql = run_sql_bigquery"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **Amazon Athena**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "from pyathena import connect\n",
- "\n",
- "conn_details = {...} # fill this with your connection details\n",
- "conn_athena = connect(**conn_details)\n",
- "\n",
- "def run_sql_athena(sql: str) -> pd.DataFrame:\n",
- " df = pd.read_sql(sql, conn_athena)\n",
- " return df\n",
- "\n",
- "vn.run_sql = run_sql_athena"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## **Amazon Redshift**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import psycopg2\n",
- "\n",
- "conn_details = {...} # fill this with your connection details\n",
- "conn_redshift = psycopg2.connect(**conn_details)\n",
- "\n",
- "def run_sql_redshift(sql: str) -> pd.DataFrame:\n",
- " df = pd.read_sql_query(sql, conn_redshift)\n",
- " return df\n",
- "\n",
- "vn.run_sql = run_sql_redshift"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# **Others**\n",
- "\n",
- "You can follow a similar pattern to the others for your database. You just have to provide a `vn.run_sql` function that takes in a SQL query and returns a Pandas DataFrame."
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/getting-started.ipynb b/notebooks/getting-started.ipynb
deleted file mode 100644
index e28a8276..00000000
--- a/notebooks/getting-started.ipynb
+++ /dev/null
@@ -1,292 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Getting Started with Vanna\n",
- "This notebook shows how to use Vanna to ask questions from a database using sample data"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Install and Import Vanna"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install vanna"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna\n",
- "from vanna.remote import VannaDefault"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Log In to Vanna\n",
- "Vanna provides a function to get an API key. You'll get a code sent to your e-mail.\n",
- "You can save your API key for future usage so that you don't have to log in every time."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "api_key = vanna.get_api_key('my-email@example.com')"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set Model\n",
- "`chinook` is a public model that refers to the [Chinook sample database](https://www.sqlitetutorial.net/sqlite-sample-database/)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vanna_model_name = 'chinook' # This is the name of the RAG model. This is typically associated with a specific dataset.\n",
- "vn = VannaDefault(model=vanna_model_name, api_key=api_key)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Connect to the Database\n",
- "Here we're connecting to a SQLite database but you can connect to any SQL database."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_sqlite('https://vanna.ai/Chinook.sqlite')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Ask Questions\n",
- "Now we're going to use `vn.ask` to ask questions and it'll generate SQL, run the SQL, show the table, and generate a chart"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "SELECT a.name,\n",
- " sum(il.quantity) as totalsales\n",
- "FROM artist a\n",
- " INNER JOIN album al\n",
- " ON a.artistid = al.artistid\n",
- " INNER JOIN track t\n",
- " ON al.albumid = t.albumid\n",
- " INNER JOIN invoiceline il\n",
- " ON t.trackid = il.trackid\n",
- "GROUP BY a.name\n",
- "ORDER BY totalsales desc limit 5;\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
Name
\n",
- "
totalsales
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
Iron Maiden
\n",
- "
140
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
U2
\n",
- "
107
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
Metallica
\n",
- "
91
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
Led Zeppelin
\n",
- "
87
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
Os Paralamas Do Sucesso
\n",
- "
45
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " Name totalsales\n",
- "0 Iron Maiden 140\n",
- "1 U2 107\n",
- "2 Metallica 91\n",
- "3 Led Zeppelin 87\n",
- "4 Os Paralamas Do Sucesso 45"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAPoCAYAAABkvZZOAAAgAElEQVR4XuzdC7h1V1kf+vcFuUi4REggXBSQgiGIgiAVBMSIRQpVERTr8QBVS70cpBdEaAH1gKhV2mKxaL1SpIUoSgHFEjWIYgkEL6gxagDhICkmXMKdgHnPM+JceWbWt/a35l63b665fvN5ePLtPeccc4zfO/b28b/HGjPDQYAAAQIECBAgQIAAAQIECBAgQIAAAQJ7KZB72WudJkCAAAECBAgQIECAAAECBAgQIECAAIEQ8JoEBAgQIECAAAECBAgQIECAAAECBAgQ2FMBAe+eFk63CRAgQIAAAQIECBAgQIAAAQIECBAgIOA1BwgQIECAAAECBAgQIECAAAECBAgQILCnAgLePS2cbhMgQIAAAQIECBAgQIAAAQIECBAgQEDAaw4QIECAAAECBAgQIECAAAECBAgQIEBgTwUEvHtaON0mQIAAAQIECBAgQIAAAQIECBAgQICAgNccIECAAAECBAgQIECAAAECBAgQIECAwJ4KCHj3tHC6TYAAAQIECBAgQIAAAQIECBAgQIAAAQGvOUCAAAECBAgQIECAAAECBAgQIECAAIE9FRDw7mnhdJsAAQIECBAgQIAAAQIECBAgQIAAAQICXnOAAAECBAgQIECAAAECBAgQIECAAAECeyog4N3Twuk2AQIECBAgQIAAAQIECBAgQIAAAQIEBLzmAAECBAgQIECAAAECBAgQIECAAAECBPZUQMC7p4XTbQIECBAgQIAAAQIECBAgQIAAAQIECAh4zQECBAgQIECAAAECBAgQIECAAAECBAjsqYCAd08Lp9sECBAgQIAAAQIECBAgQIAAAQIECBAQ8JoDBAgQIECAAAECBAgQIECAAAECBAgQ2FMBAe+eFk63CRAgQIAAAQIECBAgQIAAAQIECBAgIOA1BwgQIECAAAECBAgQIECAAAECBAgQILCnAgLePS2cbhMgQIAAAQIECBAgQIAAAQIECBAgQEDAaw4QIECAAAECBAgQIECAAAECBAgQIEBgTwUEvHtaON0mQIAAAQIECBAgQIAAAQIECBAgQICAgNccIECAAAECBAgQIECAAAECBAgQIECAwJ4KCHj3tHC6TYAAAQIECBAgQIAAAQIECBAgQIAAAQGvOUCAAAECBAgQIECAAAECBAgQIECAAIE9FRDw7mnhdJsAAQIECBAgQIAAAQIECBAgQIAAAQICXnOAAAECBAgQIECAAAECBAgQIECAAAECeyog4N3Twuk2AQIECBAgQIAAAQIECBAgQIAAAQIEBLzmAAECBAgQIECAAAECBAgQIECAAAECBPZUQMC7p4XTbQIECBAgQIAAAQIECBAgQIAAAQIECAh4zQECBAgQIECAAAECBAgQIECAAAECBAjsqYCAd08Lp9sECBAgQIAAAQIECBAgQIAAAQIECBAQ8JoDBAgQIECAAAECBAgQIECAAAECBAgQ2FMBAe+eFk63CRAgQIAAAQIECBAgQIAAAQIECBAgIOA1BwgQIECAAAECBAgQIECAAAECBAgQILCnAgLePS2cbhMgQIAAAQIECBAgQIAAAQIECBAgQEDAaw4QIECAAAECBAgQIECAAAECBAgQIEBgTwUEvHtaON0mQIAAAQIECBAgQIAAAQIECBAgQICAgNccIECAAAECBAgQIECAAAECBAgQIECAwJ4KCHj3tHC6TYAAAQIECBAgQIAAAQIECBAgQIAAAQGvOUCAAAECBAgQIECAAAECBAgQIECAAIE9FRDw7mnhdJsAAQIECBAgQIAAAQIECBAgQIAAAQICXnOAAAECBAgQIECAAAECBAgQIECAAAECeyog4N3Twuk2AQIECBAgQIAAAQIECBAgQIAAAQIEBLzmAAECBAgQIECAAAECBAgQIECAAAECBPZUQMC7p4XTbQIECBAgQIAAAQIECBAgQIAAAQIECAh4zQECBAgQIECAAAECBAgQIECAAAECBAjsqYCAd08Lp9sECBAgQIAAAQIECBAgQIAAAQIECBAQ8JoDBAgQIECAAAECBAgQIECAAAECBAgQ2FMBAe+eFk63CRAgQIAAAQIECBAgQIAAAQIECBAgIOA1BwgQIECAAAECBAgQIECAAAECBAgQILCnAgLePS2cbhMgQIAAAQIECBAgQIAAAQIECBAgQEDAaw4QIECAAAECBAgQIECAAAECBAgQIEBgTwUEvHtaON0mQIAAAQIECBAgQIAAAQIECBAgQICAgNccIECAAAECBAgQIECAAAECBAgQIECAwJ4KCHj3tHC6TYAAAQIECBAgQIAAAQIECBAgQIAAAQGvOUCAAAECBAgQIECAAAECBAgQIECAAIE9FRDw7mnhdJsAAQIECBAg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QIAAAQIECBAgQIAAAQIECBAgMDYBAe/YKqI/BAgQIECAAAECBAgQIECAAAECBAgQGCgg4B0I5TICBAgQIECAAAECBAgQIECAAAECBAiMTUDAO7aK6A8BAgQIECBAgAABAgQIECBAgAABAgQGCgh4B0K5jAABAgQIECBAgAABAgQIECBAgAABAmMTEPCOrSL6Q4AAAQIECBAgQIAAAQIECBAgQIAAgYECAt6BUC4jQIAAAQIECBAgQIAAAQIECBAgQIDA2AQEvGOriP4QIECAAAECBAgQIECAAAECBAgQIEBgoICAdyCUywgQIECAAAECBAgQIECAAAECBAgQIDA2AQHv2CqiPwQIECBAgAABAgQIECBAgAABAgQIEBgoIOAdCOUyAgQIECBAgAABAgQIECBAgAABAgQIjE1AwDu2iugPAQIECBAgQIAAAQIECBAgQIAAAQIEBgoIeAdCuYwAAQIECBAgQIAAAQIECBAgQIAAAQJjExDwjq0i+kOAAAECBAgQIECAAAECBAgQIECAAIGBAgLegVAuI0CAAAECBAgQIECAAAECBAgQIECAwNgEBLxjq4j+ECBAgAABAgQIECBAgAABAgQIECBAYKCAgHcglMsIECBAgAABAgQIECBAgAABAgQIECAwNgEB79gqoj8ECBAgQIAAAQIECBAgQIAAAQIECBAYKCDgHQjlMgIECBAgQIAAAQIECBAgQIAAAQIECIxNQMA7toroDwECBAgQIECAAAECBAgQIECAAAECBAYKCHgHQrmMAAECBAgQIECAAAECBAgQIECAAAECYxMQ8I6tIvpDgAABAgQIECBAgAABAgQIECBAgACBgQIC3oFQLiNAgAABAgQIECBAgAABAgQIECBAgMDYBAS8Y6uI/hAgQIAAAQIECBAgQIAAAQIECBAgQGCggIB3IJTLCBAgQIAAAQIECBAgQIAAAQIECBAgMDYBAe/YKqI/BAgQIECAAAECBAgQIECAAAECBAgQGCgg4B0I5TICBAgQIECAAAECBAgQIECAAAECBAiMTUDAO7aK6A8BAgQIECBAgAABAgQIECBAgAABAgQGCgh4B0K5jAABAgQIECBAgAABAgQIECBAgAABAmMTEPCOrSL6Q4AAAQIECBAgQIAAAQIECBAgQIAAgYECAt6BUC4jQIAAAQIECBAgQIAAAQIECBAgQIDA2AQEvGOriP4QIECAAAECBAgQIECAAAECBAgQIEBgoICAdyCUywgQIECAAAECBAgQIECAAAECBAgQIDA2AQHv2CqiPwQIECBAgAABAgQIECBAgAABAgQIEBgoIOAdCOUyAgQIECBAgAABAgQIECBAgAABAgQIjE1AwDu2iugPAQIECBAgQIAAAQIECBAgQIAAAQIEBgoIeAdCuYwAAQIECBAgQIAAAQIECBAgQIAAAQJjExDwjq0i+kOAAAECBAgQIECAAAECBAgQIECAAIGBAgLegVAuI0CAAAECBAgQIECAAAECBAgQIECAwNgEBLxjq4j+ECBAgAABAgQIECBAgAABAgQIECBAYKCAgHcglMsIECBAgAABAgQIECBAgAABAgQIECAwNgEB79gqoj8ECBAgQIAAAQIECBAgQIAAAQIECBAYKCDgHQjlMgIECBAgQIAAAQIECBAgQIAAAQIECIxNQMA7toroDwECBAgQIECAAAECBAgQIECAAAECBAYKCHgHQrmMAAECBAgQIECAAAECBAgQIECAAAECYxMQ8I6tIvpDgAABAgQIECBAgAABAgQIECBAgACBgQIC3oFQLiNAgAABAgQIECBAgAABAgQIECBAgMDYBAS8Y6uI/hAgQIAAAQIECBAgQIAAAQIECBAgQGCggIB3IJTLCBAgQIAAAQIECBAgQIAAAQIECBAgMDYBAe/YKqI/BAgQIECAAAECBAgQIECAAAECBAgQGCgg4B0I5TICBAgQIECAAAECBAgQIECAAAECBAiMTUDAO7aK6A8BAgQIECBAgAABAgQIECBAgAABAgQGCgh4B0K5jAABAgQIECBAgAABAgQIECBAgAABAmMTEPCOrSL6Q4AAAQIECBAgQIAAAQIECBAgQIAAgYECAt6BUC4jQIAAAQIECBAgQIAAAQIECBAgQIDA2AQEvGOriP4QIECAAAECBAgQIECAAAECBAgQIEBgoICAdyCUywgQIECAAAECBAgQIECAAAECBAgQIDA2AQHv2CqiPwQIECBAgAABAgQIECBAgAABAgQIEBgoIOAdCOUyAgQIECBAgAABAgQIECBAgAABAgQIjE1AwDu2iugPAQIECBAgQIAAAQIECBAgQIAAAQIEBgoIeAdCuYwAAQIECBAgQIAAAQIECBAgQIAAAQJjExDwjq0i+kOAAAECBAgQIECAAAECBAgQIECAAIGBAgLegVAuI0CAAAECBAgQIECAAAECBAgQIECAwNgEBLxjq4j+ECBAgAABAgQIECBAgAABAgQIECBAYKCAgHcglMsIECBAgAABAgQIECBAgAABAgQIECAwNgEB79gqoj8ECBAgQIAAAQIECBAgQIAAAQIECBAYKCDgHQjlMgIECBAgQIAAAQIECBAgQIAAAQIECIxNQMA7toroDwECBAgQIECAAAECBAgQIECAAAECBAYKCHgHQrmMAAECBAgQIECAAAECBAgQIECAAAECYxMQ8I6tIvpDgAABAgQIECBAgAABAgQIECBAgACBgQIC3oFQLiNAgAABAgQIECBAgAABAgQIECBAgMDYBAS8Y6uI/hAgQIAAAQIECBAgQIAAAQIECBAgQGCggIB3IJTLCBAgQIAAAQIECBAgQIAAAQIECBAgMDYBAe/YKqI/BAgQIECAAAECBAgQIECAAAECBAgQGCgg4B0I5TICBAgQIECAAAECBAgQIECAAAECBAiMTUDAO7aK6A8BAgQIECBAgAABAgQIECBAgAABAgQGCgh4B0K5jAABAgQIECBAgAABAgQIECBAgAABAmMTEPCOrSL6Q4AAAQIECBAgQIAAAQIECBAgQIAAgYECAt6BUC4jQIAAAQIECBAgQIAAAQIECBAgQIDA2AQEvGOriP4QIECAAAECBAgQIECAAAECBAgQIEBgoICAdyCUywgQIECAAAECBAgQIECAAAECBAgQIDA2AQHv2CqiPwQIECBAgAABAgQIECBAgAABAgQIEBgoIOAdCOUyAgQIECBAgAABAgQIECBAgAABAgQIjE1AwDu2iugPAQIECBAgQIAAAQIECBAgQIAAAQIEBgoIeAdCuYwAAQIECBAgQIAAAQIECBAgQIAAAQJjExDwjq0i+kOAAAECBAgQIECAAAECBAgQIECAAIGBAgLegVAuI0CAAAECBAgQIECAAAECBAgQIECAwNgEBLxjq4j+ECBAgAABAgQIECBAgAABAgQIECBAYKCAgHcglMsIECBAgAABAgQIECBAgAABAgQIECAwNgEB79gqoj8ECBAgQIAAAQIECBAgQIAAAQIECBAYKCDgHQjlMgIECBAgQIAAAQIECBAgQIAAAQIECIxNQMA7toroDwECBAgQIECAAAECBAgQIECAAAECBAYKCHgHQrmM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5ySfmop5WVU9e0+Fdff/STJaNXylqm57QBawh4cIeLdS37MJECBAgAABAgQIECBAgAABAgQIEJiFQHcfl+SCqZgnVdUZ6xXW3U9I8ubp2p9U1eO3cgEC3q3U92wCBAgQIECAAAECBAgQIECAAAECBGYhsOYE73Oq6oVrC+vumya5ZOnFbcdW1UVbuQAB71bqezYBAgQIECBAgAABAgQIECBAgAABArMR6O4R3o72DZcluX1VXbNcXHf/ZZJHTN+dX1X32OriBbxbvQOeT4AAAQIECBAgQIAAAQIECBAgQIDALAS6+5Qkr5yKuTTJ+PzWJLdL8hdJ7jldG31771BVIwje0iHg3VJ+DydAgAABAgQIECBAgAABAgQIECBAYE4C3f3SJL+xVFMnWc5Rr0vykKr6wBzqFvDOYRfUQIAAAQIECBAgQIAAAQIECBAgQIDAbAS6++Qkr0hyxJqiPpzkMVV18VyKFfDOZSfUQYAAAQIECBAgQIAAAQIECBAgQIDArAS6+6QkD0xyVZL3bPUL1dbDEfDO6k9GMQQIECBAgAABAgQIECBAgAABAgQIEFhdQMC7upWZBAgQIECAAAECBAgQIECAAAECBAgQmJWAgHdW26EYAgQIECBAgAABAgQIECBAgAABAgQIrC4g4F3dykwCBAgQIECAAAECBAgQIECAAAECBAjMSkDAO6vtUAwBAgQIECBAgAABAgQIECBAgAABAgRWFxDwrm5lJgECBAgQIECAAAECBAgQIECAAAECBGYlIOCd1XYohgABAgQIECBAgAABAgQIECBAgAABAqsLCHhXtzKTAAECBAgQIECAAAECBAgQIECAAAECsxIQ8M5qOxRDgAABAgQIECBAgAABAgQIECBAgACB1QUEvKtbmUmAAAECBAgQIECAAAECBAgQIECAAIFZCQh4Z7UdiiFAgAABAgQIECBAgAABAgQIECBAgMDqAgLe1a3MJECAAAECBAgQIECAAAECBAgQIECAwKwEBLyz2g7FECBAgAABAgQIECBAgAABAgQIECBAYHUBAe/qVmYSIECAAAECBAgQIECAAAECBAgQIEBgVgIC3llth2IIECBAgAABAgQIECBAgAABAgQIECCwuoCAd3UrMwkQIECAAAECBAgQIECAAAECBAgQIDArAQHvrLZDMQQIECBAgAABAgQIECBAgAABAgQIEFhdQMC7upWZBAgQIECAAAECBAgQIECAAAECBAgQmJWAgHdW26EYAgQIECBAgAABAgQIECBAgAABAgQIrC4g4F3dykwCBAgQIECAAAECBAgQIECAAAECBAjMSkDAO6vtUAwBAgQIECBAgAABAgQIECBAgAABAgRWFxDwrm5lJgECBAgQIECAAAECBAgQIECAAAECBGYlIOCd1XYohgABAgQIECBAgAABAgQIECBAgAABAqsLCHhXtzKTAAECBAgQIECAAAECBAgQIECAAAECsxIQ8M5qOxRDgAABAgQIECBAgAABAgQIECBAgACB1QUEvKtbmUmAAAECBAgQIECAAAECBAgQIECAAIFZCQh4Z7UdiiFAgAABAgQIECBAgAABAgQIECBAgMDqAgLe1a3MJECAAAECBAgQIECAAAECBAgQIECAwKwEBLyz2g7FECBAgAABAgQIECBAgAABAgQIECBAYHUBAe/qVmYSIECAAAECBAgQIECAAAECBAgQIEBgVgIC3llth2IIECBAgAABAgQIECBAgAABAgQIECCwuoCAd3UrMwkQIECAAAECBAgQIECAAAECBAgQIDArAQHvrLZDMQQIECBAgAABAgQIECBAgAABAgQIEFhdQMC7upWZBAgQIECAAAECBAgQIECAAAECBAgQmJWAgHdW26EYAgQIECBAgMC8BLr7kUletVTVlVV1wlZW2d0/l+QNUw3XVtWtt7IezyZAgAABAgQIECCwlQIC3q3U92wCBAgQIECAwMwFuvvcJPddU+YTq+pNm1l6d98+yReme44Q+ZZ7un93n5LklYvrVbVp/6bt7iuTfO9076Or6pLNXKd7ESBAgAABAgQIENhsgU37x/BmF+Z+BAgQIECAAAECWyvQ3YcmuSrJTdZUcl5VnbiZ1XX3nZJcNN3z6qr6ni0KeL+RZKx7jB+sqi9u5jrdiwABAgQIECBAgMBmCwh4N1vU/QgQIECAAAECO0Sgu09N8uJ1ltNJDquqazZrqRsMeMfp3vtPz/5GVb1/E+sQ8G4WpvsQIECAAAECBAgcEAEB7wFh9hACBAgQIECAwPYT6O5xonacrB3j95I8Nckh0+f/VFUv2qxVbSTg3axnrnef7hbw7k9g9yZAgAABAgQIENh0AQHvppO6IQECBAgQIEBg+wt09w8kWW5PcHSSNyb58Wl1n6uqRfi7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/+kXn0nyv6rqmtXu8P9mTS+OOzHJuNdo+TBeGvehqhptH/Y5unu0chhh762TjPYRH6iqcbrXIECAAAECBAgQIDAbAQHvbLZCIQQIECBAgAABAgQIECBAgAABAgQIENiYgIB3Y15mEyBAgAABAgQIECBAgAABAgQIECBAYDYCAt7ZbIVCCBAgQIAAAQIECBAgQIAAAQIECBAgsDEBAe/GvMwmQIAAAQIECBAgQIAAAQIECBAgQIDAbAQEvLPZCoUQIECAAAECBAgQIECAAAECBAgQIEBgYwIC3o15mU2AAAECBAgQIECAAAECBAgQIECAAIHZCAh4Z7MVCiFAgAABAgQIECBAgAABAgQIECBAgMDGBAS8G/MymwABAgQIECBAgAABAgQIECBAgAABArMREPDOZisUQoAAAQIECBAgQIAAAQIECBAgQIAAgY0JCHg35mU2AQIECBAgQIAAAQIECBAgQIAAAQIEZiMg4J3NViiEAAECBAgQIECAAAECBAgQIECAAAECGxMQ8G7My2wCBAgQIECAAAECBAgQIECAAAECBAjMRkDAO5utUAgBAgQIECBAgAABAgQIECBAgAABAgQ2JiDg3ZiX2QQIECBAgAABAgQIECBAgAABAgQIEJiNgIB3NluhEAIECBAgQIAAAQIECBAgQIAAAQIECGxMQMC7MS+zCRAgQIAAAQIECBAgQIAAAQIECBAgMBsBAe9stkIhBAgQIECAAAECBAgQIECAAAECBAgQ2JiAgHdjXmYTIECAAAECBAgQIECAAAECBAgQIEBgNgIC3tlshUIIECBAgAABAgQIECBAgAABAgQIECCwMQEB78a8zCZAgAABAgQIECBAgAABAgQIECBAgMBsBAS8s9kKhRAgQIAAAQIECBAgQIAAAQIECBAgQGBjAgLejXmZTYAAAQIECBAgQIAAAQIECBAgQIAAgdkICHhnsxUKIUCAAAECBAgQIECAAAECBAgQIECAwMYE/i+/XtiHNCgW7gAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/markdown": [
- "AI-generated follow-up questions:\n",
- "\n",
- "* What is the total sales for each artist?\n",
- "* What are the top-selling albums for each artist?\n",
- "* Which genre has the highest sales?\n",
- "* What is the total sales for each genre?\n",
- "* What are the sales trends over the years?\n",
- "* How many albums are there in the database?\n",
- "* Who are the top-selling artists in each genre?\n",
- "* What are the top-selling tracks?\n",
- "* What is the average sales per artist?\n",
- "* How does the sales distribution vary across different genres?\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "vn.ask(\"What are the top 5 artists by sales?\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Now try your own question\n",
- "\n",
- "For reference, these are the tables in the database\n",
- "\n",
- ""
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.ask()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Launch the User Interface\n",
- "![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from vanna.flask import VannaFlaskApp\n",
- "app = VannaFlaskApp(vn)\n",
- "app.run()"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.11.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/notebooks/index.ipynb b/notebooks/index.ipynb
deleted file mode 100644
index c7c9ea9f..00000000
--- a/notebooks/index.ipynb
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## How Vanna works\n",
- "Vanna works in two easy steps - train a RAG \"model\" on your data, and then ask questions which will return SQL queries that can be set up to automatically run on your database.\n",
- "\n",
- "1. `vn.train(...)`: Train a RAG \"model\" on your data. These methods add to the reference corpus below. \n",
- "2. `vn.ask(...)`: Ask questions. This will use the reference corpus to generate SQL queries that can be run on your database.\n",
- "\n",
- "![](/blog/img/how-it-works.png)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Video Walkthrough\n",
- "This video is slightly dated and we'll be updating it soon."
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- ""
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "base",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.10.9"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/local.ipynb b/notebooks/local.ipynb
deleted file mode 100644
index 61d7f0af..00000000
--- a/notebooks/local.ipynb
+++ /dev/null
@@ -1,374 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Using Vanna with a Local Context Database\n",
- "Generally it's a lot easier to get started with Vanna using our hosted service. However, if you want to run Vanna locally, you can do so by running a local context database using ChromaDB. This notebook will walk you through the steps to do so."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install 'vanna[chromadb,snowflake,openai]'"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "from vanna.local import LocalContext_OpenAI"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Configure OpenAI API Key\n",
- "If you're using Azure OpenAI there are some additional parameters to specify beyond the API Key"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Use the regular OpenAI API\n",
- "vn = LocalContext_OpenAI({\"api_key\": \"sk-...\"})\n",
- "\n",
- "# Use the Azure OpenAI API\n",
- "vn = LocalContext_OpenAI(config={\n",
- " \"api_type\": \"azure\",\n",
- " \"api_base\": \"https://...\",\n",
- " \"api_version\": \"2023-05-15\",\n",
- " \"engine\": \"YOUR_ENGINE_HERE\",\n",
- " \"api_key\": \"sk-...\"\n",
- "})"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Train using a Sample SQL Query\n",
- "The easiest way to get started is to just paste in one SQL query and let Vanna train on it. This will create a new context database and train a model on it. You can then use that model to generate SQL queries."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Using model gpt-3.5-turbo for 147.5 tokens (approx)\n",
- "Question generated with sql: What are the top 5 customers in terms of total sales? \n",
- "Adding SQL...\n"
- ]
- }
- ],
- "source": [
- "vn.train(sql=\"\"\"\n",
- "SELECT c.c_name as customer_name,\n",
- " sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales\n",
- "FROM snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o\n",
- " ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c\n",
- " ON o.o_custkey = c.c_custkey\n",
- "GROUP BY customer_name\n",
- "ORDER BY total_sales desc limit 5;\n",
- "\"\"\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Connect to the Database\n",
- "This is the database that will be used to run the generated SQL queries against. Here we're connecting to Snowflake."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_snowflake(account='my-account', username='my-username', password='my-password', database='my-database')"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Begin Asking Questions\n",
- "There is an automatic feedback loop here so when you ask a question that results in SQL that can execute, it will automatically be added to the context database and used to train the model."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Number of requested results 10 is greater than number of elements in index 1, updating n_results = 1\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Using model gpt-3.5-turbo for 167.0 tokens (approx)\n",
- "SELECT c.c_name as customer_name,\n",
- " sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales\n",
- "FROM snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o\n",
- " ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c\n",
- " ON o.o_custkey = c.c_custkey\n",
- "GROUP BY customer_name\n",
- "ORDER BY total_sales desc limit 10;\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
CUSTOMER_NAME
\n",
- "
TOTAL_SALES
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
Customer#000143500
\n",
- "
6757566.0218
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
Customer#000095257
\n",
- "
6294115.3340
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
Customer#000087115
\n",
- "
6184649.5176
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
Customer#000131113
\n",
- "
6080943.8305
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
Customer#000134380
\n",
- "
6075141.9635
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
Customer#000103834
\n",
- "
6059770.3232
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
Customer#000069682
\n",
- "
6057779.0348
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
Customer#000102022
\n",
- "
6039653.6335
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
Customer#000098587
\n",
- "
6027021.5855
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
Customer#000064660
\n",
- "
5905659.6159
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " CUSTOMER_NAME TOTAL_SALES\n",
- "0 Customer#000143500 6757566.0218\n",
- "1 Customer#000095257 6294115.3340\n",
- "2 Customer#000087115 6184649.5176\n",
- "3 Customer#000131113 6080943.8305\n",
- "4 Customer#000134380 6075141.9635\n",
- "5 Customer#000103834 6059770.3232\n",
- "6 Customer#000069682 6057779.0348\n",
- "7 Customer#000102022 6039653.6335\n",
- "8 Customer#000098587 6027021.5855\n",
- "9 Customer#000064660 5905659.6159"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Using model gpt-3.5-turbo for 259.25 tokens (approx)\n",
- "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n",
- "To disable this warning, you can either:\n",
- "\t- Avoid using `tokenizers` before the fork if possible\n",
- "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n"
- ]
- },
- {
- "data": {
- "image/png": "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QAABBBBAAAEEEEAAAQQQQAABBBBAAAECXuYAAggggAACCCCAAAIIIIAAAggggAACCCBgUwECXpsOHN1GAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIeJkDCCCAAAIIIIAAAggggAACCCCAAAIIIICATQUIeG06cHQbAQQQQAABBBBAAAEEEEAAAQQQQAABBBAg4GUOIIAAAggggAACCCCAAAIIIIAAAggggAACNhUg4LXpwNFtBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAgJc5gAACCCCAAAIIIIAAAggggAACCCCAAAII2FSAgNemA0e3EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABAl7mAAIIIIAAAggggAACCCCAAAIIIIAAAgggYFMBAl6bDhzdRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHiZAwgggAACCCCAAAIIIIAAAggggAACCCCAgE0FCHhtOnB0GwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIOBlDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAjYVIOC16cDRbQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgICXOYAAAggggAACCCCAAAIIIIAAAggggAACCNhUgIDXpgNHtxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQJe5gACCCCAAAIIIIAAAggggAACCCCAAAIIIGBTAQJemw4c3UYAAQTuh0DRosUkd548xqkvXbosS5csuh/diNPnrFq1ujyU9iHD4PDhw7J508Y47cHFI4AAAggggAACCCCAAAJxXYCA180MiBcvnhQsWCikc+P27duye/eukLZpp8YSJUok1arXNLp85cplWf37qhh1X0OmWo/VkfLlK0rChAnljz/WyaKFC+SP9evkzp07MWo7mIPLV6goderUkwwZM0natGmNPhw9ekT27dsre3bvkk0bN8jVq1eDaZpjEIgogUVLVkjefPmNPt26dUty58gSUf0LVWceSptWypQpJ0WKFpW8efNJunTp5fz5c3L0yBE5cuSwHDiwX3bu2C6XLl0K1Sn9bmfvgaOi36m6HTt2VCpXLOv3seyIAAIIIIAAAggggAACCCAQ+wQIeN2M6WN16sk3Y8aFfLSbNW0o69etDXm7dmiwVeuX5YO+/WIcCnV5+x3p+HoniR8/vtvL1mB13tzZ8mq7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eG06cHQbAQQQQAABBBBAAAEEEEAAAQQQQAABBBAg4GUOIIAAAggggAACCCCAAAIIIIAAAggggAACNhUg4LXpwNFtBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAgJc5gAACCCCAAAIIIIAAAggggAACCCCAAAII2FSAgNemA0e3EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABAl7mAAIIIIAAAggggAACCCCAAAIIIIAAAgggYFMBAl6bDhzdRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHiZAwgggAACCCCAAAIIIIAAAggggAACCCCAgE0FCHhtOnB0GwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIOBlDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAjYVIOC16cDRbQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgICXOYAAAggggAACCCCAAAIIIIAAAggggAACCNhUgIDXpgNHtxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQJe5gACCCCAAAIIIIAAAggggAACCCCAAAIIIGBTAQJemw4c3UYAAQQQQAABBBBAAAEEEEAAAQQQQAABBAh4mQMIIIAAAggggAACCCCAAAIIIIAAAggggIBNBQh4bTpwdBsBBBBAAAEEEEAAAQQQQAABBBBAAAEEECDgZQ4ggAACCCCAAAIIIIAAAggggAACCCCAAAI2FSDgtenA0W0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQICAlzmAAAIIIIAAAggggAACCCCAAAIIIIAAAgjYVICA16YDR7cRQAABBBBAAAEEEEAAAQQQQAABBBBAAAECXuYAAggggAACCCCAAAIIIIAAAggggAACCCBgUwECXpsOHN1GAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIeJkDCCCAAAIIIIAAAggggAACCCCAAAIIIICATQUIeG06cHQbAQQQQAABBBBAAAEEEEAAAQQQQAABBBAg4GUOIIAAAggggAACCCCAAAIIIIAAAggggAACNhUg4LXpwNFtBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAgJc5gAACCCCAAAIIIIAAAggggAACCCCAAAII2FSAgNemA0e3EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABAl7mAAIIIIAAAggggAACCCCAAAIIIIAAAgggYFMBAl6bDhzdRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHiZAwgggAACCCCAAAIIIIAAAggggAACCCCAgE0FCHhtOnB0GwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIOBlDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAjYVIOC16cDRbQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgICXOYAAAggggAACCCCAAAIIIIAAAggggAACCNhUgIDXpgNHtxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQJe5gACCCCAAAIIIIAAAggggAACCCCAAAIIIGBTAQJemw4c3UYAAQQQQAABBBBAAAEEEEAAAQQQQAABBAh4mQMIIIAAAggggAACCCCAAAIIIIAAAggggIBNBQh4bTpwdBsBBBBAAAEEEEAAAQQQQAABBBBAAAEEECDgZQ4ggAACCCCAAAIIIIAAAggggAACCCCAAAI2FSDgtenA0W0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQICAlzmAAAIIIIAAAggggAACCCCAAAIIIIAAAgjYVICA16YDR7cRQAABBBBAAAEEEEAAAQQQQAABBBBAAAECXuYAAggggAACCCCAAAIIIIAAAggggAACCCBgUwECXpsOHN1GAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIeJkDCCCAAAIIIIAAAggggAACCCCAAAIIIICATQUIeG06cHQbAQQQQAABBBBAAAEEEEAAAQQQQAABBBAg4GUOIIAAAggggAACCCCAAAIIIIAAAggggAACNhUg4LXpwNFtBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAgJc5gAACCCCAAAIIIIAAAggggAACCCCAAAII2FSAgNemA0e3EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABAl7mAAIIIIAAAggggAACCCCAAAIIIIAAAgggYFMBAl6bDhzdRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHiZAwgggAACCCCAAAIIIIAAAggggAACCCCAgE0FCHhtOnB0GwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIOBlDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAjYVIOC16cDRbQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgICXOYAAAggggAACCCCAAAIIIIAAAggggAACCNhUgIDXpgNHtxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQJe5gACCCCAAAIIIIAAAggggAACCCCAAAIIIGBTAQJemw4c3UYAAQQQQAABBBBAAAEEEEAAAQQQQAABBAh4mQMIIIAAAggggAACCCCAAAIIIIAAAggggIBNBQh4bTpwdBsBBBBAAAEEEEAAAQQQQAABBBBAAAEEECDgZQ4ggAACCCCAAAIIIIAAAggggAACCCCAAAI2FSDgtenA0W0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQICAlzmAAAIIIIAAAggggAACCCCAAAIIIIAAAgjYVICA16YDR7cRQAABBBBAAAEEEEAAAQQQQAABBBBAAAECXuYAAggggAACCCCAAAIIIIAAAggggAACCCBgUwECXpsOHN1GAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIeJkDCCCAAAIIIIAAAggggAACCCCAAAIIIICATQUIeG06cHQbAQQQQAABBBBAAAEEEEAAAQQQQAABBBAg4GUOIIAAAggggAACCCCAAAIIIIAAAggggAACNhUg4LXpwNFtBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAgJc5gAACCCCAAAIIIIAAAggggAACCCCAAAII2FSAgNemA0e3EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABAl7mAAIIIIAAAggggAACCCCAAAIIIIAAAgggYFMBAl6bDhzdRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHiZAwgggAACCCCAAAIIIIAAAggggAACCCCAgE0FCHhtOnB0GwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIOCNY3Ng7vzFkj5der+veuiQgTJu7Bhj/2TJksnylWvMY5csWSTdunb22Fa8ePFk6fJVkjx5CmOfw4cPSbOmDf0+NzsigAACCCCAAAIIIIAAAggggAACCCCAgHcBAt44NkP27D8iiRMn9vuqx373rbzfq4exf+o0aWTLtt3msXfu3JFSJQrLX+fPu22vXfvXpMd7vc33Ll26JMUK5/P73OyIAAIIIIAAAggggAACCCCAAAIIIIAAAgS8zAEnge/GTZAMGTN5NUmRIoVky5bd2MdbwKvvz5k9Szq0f8Vte5u37ZY0adIQ8DIDEUAAAQQQQAABBBBAAAEEEEAAAQQQCJMAK3jDBGvnZqf8OEMqVKxkXEK7V1rLr/PmGH+2ruDV127fvm2syr1y5YrLJTdu0lQGDx3h8horeO08K+g7AggggAACCCCAAAIIIIAAAggggEAkChDwRuKo3Mc+FS5cRLROr27Hjh2VyhXLmr1xDng3bvhDSpUuY7w3dcpkebtLJ5de/752g2TJklXOnjkjyZInl6RJkwoB730cWE6NAAIIIIAAAggggAACCCCAAAIIIBArBQh4Y+WwBn9Ri5askLz58hsNPN2ssaxds9ptwDth/DipUbOWEeLevHlTChfILdevXzf2rVjpUflh6nTjz/oQ1vjyqwAAIABJREFUtj59+xHwBj8kHIkAAggggAACCCCAAAIIIIAAAggggIBHAQJeJocpULPWY6I1enXbtXOn1KtTw0XHeQWvBrxrVq+SYV99bezz3ZhvpE/vnsaf5y9cJgUKFjRX7O7ae4iAl3mGAAIIIIAAAggggAACCCCAAAIIIIBAGAQIeMOAatcm12/cKunTZzC6X7d2ddm9e5fXgLdn926yactOeShtWmP1boG8OSR3njyyaMlK47iP+38kI74aKgS8dp0R9BsBBBBAAAEEEEAAAQQQQAABBBBAINIFCHgjfYTuUf9efOl/8mG/j42zrVu7Rpo/1Sjama0reDXgfalVa+n70QBj3yGDv5Ry5SoYD2j7559/pFD+XHLnzh0C3ns0hpwGAQQQQAABBBBAAAEEEEAAAQQQQCDuCRDwxr0xj3bF8eLFkx27D0iyZMmMQPbRCmXkxInjfgW8upMemzx5cqMWb4IECUTb+2r4EPlkQD+jDW8reDPkLskIIIAAAggggAACCCCAAAIIIIBALBc4fWBTLL9CLg+B+ydAwHv/7CPmzN179pL2r3Y0+rNg/jx5pU0rt31zt4JXd+z0Vlfp/Nbb5jE3btyQgvlyyq1btwh4I2aU6QgCCCCAAAIIIIAAAggggAAC90+AgPf+2XPm2C9AwBv7x9jrFeqq3S3b98iDDz4ot2/flhJFCxgPR3O3eQp448ePL7v3HZZEiRIZh02c8L30eDcq8KUGbxyfZFw+AggggAACCCCAAAIIIIAAAggggEDYBAh4w0Zrj4aHDh8lDRs1Njo75YdJ0q1rZ48d9xTw6gFav1fr+GpIXKRgHrl69arZDgGvPeYCvUQAAQQQQAABBBBAAAEEEEAAAQQQsJ8AAa/9xixkPc6UKbOsXrfRqJmrZRU0mL1+/XpQAa+u3q1WvaacOvmnbN26xaUNAt6QDRkNIYAAAggggAACCCCAAAIIIIAAAggg4CJAwBuHJ8SUH2dIhYqVDAHnh6J5IvG2gtcbIwFvHJ5kXDoCCCCAAAIIIIAAAggggAACCCCAQFgFCHjDyhu5jRcuXETmzl9sdFDLKRQukFvu3LnjtcMEvJE7nvQMAQQQQAABBBBAAAEEEEAAAQQQQCBuChDwxs1xl8VLV0qevPmMq+/7QW/5dvQonxIEvD6J2AEBBBBAAAEEEEAAAQQQQAABBBBAAIF7KkDAe0+5I+NkZcuVl5+mzzI6c+Gvv6REsYJ+dSxVqlSydcdeY9/x34+V93q849dxjhINFy9elOJF8vt1DDshgAACCCCAAAIIIIAAAggggAACCCCAgG8BAl7fRuyBAAIIIIAAAggggAACCCCAAAIIIIAAAghEpAABb0QOC51CAAEEEEAAAQQQQAABBBBAAAEEEEAAAQR8CxDw+jZiDwQQQAABBBBAAAEEEEAAAQQQQAABBBBAICIFCHgjcljoFAIIIIAAAggggAACCCCAAAIIIIAAAggg4FuAgNe3EXsggAACCCCAAAIIIIAAAggggAACCCCAAAIRKUDAG5HDQqcQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHfAgS8vo3YAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiEgBAt6IHBY6hQACCCCAAAIIIIAAAggggAACCCCAAAII+BYg4PVtxB4IIIAAAggggAACCCCAAAIIIIAAAggggEBEChDwRuSw0CkEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMC3AAGvbyP2sJHAnTt3bNTb0HQ1Xrx4oWmIVhBAAAEEEEAAAQQQQAABBBBAAAEEbCdAwGu7IaPDngQ03E2YOImUqdUgTiEd3btdju/bJQS9cWrYuVgEEEAAAQQQQAABBBBAAAEEEEDAECDgZSLEGgENeOM/8IB8Pm9jrLkmfy5k8ue9ZP2CWQS8/mCxDwIIIIAAAggggAACCCCAAAIIIBDLBAh4Y9mAxuXLIeClVENcnv9cOwIIIIAAAggggAACCCCAAAIIxE0BAt64Oe6x8qoJeAl4Y+XE5qIQQAABBBBAAAEEEEAAAQQQQAABLwIEvEyPWCNAwEvAG2smMxeCAAIIIIAAAggggAACCCCAAAII+ClAwOsnFLtFvgABLwFv5M9SeogAAggggAACCCCAAAIIIIAAAgiEVoCAN7SetHYfBQh4CXjv4/Tj1AgggAACCCCAAAIIIIAAAggggMB9ESDgvS/snDQcAvcy4L3933/y94VzcuXcafn7r7OSMGkySZ7mYUmW5mFJkiKVxIt378LWyZ/3kvULZt3Tc4Zj/GgTAQQQQAABBBBAAAEEEEAAAQQQQCBwAQLewM04IkIF7kXAe/74YVk7/Tu5eOq4V4UsBUtKibpNJVX6zGHXIuANOzEnQAABBBBAAAEEEEAAAQQQQAABBCJWgIA3YoeGjgUqEM6A987t27J2xjg5uOG3gLqVpWAJKd/kJUmcPGVAxwWyMwFvIFrsiwACCCCAAAIIIIAAAggggAACCMQuAQLe2DWecfpqwhnw7lg2R7YsmG76Zi1cStJkyiYp0qY3SjKsmfadXL1wTlJnekQSJU0uZw7ukTt3bhv762v1X+st8eLHD8v4EPCGhZVGEUAAAQQQQAABBBBAAAEEEEAAAVsIEPDaYpjopD8C4Qp4r129ItP7dTK6kCRlGqneqpOkyZjVpUv716+QdTPGGSUZnuj0ofxz+aKs/vEbOX1gl7Ffvoq1pMyTz/lzGQHvQ8AbMBkHIIAAAggggAACCCCAAAIIIIAAArFGgIA31gwlFxKugPfPvdtk2dhBBvDjb/aV1BmyRMP+98pFmTGgi/F6s97DJGHiJMafl48fJid2bTL+XP/1941Vv6HeCHhDLUp7CCCAAAIIIIAAAggggAACCCCAgH0ECHjtM1b01IdAuALeHcvnypb50yRZ6rTSqNunHnsxqUcb4726HXpJ2qw5jD9f/+eqzPj4Lbl965aUbvCc5K9UK+TjSMAbclIaRAABBBBAAAEEEEAAAQQQQAABBGwjQMBrm6Gio74Ewh3wJk+bXhp2GeC2G3ruyT1fNt6r3qqzZM5XxNxv2bjB8ueerZKjeHmp1KKtr8sI+H0C3oDJOAABBBBAAAEEEEAAAQQQQAABBBCINQIEvLFmKLmQcAW8f+7dLsvGDjSAm/YYKImTp4yGferALlny7efG6/Vf7yNpMj1i7rNl4QzZsXS2eAuIYzJ6BLwx0eNYBBBAAAEEEEAAAQQQQAABBBBAwN4CBLz2Hj967yQQroBXyyxM++gN40zpsueRai++IQmTJDPPfPXiX7JgZH/59/IF47Xm7w+XBxMlNt/ftniWbFs8U+InSCDP9B0V8jEj4A05KQ0igAACCCCAAAIIIIAAAggggAACthEg4LXNUNFRXwLhCnj1vI46vPpnDWoz5y8mSVOmkb//OiunDuw0auzqlqdcNSnX+EWXri757ks5tW+HsfJXVwCHeiPgDbUo7SGAAAIIIIAAAggggAACCCCAAAL2ESDgtc9Y0VMfAuEMeG/fvi3Lvx8iJ/du89iL1BmzSq2Xu0mipFGre3XnncvnyfV/rkiq9JklV+nKIR9HAt6Qk9IgAggggAACCCCAAAIIIIAAAgggYBsBAl7bDBUd9SUQzoDXce6DG36TLQumy79XLpndeTBxUnmkcCkp26ilPJDgQV/dDPn7BLwhJ6VBBBBAAAEEEEAAAQQQQAABBBBAwDYCBLy2GSo66kvgXgS8jj78d/OG/P3XOUmcIqUkSprcV9fC+j4Bb1h5aRwBBBBAAAEEEEAAAQQQQAABBBCIaAEC3ogeHjoXiMC9DHgD6Ve49yXgDbcw7SOAAAIIIIAAAggggAACCCCAAAKRK0DAG7ljQ88CFCDgjRegGLsjgAACCCCAAAIIIIAAAggggAACCNhdgIDX7iNI/02BSA1454/oJ+ePHTQesFbhqf+FfMRYwRtyUhpEAAEEEEAAAQQQQAABBBBAAAEEbCNAwGuboaKjvgTCFfDevH5N/vrziGTImd9XF9y+P3doH7l48pjkLFlRKjZ/Oag2vB1EwBtyUhpEAAEEEEAAAQQQQAABBBBAAAEEbCNAwGuboaKjvgTCFfBePndaZn/ZQ9JlzytlG78gqTNk8dUVl/cJeAPiYmcEEEAAAQQQQAABBBBAAAEEEEAAgQAECHgDwGLXyBYId8DruPpsxcpJqcdbSNKUqf0CIeD1i4mdEEAAAQQQQAABBBBAAAEEEEAAAQSCECDgDQKNQyJTIFwB741r/8qKCcPkzMHdLhee/9E6UrRWQ0mYOIlXEALeyJwv9AoBBBBAAAEEEEAAAQQQQAABBBCIDQIEvLFhFLkGQyBcAa+D98zhffLHrIly8dQxUzx+ggRS/LEmkq9SbXnggQRuR4KAlwmKAAIIIIAAAggggAACCCCAAAIIIBAuAQLecMnS7j0XCHfA67igE7u3GEHv1YvnzWtMmCSZlHnyOclRokK06ybgvedTgRMigAACCCCAAAIIIIAAAggggAACcUaAgDfODHXsv9B7FfCqpJ7r0KbfZeOcKXLj36smboq0GaRckxclQ64C5msEvLF/7nGFCCCAAAIIIIAAAggggAACCCCAwP0SIOC9X/KcN+QC9zLgdXT+v/9uyb7VS2Tzgmly+9Yt85rS58wvZRo+L6kzZBEC3pAPNQ0igAACCCCAAAIIIIAAAggggAACCPy/AAEvUyHWCNyPgNeBd/P6Ndm1Yp7sWDZX7ty5bZpmK1ZOzh7aI/9euSQ5S1aUis1fDrn35M97yfoFsyRevHghb5sGEUAAAQQQQAABBBBAAAEEEEAAAQQiW4CAN7LHh94FIHA/A15HN6//87dsXfiz7Fu7NFrPCXgDGEx2RQABBBBAAAEEEEAAAQQQQAABBBDwS4CA1y8mdrKDQCQEvA4nfQDbpnk/ytFt6006Al47zCL6iAACCCCAAAIIIIAAAggggAACCNhLgIDXXuNFb70IRFLA6+jmlfNnRMNe3ZKlTisp0qYP+RhSoiHkpDSIAAIIIIAAAggggAACCCCAAAII2EaAgNc2Q0VHfQlEYsDrq8+heN8OAW+8Bx6QhAkTxak6wbdv35Y7d0RuXv83FMNMGwgggAACCCCAAAIIIIAAAggggIBbAQJeJkasESDgjdyHrCVImEiqPfWCFCpfNdbMN18XcvbEUZk+rL/c+PcfX7vyPgIIIIAAAggggAACCCCAAAIIIBC0AAFv0HQcGGkC4Qx4L5w8KhdP/2lccqY8hSRx8pQRc/l2WMH7YKLE0rRjdylXp1HEuIW7IycO7JHhXVvL9X+uhvtUtI8AAggggAACCCCAAAIIIIAAAnFYgIA3Dg9+bLv0cAa8c4f0kYunjhlkjbp9JslSP+TCt3/9Cjl7eK9X0ox5i0jOEhVCzk7AG3LSkDRIwBsSRhpBAAEEEEAAAQQQQAABBBBAAAEfAgS8TJFYIxCugPfa35dlev/OhlPWQqWkasvXopmtnzVB9q1Z6tUyZ8mKUrH5yyH3JuANOWlIGiTgDQkjjSCAAAIIIIAAAggggAACCCCAAAEvcyCuCIQr4P1z7zZZNnaQwVi77buSPkfeaKR7Vi+WDb9MMl6PFy++y/t37tw2/puAlxINceWzyHUigAACCCCAAAIIIIAAAggggMC9E2AF772z5kxhFghXwLt/3XJZ9/P3Ru+bvz9ctJ6sdTuydb2s+mGkEe4+22+0y9tzh/aRiyePEfBSgzfMnwCaRwABBBBAAAEEEEAAAQQQQACBuChAwBsXRz2WXnO4At6tC2fI9qWz5cHESaV576Fu9Y7t2CArJ35lvPdc/28JeC1KPGQtln7ouCwEEEAAAQQQQAABBBBAAAEEELjvAgS8930I6ECoBMIV8O5etVA2zvnB7epcR98dJRpYwet+NO9FwHtq/045uW+HXD53Si6fOSlXL52XREmSSdLUaSX5Q+mM/+UoUUFSpcsUqinntR271ODVz028ePHuiUmknCQuXnOk2NMPBBBAAAEEEEAAAQQQQACB0AsQ8IbelBbvk0C4Al4NDpeM+cK4qsfad5d02fJEu8Jl4wbLn3u2SpIUqaRJ9y9d3qdEgxhlLZqGqUTD3xfOydrpY+X0gV1+zbwsBUtKibpNJVX6zH7tH+xOdgh49TOTMm06iSdxLOCVO3L5/Nk4F2wHO5c5DgEEEEAAAQQQQAABBBBAILIFCHgje3zoXQAC4Qp4r129ItP7dTJ6kizNw1Lvtd6SKGkys2fnjx+W+V99aPx3htwFpVabrgS8lnELV8B76cyfMmdQr2izJEnKNJIoWXKj9rGnrXzTVpK7TJUAZlhgu9ol4M2YPbd0Gz09sIuz+d6fvNxYTh89RMBr83Gk+wgggAACCCCAAAIIIIAAAncFCHiZCbFGIFwBrwJtmPOD7Fm10LCKnyCB5C5dRZI/9LBcOnNSDm38Xe7cuW28V71VZ8mcr4iLKSt4w7OCV8d7nj7A7tRxwztz/mJS5snnjFIMjm3NtO/k4IbfJG+FGpK7TFU5sH6F7Fu71Hy//uvvS5pM2cLyGSDgDQtrSBol4A0JI40ggAACCCCAAAIIIIAAAghEiAABb4QMBN2IuUA4A97/bt6Q2YN6ydUL5zx21N3qXd2ZgDc8Ae+Fk0dl3tAPjPEoWquRFK3VMNrYOFZXa23kFh+Okvjx44u+tvDrAXL71i1JmCSZNHz7E0mYOEnMJ6ClBQLekJOGrEEC3pBR0hACCCCAAAIIIIAAAggggEAECBDwRsAgRFIXUqRIIbdv35arV69GUrf86ks4A17twH//3ZJti2bKrhW/mit29XUND/OUqyaln3zOCBCtGwFveALegxtXyZqfxhgrqlv0GSHx3NhrMD/l/VeNIWnY9WNzde+xHRtl5cThxutVnu8gjxQu7dccC2QnAt5AtO7tvgS899absyGAAAIIIIAAAggggAACCIRXgIA3vL4R33qlRyvLCy+2ksJFikqmTJklYcKERp+vXLkiRQq6PkwsWbJksnzlGvOalixZJN26dvZ4jfHixZOly1dJ8uQpjH0OHz4kzZpGX2UZKqRwB7yOfup5/v7rrFw5f8Yo05AibQavtTx1v5vX/pXEyVNK0lRpQnW5ZjuTP+8l6xfMiuh6ouGowbt14QzZvnS2pM6YVR5/4+5KXnfbpB5tjJdrtukqGXMXNHeZO0TLOxyTAlXqSqn6T4d8XAh4Q04asgYJeENGSUMIIIAAAggggAACCCCAAAIRIEDAGwGDcL+60Kv3B/Jy2/ZuT3/r1i3JnSOLy3up06SRLdt2m69p0FmqRGH56/x5t220a/+a9Hivt/nepUuXpFjhfGG73HsV8IbtAoJsOK4GvI4VvA8mTirNew91q3ft78syvf/dHyFqt31X0ufIa+63dsY4oyZvuux55bF27wap7/kwAt6Qk4asQQLekFHSEAIIIIAAAggggAACCCCAQAQIEPBGwCDc6y7oytpf5i6QokWLGafWYHTbtq2ydctmOXrkiOTJm1eKFC0m9evUdOmaNeDVN+fMniUd2r/i9hI2b9stadJErVgl4A3PSMfVgPfCyWPGQ9Z0q/T0K5KjRIVowJvm/Si7Vv5qvK61dpOnedjcZ8fyubJl/jTxFhDHZMQIeN3radmMvy+cM+ofJ0mRKibEQR9LwBs0HQcigAACCCCAAAIIIIAAAghEoAABbwQOSri79PobnaVrt7srFi9evCgvtnxGtmze5PO07gJerderq3K1pIPz1rhJUxk8dITLa3E14D20abVcPndK0mXPI5nzFfXpHOgOcTXg1R8mNOC9eOq4QVa4RgPJXbqyJE31kPx94azsW7tM9qxaaLyXPG16adhlgAvtH79MlL2rl0iChInk6T5fBcruc38C3rtEN69fk+1LZsnJfTvl77/OyK0b113s7pYueUhyla4secpWlfgPPODTNqY72CHgTZI8pdy49o9W+Y7p5drmeP37JP4DCeS/m65zJNIuQL979IdSNgQQQAABBBBAAAEEEEAgUgQIeCNlJO5RP/QfpTt2HxCtp6v/mK5UvrScPPmnX2d3Dng3bvhDSpUuYxw3dcpkebtLJ5c2fl+7QbJkySpnz5yRZMmTS9KkSSWuBrw8ZC08D1nTCXfpzJ8yZ1Avn/O32otvSJYCxV32m/nZO3L1wjmfNXx9Nu5hBwJekcNb1sq6GeOihbqeTHU1dfE6TSRvuepuH5oX7FhYj7NDwJsoaTJp23+EZMqRO1SXHfHtrF/4i8z5drDcuPZvRPf1kXyFJV+p6HcMRHSnY9i5JVO/k9v//UewHUNHDo87AvwQFHfGmitFAAEEEEAgUgQIeCNlJO5RPzq+3knefqe7cbZRI4ZL/359/T6zc8A7Yfw4qVGzlhHi3rx5UwoXyC3Xr99ddVWx0qPyw9Tpxp/1IWx9+vazdcB79eJ5WTlxuJRp2FIefiSX316OHQl4wxfwqvH544dlxYRh8u/lC9HGJl68+FLl+Q6StVDJaO/pP74cWzhW48X1gPf4rs2yYnxUbWQtyZDi4QySKn1m44GDe1cvNoJfDXVvXb8md+7cNscjd9mqUr7JSwF/1vw9wC4Bb8cvx0rmnFF1o/29Prvut2bedJk58rOIDnj1e6Nc3cbyTBfPD3a0q7+3fnepV1Lu3L4dsQGvjkviZCnk4cxZYyO/x2u6evmSXDj9Z8SOi3b8gQQPSvwECeSB+OG/OyNSBl9/DJH48eTGv3oXBhsCCCCAAAIIIHBvBAh4741zxJxl3oIlUqhQYaM/JYoVlMyZMkvZ8hUkb958RlC7a+cOmfbTVNGHrFk3a8C7ZvUqGfbV18Zu3435Rvr07mn8ef7CZVKgYEFzxe6uvYdsHfBePndaZn/Zw7i2zPmLSekGz0qKtOn9HlMC3vAGvDoQ/926KUe3b5C/ThyWy2dPGbVdH86WWzLmLijJH0rn91iFcse4HPBqnd3pA7rIzWv/iIbspZ54RvJVrOkSQmxd9LNsX/KL8ZnSFdYndm2W1T+NMY7RreLTr0hON3WVQzFGBLyhUAx9GwS8oTcNVYt2CHi1vMvn8zaG6pJt0U5cLdEU6YNjl7//k6VMHdE/DoRjnO/IHbl66WKcu+5wWNImAggggEDkCRDwRt6YhLVHf2zcJunS3w0ntXyC48/OJ71x44aM+GqofPn5py59sQa8Pbt3k01bdspDadMaq3cL5M0hufPkkUVLVhrHfdz/I6Mduwe8f/91VmZ9frdmsWPTFYbF6zQ1Vgz52gh4wx/w+hqD+/G+Xf6BlzF7buk2+u6K+1BtZw7vk0Vff2w0V7VlR7crqK+cPyO/fHH3boIWfUcaq7y0Xu+8YR/I3+fPGMFww7c/lmSp04aqW2Y7BLwhJw1JgwS8IWEMSyMEvGFhjXGjBLwxJgxLA3b5+/+hDJml8avdwmIQqY3OGPFpxK96fzBJEnkwQcI4FULrHSJXr1yKU9ccqZ8R+oUAAvYWIOC19/gF3Pu9B45KokSJXI7Tlbv6vyRJkrj8xdr/o74yauRwc193Ae9LrVpL34/uPrxqyOAvpVy5ClKhYiX5559/pFD+XKK3Tdo94NVr0zIA+lCu88cOmh4aQBWp+aQUqlpPHngwocexIOAl4A34g3qPDtDPZzgC3j2/L5YNsyeJlmVo1muI26vR/2d+8nuvGO898eaHkipDZuPPF0+fkLmDext/rtCsteQq9WjINQh4Q04akgYJeEPCGJZGCHjDwhrjRgl4Y0wYlgbsEvCG4+//sICGsFE7/P2fMHESqd+qo2gAH1e2PRvXyPoFs+Tm9ciuwR9XxoPrRAAB+woQ8Np37ILq+ZHjp43jtATD5EkT5LNP+hulFHTTB6/1G/CZNGn6lNl25Ypl5dixo8Z/uwt49XV9aFvy5MmNkDhBggRGSPzV8CHyyYB+xnHeAt4MuaPXRg3qwkSMh8adP7pdPpu7IdgmfB536sAuWf/zeLly/q6jbgkSJpJSj7eQXGWqSPz48aO1Ee6A94cv3pddGzZIstT3pxSBTzQR+efiKXm8VXspV6eRP7v7tY+u9jy4cdXduZvqIberRP1qKEw76T/wRr7bXlKkyxGmM8S82ev/XpEkieJL15FTY96YUwuO8gtab/eJTh96bHtSjzbGe9VbdZLM+Yqa+y0a/amcObRH8pSrLuUavxDSvmljn7Z9Sm7cjC8JkyQPeduhavDK2cPy6qdfx7kavPPHfyNJUmcIFWPI2/nn0lkpWKastOj8fsjbjuQGNeBNn7OYsbI+Erd78fd/JF53XP37PxLHwrlPcfnv/0gfG/7+j8wR0h94I/3v/8iUs2evTh/YZM+O02sEbCBAwGuDQQpVFxMmTCj7Dh4zmtu/b6/UqlHFbdNTfpxhrMLVre8HveXb0aOMP3sKeDu91VU6v/W22ZaWeCiYL6dZxzc2BbyOizyybb1snD1Z/r1yNxzXLUnKNFK2UUvJ+n/sXQl4TVfXXgQhCTIYMkiIRCKNOYSYiXmmpvqKqvK3paqtmlpDqWpNLYqiE0XN1BTEGBJjgkQSEXNCJiGjBIn+z9q357rDyc25ydnXSfbez9Pn8+Xus8857zr7rLPevfa7vJpo4coJXjoEr6Y2MgJuTLbnoRVzIC0xnpAVg2evhPLmFeWaZupxWA7w4iJD4czm1QTfofPWgJlZOT1805MewcHls8jfu388C+xqvSbCQw9shZiQQLB2cIZen8yV3TY8wNOHFHWTs54+JlnXqGH9JlpJCPA4wcsJ3jcxNwo6Jyd4lWSN19fCsv9XpkVeXxX3/8q0UEnw/8pErmReFSd4S6bd+FWXDAQ4wVsy7CTbVd66Gw/ly5eHxykp4NO0gei4Awa9DctXrCa/HQs8AmPHjCL/LojgxazVG7H31NIPmzdthJnTXxO+pUGiQQwo3GJ+61IQXAmwGT5WAAAgAElEQVTYDnkvnqu7ICnlO2AUVHOuS/5Gm+BldYumLsGLWHcZNxVquHoWOl/Qbhf3bCD9jCGGCx1YowPLWzSRKNy3eBpBw7N1V/DpM1wLOqwwfmrjckiMjSR/HzTzR6hoVUXdJ/LUQbh2dDepvD58nmqBSc5WErZomltYwsRlf1LL4MUM+Osn9kFCbBRkPUnWeoch1mgPi6q2UNenLbi3aA9YwIp24xINKoSfP8uGp4/uQ8bjRFI0EnXg8Xmwsq0BljbVSOFI9C+msIlgcy7RQPvpL9r4rPr/oqFluqNY9v+mQ7loZ+L+v2i40T6qJPh/2hjw8TkCHAGOgBwIcIJXDhRL0BhCkTXMsq1X11n0ypu38IVde/aT3y5fughvD+xL/l0QwYu/zV/wPYwaPYbIJDTwcofs7Gz12KWV4BVuMD/vJUSfOQIRx/6Bf/99pb5vR89G0LzvCAjavArSEuLAtakf+A35QPanhdUAT4zgxYzRXpO+Ueu5FgR2fn4e7Jo/iZBaTl5NocPIibLbhfUAL2TbOrh37QLB1dapDrj7diCZoUj+3r50BtISVbsJ7Ot5Q+cxn2vhH7xtHdy/dgHKV7SAIbNXym4b1gM8tAsucGguTBkCGe3QuNtAqOfbEcqIyNDIZaCSEOChbrVv9wEw/Itv5Lpt9Ti4aIi+BBc3NH2J2Ikw07pR14EmI985wfvaCrhAhe+xzMdJhHyvgOS7TTVCvuM7DmWqTNVY9f+G8FXCbgTW/b+pnv+inId1/18UzExxTEnw/6bAgZ+DI8AR4AgUFwFO8BYXwRJ2/IGAQGjYsBG5ak19Xc3bGPG/kbDwhyXkT39t/BO+nqnKxDNE8GLhtg4dO0NiwiMID7+mhUppJ3iFm32R8wwiTuyHmOCjok8FJ3hnyKrBq0nwtnnnQwjZuo6QIqiJjLqvltZ2Bmdn0KZVEB8VBoXpxBZ1irMe4L3IyYZ9S2YA/m9BDTN0e06Yo0fIo20wq7SaixvJhpe7sRzgxUdfhaC/XpPmSBRWrlaTzAPM2r157jghfpHUzXueq0U0urVoDy0HjpbbHOrxSkKAR4vgxazdwz9/A9lpqUbhi3bq/P4XWhInRg0gsTMneFXFVi/s/oPI+xhquGjYpPsgMqdoN07wAihxNwLr/p/2c1+c8Vn2/8XBjfaxJcH/08aAj88R4AhwBORAgBO8cqBYgsb4vw8nwMyvVRXqb8bcgK7+HfSu/kzIRXBxqU3+Pmb0u3DieCD5tyGC1xAErBC8AgY5mWlw7egeuBN6VgsWTvDSI3j7fL4AMh8nw+mNywnmmEXVY+JsqFTZusBHM+L4Pog4/g8hhIfOVUmSyNl4gAfwIjeHZIo+iLikBy1qVncdP41sNzd1YzXAw8y23Qu/gJe5z4g+crPew8HDr7NWxqFQIA93IHQYNQkeRl+Fczt/J8dg8xs6DlybtKJispIQ4NEieM9uXQsPwi8SXJF0b9JjMFjXdAIruxpQ0bIyHP9tCSTdjgaXhi3ArpYrxF48BVmpyaQ/krz9piwEcwt6RQNZJngxs/rCng16Pr2wSeDk1YQsiGjKzxR2jLG/s07wKnU3Avf/r5/kxFtRkBAbqZKcSU6A7PRUMK9kCRbWdsT/4391mrSCqtUdjH38i9SfVf9fJLBMeFBJ8P8mhIOfiiPAEeAIFBkBTvAWGbqSe+DF0GtQs6Y9uYHgs2fgo/8bC+np6WBjawvrf/0TWvi2JL89eHAf2rX2Vd8oJ3iNs3lmajLZaosftdhcm/iBV7vuxg0ioTerAZ5mBi8SvFWq2RNNZEFbF4NqLN5laW0riuKlfzZB7IWT1HReeYD3GnYsRvgENUVTEoiuq51TnTdC7ApXxGqAl3wvFo6t+57A0P7diVDrraZ6cwPfW/uXziB/HzbvFzArV55kyAX8/A0hFJEY7vfl94VmyEt4del1KQkBHg2CF7f571syneDhUK8BtH93ApiVr6CFz8OYcDi9YTkhfwfPWkHkkGKCA4kGPDY757rQ9f9mAGri02gsE7yCJriAay3vZmDj4AKV7WqQxcTzu/6A7KePSVFIJNmT78SoM9/xbz0nzKYmbcKq/0dbKHk3Avf/QGRMLuz+kyxMSWmmynxn1f/r2kBpxHtJ8P9SnmPehyPAEeAIvGkEOMH7pi3wBs7fzKc57N57QCtrKy8vD8qVe13pHjV6O7bzg4cPX29F5ATvGzCWhFOyGuCJEbwIV+TpQ3DtyC6CHGa2+X/wJdg6uughufu7zyA3KwMq29WEvl98JwFp47rwAM84vEzZm9UALybkOIQe2KImCcUwx2zFv78eR37q/el8tXxGWtJDOLRctfuDVmHCkhDg0SB4H0RchrN/ryHk+aCvfiIF1XQbSp3snD+J/HngjGWEWMQm7ETAf6NUg737W1SmEqsEb252JuxeMJlgirsOOr43GWzsa2lhLCwsCnI/zzLS4NyOX9XEloefP9Hjp9FY9f9K343Auv9PT34EB3+apffI4xwyt7QidSkKai0HvQduzdvRmC5kTFb9vwCoUon3kuD/EUP8BmCxmVJbnkV8+T1zBOREgBO8cqJZgsaqX98Lft+wCZyctAMVvIVLFy/A2DEjSVavZqtatSqER94kf9LU5i3stgWJhrS0NGjcwLOw7kX+HZ0uVhVfEhBW5DFK4oGsBngFEbxowysBOyD6zGG1ORt3fxs8/fyJHAO2O2EhcH7nb+TfuOW57Tsfym561gM82QGVcUBWAzxBfqEw3ektM8cStJHMcvRoqEb+2PpFkHw3Btx9O4LvgJEyWkQ1VEkI8GgQvAJJW6W6A/T57NsCcRXs0mXcNKjh6kH6ISG/94cpgFnyjboMgAadVUVR5W6sEryPbkbAqT9/InD2+nQekc3QbSjLtGfhF+TPg2f/DBUqViL/Pv3Xz/Aw+gr5d89P5pCsX7kbq/5f6bsRWPb/+I4MWDlXrVUtFBzWlGPCrHeUMavXqhO4NW8Pty8FkR1VQqM1X3B8Vv0/3ruSifeS4v8rWloBsMbxlgHIzc4yaQFRuX0lH48jwBICnOBlydoi92pv7wB+rdtAXTc3CL92DUKCz0B2dsFFkZQMFyd4TVe529jnoLx5RRg0ka4GL0o0aDbNzDb8O2bHWdpWI4WjMHNXaL0mfQPWOhlZxt6fWH+WAzw58KM5BqsBXlxkKJzZvJrMhaHz1oCZ2etdGwLe6UmP4OByVeYVSpzY1aqjNkXoga0QExJItqL3+mSu7CYqKQGeb/cBMPyLb2S7fyGzGrNyMTtXrGHG4rY5H5GfdDN1Bf1eJFI6jv5UtuvSHIhVglfYEYJFO/tPXVQgtgL5rjlnsHDenu8/h1d5eeDTZwR4tvaX3TasErxK343Asv9/mvAAAlaq3o8N/ftDQ/9+es89Fiw8sno+8UXD5q8l0jL4t8B1C8l8QSmafl/+oF4skXPisOr/lU68s+r/5Xy2aY2ldP9P6775uByBkooAJ3hLquX4deshQJPgRWLjQYSqAE6H0ZP1tvyjRiVWnjfUMHsUiU65G6sBnqEMXgFj3PocvHWtWg9RF3uvdj2gac8hcpuEjMdygJef9xISb0dDufIVoGbd+pLxxer02elPoLqLGwnwaDVWAzzcmrlv8TQCq2frruDTZ7gWxK/y8+HUxuWQGBtJ/j5o5o9aBaIELdKy5crB8HlrZTcPqwFeyv1bELh2IcGzx4TZYOukKnKq2TDbDbPesPX+7FutgkTXTx6A8MA9xFZoMxpN6QEeLf8vELxY7K7fFyob6TY8999ffUD+3PG9z8DRo4G6y6kNy+FRTDjUadwSWg8bL7tpWPX/St+NwLL/vxMWDOd3/k7qGwybu0ZUf1pzwarflO/VmvxxkWFwZvMqMk/a/e9jcPb2kX3OsOr/lU68s+r/ZX/AKQyodP9P4Zb5kByBEo0AJ3hLtPn4xWsiQCvAw2I22+d+RLIKMIAeMH2pXiGbs3//Ag8iLhk0iGtTP/AbogoC5WysBnhSCF7EGbOobgQfhbjroZD1NAXKljUjW2Xrt+1KJXgQbMtygCfYxlgi8OQfP0JC7HU9aQA55wuOxWqAh/cesm0dYOV5bLZOdcDdtwPRc0Xy9/alM5CWqNJGtK/nDZ3HfK4FffC2dXD/2gWibT1k9kq5zcKsRIOmnigubGABPEGCAUHGAmtBG1eShSpcKBw8ayWRIxLa1cM7ISoogFrBSDyP0gM8Wv7/0c3rcOpPFWmuu+Ah4I+LWSd+W0L+b89P5oKNg7PaNtcC90DkyQNgiCAuzkRi1f8rfTcCy/4fF5tw0Ql3RuEOqYKakPXeeewUsHfzUnc7tALlHeKgfrvu0Kzn0OJMD9FjWfX/SifeOcEr+6Mu24BK9/+y3SgfiCNQShDgBG8pMSS/DZXwPQ0NXmErGWJc0DZLIYPKkB04wSuvRANqTp7dsoZA3nbEh1CpsrWipgHLAV5xCV5a25mFB4TVAA/vH4t17Vsyg/xvQQ2J+Z4T5qgLrAn9gjatgqwnyVDNxQ18B4ySfb6xHOA9vBEOpzcuV2OKJHpFy8qA+q6au0Oa9hwKXu26a2F/CPUuE+KgMBmB4hhM6QEeLf+PC4S7vlUVt6te2x06jJqktbsgO+0JHP3lO8jJeEr6DJmzSmunjiAVZOxil1RbsUrwKn03Asv+XyASDS0EokwWFrrF1mX8dKhRp576kb+wZwPR5K1eux50/b/pUqeC5H6s+n+lE+8s+3/JD+8b6qh0//+GYOGn5QgoFgFO8CrWNPzCjEWAVoB3P/wi2eaPTXMrmeb1CR+0+DcsdKPZos8ehZe5z4ATvPISvMY+H6buz3KAV1yC1865LnT/6CtqJmM1wBMAfZGbAxf3bBDddYBVzruOn6beMkvNCCIDsx7g3QgOhLCDWwuE3MPPH3z6vKNX6CTlwS3If/ECzC0ra2WPymk7pQd4tPw/YijINOC/kahFrWOLKjaQ9SQFEm9Hkd092DAbXnfh48Qfy4jkCS35DFYJXsRbybsRWPb/TxPiSJE1bK2HjoM6TVrpvYo0C+Gi1q6VTTV1H2G+0dopwqr/Vzrxzrr/l9Nfyz2W0v2/3PfLx+MIlHQEOMFb0i3Ir1+NAK0AL+p0AFw9spMUgxj+7TrRKqLxUVcgaNPP5FpGfPebllWE7CpO8HKCV2nTFeeMfW03mLp+t6yXpimf4eTVRPLYSbej1dmKzg184K32vbSKfEkeqJCOrAZ4urBgFvyTR/chIyUBLKragp1TnTdC7ArXxQM8gPSUBIg6dZAUHEJJGXOLymDn7AouDZoTHdc31ZQe4NHy/4g3yjSd3rgCEm5GFAg/bkf3/2AqmFtoa4fj98PzZ5lQtYYj1PVpK7v5WCZ4lbwbgWWCV7eYl3enPuDm05b4GHynxV44BTHBgWQuiEmXXN6/GW6eO0HkaIbOXS37nGHV/yudeOf+X/ZHXbYBle7/ZbtRPhBHoJQgwAneUmJIfhv0JBoEDT1D2QR3wkLg/E4VscsJXv2nEYvLDZpoeoI3Pz+PZE+lxt0hhAkG36g76uDRgATcNBvLAZ4mwVscjDFTruPoT4szhOixrAZ4sgMp84A8wJMZUBmHU3qAR5PgFWDEQnfXju4GXBgRGn4XOHs3gxb93wWzcuVlRFzaUCwTvIiQUncjsOz/0S7pyY/g4E+zCn2IUfLEqX5jrX7/LJ4G2U8fF6rhW+jgBXRg1f8rnXjn/r+oTzT945Tu/+kjwM/AEShZCHCCt2TZi1+tAQRoBXj3rp6HkO3ryZmHzF0N5SuY610FBn1YYV4s44Bn8ALRJKRB8KLNsZUpU0bPJqidePKPpfDk4X3Rp6ZB577QsHM/0QrPckw0lgM8TYIX50RRm0vDFtDq7TFFPbzA41gN8GQHUuYBeYAnM6AyDqf0AI+W/xeDEIviZT15DBUrVwFzCysZUTZ+KNYJXgExpe1GYNn/CzbBRXXc2SboU2s+3bgjrt3/PoZabzXVe+iF77qCvu2MnyXaR7Ds/5VMvLPs/+9ePQ+JsdfJg4oZ71Wq2Rf3MZf1eKX7f1lvlg/GESgFCHCCtxQYkd+CCgFaAd7TxHgIWDGHnMOrXQ9o2nOIFuR43l3ffkqKFoltN+MELx2C937EJQj++xdiC/9xU6Gmq6faLv++egX7lkyH7LRUg9NDTDNRrvnEcoBXVA1eubAvbByWAzxNbNKTHsGty2cg83Ei5GalQ05mBtELL2tWjmiGVqxcFSpVrgq1vJpALe9mYGZWrjBoi/U7ywGeLnBYWC07/Qk8z8qAZxlpgEWJcLEE7VGpirXqf01YWFLpAR4t/1+sB9oEB3OC1wQgF+EULPt/Tbjy817Cg+uh8OThPchISSTvLSzSae/m9cbkgFj3/0ol3ln2/3sWfk52huDCx+DZK7UKdeJ8Cj24FR6EXzT4JkIJoMbdBhXhbVX4IUr3/4XfAe/BEWALAU7wsmXvUn23tAI8JAv3LpqqzkJo0KkPeLXvSRzw82dZcG7Hb/AoJpxg692xt56D5QQvHYIXM6YxcxrbO9+u18rE1ZTMwKJRbYaNBxtHF3iVnw+PH9yGy/s2qcnfbh/OJAGH3I3lAI8TvMV/mlBOZOKyP8HR9XV18eKPqhoh8VYUXN6/hWjvSm1YXKpey85kgats2bJSDzOqH8sBHgKFWq+o83rz/EmDeq8CqPhu8/TzB7cW7ahnkio9wKPl/w09wHhO/AZ4npUJ5czNyaKIqWUaOMFr1CvGZJ1Z9v8mA7mIJ2Kd4EXYlEi8s+r/Mx4nwoFlqqLC9dt2g2a9huk92ZpFCQt67GnVecHzKd3/F/FVwA/jCJRaBDjBW2pNy96N0QzwUu7fgsC1C7VAxZXWf/99pfW3QTN/JEGeZuMEL12CV0wb+fhvSwALdmHG24DpS6FCxUpaNnn5PBf+WTSVZF2jDEDbdz6UfcKwHOBxgrf4jxMtghezd46uWaD17sJ3WUWrymBWwRzKla8A+S9fQt7LFySbFzNJNRtmidCQzcBzsBrg4b3jQiK+t5Lvxhj98KD9ekycBTYOLkYfK/UApQd4NP2/gBH6C1w8vH0piCwQ6s4N7Ie2MLe0AtQP92ztT9UmeD5O8Kqso7TdCCz7f6nvlDfVjxO8bwp5w+dl1f9rFunuOekbsLGvpQfUrUtBcHHPBvL36rW1F/0xaQVjUU7wKvO55lfFEXgTCHCC902gzs9JBQHaAR5q8Z7f/Qe8ysvTu37Mbuv8/hSoUUc/244TvHQI3kc3r8OpP38kthg+fx2UNTNT22X/0pmQmZoEnq27gk+f4aLPm5ABLCarIccDynKAh4VvboYcg3LmFaF+m65ywCnrGKwGeEgibpv7kfod5uHnD3V92hASSkzHGkHPyUyDpNs3SMYvElzY/IZ8QIIJuRurAR7iGLxtHdy/doFAiiRhdVcPcKjnDZZVbclCFf6Xn5cHL5/nEDvgomPynRvqgl/4e+/J88HS2k5us5DxWCd4r5/YD+HH9hqNLRbz7DJ+OinwSaOxTvAqdTcCy/5f9zlHv5NwKwoyHydBTlY65GaiHFA62QWHCREoOWNRxQbs3b1MIjvDqv+n8f6Rc0xW/X9MyHEIPbBFNJYR8I2LDIMzm1eR/2vqQt4lwf/L+RzysTgCpQEBTvCWBivyeyAI0CZ48Ry52Zkke+dx3F3ISk0CS5tqUL22O9Ru5FugnlhYwHZ4En8PnL19SEaP3I3VAA+3xqL2Mbaen8wFGwdnNbR7vp9CJDV8+owoEHNBwxfJ+eHz1sptFuABnuyQyjYgqwHe04Q4CFg5l+DYeth4qNO4pWRMcb4dWj6bBOa0st5ZDfA032XW9s7QacxnRKtSSos6HQBXj+wkXb3adYemPYdKOczoPiwTvJrZUwgcIeDr1CNkOkozkKz3vDyS0Yu2TI27QzSThWZtXwu6f/QVmJWvYDTuhR3Aqv9HXJS8G4H7fyDa4VGnD8Gd0LOi2e5iz3ZNNy+yTd3Js1Fhj36Rf2fV/+sCpjTinVX/f/Xobog6dRDEdiMKNrsffhGCt6riFE7wFnnq8wM5AswgwAleZkxd+m/UFASvElFkOcDbMe8Tso28hqsndBk3VW2eY+sXka3ODTr3hUZdBoiaLeL4Pog4/o9oYTw57MwDPDlQpDMGqwHerYun4eLejYSgGjZ/rdFaulcP74SooABCbPWfukh247Aa4D28cQ1Ob1xB8Hz76+VG6+kGbV4F8ZFhYOdclxCJNBqrBO/LF89hx9yPCaS4GNhuxMdEfqGgjHcBe1wICdm+nkgFYcPiN6jRL3dj1f8rfTcC6/4fkyFwQVBzocOYZ7/V4PehbrM2xhwiuS+r/l8ASKnEO6v+X3MB8Z0Fv4r6lugzR+BKwHbig3QTUmjvEsXnRun+X/Lk5x05AowgwAleRgzNwm1ygreMYs2MW/EGTZwBvt36y3qN4YF74PrJA2TMhl0GABbAw8A77NA2uHH2KAnEO45WZflqNgw69i76kmxVr/VWM2j/7gRZrwsHYz3Akx1QGQdkNcATFjWwONfA6UuMRvTm+RNwed9m0SDD6MFEDmA1wFPbpXJVGDhjmdFQxpw7DqH7t1CzS0kI8Gj5/+R7sXBs3ffEJr0+nQfWNZ0k2wev6cjqb+HJw3vg4NEQOr03WfKxUjuySvAqfTcC6/7/wI9fq4t4okxJnaZ+4ODuDRZVbYjcDGazv8pHyZlceJHzjGS9o9zG3Ssh6kcfpU3EZM+kzo2C+rHq/xEPJRPvrPp/1NA9+st35HEtaGHj0Io5kJYYL7q4zgne4r4R+PEcgdKHACd4S59Nmb0jWgGeIUDzX76ArKePoUIlS8lbauU2EKsBHuKINscPIwwOsGEg0bTXUPIRdPCnWeRvg2etIPbBhpWD7145B5f3b1brkNIKIlgP8ITn/EHEZXhw/TKkxt8lW5lrutUnmWyVKltrTQXcbovVhKs514XKdjXkniZa47Ea4Glniq4wWheUdqYoqwGeZmb18G/XFZodqjs5aGdWs0zwCplThrbPGnpZRZ4+BNeO7CI+CH2R3I1V/6/03Qgs+/+sJymwb8l08qjXa9WJSGWVLVtW0qOf8uAWHP91Mfk+c2vRHloOHC3pOGM6ser/ESMlE++s+n+U9tn57STyzJN6LmM+J7sShaap0StWSI0TvMbMft6XI8AGApzgZcPOTNylKQhezDa4fmIfJMRGQdaTZD1dMSwYYVHVFrDSvHuL9lqFv2gZgdUAT8ATNQ+xqJpQAEoXZyR7y5iZkcIeulXPXZu2Br8hY6mYhuUAj5Dp+XlwYefvcO+/wlGaIGMGT98vviMk78Mb4RC89Rct2+BWc8x2E4h5uQ3EaoCnqfWKiyGdx06RvDClqfVav113aEZB65XVAE8rG3HoOKjTpJXkR94U2sic4N1uUB+RE7yGH1caO3iUvhuBZf+PPj9k2zryUAz7Zo3R2tMX9mwgtS7QR2HhSLkbq/5f6cQ7q/4fn29dnXcs/oyxS0ZKIqknIjSxXSSc4JX7DcHH4wiUfAQ4wVvybcjv4D8EaBO8+NF6cc8GycUiMOOncbeBUM+3I5SRmL1QFGOyTvASMjHvJeD28Yhj/0iyD2qQ+vQdAfVadjQ6W06qjVgO8BCjyFMH4drR3Wq4MDMBMxSEhsWk2gwfD4eWz4F//32lByt+4Pb9/Dsq9mE1wEOQz+34Tb0NFudBNRc3cPBoQBamkIjB/3A+4WIIbp19/OAWJMRGqrUUkZzHIMPKpprUqSC5H6sBHuqJ7pg3Uf3u8vDzB1x8snF0KTDzDTVe0S5hB7eqF7daDR4LdZu1loy3MR2VrsFHy/9rSjT0nPQN2NjXkgwbl2hQQUWD4FX6bgSW/f+1wD0QefJAkbXaBbKLVgFcVv2/0ol3Vv2/4FDO7/qDFCQsqDXu/jZ4d+il9zMneCW7ZN6RI8AMApzgZcbUpf9GaQV4iFx89FUI+mulGkTMLKxcrSbJMMCs3ZvnjpPgHEndvOe5WoQVrW1mwsVwgvf1s43E1L2r5wEz4jJTkyErNZlojv37Kp8EmVa2NcDe/S2ybbCiZWWqk4LlAO/5s2zYvWAymQc4V9qP/IRo6aF9ku7cgEt7/4LstFQt/FGj0tm7Gfn9/n9Zv7QKrbAa4CHgSCYe/20JKUJobENCuPuEWWDr6GLsoZL6sxzgoUTJ0TULtHwH4m1uaUUy4PD99So/n2hWoq/B4pKaDXeNtHp7jCSci9KJVYJXrMgavqsK23KOhYzO7fiVF1mjRPAqfTcCy/5fi0ic9wuYlStv1CtHyOC1tq8FvSZ9Y9SxUjqz6v+VTryz7P+F5xZ1qLGuCOq2o5/HBXVbpzrg2dofnL19RB9vLCqdci8W3H07QIv+70qZAkb3Ubr/N/qG+AEcgVKOACd4S7mBWbo9WgQv6uzuXvgFCagx4G7Wezh4+HXWyiwMP7YXrp/YT4p6dRg1CR5GX4VzO39XB+F+Q8eBqxHbbo2xGyd4jUHLdH1ZDvAexoTD6Q3LCdi9P50PVWs6agGP2YeokSzIarg0bAFt3/lQ3efUhuXwKCYcUKqh+0dfyW40VgM8AUh8Vz66GQE3Q45DQuz1QvHFrYL1WnaCus3bUl0YYT3Aw+Du8v4t6uJEhRoGgGj21WvZGZr1Gkol2124BqUHeLT8P96/7vZZVeZ7XbCwtoPy5pWgvLk55OflqbPeU+NuA77jhIZEFb7HkKiXu7Hs/5W8G4Fl/68pBYAJDi36jyx0QUSYF5oavEhY+Q4YJfeUAVb9v9KJd9b9v+6DjgkRxi6OyD5Z/htQ6f6f1n3zcTkCJRUBTvCWVMvx69ZDgFaAp7lFs/27E6HWW031zo3ZovuXziB/H/ZfxgJmWgX8/A3JIsWAsN+X35Mta3I3lgM8ubGUczyWA7wbZ49C2KFtUKNufejywZeisKJGHwYcOGWkBi8AACAASURBVDeGzPmZZCoI7e7V83Bu+3pqhYlYDfDEDIHvqWcZT+F5VgZg1iGS7mXNyhF95EpVqhKNXt2CeHLOE82xeICnQiMt6SHcvnQGMlOTIDcrHXIyM1QLjGXNCMFeqaoNsUstr6ZQy7spmJmVo2US9bhKD/Bo+X8BAFzAxYVcYxvu8sFCnuYWqkKfcjeW/b+SdyOw7P/xGccF3PTkR+Rxr1LdgeiK4+4pQQoI/f2r/NeLIo/j7pBFXWH3Dh5HqwAuq/5f6cQ79/9yewf5xlO6/5fvTvlIHIHSgQAneEuHHfld4Nbjf/8lRc2WBITJiodQwdRQFWwMNP7+ehw5r2bGIgbqh5bPJn+ntd2c5QBP19BPHt4n28+xmZUrB62HjQd7Ny9Znwepg7Ec4IUe2AoxIYFky5hYBg5mJmyf8zHZjo56o837jtCCVXPBZMR3v0mFXHI/VgM8yQC9oY48wHtDwEs4rdIDPFr+XxMaXPy4ExZCCkChxIxu0U7sK8hq4G4e3FZr40BHzkS4Ltb9v1J3I7Ds//HZRGks/PbNzcqQ8HbR70LrexnPxLL/VzLxzv1/4VMFZZoynySTnSMWVawLP0CmHkr3/zLdJh+GI1BqEOAEb6kxJb8RWgGeIL9QWEXfLTPHEiN0fG8yOHo0VBsE9ZFQ79LdtyP4Dhgpu6FYD/A0AU2+exOOrf9BC2PfgaPBvUV72XEvbECWAzxhUQRJjo6jP9WDCkmS8ztVxG23D2eSQl+aTdgSjZrWQ2a/1r4uDHOpv7Mc4EnF6E304wHem0Bd2jmVHuDR8v+G0MFzohbs8+xMIr+AWdWm3lLL/f9rCylpNwLL/l+wCO4IiT5zmCyIiC2GiM2tmm5eUL9tN3DybCTtxVSEXiz7fyUT79z/F/wwo+xZ2IGtZFeP0FCeydGjEbQcNBrMLayKMBOkH6J0/y/9TnhPjgAbCHCClw07M3GXtAK8uMhQOLN5NcnMGTpvjeh22PSkR3Bw+SyCc/ePZ4FdrTpqzIVsRmsHZ+j1yVzZbcEDvNeQahK8qN+aGneH/IgBQ9OedDUqdQ3LcoCXeDsaTvy2hMyZgTOWkkKEQsMMhL0/TFFn9tg61Qb/cdOgvIZEA2ZhJ92OBvytxwRVBrycjeUAT8DxQcRleHD9MqTG34Vy5StATbf64N2xt54cAxb/ynicCNWc60JluxpymkFvLB7gUYW3WIMrPcCj5f+LBZoJDub+3wQgF+EULPt/Xbhwh1vCrUjIfJwMOVnpkJuZThZGcMedSgrIGiyq2BAJB1wkod1Y9/9KJd5Z9f+4Y+3WxVPksUfN6irV7LWmQMy54xC6f0uB0wKJ3i7jppFvNFpN6f6f1n3zcTkCJRUBTvCWVMvx69ZDgFaAl/X0MexbPI2cz7N1V/DpM1zr3EhYndq4HBJjI8nfB838UYvQijx1EK4d3U2K4Qyft1Z2y/EA7zWkAsGLxOLw+Wvh/K7f4e6Vc6QDZpO2+9/HJsuwYjnAw8rze777jGTtVLarCe1HTgTMgM94nARXAraTIoTYUIcP+1jaVIO6zdqAlW11iI++AnHXQ8nvPn1GkG3OcjeWA7z8/Dy4sPN3on+s29Aefb/4jgTdD2+EQ/DWX7Qyr3DRpNN7k4k2Mo3GaoBXXCyPrFlAFrPq+rSFVm+PKe5woscrPcCj5f+pgCnjoNz/ywimjEOx7P9lhJHKUCz7f01AlUa8s+r/hR1vaJsB05aARVUbtZk0dZPxj7ZOdch/qF+dci9WndGLSRT9py6iFt8o3f9TeVHwQTkCJRgBTvCWYOPxS9dGgGaAJxSEEhwsaotipgGSv1gMJy0xjlyMfT1v6Dzmc60LC962jhSOoLXdnAd4r+HWJHjfWbCe/HD95AEID9xD/o0ko/+4qaRQEe3GeoB3J/QsnN/1R4EwO3k1IdW1DyybKbp9E0nEgTOXUSkgxXKAJyw4CYbBhadXeXlqO1nbO0Ob4ePh0PI5RCNZt1nZ1YC+n38HZcqUkX0KsRrg4dbyJ4/uQ01XzyJhemjlXEhLiAPXpn7gN+SDIo1R2EFKD/Bo+v+nCQ8gLUlVMMrB/S2tBdzCcKP9O8v+H+eNsPUffXqZsmVpwy15fNb9v2Sg3kBHlv3/G4Bb8ilZ9f8Rx/dBxPF/RJOALu7dCLcuniYYisnNaX5nN/TvDw39+0nG25iOSvf/xtwL78sRYAEBTvCyYGVG7pFmgIfFVfYtmUEqzBfUkCjpOWEOVK3pqNUlaNMqyHqSTHRGxQpOFdc8LAd4utiJEbzY5374JZKNiA2Jw67/N52QvTQb6wEezsdrgXsg6tRBPZgxU3TAtMXEFigBcPbvNZD99LG6H2b9IhFPq4gEqwHe82fZsHvBZELcIvbtR34CNerUAyx6l3TnBlza+xcpHqXZHDwagrN3M/K7UOGcVgEcVgM8zGzHhY7qtetBiwEjwbqmk1GvJk7w0iuyioY4tGKuehG3/9TFYGltq2Uf1AxPuXfToM3s6zUA1yatjLKrlM4s+39Bygdx6vnJXLBxcNaC7PGD25D5JMUgjFWrOxApILkb6/4ffYpAvmNBKJRjUEpj1f8rBf+CroNV/3/78hm4sPtPUYL38Kr58OThPahRtz50+eBLUejO/v0LPIi4RL4fMLah0TjBSwNVPiZHgB4CnOClhy0f2cQI0CR48VZe5ObAxT0biCPVbZWq2EDX8dPIFnNTN5YDPF2sCyJ4sd/juDukABtmK6KEQ6f3Pwd7Ny9q5mI9wBOART3ee1fPw5OH98mfqtd2hwad++pp7WE2PAbkGKTTJt9ZDfCwUMfpDcuJHXp/Ol9vMSonMx2wyrawkOXSsAW0fedD9Rw5tWE5PIoJB5Rq6P7RV7LPHVYDPIHgFQB1aeQLzXoNk7zAwQleegRvblYG7P7uM2KaWm81g/bvTtB77i/t2wSx508anA+0sqtZ9f8oA7Rj7scE84LqG5zb8RvcvRLyRuzCuv8/t+NXtTxWl3FToYbE3QkoZ4Z+CBeBm/cdIbuPwQFZ9f+vXr0iySbYyptX1NPbpwK2EYOy6v+fJsZDwIo5BKlBX/2ktcNwz/dTICfjKTTpPhje6tBTFE0hi5fWLlE8KSd4jXiQeVeOgAIQ4ASvAozAL0EeBGgTvMJV4scnbqfNSEkAi6q2YOdU540Qu8L1sBrgiT01hghe7I8kYuDa78kHEzaxLU/yPI0ArAd4cuFIYxxWA7wbZ49C2KFtBrNBBDkaXAQZMudnEmgL7e7V83Bu+3qS/Tt41grZTcNqgIeLh0GbfobkOze0MPVs041suaxQsZJBrDnBS4/gfXQzAk79+RPBv8v46STjXbdpFsHBeaPZBJkTTvDOAN9u/WV7Z+COguO/Libjoba+s7eP3tjRZ4/AlUPbDZ6Tll1Y9v9IJG6f+xFZTLe0tiPaoFLbhT0b4PalINK964czoLqLu9RDJfdj1f9rLiTie6r7hK/B1lFa9joS9ng8fg+gDB0NORRW/T9qIf/99ThVTDJgFKAEoNAOrZgDaYnx0Kz3cKjfpqvoM447SDD5iBO8kl8BvCNHoNQjwAneUm9idm7QVASv0hBlleDF7ebXT+7XMgcWJBAKeHkW8DH0MjcHcMVbaLQKebEc4InNESxG+Cz9CfmprFk5rUISpp5TrAZ4oQe2QkxIIAkgxORicFvt9jkfEwkHDz9/vQwqrPa8f+kMYq4R3/0mu9lYDfAEIJPvxcLlfZvVcgBkrpQrB427DgSP1l0K1KPmBC89ghf1D1EHEduQOatI5ptuEySAkDQRtN/VATplfWRW/f+dsGA4v/N3ArNuYVsBe9w5ErJdpcXfTWfHQfDWtUQWiBO8bjB1/W5Z3+WoWR2w8hsyprFyPtlpT+CfRaqt6PVadYIW/d6V9dpwMFb9v+5OESRr+3y2QNK32NXDOyEqKIDYosPoT8HJs5HsdmHZ/wsyQOhD+k9brN69gxJ/8VFh4OHXGZr3/Z8o5sd+XUwWh2ntrMKT8gxe2R93PiBHgCoCnOClCi8f3JQIcIJX/qJHctkPg+JBE+XN4NH9WC3qtfIAT/4AT8wWQna18FuDTn2gUdeBRTVbsY5jNcATqjU7ejaCjqM/1cPwTlgInN+pIm67fTiT6IZrNtqZIiwHeJo4P7xxjRC9mnrImDWNW5briOi4coKXHsGLBTqxUKeh7Ki4yFA4s3k1MaHuwgdt27BK8Eac2A8Rx/aK6lYKcyk+6grJjH8TdmF5gfdBxGWiq49NTLMa/56fnwf/5ueTxV5dfd4jaxZAatwdaoQVq/5f7JsZM6x7Tvqm0F0imvr9rk1bg9+QscX6BhM7mGX/n578SF3YFn2939APCIkuLB6KZcLjHIo49g9EnT5E4PTu1IcsBtNonOClgSofkyNADwFO8NLDlo9sYgRMRfAm3oqChNhIyHicCBnJCZCdngrmlSzBwtqOSDXgfxiEY/EOUzRWAzzNbMLi4EzrY5XlAE/MHroEL/ZxbuADrYeNLzAzsTh2NXQsqwEe6iGf+G0J0aAeOGMpVLSqooYJM6z3/jAFUHMUGxYe8h83DcprSDQIRY3wtx4TZstuHpYDPF0w0Z+hfmjYwW1axT2xAKHvwFFQs2599SG0SUQ8kdIDPFr+/0ZwIIQd3ErmjG52rmAAQaKBZ/CKvxJoLPAi6Y7kO2YhDp2rItd1m7AghX83NfHOsv+POh0AV4/sNDhnTv+1kuy2Evv+urx/C9w8d5z4J8zOlrux6v81CV7vjr0h8r8CuKhhjZr6ZuXKG4T6xB/LIDE2knwbcP+vylCXs2nuOMBxsRYFalfHXlDpu+OuK6z3gjsVM1OTSD0Y4XsNSWHM/NX8XpPz2pTu/+W8Vz4WR6A0IMAJ3tJgRX4PBAFaAZ4AL+q3YqXTpNvRkhB38moKTboPol4wilWCV7C5pjGwkvmx9YtIYDH823WS7FSmDJ3MZ5YDPDHgNfWRvTv2Illx2DC48B/7JZhbWEqylxydWA3wsDDRnu8+I9XNkShsP3IieT9h4HclYLta3gRJE+xjaVMN6jZrQxat4qOvQNz1UAI/LVkTTvDqP92YpRN77gRcPbqLaFoKDQO/5v3+B9Y1nYATvPT8Py7onvh9KYG9IE1QofhgpcpVYeCMZVpGpG0bVv1/fPRVCPprJcG6oCxRQc9VTDOctl1Y9v/XAvdA5MkDBsl3YVs5+p/ek+drzRlhp4mhRZXifAew6v81Cd4+ny8gRfDQTthqunlBp/c+08um1sQZvxGizxzhGvzdB8DwL+QneBHrm+dPwtXDO8j3l9SG7zfckaW740rq8VL6cYJXCkq8D0dAOQhwglc5tuBXUkwEaBK8uH0Gq8vrNlxNNbe0grSEuAKvvuWg98Ctebti3l3Bh7Ma4IkhUliRNWpGEBmY5QBPim0wuMDCHdiQGMECRpXtapjERKwGeAiuUHG5IKCdvJpAi/4j4cCymaJBBgYTA2cuo5J1zQnegh//l89zITooACJPHSIayUJzaeQLKXdjSOV5WnIzeC6lB3i0/H9udibsXjCZwI0LHpi5prkYlRp/D46sVhFUSJL4j52iZUTaRCKr/h+z2PYtmU6wdvBoCJ3eU9lIaJpbynERsdcnc01qF5b9v2Ym4ttfrxBdvN23dAZkpSYTm+hqW189sotsO6dVzJNV/69L8FapZk++wfBbTHh/dXxvcoG+/drR3STrlxbxzv2/6hWFtRBiz58kSRAvcrIL/ChAO9Rv2w0adR1QaPZ1cT+sle7/i3t//HiOQGlDgBO8pc2iDN8PrQAPxw3AQimJ8QRd1K9ELUTMahPa+V1/EOIEi0K4NW9PqgAL22qwT89P5oCNgwsV67Aa4ImBiUEfZo9UqGRBpTiHMQZkOcATw0mMfMe/nfhjKclMxGJSnd+fIlql3hjcpfRlNcBDbPB9hnMk6r/tmZp4YebugGmLSWCNxBXqKGIhIqFh1q//uKnqAiBSsDamDw/wCkfr+bMsCA/cq+VfhKM4wWsGSwLCCgfRyB6hB7dCTHAgOQrfU24+7cDKthqkJyfA3bAQNeHe8b3PwNGjgdbonOAFUphObg1+BFmQjMF/2zrVAdR1RxI+IyWByGrgogc234Gjwb1Fe5PahWX/r1lkTaxYpyY5j0Zp9fYYqOvTltgHya19i6cR21nbO0OvSdrEvJFTV7Q7q/5fjOB99eoVnN6wHBJirxOsqtd2B3yPiRWTPPDj12RuienBymEX7v/1UcRdV8+epkLW0xR4lv6U+JoKFS3Ayq4G2DrWNphxLYdNhDE4wSsnmnwsjgB9BDjBSx9jfgYTIUCL4NX8WG3o3x8a+vfTuyMhiwdXVIfNXwtly5YlBEnguoWEvELCpN+XPxRayKAoUHGCtyio0T+G5QBPDN2Csqsx6Di27nu1lljroeNEC0nJaTFWAzxNDFGPFzOtnjy8rw7sGnTuS7KpNRtK0zx+cBtsHJypy83wAE/6U44F2K4E7CA6fELjBC8dgjf/5Qs48NMsrcUOXUuJZe9iH07w0iN4s9OeEDJQM6Nd1y5kx8GMpXoZbrTtwrL/R9Jw/9IZ6vni2aYreLTqTDR1nz66D8Fb1xICF8nElPu3iMncfTtClWo14fblM4A75rBhEVYk7eVurPp/MYIXsUVSHaXNsLAdNvwGaD9yEtjVqqOGXnMXY0HvuuLaifv/4iJI73hO8NLDlo/MEaCBACd4aaDKx3wjCNAieO+EBcP5nb+TzJ1hc9dAmbJl9e4PA8Btcz4if+835Xt1dm9cZBic2byK/L3d/z4GZ28f2bHhBK/skMoyIMsBnhiAhuQzcDvt8V8XQ1qiSuoEicZGXQbIYgexQVgN8KgBKtPAPMAzHkgsNolkLzbMrKIlc6L0AI+W/xcsIlQsjw46rEUo4qKuu28H8Ok7gizs6jbaRCLr/h+f/+Ctv6gXqjTxxx0HXf9vulYxSeF32nZh3f8n34slC7eGGn4ro0SAQPJq9sXv7YHTl1HR5mfV/xdE8CLuSPKe/ONHSL4bozYDFlOzc64LL3Oewf3wS+r3Xvt3J0Ktt5oa76wKOYL7f9khlW1Apft/2W6UD8QRKCUIcIK3lBiS3wa9IitYqRm1kKzta0GvSQUL62+ZOZaYofPYKWDv5qU2yaEVKO8QB/XbdYdmPYfKbirWAzzZAZVpQNYDPF0YC9NHxgAjeOs6iI9SbbF2adgCMJu3rJmZTBZ5PQyrAZ7sQMo8IA/wZAZUxuGUHuDRJngFKPE8qirmyUSmAUlEQ4U6sd/L3BxCMlpUtZHRIqqhuP9X4YA7plLj76rtUs3Zjew6KMh/3I+4ROxoV8tV63tNLgNx/w9kh8i5Hb+JZlg37/cueLTqBLi4e2bLaki+c0MNffmKFtDtwxnUdoyw6v8NEbwIPi5iXd63mUjMFdSQ8O3+0VdyTROtcbj/V8Hx76tXkHArCjIfJ0FOVjrkZqaTjHeUzUA/UqmKNVhUsQF7dy+oVNmaii10B1W6/zcJCPwkHIEShAAneEuQsfilGkaAVoAnZPDiR+eQ2aqqzbotNysDdn/3GfkzFouqUaeeuotQybl67Xokm0TuxmqAh4QgbjMvV74C1KxbXzKsqKWcnf4Eqru4EekMWo3lAO9ZRhqc+G2JFrQvc5+pNRGrVHcoEHbUeBOamH6fHPZiNcATww6rNeN8eJ6VAWg3fJehFi9u08RAgvyviYIIHuDJ8XTTGUPpAR4t/08HTflGZdX/y4cgnZFY9v+aiKJPibseCqlxt+F5zjOwdXQBl4bN9WpSoARAetIjqFzdHqxrOhlcNCmuxVj1/4URvAKu+F199fBOePLwnhpq3Kng1qI9+PR9h0qBVTwR6/4f5woWF8R6LvhdJqWhXAYWWnPybCSle5H7KN3/F/nG+IEcgVKKACd4S6lhWbwtWgHe04Q4UmQNW0H6oKiFGH3mMOmDWrtWNtXUJog8fQiuHdkFhgji4tiL1QBP+FjFrXzD562VDCFuQ8OCElgt2NGjoeTjjO3IcoCnGUgYi5tmf1qaoqwGeAK2qJGYcDMCbp4/Sf63sFapig14+vmDW4t2YG5hVVj3Iv/OcoCHWu9pSSrtSQf3t0S3lRcZWBkOVHqAR8v/ywAd1SFY9f9UQZVhcJb9vwzwUR2CVf+PGev7l84k2Pb94jutQtFigKP0XNaTx1DGrGyhOxXkMBjL/j83OxMOLZ+trkVhLJ6tBr8PdZu1MfYwyf2V7v8l3wjvyBFgBAFO8DJiaBZuk1aAh+MiwYuZn9i8O/UBN5+2YFHVllQ2jb1wSl1hGyub9vtioRbcl/dvhpvnTpCsuKFzV8tuClYDvOISvD59RoBna3/Z7SEMyHKAh5kIp/78UQtb3IqZk/GU/A3lTqS02o1bgneHXlK6GtWH1QAPQcLtf1h9XlNrTyp4mMXTY+IsvewrqccX1o/lAE+Q8kGM+k9dDJbWtlpw3boUBCn3bhqE0L5eA3Bt0qowmIv0u9IDPFr+XwpYWOwLF3ixGGFaUjypcm7t4Awu3j5En5dmY9X/FxdTzBZ9npMNFlWsCyW6inIulv1/UfAy5TEs+39T4mzsuVj2/wd+/BqE3WtVazhCnaZ+4ODuTWR9MHY0K18BXuXnwcvnufAi5xkpiJd4KwruXglRw6y7e9RY/A31V7r/l/Ne+VgcgdKAACd4S4MV+T0QBGgGeJoVZA3B3WHUJHCq31iryz+Lp5FqwoVp+BbVjKwGeMUleGlqiaEteYCn/UQXpsFb1Oe/KMexHOAFb1sH969dILAhYVvd1QMc6nmDZVVbEkjgf/l5GEjkwIucbFIAB/URUQMOG/7ee/J8UtBL7sZqgKcp8VPrrWbQ/t0JetBe2rcJYs+fNAg5rYx3PKnSAzxa/h/nwJOH9wnuNo619Yo+ofbr8V8XFbilFv0MFiVCqRMajVX/X1wseZE11TezfW03mLp+d3HhLNLxSFY9ffQAnjy6DxUqWZD5VbW6AxXdfc0LZNn/F8lQJjqIVf+PmdX7lqjk++q16gSYfCJWsFPMDCkPbpECxa/y8oiERsuBo6lYS+n+n8pN80E5AiUYAU7wlmDj8UvXRoBWgCecBQO5oE0/q7MQNc+OREm7/30sWlkWr0tohoqxFNWerAZ4mjIATl5NJMOXdDtaHYw7N/CBt9r3ArtadSQfL7UjJ3i1keIEr9QnR9XP3MISJi77ExxdX+t5GzeCfu/nz7Jg17efkh+s7Z2h05jPJBNPUacD4OqRneRYr3bdoSmFgpGsBniPbkbAqT9/ItgWlIUTc+44hO7fQvqgv9Fs//77ivxfTvCawZIAVZFGuRpmTl/cs4EM12PiHKIhKjTMpML5JOCPf7dEeaZ//4XstFR1P5qLiaz6f1wUiQk5Bm916EWKDxnbOMH7ZgneKwHbIfrMET2zYV2Edu9OgJqunsaaVHJ/TvBKhsqkHVn1//euXYCQbesI1sO+WUOydY1pQp0XzPzFxXcajRO8NFDlY3IE6CHACV562PKRTYwAbYIXbwcLez24HkqKD2SkJBJypJqLG6nCbGVb3cR3rDodqwGeXDqvjp6NoONoFeklZ+MErzaaKNHw8MY1UhQPi6y8ycZqgIf4n964gkD/9tfLjdbTDdq8CuIjw4AWYcVqgHfr4mm4uHcjscuQOatECav74ZcgeOsvhNx9Z8F6relDm6zCkyk9wKPl/yNO7IeIY3tFcRd+Q3xwsbD1sPHqAkT4vsOs6wfhF4mt/IZ8QAh4uRvr/h81+Jv2GAoerTpBmbLaCx+GsKY9Z1j2/8n3YuHyvk0Eft+Bo6Gac10tUwh+xJB98Dj3Fu3lni5kPFb9f3HBPLJmAZEGqOvTFlq9Paa4w+kdz6r/vxa4ByJPHiC7ovpPXWQ0rsIipLH1SIw5kdL9vzH3wvtyBFhAgBO8LFiZkXukFeApHT7WAzy0D24bL2pzadiCyscqywFeUW1hquNYDfAiju+DiOP/kIWpgTOWGQ23kEVKK5BgNcALD9wD108eMFiIMy4yFM5sVmm4j/juNy3b0Sar8GRKD/Bo+f8bwYEQdnCrqG0C1y4kEiZi2vuIGdHv//kbSEuIAwePhtDpvclGz7nCDuD+X4UQvtNwa7PUxUPac4Zl/4+ZuZihi013wUrYyYO/4WKVd8deRJrhVX4+pNyPhZvnjpPj8Lf+0xYTjWS5G6v+HyUxUA6jqNnRtOcMq/5fK4N33i9gVq68UY+8kMFLSwawJPh/owDjnTkCDCDACV4GjMzKLdIK8JSOH+sBHi2yqbh2ZznAM4Qdqcz89DHgVkxaupSF2Y7VAE/IFMXgefi368BYyZirh3dCVFBAkTNNCrMLqwGeQCKKZecKmAnkOs/gFX+KaPl/JHCRyMWGRVI1FxP/WTSVSDE09O8PDf37iV5YTMhxCD2wpciLKoXNGVb9PxKC0WePkAUr1J8UGm5TbjFgFNSoY1jahjZZxbL/FxYSy1e0gCGzV2o9wkL2Lr7Huk+YpSV5gh2x3sWh5XOI7Im7b0fwHTCysClg9O+s+n9h11v12vWgxYCRYF3TySjsaM8ZVv2/pgYv6ui26D+ySBq8WNDTd8Aoo2wqtbPSF3il3gfvxxFgBQFO8LJiaQbuk1aAp3ToWA3wilpkzVT2ZDnA08QYs0aun9gHCbFRkPUkWa8YUUWrKmBR1ZZs+8MtmWXNzKibiNUA72lCHASsnEvwbT10HNRp0koy1qjfe2j5bFJsDbPe277zoeRjpXZkNcDDatgnfl9KYOr64Qyo7uKuB9mpDcvhUUy4KFFIO/DGi1F6gEfL/7988Rx2zP2Y2KPje5+Bo0cDtW32LZ0BWanJJHPUs7W/6GN+7+p5CNm+HmgtRLLq/wWwX+TmwPWT+yHmbKCWFnJNNy9o3u9/pGiXWKM9Z1j2/w8iLsPZv9eIy8msmANpifFQu3FLaDNsaf7AvAAAIABJREFUvKhtQg9ug5jgo2Dt4Ay9PlH5Kzkbq/5fV9bMpZEvNOs1THKWNO05w6r/x2f74E+zyOIGtirVHci3mb37W+TbGDXGcWHxVX4e+X5G7ffHcXfI94BQMBePK0i/X465o3T/L8c98jE4AqUJAU7wliZrMn4vtAI8zDiMj76mRtfG0RmqVLNXDNqsBnic4C3+I0i7ijZuPcMCRfhRKqVhxk/jbgOhnm9Ho/QUpYyt2YfVAO/fV69gx7yJant4+PmDa9PWYOPoUmDGCBK6CbGRZJv6i5xsAmOrwWOhbrPWxsJeaH9WA7zc7EzYvUC1fR+LdPWYMJsU2RMaFvg8slpVPAWJK/+xU7SwpB1448mUHuDR8v9473sWfk4WNnDHQb8vf1BvoT3550+QcDMC6rfrDs0KKDr4evusM/SaJD9Zxar/132ZYNG1q0d2wZ3Qs1o/4futSY/BertFaM8Zlgle3KGzb/E0YgfUFEVtUaEJc6lZ7+FQv01XUZ8gbFmntSjCqv/HxRAsFJ1854YW7p5tupEdCBUqVjLoo2nPGVb9P4KO3wC4gI7vsaK0VoPfh7rN2hTlUEnHKN3/S7oJ3okjwBACnOBlyNil/VZpBXi6q94NOvWBRl0HKgZOVgM8/Fi9GXIMyplXLDBQeJNGYjnAQ9zjo69C0F+vt2eiJEPlajUBt9Bi1i5q7SHxi6Ru3vNcrewr3KbWcuBoauZjNcBDQJEsPLpmgRbeuF3W3NKKVG/GbBHc/oyZ12ifl7nPtOxAq8AKnoTlAC/04FaICQ4kWCOx4ebTDqxsq0F6cgLcDQtR20s3ixT70w68WSd44yLD4MzmVcQ2SLBj9juSvSgRcOXQ9gKLDmpmZtOaN6z6/4KcA253Dju0HeKjwtRd8P3m1b4H4LebILFBe86w7v///moceWfhImLzviPUtji8aj4pUty4+9vg3aGXqBlpy5qw7P8RcFURvM2Qlhinxh99TuOuA8GjdRd1oUhd49CeMyz7f8T6WUYaRJ85DLcvBUlOikB/VL9tN3DybETte7kk+H+qN88H5wiUQAQ4wVsCjcYvWRwBTvCWUeyjgaTRoIkzwLdbf8Veo9wXxnKAh1nvuxd+QchBDK4xW8fDr7OW5mv4sb1w/cR+cPRsBB1GTYKH0Vfh3M7f1YSi39Bx4GqEhIAx9mM9wEPi6fL+LZCRkiAZNgwA67XsDM16DTVau1fqSVgO8HDOHPhpFmQ/fVwgXGLZu5zgVcFFy/8LxtAk4PGdhsSVXa06RH4BW98vFoJFVRuiL46yDXevnIMHEZfIb9gfM38trW2lTgXJ/TjBKw4VytEgiYWFu4SG77CmPYaCR6tOELBqHil+59rUD/yGfCAZb6kdWfb/iFHQplVqkt1/3FR1Ya/zu/4gWdaYWe03ZKwenLi4uH/pDKJtbV/PGzqP+Vwq5JL7se7/BaAe3rhG5ghiLTRciEdCXky+iRO8Kj/j230ADP/iG8nPm7EdcadVwq1IyHycDDlZ6ZCbmQ4okYXyZZUqW0OlKtZgUcWGSDiYqo4Fz+A11oq8P0fgzSLACd43iz8/u4wI0ArwcFX15H/6iHi5Xu26E71QpTQe4CnFEtrXwXKAhxkix9Z9TwBp/+5EqPVWUz0jZaYmk0AO27D/Kgdj1ihWnUeCREWKfK+1vVMuS/MAT4VkWtJDuH3pDGSmJkFuVjrkZGaoSPmyZlDRsjJUqmpDAohaXk2hlnfTAjN75LILywQvYpifnwcRx/6B6KDDehnWWEDFp+8IUSkN2oE3XpvSAzxa/l94tjHoDtq8Gh5GXzH6ccfCN2g/Go37f8OoJt2NgdD9W4juq9DwnfY8J5sUZ+MErxtMXb9b9kcTdUL3LZmulvXxbNOVZIiiz8EdJJhJPXjWSi3N/YzHiRCybT3J8MXW6u0xVL61uf9/bW58b969EgJhB7epbYW/VrarCb4DR0HNuvXVnWn7Gdb9v+yTUMYBle7/ZbxVPhRHoFQgwAneUmFGfhOIAO0AT6ko8wBPmZZhmeAVtlhiNsjgWStEDYSEyd9fjyO/9f50PlSt6agmHVGLjAR4lHTFeICnzDnDAzyVXdCX4VZzXARBmQYMtsuUKXiHBvZ7mZtDpE8wi5RGU3qAZyr/j5mhVw7vgMTYyEJhtrZ3JoWkhHdboQcUoQP3/9JAi4+6Apf2bYacjKdaB3CClw7BiyA/efQADv+sneloZVeDLOBiw2KdKA2U/TSVvO80d5TQKrCG5+X+X3/O4OJi7LkTcPXoLrLwIbQarp6kWKF1TSfqUkDc/0t7l72JXkr3/28CE35OjoCSEeAEr5Ktw6/NKARMFeAZdVEm6MwDPBOAXIRTsEzwCvILqLfbe7KqOJRY2zJTtUWz43uTwdGjobrLsfWLIPluDLj7dgTfASOLgL7hQ3iAJzuksgzIAzxZYKQyiNIDPFP7f5RiSE96SEh4JKeepT8lWdcVKlpAZbsaRKu3em13KrbQHJT7f+kQv3r1Cu6GBcOVgB3qbEVa2sgs+39NixizICIc5+TVFFoOHEUWrGg07v8LRhV3UUUHBUDkqUNau0hcGvlCyt0YUmyS1qII9/80nnZ5xlS6/5fnLvkoHIHSgwAneEuPLZm/E1MHeEoBnOUAD7MOykAZrW1+hdkFgzwMxMuWNaOmJYrXwHKAFxcZCmc2ryYyC0PnrRHd2p+e9AgOLp9FzNX941lEz1JooQe2QkxIINDK4uEBnuFZgkHe00cP4Mmj+1ChkgXYONaGqtUdjJpnhc1Dsd95gFcU1ExzjNIDPO7/uQa/aWaCtLOw7P/FEEKiN/LUQeJXstNTtbJEsT9+K9jWqgONuw0CezcvaSAXsRf3/4UDh5qv4YF7IfbCSb3OnOCVX4MXv3kfRFwkWHcYPRlsHV20cBeK3hqyHMqeYL0TGk3p/p/GPfMxOQIlGQFO8JZk6/Fr10KAB3hsBXiChisWThk+b63k2XDyz58g4WYEdB47hWogwXKAh9lt+xZPIzbxbN0VfPoM17IPFlI5tXG5epvzoJk/amXrYCB47ehuMNa2Uh8CHuAVjNSVgO0QfeaIXgeU22j37gR1sRypWBvTjxO8xqBl2r5KD/C4/2fL/5v26Tf+bCz7fylovXzx/D+5jDJQoWIlqGBhJaovLmUsY/tw/y8dMSzAhhnvQsFIPJITvPISvJh0sn3uR2TRA7PWB0xfqjcXzv79i5YNxCxIyy54LqX7f+lPNO/JEWADAU7wsmFnJu7SVAEeZh7eunwGMh8nahUmKmtWjjjnipWr/leYqAnU8m5GvTARqxm8GY+T4MCymUaTgCf/+BESYq9Dq8FjoW6z1tTmBusBXsi2dXDv2gWCr61THVJkCIvbIPmLhb3SEuPIb2KVsoO3rYP71y5A+YoWMGT2StltxGqAh8XvLu/bRPD0HTgaqjnX1cI2aPMqiI8MM4g3Hufeor3sNsEBWSZ4lbwboSQEeKby/8Y++Pi9gAW9LKpYg5VtdWMPL7Q/q/6/UGDecAfW/f8bht/g6Vn1/8WxCSZUINmLzdLajsjQyN1Y9f+p8ffgyGqVlJlPnxHg2dpfD9rrJw9AeOAeg5BzglfuJ5KPxxEouQhwgrfk2o5fuQ4CtAO8xFtRcHn/Fq1CEIUZATMQ67XsDE17DqGWncBqgFdcghc1xdoO/7/CTFjk31kP8F7kZMO+JTO0KjPrgonzo+eEOXpFiII2rYKsJ8lQzcUNsAK93I3VAA8zczFDF9uQOau0tvMl370Jx9b/QH7D7bLeHXsRaQbMtk65Hws3zx1X/9Z/2mJCWMndWA3wlL4bAe2s9Awe2v6/qM867crzrPr/otpDOO7ImgWQGncHuAYvvSJrxbURreNZ9f+08JRrXFb9//3wixC8VbULsd+U70UXAu+EBcP5nb+TPo26DNCCPPrsUXiZ+4xaZnVJ8P9yPYN8HI5AaUGAE7ylxZL8Pkjl8bJmZrAkwHAGWlGgwhXWo2sWaBUdQBKkolVlMKtgDuXKV4D8ly8h7+UL4mjzXjzXOg2tIAJPwmqAJxC8iAFW+ZXakOTKfvqYdMdsxNqNW0L5CuZSD5fcj3WCF4F6kZsDF/dsEN1aVqmKDXQdP41KVlthRmI1wIs4vg8ijv8jmhktZO/ie637hFl6GnDpyY/g0PI55B1Iq/gdqwFecReraO9GKAkBHi3/n5uVATEhx+CtDr2KpG/ICV4guA2aOAN8u/Uv7NUs+XfUpESN8JqunpKP0exI2y7c/79G+/mzbHj66D5kPE6EjJREUpTQ3MISrGxrgKVNNfINgLtJ8PvdFI1V/28KbItzDlb9f9TpALh6ZCdZWB/+7TrR2iDxUVcgaNPPBN4R3/2mBTPtd1lJ8P/Fee74sRyB0ogAJ3hLo1UZvSdaAd6/r17Btv/0kRBaDz9/qOvTBmwcXAos0pWTmQZJt2+QjF/MZMTmN+QDssIqd+MEb/EQdfRsBB1Hf1q8QUSO5gHea1Cw8jIG4xkpCWBR1RbsnOq8EWJXuCJWA7wHEZfh7N9rSCDxzoL12kHCijmQlhhPFjzaDBsvOh9CD26DmOCj1IrfsRrgFZfgpb0boSQEeLT8v6ZtmvYYCh6tOkGZsmUl+wvawTfr/r967XrQYsBIsK7pJNkm2JG2Xbj/B8BvZ1xQRz19XBg01FDjvVHXgUT+hzbRy6r/18Uf7ZNwKwoyHydBTlY65GamA36r4YIMys1VqmINFlVswN7dCypVln/Hju71sOr/rwXugciTBwxKkt0JC4HzO1XELid4jXrV884cASYR4AQvk2YvnTdNK8DD6r8BK+cS0FoPGw91GreUDCBWoj20fDb5aHJp2ALavvOh5GOldmQ9wJOKU0H9OMHLt2gW9xmicTxmOE1c9ic4utaTbXjN4nf9py4iWnpC27Pwc/KeatZ7ONRv01X0nKipjNrKtIrfsRrgKX03Aid4Z6rnA+qIo06iS8PmkuYlbSKR+3+VGXCRo1mvYZKlY2jbhXWCF7N2D//8jVq3VdJkASAkV+f3vwC7WnWkHmJ0P9YJ3mcZaRB1+hDcCT2rt9uwIDBrunlB/bbdwMmzkdF4Sz2AVf9/7+p5CNmuWnAfMne16I5CXCTB4sPlKpjD0LmrtSCl/S4rCf5f6jPG+3EEWEGAE7ysWJqB+6RF8N66eBou7t1Ist6GzV9rtJbu1cM7ISoogJApSKrI3VgP8NAuvT/7tsiwYgVnzFaQu7Ee4OniiTqjWI0ZW7ny5aFJz6GSg3G5bcNygPf3V+NINhXuRGjed4Qa2sOr5sOTh/egcfe3wbtDL1HIY0KOQ+iBLaRY3sAZy+Q2C7NF1jQJ3uKASmuxqiQEeLT8P2pQR589QqRNsMq50KrWcIQWA0ZBjTqGF2BoB9+s+n+U/8Ety8l3bmhNGc823aChfz9Av26o0bYL6/7/7Na18CD8IjEBZuc26TGYZFlb2dWAipaV4fhvSyDpdjRJfLCr5QqxF09BVmoy6Y8kb78pC8Hcwqo4r8MCj2XZ/+dmZ5KkE5SeKUprNfh9qNusTVEOLfQYVgnep4nxELBiDsHHq10PUrNFs6Fv2/Xtp2Q3KM6ffl8s1Pqd9rusJPj/Qh8u3oEjwBgCnOBlzOB4u39s3AwNG0hbhe3WtSM8Sf2vcqqlJZw+c16N2IkTx2DqlM8KRLBMmTJw8nQwWFlVJn3u3bsLgwf1o4Y4rQBP0K1EzdCB05cYff03z5+Ay/s2U8t6YzXAK+q2ZqMNWMQDWA/wdGHTLOIlBHFdxk0FGwfnIiJc9MNYDvCwgF18lEqn3H/cVLWG5fldf5CMHtemrcFvyFg9cJHo2r90BsnIsq/nDZ3HfF50AxRwJKsBHid4i/8o0fL/wpUhoXj95H6IORuotd0cM9tQA75qdQfRm6AdfLPq/wWwk+/Fku+rtMQ4Nf64w6Bx14Hg0boLmJmVeyN2Ydn/o8buviXTCe4O9RpA+3cngFn5Clp2eBgTDqc3LCfk7+BZK+DVq1cQExyoLgJq51wXuv7fDKMTKqS8SVj2/wd+/FpdKBoXqeo09QMHd2+wqGpDskPRTq/y8wA1rl/kPCOFCLHA9N0rIWpou4yfXujClhQ76PZh1f+jVMbeRVMhJ+MpgaRBpz7g1b4nkcrAXaDndvwGj2LCyW/eHXtD426DtKCj7WPwZEovslqU540fwxEozQhwgrc0W7egIPrSFXBwcJR05239WkBc3APS19rGBq5FvM6WwICqWRNvNQGsO+D/fTgBZn49W/3n9PR0aOTtIem8RelEK8B7eOManN64glzS21+vIMUhjGlC8SL8YO3+0VfGHCqpL6sBHid4JT0eBjvhnLGvbRqJBk2CFzN0sBghZl+3H/kJONWXtuBU/DtWjcBygIdBGwbfgja4Z5uuhAxJS3pICklikDd41kotHUQsjhOybT3J8MXW6u0xpPq83I3VAE94lyl1N0JJCPBo+X/dZxwz364e2UUWQzQbLoxgliJmt2s22sE3q/5f1y74nYZELy5ACQ3JQ9ylUKdJK71XFW27sEzwamq9D/rqJ9FvZvQ/O+dPInbB3SDCvBESKvDvKNVg7/6W3G6GWf+vSbzXa9WJSM2UlagnnvLgFhz/dTHZxeDWoj20HDhadruw6v8RyJT7tyBwrXZmLn4P6GpXD5r5o96OQ9rvspLg/2V/GPmAHIESjgAneEu4AYty+ef/I3gxIIqKijQ4xDtDBwESs9h0CV7828ED++DjD8eJjnE14gbY2NiofyupBC+uoOL2GGy44t157BS9IK4gEIXqqPh7/XbdoVnPoUUxmcFjWA3wUC/07JY1UMHCEjqM/ER2XIs7IMsBnhh2AsGLH639py2GY+t/UG/JxEDDs7V/cSGXfDzLBC+C9OTRA6KPqNlw65+wRRa3zZpbWkH201RS8RyL4wnN2sEZen2i0iSXu7Ea4Cl9sQrtrPQMHlMRvMIzj/Mi7NB2dTY8/h3fbV7te5AMLFwowUY7+GbV/4u9e/AZwEzDsIPb1AtY2K+yXU3wHTgKatatrz6Mtl1Y9v8CSVulugP0MSCftWWmaqdIl3HToIarKvmDZDP+MIXowTfqMgAadO4rt5thluAVNPQR0GHfrNHLqi4M6At7NsDtS0EkDuo9eX5h3Y3+nVX/LwCFWrznd/+hJQUk/Ia7Ejq/P0U0c5r2u6wk+H+jHzZ+AEeglCPACd5SbmCx2xMI3ufPn4OHm4tkBMQIXtxWhVm5mZmZWuMMGDgIlq9co/W3kkrw4k3gFhlhixIGcdVc3MDBowFYVLUl22jwv/y8l6RgAWbIPX5wCxJiI9U6Vxjs9fp0HljZVJOMt9SOPMCTipRp+7Ec4IkhrUnwvrNgPZkrpzauUGso1mvZCXz6Ss8oKY41WSd4ETssHnnl8A5IjDW8yKeJs5NXU2g5cBQVzWo8D6sBHid4izObVceamuAVrhjnEWaOptyPVd8EBuNNewwFj1adIGDVPEhLiAPXpn7gN+SD4t+ozgjc/+tDmp+fB7HnTsDVo7u0yJIarp5ETgO1YGmTIiz7fyla7fkvX8C2OR8R4+lm6gr6vbQ0xVn1/9cC90DkyQNFrgdy61IQXNyzgZrcHKv+X/MNhhrJSKI/jrsLWalJYGlTDarXdofajXzByra6qP8IC9gOT+LvgbO3D7VECaUv8MruWPmAHIESjgAneEu4AYty+XIQvGGhl6GZj6qK9PZtf8OXX0zWupSQC6Hg5FQLUpKTwdLKCiwsLEgmcEmUaCDB46tXpChE8t0YoyFHQrj7hFlg6yidTDfmJDzAMwYt0/VlOcCTQvBiH1wguvTPX+SDFhvqWaJkQ/n/st9oWYvVAE8MTySosDrz00cPIDs9VS97BN9ftrXqEN03ezcvWiYh47Ia4Cl9NwLaRukB3psieIUJkXQ3BkL3b4G0xHj1HMFt589zssmc4gTvDPDt1p/q+0N3cNQRjQ4KgMhTh7S2Ors08oWUuzEkS5SWXVj2/5rbzXtMmA22TrX17I4SJ6j7jg2L5GpqWF8/eQDCA/eQhUTcki53Y9X/a2XwzvsFzMqVNwpaIYPX2r4W9JqkvQPIqIEK6Myq/5cDO9pjKN3/075/Pj5HoKQhwAnekmYxGa5XDoJ3018boFNnf0Livnz5ErzruwFmBGPza90Gtm7fTf6NRdjmzltQ4glevBcMIB/djICbIcchIfZ6oZawtLYDzEqs27wtqRpMq3GClxayxRuX5QBPDDndDF7NPjfOHoWwQ9vIn1AqoOv4aVCpsnXxDGDgaFYDPCmAvnzx/L9iH2VIJfoKFlaSdfqkjG+oDw/wiosgveOVHuC9aYJXQD4+6gpc2rdZXTBH+DstIpH7/8KfeZTZCg/cC7EXTup1pmUXlv0/ZufuXvgF0dlHHeT2705USzCgAbDAWtDGlYR0F9N8v3p4J0QFBVDLFGXV/2tq8KKObov+IyX7dk0NXnffDuA7YFThE8/IHtz/GwmYCbsr3f+bEAp+Ko5AiUCAE7wlwkzyXqRA8L548QJ6dOsMlhYWkJObA3fv3IG8vLwCT6Yp0YAE7/lzwfDz6nWk/x+//wpzZ6sKiB0JPAX1vbzUGbvRN++WCoJXExjMDHmW8RSeZ2XAs4w0ovdW1qwcIaUqValKNHppElSa18IDPHnnh1yjsRzgiWFoiODF/vHRV+HMplUk6MMibEjyYqYIjcZqgEcDSznH5AGenGjKO5bSAzylELyIOu5MuBsWDFcCdqi1YLEoIRYnlLtx/y8dUSzAhjZ5EHFJfRAneOkUWX14IxxOb1yuxhl9OiY65GSmEXkmoTXtORS82nXXMqIgn4FJEv2nLpJuYIk9Wfb/B3+aBenJjwhSqJGMBQixkJ0gN4eE+6v8vNdyc3F34FFMONy/dkGNbpfx00W1YCXCX2A37v/1ocHFkqynj8lCiW4Bz+LibczxSvf/xtwL78sRYAEBTvCyYGWdexQIXrFbz8jIgC2bN8KyJYvUGblCP12C96sZU+HKtSiwtbMjfevXqwNu7u5w7MQZcsj3330La1avhNJI8CrpsWE5wAs9sBUeRFwk5ugwerKeDAYS8ZrBhJjd8IMWNZTlbiwTvKhHnXg7WgtSlADAbZcqW6mKFuo2zT4oDdDp/c+pyAKwHODpYo6ab/GRYeTPqB3q2sQPykisrC33nOEB3mtEX+Xnw7P0Jyq7mJUDi6qvC5bKjbuU8ZQe4CmJ4JWCp1x9WPb/RcUwMzUZkOzFhiRiZbsaRR2qwONY9v8CKDeCAyHs4NYCMfLw8wefPu9AmTJltPpgtmj+ixdgblkZbBycZbcNy/4f/f2h5bPV9UGMBbfV4PehbrM2xh4mqT/3/wAYs1w/sQ8SYqMg60myXvyCsiVIxuOCoXuL9lDWzEwStsXtpHT/X9z748dzBEobApzgLW0WlXA/hghe4fCHD+OhrV8LkokiNDGCd/R778O8bxeSLiuWLwNf31bQyq81PHv2DN7yrEtkDTjBK8EoxejCaoCHz+b2uR8RfUP86BkwfanedrOzf/+ila0jBjPP4JE/g0coGlWMx5ocSss2LAd4ujYRMquFv9s514VOYz4n8gymbjzAe424rl0adOoDjboONLVJ1OdTeoDHCV5tkuyNPSgiJ8YF1EETTa/B+yYx4ASvCv30lASIOnUQUuPvQdbTFDC3qAx2zq7g0qA51Gnc8o2YiHX/j7sOo88cJrUPCkuAEAyE9RHqt+0GTp6NqNmMdf+PGslYxE6qTTArvnG3gVDPtyP1RXml+39qDyUfmCNQQhHgBG8JNVxxLnvK1OlgZVUZrkeEQ3JSElk9d6ldGwYMfBt8mrdQr6YHnz0DI4YPNkjw4o+RN26DlZUV0eItV64cOX71qhXww8IF5FhDBG9Nt6bFuRWtY5HwS31wHRYfCpVtTBwIV1TvhAWTMS2r2kKtt+S7ZjkudOvSORAdGgqW1uIVVuU4R3HHeJaWCL3e+1DWIisYMBxZPZ9cmk+fEaLVY4ViHYaunxaJiAHeL9M/hMrV6xQXPmrHP8/JhErmZWHKL9tlPYfSCd5F49+GFy/LQoVKVrLet5yDZabcg48WrQNH13pyDqs3li6RiB0qVbGBbh/OINltpmwY4B3561eoZF3TlKc16lzP0lPAq3kLGPbZHKOOM7azmF2cG/hA62HjwcysnLHDFbs/Bng1XBsBZtYrsdHy/0q8V81rYtX/K90uLPt/pduG+3+VhbB4dMKtSMh8nAw5WemQm5kOqFeNWaEquTlrsKhiQyQcTCEPwLL/R4myoL9WqqcOSjJUrlYTqtZwJAksN88dJ8Qvkrp5z3O1ikainnLLgaOpTjsa/j/p9hWq18wH5wiwjAAneFm2vsi9d/bvCr//+RchaVGjt17d19ujxDJ4cYjJn0+Bzz7/Uj0aHufl4arW8y3pBK8uWWXMFqVDK+aQqtoYFA+evZKKFACrAd798IsQvHUtee76TfkerGz1CW4k5s/v/J30adRlgNYTH332KCkCwgle+QlelGhIuRerhXfqw3tw7cgu8rfO738h6c1rYW0LVarZS+prTCce4L1GS1MbGSUxTv6+jAQPKNfQdfwMsKtlugUKlgM83edX0y7eHXsBLlZhs3ZwBv+xX4K5haUxj3yx+9II8Ip9URoDKJXgPbJmAaTG3SFbamlo8LLq/4v77FzevwUeP7hNskgxM1HuxgleuRGVbzzu/+XDUs6RWPX/mkUJMVZs1ns4ePh11pIuCT+2F66f2A+Ono2gw6hJ8DD6Kpzb+TuJYbD5DR0Hrk1ayWkOrbFo+H9O8FIzFx+YIwCc4OUPgR4Cp86cA1fXuuTvLZs3gcTEBFVgaWMD1yJukH9jkTXU4MVWtmxZuBF7D8zNzcn/37xpI8yc/prwLekSDWLZiF3GTYUarp6FPj23LgWRLTfYjCGGCx1YowNHQdncAAAgAElEQVSrEg1RpwPg6pGdhDwf/u06PR03hAgrmgdt+pmgNeK737RgFQp50CR4V015H54/yzbGnCbti9ua7WvLL9EgdhOFFVkz5Y2zvkVTE2tdu2ABlsC136uLQ7X738fg7O1jEvOwvkXTkF3uXjkH53b8SrpgNhUWuqGhHVqQoZW+RZOWRAPu4Hny6D7UlODvxbCj7WdY9f+YffjyxfMiS8nQtguXaDCJyyjSSbj/LxJs1A9i1f8n34uFY+u+J/i2f3ei6C5R1A3fv3QG6TNs3i9gVq482V0a8PM3kJWaTOKgfl9+T23XldL9P/WHk5+AI1DCEOAEbwkzmCkud+v23eDXWiWiP3hQP7h0UVU9tSCCF3+bv+B7GDV6DNHsbeDlDtnZr0mt0kjwojPtNekbqFrT0aBJ8vPzYNf8SWRrjZNXU+gwcqLsJmQ1wLsWuAciTx4gW5aGzH69tUkT4DthIXB+p4rY5QSv/qNnSoIXSZJTf/5EqgH3+exb2eeBMQPyAO81WmLEe25WBhxbvwgyUlSLe427vw3eHXoZA3GR+rIa4ImBJWYX/NuJP5YS3XHMsO78/hQq1czFrkfpAR4tgldY4K1eux60GDASrGs6GfVs0yYSWfX/aJeDP34NDbv0B6923QnhYUyjbRfWCV4lF8Bl1f9jfIaFu7ChLjbKMCipser/Y0KOQ+iBLeTbePCsFaImwQWtv78eR37r/el8deyZlvSQFM3DRiuJCMdWuv9X0nPMr4UjoAQEOMGrBCso7BpCLoSCk1MtclUebi7w/Plz8m9DBC9m73bo2BkSEx5BePg1rTsqTQRvm3c+hJCt68gW5nIVzKH35PmFrpgGbVoF8VFhREsJ+8vdWA3w7l09DyHb1xM4h8xdDeUrqDLINdu1o7sh8tRBYquhc1dr/cYDPCBFEE2VwSv3c1+c8VgN8MQwKyizGrcNBm1eDQk3I8hhrk1bky3mZcrS02BlNcAzxi5IbGG2D5Lw2FoPHQd1KG7NFK5N6QEebYJXwMGlkS806zUMLKpII0do+xlW/b/mzipc5PXpM5y8o1BeTEqjbReWCV6lF8Bl1f9rzhlMUuk+4WuwdawtZbqQ3SN4PH5Ldx7zOZXvAFb9vyC/UFiMuGXmWGKrju9NBkePhmq74WJ88t0YcPftCL4DRkqyp7GdlO7/jb0f3p8jUNoR4ARvabewzv116NCJfACfOnVC9M67dusBv/6ukhTIysoC7/pu6n6GCF5DMJYmgrfP5wtIQYLTG5eTW8atsj0mzja4Eh5xfB9EHP9HlGSU4/FjNcB7mhgPAStUhY682vWApj2HaMGJAf+ubz8lW82t7GpAvy8Wav3OAzxO8EolA+SYp8aOgRqrE5f9abIiaxjwvbNAtWAiNJxDYYe2QUxwIPlT9dru0PG9z6hoieP4rAZ4Ys+GIUkTlH05/utiSEuMI4c26NxXT2Pc2OetsP5KD/BoEbwvcnOIzE/yHZU8ldA823SDhv79CpUIoO1nWPX/OZnpZMuyZsV5S5tq0KL/SHD0aFDY4wy07cIywav0Aric4FVNDyRr+3y2ACyq2hQ6X64e3glRQQGkX4fRn4KTZ6NCjzG2A6v+Py4yFM5sXk1kFobOWyNaRDU96REcXD6LQNr941latREwWz4mJJDo8/f6ZK6xsEvqr3T/L+kmeCeOAEMIcIKXIWPjra74+RfoP2AgJCUlwta/N8O5kGAIvXwJHByd4OMJn8Cw4SPUGRDfzp8L69euUSPECV4AJHix6JOmti5WOEWHa2ltK/o0XfpnE8ReOEm21A6fpyoKJmdjNcDDLUt7F02FnIynBM4GnfqAV/uehHzCSsDndvwGj2LCyW/eHXtD426DtGDnAd6bJXiz055A9JnDpNBNWlI8VKhoQT5QXbx9wN23g5xTRG8sVgM8BAJlYzRbCm77/32pOrgQA/7WhdNkCyE2S2s7ov9a0Pvu/9m7Dqgori78WVEQBayoYMeKxoY9FizR2LumF40xxmhMjBp7zW8vsSRqoklMjBqNvfdeAAURFSuIYAUbIlj+c99mll3YhVl2Hg68d8/xHNx983bnuzNz937vvu/a4zhREzxLmKWmWU2NDA+v/JntDiHz9K7NqnmpAzoP03uCx4vgVbAkncRTG1YYSXV6nWJ6tRad4FW/ucWknMbwjjOixn/ClshdIp2C92426yqf36M0q2Rzdfe0eivw9ovIBK/eG+CKGv8t9ROheN564LhUF6poUXHtpEHsPqNK+XrdDNWkWpqo8f9x9F1smPYdg7J8/RZsN4KpvXzxAvt+m4Oo0GD2cucRs0B5p2K0S5F2K/LKMelz9B7/tbwO5VwSgcyAgCR4M4MXbTgHheBN7ZCgoEC0bd3CbJgkeBMJXgImeP8WnNn+D8OItgj6fvot3IomTyjWTh7MttM65y+MdkMmpwa9ze+LnODduX4JO38yr8ylVXD6EWpqSX8Q0XsyweNH8FLV9P2I68wFrkVLgKpRTY0qfHYvmWpWfWX6PiXo1GyCKuR5mKgJnmmjDntwlQleR/QcMs4eCM2OjX0Ygz1Lp5u9Rt2xqUqRLG9Bd6ufpegk0wCver6o1a63Zt/LdCK9J3i8CV4Fi4jzZxjR+yTmnhEe0k4k3C1JZfCOMyLHf8UBRD7RLqmLR3ebXfvFK9VgZAmRWEmNt19EJnj13gBX1PhvSvBS0QMRg2S0sN7q8+9T1bHe8+tMRjK6FSuBt74w6L5qaaISvIThkb9/xrUzhn43bsVKsiIH+v1L5O/lkweNC4tFylVmEhmmdvjvn3H9zPEU+5HY6ye9x397z08eLxHIbAhIgjezeTSV82nm2wKjx4xDyVKlLWqVJSQkYNaMaZj/o0GCwNTy5cuHwOCL7KXff1uGkSMMK46pmSLREBMTg2pVyqc2PM3v80rwTH8UKRW8ypcM2LqaVSEqRs2IytfzZVufyEybfFGFVcNe/dJ8ftYOFD3BIy3eY2t/ZY2HklpKjYhkgseP4DWtcH9rwBizhY/4p7FMOsOUhKettXj1yow0IZKXkg4eJhM8+1AtVb0e6nX71L5JLBwtaoJnqbIqLeDy8gt9F70neLzivyU/0GddDTgC/81/MwkgxWgR16fT+yhcuoLxNd5xRvT4b+qf2AfROL1ttZEoUd7zqtcM3r4dzRYaeftFZIJX7w1wZfw3FKtcDTjKGhWTFS5TEU0/HJziDpCArasQcnB7is3A0hK3lGNEjf90/hRHNkwfbhZPLOUzrb8Yk6y5N/V5oeZ5BTzLwKfj+/a4wOqxeo//XE5aTioRyMAISII3AzvPnq9OTdG8q1ZDmTJlUaJkSYSHheHYsaO4euWyPdO+1mN5JXgpEbx0worGrnLyVEHq5FYAz5/FGRvh0HttBo6DSxFD8zotTSZ4QNyTR7h88gDuhl/F43u3QIQh6YWWqOqDPG4FLcLtv3UV7t+4Bo/KNVG+vq+WLmFziZzgBe3ZiKBd/7Jt/0l1XZX3CCOPKjVRv0df4/ZmqsQ6ueEPhAWeYBgSiUikldYmaoJHSYRStaNg+ujeHeM2f+pGr8YKliiH4pWqqxlq0xhREzyq4N23bJYZVnQvKPIzauNGiWp1ULlxG5swVztY7wker/ifEj4kdxJ6dA9O7/jHbIGxUKnyqNX+HbgULsZ9p4iM/8k99OD2TfhtXmnc0kwjKBZVbdERFRq2ZJWKkuDlt8Cr9wa4osZ/S7kMNU8jopeMSF5q4JUtW3aLjz2labGl33Vq40hK40SN/wompPd+Yt1yhAWdTAZT7ryuaNH3O6v5jBb4pzSH3uM/7/OX80sEMhoCkuDNaB6T39cqArwSvNQIXvpCYUGncHjlT8mkAZQva6kJmFaulAmeVkhqO4/IBO/5wzvhv3mlxS1jJKlB0hqWGt+RB+g+3vrjOMREhsPdyxtNPxykrWMAiJrgWQIyNa1XzcFPYULREzxTaPTkF/peek/weMV/Ndd/wrM4hJAW7L4tZr8BPKv64M7VC0xqg1d1tYz/1j10N/wKk9O4H3HNOIjktEi24fyhnWzbMy+/iBz/9d4AV9T4bymXefnyJfYvn4PI0LPsHkmpkeqmWSNBkkAkedJh6FQ1j0abxsj4b4CL4sX9m9cZ1o753JC/WMnXRuwqDtR7/LfpQpODJQICICAJXgGcLMop8krw1BC8hDFVXJ0/vAPhZ/3wOPoOsmbNxpp8VGjYglWJ8jKZ4PFC1r55RU7wTLWRu49dYJQsIUTXTx3KpBi8fTuwLvSW7MKR3aypF2mQdRo+0z5HWDha1ARPErz2X0oUZ3xaaavBq3e/SIJX3XVDzT0Dd/7LmqomNV5Eooz/qfvm5sWzOLVxBR7fu51ufhE5/uu9Aa6o8d9aLkMNO3ctnop74VfY/UG/u958byDyFy9pvF+oKn7z7FHs/1Tp6/vJN6nfeDaOkASvjYCl43BJ8KYj2PKjJAIaICAJXg1AlFPoAwFeBC+tph76cyE7yYa9+yG3s4s+Tvi/byETPF25w/hlRE7wEuKfYfXY/gyLJh8ORlGvKkZcNswYzhLtmm17W5XGULZ48uoKLGqCZ+lOoWT86eOHyJo1q1ln5tdxV8kELxF1WjCkhl7Zc+SEp3et1+EOs8/Ue4LHK/6nBXhawCJ9ftOttpLgHQ6flh3SAqdmx1ATI9pZQk1vFePlF5HjP2Gr5wa4osb/lIpViOTd++ss3L56wXhvUDM16oWQ8DQW1wNPGncnUANcKdGkXZNVzR5wHCfSe/zneOpyaolAhkRAErwZ0m3yS1skKl69Yg0Cpm/1FwogSfDq092iJ3jrpnzNtppRNUj7b/9n7NC8d9lsRF4MQoVGrVCjdXeLzju+bjnTVHYp4oE2A8dq7mBREzzNgdR4QknwagyohtPpPcHTE8GrwP7o3m1j40ja1uycv5CGHjFMJeO/bZDSgtZlv0PGat6CJcuhWIVqtk2iYrTo8Z8g0msDXFHjf2q7EUlTnCRN6LeXNePZ/Fbk+B8dGYaYWzcZ7O5lK732xfak/td7/FfxSJZDJAJCISAJXqHcnblPVo8JXnogLmqCRx2zSc9VsUqN26BcnSbpAbmqzxA9wQsP9sfBFfMZVrSlr373PozsDTm0HQFbVrHKkFaff58My6hL57Dnlxns9dI1G6Jul49U4W3LIFETPMKIKnWexz9jcOVwyJ1i12xbMNVirMgJnhb48ZxD7wmejP9ZeLrfrrlzOORC5wGvv4LXrpOw8WDR478Clx4b4Ioa/1MjeBWfRV0Owelta8y0q6mxWpnab6Jmu15Wm7DZeIskGy5y/N8ydyzTBCfrMHQanFzczPC5dPIA7ly7mCLERcpVQak36trrBovH6z3+czlpOalEIAMjIAneDOw8+dXNEZAJnlgJnumPVboSqjRti6otOunmtpAJHlgn8wuHdzKfUILgVc+X6bodWbWYvdZuyBQ45nPF4+i7rKKKujkr25ppPFX+Jv2hq4WDRU3wCDvTrtnN+wxFoVLlVUFKHbSpIjt7TgfUatdb1TG2DhI5wbMVq/Qer/cET8Z/seJ/el//tn6ejP+2IpZ+40WN/4/v38HGGSP+++01OdXGXS8S4vH4/l1kyZYVzvkLI0sWvs8YUeM/ScasnTyY+aV4pRp4890vkt0MJzf8gdBjybXdTQfykpuhz9B7/E+/p4f8JIlAxkBAErwZw0/yW6pAQCZ4fH98qXCB1SE8KngkwWuPRwzH0j1TpEQZDF281v7JLMxA22EPrFiAiJAAm+f36fg+yvo0tvk4NQeImuBRx+xVYz/Hy+fPbe6ErchmEL4t+g1HQc+yaqC2aYyoCR7p7Z7duxH0nKzavKNqzGgL9L2IayhfvznyuBZQfVxaBuo9wUuv+P/g1k1cOnUQj+5GIe7xAzx99BAJcbHImi0721abyzkf26lQvOIbKF65BrdqN8WHou7gUXMNP4m5j5CD23A37DJibt1AzlyOcHH3gGflmtxii/K9JMGrxkOvZ4yo8f/1oK3+U0WN/zcvBmHfstkMqOZ9h6FQyXLJQLtwdDf8Nv7JXqfiB1N79eol+68keNVfa3KkRCCzIyAJ3szuYYHOj1eCF/swBnuWToeDYx60+GyYakT9t67CzfOBqN+jD9yKllB9nK0DRU3waKv5rSuJDSHyFizCneSwxTcywUtEKzoyHAHbViMqNDhVCEl3t0GPvshXuGiqY9M6QNQEj3Tets4zNAep2/VjlK7RQDWERJasn/otG1+ublPUbv+u6mPVDhQ1wVMWq2xtKkhNcSJDz+LN975khCJPE53gJemYUxv/xMM7kaphJn+Wq9MM1Vt3Y00MeZio8T/+6RPcj7jOIHUtWgIOjk5m8N67cQ27l0w1ytEkxZ4kgqhZFJHxPEzGfx6oajOnqPFfG/T4zSJq/L90Yj9O/PsbA7bbmPlsoTepUZO7wysXMXK31yTDDjjFtswbi5jIcEnw8rs05cwSgQyHgCR4M5zL5Be2hgAvgtfe5Lthr8+5dkEXNcHT+50gE7zkHiIphge3IkDNh2i7IOkoU/UBVVZRAyLS6i1YQvvK0KTfRNQELyzoFA79tZDBYUnnjV6nRiuvXrxgFYnUtNLUti+chHvhV6zqJ9t7T4qa4NkbY0iahiRqeJrIBC+RhTsWTjJ2kSecKdHOlccZ2XI6IHuOnHiRkIDnCfGsmlfRuFb8wUtLnOYXNf6TJuWJdcsZxG8NGAO3op7Gyz/+aSz+mfiVmb+cqML91Stj0zsazLNhlOjxP3j/Flw8uof5hBZsC5XyUvV4irgQyO6fbNlzcFu0EjX+q3LAaxwkavwP3LkOZ/duQo5cjug2ep5FD4QH++HgigXsvd6Tl5qNkQTva7xo5UdLBHSKgCR4deoY+bVsR0CvBC/pjvLSrBQ5wbP9CknfI0RP8NIXbds+TdQE79z+rTi9fY3FKhAFwf2/z0NEyGmUql4f9bp9YgYsVTBePLqbbUXvPGKWbaCrGC1qgmcvwZs7ryvafT2J6SPzMlEJXpKZ+fs/WRPCluJ56ZoN4OruaVWT8umjGNy6fJ5V/FKlKVm9bp+yCiutTVSCN2jPRgTt+tfis0x5j7D2qFIT9Xv0NUplkBwK6VmGBZ7g6hfR4/+6KV8bNdu7jJzDCFs1tnvpdNy6HMKGkkY/LfxqbaLGf61x1Ho+UeP/+cM74b95ZYq/yxSJBlnBq/VVJ+eTCGROBCTBmzn9KuRZ8SZ4KbC+PXiiamypmRFVu9E2zTYDxyFvgSKqj7VloKgJni0YvY6xoid4rwNztZ8paoJ3Zuc6BO/dxIjA7mMN1SBJbdeSabh95TzyFSqKtwdNMHv7wpHd8Nv0Z4qJiFofWBonaoJnqiduC0lrWilKW82rtewMqhblYaISvCQvs3XeWAYpEYUlq9VRDe+z2MfYMmc0I7o8vWujYa9+qo9VO1DU+K+QIpaq3nb+NAV3rl9CnvyF0H7IlGRQ0m/FrT+OY9ua3b280fTDQWrhVj1O5PhPO3Q2zhjOsPJu3hHezdqpxu1u+BVWLc+O9e0Ab9/2qo9VO1DU+K93rXdR4z/J/+z5ZQa7fK31N9i3fA5uXghkkjKdhs80u9RlBa/aO1+OkwiIg4AkeMXxdaY/U94Er70Alq/fAjXb9rR3mmTHi5rgERCkw6uQHDkccifbUq452DZMKHKCZwNMr2WoqAkeNeU6ssqg39Zl5NxkupX0+oYZw/H43m02Jqke3Ont/+Dc/i3ImdsJXUfN1dx3oiZ4SRtGphXYouWroskHX6X18BSPE5XgVfQRaYG3x4SfbNbSPb1tDc4d2GpzU0O1ThQ1/hOBS0QuGS1WmS6MrJ86lEkxpEQQKotVlggTtdinNE7k+B9xPhD7f5vD4KFFQlostMU2zRrJtK5Jssn3k29sOVTVWFHjv707RXhrvYsa/+OePMLaSYZFJpKSeeuL0Wa/zUgiaPsCw2K7pXtCEryqbns5SCIgFAKS4BXK3Zn7ZPVO8PJKvkVN8OhqpirpqwFH2YXdvM9QFCpVXtVFfmbHWuP2QV7yGSIneOQEqhZRLHvOnKq3aKpyoJ2DRE3wTJusWZKOIV3kDdMTG0nW7fKRsSKUFlM2TPuO3TfUCK/NQENVo5YmaoJnSvAWs6NZWpEylVC+vq+WLjHOJSrBG7R7A4J2rwfJYHQaNt1mbC8e24NTG1awnTw9x/9k8/GpHSBq/E+If4bVY/szeJp8OBhFvaoYoVIWqWq27W31flAWu3j5ReT4r5Dn5JBeExcji4UGgwFbVyP8nD9KV6+PKkkqfI/98yuu+B3itigiavy3l+DlrfUuavyn+8Rv80pcOLyTPcPomVSmZiPkcSuAB7cjcdX/iFFPPOmzjsZLgje1KCnflwiIh4AkeMXzeaY94/QgeGu1fyfN+OUt6I4iZSqm+XhrB4qa4L18+RKr/tNGdHLJjw5Dp6rG9vi65bh88gAbb21LlOrJrAwUOcEz3aJJ8FRu2hbVWnSyF1LNjhc1waN7hrbOPom+y7As36AFvOo2Y5q60Tev4/DKnxiBS43uqEKOrKxPE+QtUBiXTx3Eg9s32Wu8Ej1RE7y0Jt6a3RAqJhKV4I04fwb7fzNUq1urek8JvgMr5uNGsD+3hl6ixn/CXNF5pSrc9t/+z7iIuHfZbEReDEKFRq1Qo3V3i+5RfgPwWqwSOf6f3rEW5/ZtTrFp1J5fZyIqNJjFmhafGeQcFAs5tB0BW1ZxkwISNf6nNc7s/XUWIkPPskUunlrvosZ/uu5fJMRj0+xRxt9mlh5a1iraJcGr4geMHCIREAwBSfAK5vDMfLq8CV5elR72+kTUBM+0GrFu149RukYD1VA+ibmP9VO/ZePL1W2K2u3fVX2s2oEiJ3hJt5xXadqWkYJ6MVETPML/9rVQ7Pr5hxRd0f6bH1h1vELymg6m52CnYTMtyjvY619RE7y0Jt724m3L8aISvKSj+89Eg+wFbTVv9sk3TAdRjSlNDWlsSmSjmrmsjRE1/hMe4cH+OLhiPoOGyI/63fsw3ygEYX6P0mj1+ffJoDPVvCTNatqpoLWJHP8vnTyAE+uWM0h7TvjZonTWlrljERMVzkjcHuMXmY05u3cTAneuS1Er3h5/iRr/9a71Lmr8V67lFy+eI2jXeoQc2Gas2KX36B4p69MYNdv1tigRJAlee54G8liJQOZEQBK8mdOvQp6VJHiz6NbvORxyofOA4fBp2UGz7xgWdAqH/lrI5uswdBqcXNySzU0/mF69eIGs2bInSzK2L5zEmuBZSwLt/aIiJ3hJK3hpC2bV5h3thVSz40VN8BQAaXvy0dVLzZII5b1a7d+FV92mTGLj4J8LWMM1xaihUct+w23WVFTrOFETPEnwqr1CrI/jFf/pE+leuRpwhH04JdsFPMvA3asKHPO5gWIb/VP04OOfxuJu2CVEhgYj7vFDdgzpw7b5ajzyuBaw/0STzCAywUtQmG5tJt+Q9Ez+4iWNWuPthkyBYz5XPI6+y7TFSdIpLOik0ZdU+Wvpt4O9jhI5/psuItKuN9olYmrxT59gzYSBxpeSymttmz8e9yOuwzl/YbQbMtleVyQ7XtT4r3etd1Hjf9ILlGIZyWXR72iSaaD7IEsW6/kdjUuIe8p2YtGzjofpfYGXxznLOSUCGRkBSfBmZO/J726GAK8EjwLtxhkjkN0hF7qNnqc71EVN8JTqKErqek0yNI5Kavt/n4eIkNMoVb0+6nX7xOztUxv/xMWju9mPos4jZmnuV5ETPALz1cuXiZhmyZLiD1TNwU9lQlETPFNYYh/GIPysH+6FX8azp7FwK+oJT+9acHX3NEOPZBke3LoJ54JF4FK4GFc/iprgvXzxAvdvXmcLUeQHPZreEzxe8V95lu1eOh23r16w2TUUn1p9MYqbX0WN/4ojKM4cWLEAESEBNvvGp+P7rDKOh4kc/6nx7ZqJA/Hy+XOmJ9qod38Uq1CNwUwLIQf+mM8kNOi3Fy2C0MIhVVHnyV8Il07sQ+ixvWws+YZ8pLWJGv/1rvUuavzX+vrmMZ/e4z+Pc5ZzSgQyMgKS4M3I3pPf3QwBngmenqEWNcE7s3MdgvduSnEb364l01gFIm2tpW7OpqY0AkmJILbH7yInePbglh7HiprgpQe29nyGTPDsQY/vsXpP8HjHf5r/5sUgXDyym+lRpmakC1+uTlOUrtUQuZycUxue5vdFjf9JAYuODEfAttVM1zU1I93dBj36Il/hoqkNTfP7osd/U5kGApFI3Jy5Hc00Rn0//ZbpviuV7knBbvv1ZKb/rrWJGv/1vlNExn+tr3Tt5tN7/NfuTOVMEoHMgYAkeDOHH+VZUMXgq1dsG/70rf5C4SFqgqd0wSZnW2t+o3TTpjHdxsxnW2kVO739H5zbvwU5czuh6yhDEx0tTfQET0sstZ5L1ARPaxy1nk8meFojqt18ek/w0jP+JzyLQ+zDaDx7/BBUCU9bzqn6OrezC3Lnzcd0YOnv9DBR4781bEmK4cGtCLa9mXZfxT6IZlI0OXM5wjl/IabVS429eJvo8Z/ux+Nrl+GK3yGLUJesVgf1e/RFdNQN7Fw0GVT1a2qkp1zyjbpc3CRq/JcEr/2XE13XPq06oueQcfZPZsMM1Dck5OA23A27jJhbN9jzzMXdA56Va3LbhWD69fQe/22AUg6VCAiBgCR4hXCzGCeZngmenhAVNcEzbbJGunu12vU2cwsldxumDzO+RlsAqaEKGW0T3DDtOzx99ACyi3YZDF28Vk+XNPfvImqCxx1YOz9AErx2AsjxcL0neDL+i6XBz/FS12Rq0QleBcSI84EIPb4X9yOuIT4ulsn8lKreAOXr+xpxjo97iqv+Rxhxla+gO9O3pl1XvEzU+C8JXvuvKB4ELy0QkuY0mWvREska2N67cQ27l0xNtgiinA31EXnz3QGqm3+mBQW9x9yJQ6cAACAASURBVP+0nJM8RiKQmRGQBG9m9q5g55ZeCd6TmHvsx2q2HDnhVqwk1+2XalwoKsH78uVLbJwx3Ljlr3yDFqyZB+m6Rd+8zrb+EYFL1Tp3rl9iUJb1acK2/F0+dRCkLUpWtUUnVGnaVg3UNo0RPcGjKjelKoe2KGfJmtUm/HgOFjXB44mpFnNLglcLFPnMofcEL73iPx900z6rqPE/7Yilz5Gix//0QTltnyJq/Ne71ruo8d9UzuStAWPM9Nqpaec/E78ya4jrRM06X70C5aKmJG+rz79P2w2h4ii9x38VpyCHSASEQkASvEK5O3OfLO8EjwjBfctmmwVVQrRyk7dRrWVnBi4RWpf9DrHmRY/uRiG/RxlUaNAchUqV5wa+yAmeabdmawC3/+YHHF29xEjymo6jBiCdhs1MtmKuhbNET/CoKdGtyyEMytZfjoWru4cZrLTV7NH9OylCTdU8bsVKaOEOszlETfBou/LOn6YYsajUuA3K1WmiOb5pnVDUBO9Z7BMEbF1lhM3TuzaKelVJK4xcjtN7gsc7/nMBVYNJRY7/GsDHbQrR4z83YDWYWNT4rwF0XKcQNf4H7dmIoF3/wlI/EOU9At6jSk0ma5ItW3bmB/rdcHLDHwgLPMH+X6/bpyhVvR4XH+k9/nM5aTmpRCADIyAJ3gzsPPnVzRHgmeBRA49tP443W0U1/XSlG/OeX2dabPJRq/278KrblIvLRE/wSIv36OqlFn2j4E4/hA7+uYA1XFOMmn607Dec21ZAkRO8hPhnWD22P4OadMLafDk22bVPPrsacCTFe4J+rNKPVq1N1ATPtIs2YUqV61TBrhcTNcHTu1/o+tB7gscr/r9IiMeNkDPGW8S1qAfyFiiil1sGIsd/iuuKZc+ZE9my59CNX0SO/7pxgpUvImr817tfRI3/5w/vhP/mlawRYbfR88zcRAvytAMxT/5CaD8kcXFeGURxb+uP4xATGQ53L280/XAQFzfrPf5zOWk5qUQgAyMgCd4M7Dz51dOP4N02fwKTZSAjWYYS1XwQH/sEN84FGLf6U9VVWNBJ45ei5l2kraRYh6FTQZ21tTaREzwFS2p0Q1XT98Iv49nTWLbFydO7FlzdPc3gpirsB7duwrlgEaYFlyULP91CkRO8W1fOY/eSaQz7Ru/0h0flmsku+5BD2xGwJbFq0dJ9IQneZShaqpxmjwy9E4miJnh69wtdgHpP8HgRvHr3jajxn5qokUSTYpWbtkU1HS1WiRz/NQtYnCaSBC8nYO2cVtT4TwSusrOq+9gFyJ7TwYjk+qlD2a5Rb98O8PZtbxHhC0d2w2/Tn0yDt9PwmXZ6wfLheo//XE5aTioRyMAISII3AztPfvX0IXhNm3lVbNQK1Vt3N/tgJbgqL9K2/9YDxrDKUGr0ReQwEb2lqtdHvW6faO42URM8zYHUeEKRE7wr/odxbM0vDNHOI2YxXeSkRpXXR1YtZi+3TKIdRvrJT6Lvsu1msoJXO4KXmgveunLB6Iq8BYsgD+m56cRETfAoPgTt2WT0gkelN7jK+qTF3XpP8CTBy2+xMi3Xi+kxORxyofOA4fBp2cHeqYzH6514Fzn+611yRhK8mt2Gmk4kavw33fHW5MPBZvJMG2YMx+N7t1GzbW+zxoSmwCu/pSn37Dn+J019okym9/jP5aTlpBKBDIyAJHgzsPPkVzdHgFeCdzXgKNNwJZKq07AZFptF0fZ/qiAla/bJNyhSpqLxy53ZsRbB+zZb3WJjrx8lwWsvgnyOFznBU3TDUvrBSdXvB/74kYHfe/JSMydsmTeWbTmTBK+2Fbx8rnTtZhU1wdMOQX4z6T3B4xX/aXfI3l9mGIGlRd7SNRvyA9rGmUWN/0kreKs0a4eqzTvaiB6/4SLHf72T76ISvHon3kWO/+umfM2aQlMVbvtv/2eUm9m7bDYiLwahQqNWqJGkuEh5eh1ftxyXTx6ASxEPtBmYXA5Ni6ec3uO/Fuco55AIZCYEJMGbmbwp+LnwSvBO71iLc/s2o2S1Okzg3pJtmjUSD+9EWtQbvXfjGrYvmGBRQF8Ll4ma4GmBHc85RE7wzu7dhMCd69hWM9pyZslMOwdLgjc5Qg6OThgwUxK8PO/RtMxNccanVUf0HDIuLYdn2GP0nuDxiv96d5jI8f/Vy5eJ7smShavkkq3XgcjxXxK8tl4t6RP/9e4XkQne8GB/HFwxn10IhctURP3ufRjZq0iZ5fcojVZJdrrR2KhL57DnvwVIWnis2+Uj+y8+CzPoPf5zOWk5qUQgAyMgCd4M7Dz51c0R4JXgEVFFhJU1iYUHdyKxedZI9mXqdv0YpWs0MPtiir6SpQ6pWvhQ5AQveP8WXDy6h8HYoEdfFCrlpQrSiAuBeB7/jK2SF6/4hqpjbB0kcoJ3I+Q0DvxuaBbRYeg0OLm4JYNPqTogrequo+aavS8reAFJ8Np6x6XPeEnw6lMKgFf8T5+rKu2fInL8Tztq/I8UOf7rXXJG1ApeSfDaf9/zjP9+m1fiwuGd7EtSvuhVzxf5i5c0Spm1GzIFjvlc8Tj6LpNtoN2lSt8XGk+Vv5Z+a9t/1vrX4NfiHOUcEoHMhIAkeE286eHhifc/+AglS5VCaOhFrP93LS6cP5+Z/J2pz4VXgnftzHEc+ftnqxILR1cvxdWAIwxb0gulbeWm5rf5b1w4vANOrgXQ4dv/ae4DkRM8ZVsTVYp2GTlHdRft3Uun49blEOYL+tHknL+Q5n4ROcEj7ekN04cxTC119qWtgmsnDcKrVy8tVr1Lgpc/wRsWdAphZ0/h3o2ryJ4jJwqXqYDKTd5GbmcXs3uBdiA8vBuFAh6ludwnph8mcgWPmgdQwrM4RN8Mw/2b15EztyNci5ZAvoLuyJotm5rD7Rqj9woeXvHfLtDS4WCR4386wJvmjxA5/qcZtHQ6UFSCV+/Eu+jxn3YkHFixABEhATbfCT4d30dZn8Y2H6f2AL3Hf7XnIcdJBERBQCiCN+DMObi4ujLfzpw+FfPmzjL6+d33PsDEyf9LtsXrlyU/Y9zYUaJcDxn6PHkleERubJr5PcPGp9MHKFv7TSNOd8IuYeeiKWa40daaElV9mFYvVfdunz+BVYt6VKmJRr37a46xqAmeqQafd/OO8G7WTjW2d8OvYMfCSWx8St1pVU9oYaDoCZ4pie5WrCSqNG3LFjlIysR/80qmN2bpnqLXJMHLj+B98eI5jq/5BbRwldRooaTdkMmM5I04H4jDKxexZ5ditE2w6YeDQFXXPEz0BC8lTAO2rkLIwe3JhpAvGr37BQqXKs/DJcY59Z7g8Yr/XEHVYHJR478G0HGdQvT4zxVcOycXleC1Ezbuh8v4b4A4OjIcAdtWIyo0OFXMSXeXdi/mK1w01bH2DNB7/Lfn3OSxEoHMiIAwBG9tnzpYs3YD8+Hz58/xhncFPHr0iP2/SBF3HD3hj6xZs1r08fSpP5iRwZnxQsgM58Qzwdv/+zxEhJxmMBUtXxWuRT0RE3UDN88HsipEaiZVsdFbCN5r6IRO22UcnPIg7vFDI7RvfzWBSxAWNcEjAmr/b3MYvm8PmoB8hWz7gaPoJpPele8n32h+C4ie4D2JuY8N075j94c1I3Kq0/AZySqvJcHLj+Clho/U+FExena9fP7c+H+WMPTsiy1zxlj0XZ78hdDu68lc9C5FTfBuXwvFqQ1/MB/QIiJVS5vagRXzcSPYP8VnVNLFR60faHpP8HjG/4jzZ0AaiWTl6zeHq7uHKnjj456CqrKyZMnCKq55mKjxPymWhHPkpXN4dPcWnj5+gLhHD9giYg6HXKxBbu68LnDM64oiZSsm26XAwy+ix38emGo1pyR4tUJS23lEjf/WUCQphge3IkDFLLQrLvZBNPtNljOXI9tNRblLwRJltXWCldn0Hv/TBQT5IRKBDISAMATv/IU/o227Dsw1q/7+C98OGWR006QpU0EVvIqFhV3Hs7g4lPMyVMTExsaiUvnSoARCmn4R4JngPYm5h82zR5lVs5ki8ea7A1C8UnUc++dXXPE7lAwkXlWi9EGiJngXjuyG36Y/Gda9Ji5mFdNJLWDraoSf80fp6vVBXbZNTfGVk0t+dBg6VfMLWyZ4YD9MqQr0fsT1ZPg65y+MFp8NY8l3UpMELx+C11Qag8j1N9/7EoVKlsOL5wm4deU8Tv77O+hZZ2okseFRuQZ7//p/Vb+WtMa1uIFETfCoMpcqdMm6jZnPSCnFbl+9iF2LDdI+tHBYuUkbJs3w8sUL3LkeiotHdxvf6/DdNDjmNZfY0MIvNIfeEzye8X/L3LGIiQpnUHYeMcviM8sSzvSb4cHtm+ytLiPnMl1trU3U+K/gGPswBuf2b2G/u0x3G6SEMxEjFRq2RLHyVbV2h3E+Gf8tQ/siIZ5piFL8oSZSr8Mkwfs6UE/9M0WN/6kj8/pH6D3+v36E5DeQCOgLAWEI3i3bd6Ny5SoM/WZNGuLypVCjJ46fOs2qeMlWr1qJb77+iv1NFb9U+Us2oH9fbNywXl/ek9/GDAGeCR590NNHMdj/29xkZBURh1Wbd2TfhapIqMHU9cAToOZqVOlDkg5E/vIyURO80zvW4ty+zciRyxHdRhsaeiW1Pb/OZNucaJW7xWfDzd5WutPyan4nE7xEuEnHlbReifDN41YABTzKsHvDmnbo9aCTrGIhf/FSKFKmoua3jqgJHjUX3L/8v6p3CzsKqOKNSCnS6iPz9K6Nhr36GfHft3wObl4IhLWOzvY6StQEL2j3BgTtXm/xWaZU79JzqtUXo+BW1NMMZiIQlWrrsj5N4NPxPXvdYPF4vSd4vOI/7cJZO3kww8TWLuX0O+Dwyp/YsbXavwuvuk01942o8Z+AjHvyCFvmjDbbKWULwLwWqug7yPhv8ATphp/dswGRoefw+P7tZCQ8LfA65nNj9xb9Vk4PPXFR478t98brGCtq/H8dWNv6mXqP/7aejxwvEcjsCAhD8J70D0ShQoXx8uVLlPI0kLmKXQ2LNMoz1K9TExERN9hbn/T5DKPHjGd/L5g/F/+bYtDslKZPBHgleEnP9lnsYxBhRT9EXYoURy4n59cKiKgJ3qWTB3Bi3XKGfc8JP1tMDJTKKyJHeoxfZDbm7N5NCNy5DqQ72n3sAs19KBM8zSHVbEJRE7zzh3bAf8vfKFS6App/+q1FPKmhJOnz0j3TbcyP7P4wxsrTx3B01WJWfdV11FzN/KFMJGqCRw3vDv21kGHea9JiM1y3zB3D5IBKVKvDtPYsmdLI08XdA22+HKu5X2hCvSd4vOJ/1KVz2PPLDIZpq/6jWFdztUbf6Z+JX7EFE5J2avKBoXhASxM1/hOGiswS/U0STSWr14N72cqs0zw9t7LlyImXL54zkjH+aSzuhV8B+VNpikvHNe87jO1i0Npk/AeLI/QbTW1lNS3WV2vZCeV8mljckaWVj0SN/4Tf1dPHEBV6lkFZuWlb5C1QRCtY7Z5H1PhvN3DpMIHe4386QCA/QiKQoRAQhuANOheKvHnz4uHDh/CulPhjjqp6qbqXjKQYKnqVMjrQ07MEDh45wf6/fdsW9P30owzlXNG+LK8ET+84iprgkW7lrp9/YO6p1f4deNVtZuYqSqrXTBhofK15n6EoZNKIaNv88awam6QCqLGU1iYTPK0R1W4+URM8v00rceHITtZtmbouJzWSalg1pj/TefOq54ta7XqbDTFtbNh78lLtHPLfTKImeLRlmfSqyUguhmRjFFs35WumJVrj7Z6o0KCFRcyJSCFinvSUe443VIxqbXpP8HjFf9OFxB7jFjLSMKkRaXI37BLbbeBRuabZ24f+WoSwoJPc4oyo8Z92eGyYPoxhXa5uU9Rs29tqH42k/qLmuLuXTGPa42Vqv4k6nRIl2rS6b0SP/7ST7cDviTuraFHQuUBhRsRT1S5JyxDxS6Tu82dxZnrvvHyi+FbU+E/nr8QTWkzsOnqemRwQve+3eSXCAg15rzWjautqLTtrdasY5xE1/hMAJJ+lWPacOZP1pdAcbBsn1Hv8t/F05HCJQKZHQBiC98Dh4yhRoiTT0S1doiir5CUbO34SPvr4U/b3+ZAQtGrRxOj0SpUqY+uOPez/e/bswkfvv5PpL4iMfIK8Ejy9YyJqgkfJwZqJA1mSRsRGo979UaxCNeYuIqoO/DEfkReDWDJB22wpkajb5SNQk6hLJ/Yh9NheNtYa2WWv30VP8OzFj+fxoiZ4im61tWrCK/5HcGyNgbht2W8ECniWMXODQnalJItij99ETvD++r6PRWJ92/wJuB9xDdVadUHlxm0swqv4lTQtOw2faY8LrB6r9wSPV/ynXR602yOla37vstks1li6r87u2YjAXf9yI99Fjf/KogZdsNaI95RuhOPrluPyyQOMcKQmrVqbyPGfdHbXThmChLhYtiuBFqe86jUza8xJ9wTdG3TPNH5/IGtifHTNL+wYsnrd+6DUG3W1dgubT9T4//BuFDbN/J5hQBrUNdr0SIYv9a0IObgtRdxLVa+Het0MebOWJmr8N104Jzypsrpai05aQmv3XHqP/3afoJxAIpDJEBCG4F3x12o0bPQmc1+fTz7Eju1b2d9nQy7B2dmwxf7335Zh5AhDFQ3Z5/2/xLARI9nfvyz5GePGjspk7s9cp8MrwdM7SqImeOQX0+oq+j8l4dSt/En0XaPbfD/9lukgEslrydp+PRl5CxTW3M0iJ3iag6nxhKImeFGXQ7Bn6XSWdHcaPsOsWRQ17fr3f98Y7xO3YiXg2+c75DCRaNi9dDpuXQ4BvffWF6M19gogaoJHQNKC1I1z/gxT3z5DUfi/3QZKM8hS1eujXrdPkmFOfts4YzhrjlekXGU0++hrzf1CE+o9weMV/88f3gn/zSstymcoQCskvCW5H0XrnVd1tajx/8zOdQjeu4lVu6elSary24GXX0SO/6a7q5QGxEkfSqakFslnZcueg0lpbP1xHB7fu83ut/bf/mC2m0GrB5uo8f/GuQAc+ONHBmPrgePgWqR4MkhNf1MXLGEuXXI37DJbhJQEb0f0HDJOq8sRD+/ewqaZI4zzVWnaFlUlwasZvnIiiYCICAhD8Hbv0QvTZsxmPn727Bm2bN6E2j4+KF7cw+j35s0aIfTiReP//1y5Bg0aNmL/HzJ4INas/lvEayTDnDOvBE/vAIia4JFfyOfH1y5jHbQtWclqdVC/R19ER93AzkWTk2nB1e/eByU5VYmInOBRZ3MiEh0c86DFZ4ZttGrMf+sq3DwfiPo9+sCtaAk1h6RpjKgJXkL8M6ybPJjdByRN8uZ7A1gFGyUYAVtXsSoqMiKqaIyTawGUrtEAedwK4kZIAMLP+rH3aTt0+fq+acI+pYNEJnhJI5S2nCsN7so3aMGqeGJuRWDHwknMJ11HzTPTEaeKrCN/L2YVvmS0Q4G2z/IwUQnemxfPYt+yWQzSZh8PQZGylczgJYJ91bj+bCcJWZuvxsOlcDHjmP2//4iIkIA0E5Gp+VLU+G9WwfsfQZgaVqbvKxW81EehzUDtyBrlM0SO/8qOgpS02qkh8V8j+zC43jZp+EnPO2qcx55nXT9m8UdrEzX+K34hPK31rQgP9sfBFfMZ5EllmLbMG4uYyHBJ8LbSluBNWsFr2rhb62s/rfPpPf6n9bzkcRKBzIqAMAQvOfCUfxAKFipk0ZfUWI0arCnm7l4UR0/4G7cUNaxXG+HhYZn1OsgU5yUJ3iy69WMOh1zoPGA4fFp24PIdI84HIvT4XkZ0xMfFsgS7VPUGZiRUfNxTXPU/gphbN5CvoDvcvaowcouXiZzgKRUJtlZH7f11FiJDz6Jhr8/h6V2Ll2uE3aJJgNJiCFWFWrNiFd9A7Q7vsYoSS81xKGnvNGImsmXLrrl/RCZ4Ccz7N8Ow7UdzsokkZaiijczTuzYcnPLgSfQ9kAbpwzuRRh/wbLBGH6L3BI9X/KedH2snD2Y4587rilb9R8Ixr4sRd6VZJ1UcUnVbfo/SaPrhINaI0LRiju6rxu99qfk9IyrBa6rBS5qt9MzKmjWrKnxNNXilRFMZDF28VhVuagcp8gupyV/8OcKwI6HJh4NQ1MvbOP2uxVNx++oFlPVpAp+O76n9WNXjRCV4T+9Yi3P7NqcoN3M98ATb8UYmCd7klxTFGR+NCV76FFrwMFqWLGZyJqovbI4D9R7/OZ66nFoikCEREIrgrVChItas22iUZFA8lpCQgFYtmuLypVCjE/9evQ5169Vn/791Kwo+NQ3antL0iwCvBE+/Z2z4ZqImeHr3iyR4R9isO6kQvJYafGnpb1ETPJZIvHoF2t5MiV5SoyrRjt9NY+TUvRvXcOivhWZyJ1T1S/IBpgSXln4RneAlLKMjwxGwbTWiQoNVQ1usYnXU6fS+meSG6oNVDtR7gscz/vtt/hsXDu9gSBGRS2Qtabvfj7jKGnWSUaNPv41/GZtF0eKWUtVL7ydt8qkS9lSHiRz/N88ehQe3bzKM8hZ0Z7txqMLaMZ8bax5Fz7OXL56zhSqqkL8bfgU3LwTi+pnjRlyb9x2GQiXNt6KnCrqKASLH//BgPxxcsYDdK93HL7S4GPjg1k1snmOQvWvVfxTyFy9pRFVpBspr0UrU+G8qv9Br0hKLJGLIwe1sN4+lxXlZwWv4/cSD4FXxSHmtQ/Qe/18rOPLDJQI6REAogpfwJ73dId98h9p16sIhZ04EBwdj7JjvEX3/vpl7jhz3g2NuR/bavHmzsXQxn87UOrwmMuxX4png6RkUkRM8PftF5ARPqeClBO/twRNVu+no6iW4F36FJRe0bTZvgSKqj7VloKgJnilGpMd77fQxI0FVsERZ0NZAatRlao+j74K091zdPbhWvNNnSoI3EXkieoP3bUb0zTA8eXDPjCykUXRvuRUvybqZFylT0ZbLP01j9Z7g8Yz/RBBunjPabLHDFERa+Gj79SSEBZ00Vr+Zvk+yGSSfwcNEjv9xTx6x7fzW9PVTw5uXBAB9rsjxn2LGhmmGfibl67dAzbY9zVxBsib7fptjXMTqPGKW2eIUPffO7Fhr8wJxav5W3hc1/lMc37FoMoPB2rW/Ze4YxETdsCgpIwleSfBmyaLfnaJq7385TiIgAgLCEbwiOFXUc+SZ4OkZU5ETvKR+IS0r6gJMlj1HDrzRuju3asPUrgmRE7ykTSNSw8ra+5aSw7TOZXqcqAmeFtjxnEMSvNbRJf3kpw+jidpFzly5kdMxj+ot6Vr4TGSCl/B78TyBxZZLJ/ebke3uXt4gLXcHRycGM1WJBu3egIe3b8K5YBF4Vq4JkgHgZaLHf9J7Dzm4DZdPHrAoKWMJ98JlKqJCw5YoVr4qL7cITfASqEf+/hmkk0zmVqwkuwdo8ZDI38snDyImKpy9Z6kx5OG/f2ZV1tQ0t9voeZr7SNT4TwtVayYOZM8vWkSnhpyF/mvmSSCbavRaaqQmCV5J8EqCV/PHkZxQIsAFAUnwcoFVTvo6EJAEr35XVnlr8CrX2+2rF7Fr8f+Mlx8lCLQ1lqoP09skwZvYFTit2BctXxVNPvgqrYdbPU7UBE9zIDWeUBK8GgOq4XSiE7ymUBKpmPA0FnkLFkEWlbqvGrrCbCrRCV4FDNKwjLwUjEd3b+Pp4weIe/QAz2Ifs6aEuZ1dkDuvCxzzujIJh6S7FHj4RuT4T3hSs8gN04cbm0ZawphIxtZfjEG+wua9EA78MR+P799GAc8y8On4vubuETn+m8o0ELCk8e7kkh8P70T9t4BogDtps0h6TRK86UPwPot9guib10FNVMkvpDdOC4h53AqxxrfU9LaAR2mzhqua3yRJJtR7/Od9/nJ+iUBGQ0BIgjdnzpzo2esdVK7ijbJly8HFxQVhYdfx0QfvGv33SZ/P2OtkG9avQ+jFixnNt8J9X0nwSoLXlOAlcjchLpZtZX7zvS9RrAK/ah1LN5vICZ5pBS9pU6bVSFeRx/ZzkRO8tPoiPY6TBG96oJy2z9B7gifjv4z/abuy+RwlcvxXEKXGtifWLWfSJUmNGha26PsdI6vS20SP/9RklZqtWrNqrbqgcuM2yd6WBC9fgpcWqUgDmeRJqGFnSkZ9Eqq26ISytd9MF6JX7/E/vZ8h8vMkAnpHQDiC96NP+mDY8JHIlSuXmW8ePXqEKhXLGl/bvfcgypbzYv8/dPAA3unVTe++FP77yQRPJngKwUukbofvprFqXqUDfc22vVG+vm+63SciJ3gKwWupUUe6OSCFDxI5wQvevwUXj+5h6DTo0ReFShniXGoWcSGQbYHOlj0Hild8I7XhaXpfErwG2KIunUNkaLChgud2JNPgdcjtBEeX/IwQoX/UUCpfQfc04ZyWg/Se4Mn4L+N/Wq5rXseIHP+TYvr00QPcp4rEO5GsAV7+YiVfC7GrfC+R47+CAcWYs3s34X7ENRbXqSEhSWnQb2SPyjUt3ha7Fk/FnWuhTG6jdofEgiit7iGR4z9V7W77cRyexNyzCU4qZGn28RCzJoU2TaBysN7jv8rTkMMkAsIgIBTBO2bsBHz8aV+Lzk1K8Jbz8sKuPQfZ2Pj4eJQrnf5bvIW5CjU6UZngyQTPlODtNWkx++G677e5uH3lPLvKytVpiprteqeLdqXICZ4keO1/qNGWvAEzl6FoKW07vK+b8jUo4aaErsvIOYywVWO7l07HrcshbGi7IVPgnL+QmsNsGiNygkdAkT7l8bXLjDinBl6xitXxRqvO3Jvf0ffQe4LHK/4nPIvDFf/DzBVO+dxQvFL11NySru+LLNFAusgU48lyOOROl0o2tc4VOf6rxeh1jZMErznydB+p/R3A02cix/9DK39CWOAJBi9V577xVle4FC7GJDRyOTlD+f3l6V0b+YuXQuiJfcbiFSJ5238zBQ6Oebi5R+/xn9uJy4klAhkUAWEI3sqVq2Dztl1QBMKj79/H+vXr5pf0WQAAIABJREFU0My3OTw9SyApwUv+PHjkBHuPrFePLjhy2PqWlgzq/0z1tXkleHoHSeQEL6lvkhK89P7Lly9xcv3vrAkLGTVYIcmGHDkduLpW5ASPNMM2zhiB7A65uDRJsddxoiZ41IRw44zhDD7v5h3h3aydaiipedSOhZMMx/p2gLdve9XHqh0ocoL34PZNbJ49KhlUtJXZwSkPYiINTYksWZ3OH6JMrUZqYU7TOL0neLzif9KGkda6z1sCVelITztKuo6eB9Ki19pEjv9HVy/B1YCjDFLS2jdtGJUSzrQFWlnkqtWut9YuYfOJHP+5AKrhpKLGfw0h5DKVqPGffi9vmD6MYepergrefPcLZMuR0wxj2kG1f/kcRv52HTWX5TUXDu9EwNZVbFx+j9Jo8dlwbsUreo//XC5IOalEIAMjIAzBu2DRYrzd1pCQHj50EL17dmV/L/v9TzRt6muR4J374yJ06NiJjfth8kQsXKB9N9cMfO3o7qvzSvB0d6JJvpDICV5S31gieJUx5w/tgP+Wv9l/aVWc9N+o+QovkwkeL2Ttn1fUBC/ifCD2/zaHAfj2oAk2V35umjWSbbOlRRLfT76x3xFJZhA1waPYtXXeWMRE3WCIUHNBIp5M9SkV3cRydZuiTK032YJV6PG9RgRbfzkGru6emvtEmVDvCR6v+J+U4CU81JKJpg2NbCGGbXGiqPGfCI5VYz/Hy+fPWZOoDkOnqobt+LrlxgXfFv2Go6Bnojyb6klSGSh6/I84fwbhwf4MpfL1m6tudEu6vaRFSsU4OXM7auUOs3lEjf+WwEyIf8ZIQVnBq+5Sozjj06ojeg4Zp+4AFaPCgk7h0F8LWb+Qzt/PZg3Vkho1LVwzYSB7udPwmcZGkUG7NyBo93r2Okk1UBNJHqb3+M/jnOWcEoGMjIAwBK9Sjfv8+XNUKl8az54ZtnWlRPD26NkbU6fPYuPWrlmNwYMGZGRfZ/rvzivB0ztwoiZ4lvySEsFL42+EnMbBP+azBga0rYlIXpcixbm4WPQEjwuoGk0qaoJ34chu+G36k6HYa+JiZMmaNRmiAVtXI/ycP0pXr48qSSp8FZLRVkJFrdtEJXijI8OwdZ4hYbRWHX3vxjVsXzCBJYE9JvzEknJ6befPUxjJRZU97b/9H3Lmyq0WbpvG6T3B4xX/LRG85IM2A8chX+GiKWL44sVz/DNhIJMRIDmNxu9p/xtS1Phves/YSp4/ibmP9VO/Zb6jBZPa7bXXExU9/m+ZSwtWhl0HnUfMQq48eVU9b2gXA+1mIOsycq5FskvVRCkMEjX+K5C8SIjHqU1/IfysH4g4JKOih1rt3kFRrypG5EgDnsbQom4Bz7LwqFxDtR/T4iNR479C0lJT4baDJ1qF7s8Rn7D3mvf5ztg7gRZD/v3fN2xHQtXmHZP9ZkuLHywdo/f4r9V5ynkkApkFAWEI3guXrrPGalFRkahTK7FBTEoEb9Wq1bBxyw7m6z17duGj99PeDT6zXDB6Pg9eCZ6ez5m+m6gJHumGRf2nCar4KPpmGAJ3rmP/bfzBVxZdZzqGEvWmH3+NImUqau5m0RM8zQHVcEJRE7zTO9bi3L7NbHGj22jLO1L2/DoTUaHBKFiiLNvyZ2ohh7YjYMsqRjKSxrXWJmqCRxqvx9b8AmpK2GPsQovEOyXlf4/5nEHe/psfjNW9VCV3cMV89nqjd/pbbZBjr6/0nuDxiv+mBG+DXv1wZOXPbIGQNKypCp4WO1KyA3/Mx41z/qxansZrbaLGf6XqjfDsMHQanFzckkFLBPurFy+QNVv2ZPq82xdOwr3wK2xrc6vPv9faLUJLNMQ9foi1kwczTEvXbIi6XT5Sje/1wBM4vPInNr5W+3fhVbep6mPVDhQ1/hM+5JvtCyZabebVst8IFPAsg8Bd/+Lsno1mkNIzz/fTodwaeoka/5WF99zO+Vh1riUzjf9JK3UV/V7a+dPESt6j9t6wNk7v8d/e85PHSwQyGwLCELxnQy7B2dkZERE3UL9OYofQX39bgWbNmluUaDCt4P1p4XxMnjQ+s/k/U50PrwRP7yCJmuBZqqxKi69KVa+Het0+TcuhKR4jCV7NIdVsQlETPNMt4z0n/GyxKZFSecUqRccvMhtDXbdpAYUSve5jF2jmD2UiURM8wpSwpd0EVBlqzZQKnmaffGO2KKX4rEKjVqjRurvmfqEJ9Z7g8Yr/pnGm7deT8OjubaPMCSXkbw0YnaLUj1KdxeueETX+n9u/Fae3r0lxsWn/7/MQEXIaparXR71uhuo3xU5t/BMXj+5mFYlUYaq1iRz/oy6dw55fZjBIW/UfZRMhSPfxPxO/YpWlvAgrUeM/+ePo6qW4GnCE+YYWFEm3Oj72Me5HXGev0XOqVvt32IKjJaNjunw/h4ueuKjx/871S9j50xQG91tfjIZbMUPvH1O74ncItIOK7O3BE5GvoLvxbeV3Ga9nWUaI/1o/v+V8EoGMjoAwBO+2HXtRsVIlxMfHo1xpD6PfUqrg/XX5H2jm24KNHdC/LzZuMOjcSNMnArwSPH2ebeK3EjXBkwSv/Vcm3TNFSpTB0MVr7Z9MwxmU6ipbq3/UfgVRE7zb10Kx6+cfGEyUxHnVbWYGmanOG72RVGt02/zxLBF0zl8Y7YZMVgu36nGiJnhKBW9KldWmVXHN+w5DoZLljLgqmqIFS5RDi88MzVq0NknwAkTw5i1QBKYLJZRUE4llqYKUfHBy/R9MK5mIkZ7jDZWJWpqo8f/MznUI3rspxcWmXUum4faV8xarp5WqOV67EUQmeE3vjx7jFiZrGEXX/9XTx3A37BJbqPKonFh0Q+8d+msRwoJOcoszosb/x9F3sWHad+zxQ7GCmg0req8Jz+IY+Uu7DUytZtveKFaxGu5cC2WkL+1eqNK0Laq2MPSn0dJEjf9Unbt2yhAkxMUyqaU33x1glGAgfKnB2oHf5hl3jnQdNc9s4f30tjU4d2ArtxhD30Hv8V/L61DOJRHIDAgIQ/BOnzkH3br3ZD6bN3cWpk81JLnWCN5yXl7YufsAE/onq12jKm7fvpUZfJ5pz0ESvIZrVY9G3cM7DxgOn5YdNPt6JNFAPzpN7V7ENZzZ/g97ibYxqTFHFzeWtGttIid4lCzcv3kdhUuVTxOsW6jhVGQ4eFVXi5rgkRbomokDmWYrEU6NevdHsQrVmI/ofqLt5JEXg1hVGxGKRDjS9lrS57t0Yh9CjxmaepX1aQyfju+nybcpHSRqghcdGc6arJHV794HJd+omwwm0kYOObiNvU5au3lcCxjHBO/fwp57KRHE9jpL7wker/iftIJXiRUK5oQr4e776bdwK5q8yR1tVad7ideiiKgE77XTx3BklUEmxppW64YZw/H43m02ptuY+WZVh6e3/4Nz+7cYu9Lbe38kPV7k+K/sSEjpebR32WwWayxV6ZI0AEkE8FoUETX+hwf74eCKBQzXTsNmJtM3fvniBXYsmoz7EdfY5Vy9dTdUbPSW8dJWFhJT22mS1ntJ1PhPeJk2wFViSi4nZzx9FMM03BWr3ro7KjZqZQax8nuZV28E+jC9x/+0XnPyOIlAZkVAGIK3QoWK2LZzLyNsKRGYMH4Mli7+ySLB2659B8yYNQ8ODg7M7+dDQtCqRZPMeg1kmvPileDpHSBREzxLfkmtyVp6+lLkBE8hRahKpHbH9+BSuJhN0EuCFyz5GjBzGYqWSqzUtAlEK4NNq6uURIK6lT+Jvms8gsgq0kEkYsqStf16MvIWKKzF1zGbQ9QEj2IXEbwxUTcYHpWbtkWZmg3hmM8Nj6PvIPT4Plw4vJO9R2R7+yGG7ZyKndq4AheP7uEmnZEREjxe8d8awUuYmJLu9P9qrbqgfD1f5geyK/5HcGzNUva3p3dtNOzVT/N7RtT4b9pkzaueL2q1622G7eP7d7BhemI1Oy1U0Y4QMlrMokpGakzkUsQDbQYaFle0NJHj//nDO+G/eWWK8hnb5k9gRKIl6RJF610SvNrGf4U4L1bxDTR+70uLl/vupdNx63IIW+QlPVilyIkG37wYhH3LZnMj3kWN/4ojlPvG2nOInnM12/Yy8wmNvRN2CS/i4+Hg5AxX98Qdylo+zyTBqyWaci6JAH8EhCF4Ccrh349Cv88TuxjfvXMHuR0d4eTkxEjfAH8/eHqWQIGCBY3I0+tvNqiDsDCDPpE0/SLAK8HT7xkbvpmoCZ4lv1DVKP0ApW1OKXWjTQ+fipzgJZXP8KzqgxptesAxr4sq6CXBy4/gpefk8bXLQJpulqxktTqo36MvoqNuYOeiyWbVIzTeWoWpKsemMkjkBI86x1MH+dSs8fsDjVXXytj1075jBD2vyir6HL0neLzif0oEL+GiaOwqvqAt/05uBfD8WZzZAglpK5N/tDZR4//Lly+xccZw48JU+QYtmOQMEVPRN6+zBSoicKlZJGlckpX1acIWpi6fOgi638hoqzltOdfaRI7/Ny+exb5lBl3jpA2h6DWqFF01rj/bSULW5qvxZovA+3//EREhAayBYYehU7V2DUSt4A3YugohB7ejTO03UafTB8lwjXvyCGsnDWKv02JV5cZtzMY8uHUTm+cYYlTvyYaFKy1N5Piv4PjgTiRrhHvvxjW2uOvg6Iz8HqXgWaUW6LfZ6zK9x//XhYv8XImAXhEQiuAlJ6xZuwG1fdQ9JClhICmHH+fN1qv/5PcyQYBXgqd3kEVN8PTuF5ETvPi4pzjwx49M/9DUyjdoCW/f9siZK3eK7pMELz+CVwGetgSSNihVUcXHxbIEu1T1Bihf39foG/LjVf8jiLl1gzX1cPeqwvQseZnoCR4ldXTfPH0YnQxiIg4bvdMfxStVT/YexT7FTCuutPST3hM8XvE/NYKXMA4LOsUIRdKntGS0zZm2O/MwkeO/qaa4NWzbf/MDjq5eYiR5TcdZ26quhZ9Ejv+meuG587qiVf+RZou7SlMoeqbRPZPfozSafjiILczfOBfAnoFkKVWa2uMjUQleZfcOLXq0+Gx4MgiD9mxE0K5/2eu+fYYmk9hSZGmouSRV92ptosd/rfHUcj69x38tz1XOJRHIDAgIR/CS095q/TamzZiNvHnzWvXhjRvh+PD93gi9eDEz+FmIc+CV4OkdPJETPD37RuQET/ELJeCnNqxATFS40VWUVFdr0Qle9ZsjW7bsFl0oCV7+BK8e7x2Z4Bm2j4ed9WPE+8M7UaBkuoBnGdaMKI9b4u6i9Paf3hM8XvFfDcFLvngW+wTnD+9A+Fk/VnmVNWs2uLp7okLDFsmaSGnpO9HjP2nxUnMoS+R6rfbvwqtuU+abg38uMFtwJH3Ylv2Gc1uwEj3++23+GxcO72CXOhG5RNZSdfX9iKusUScZNfr02/iX0Xf020Cp6qX3kzb51Oq+EZXgvRt+BTsWTmIwvjVgNNyKljBCStXu//7wjdEXJJ3x1oAxRimmhPhnTEaINK0LlSrPfKO1yfivNaLazaf3+K/dmcqZJAKZAwEhCV7DD44s8Pauipq1fVDVuxrcCuRHVGQkTgf449ixo7h65XLm8LBAZ8ErwdM7hKIneHr1j+gJnqlfIs6fYUTvk5h7xpepWod0Ey01lJIEryR49XpfU5zxadURPYeM0+tX5PK99J7g8Yr/RHwc+nMhw7Rh737I7axOZoaLEyxMKuM/EPswhhHr98Iv49nTWNbsztO7FiPYTY1kGWibuXPBImzHAq9qd/pM0eM/NYbaPGe0mba7qS+o6WDbrychLOgkq35PaqSXTLrJPExUgpew3DRrJB7eiWSke423e8KtWAmQnnXwvi3GnSNUUX0v/Aob41a8JGtCHHUpmEmekFmSCdLCT5Lg1QJFPnPoPf7zOWs5q0Qg4yIgLMGbcV0mv7k1BHgleHpHXCZ4+vSQ6AleUq/Q/Xk14Aj8N/+N+KdPjG9ToufT6X0ULl3B+JokeCXBq8+7GkyvXxK8+vOOjP9Z9OeU/75RDodc6DxgOHxadtDtd9T6i8n4b9iNQI0IL53cb1aZ6+7lzbTcqZEoGVWWkpb1w9sG8t2zck2U9WmstUuM84lM8KYma+Lt2wGVmrTB9vkTjE0/TR3Bq3qXPkMSvNwuebsnlgSv3RDKCSQC6YqAJHjTFW75YTwRkAmeTPB4Xl+2zi0TPMuIvXjxHKFH9+D0jn/Mkj5KHGjLJlVWSYI3fQheqma7dOogHt2NQtzjB3j66CES4mKRNVt2tp02l3M+JhFQvOIbKF65hlVJDVvvDWvjRU7wqLlKTKRByqRgSS/VDQm1wj61efSe4Mn4L+N/atdwer4v47852lRlnfA0FnkLFkGWrFnT0xXJPktkgpfAiLocgn3LZ5v9/qLXqXKXtHmzZs3KGkQG7lrPKqxpQZ7kM8rWboyab/fk5j9R4z/dG3uWToeDYx60+GyY6nvDf+sq3DwfiPo9+pjJbaiewIaBeo//NpyKHCoREAIBSfAK4WZ1Jzl7znw0bPQmG9yrZ5dk+sNOTk7Yf/CYcbI9e3Zh6DeDrU5O29/27j+MPHmc2Zhr166ia+f26r5MGkbJBE8meGm4bLgdIhO8lKFNeBaHkANb2dZAU/1Ez6o+uHP1AtsOWKp6PdTr9qnmPhI+wbt0Dqc2/sm2aqo1SvDK1WnGmkVRAsjDRE3wCMs9v85EVGgwg/XtryYgX2F1zezoOCLqs+fIiTZfjUO27Dl4uAZ6T/B4xn+qRKQt52Q5HHIja7ZsXDBOy6RyB08iaqTtunvpdPZCtuzZUb9HX6Zd/TpMxv/Xgbq6zxQ9/hNKz2IfM6L33o2rDLRCJcpZbOBJ78U9eYRcToY8jqeJGv8VnXf6jdVzfHK5EmuY7/11FiJDz6Jhr8+ZJA1P03v853nucm6JQEZEINMRvH0++xyffNpXc1+8906PTN1wbeiwEfhiwFdG3IiIPXniuBmOLq6uOBN03vgaJVQ13qiM+/cSdTVND/is3xcYMXK08aUHDx6gamUvzX2jTMgzweP2pTWYWCZ4GoDIYQqZ4KkDlRKNwJ3/IvT43mQHSIJ3GYqWKqcOSJWj7t24xhqtmJLqpLWXK48zsuV0YEThi4QEPE+IZ9W8CrGlTM9TG1HUBI8wXjW2P4PY1i2wSmdzOrbRO1/Ao3INlVeCbcP0nuDxjP9HVy/B1YCjDDBbGj+d2bGWLVRRwyLSG+dhMv4nonr76kXsWvw/M5h9On2AsrUNhQvpaTL+pyfatn2WJHhtwyu9Rosa/+0leL3q+XKLL4rv9R7/0+salZ8jEcgoCGQ6gpeqUDt16ao5/r16dMGRw4c0n1cPE3bq3BWz5843+ypqCF46YPOmDejfr4/F0zgddB6urq7G9yTBy8fbMsHjg6u9s8oEzzYEqQEb6fXRlkDFJMGrLcH76uVL/D32c+PWTEoMStdswJoRWWs49PRRDG5dPs8qfhXtZKqqJt9obaImeKa6iE0+HISiXt6qoaVK+DXjv2SEfclqdVjVIg/Te4LHi+B9+fIlVv13zzi55EeHoVNVw3t83XJcPnmAjW/RbzgKepZVfazagTL+JyJlSvAqjaLo3QoNW6J66+5cm6ol9Zfo8V/PkjOS4FX7dEnfcaLGf4XgpYX2twdPVA06LTxSMzyq/G0zcBxrhsfL9B7/eZ23nFcikFERkASvSs9lVoK3Rs1a+GfdxmRbbtUSvJT8UFXuo0ePzJDs2Kkz5swzdJ5WTBK8Ki82G4fJBM9GwNJpuOgJXlphfnTvNojsJSNCxTl/obROZfU4URO86MhwbJ03luFCRCARgmqNKq23zBnNKhI9vWujYa9+ag9VPU7UBO/q6WM4umoxw6nLyLnG5kOmwN2/GYbYmHugpoRJ5Rv2LpuNyItBcCnigTYDDf7V2vSe4PEieKnD/NZ54xicdbt+jNI1GqiG9knMfayf+i0bX65uU9Ru/67qY9UOlPE/ESmF4CWipOeEn3Dsn1+MlddFy1dFo3f6c5MwSeov0eO/niVnRI3/dI3SgqCyK4dkF163HrLpfSNq/FcIXrXPfGvjytdvgZpte9o7jcXj9R7/uZy0nFQikIERyHQEb7FixVGpchXNXbJ/3x7Ex8drPu/rnNDdvSj2HzoGBwcHxMXFYdvWLSBiliw1gtff7xSIHCZb9fdf+HbIILNTOXLcD+SLO7dvwylPHjg6OkISvHy8LRM8PrjaO6voCZ69+PE8XtQE79KJ/Tjx728gAqTHhJ9s1tI9vW0Nzh3Yyoh3WyoZ1fpS1AQvaM9GBO36l1XiWNPg27d8Dm5eCLRIrp/e/g/O7d+CHLkc0W30PLVw2zRO7wkeL4I3LOgUDv1lWKzuMHQanFzckuFGjSNfvXjBmhMm1efdvnASq7KiitJWn39vE+ZqBsv4n4iSKcHba5JhweTs3k0I3LmO/Z2vUFH49hmaLnqiIsd/vUvOiBr/6R4gjepbl0PY/dD6y7Fwdfcwe8zcDbuMR/fvpPjoyVfQHW7FSqh5PNk0RtT4rxXBS4tYTT5IlFq0CfxUBus9/mt5rnIuiUBmQCDTEbyZwSnpcQ65c+fG0eP+cHVzA1XhdmzfBiTV8NHHhoZGqRG8f/y+HE2b+TISNyEhAZUrlMGzZ4YmJPXqN8DKVWvZ39SEbez4SZLg5ehUmeBxBNeOqUVO8OyALV0OFTXBC9q9AUG71yN3Xld0GmZoRmSLXTy2B6c2rEiRiLRlvqRjRU3wgvdtBum1pkTw7vxpCu5cv4TczvnQafhMM+guHNkNv01/MuJeIbbs8YOlY/We4PEieM/t34rT29ekiO3+3+chIuQ0SlWvj3rdPjGDj6RNLh7djVx58qLziFlauwUy/idCaongpXevB57E4ZWL2MCcuZ1Yp3oie3mayPFf75Izosb/hPhnWP2f1ruLuwfafJl8t8fR1UtxNeBIircGL+ksUeO/KcFbq/07aX4s5S3ozq2ppN7jf5pBkwdKBDIpApLgzaSOTe20du05gHJe5dmwAf37YuOG9YyItYXgPXb0MH5c8DOb49dflmDsaEN1yvad+1ChYkVjxW7IxauS4E3NIXa8LxM8O8DjeKjICV5SWKMunUNkaDAe3o3Cw9uRePLgHhxyO8HRJT/yuBVk/0q+URdUGZIeJmqCF3H+DPb/NpdBbE0KICX8D6yYjxvB/tyqEUVN8G6cC8CBP35k0JMGn6X7YO3kwYh7/JCN6ThsBhzzuhhdRVXZVJ1tifzV6n7Se4LHi+A9s3MdgvduYo3Suo9dYBHOXUum4faV84w0fHvQBLMxvMl3Gf8T4bZG8NKIu+FXWAO2l8+fM7K+6cdfcyND6PNEjv96l5wRNf7funIeu5dMYzcMyZV4VK6Z7HkWcmg7ArasSjFsSIK3I3oOMcj2aGFpbbKmxWernUPv8V/techxEgFREJAEryieNjnPX5b9Dt/mLdkrs2ZOw+yZhkouWwne74cPRcCZc3DLn59V71YoVxJlypbFrj0H2Xw/TJ6IhQvmQRK8fC8ymeDxxTets4uc4CmYPY6+i+Nrlxm3BKaGZbGK1fFGq87cq6tETfBIR/efiYYtfERGNfvkG0YKqjGlkpHGVmjUCjVad1dzmE1jRCV4SXd644zhDKvCZSqi6Udfm8ln3Lx4FvuWJVZ/mnbNfnz/DjbNHsmIK14yAPS99J7g8SJ4r50+hiOp6CNvmDEcj+/dZv7rNmY+cjjkMl73inwGVY52HWVYXNHSZPxPRDMlgpdGUTza+dMPePowmh3k0+kDlK39ppbuMM4lcvzXu+SMqPH/iv9hHFvzC7tGaTcB7SpIaqbPu5ZJJGUOr/wJT6Lvsgar1GhVaxM1/kuCV+srSc4nEZAICEvwkjRBnTr14OCQU9VVQPq0igSBqgN0Oui74d+j/xcD2bfbsnkjPv8sMUinheD94MOPMX7iFDbf3Dkz4eNTF3Xr1UdsbCwqlS8NSrokwcv3YpAJHl980zq7yAkeYfbg9k1snj0qGXwkD+DglAcxkeFWoa3T+UOUqdUordCnepyoCR4BY7oFkyrZCniWgbtXFTjmc2PEFP178TyBNWKJfxqLu2GXWPW1Uj1KlYxtvhqPPK4FUsXZ1gGiJniEk9Iojf4m8p1IXErA70Vcw7l9mxmU1Kgr9Nhe9nee/IVY5fvtqxcYuUtGSTcl3zxMVILXtMmaKbGuYEwE+4bpw4yQ1+3yEUrXbMj+T/fRhmnfscaEvBrgiRr/n8U+wdm9G80udfIFSWWQlW/QwuJtkBD3FFf8Dhnfq9m2N8rX99X8lhE5/utdckbU+K+GeDfdTdJ78lKz+2LLvLHsd5skeLWt4KXn1sYZI5DdIRc3DX17H3B6j//2np88XiKQ2RAQjuAdNXoc3v/wY+TMqY7YVRzeq0cXHDmc+KMwI14IXbp2x8zZhgYsIefO4a2WTc1OIy0EL00QfP4y8uTJw7R4s2fPjixZsmDB/Ln435RJhs9KQaKhcJnqmkFJWsL3ws5i2hY/zebMCBOtnDEGIX5+cHIpqNuvGxsThTYf9oNPyw66/Y5afzFK8BYN6wfngiW1nlqz+Z49fYTcDlnxzaKUt+TZ+oG0sLOVkoGoG+xQav5Qq11vRkgpduyfX1miTaRVmVpv4vLJAwg9biCvyFp/OQau7p62frSq8VP7dkF8QlbkzJ1H1fjXMejRnWv4fOrPKFqqnKYf/+rlS9ZohYhBW40I4VZfjIJbUT5+IYJ3++9LkNulsK1fLd3Gxz64g4q1aqPH4DGafuaTmHvYMG0YXr16aXFeItZJezdw57+4cGRnsjGkv9dm4LhkTb60+pKU4BUqVZVtb9ej8Yr/NC9VV1PlGhkRh151mzHyPfrmdVBVGxG4BUuUZRrJZGV9miBvgcK4fOogW+giq9qiE6o0bas5dKLGf60aE/Eiq0SO/3qXnBE1/isNB1OSm7l08gBOrFvOnlOvg+AVNf5rHhigVnnKAAAgAElEQVQ0npBH/L91OUDjbymnkwhIBBQEhCJ4TaUJbL0EMgPB6xdwFgUKFsSjR4/QppUv4uPjzWD49rvh6NqtB3utf79P4XfqFJ4+jWVaumQurq44E3Se/U1N1kiigWzQ199g8NffGueieSt6lcLz/6qKJMFr69Vm23hREzzbUEr/0SIneKZVb96+HeDt2z6ZA+7duIbtCyYwwqjHhJ/YlnR6befPU1hFIm1pbv/t/5AzV27NnSdqgqcASQT8zYtBuHhkNyJDz6aKr5NLfpSr0xSlazXk2oFeZIKXnEBSDaSR/PBOpJlPcuRyRNOPBqOAR2nWFDXk4DbWLI/uE2rMVtSrKmvuZSoNkKpTbRzAI8Gz8SukOJwXwUsfato0ytqXaP/NDzi6eomR5DUdRz7qNGwmHBydtDxlNpeo8d9U1sQeUC01xrNnPuVYkeO/3iVnRI3/N0JO48DvhiKfDkOnwcnFLdmlfnzdcrbYbklSJj0qeCXBq8XTR/s5eMR/SfBq7yc5o0RAQUAYgtfDwxOHjp40ep6SgSdPnsDZ2Zm9Fh0djYcPDUQmmadnCVaJSnb9+jV89MG7uHwpNENfOQrBa8tJ3L1zBzWrV2GHWCN4iZg5H3oNDg4ObNyKP37DiGGJhK+UaLAFcdvHirpF03ak0vcIkbdoKlpvRGz0GLsQWbImr/p7kRCPv8d8zpxC5IhS3Rse7I+DK+az1601ArHXk6Ju0bSEW8KzOMQ+jMazxw8R+zAG8U+fIGu27Mjt7ILcefMxjV76Oz1MZIkGBV8i34ngvXfjKpPIcC3qCbdiJZEjpyG+mhr5ihLx9DC9b9HkpcGrYEvalCRvYqnCulb7d+FVtylINuDgnwtYwzXFiJxv2W84N11xkeM/+dzU7ly7iF2Lp7JFw54TDQ2AUzPld35q42x9X+T4T1jpWXJG1PhvKifj7uWNph8OMrus6fm1dtIg9oxzcfdAmy/Hmr2fHgTv+kXTEB/31NbbLd3G0zPHp5W2Eg3p9uXt+CC9x387Tk0eKhHIlAgIQ/AuWLQYb7c1VJGFh4ehWeMGaNioMX5d/gd77etBX+KfNYnblP83bSZ69nqHvTdz+lTMmT0jw18AvAheAmbCpB/w/gcfseqiKhXLMvJcMUnw8r10RE7w+CJr3+wiJ3iBO9eBtgO6FCnOto1bsz9HfMLeomZfRcpUNA7bMpfkHcK5NfMSNcGz74rmf7QkePljnNZP0HuCx5vgJdxoAST8rB/uhV/Gs6exTKrE07tWMikZkmV4cOsmnAsWgUvhYsZigbRin9JxMv4nopNakzUe+FubU+T4T5joWXJG5PhP8ky3Loewy5YWDkk2xsm1AFtU9N+8ksnNkFlqQCgJXrC+MpLgTc8nqfwsiYBEIC0ICEPwbt+5DxUqGggEkicIDj6L8hUqYMeu/ey1qT9Mxvwf5xgxpKrUsyGX4OTkxKQMvMp4sgd7RrYCBQrCOW/yrqnKOZHMQoeOndh/Bw38AqdPB+DRw4e4e/cOe81aBS+9R9W7jZs0Q1TkTQQGnjGDSRK8fK8ameDxxTets4uc4CkVvFS91m20YUtgUqOmXWsnD2YvN+87DIVKJmrNKtsEC5YohxafJTYwSqsvkh4ncoKnFYY85pEELw9UtZlTErza4Kj1LDL+JyJKFYpndq5DztyOqN3+Xa2htmk+keO/ApReJWdEjv9PYu6zxo/WtN7Jd7QrpNPwGciWPYfZNS8JXn4E79XTxxD1n1xW5aZtkbdAEZueN7wH6z3+8z5/Ob9EIKMhIAzBe9I/EIUKFWaNwMqWKs78ROTtuQtX2N+r/v4L3w4x365C1b3NfA2deOk9GpOZLa1N1lLDRBK8qSFk3/sywbMPP15Hi5zgRUeGsyZrZPW790HJN+omgzlg62qmJUpGWrt5XAsYxwTv34Iz2/9BSgSxPX4TOcEjSYbn8c8YfLmcnC3KZ9iDrT3HSoLXHvT4Hqv3BC89Knj5Ipy22WX8TxtuvI8SOf6bYqtHyRmR4z/5hoj3wysX4X7E9WS3gXP+wmxRnZpIJjVJ8PIjeNdN+ZpVT5O8TNfR85Lp6fttXomwwBMpPrZK12yIai07c3m06T3+czlpOalEIAMjIAzBS9W4pLcbFxeH8mVLGF12LTyKbZ8LCPBHx3atzVz58ad9MWbsBPbav+vW4qsvDXqRmdUkwZsxPSsTPH36TeQEj5I6Inhjom4w51BFQpmaDeGYzw2Po+8g9Pg+XDi8k72XJ38htB8yxcyJpzauwMWje5BSt2d7vC5ygme6RbP1l2Ph6u5hBuXdsMt4dN+wa8Oa5SvoDrdiiXHUHl+YHisyweu3aSXCggwJXOMPBrHt/6ZmSsxbw5vuF16N1vSe4EmC19AzQo9G12TnAcPh07ID16+XEP+MNetMWnnI9UOtTC5y/H8deNvymSLHf1OcqKktab0T4ZvHrQAKeJRhvweyZstmEc7rQSdBVfL5i5cyk9SyBfuUxooa/x/ejcKmmd8zaCo0bIkabQzNzk3NtCDCGoalqtdDvW6fauUOs3n0Hv+5nLScVCKQgREQhuBV9GdJI7aUp7vRZWfOXoCLiwtrsvaGdwUzV77dth0WLFrCXjt54ji6dk7eCT4D+z7ZV5cEb8b0piR49ek30RM80qHcPHtUqs5p/P5AFKtQzWzc+mnf4Un03VQ1fFOd3MoAURM8IkBWj+3PULHURIVep0ZSVwOOpAgtr0RC1ASPfpesGvs5Xj5/ziqnOg6bwYgqUzv01yKEBSU2irXkIF5+oc/Se4LHi+AlLVHlOZbLOR9aff49HBzzqHr0XDi6mzXKy5YtOyo1Ni8gUDWBikGix39q1nlq019MG5maDpLRomGtdu+gqJehQTAZkSg0hrRGC3iWhUflGharFFVArmqI6PFfFUivaZCo8f81wa36Y0WN/zfOBeDAHz8ynFoPHAfXIoZdxqZ26eQBnFi3nL1E0mWmRovyJLkhcvxXfZHJgRIBQRAQhuDdd+AISpUuw9xazbsCYqKj2d+/r/gbbzZuwv4m3dl1a9cYXW/aaO3QwQN4p1e3TH1ZULUyVS2TderwNvz9Tpmdb758+RAYfNGA22/LMHLEd6rwUCQaYmJiUK1KeVXHpGUQrwQvLd8lPY8RPcFLT6xt+SyZ4AFUIUI/XJ8+NDxvTY22ojV6pz+KV6qe7D1TvXMeXc5FTfBuXTmP3UumMbwJe4/KNZNhH3JoOwK2JDYctXTN80okRE3w6D7ZvsCwW6hm294oX983GezUtJCaF6ZkvPxCnykqwfvw7i1smjnCCLtLEQ+06v+9qipRU1L+rQGj4VZU+6p3keM/6bhvXzCRNfSyZC37jUABzzII3PUvzu7ZaDaEqt19Px2K/MVL2hLWVY+V8V81VOk+UNT4n+5A2/iBosb/C0d2w2/TnwytnhN+tlhBHR7sj4Mr5rMxvScvNUOWt3RGRoj/Nl5qcrhEINMjIAzBu2btBtT2qcMc+sPkiVi4wND45/0PPsKEST+wv2NjYzFrxjRs3PAvvho8BD169jZW0cybOwvTpxrGSdMnApLglVs09XRlygTP4I0XzxMQdtYP9yOu4eGdKOR2zseS7iJlKiKPW8HX4jJREzyl+R2B3nnELIsVbNdOH8ORVYuZX1p+btg2qNjhlT+xympeRKKoCd71wBMgbMnaf/ODxfvC1HdVm3c080vIoR1IiIvl5hf6MEnwJkJerGJ1NH5vQKrPrgd3IrF51kg27v/snQe4HlW1/lciIaQASRCQJiWUhBKahOJVOigi/SqoCKJ0UFCkC6ggHSFUEeleEBUB6SBVkBYgofeqBJASQqIJMf6fmfxzTr60M7Nnr9nvnO93nuc+F3L2XmvNb+2d13fxnTkrrLeprbnljl3uKbugnQe80/+0Qc+55rKFll7BJk34uOPdotkQ93NbfdMe+MOFs8Sa7dn+iDNcXmvS7vqv/MqZdtX/sn+31L2+XfX/8VuvtqfvumGOv3Ni+v+NwIC37pNJPgg0j0DbDHgPP+Io23PvffMOPfXUk7bF5lM/IZP9orVHHnvS+vbtO9vuTZ482dYdvoa9887bzetwG1XMgJcBr9Jxb3eDp9SLGWtpV4P3xB1/tiduv8aywcaOP5s6UJzxa/ofF6zbSLSrwXv67pvs8Vv+kP+ClR2PPT//vQBKfWHAO/UTvNkA8Z1Xnsv/ebl1NrS1tvpWl3/N3Xz2z/P/uLXgksvapnse1uX6sgvadcD78Qf/tOtOnvpTZNmPLH9x5/2td99++b9n76vOhr9vPv1oC87s0/GLDV3V3n31hXzom/1Y88obbmnDNt22LPYu17ez/qu/cqZd9T87tMqD93bV/+lfv7DTcRfMUv+fufcWe+ymq2b5v934BG+Xfx2zAAJtR6BtBryrrra6/ebCS/MG//0ff7ett/xSR7NXW30Nu+a6G2f5l2q26NifH2O//tW5bXc4mvbADHgZ8Cqd2XY2eEp9mFUt7Wrwpv2Y/5x+ed30ZoMB78ynJ9OZ4ZtvYzv+6KfRjvmo2/5kT915/Rw/wfPyo/fbA3+Y+qOZdfcly8kneM2+csDP7ZE//5+9/dIzeR+yT1KvvNFX53gOHr72cnvhwTvzn1zY9rDTop2ZaYHadcD7xlMj7d7fnpMPPLY99LSO4e40LlP+8x+79bxf5MP17Gv1L/+vDf1C5//uf/BPl9hLD9/j9p73dtZ/9VfOtKv+qw/e23XAm71DN/u7KvtaZ4fdbJk1Pj+TTtw44uj8lxb3G7CAbX3wSS3fZ8AbXVYJCIHGE2ibAW9XnfrSl79ie+29rw1dcSWbZ555LDNx7777jv3ogO/bPffc1dV2vi9AgAEvA16BY9hRQjsbPKU+MODtJPDmM4/bPZdNfT3R1gefbP0GDJoJz7TBx9x9+tkOPxlRq5FoV4M3/Wsx/veYc6zX3L1n6suoW6+2p+66wWY1nMfgWf6/2bLf/n7KTa2f2qz6d9H07+Dd8ofHWd/5BtpNZ/7Uxr039Se6Vt18e1tp/S1mm2baf1TJPp2903FTX30S86tdB7zZO3Wzd+suNnQ1W3/n/WeJ9C+/OSUfxme/uDAbrk//yfh/PP+E3XXx6XP8aYYqfWpn/Vd/5Uy7DnjVB+/tqv+TJ020Pxz7/fyXrGb/wWqj7/ww/2mRaV/Tv6N3Vq/HQv+r/E3NXgh0TwIMeGfR10ELLGDvvzfrX9rQPY9B93gqL4OnTqddDZ56X9rZ4Kn3pl0N3sfvv2vXnXJo3p5Fll/FNtz1gJZWTZww3q4+7oD8R5cHLLKEbbH/MQx4ZzjMHp/g/WDMm3bTiKPzTNmnDLNPG07/leX847E/sEn/Gm/9F1jItvrR8bX2JUvGJ3jNsgHvfJ/+jE2c8LHdeMZR9q9xY/M+rLThlrbqbH7M//Zfn5S/1iEbMmbvvY791a76n/24cvZjy4PX+qKtve0uM2H99/hx+d9l2deshvBj3/6H3XDGT/Lvz/iJ+Bg9amf9V3/lTLvqv/rgvV0HvNnfN9P/5FT275nOZ5/WzX5vxfS/pHiLH/zMBiy8GPof4y9pYkCgGxNgwNuNm9tuj8aAl0/wKp35djZ4Sn2YVS3tavAyFtM+1Zb986DFlsrfQdlv4Kfto3ffskdvuLJjaDV8211s2bW+WKuRaFeD998pU+yakw7uMHJZT4Z+8cv5L3/KhonZ+0T/8dzoqcPEDb5iq262Xa19YcA79R280wa82T9PGPuB3XDGUfkvt8u+sk+Srvf1PVo+fZ29C/b3P536ux8WWGIZ23yGX1oY4+/Jdh3wThuIzO7dxtPeN54x3nj3g23h6T4Rl/3ZU3ffaKNu+aPbqzPaWf/VXznTrvqvPnhvV/2fpgMP/PEie3nkX2crC7P7aRE+wRtDSYkBge5FgAHvdP2cd9558x/h+uijj7pXl9vkaRjwMuBVOurtbPCU+sCAt5XA+A/fz385UfYp3dl9Za9n2PawU+1Tc/WqdZDYzgbv3ddetNt+1frJ3OzH+mfsU/Yp0OzToNN/YfDqe0VD9gneaV/ZJ+KzX6KWfbI6+8p+vHbI/2xun158aZv07wn2xF+us/Ef/DP/3ozvgI31d2S7Dnj/+cbLduu5x+UYv7TfUTZo0SU7kGafrL7mhIM67k72WpMv7Xe0zffphfM1n0yaaDedeYx9/N47+Y9Cb7L7wbHa0RGnnfVf/ZUz7TrgVR+8t7P+T/uLY8yLT1v2Wp/s3eHZqxuyv7uy/xC/wnob2xIrrTnLv6eynxLJfnHkssPXt7W27voXf4b8Zaf+Ezwhz8QeCHRnAt12wPu5tYbbsFVXy3uXvVj+0osvzP//jF99+vSx00ecbRtvspn16jXVzP773/+2Z55+yvba47s2Zsxb3bn/3erZGPAy4FU60O1s8JT6MKta2tXgTWMx7r137L4rz7P3//7aTHjmXWBh23TPQ2caImYLvQeJ7W7wssHIA1dflL+Lb8av/N18ux1kCy213Ezf8+5LllDd4Hnp/4zv4J1+wJtxyT7Je/sFJ+XDwtl9ze4/mMT4e7JdB7wZu+t/eWT+kwfZfwhZ4ys72qDFlrQP3nrdnrrrxo5Pw2efnH7vjZfzNYMWXyp/xcaYF5/q+EmF9b/9fVtsyKoxWtESo531X/2VM+2q/+qD93bX/xn/EvrP5E9m+o/s0f+iKhhQXf8LPgbLINA2BLrtgPfhR0fbQgtN/a/1kydPtqHLL22TJk1qaWz2ad0HH3ncFl648xMZ0y/I1u++2y521113tM2BaPKDehk8dSbtbPCUe9POBk+5L1lt7WrwZuxL9ktX3nvzFcsGvv0Hfdo+vcRgG7jIEvkvq5rV12tPPGzZpxYXWHxp+8zgodHbjMEzy94d+tLD99g/33jFPn7v7fz1GdmPoS85bLj1H7TgLJk/etNV9v6br+af8Mk+6ePxpW7wvPS/qwFvxvo//5ls2S/Be+6vt830ievsP5hs+J0DZ9u7qr1qZ/1/59UX7PbzT5gtwlU23tpW3GALu+Xsn+e/gX7GL69P72Z52ln/1V850676rz54R/+rqoHffnX993tyIkOgmQS65YA3G+xmA95pXxddeIEdc9QRM3XohJNOtZ2+MecfZ8g+9bvaKkNs7Nipv0yDL10CXgZP94mnVtbOBk+5N+1s8JT7ktXWrgZPvS8YPN0OqRs8L/0vMuCd1rXsnbvZL1TL/oNJj5498/8Qkr06YHb/wSRGt9td/8e89IzddcnpM33qPfvk7qZ7HmY9e/a0f3/8kY2+/Vp7/YmH89dpZJ+GX3at9W3Nr+yY98njq931X/mVM+2q/+qDd/S/67+JpvznPzbu/XesV+8+1ne+AV1viLRCXf8jPSZhINBtCHTLAe8hhx1h++z7/bxJ2esWVhoyOP8U74xfz734ms0zzzz5H2ffv/GG6+0PV12Zv9rhgB8eZHPNNVf+vVtuvtH2+N53uk3Tu+uDeBk8dV7tbvBU+9PuBk+1Lwx4dTuDwdPtjbrB89L/zFB/8NYbeWPm9On2VJ1D/y3/RYTZoDf7aYTsa6Ell7PFV1x9li3JPiE/T7953duF/pupvnKmXQe82aFXHryj/7P/a+nvz422R6+/0sa993bHouw/VC26/DBbe7tdrHff/q5/p6nrv+vDExwCDSTQLQe8v/v9n2ydddfL2/Hbyy+1ww/98Uyt2WjjTe2iSy7v+POzzzrDTjrhFx3/nr3D949/+nP+75lxWGXF5WzcuHENbHH7lOxl8NQJYvA0O4TB0+wLA17dvmDwdHujbvDQf97Br3R70P+p3VB85Uw7D3iznqgO3ttV/7Of+Hjxobvy+zJ4rS/m7wmf/uu5v/3FRv75/2b711s26N1k90Ps00ss4/ZXoLr+uz04gSHQUALdcsB759332TKDl81b8v399rJrr/nTTO2Z/vUMEydOtCHLLTXTL2G7/Y57bLnlV8j3fvubO9rdd9/Z0Da3R9kYPAye0knH4Cl1o7WWdjd4qp1pV4On2o/p61I3eOg/+q90j9B/pW6g/zN2Q3Hw3q76/9z9f7GR108d4G5zyCnWd/6BHe3KfufBdacc2vHvgxZbyrL/m/Kfyfbuqy90fKJ3nv7z2dYHn+T2S9nU9V/3bxsqg0AaAt1ywPv46Gds4KBBOdE1V1vZ/vnPd2eie8ttd9mQoVN/Sczo0aPsq1tsNtOa7DUNB/5w6qd/Tz7xeDvrzNPTdImshQhg8DB4hQ5KTYsweDWBDkjDgDcAWg1b2tXg1YC2cgp1g4f+o/+VD3nEAOh/RJiRQ6H/kYFGCteu+v/EX66zJ/5ybf5u8B1/9qsWmg9dc6m9+NDd+Z8N33YXW3atL7Z8/+WRf7UH/nhR/mfZL5VcZeOtInWjNYy6/rs8NEEh0GAC3XLA+8LLb9jcc8+dv1d38FKLzbI9Tz/3svXr1y//3ux+CdvW22xrI846L19z3bXX2P777tngVnf/0jF4GDylU47BU+pGay0YPM3etKvB0+xGswwe+o/+K90j9F+pG+i/bjc6K2tX/X/pkXvtwasvnuWA9+azf27v//1VW2iZIbbJ92Z+3WRG769XnJf/AskFl1zONt2z89O+MXvOgDcmTWJBwJ9AtxzwPv/S69a7d2+bNGmSLbfMEjNRzL6XrZn2tduuO9tfbr91pnXbbLudnXHmufmfZ69nyF7TwJcuAQweBk/pdGLwlLqBwdPtBgavCb1RN3joP/qvdI/Qf6VuoP+63UD/Pxjzpt004ugcxHZHnN7ySyD/dMJB9q+PPrDVNt/BVlz/y7Ns47RP8faap6/971FnurRaXf9dHpqgEGgwgW454H1o5ChbeOGpLylf+rOLzPRu3U03+5JdcOElHW1bcYVlbPz48TO18bjjT7Jv7bxL/ue/u/L/7OCDDmxwq7t/6Rg8DJ7SKcfgKXUDg6fbDQxeE3qjbvDQf/Rf6R6h/0rdQP91u4H+/3fKFLviyN1zEMO3+bYtO3z9Dig3jjjaPhzzpq3xlR1tyOc3nWUbX3z4HnvoT5cYA94mnHJqhEA9BLrlgPea62601ddYMyd44vHH2Tlnj2iheeHFl9nGm0x952422M0GvLP6+vONt9qwYavm3zrphF/Y2WedUU9XyBJEAIOHwQs6OE6bMHhOYCOE5RUNESA6hGjXH9F0QBk9JAPe6EijBLzilJ/Yw7deZz16oP9RgEYKgv5HAukQBv13gBohZDvr/40jjrEPx7xhPXr0tK0POdn6zjcgJ3rP5Wfbm08/asuvu5F97qvfnCXl2y842d55+VlbYIllbPO9j4jQiZlDqOu/y0MTFAINJtAtB7z7f/9AO+jgqe+hmTBhgm34xfVszJi38n9ffPEl7N77H7KePXvm/37nnX+xXXf+xixbOPqp523++efPv7fPXt+zG67/c4Nb3f1LZ8CLwVM65Rg8pW601oLB0+xNOxs8zY50VqVu8NB/9F/pDqH/St1A/3W70VlZO+v/2Hf+YTeecbT9979TbO4+/Wzdr33PFlthmL02+mG778rzrN+ABWzrg09qaeN//jPZnrj9Wnv67hvzP19pwy1t1U23dWm1uv67PDRBIdBgAt1ywJt9kiH7JWp9+/bNWzNx4kT7671322KLLWErDBnS8kmHb+70v/bXe++ZqYVf3mJLO+/833T8+TprrW5vvfWPBre6+5eOwcPgKZ1yDJ5SNzB4ut3A4DWhN+oGD/1H/5XuEfqv1A30X7cb6P80Aq8+/oDdf9WvO4DMv9CittDSK9gLD96Z/1n2+oY+8w20j99/18a993b+i9X+/fFH+feyoXD2yd9ec/d2abW6/rs8NEEh0GAC3XLAm/Vj9z33tiN/cswcWzN69Cj76hZTX9Uw49fjo5+xgYMG5X/87jvv2OfWWKXBbW6P0jF4GDylk47BU+oGBk+3Gxi8JvRG3eCh/+i/0j1C/5W6gf7rdgP9n743zz9wpz1+8+9t8qSJhVuWDXc32OUH9unPDi68p+xCdf0v+zysh0B3J9BtB7xZ4/beZ3879PAjZ9nDt98eY5ts+AX76KOp//Vr+q999/uBHXzo4R1/dOklF9lPjpj6yge+dAlg8DB4SqcTg6fUDQyebjcweE3ojbrBQ//Rf6V7hP4rdQP91+0G+j9jb/4z+RN74YE77ck7r7dJ/5r5F8BPW5+9r3fI/2xmwzbdxj41Vy/XFqvrv+vDExwCDSTQrQe8WT/WXmdd22XX3Wy11dewvn362t//8Xe76Ybr7awzT59tu+5/cKQtssiiHd9fb+01eT1DAw43Bg+Dp3RMMXhK3cDg6XYDg9eE3qgbPPQf/Ve6R+i/UjfQf91uoP9z6s0nkybahA/es48/eNcmjP1g6jt65+lr/RdYyAYtuqT1/NSnammtuv7XAoEkEGgQgW4/4G1QLyi1IgEMHgav4hGKuh2DFxVn1GD8krWoOKMFa+dfshINolMgdYOH/qP/Tkc/KCz6H4Stlk3ofy2YSydB/0sjq22Duv7XBoJEEGgIAQa8DWkUZXZNAIOHwev6lNS3AoNXH+uymTB4ZYnVsx6DVw/nkCzqBg/9R/9DzrXXHvTfi2z1uOh/dYYeEdB/D6pxYqrrf5ynJAoEug8BBrzdp5dt/yQYPAye0iXA4Cl1o7UWDJ5mbzB4mn3JqlI3eOg/+q90e9B/pW6g/7rd6KwM/dftkrr+65KjMgikIcCANw13sjoQwOBh8ByOVXBIDF4wOveNDHjdEQclwOAFYatlk7rBQ//R/1ouQsEk6H9BUAmWof8JoBdIif4XgJRoibr+J8JCWgjIEmDAK9saCitLAIOHwSt7ZjzXY/A86VaLjcGrxs9rNwbPi2z1uOoGD/1H/6uf8ngR0P94LGNHQv9jE40TD/2Pw9Ejirr+ezwzMSHQZAIMeJvcPWpvIYDBw+ApXQkMnlI3WmvB4Gn2BnY7Zt8AACAASURBVIOn2ZesKnWDh/6j/0q3B/1X6gb6r9uNzsrQf90uqeu/Ljkqg0AaAgx403AnqwMBDB4Gz+FYBYfE4AWjc9/IgNcdcVACDF4Qtlo2qRs89B/9r+UiFEyC/hcElWAZ+p8AeoGU6H8BSImWqOt/IiykhYAsAQa8sq2hsLIEMHgYvLJnxnM9Bs+TbrXYGLxq/Lx2Y/C8yFaPq27w0H/0v/opjxcB/Y/HMnYk9D820Tjx0P84HD2iqOu/xzMTEwJNJsCAt8ndo/YWAhg8DJ7SlcDgKXWjtRYMnmZvMHiafcmqUjd46D/6r3R70H+lbqD/ut3orAz91+2Suv7rkqMyCKQhwIA3DXeyOhDA4GHwHI5VcEgMXjA6940MeN0RByXA4AVhq2WTusFD/9H/Wi5CwSTof0FQCZah/wmgF0iJ/heAlGiJuv4nwkJaCMgSYMAr2xoKK0sAg4fBK3tmPNdj8DzpVouNwavGz2s3Bs+LbPW46gYP/Uf/q5/yeBHQ/3gsY0dC/2MTjRMP/Y/D0SOKuv57PDMxIdBkAgx4m9w9am8hgMHD4CldCQyeUjdaa8HgafYGg6fZl6wqdYOH/qP/SrcH/VfqBvqv243OytB/3S6p678uOSqDQBoCDHjTcCerAwEMHgbP4VgFh8TgBaNz38iA1x1xUAIMXhC2WjapGzz0H/2v5SIUTIL+FwSVYBn6nwB6gZTofwFIiZao638iLKSFgCyBbjfgXXzxJWzlVYZFB37nHbfbxIkTo8clYDwCGDwMXrzTVD0SBq86Q68IGDwvstXiYvCq8fPcrW7w0H/03/P8l42N/pclVt969L8+1mUyof9laNW7Vl3/66VBNgjoE+h2A97Tzzjbtt1+h+jkd/r69nb/fX+NHpeA8Qhg8DB48U5T9UgYvOoMvSJg8LzIVouLwavGz3O3usFD/9F/z/NfNjb6X5ZYfevR//pYl8mE/pehVe9adf2vlwbZIKBPgAFvwR4x4C0IKuEyDB4GL+Hxmyk1Bk+pG621YPA0e4PB0+xLVpW6wUP/0X+l24P+K3UD/dftRmdl6L9ul9T1X5cclUEgDYFuN+D97u572ne/t0d0mrvsvJO98Pzz0eMSMB4BDB4GL95pqh4Jg1edoVcEBrxeZKvFxeBV4+e5W93gof/ov+f5Lxsb/S9LrL716H99rMtkQv/L0Kp3rbr+10uDbBDQJ9DtBrz6yKnQiwAGD4PndbZC4mLwQqjVsweDVw/nslkweGWJ1bde3eCh/+h/fbeh60zof9eMUq1A/1ORn3Ne9F+zL1lV6vqvS47KIJCGAAPeNNzJ6kAgM3i95p7bTrz+YYfouiF/d9oxlv0Po549e8oW2av3PLbdfofZ8M22lq0xdmEYvNhE48XD4MVjGTMSBi8mzbix1A0eA14GvHFPfLVo6H81fp670X9PuuGx0f9wdt471fXf+/mJD4GmEWDA27SOUe9sCWDwMHhK1wODp9SN1loweJq9weBp9iWrSt3gof/ov9LtQf+VuoH+63ajszL0X7dL6vqvS47KIJCGAAPeNNzJ6kAAg4fBczhWwSExeMHo3Dcy4HVHHJQAgxeErZZN6gYP/Uf/a7kIBZOg/wVBJViG/ieAXiAl+l8AUqIl6vqfCAtpISBLoO0GvAMGDrR99tnfVl9jTVvis5+1T33qU4Wa840dd+CXrBUilW4RBg+Dl+70zZwZg6fUjdZaMHiavcHgafYlq0rd4KH/6L/S7UH/lbqB/ut2o7My9F+3S+r6r0uOyiCQhkBbDXhXW30Nu+J3f7S+ffuWpr3T17e3++/7a+l9bKiPAAYPg1ffaes6Ewava0apVjDgTUV+znkxeJp9YcCr25crTvmJPXzrddajB/qv1CX0X6kbDHh1u8GAtwm9YcDbhC5RIwQ6CbTVgPeZ518JGu5muBjw6l8bBrwYPKVTisFT6gYGT7cbGLwm9Ebd4KH/6L/SPUL/lbqB/ut2A/1vQm/U9b8JDKkRAnUSaJsB77d3+Y79/LgTcraZEfjTH/9g4yeMt52/vWv+Z+ecPcLuvefuDvZnnnWefXrBBfN/P/igA+2Pf7jKJk+eXGdvyFWSAAYPg1fyyLgux+C54q0UnE/wVsLntplP8LqhrRxY3eCh/+h/5UMeMQD6HxFm5FDof2SgkcKh/5FAOoRR13+HRyYkBBpNoG0GvNdcd2P+3t3s65STTrAzR/zS1hq+tv3h6uvyPzv6qCPs4gsv6GjmGmt+zv507Q35vz/7zDO2+aYbNLrR7VA8Bg+Dp3TOMXhK3WitBYOn2RsMnmZfsqrUDR76j/4r3R70X6kb6L9uNzorQ/91u6Su/7rkqAwCaQi0zYD33vsfss9+dsn807srLLukTZw40RZZZFF74OHHcvLZJ3hPPP64li7ccttdNmTo0PzPvrDecHv99dfSdImshQhg8DB4hQ5KTYsweDWBDkjDgDcAWg1bMHg1QA5MoW7w0H/0P/Bou2xD/12wRgmK/kfBGD0I+h8dabSA6vof7UEJBIFuQqBtBryjnnzOBgwYkA92lx/82bx92S+lePWNMfk/33HH7fadb3+zpa3ZKx2yVztkXxdecL799JifdJO2d8/HwOBh8JRONgZPqRuttWDwNHuDwdPsS1aVusFD/9F/pduD/it1A/3X7UZnZei/bpfU9V+XHJVBIA2BthnwPvH0CzbffPPZpEmTbLllluig/eIrb1qvXr3slVdetg2+sG5LF768xZZ23vm/me0AOE3LyDo7Ahg8DJ7S7cDgKXUDg6fbDQxeE3qjbvDQf/Rf6R6h/0rdQP91u4H+N6E36vrfBIbUCIE6CbTNgPf+B0faYostnrNdaonP5K9qyL7uuOuvNnjZ5WzKlCm2xmor2Qfvv9/Bf/pfzPbYoyNtm622qLM35CpJAIOHwSt5ZFyXY/Bc8VYKzid4K+Fz28wneNzQVg6sbvDQf/S/8iGPGAD9jwgzcij0PzLQSOHQ/0ggHcKo67/DIxMSAo0m0DYD3ptvvdOGrrhi3qyv7bCNPfjA3/J/PvYXJ9rO3941/+e7777Tvv3NHfN/nmuuueyOu++zJZdcKv/3q//wezvwgP0a3ezuXjwGD4OndMYxeErdaK0Fg6fZGwyeZl+yqtQNHvqP/ivdHvRfqRvov243OitD/3W7pK7/uuSoDAJpCLTNgPec835tX9lyq5zydddeY/vvu2f+z6uutrpdd/3NHfTHjRtnL774gq2yyrB8yDvta5+9vmc3XP/nNF0iayECGDwMXqGDUtMiDF5NoAPSMOANgFbDFgxeDZADU6gbPPQf/Q882i7b0H8XrFGCov9RMEYPgv5HRxotoLr+R3tQAkGgmxBomwHvN765sx1/4il5295/7z1bfdWpn+bNvs4+93zb8qtbz7alL77wvG284Re6Scu772Ng8DB4Sqcbg6fUjdZaMHiavcHgafYlq0rd4KH/6L/S7UH/lbqB/ut2o7My9F+3S+r6r0uOyiCQhkDbDHj79etnm262eU75g/c/yF/HMP3X7XfcY8stv8JMXXj5pRftf7ffxv75z3fTdIishQlg8DB4hQ9LDQsxeDVADkzBgDcQnPM2DJ4z4Arh1Q0e+o/+Vzje0bei/9GRRguI/kdDGTUQ+h8VZ9Rg6vof9WEJBoFuQKBtBrxFerXEEp+1r+24k6277uftzTfesDvvvN2uveZPRbayRoAABg+DJ3AMO0rA4Cl1o7UWDJ5mbzB4mn3JqlI3eOg/+q90e9B/pW6g/7rd6KwM/dftkrr+65KjMgikIcCANw13sjoQwOBh8ByOVXBIDF4wOveNDHjdEQclwOAFYatlk7rBQ//R/1ouQsEk6H9BUAmWof8JoBdIif4XgJRoibr+J8JCWgjIEmibAe8BBx5k39196i9WW2/tNSz7ZWpdfY046zzbcKON82VbbL6xvfHG611t4fsJCWDwMHgJj99MqTF4St1orQWDp9kbDJ5mX7Kq1A0e+o/+K90e9F+pG+i/bjc6K0P/dbukrv+65KgMAmkItM2A9/QzzrZtt98hp5z9grXsF6119XX4EUfZnnvvmy875ugj7aLf/LqrLY38/qc/vaD17t3b/v73NxtZ/7SiMXgYPKUDjMFT6gYGT7cbGLwm9Ebd4KH/6L/SPUL/lbqB/ut2A/1vQm/U9b8JDKkRAnUSYMA7B9qbbvYlu+DCS/IVl116sR15+CF19sYlV48ePexbO+9iX9vxG7bMMoMt++Vz2Z9N+8oG35dcfKGNOOM0mzJlSksN2dq7732g48/uuON2O/igA2dbZxb3zrvvs/79583XvPrqK7bDdlu5PFcWFIOHwXM7XAGBMXgB0Grawid4awJdMg2f4CkJrMbl6gYP/Uf/a7wOXaZC/7tElGwB+p8M/RwTo/+afcmqUtd/XXJUBoE0BBjwzoH7Tt/4lp1w0qn5ij9fd63tt88eaboUMesGG2xkl1x+RZcRn3hitG355U1b1g0YONBGPfFsx59lhmqN1Vaa7aeh99xrXzv8yKM61o8dO9aGrbR8l7lDF2DwMHihZ8djHwbPg2qcmBi8OBxjR8HgxSYaL566wUP/0f94p716JPS/OkOvCOi/F9lqcdH/avw8d6vrv+ezExsCTSTAgHc2Xcs+fXrbX+625ZZfIV9x5ohf2iknndDEHrfUPP2A980337DHH3vURj3+uP3X/msbb7yprbve5zvW//K0k+30007p+PcZB7zZN264/jrbZ6/dZ8nl8SeetYEDBzLgdT41V5zyE3v41utaPontnLJ0+F6957Ht9jvMhm+2dem9Td2AwdPtHAZPszcYPM2+ZFWpGzwGvAx4lW4P+q/UjdZa0H/N3qD/mn1pgv7rkqMyCKQh0G0HvMf87DhbbLHFOqiutvoattBCC+f/fs/dd9m///2vmYhnQ925evWyefvPayuutLL17du3Y82OX9vO/nb/fWm6FDHrKqsMsxNOPs2O/snh9sjDD80UeZ99v2+HHHZE/uejR4+yr26xWceaWQ14s9c4ZJ/KnfGX1m2z7XZ2xpnntsTnE7wRGzldKAa8PlyrRsXgVSXotx+D58e2SmQMXhV6vnsZ8PryDY2O/oeS892H/vvyrRId/a9Cz28v+u/Htmpkdf2v+nzsh0B3I9BtB7zPPP9Ky4C2SuNeeeVl2+AL61YJ0Zi9ffr0sWdfeDWvN/ula+utveYsB7yPjnzE1ljzc/n3rvrdFfbjHx3Q8oz3PzjSFltscXv3nXesX//+eS8Y8PocAwyeD9eqUTF4VQn67cfg+bGtEhmDV4We7151g8cnePkEr+8NKBcd/S/Hq87V6H+dtIvnQv+Ls6p7pbr+182DfBBQJ8CAt4sOPfnkE/bdXXe2MWPeUu9llPq+utXWdtY55+ex7rrrDtvlWzvNcsB7+WWX2IYbbZwPcT/55BNbachgmzhxYr42e83DlVddnf9z9kvYsk9TM+CN0p5ZBmHA68e2SmQMXhV6vnsxeL58Q6Nj8ELJ+e9TN3gMeBnw+t+C4hnQ/+Ks6l6J/tdNvFg+9L8YpxSr1PU/BRNyQkCZQLcd8B7ww4Ns0UU7X9Hw+f/5gi2++BJ5L6679hr7178mzLYv4z/+2J599hl75JGH7aUXX1DuX7TaMjY7fO3rtt/+B1ivXr0se/XCF9Ybbtl7eqd9Tf+KhmzA+8Df7usYBl904QV2zFFTX+1wy2132ZChQzs+sTvt09R8gjdau1oCMeD14Vo1KgavKkG//Rg8P7ZVImPwqtDz3atu8BjwMuD1vQHloqP/5XjVuRr9r5N28Vzof3FWda9U1/+6eZAPAuoEuu2Ad0bwp59xtm27/Q75H6++6or2/nvvqfemlvrOPvd823CjTaxfv34d+bLXKvzowO/b3Xff2VLDjAPeIw472B4b9bQNWmCB/NO7Q5ZbygYvu6zdfse9+b4TfnGsnXvOmcaA17eVDHh9+YZGx+CFkvPfh8HzZxySAYMXQq2ePeoGjwEvA956bkKxLOh/MU4pVqH/Kah3nRP975pRqhXq+p+KC3khoEqgbQa82RByueWWzz+Z+vBDD6r2o/a67rrnflt6mcEdeSdPnmxX//H3duThh3S8cmHaN2c14N1l193sZ8ceny8ZccZpNnz4OrbOuuvZhAkTbMUVlrHMdDHg9W0rA15fvqHRMXih5Pz3YfD8GYdkwOCFUKtnj7rBY8DLgLeem1AsC/pfjFOKVeh/Cupd50T/u2aUaoW6/qfiQl4IqBJomwGvagNS17X/9w+0tddZ1wYOGmTLLDO44xfTZQPa9f9nHXvnnbc7SpzVgDf75lPPvmT9+/fP38U711xzWY8ePeycs0fYiccfl++d04B34cGrR0OQDe/fe/1JO/nGkdFiNiHQlacebc+MHGn9BiwoW+6ED8fYFrvuZcM321q2xtiFZQbvvEP3snkXXCp26GjxJv5rnPXp3dMOOu+qaDGbEOikPba3SZ/0tLn79Jctd9y7r9reJ51viy69nGyNsQvLDN4tl11gfQYsHDt0tHgTxr5rQz+3ln39wKOjxWxCoMzgLbT0MOvRo6dkueg/+q90MNF/pW601oL+a/YG/dfsS1aVh/6//dJjug9MZRBoOIG2HfBuvMlmttM3vmlLLrmULbTwZ2zuuee2CePH21tj3rKXXnzRTv/lKfbKyy81vL3lyz/hpFNtp298K9/47DPP2OabbtARZHYD3ux9xwf+8Mcd6yZNmmRDl1/ask8DZ18MeMv3ocwOBrxlaNW3FoNXH+uymTB4ZYnVsx6DVw/nkCweBi+kjtntYcDLgDfmeaoaC/2vStBvP/rvx7ZKZPS/Cj3fvR76z4DXt2dEb28CbTfgXW755e2cc39ty68wZI6dz37c77Zbb7YfHrC/jRs3rq1OybRP5GYD2sFLdf6iutkNeHv27GnPvvCq9e7dO+f028svtcMP7Rz48ooG3+PDKxp8+YZG50c0Q8n57+NHNP0Zh2TgRzRDqNWzR/1HNHlFA69oqOcmFMuC/hfjlGIV+p+Cetc50f+uGaVaoa7/qbiQFwKqBNpqwLvSSivbDTffnr9CoOhX9svY1lx95fzdve3yNf17eddaY1jHaxpmN+DNuPz8uBPs27t8J+e08tBlbfz48R24GPD6nhwGvL58Q6Nj8ELJ+e/D4PkzDsmAwQuhVs8edYPHgLf4/66t58R0ZunVex7bbr/D2u4VTWcftJtNnND5v4Xr5t5VvuzOfGbJwXbwr6/uamm3+j76r9lO9F+zL1lV6vqvS47KIJCGQNsMePv06WMPjRxt8803Xwfp7BUEt956k7304gs2duxHtsgii+Sf7N1m2+1t4MCBHetuveUm2/27u6bpUIKso558zgYMGJD/grRllly0Y7g9pwFv9und9TfYyMa89Q8bPXpUS9UMeH2byIDXl29odAa8oeT892Hw/BmHZMDghVCrZ4+6wWPAy4C3nptQLAv6X4xTilXofwrqXedE/7tmlGqFuv6n4kJeCKgSaJsBb/bLxA46+NC8D9kvA9t6yy/ZU089Odu+7LvfD+zgQw/v+P4X1htur7/+mmofC9e1x5772COPPGSPjnxklnt2+N+v26m/HJF/78MPP7RVV16hY92cBrxzKoABb+H2BC1kwBuEzX0TBs8dcXACDF4wOteNGDxXvJWCqxs8BrwMeCsd8Mib0f/IQCOGQ/8jwowYCv2PCDNyKHX9j/y4hINA4wm0zYD32utvttVWWz1v2J6772Y333RDl837zUWX2iabbp6vO/qoI+ziCy/oco/6gvseeMQWX3wJe+21V+2qK6+wBx/8mz326EgbvOyytt/+B9pXt9q64xUWp51ykp1x+qkMeMWbyoBXs0EYPM2+ZFVh8DR7g8HT7EtWlbrBY8DLgFfp9qD/St1orQX91+wN+q/Zlybovy45KoNAGgJtM+B9+rmXrV+/fvmnd5ddevFCtNdeZ1276g/X5Guv//O1tu/eexTap7xo2oC3qxqffPIJ+8qXNmlZxid4u6KW5vsMeNNw7yorBq8rQum+j8FLx35OmTF4mn1pgsFjwMuAV+n2oP9K3WDAq9uNzsrQf90uqf8HXl1yVAaBNATaZsD73Iuv2TzzzGNjx461YSstX4j29APNxx9/LH+tQ9O/vrXzLrbn3vvaZz+75CwfZdKkSXb6aafY2WedMdP3559/fhv91PP5n1926cV25OGHFMIx7RUNM77yodDmEosweBi8EsfFfSkGzx1xcAIGvMHoXDdi8FzxVgqubvDQf/S/0gGPvBn9jww0Yjj0PyLMiKHQ/4gwI4dS1//Ij0s4CDSeQNsMeO+9/6F8qJmZgKWW+Eyhxm29zbY24qzz8rW33XqzfW+3XQrta8Kiueee21ZYYYgNXXElW2rppe2N11/P3837wvNTB7hN/MLgYfCUzi0GT6kbrbVg8DR7g8HT7EtWlbrBQ//Rf6Xbg/4rdQP91+1GZ2Xov26X1PVflxyVQSANgbYZ8F5w4SW26WZTP4F7xf9dboce/KM5Eu/Ro4f97aFHbZFFFs3X/WD/ve2aP12dpktkLUQAg4fBK3RQalqEwasJdEAaBrwB0GrYgsGrAXJgCnWDh/6j/4FH22Ub+u+CNUpQ9D8KxuhB0P/oSKMFVNf/aA9KIAh0EwJtM+DNfnnYWeec39G2bMj7858eZePHj5+plSsMGWJnnf0rW36FIfn3MuOw/ODPWvb6Ar50CWDwMHhKpxODp9SN1loweJq9weBp9iWrSt3gof/ov9LtQf+VuoH+63ajszL0X7dL6vqvS47KIJCGQNsMeDO8v73i9/Y/X/hiB+kpU6bYa6+9am+PGWMffTTWFlxoYfvMZz7T8andaQtPPP44O+fsEWk6RNbCBDB4GLzCh6WGhRi8GiAHpmDAGwjOeRsGzxlwhfDqBg/9R/8rHO/oW9H/6EijBUT/o6GMGgj9j4ozajB1/Y/6sASDQDcg0FYD3uy9s3/928O28MLF3sGb9be7vXu3G5zZ2T4CBg+Dp3S+MXhK3WitBYOn2RsMnmZfsqrUDR76j/4r3R70X6kb6L9uNzorQ/91u6Su/7rkqAwCaQi01YB3GuJ99/uB/eDAH1nv3r1nS/3dd96xHx34fbv77jvTdIaspQlg8DB4pQ+N4wYMniPciqEZ8FYE6LQdg+cENkJYdYOH/qP/EY55tBDofzSU0QOh/9GRRgmI/kfB6BJEXf9dHpqgEGgwgbYc8Gb9yj7NO3ztdWzYsNVs6Ior2Xzzz2dj3nrLnn7qSXt05CP2xBOjG9zW9iwdg4fBUzr5GDylbrTWgsHT7A0GT7MvWVXqBg/9R/+Vbg/6r9QN9F+3G52Vof+6XVLXf11yVAaBNAS65YB33fU+b2uvs25O9PJLL7F//vPdNHTJWisBDB4Gr9YD10UyDJ5SNzB4ut3A4DWhN+oGD/1H/5XuEfqv1A30X7cb6H8TeqOu/01gSI0QqJNAtxzwTv/L1PbbZw/783XX1smUXIkIYPAweImO3izTYvCUuoHB0+0GBq8JvVE3eOg/+q90j9B/pW6g/7rdQP+b0Bt1/W8CQ2qEQJ0EGPDWSZtcrgQweBg81wNWMjgGrySwGpfzioYaYZdIxY9oloBV81J1g4f+o/81X4k5pkP/lbrBgFe3Gwx4m9Abdf1vAkNqhECdBBjw1kmbXK4EMHgYPNcDVjI4Bq8ksBqXM+CtEXaJVAx4S8Cqeam6wUP/0f+arwQDXiXgJWpB/0vAqnEp+l8j7JKp1PW/5OOwHALdngAD3m7f4vZ5QAweBk/ptDPgVepGay0YPM3eYPA0+5JVpW7w0H/0X+n2oP9K3UD/dbvRWRn6r9sldf3XJUdlEEhDgAFvGu5kdSCAwcPgORyr4JAYvGB07hsZ8LojDkqAwQvCVssmdYOH/qP/tVyEgknQ/4KgEixD/xNAL5AS/S8AKdESdf1PhIW0EJAlwIBXtjUUVpYABg+DV/bMeK7H4HnSrRYbg1eNn9duDJ4X2epx1Q0e+o/+Vz/l8SKg//FYxo6E/scmGice+h+Ho0cUdf33eGZiQqDJBLr9gPfIww+xm268oXKP/vnPdyvHIIAvAQweBs/3hJWLjsErx6vO1Ri8OmkXz4XBK86q7pXqBg/9R//rvhNzyof+K3WjtRb0X7M36L9mX7Kq1PVflxyVQSANgW4/4I2FdcevbWd/u/++WOGI40AAg4fBczhWwSExeMHo3Ddi8NwRByXA4AVhq2WTusFD/9H/Wi5CwSTof0FQCZah/wmgF0iJ/heAlGiJuv4nwkJaCMgSYMBbsDU7fX17u/++vxZczbIUBDB4GLwU5252OTF4St1orQWDp9kbDJ5mX7Kq1A0e+o/+K90e9F+pG+i/bjc6K0P/dbukrv+65KgMAmkIMOAtyH2H7bayhx96sOBqlqUggMHD4KU4dwx4lagXq4UBbzFOda/C4NVNvHg+dYOH/qP/xU+z/0oGvP6MQzOg/6HkfPeh/758q0RX1/8qz8ZeCHRHAt1+wLvfPnvYn6+7tjv2jmeagQAGD4OndCkweErdaK0Fg6fZGwyeZl+yqtQNHvqP/ivdHvRfqRvov243OitD/3W7pK7/uuSoDAJpCDDgTcOdrA4EMHgYPIdjFRwSgxeMzn0jA153xEEJMHhB2GrZpG7w0H/0v5aLUDAJ+l8QVIJl6H8C6AVSov8FICVaoq7/ibCQFgKyBBjwyraGwsoSwOBh8MqeGc/1GDxPutViY/Cq8fPajcHzIls9rrrBQ//R/+qnPF4E9D8ey9iR0P/YROPEQ//jcPSIoq7/Hs9MTAg0mQAD3iZ3j9pbCGDwMHhKVwKDp9SN1loweJq9weBp9iWrSt3gof/ov9LtQf+VuoH+63ajszL0X7dL6vqvS47KIJCGAAPeNNzJ6kAAg4fBczhWwSExeMHo3DcyGzZ9fgAAIABJREFU4HVHHJQAgxeErZZN6gYP/Uf/a7kIBZOg/wVBJViG/ieAXiAl+l8AUqIl6vqfCAtpISBLgAGvbGsorCwBDB4Gr+yZ8VyPwfOkWy02Bq8aP6/dGDwvstXjqhs89B/9r37K40VA/+OxjB0J/Y9NNE489D8OR48o6vrv8czEhECTCTDgbXL3qL2FAAYPg6d0JTB4St1orQWDp9kbDJ5mX7Kq1A0e+o/+K90e9F+pG+i/bjc6K0P/dbukrv+65KgMAmkIdMsB74orrmSrDFs1J3rzTTfY2LFj09Ala60EMHgYvFoPXBfJMHhK3cDg6XYDg9eE3qgbPPQf/Ve6R+i/UjfQf91uoP9N6I26/jeBITVCoE4C3XLAWydAcukQwOBh8HROoxkGT6kbGDzdbmDwmtAbdYOH/qP/SvcI/VfqBvqv2w30vwm9Udf/JjCkRgjUSYABb520yeVKAIOHwXM9YCWDY/BKAqtxOa9oqBF2iVT8iGYJWDUvVTd46D/6X/OVmGM69F+pGwx4dbvBgLcJvVHX/yYwpEYI1EmAAW+dtMnlSgCDh8FzPWAlg2PwSgKrcTkD3hphl0jFgLcErJqXqhs89B/9r/lKMOBVAl6iFvS/BKwal6L/NcIumUpd/0s+Dssh0O0JMODt9i1unwfE4GHwlE47A16lbrTWgsHT7A0GT7MvWVXqBg/9R/+Vbg/6r9QN9F+3G52Vof+6XVLXf11yVAaBNAQY8KbhTlYHAhg8DJ7DsQoOicELRue+kQGvO+KgBBi8IGy1bFI3eOg/+l/LRSiYBP0vCCrBMvQ/AfQCKdH/ApASLVHX/0RYSAsBWQIMeGVbQ2FlCWDwMHhlz4znegyeJ91qsTF41fh57cbgeZGtHlfd4KH/6H/1Ux4vAvofj2XsSOh/bKJx4qH/cTh6RFHXf49nJiYEmkyAAW+Tu0ftLQQweBg8pSuBwVPqRmstGDzN3mDwNPuSVaVu8NB/9F/p9qD/St1A/3W70VkZ+q/bJXX91yVHZRBIQ4ABbxruZHUggMHD4Dkcq+CQGLxgdO4bGfC6Iw5KgMELwlbLJnWDh/6j/7VchIJJ0P+CoBIsQ/8TQC+QEv0vACnREnX9T4SFtBCQJcCAV7Y1FFaWAAYPg1f2zHiux+B50q0WG4NXjZ/XbgyeF9nqcdUNHvqP/lc/5fEioP/xWMaOhP7HJhonHvofh6NHFHX993hmYkKgyQQY8Da5e9TeQgCDh8FTuhIYPKVutNaCwdPsDQZPsy9ZVeoGD/1H/5VuD/qv1A30X7cbnZWh/7pdUtd/XXJUBoE0BBjwpuFOVgcCGDwMnsOxCg6JwQtG576RAa874qAEGLwgbLVsUjd46D/6X8tFKJgE/S8IKsEy9D8B9AIp0f8CkBItUdf/RFhICwFZAgx4ZVtDYWUJYPAweGXPjOd6DJ4n3WqxMXjV+HntxuB5ka0eV93gof/of/VTHi8C+h+PZexI6H9sonHiof9xOHpEUdd/j2cmJgSaTIABb5O7R+0tBDB4GDylK4HBU+pGay0YPM3eYPA0+5JVpW7w0H/0X+n2oP9K3UD/dbvRWRn6r9sldf3XJUdlEEhDgAFvGu5kdSCAwcPgORyr4JAYvGB07hsZ8LojDkqAwQvCVssmdYOH/qP/tVyEgknQ/4KgEixD/xNAL5AS/S8AKdESdf1PhIW0EJAlwIBXtjUUVpYABg+DV/bMeK7H4HnSrRYbg1eNn9duDJ4X2epx1Q0e+o/+Vz/l8SKg//FYxo6E/scmGice+h+Ho0cUdf33eGZiQqDJBBjwNrl71N5CAIOHwVO6Ehg8pW601oLB0+wNBk+zL1lV6gYP/Uf/lW4P+q/UDfRftxudlaH/ul1S139dclQGgTQEGPCm4U5WBwIYPAyew7EKDonBC0bnvpEBrzvioAQYvCBstWxSN3joP/pfy0UomAT9LwgqwTL0PwH0AinR/wKQEi1R1/9EWEgLAVkCDHhlW0NhZQlg8DB4Zc+M53oMnifdarExeNX4ee3G4HmRrR5X3eCh/+h/9VMeLwL6H49l7Ejof2yiceKh/3E4ekRR13+PZyYmBJpMgAFvk7tH7S0EMHgYPKUrgcFT6kZrLRg8zd5g8DT7klWlbvDQf/Rf6fag/0rdQP91u9FZGfqv2yV1/dclR2UQSEOAAW8a7mR1IIDBw+A5HKvgkBi8YHTuGxnwuiMOSoDBC8JWyyZ1g4f+o/+1XISCSdD/gqASLEP/E0AvkBL9LwAp0RJ1/U+EhbQQkCXAgFe2NRRWlgAGD4NX9sx4rsfgedKtFhuDV42f124MnhfZ6nHVDR76j/5XP+XxIqD/8VjGjoT+xyYaJx76H4ejRxR1/fd4ZmJCoMkEGPA2uXvU3kIAg4fBU7oSGDylbrTWgsHT7A0GT7MvWVXqBg/9R/+Vbg/6r9QN9F+3G52Vof+6XVLXf11yVAaBNAQY8KbhTlYHAhg8DJ7DsQoOicELRue+kQGvO+KgBBi8IGy1bFI3eOg/+l/LRSiYBP0vCCrBMvQ/AfQCKdH/ApASLVHX/0RYSAsBWQIMeGVbQ2FlCWDwMHhlz4znegyeJ91qsTF41fh57cbgeZGtHlfd4KH/6H/1Ux4vAvofj2XsSOh/bKJx4qH/cTh6RFHXf49nJiYEmkyAAW+Tu0ftLQQweBg8pSuBwVPqRmstGDzN3mDwNPuSVaVu8NB/9F/p9qD/St1A/3W70VkZ+q/bJXX91yVHZRBIQ4ABbxruZHUggMHD4Dkcq+CQGLxgdO4bGfC6Iw5KgMELwlbLJnWDh/6j/7VchIJJ0P+CoBIsQ/8TQC+QEv0vACnREnX9T4SFtBCQJcCAV7Y1FFaWAAYPg1f2zHiux+B50q0WG4NXjZ/XbgyeF9nqcdUNHvqP/lc/5fEioP/xWMaOhP7HJhonHvofh6NHFHX993hmYkKgyQQY8Da5e9TeQgCDh8FTuhIYPKVutNaCwdPsDQZPsy9ZVeoGD/1H/5VuD/qv1A30X7cbnZWh/7pdUtd/XXJUBoE0BBjwpuFOVgcCGDwMnsOxCg6JwQtG576RAa874qAEGLwgbLVsUjd46D/6X8tFKJgE/S8IKsEy9D8B9AIp0f8CkBItUdf/RFhICwFZAgx4ZVtDYWUJYPAweGXPjOd6DJ4n3WqxMXjV+HntxuB5ka0eV93gof/of/VTHi8C+h+PZexI6H9sonHiof9xOHpEUdd/j2cmJgSaTIABb5O7R+0tBDB4GDylK4HBU+pGay0YPM3eYPA0+5JVpW7w0H/0X+n2oP9K3UD/dbvRWRn6r9sldf3XJUdlEEhDgAFvGu5kdSCAwcPgORyr4JAYvGB07hsZ8LojDkqAwQvCVssmdYOH/qP/tVyEgknQ/4KgEixD/xNAL5AS/S8AKdESdf1PhIW0EJAlwIBXtjUUVpYABg+DV/bMeK7H4HnSrRYbg1eNn9duDJ4X2epx1Q0e+o/+Vz/l8SKg//FYxo6E/scmGice+h+Ho0cUdf33eGZiQqDJBBjwNrl71N5CAIOHwVO6Ehg8pW601oLB0+wNBk+zL1lV6gYP/Uf/lW4P+q/UDfRftxudlaH/ul1S139dclQGgTQEGPCm4S6VdZFFFrX333/PJk6cKFVX2WIweBi8smfGcz0Gz5NutdgMeKvx89qNwfMiWz2uusFD/9H/6qc8XgT0Px7L2JHQ/9hE48RD/+Nw9Iiirv8ez0xMCDSZAAPeJncvoPbevXvb3vvsb1t+dStbbPElrE+fPtajx1Rj8Mknn9irr7xsP/rhD2zU44/NFL1fv352970PdPz5HXfcbgcfdOBsq8ji3nn3fda//7z5mldffcV22G6rgKqLbcHgYfCKnZR6VmHw6uEckgWDF0LNfw8Gz59xaAZ1g4f+o/+hZ9tjH/rvQTVOTPQ/DsfYUdD/2ETjxVPX/3hPSiQIdA8CDHi7Rx8LP8X+3z/QDjr40C7X/+LYn9mvzju7Zd2AgQNt1BPPdvxZZqjWWG0le/+992YZb8+99rXDjzyq43tjx461YSst32Xu0AUYPAxe6Nnx2IfB86AaJyYGLw7H2FEweLGJxounbvDQf/Q/3mmvHgn9r87QKwL670W2Wlz0vxo/z93q+u/57MSGQBMJMOBtYtcq1Dz9gPeF55+zUaMetxdfeMHW/fznba211ra+ffvm0TOztOnGX7QXnn++I9uMA97sGzdcf53ts9fus6zo8SeetYEDBzLgrdCvIluvOOUn9vCt13V8ErvInrrX9Oo9j22332E2fLOt606dLB8GLxn6LhNj8LpElGQBBi8J9kJJ1Q0eA14GvIUOck2L0P+aQAekQf8DoNWwBf2vAXJgCnX9D3wstkGg2xJgwNttWzvrB9tm2+1sx52+ZUccfoi99OILMy26/qbbbJVVhuV/fv5559hxx/60Y82sBrxTpkzJP5U7bty4llhZnjPOPLflz/gEr89hY8Drw7VqVAxeVYJ++zF4fmyrRMbgVaHnu1fd4DHgZcDrewPKRUf/y/GqczX6Xyft4rnQ/+Ks6l6prv918yAfBNQJMOBV71DN9W208aZ20SWX51kffujBlnfmTj/gfXTkI7bGmp/L1131uyvsxz86oKXS+x8caYsttri9+8471q9///yTwQx4fZrJgNeHa9WoGLyqBP32Y/D82FaJjMGrQs93r7rBY8DLgNf3BpSLjv6X41XnavS/TtrFc6H/xVnVvVJd/+vmQT4IqBNgwKveoZrr+58vfNF+e8Xv86z33/dX2+nr23dUMP2A9/LLLrENN9o4H+Jmv5xtpSGDbeLEifnaddf7vF151dX5P2e/hO2Ynx3HgNexjwx4HeFWCI3BqwDPeSsGzxlwYHgMXiC4GrapGzwGvAx4a7gGhVOg/4VR1b4Q/a8deaGE6H8hTEkWqet/EigkhYAwAQa8ws1JUdqxvzjRdv72rnnqyy692I48/JDZDngf+Nt9dtY55+ffv+jCC+yYo47I//mW2+6yIUOHdnxi95nnX2HA69hMBryOcCuExuBVgOe8FYPnDDgwPAYvEFwN29QNHgNeBrw1XIPCKdD/wqhqX4j+1468UEL0vxCmJIvU9T8JFJJCQJgAA17h5tRdWr9+/eyx0c9Y796989RfWG+4vf76a7Md8B5x2MH22KinbdACC+Sf3h2y3FI2eNll7fY77s33nPCLY+3cc840Bry+nWTA68s3NDoGL5Sc/z4Mnj/jkAwYvBBq9exRN3gMeBnw1nMTimVB/4txSrEK/U9Bveuc6H/XjFKtUNf/VFzICwFVAgx4VTuToK6bb73Thq64Yp75kYcfsu23/WpLFTO+oiEb8O6y6272s2OPz9eNOOM0Gz58HVtn3fVswoQJtuIKy1hmuhjw+jaTAa8v39DoGLxQcv77MHj+jEMyYPBCqNWzR93gMeBlwFvPTSiWBf0vxinFKvQ/BfWuc6L/XTNKtUJd/1NxIS8EVAkw4FXtTM11nfurC2yLr0wd6I4fP97W/tyqNm7cuC4HvNmCp559yfr375+/i3euueayHj162Dlnj7ATjz8u3z+nAe/Cg1eP9qRTpkyx915/0k6+cWS0mE0IdOWpR9szI0davwELypY74cMxtsWue9nwzbaWrTF2YZnBO+/QvWzeBZeKHTpavIn/Gmd9eve0g867KlrMJgQ6aY/tbdInPW3uPv1lyx337qu290nn26JLLydbY+zCMoN3y2UXWJ8BC8cOHS3ehLHv2tDPrWVfP/DoaDGbECgzeAstPcx69OgpWS76j/4rHUz0X6kbrbWg/5q9Qf81+5JV5aH/b7/0mO4DUxkEGk6AAW/DGxij/NPPONu23X6HPNSkSZNsiy9tbC88//xMoWf1Cd5s0QE/PMgO/OGPO9ZnMYYuv7RNnjw5/zMGvDG6NPsYDHh9+YZGx+CFkvPfh8HzZxySAYMXQq2ePR4GL2blDHgZ8MY8T1Vjof9VCfrtR//92FaJjP5Xoee710P/GfD69ozo7U2AAW9799/OOe/X9pUtt8opZJ/A3W7rr9jo0aNmSWV2A96ePXvasy+82vHu3t9efqkdfmjnwJdXNPgeMl7R4Ms3NDo/ohlKzn8fP6LpzzgkAz+iGUKtnj3qP6LJKxp4RUM9N6FYFvS/GKcUq9D/FNS7zon+d80o1Qp1/U/FhbwQUCXAgFe1M851Za9R+P0fr7W1hq+dZ8rembvVlpvP8pO700qZ3YA3+/7PjzvBvr3Ldyz7FM3KQ5fNX/Mw7YsBr28zGfD68g2NjsELJee/D4PnzzgkAwYvhFo9e9QNHgNeBrz13IRiWdD/YpxSrEL/U1DvOif63zWjVCvU9T8VF/JCQJUAA17VzjjW1a9fP7vhptts6WUG51k+/PBD23yTDWzMmLfmmHVOA97evXvb+htsZGPe+sdMnwBmwOvYTDNjwOvLNzQ6Bi+UnP8+DJ4/45AMGLwQavXsUTd4DHgZ8NZzE4plQf+LcUqxCv1PQb3rnOh/14xSrVDX/1RcyAsBVQIMeFU741TXEkt81q6/6TYbMGBAnuH111+zLTbfeKZfqDar9HMa8M6pXAa8Ts38/2EZ8PryDY2OwQsl578Pg+fPOCQDBi+EWj171A0eA14GvPXchGJZ0P9inFKsQv9TUO86J/rfNaNUK9T1PxUX8kJAlQADXtXOONX10MhRtvDCn8mjZ69ROPWUEy0zRrP7+svtt9lrr76Sf5sBr1NTKoZlwFsRoNN2DJ4T2AhhMXgRIDqEwOA5QI0UUt3gMeBlwBvpqEcJg/5HwegSBP13wVo5KPpfGaFbAHX9d3twAkOgoQQY8Da0caFlPz76GRs4aFDh7SPOOM1OPflEBryFidW/kAFv/cyLZMTgFaGUZg0GLw33rrJi8LoilO776gaPAS8D3nS3Y+bM6L9SN1prQf81e4P+a/Ylq0pd/3XJURkE0hBgwJuGe7Ksj4162gYtsEDh/L887WQ7/bRT8vXzzz+/jX7q+fyfL7v0Yjvy8EMKxZn2iobsXb+rrrxCoT0hizB4GLyQc+O1B4PnRbZ6XAxedYYeETB4HlTjxFQ3eOg/+h/npMeJgv7H4egRBf33oFo9JvpfnaFXBHX993pu4kKgqQQY8Da1c9Q9EwEMHgZP6Vpg8JS60VoLBk+zNxg8zb5kVakbPPQf/Ve6Pei/UjfQf91udFaG/ut2SV3/dclRGQTSEGDAm4Y7WR0IYPAweA7HKjgkBi8YnftGBrzuiIMSYPCCsNWySd3gof/ofy0XoWAS9L8gqATL0P8E0AukRP8LQEq0RF3/E2EhLQRkCTDglW0NhZUlgMHD4JU9M57rMXiedKvFxuBV4+e1G4PnRbZ6XHWDh/6j/9VPebwI6H88lrEjof+xicaJh/7H4egRRV3/PZ6ZmBBoMgEGvE3uHrW3EMDgYfCUrgQGT6kbrbVg8DR7g8HT7EtWlbrBQ//Rf6Xbg/4rdQP91+1GZ2Xov26X1PVflxyVQSANAQa8abiT1YEABg+D53CsgkNi8ILRuW9kwOuOOCgBBi8IWy2b1A0e+o/+13IRCiZB/wuCSrAM/U8AvUBK9L8ApERL1PU/ERbSQkCWAANe2dZQWFkCGDwMXtkz47keg+dJt1psDF41fl67MXheZKvHVTd46D/6X/2Ux4uA/sdjGTsS+h+baJx46H8cjh5R1PXf45mJCYEmE2DA2+TuUXsLAQweBk/pSmDwlLrRWgsGT7M3GDzNvmRVqRs89B/9V7o96L9SN9B/3W50Vob+63ZJXf91yVEZBNIQYMCbhjtZHQhg8DB4DscqOCQGLxid+0YGvO6IgxJg8IKw1bJJ3eCh/+h/LRehYBL0vyCoBMvQ/wTQC6RE/wtASrREXf8TYSEtBGQJMOCVbQ2FlSWAwcPglT0znusxeJ50q8XG4FXj57Ubg+dFtnpcdYOH/qP/1U95vAjofzyWsSOh/7GJxomH/sfh6BFFXf89npmYEGgyAQa8Te4etbcQwOBh8JSuBAZPqRuttWDwNHuDwdPsS1aVusFD/9F/pduD/it1A/3X7UZnZei/bpfU9V+XHJVBIA0BBrxpuJPVgQAGD4PncKyCQ2LwgtG5b2TA6444KAEGLwhbLZvUDR76j/7XchEKJkH/C4JKsAz9TwC9QEr0vwCkREvU9T8RFtJCQJYAA17Z1lBYWQIYPAxe2TPjuR6D50m3WmwMXjV+XrsxeF5kq8dVN3joP/pf/ZTHi4D+x2MZOxL6H5tonHjofxyOHlHU9d/jmYkJgSYTYMDb5O5RewsBDB4GT+lKYPCUutFaCwZPszcYPM2+ZFWpGzz0H/1Xuj3ov1I30H/dbnRWhv7rdkld/3XJURkE0hBgwJuGO1kdCGDwMHgOxyo4JAYvGJ37Rga87oiDEmDwgrDVsknd4KH/6H8tF6FgEvS/IKgEy9D/BNALpET/C0BKtERd/xNhIS0EZAkw4JVtDYWVJYDBw+CVPTOe6zF4nnSrxcbgVePntRuD50W2elx1g4f+o//VT3m8COh/PJaxI6H/sYnGiYf+x+HoEUVd/z2emZgQaDIBBrxN7h61txDA4GHwlK4EBk+pG621YPA0e4PB0+xLVpW6wUP/0X+l24P+K3UD/dftRmdl6L9ul9T1X5cclUEgDQEGvGm4k9WBAAYPg+dwrIJDYvCC0blvZMDrjjgoAQYvCFstm9QNHvqP/tdyEQomQf8LgkqwDP1PAL1ASvS/AKRES9T1PxEW0kJAlgADXtnWUFhZAhg8DF7ZM+O5HoPnSbdabAxeNX5euzF4XmSrx1U3eOg/+l/9lMeLgP7HYxk7Evofm2iceOh/HI4eUdT13+OZiQmBJhNgwNvk7lF7CwEMHgZP6Upg8JS60VoLBk+zNxg8zb5kVakbPPQf/Ve6Pei/UjfQf91udFaG/ut2SV3/dclRGQTSEGDAm4Y7WR0IYPAweA7HKjgkBi8YnftGBrzuiIMSYPCCsNWySd3gof/ofy0XoWAS9L8gqATL0P8E0AukRP8LQEq0RF3/E2EhLQRkCTDglW0NhZUlgMHD4JU9M57rMXiedKvFxuBV4+e1G4PnRbZ6XHWDh/6j/9VPebwI6H88lrEjof+xicaJh/7H4egRRV3/PZ6ZmBBoMgEGvE3uHrW3EMDgYfCUrgQGT6kbrbVg8DR7g8HT7EtWlbrBQ//Rf6Xbg/4rdQP91+1GZ2Xov26X1PVflxyVQSANAQa8abiT1YEABg+D53CsgkNi8ILRuW9kwOuOOCgBBi8IWy2b1A0e+o/+13IRCiZB/wuCSrAM/U8AvUBK9L8ApERL1PU/ERbSQkCWAANe2dZQWFkCGDwMXtkz47keg+dJt1psDF41fl67MXheZKvHVTd46D/6X/2Ux4uA/sdjGTsS+h+baJx46H8cjh5R1PXf45mJCYEmE2DA2+TuUXsLAQweBk/pSmDwlLrRWgsGT7M3GDzNvmRVqRs89B/9V7o96L9SN9B/3W50Vob+63ZJXf91yVEZBNIQYMCbhjtZHQhg8DB4DscqOCQGLxid+0YGvO6IgxJg8IKw1bJJ3eCh/+h/LRehYBL0vyCoBMvQ/wTQC6RE/wtASrREXf8TYSEtBGQJMOCVbQ2FlSWAwcPglT0znusxeJ50q8XG4FXj57Ubg+dFtnpcdYOH/qP/1U95vAjofzyWsSOh/7GJxomH/sfh6BFFXf89npmYEGgyAQa8Te4etbcQwOBh8JSuBAZPqRuttWDwNHuDwdPsS1aVusFD/9F/pduD/it1A/3X7UZnZei/bpfU9V+XHJVBIA0BBrxpuJPVgQAGD4PncKyCQ2LwgtG5b2TA6444KAEGLwhbLZvUDR76j/7XchEKJkH/C4JKsAz9TwC9QEr0vwCkREvU9T8RFtJCQJYAA17Z1lBYWQIYPAxe2TPjuR6D50m3WmwMXjV+XrsxeF5kq8dVN3joP/pf/ZTHi4D+x2MZOxL6H5tonHjofxyOHlHU9d/jmYkJgSYTYMDb5O5RewsBDB4GT+lKYPCUutFaCwZPszcYPM2+ZFWpGzz0H/1Xuj3ov1I30H/dbnRWhv7rdkld/3XJURkE0hBgwJuGO1kdCGDwMHgOxyo4JAYvGJ37Rga87oiDEmDwgrDVsknd4KH/6H8tF6FgEvS/IKgEy9D/BNALpET/C0BKtERd/xNhIS0EZAkw4JVtDYWVJYDBw+CVPTOe6zF4nnSrxcbgVePntRuD50W2elx1g4f+o//VT3m8COh/PJaxI6H/sYnGiYf+x+HoEUVd/z2emZgQaDIBBrxN7h61txDA4GHwlK4EBk+pG621YPA0e4PB0+xLVpW6wUP/0X+l24P+K3UD/dftRmdl6L9ul9T1X5cclUEgDQEGvGm4k9WBAAYPg+dwrIJDYvCC0blvZMDrjjgoAQYvCFstm9QNHvqP/tdyEQomQf8LgkqwDP1PAL1ASvS/AKRES9T1PxEW0kJAlgADXtnWUFhZAhg8DF7ZM+O5HoPnSbdabAxeNX5euzF4XmSrx1U3eOg/+l/9lMeLgP7HYxk7Evofm2iceOh/HI4eUdT13+OZiQmBJhNgwNvk7lF7CwEMHgZP6Upg8JS60VoLBk+zNxg8zb5kVakbPPQf/Ve6Pei/UjfQf91udFaG/ut2SV3/dclRGQTSEGDAm4Y7WR0IYPAweA7HKjgkBi8YnftGBrzuiIMSYPCCsNWySd3gof/ofy0XoWAS9L8gqATL0P8E0AukRP8LQEq0RF3/E2EhLQRkCTDglW0NhZUlgMHD4JU9M57rMXiedKvFxuBV4+e1G4PnRbZ6XHWDh/6j/9VPebwI6H88lrEjof+xicaJh/7H4egRRV3/PZ6ZmBBoMgEGvE3uHrW3EMDgYfCUrgQGT6kbrbVg8DR7g8HT7EtWlbrBQ//Rf6Xbg/4rdQP91+1GZ2Xov26X1PWF3hefAAAgAElEQVRflxyVQSANAQa8abiT1YEABg+D53CsgkNi8ILRuW9kwOuOOCgBBi8IWy2b1A0e+o/+13IRCiZB/wuCSrAM/U8AvUBK9L8ApERL1PU/ERbSQkCWAANe2dZQWFkCGDwMXtkz47keg+dJt1psDF41fl67MXheZKvHVTd46D/6X/2Ux4uA/sdjGTsS+h+baJx46H8cjh5R1PXf45mJCYEmE2DA2+TuUXsLAQweBk/pSmDwlLrRWgsGT7M3GDzNvmRVqRs89B/9V7o96L9SN9B/3W50Vob+63ZJXf91yVEZBNIQYMCbhjtZHQhg8DB4DscqOCQGLxid+0YGvO6IgxJg8IKw1bJJ3eCh/+h/LRehYBL0vyCoBMvQ/wTQC6RE/wtASrREXf8TYSEtBGQJMOCVbQ2FlSWAwcPglT0znusxeJ50q8XG4FXj57Ubg+dFtnpcdYOH/qP/1U95vAjofzyWsSOh/7GJxomH/sfh6BFFXf89npmYEGgyAQa8Te4etbcQwOBh8JSuBAZPqRuttWDwNHuDwdPsS1aVusFD/9F/pduD/it1A/3X7UZnZei/bpfU9V+XHJVBIA0BBrxpuJPVgQAGD4PncKyCQ2LwgtG5b2TA6444KAEGLwhbLZvUDR76j/7XchEKJkH/C4JKsAz9TwC9QEr0vwCkREvU9T8RFtJCQJYAA17Z1lBYWQIYPAxe2TPjuR6D50m3WmwMXjV+XrsxeF5kq8dVN3joP/pf/ZTHi4D+x2MZOxL6H5tonHjofxyOHlHU9d/jmYkJgSYTYMDb5O5RewsBDB4GT+lKYPCUutFaCwZPszcYPM2+ZFWpGzz0H/1Xuj3ov1I30H/dbnRWhv7rdkld/3XJURkE0hBgwJuGO1kdCGDwMHgOxyo4JAYvGJ37Rga87oiDEmDwgrDVsknd4KH/6H8tF6FgEvS/IKgEy9D/BNALpET/C0BKtERd/xNhIS0EZAkw4JVtDYWVJYDBw+CVPTOe6zF4nnSrxcbgVePntRuD50W2elx1g4f+o//VT3m8COh/PJaxI6H/sYnGiYf+x+HoEUVd/z2emZgQaDIBBrxN7h61txDA4GHwlK4EBk+pG621YPA0e4PB0+xLVpW6wUP/0X+l24P+K3UD/dftRmdl6L9ul9T1X5cclUEgDQEGvGm4k9WBAAYPg+dwrIJDYvCC0blvZMDrjjgoAQYvCFstm9QNHvqP/tdyEQomQf8LgkqwDP1PAL1ASvS/AKRES9T1PxEW0kJAlgADXtnWUFhZAhg8DF7ZM+O5HoPnSbdabAxeNX5euzF4XmSrx1U3eOg/+l/9lMeLgP7HYxk7Evofm2iceOh/HI4eUdT13+OZiQmBJhNgwNvk7lF7CwEMHgZP6Upg8JS60VoLBk+zNxg8zb5kVakbPPQf/Ve6Pei/UjfQf91udFaG/ut2SV3/dclRGQTSEGDAm4Y7WR0IYPAweA7HKjgkBi8YnftGBrzuiIMSYPCCsNWySd3gof/ofy0XoWAS9L8gqATL0P8E0AukRP8LQEq0RF3/E2EhLQRkCTDglW0NhZUlgMHD4JU9M57rMXiedKvFxuBV4+e1G4PnRbZ6XHWDh/6j/9VPebwI6H88lrEjof+xicaJh/7H4egRRV3/PZ6ZmBBoMgEGvE3uHrW3EMDgYfCUrgQGT6kbrbVg8DR7g8HT7EtWlbrBQ//Rf6Xbg/4rdQP91+1GZ2Xov26X1PVflxyVQSANAQa8abiT1YEABg+D53CsgkNi8ILRuW9kwOuOOCgBBi8IWy2b1A0e+o/+13IRCiZB/wuCSrAM/U8AvUBK9L8ApERL1PU/ERbSQkCWAANe2dZQWFkCGDwMXtkz47keg+dJt1psDF41fl67MXheZKvHVTd46D/6X/2Ux4uA/sdjGTsS+h+baJx46H8cjh5R1PXf45mJCYEmE2DA2+TuUXsLAQweBk/pSmDwlLrRWgsGT7M3GDzNvmRVqRs89B/9V7o96L9SN9B/3W50Vob+63ZJXf91yVEZBNIQYMCbhrtU1h/9+BD7zm672xtvvG5f3myj2dbWr18/u/veBzq+f8cdt9vBBx042/U9evSwO+++z/r3nzdf8+qrr9gO223l9uwYPAye2+EKCIzBC4BW0xYGvDWBLpkGg1cSWI3L1Q0e+o/+13gdukyF/neJKNkC9D8Z+jkmRv81+5JVpa7/uuSoDAJpCDDgTcNdJuvAQYPs3vsesnnnndc++ugjW2XF5WZb24CBA23UE892fD8zVGustpK9/957s9yz51772uFHHtXxvbFjx9qwlZZ3e3YMHgbP7XAFBMbgBUCraQsGrybQJdNg8EoCq3G5usFD/9H/Gq9Dl6nQ/y4RJVuA/idDz4BXE32XVanrf5cPwAIItBkBBrxt1vDscddY83O2407ftGWXXc6Grbqa9erVK6dQdsCb7bnh+utsn712nyXFx5941gYOHMiA1/mMXXHKT+zhW6+z7BPTql+9es9j2+13mA3fbGvVEqPXhcGLjjRaQAxeNJRRAzHgjYozajB1g8eAF/2PeuArBkP/KwJ03I7+O8KtEBr9rwDPeau6/js/PuEh0DgCDHgb17LqBR/zs+PsO7t9b6ZAIQPeKVOm5J/KHTduXEu8bbbdzs4489yWP+MTvNV7N6sIDHh9uFaNisGrStBvPwbPj22VyBi8KvR896obPAa8DHh9b0C56Oh/OV51rkb/66RdPBf6X5xV3SvV9b9uHuSDgDoBBrzqHXKob+NNNrPdvtv5qdt11l3P5pprrlKf4H105CP5J4Gzr6t+d4X9+EcHtFR6/4MjbbHFFrd333nH+vXvb3379jUGvA7NNDMGvD5cq0bF4FUl6Lcfg+fHtkpkDF4Ver571Q0eA14GvL43oFx09L8crzpXo/910i6eC/0vzqruler6XzcP8kFAnQADXvUO1VDf46OfsexdvGU+wXv5ZZfYhhttnA9xP/nkE1tpyGCbOHFiXu26633errzq6vyfs1/Cln1imAGvXyMZ8PqxrRIZg1eFnu9eDJ4v39DoGLxQcv771A0eA14GvP63oHgG9L84q7pXov91Ey+WD/0vxinFKnX9T8GEnBBQJsCAV7k7NdUWOuB94G/32VnnnJ9XedGFF9gxRx2R//Mtt91lQ4YO7fjE7jPPv8KA17GXDHgd4VYIjcGrAM95KwbPGXBgeAxeILgatqkbPAa8DHhruAaFU6D/hVHVvhD9rx15oYTofyFMSRap638SKCSFgDABBrzCzamrtNAB7xGHHWyPjXraBi2wQP7p3SHLLWWDl13Wbr/j3rz0E35xrJ17zpnGgNe3kwx4ffmGRsfghZLz34fB82cckgGDF0Ktnj3qBo8BLwPeem5CsSzofzFOKVah/ymod50T/e+aUaoV6vqfigt5IaBKgAGvamdqrKvKgHeXXXeznx17fF7tiDNOs+HD17Hsnb4TJkywFVdYxjLTxYDXt5kMeH35hkbH4IWS89+HwfNnHJIBgxdCrZ496gaPAS8D3npuQrEs6H8xTilWof8pqHedE/3vmlGqFer6n4oLeSGgSoABr2pnaqyryoA3K/OpZ1+y/v375+/izX5ZW48ePeycs0fYiccflz/FnAa8Cw9ePdqTTpkyxd57/Uk7+caR0WI2IdCVpx5tz4wcaf0GLChb7oQPx9gWu+5lwzfbWrbG2IVlBu+8Q/eyeRdcKnboaPEm/muc9end0w4676poMZsQ6KQ9trdJn/S0ufv0ly133Luv2t4nnW+LLr2cbI2xC8sM3i2XXWB9BiwcO3S0eBPGvmtDP7eWff3Ao6PFbEKgzOAttPQw69Gjp2S56D/6r3Qw0X+lbrTWgv5r9gb91+xLVpWH/r/90mO6D0xlEGg4AQa8DW9gjPKrDngP+OFBduAPf9xRyqRJk2zo8kvb5MmT8z9jwBujS7OPwYDXl29odAxeKDn/fRg8f8YhGTB4IdTq2eNh8GJWzoCXAW/M81Q1FvpflaDffvTfj22VyOh/FXq+ez30nwGvb8+I3t4EGPC2d//zp6864O3Zs6c9+8Kr1rt37zzeby+/1A4/tHPgyysafA8Zr2jw5RsanR/RDCXnv48f0fRnHJKBH9EMoVbPHvUf0eQVDbyioZ6bUCwL+l+MU4pV6H8K6l3nRP+7ZpRqhbr+p+JCXgioEmDAq9qZGuuqOuDNSv35cSfYt3f5jmWfoll56LI2fvz4jidgwOvbTAa8vnxDo2PwQsn578Pg+TMOyYDBC6FWzx51g8eAlwFvPTehWBb0vxinFKvQ/xTUu86J/nfNKNUKdf1PxYW8EFAlwIBXtTM11hVjwJt9enf9DTayMW/9w0aPHtVSPQNe32Yy4PXlGxodgxdKzn8fBs+fcUgGDF4ItXr2qBs8BrwMeOu5CcWyoP/FOKVYhf6noN51TvS/a0apVqjrfyou5IWAKgEGvKqdqbGuGAPeOZXLgNe3mQx4ffmGRsfghZLz34fB82cckgGDF0Ktnj3qBo8BLwPeem5CsSzofzFOKVah/ymod50T/e+aUaoV6vqfigt5IaBKgAGvamcc65p77rltwICBHRluv/Nem3/++e3jjz+2Db+4Xsefv//+ex2/KC37wwEDB9qoJ57Nv3/5ZZfYEYcdXKhKBryFMAUvYsAbjM51IwbPFW+l4Bi8SvjcNmPw3NBWDqxu8BjwMuCtfMgjBkD/I8KMHAr9jww0Ujj0PxJIhzDq+u/wyISEQKMJMOBtdPvCij/mp8fad767e5ebR5xxmp168okd6xjwdoksyQIGvEmwd5kUg9clomQLMHjJ0M8xMQZPsy9ZVeoGjwEvA16l24P+K3WjtRb0X7M36L9mX5qg/7rkqAwCaQgw4E3DPWnWo4/5ue32vT26rOGM00+10045qWNd9inf0U89n//7ZZdebEcefkiXMbIF0z7B++GHH9qqK69QaE/IIgweBi/k3HjtweB5ka0eF4NXnaFHBAyeB9U4MRnwxuEYOwr/gTc20Tjx0P84HD2ioP8eVKvHRP+rM/SKoK7/Xs9NXAg0lQAD3qZ2jrpnIsCAlwGv0rXA4Cl1o7UWDJ5mbzB4mn3JqlI3eOg/+q90e9B/pW6g/7rd6KwM/dftkrr+65KjMgikIcCANw13sjoQwOBh8ByOVXBIDF4wOveNDHjdEQclwOAFYatlk7rBQ//R/1ouQsEk6H9BUAmWof8JoBdIif4XgJRoibr+J8JCWgjIEmDAK9saCitLAIOHwSt7ZjzXY/A86VaLjcGrxs9rNwbPi2z1uOoGD/1H/6uf8ngR0P94LGNHQv9jE40TD/2Pw9Ejirr+ezwzMSHQZAIMeJvcPWpvIYDBw+ApXQkMnlI3WmvB4Gn2BoOn2ZesKnWDh/6j/0q3B/1X6gb6r9uNzsrQf90uqeu/Ljkqg0AaAgx403AnqwMBDB4Gz+FYBYfE4AWjc9/IgNcdcVACDF4Qtlo2qRs89B/9r+UiFEyC/hcElWAZ+p8AeoGU6H8BSImWqOt/IiykhYAsAQa8sq2hsLIEMHgYvLJnxnM9Bs+TbrXYGLxq/Lx2Y/C8yFaPq27w0H/0v/opjxcB/Y/HMnYk9D820Tjx0P84HD2iqOu/xzMTEwJNJsCAt8ndo/YWAhg8DJ7SlcDgKXWjtRYMnmZvMHiafcmqUjd46D/6r3R70H+lbqD/ut3orAz91+2Suv7rkqMyCKQhwIA3DXeyOhDA4GHwHI5VcEgMXjA6940MeN0RByXA4AVhq2WTusFD/9H/Wi5CwSTof0FQCZah/wmgF0iJ/heAlGiJuv4nwkJaCMgSYMAr2xoKK0sAg4fBK3tmPNdj8DzpVouNwavGz2s3Bs+LbPW46gYP/Uf/q5/yeBHQ/3gsY0dC/2MTjRMP/Y/D0SOKuv57PDMxIdBkAgx4m9w9am8hgMHD4CldCQyeUjdaa8HgafYGg6fZl6wqdYOH/qP/SrcH/VfqBvqv243OytB/3S6p678uOSqDQBoCDHjTcCerAwEMHgbP4VgFh8TgBaNz38iA1x1xUAIMXhC2WjapGzz0H/2v5SIUTIL+FwSVYBn6nwB6gZTofwFIiZao638iLKSFgCwBBryyraGwsgQweBi8smfGcz0Gz5NutdgYvGr8vHZj8LzIVo+rbvDQf/S/+imPFwH9j8cydiT0PzbROPHQ/zgcPaKo67/HMxMTAk0mwIC3yd2j9hYCGDwMntKVwOApdaO1FgyeZm8weJp9yapSN3joP/qvdHvQf6VuoP+63eisDP3X7ZK6/uuSozIIpCHAgDcNd7I6EMDgYfAcjlVwSAxeMDr3jQx43REHJcDgBWGrZZO6wUP/0f9aLkLBJOh/QVAJlqH/CaAXSIn+F4CUaIm6/ifCQloIyBJgwCvbGgorSwCDh8Ere2Y812PwPOlWi43Bq8bPazcGz4ts9bjqBg/9R/+rn/J4EdD/eCxjR0L/YxONEw/9j8PRI4q6/ns8MzEh0GQCDHib3D1qbyGAwcPgKV0JDJ5SN1prweBp9gaDp9mXrCp1g4f+o/9Ktwf9V+oG+q/bjc7K0H/dLqnrvy45KoNAGgIMeNNwJ6sDAQweBs/hWAWHxOAFo3PfyIDXHXFQAgxeELZaNqkbPPQf/a/lIhRMgv4XBJVgGfqfAHqBlOh/AUiJlqjrfyIspIWALAEGvLKtobCyBDB4GLyyZ8ZzPQbPk2612Bi8avy8dmPwvMhWj6tu8NB/9L/6KY8XAf2PxzJ2JPQ/NtE48dD/OBw9oqjrv8czExMCTSbAgLfJ3aP2FgIYPAye0pXA4Cl1o7UWDJ5mbzB4mn3JqlI3eOg/+q90e9B/pW6g/7rd6KwM/dftkrr+65KjMgikIcCANw13sjoQwOBh8ByOVXBIDF4wOveNDHjdEQclwOAFYatlk7rBQ//R/1ouQsEk6H9BUAmWof8JoBdIif4XgJRoibr+J8JCWgjIEmDAK9saCitLAIOHwSt7ZjzXY/A86VaLjcGrxs9rNwbPi2z1uOoGD/1H/6uf8ngR0P94LGNHQv9jE40TD/2Pw9Ejirr+ezwzMSHQZAIMeJvcPWpvIYDBw+ApXQkMnlI3WmvB4Gn2BoOn2ZesKnWDh/6j/0q3B/1X6gb6r9uNzsrQf90uqeu/Ljkqg0AaAgx403AnqwMBDB4Gz+FYBYfE4AWjc9/IgNcdcVACDF4Qtlo2qRs89B/9r+UiFEyC/hcElWAZ+p8AeoGU6H8BSImWqOt/IiykhYAsAQa8sq2hsLIEMHgYvLJnxnM9Bs+TbrXYGLxq/Lx2Y/C8yFaPq27w0H/0v/opjxcB/Y/HMnYk9D820Tjx0P84HD2iqOu/xzMTEwJNJsCAt8ndo/YWAhg8DJ7SlcDgKXWjtRYMnmZvMHiafcmqUjd46D/6r3R70H+lbqD/ut3orAz91+2Suv7rkqMyCKQhwIA3DXeyOhDA4GHwHI5VcEgMXjA6940MeN0RByXA4AVhq2WTusFD/9H/Wi5CwSTof0FQCZah/wmgF0iJ/heAlGiJuv4nwkJaCMgSYMAr2xoKK0sAg4fBK3tmPNdj8DzpVouNwavGz2s3Bs+LbPW46gYP/Uf/q5/yeBHQ/3gsY0dC/2MTjRMP/Y/D0SOKuv57PDMxIdBkAgx4m9w9am8hgMHD4CldCQyeUjdaa8HgafYGg6fZl6wqdYOH/qP/SrcH/VfqBvqv243OytB/3S6p678uOSqDQBoCDHjTcCerAwEMHgbP4VgFh8TgBaNz38iA1x1xUAIMXhC2WjapGzz0H/2v5SIUTIL+FwSVYBn6nwB6gZTofwFIiZao638iLKSFgCwBBryyraGwsgQweBi8smfGcz0Gz5NutdgYvGr8vHZj8LzIVo+rbvDQf/S/+imPFwH9j8cydiT0PzbROPHQ/zgcPaKo67/HMxMTAk0mwIC3yd2j9hYCGDwMntKVwOApdaO1FgyeZm8weJp9yapSN3joP/qvdHvQf6VuoP+63eisDP3X7ZK6/uuSozIIpCHAgDcNd7I6EMDgYfAcjlVwSAxeMDr3jQx43REHJcDgBWGrZZO6wUP/0f9aLkLBJOh/QVAJlqH/CaAXSIn+F4CUaIm6/ifCQloIyBJgwCvbGgorSwCDh8Ere2Y812PwPOlWi43Bq8bPazcGz4ts9bjqBg/9R/+rn/J4EdD/eCxjR0L/YxONEw/9j8PRI4q6/ns8MzEh0GQCDHib3D1qbyGAwcPgKV0JDJ5SN1prweBp9gaDp9mXrCp1g4f+o/9Ktwf9V+oG+q/bjc7K0H/dLqnrvy45KoNAGgIMeNNwJ6sDAQweBs/hWAWHxOAFo3PfyIDXHXFQAgxeELZaNqkbPPQf/a/lIhRMgv4XBJVgGfqfAHqBlOh/AUiJlqjrfyIspIWALAEGvLKtobCyBDB4GLyyZ8ZzPQbPk2612Bi8avy8dmPwvMhWj6tu8NB/9L/6KY8XAf2PxzJ2JPQ/NtE48dD/OBw9oqjrv8czExMCTSbAgLfJ3aP2FgIYPAye0pXA4Cl1o7UWDJ5mbzB4mn3JqlI3eOg/+q90e9B/pW6g/7rd6KwM/dftkrr+65KjMgikIcCANw13sjoQwOBh8ByOVXBIDF4wOveNDHjdEQclwOAFYatlk7rBQ//R/1ouQsEk6H9BUAmWof8JoBdIif4XgJRoibr+J8JCWgjIEmDAK9saCitLAIOHwSt7ZjzXY/A86VaLjcGrxs9rNwbPi2z1uOoGD/1H/6uf8ngR0P94LGNHQv9jE40TD/2Pw9Ejirr+ezwzMSHQZAIMeJvcPWpvIYDBw+ApXQkMnlI3WmvB4Gn2BoOn2ZesKnWDh/6j/0q3B/1X6gb6r9uNzsrQf90uqeu/Ljkqg0AaAgx403AnqwMBDB4Gz+FYBYfE4AWjc9/IgNcdcVACDF4Qtlo2qRs89B/9r+UiFEyC/hcElWAZ+p8AeoGU6H8BSImWqOt/IiykhYAsAQa8sq2hsLIEMHgYvLJnxnM9Bs+TbrXYGLxq/Lx2Y/C8yFaPq27w0H/0v/opjxcB/Y/HMnYk9D820Tjx0P84HD2iqOu/xzMTEwJNJsCAt8ndo/YWAhg8DJ7SlcDgKXWjtRYMnmZvMHiafcmqUjd46D/6r3R70H+lbqD/ut3orAz91+2Suv7rkqMyCKQhwIA3DXeyOhDA4GHwHI5VcEgMXjA6940MeN0RByXA4AVhq2WTusFD/9H/Wi5CwSTof0FQCZah/wmgF0iJ/heAlGiJuv4nwkJaCMgSYMAr2xoKK0sAg4fBK3tmPNdj8DzpVouNwavGz2s3Bs+LbPW46gYP/Uf/q5/yeBHQ/3gsY0dC/2MTjRMP/Y/D0SOKuv57PDMxIdBkAgx4m9w9am8hgMHD4CldCQyeUjdaa8HgafYGg6fZl6wqdYOH/qP/SrcH/VfqBvqv243OytB/3S6p678uOSqDQBoCDHjTcCerAwEMHgbP4VgFh8TgBaNz38iA1x1xUAIMXhC2WjapGzz0H/2v5SIUTIL+FwSVYBn6nwB6gZTofwFIiZao638iLKSFgCwBBryyraGwsgQweBi8smfGcz0Gz5NutdgYvGr8vHZj8LzIVo+rbvDQf/S/+imPFwH9j8cydiT0PzbROPHQ/zgcPaKo67/HMxMTAk0mwIC3yd2j9hYCGDwMntKVwOApdaO1FgyeZm8weJp9yapSN3joP/qvdHvQf6VuoP+63eisDP3X7ZK6/uuSozIIpCHAgDcNd7I6EMDgYfAcjlVwSAxeMDr3jQx43REHJcDgBWGrZZO6wUP/0f9aLkLBJOh/QVAJlqH/CaAXSIn+F4CUaIm6/ifCQloIyBJgwCvbGgorSwCDh8Ere2Y812PwPOlWi43Bq8bPazcGz4ts9bjqBg/9R/+rn/J4EdD/eCxjR0L/YxONEw/9j8PRI4q6/ns8MzEh0GQCDHib3D1qbyGAwcPgKV0JDJ5SN1prweBp9gaDp9mXrCp1g4f+o/9Ktwf9V+oG+q/bjc7K0H/dLqnrvy45KoNAGgIMeNNwJ6sDAQweBs/hWAWHxOAFo3PfyIDXHXFQAgxeELZaNqkbPPQf/a/lIhRMgv4XBJVgGfqfAHqBlOh/AUiJlqjrfyIspIWALAEGvLKtobCyBDB4GLyyZ8ZzPQbPk2612Bi8avy8dmPwvMhWj6tu8NB/9L/6KY8XAf2PxzJ2JPQ/NtE48dD/OBw9oqjrv8czExMCTSbAgLfJ3aP2FgIYPAye0pXA4Cl1o7UWDJ5mbzB4mn3JqlI3eOg/+q90e9B/pW6g/7rd6KwM/dftkrr+65KjMgikIcCANw13sjoQwOBh8ByOVXBIDF4wOveNDHjdEQclwOAFYatlk7rBQ//R/1ouQsEk6H9BUAmWof8JoBdIif4XgJRoibr+J8JCWgjIEmDAK9saCitLAIOHwSt7ZjzXY/A86VaLjcGrxs9rNwbPi2z1uOoGD/1H/6uf8ngR0P94LGNHQv9jE40TD/2Pw9Ejirr+ezwzMSHQZAIMeJvcPWpvIYDBw+ApXQkMnlI3WmvB4Gn2BoOn2ZesKnWDh/6j/0q3B/1X6gb6r9uNzsrQf90uqeu/Ljkqg0AaAgx403AnqwMBDB4Gz+FYBYfE4AWjc9/IgNcdcVACDF4Qtlo2qRs89B/9r+UiFEyC/hcElWAZ+p8AeoGU6H8BSImWqOt/IiykhYAsAQa8sq2hsLIEMHgYvLJnxnM9Bs+TbrXYGLxq/Lx2Y/C8yFaPq27w0H/0v/opjxcB/Y/HMnYk9D820Tjx0P84HD2iqOu/xzMTEwJNJsCAt8ndE6594KBB9sH779daIQYPg1frgesiGQZPqRuttWDwNHuDwdPsS1aVusFD/9F/pduD/it1A/3X7UZnZei/bpfU9V+XHJVBIA0BBrxpuHfLrCecdKptvMmmtuCCC1mPHnXHo34AACAASURBVD3sk08+sbfe+odd+Jtf20W/+bX7M2PwMHjuh6xEAgxeCVg1L2XAWzPwgukweAVBJVimbvDQf/Q/wbWYbUr0X6kbDHh1u8GAtwm9Udf/JjCkRgjUSYABb520u2munj172rXX32zDhq062ye8+KLf2NE/OdyVAAYPg+d6wEoGx+CVBFbjcga8NcIukYoBbwlYNS9VN3joP/pf85WYYzr0X6kbDHh1u8GAtwm9Udf/JjCkRgjUSYABb520u2muM8/+lW219Tb503388cf2p6v/YI8/9qh9cf0N7atbbW3ZADj7OuD7++bf8/rC4GHwvM5WSFwMXgi1evYw4K2Hc9ksDHjLEqtvvbrBQ//R//puQ9eZ0P+uGaVagf6nIj/nvOi/Zl+yqtT1X5cclUEgDQEGvGm4d6usz7/0uvXu3Tt/JcNG63/eXn/9tY7n+8qWX7Vzzrsg//fnn3vWNt14fbdnx+Bh8NwOV0BgDF4AtJq2YPBqAl0yDQavJLAal/8/9q46Popk+de7dwIcHOQOu8OdoME9EAju7g4Bgrs7wSUECAnu7kEDhOBO8AQ7DjvscA67e+/9Pt/e38ztJpvs7O7M7mRT9Q+b3Z7u6m9NdzE11d/S+wMe+3/2/w5cDhaHYv9vESKnNWD/7zTo4xyY/b8+7cIBXv3ahTVjBGJDgAO8fG/YhUDDRk1opv8c0cfWLZupTy/fGP0dPXGGMmbMJL4vVDAPvXzxwq4xY7uYH/D4AU+TG8vGTvkBz0bgHHAZP+A5AGQbhuAHPBtAc9AlHOB1ENBWDrN2+kg6G7pD1D3Qq3zzXSJq0GMoFa9SV68qqq4X+3/VIVWtQ/b/qkGpakfs/1WFU9XO9O7/VZ0sd8YIuAACHOB1ASM6cwrzgxdRjZq1hQqdO7aj0H17YqgzZdpMata8pfh+0IC+tH7dGk1U5gAvP+BpcmPZ2Ck/4NkInAMu4wc8B4BswxD8gGcDaA66RO8PeOz/2f87aCkoGob9vyKYnNKI/b9TYLc4KPt/ixA5rYHe/b/TgOGBGQGdIsABXp0aJr6otXlrCBUtVlyomy1zOvr7779jqF6vQUOaHRAovg+YPZNmTJuiyfT4AY8f8DS5sWzslB/wbATOAZfxA54DQLZhCH7AswE0B12i9wc89v/s/x20FBQNw/5fEUxOacT+3ymwWxyU/b9FiJzWQO/+32nA8MCMgE4R4ACvTg0TX9Q6dPg4Zc2WXaibKX0as2pXqFCRlq9aK37btHE99e/bS5Pp8QMeP+BpcmPZ2Ck/4NkInAMu4wc8B4BswxD8gGcDaA66RO8PeOz/2f87aCkoGob9vyKYnNKI/b9TYLc4KPt/ixA5rYHe/b/TgOGBGQGdIsABXp0aJr6odT7iKqVMlYr++9//UpaMP5tVu6BHIdqxc6/47djRI9SyeWO5XZpshVSbKnR4cf8qTdt9XrU+40NH62aMpsjz5+n7FKl0q+6H10+oRruuCY6DL2hIV0qWKrNu7fL54ztK/N1XNCBog2511EKxqT4N6ctfX9G3iZNq0b0qfb57/ht1m7qAfsmSQ5X+4kMneMDbt3IRJU5h/mWhHubw4c1zci9ajJr2Ha0HdRymAx7wUmcpQP/611cOG9Oagdj/s/+35n7Rui0CvOz/tUbZtv7Z/9uGm9ZXsf/XGmHb+9fC/z+9E2G7QnwlI8AIxIkAB3j5BrELgYtXosjNzU1QM4CiwZzkzZuPdu87KH7SOsD7x70rVKWlj11zim8XXz99lF69eKPrAO+frx5TptzulD5brvgGr836vn35giLC91HytNls7kPrCxHgpb/eU4lq9bQeSlf9n9qzlb769gddB3jfPLlDhb2qUTK3H3WFnZbKPLgVSfdv3KDvfzT/slDLsZX2jQBvih+TU54S5ZRe4hLt9q0MotRZC+o6wMv+X5+3Gvt/fdqF/b9+X/Cy/9fnmmH/r94LXg7w6vMeZ61cAwEO8LqGHZ02i2Mnz1KGDBkJxyMzZ0hrVo+y5Txp9dqN4reQHduph+8/AVg1M3idBgIPzAgwAowAI8AIMAKMACPACDACjAAjwAgwAnEiwAFevkEYAe0Q4ACvdtgmiJ5DdodSgQIFxVxj4+CtXacuzQ1cINosCAokvwljZWw4wJsgbhOeJCPACDACjAAjwAgwAowAI8AIMAKMQAJHgAO8CfwG4OlrigAHeDWF1/U7X7p8FVWsVFlMtKp3BYqKiowx6UFDhlH3Hr3F96NHDadlSxa5PjA8Q0aAEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAEGAFGwAEIcIDXASC78hD9Bw6mXr37iSkGzZ9Lk/zGx5jurr0HKF++/OL7WtUr05Url10ZEp4bI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPgMAQ4wOswqF1zoGTJktGV67foX//6F7188YKKFMpHqGYtSfr0GejoiTP01Vdfid8LFczjmkDwrBgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAScgwAFeJ4DuakNu37mXPDwKiWlFXDhPQwb1F1QNpcuUpcD5C8ntR0MV+MB5ATRlkp+rTZ/nwwgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIOA0BDvA6DXrXGThHzpy0Y+c+SpIkiTyp//3vfyKrV5KHDx+Qt1c5+vjxo+tMnGfCCDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAg4GQEO8DrZAK4yfOrUaWjHrr3088+/mEwJgd5zZ89Qk0b1TKgbXGXePA9GgBFgBBgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRsCZCHCA15nou+DY33//PVXwqki5crvTmdOn6MTxYxzYdUE785QYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAE9IEAB3j1YQfWghFgBBgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAasR4ACv1ZDxBYwAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACOgDAQ7w6sMOrAUjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAJWI8ABXqsh4wsYAWUIJE6cmBo1bkq53fNQ0qTJ6O6vd2jpkoX05s0bZR1wK80QqFmrNnl4FKaff0lHz589pVWrVtCd27c0G487VoZA+vQZqGatOpQ7tzv993//pYgL52nN6pXM460MPk1b8ZrRFF6bOy9cpKjgvc+SJRu9e/eW9u3ZTYcPH7K5P75QHQTY/6uDoxa98F6mBar298n+334MteqB14xWyNrXL/t/+/DjqxkBV0WAA7yualmel9MQ+Ne//kUDBw+lzj7d6NtvvzXR43//+x/diIqixYuCacP6tU7TMaEOXLtOXRo/YTK5/fhjDAiePn0ibDJn9iz6/PlzQoXIKfNOnjw5zZgVQN6VqxLWj7H8/fffdPrUSZo1cxqdPXPaKfol5EF5zejT+ngJMnvOfMrt7h5Dwffv39P+fXtp2tRJ9OjRQ31OwEW1Yv+vX8PyXqZP27D/16ddoBWvGX3ahv2/Pu3CWjECekGAA7x6sQTr4RIIZMiQkfaEhlGyZMlM5vPXX3/RN998Y/JdVGQkNW5Yh96+fesSc9fzJPDQvTf0UIxgyH//+1+h9ldffSWrD3u0aNqQrly5rOcpuYxu9eo3oBmz5tDXX39tcc1s2rie+vft5TJz1/NEeM3o1zqTp86g5i1amSiIl4d4GWLsZ7C/DRsykNauWaXfybiQZuz/9WlM3sv0aRdoxf5fn7bhNaNPu0Ar9v/6tQ1rxgjoBQEO8OrFEqxHvEcA2bqnz16kH3/6ScwFD9zbtm6hUSOGiCDuDz/8QF19e1CLlm3Izc1NtPnw4QPVr1ODoqIi4/389TyBlavXk2f5CrKKCN727N5V0GYguNuseUvq0LEz5ciZS7YdAiOgB2DRDoFcuXOLwLsUYP/y5QtNnzpZZLgjWJUlazbq3bsf1axdR86Gv3//HlWqUJbQlkU7BHjNaIetPT2369CJxo7zk7v44/lzGtC/Dx0KOyC+K1vOk3y796LSZcrK2fDbt22lXj262jMsX2sBAfb/+r1FeC/Tp23Y/+vTLtCK14w+bcP+X592Ya0YAb0hwAFevVmE9Ym3CGzbsZsKFS4i9EdAt1aNKnTvt7sx5oNg1sbN26loseLit3fv3lGp4oXEvyzqI9Cn7wDq23+g6BhB984d29H+0L1mBxo8dLgIjkhtGzWoQ+fOnlFfKe5RZLmfPBMhZ7tfvXqFGtWvTR8/foyBTrp06WnXnv0ytcbFixFUt1Y1RlEjBHjNaASsnd2Cb2/Ltp1y4Hbp4oU0ZvQIs71WrFSZFi5eJmfGg+LEf+Z0OzXgy2NDgP2/Pu8N3sv0aRf2//q0C7TiNaNP27D/16ddWCtGQI8IcIBXj1ZhneIdAn36DaC+/QxBRByLrVbFS3DtxiXTZvhTk6bNRZPbt25SJa9y8W7eele4QIGCFLI7VFZz9KjhtGzJojjVxpFB/4BAEUT59OkTlSpRmF6+eKH3qcY7/bbv3EseHoWE3q9evqTiRQvGmZX73Xff0d7QMMqaLbu4ZsXypTRy+JB4N2+9K8xrRp8WwovBa1F3KEmSJELBo0cOU6sWTeJUNlv2HLRzd6h8Tbs2LeVMX33OMn5qxf5fn3bjvUyfdoFW7P/1aRteM/q0C/t/fdqFtWIE9IoAB3j1ahnWK94ggEBg1K3fKFGiRELngf37KC6gdvbCZUqdOo24rnSJIlwQR2Wr79p7gPLlyy96RdZupw5tFY0QvHAJVateU7QdN3YULV4YrOg6bqQMgTx58gquagioGCpWKGs22z16b6A/OR9xVVA6IOM9n7sh2MuiHgK8ZtTDUs2eBgwaQj179RVdPn/2TLwQkTjE4xoHL6xQjA1y8sRxatakgZpqJfi+2P/r9xbgvUyftmH/r0+7QCteM/q0Dft/fdqFtWIE9IoAB3j1ahnWK94g0KGTD40eM17o++TJYypR1EOx7pW8q9CSZSspPDyM2rYyZPOyqIMAAucIoENAzZA3dzb6888/FXUOvuSIy5H07u1b8igQs0q9ok64UawIrF2/WXCEQkJ2bKcevj6K0ZrlP5caNGpMQwcPYI5kxagpa8hrRhlOzmh15fotweMO6erTkfbs3qlYjeOnzhFoTsqWKkYPHz5QfB03tIwA+3/LGDmjBe9lzkBd2Zjs/5Xh5OhWvGYcjbjy8dj/K8eKWzICjAARB3j5LmAE7ERgW8geKlSosOhl5vSpNNt/hlU9LlqynPr37UVv3ryx6jpuHDcCxjxiERfOU706NayCrN+AQXQxIoLCDu636jpubBmByJt35WPjFTxLi2J3SiVx4sQUGLyI2rdpqfQSbqcQAV4zCoFycLOMGTPR0RMGLnAU5nTPmcUqDUqULEVVqlSj8eNGW3UdN7aMAPt/yxg5owXvZc5AXdmY7P+V4eToVrxmHI24svHY/yvDiVsxAozAPwhwgJfvBkbATgQuXb1BKVKkEMdlc+fITJ8/f7azR75cDQSMqwCDmiG2wmpqjMV9KEfg66+/pju/PRIXPHr0UFCTsOgDAV4z+rBDdC1at2lHEyZOEV9v27qFevfspk9FE6BW7P/1aXTey/RpF/b/+rQLtOI1o0/bsP/Xp11YK0ZAzwhwgFfP1mHd4gUCEZeuE7hBbcmsMp5g2XKe1K//IOrezYceP/49Xsxdz0qC+gIUGBB7+I1R7Xnj5h00dswIwWHJYj8C9x4+FZ3YklltPPrgocMpVarUNGzIwDgLtNmvccLogdeMPu3cqHFTmjErQChnyykR41nhIT4s7AAtXbxQn5ONZ1qx/9enwXgv06ddoBX7f33ahteMPu3C/l+fdmGtGAE9I8ABXj1bh3WLFwicOX+J0qRJS58+faJc2TPZrPO5C1coVerUIhMYxaOU8sXaPKCLXzhv/gKqVbuumGW50sXp/v17Ns144eJlVKVqdXFtl84daO+eXTb1wxf9g4D0gHf58iWqXcMQhLdWwBd3+txFUXANvKJlSha1tgtuHw0BXjP6vCVq1qpNgUGLhHKgAEKQ1xap36AR+QfME5du2bSR+vbpYUs3fI0RAuz/9Xk78F6mT7tAK/b/+rQNrxl92oX9vz7twloxAnpGgAO8erYO6xYvEAg/epKyZMkqCnkhyIRj59aKb/dehGxEyNkzp6lRgzrWdsHtoyEweeoMat6ilfh29KjhtGyJIUBijeTImZP2HzxCqJT+7t07yp8nh7Azi30I3L3/WARmwTtdIG9OmzrbvDWEihYrLq6dOGEcBQcZAlcstiPAa8Z27LS8slTpMrRuwxYxxPFjR6lFs0ZWD4f1hkItSZMmFXtY5UqedOvmTav74QtMEWD/r887gvcyfdoFWrH/16dteM3o0y7s//VpF9aKEdAzAhzg1bN1WLd4gUCLlq1p0pTpQtcjh8OpdcumVumNolGXr92kb7/9VmTvlijqQc+eGY6ws9iOwM8//0Inz1wQwdnXr19TwXy5rO7sQNgRypHTcB14L8F/yWI/AstXraUKFSqKjkYMG0wrVyyzqlMUjdqwaZu4BmulWOECVl3Pjc0jwGtGv3fGxStR5ObmJoKzpYoXtprGZ8w4P2rfoZOY4L69u8mnU3v9TjYeacb+X5/G4r1Mn3aBVuz/9WkbXjP6tAu0Yv+vX9uwZoyAHhHgAK8ercI6xTsEzl64TDgyjofvUSOG0orlSxXPwfhYFAJdCHiZE/DJXrhwjl69fKm474TecH7wIqpRs7aAAdQKoFhQKrXr1KW5gQtE81/v3Cav8mXMXpo7t7sIzoNugEUZAuCsPh9xVWTxoihho/q1rcJPOhaN0Zo3bUgnjh8zOzCOpG/ftkW8OGFRhgCvGWU4ObpV3Xr1KWBukBgWlCTVq1Skt2/fKlLDeL19+fKFPPLnNksB9N1331GVqtUoZMd2Rf1yIwMC7P/1eSfwXqZPu7D/16ddoBWvGX3ahv2/Pu3CWjECekWAA7x6tQzrFa8QKF/eS2QlIFsUsnXzJho5Yog41h+XZMmajQ4dPi6uA+cuuHfNBaNSuLnJAbEZ06bQ3Dn+8QofZyn7ww8/0KmzF+n7778XKkRFRlKnDm3owYP7caoEeyCrGtdDqnpXoKioSLPXnDh9ntKlSy8KF7Vv09JZU4134w4fMZp8uvoKvXHPjxs7StBoWKLA6Ni5C40aPU5cF1eRtmrVa1LwwiX0/v176tK5PR07eiTeYeQMhXnNOAN1ZWPuCQ2jPHnyisbwLZ07tlVU+BH0DjjmCZk+dTLNCZhldkD/gECq36Ah3bv3G9WrU4NevnihTLEE3or9vz5vAN7L9GkXaMX+X5+24TWjT7tAK/b/+rUNa8YI6A0BDvDqzSKsT7xFwKNQYVq7fjMlSZJEzAGBqhtRUbR27Sq6euUyJU+egrJmy0aLFwbLQdx9+8Mpt7u7aD+wfx/asH6t2fmvWrOBynmWF78FzJ5JCPKyKEMAwfEdO/dSpkyZ5QuePHlMWzZvFJQaCObmyJGTwsMP0b3f7oo2xg8fBw+EUod2rc0O1qZtexrvN1n8duXKZapVvbIypbiVQKBdh040ZuwE+cXIX3/9RWdOn6K1a1bSo0ePKF26dPTtt9/R5k0bRHtkGIJHFP9aOqp+6eoNSpEihbgOdoF9WJQhwGtGGU7OaGWcYYXxEeg9ELqPtm3dTH9++FPwwf/++yP5hUbhIkVp63ZDYUgEbAsVzGNW7YwZM9GR46fFWvzw4YPgG//777+dMcV4OSb7f32ajfcyfdqF/b9+7cJrRr+2Yf+vX9uwZoyAnhDgAK+erMG6xHsE8B+jLVtDKFv2HGbn8sfz51SkUD7xW8VKlWnp8lXi8/3796hcaUPBqOhSoEBBCtkdKr5+9eqVOF7LYj0CgUELqWYt88XrkEEKXksEfpMlSyb4rr7++mtCwLFwwTxmj0KDlgHBxkSJEolgY9lSxcTRaRbrEEAAasWqdQJ3c7I/dC916tBW/DRjVgA1amzguF6/bg0NGtDX7DWDhgyj7j16i98OHz5EbVo2s04pbi0Q4DWjzxuhfcfONGLkGLFHmZN+fXrKL0WOnzpH6dNnEM3atmpO4eFhZq/ZtfcA5cuXX/w2fOggWrVyuT4nr2Ot2P/r1zi8l+nTNuz/9WkX9v/6tQv7f/3ahjVjBPSCAAd49WIJ1sOlEChbzpMGDBoqHpi/+eYbeW6tWzSlI0fCxd/G2bv169akC+fPmcXg2MmzlCFDRvEbAl0IeEmC41TI7P3z/Z909uxps7yKLgWsnZMBjmPGTaCSpcqIavKSrF61goYNGSj+HDlqLHXy6So+L1m0gMaOGWl21OkzZ1PjJobA4ZZNG6lvnx4m7Qp6FKKMGTMKageuVm/ZcMjmbde+I2XOnMUko7dQAXeRpYjMwpt37gu+Y/CIuufMYjbDEGsi4nKkCH4hAxEB+jdv3vCasWwCsy0ctWbAx+zpWYESJU5MFyMuiJctLLEjgOKcw0aMpurVa1Kq1Knlhnfv/koVypUSf2MPwukFyM0bUVS5kuEUSHQxftmIl1RlShY1aYJ7oHCRIvT777/TubNnLNKoJHS7sf/X5x3gqL1MWnvs/5XfB+z/lWPlyJaOWjPs/62zKvt/6/Di1oxAQkOAA7wJzeI8X4cjAH5WPBx//fU3tHXLJjF+8uTJBccr5O6vd6iCZ2mzejVv0YomT50hfrt+/ZoorCPJnHnBVKduPflvZJGCk3TM6BF06WKEw+cZ3wZEILBI0eKUJWtWwf0qcR9fvBxJbj/+KIKDubJnMhtEhE2RGYeg46dPn8RxZgQdISi6tmlriElG6uvXr2nd2lU0eeIEDo4ouFGAYd58+enx49/lAmrGawHZhcgyNCdLV6ymihW9xU+B8wJoyiQ/XjMKMFfSRKs107pNOxozzs8kIxWnGmZOnyrvmUr0S6ht8DKjUOEiYu85cuSwTDWzbOUa8vKqJGBp1KAOnT1z2ixE0p6HH+vWri4C7BBQoewNDaOs2bLL12Gfw0vGEcOHMEevghuO/b8CkJzQRKu9jP2//cZk/28/hlr0oNWaYf9vn7XY/9uHH1/NCLgiAhzgdUWr8px0jwCKq4UfOSH0NJf9ie/htBEERoEwBG/LlyslP7gPGz6KunTrLs8Tv0sF3vAZRdhQTMec4E156tRpOEMulrsEWaIIbJjLZJMu2RayhwoVKiz+REB96eKF4jPeqoPeAbQN5uTp0yfUoG6tWKkccJSaaR7MG2bAoCHUs5eBkqFdm5Z0KOxAjIYoQIVCFBBk7RbIm1NuY8+aSZkyFb1795Y+f/6s+73FGQras2ZQ/Avc5cb7l/QZczlx/Bi1btk0Vj5YXjOxW1yiXYBPyJwhrdmGffoOoL79DacXgHXzpg3ldsanTKJfjEBvl84dKOzgfrP9sl1itwv7f2fsUsrGtGcvY/+vDGNbWrH/twU1x1xjz5ph/6+djdj/a4ct98wI6B0BDvDq3UKsn0sigIdfZIBCENADfysewo1l4uRp1LJVG/HVju3bqGf3LvLPkTfvimJuyDodOXwIbdywjtq170T9BgySg4u7d4VQty6dYuDnN2mq6Hfr5k00cEAfLqQTDSEJW2TwFitSIEaWGo6Rr1yzXlyFDNOSxQrJPfTu01/YABIVGUktmzemX375hYYOH0Wly5QV34PXt2plL7pz+5bJyDjWu3rtRoqIuEBdO3fgAHw0uyC4i4c8yNYtm6lPL98Y93b40ZOiyBTEt2sn2rUzRJU1g5cxv6RLT5MnTRC0HSymCNizZrbt2C2yTyHr1q4WmdlVq1Wn4SPHELIfpXWGPTJ60S9eM3HficbYolAkCkYaC3ivQWcCGiH4ksIeeenVy5eiCYquHT1xRnx++/YttW3dnH5/9Ih69u4r/IcUhAcPNviwzfX76tVL6uHbhU6fOslLxggB9v/6vR3s2cvY/2tnV/b/2mFrb8/2rBn2//aiH/v17P+1w5Z7ZgT0jgAHePVuIdbPZRHAwzMeoiGPHj2kKZMmUMiO7eJBO23an+nkmQuEbFtkDYICwDh78LcHT8QD9vNnz6hoYUNhHAgyDfeEHhQZuhAccZ7tb6B4gOD70+cuin6RgZXPPTtnJUa7w6bN8KcmTZuLb0G/AAzXrlkpF1o7H3GVUqZKJX6Pfux5lv9catCosfitdy9f2rZls9y78QMKOGWLFc5PHz9+lH8/d+GKzKUZ13Fql10QFiaG7KirkbflY/zINpw5Y6p87LxhoyY003+O6MUc36ita6Z+g0bkHzAv1n4Tqj2M523PmjEuAoYsU+lFF/a3VWs2EIK4ENDP1KtTwwRuXjNx330VKlSk5avWikbAFdQmC4ICRVFPyKIly6lylWric3S+ca+K3rRsxWrxW+i+PdS5Yzt5MLysWr5yreDDRr8N6tUy4ZBfuHgZVala3Wy/vF4MCLD/1+edYM9exv5fO5uy/9cOW3t7tmfNsP+3F/3Yr2f/rx223DMjoHcEOMCrdwuxfi6LQI6cOWnr9t0mXK14WEbgFRlVCMJC/MaPpQXBgSY4GHMmRg8kgl4ANAHI8J04YRwFB82jps1aUP4CBSlv3nyEqsUQ6TeXBdjGiQG/nbtDKWeu3CY9IMD+73//Ww4wnjl9iho3rGvSxpgnFkWikN1rnJndf+Bg6tW7nygahqA9Clggozry+jWZcgM8mQjwssREoF6DhoSHaGltoAWyOv/zn/8IWg0I8K7kVS5GhrS1a0ayC7KvUZAP/Vau5MkF88zcmPasGWOe2J0h26l7Nx+TEXbu2U/58xcQgXysC7wU4zWjfHeYMm0mNWve0uQCiS8cAVqItB8Z71XgIY+4dF28SMQaK1+2pAl9jFTAzXhdrFy9nrZv20Ioi5n22gAAIABJREFUQInrzPWrXHPXbsn+X5/2tWcvY/+vrU3Z/2uLr62927Nm2P/birqy69j/K8OJWzECroYAB3hdzaI8n3iFAIoWjB03kbwqeZObm1sM3Z89e0rFCheI8b1xtiIyfsGFiCwrSarXqEVjx/tR8SIFRZbVleu3THhho2f+xivQHKRsn34DqHGTZoTjtNEFmMMuf/zx3OQnBDWQIZ0mjYHv8urVK1S3VjWTo+UnTp+nqZP9aNvWLbR730ERdJcE/ZYo6kGwO4t5BMCzi6BriZKl5KCuccu9e3aJ9RBdrFkzUvDKuI99e3eTT6f2bJY4ELBlzSBge+jICfnFCfiswWstCU4lHD52SgQYsd54zVh/C9auU5e6+vYkrB3jlyNST717dhP7UXSZH7yIatSsLb4GTQOKfBpzhM+eM58SJfpOrLfBQ4eTb/deJl3E1q/1M3DNK9j/69eutuxl7P+1tyf7f+0xtnUEW9YM+39b0VZ+Hft/5VhxS0bAVRDgAK+rWJLnEe8RQFE1PHwfO3lWDhCi4A2OokOSJ08uCkdJMnrMeOrQyZDthiyqsWNGysW+8B36QsAQAd65gcFUtdo/x5sR4G3ftiVduXI53uOm9QTw0IaiaTNmBVDNWobM2pUrltGIYYPFZ+CLNhKFBug1DoYfE1mfENBvVKvsJVM8SHbBb6BtAGevFHRBZt2QQf1p86YNWk/LJfpH5oib248ynQnw88ifm/7880+71gwyq8GzLPH5ojNkkHbq2JZev3rlEthpOQlLayb6XlbJuwotXrpC5nXdH7qXOnVoK6vIa0Y9a6Fop3flKhQwN0h0+uud2+RVvow8QHTb7A09RO558ojfscfh1MKlixFye9ga/geUDvPmLxBFQSVBsB5+KTq/vHqzcZ2e2P/r05aW9jL2/86zG/t/52Ef18iW1gz7f+fZjf2/87DnkRkBRyLAAV5Hos1jMQIKEMAR9PoNGwnOyfp1a4orkMUGTt4a1SqZHBE35nVFuz69utPWLZtijNKxcxcaNXpcjO8PHz5EPX27mASOFaiYIJu0adueRowaK7JxwV2M4DkkMGghpUqV2oSu4ceffqLQ/eEypy6CvCgSJV0jAYhq6ocOH5cDW9L3d+/+Sr5dOtH169cSJNbWTBpYL12+mjw8CtG0KZNo7hx/VdbMug1bCBWejQW2B1fpRL9xHLRSYKTY1syZ85do0YJgE+oZYI0j/qCngUQvLMlrRgHgCpsULVacgoIXi/2pind5uhEVJa5Eps/EydOpYL5cJnvV2vWbTYpEVixfRubxlYbEQ/3lazcJWanGApqGEcMGmc0QVqhugmrG/l+f5mb/r0+7sP/Xp12gFft/fdqG/b8+7cJaMQJqIsABXjXR5L4YAZUQAC3Ah48f6OWLF6LH9Ru3UslSpenevd/Is0wJk1Had+xMY8ZOEN8hwypX9kwmwSdkOYCiAf9Kmb79+g+SH8QRtCpVvDDTAiiwHTDMnCWLHBDJlj0HHTx0VARo27VpSYfCDsi9oO2pMxGEBxBI0Py5NMlvvMko+/aHU253d/Fd4LwAqlq1OqFPSfr16cnZvArsgiYFChSky5cvya3tWTP4D/DmrSGiL6zBdetWk08XX5lG4PHj3wW/MotlBKKvmc5dutGIkWPor7/+oiIeeU1eLuXO7U57QsPkjPYaVSvRtWtXec1YhtmmFqAikbJxsYfBTyRLlozWrV1Ngwf2M+kTBe/KeZYX30Vev07VqniZ/D58xGjy6eorvsOpk0+fPlLFSpXlNigg2sPXlF/ZJqUTwEXs//VpZPb/+rQL+3/92oX9v35tw/5fv7ZhzRgBexHgAK+9CPL1jIADEAjZHSoCWJDdu0KoW5dOJqNu2rKDihU3BH4b1q9N586ekX/3Dwik+g0air+lB3c8zA8dNpKQ2fv774+oXOniDpiF6w2BQCCwlygaGtWvbRJkBL8YqqVDoh+Frla9JgUvXCJ+Mw7c161Xn/wmTRO0EIUL5pGpHVwPPW1nZM+aAU9yunTphYJtWzWn8PAwQZESMC+IUJl4/bo1NGhAX20n4KK9S4UGMT3wuYLXFfyuknTz7UlDhhk4eI2pUPA3rxntbgpUqT9/8ZqgWMCLwFEjhtKK5UvlAUGTgQxdBIDxe+YMBp5xSAo3NzofcVW8AEHgXtq3wJeJEw44qSCtI+1m4Lo927OXsf/X7r5g/68dtvb2bM+aYf9vL/qxX8/+Xzts7emZ/b896PG1jID+EOAAr/5swhoxAjEQwFvw02cvEiqbQ3B0v2XzxnKG7669Byhfvvzitzq1qslZWeASRYARAcgPHz5Q/jw5TAp+4cE86fdJTQrnMPzWIWBMfwEKBnDoIgAIQTZuWLiBQ/nWzRvkXdFT7vzS1RuUIkUK8Xet6pVN+JBhL3f3PEzRYJ0pTFrbumZwrHC832TRFziqYRtjyZU7N925fdtkHdmhZoK8dPXajVS2nGEtILjbomlD+f4fMGiI4KaGLF2yiMaMGs5rxkF3CQKy8CUSJ/jaNatEoBfc1vgu8uZd8eLp06dP4qSIJMbZvQGzZ9KMaVNMNEYhyeiZ2A6akksMY+texv5fe/Oz/9ceY1tGsHXNsP+3BW3rrmH/bx1ejmrN/t9RSPM4jID2CHCAV3uMeQRGQBUEwG24cfMO+Ug/OgW367u37+TvECxBEFcS48Dv8KGDaNXK5bHqUrpMWRo+cgzhoRABxt8fPRK0AuY4fVWZkAt10rRZC5o8dYZJsTQENPAfJjxoQFBsCPytkEFDhlH3Hr3FZ/Agt2nZLFY0kEk6dfoswvH1xEmS0IsXf9D2bVsowH+mCLywxI6AtWsGBXNwTB1BLGQpgjcZWaaxCegGWrRoRanTpKUvnz/TzZs3aNLE8XQx4gKbxQIC02fOpsZN/rnvUUASWe4ehQqL/Qf442TBgwf3rV4zvJfZfvshGLtu41aZwgcvrW7euEEpU6aklKlSiY6R0Y6MXAhOliBbDvLq1StR5DA2wfrymzSVypQtRylSuNH79+/o9KlT5Dd+DD158th2pRPAldbuZYCE/b9jbgz2/47B2dpRrF0z7P+tRdj29uz/bcdOyyvZ/2uJLvfNCDgOAQ7wOg5rHokRUAUBcB2Cd1cqRiR1iofrmtW8RdAXgqPky1etFZ8RpCpTsqjZ8RGARAZW8RIlzf6OoEutGlXozz//VEV/V+0E2bqLl66gLFmyxpiiMf8ujjhfvBIljjOD/xjHmRHcMiejx4yndh06yYFj4zawR/26NWQ+YFfFVY15KV0zCKTjYR2yZdNG6tunh9nhc+TMSctXrpVpHKI3iutaNebjKn2gqBfoSEB/YSxYFz6d2tPBA4bAodI1w3uZOncGjmsuWrJCBGIRbDcWFP9sUK+WXIQNJ0RARQPp1KEt7Q/da1YJ2HrqdH9KkiRJjN8RzAflyYb1Bn/FEjsCSvcy9v+OvYvY/zsWb2tGU7pm2P9bg6r9bdn/24+hFj2w/9cCVe6TEXAsAhzgdSzePBojoAoCCA526OhDJUqWpJ9+SklRUZE0dvQI+vjxo9z//oOHKWcuQzZV/bo16cL5c2bH3rZjNxUqXET8hgdtZJT++f49lSpVRi4QhuBx+bIlYg1EqjIpF+kkf/4C1LJ1W8qRI6ewB3gsQ/ftkWeHoG2HToZiQ4sWBNH4caPNzrx3n/7Ub8Ag+TfQBdyIihSBeCmggkBYqxZN6OSJ4y6CnnbTsLRmcAT9xu17hCweFCvM557dbIY0OEpPn7skgo4QUJ8cPLCf3NzcqHCRonIA6+yZ09SoQR3tJuRCPeNBr3KV6pQxY0Z6+vQJTZ82mW7dvGn1muG9TN2bImXKVNS5S1fKn7+gWBeHwg7SvLmz5UGQbb09xLC3RUVGUtXKFcwqgHawjRQsRrbusaNHKLd7HnHKQaKEmDVjGvnPmq7uJFywN0t7GabM/t85hmf/7xzcLY1qac2w/7eEoHa/s//XDlt7emb/bw96fC0j4FwEOMDrXPx5dEZAEwTA1XvxcqTFB+/BQ4eTb/deoh3oHerVqUF3bt+SdUKAEYFGCBeWUsdUEvcugoi5c2SWM+GMey9VugytXb9ZBERwRBrV53ftDJGbeHpWoKUrVoss4Pv373GRPBVM07pNO5ow0cAdGjx/Hk30G2e21z2hYSIoBQENR8N6teQXK7DXxs3b5YKHrVs0pSNHwlXQLmF3oWTN8F7m+Htk5er15FneENRFsTxww0cXHJM+dfaiKN4GWbZ0MY0eOUxuljp1Gtq3/5B4mYgXVnlyZRUvWFhsR4D9v+3YaX2lkr2M/b/WVojZP/t/x2OudEQla4b9v1I01WvH/l89LLknRkBtBDjAqzai3B8joAMEUAgq9MBhoUn0QkWSenjgvhp5W2RPIXO3WmUvkQkcXaSsOPC95siaQQezi98q3Pr1gciGi150zXhWp85G0M8//yK+mjB+DC0Mnh9j0sYZvjWqVuIiRnbeFkOHj6Su3QyUDMaFCo27rVa9JgUvXCK+ev36NRUrnN9sli+KUeEoeuT161StipedmvHlltYM72XOuUf2hh4i9zx56K+//qLsWdKbVWLOvGCqU7ee+O3E8WPUvGnDGO2yZM1G4UdOiO+N6WycM6v4Pyr7f/3a0NJeBs3Z/zvefuz/HY+50hEtrRn2/0qRVLcd+3918eTeGAE1EeAAr5pocl+MgE4QQFbU2QuXhTbPnj2liuXL0Lt370y0M37jvSAokPwmjDWrPegEQCsAyZY5nciyYrEdARTxQlYbgiJ1alaNkfWG7FBkiULiOvYMigAE6CEjhg2mlSuW2a4UXym4jseO8xNIhIUdoPZtWsZAZfe+g4QiFJDYgsD4DdnXKPSFIHDBfLkYXTsRsLRmeC+zE2AbL1+zbpPg6YUMHTyA1qxeGaOnm3fui0KTcdGe4CKcOEHmqaWikzaqmqAuY/+vX3Nb2svY/zvHduz/nYO7klEtrRn2/0pQVL8N+3/1MeUeGQG1EOAAr1pIcj+MgM4QMHa+4Aldt2YVrVixjO7+ekdoej7iqqiKjoCte84sZjMR0a7/wMHUq3c/cU2m9GlMZtmmbXsqUNCDhg0ZGOv1OoPF6eoYB8xBv7B3zy5asnghgbMVgkJt3pWris8tmzcWXJXmJFPmLHTk2CnxEwoUgUJDElAFbNi0jWbOmMr8vFZY/PK1m3LBr8ePf6fFixbQxg3r6PWrV4JzFw8awPbevd/Is0yJWHveuWc/gYvx1cuX5FHA3aTdjFkBdPXqFVq6eKEVmiXsppbWjBp7GYokTZ4ynXr16EawPYtlBJB5e+jwcZlbFwXYFi8Kpj27dwm/0rBRE5rpP0d0tG7taho80OBHzAn4rxMlShTj5QrvZZbtYK4F+3/bcNP6Kkt7Gft/rS0Qe//s/52HfVwjW1oz7P+dYzf2/87BnUdlBJQgwAFeJShxG0YgHiKAB+NFS5bLwUJMYdfOHeTbtbOYjZRZde7sGWpYv3asMwwLP0YIfoDGIXOGtHI7ZGUh4IV/X754QYUK5omHKDlHZZ8uvjRsxCg5MILCUsWLFBTK7Np7gPLly09//vmn4KOMTcb7TSYE2CFdOncQgWJJRo4aS518uoo/ObtXuY3BAxqyax+lT/8PFQn4j0N2bCfjY+RTJvlR4LwAsx2DFznq1m/0zTffiEBhyWKF5HbFipegTVt2iL/DDu6n9m1bKVcugbeMa83Yu5cB2n37wym3u7vgvC5bqhg9evQwgSOubPq4p1et2SCCsxDgV9gjr3i5MWDQEOrZq6/4vohHPvrjj+dmO8XLELwUgezYvo16du/Ce5ky+GNtxf7fTgA1vJz9v4bg2tE1+387wNP4Uvb/GgNsY/fs/20Eji9jBDRGgAO8GgPM3TMCzkYAFcxHjBxD2bPnoDKliorAIUTitdoZsp26d/Mxq2aOnDnpQNhR8Vt0uoCAuUFUt1598RuOop87e5o+ffokgmHGwUZnz1+v4+MY7agx46mCV0Xy6dRO8FNCpCJexkHf6HPAw/v1G78KnldwI+fMllEE4CE45nzh4jW5Mv2B/fvE55s3b9DSxYsIFexZ4kagUeOm1M23B3389IlqVa8sGhuvBd+unUyK3hn31qfvAOrbf6D4KnqxNmNuRRRoe/rkMT1//pxWLl9KV64YKFVYYkcgtjVj715WvUYtClqwWAyMAOX+0L3073//m44dOypOPnz8+JHNEgcCeKmBkx5YN7tCdtCY0SNEa+Ojs9FPfxh3J/G84ztjPnHey+y/7dj/24+hFj2w/9cCVXX6ZP+vDo5q98L+X21E1emP/b86OHIvjICaCHCAV000uS9GIB4hIPFa3b37K1UoV8qs5idOn6d06QzFc4yDWhkzZqIjx0/LGajRL0bQsXOHthQebuCSZVGOgMTfiiPOubJnMst57B8QSPUbGIoVRQ/QGx/NNTfq+XNnRca2FBBWrlnCbmnMa7l61QpBSxJd0qb9mY6dPCuyd4Fv/jw5ZO5rY44/c0j+8fw5Va9aSXBms1iHgD17GUYyPpobfWTYMThoHk3yM/CQsyhHwPhobZNG9ej0qZMxLq5dpy7NDVwgvo/+Uov3MuVYW9vSnjXD/t9atJW3Z/+vHCtHtmT/70i0rRvLnr2M/b91WFvTmv2/NWhxW0ZAXQQ4wKsuntwbIxBvEDA+xm+uQE7wwiVUrXpNMZ/oR82Ni00dORwuOEnTpElDxUuUohQpUohrEBjp2L4NHTwQGm8w0YOiBT0K0Y6de4Uqofv2UOeO7UzUatK0OU2b4S++Q6G2cqWLy5yhxteiqN6e3TtFcaNixUpQzly55KzeuIq36QEDveogHePHC4y6taqZFMhDJef9YUfkFyLGR82//fZbQWeCY+xYF9u2bqE3b16Lgm3gsAbNCeT9+/dUqUJZzrK28gawZy8zzjLFyy5k0sMepUqXkW0JdcCZLGWmWqlegm2OkwPg1sX9Dx+Ce1s6QQJQkBW/Z1+YeCEC6dWjK23ftlV85r1M29vGnjXD/l8727D/1w5be3tm/28vgtpcb89exv5fG5ugV/b/2mHLPTMClhDgAK8lhPh3RsBFEUicODFdvBIlcyeiyNfmTRvoP//5D/Xu21/mIUUwC0FE6Wh/Je8qtGSZoVr6w4cPqEzJoiYI9ek3gPr2M2Q3Rl6/TtWqeLkogtpNS6JpwAj379+jTRvWC4oFcO6WLlNWHrirT0cRxJXk+Klzst3A7wqeV0mQXbprz35RWA9Sxbs83YiK0m4SLtgzsEdWISgykGGNADwyqDNnzko9evURlBmQBw/uCx5XSVBYDcc+IZs2rqf+fXvJv+E/wcjaKlmqtPguaP5czha18t6xdS9Lnjw5Xbh0nXDEEPYsXDAPvXnzRh7d07MCLVm+SgQgsQ/myPoPN7OVKibY5kOHj6Su3XqI+eOl07atm+lQ2EGq5F2ZWrRsLZ8Cib4ueC/T9paxdc2w/9fWLuid/b/2GNsyAvt/W1DT/hpb9zL2/9rbhv2/9hjzCIyAOQQ4wMv3BSOQgBHAsbM9+w7KQb/oUJijWrh4OVLwvELq1KpGly5GxEBQ4hoFJ2+/Pj0oU6YsIotr164ddOvmzQSMuLKpI4C4bsMWOegX/Spkgc6d40/Tp06Wf0KwZNKU6eJv8LuCyzK6VKlanRYuXia+3rhhHV2MuEBp0qale7/9JgIvCHKxxI2AcdDPXEtQLVT2Li8KD0JQsA20DbAp1gNoG7CujAVB3l/v/S7a3Lp5g+bNDaBMmTLThw8faMOGtfT61Ss2iwUEbNnLlq9aSxUqVBQ9o2geiudFF2Ou8T69uou978cff6Szp0/T4cOH2C4KEDB+6Weu+ZnTp6hxw7q8lynAUs0mtqwZ9v9qWsB8X+z/tcfY1hHY/9uKnLbX2bKXsf/X1iZS7+z/HYMzj8IIGCPAAV6+HxiBBI4AAq/j/SZT7Tr1CMfMITj6fzg8jHr16GZypLbfgEHUu09/0ebY0SPUsnljs+hdjbxNyZIlM/sbCrJNmTSB1qw2ZAGzxI5Ax85dyNe3pxyARwGo27duUtcunejO7VvyhchABAUAMkgR/PUsU0Jk/kYXVCIePnK02QHRNwK+bVo1k3lj2TbmEciQISNNnjpDBOCBPQTB2EULg2jGtCkmF4XsDqUCBQqK70aNGErLly2J0akxv5+5EZEp79OxnQjcs8SOgDV7GegxcNQcgj2pYL5cZjveuHk7FS9R0uxvoD/Bi5FBA/qyWSwggMDIqDHjKHuOnHLWLl6GDB0yUGTCS8J7mWNvJWvWDPt/x9qG/b9j8VY6Gvt/pUg5tp01exn7f8fahv2/Y/Hm0RgBDvDyPcAIMAIyAuCeTJwkidmMQQRsIy5HiuPKyPQsWjg/vXr5MgZ6NWvVpsCgReJ7BL1+f/RQcDFlzJRZDobhNz6KrvzGQ0ZPqlSpYy3AhWBj8xatRIfgd+3ds5vZzs+cv0Rp0qQVvyEA/OHPDyKD183NTW6PY9TlyhQ3a1vlGiecljjmh8xcBPuiS/nyXrRi9Trx9aNHD6l0iSJmgZk3fwHVqm3IYETQ648//qBkPySjX35JJwfDEIBv36YlFy5UeGvFtZehi/CjJylLlqyity6dO9DePbti9JzCzY0iLl0X+xfwv/fbXfr8+QtlzpJFprbBRVeuXKZa1Ssr1Iyb4YXG8+fPzBZ65L3MefcH+3/nYR/XyOz/9WkXaMX+X5+2Yf+vT7tAK/b/+rUNa+Y6CHCA13VsyTNhBDRFYPHSFeRduaoYY9GCIBo/znwm6PmIq3LGaXQKhx49+9CAQUNE0AoBkzy5stLHjx811dvVOwe37skzF0QQCkFGUACYCzY2bNSEZvrPEXBcv36NqlcxHE2H/PzzL7R1xy7xLyQ6H6arY6jV/IzXQsP6tenc2TMxhoL9QGmCNQG7YU1IVBl4SAlauIQqVvQW15njvNZKd1fuF3zI4EWGxFVw0HjPi07hULacJy1ZtkoukNe2VXMOvtt50/BeZieAGl7O/l9DcO3omteMHeBpfCn7f40BtrF79v82AqfxZbyXaQwwd5+gEOAAb4IyN0+WEbANgVy5c1PogcPiYmR4IogIKoDo4tu9F6EqLQRF2xo1qBOjjX9AINVv0FB836Fdazp4INQ2pfgqgcDW7buocBFDobsJ48fQwuD5MZBB8BcUDkmTJhV2q1zJMwYXMo5G3777UAQa48o2ZdiVIYCXGQMHDxWNT508QU0b1zd74eatIVS0WHHx28QJ4yg4aF6MdlLBKdgucwZDBjaLbQhgLYBCBnQ0wLOSVzkTuhOp1xw5c9KBsKNx7nnGBae2btlMfXr52qYUX8V7mY7vAfb/+jUO+3992ob9vz7twv5fn3bhZxn92oU1i58IcIA3ftqNtWYEHIrA9p17ycOjkBizh68PhezYHmN8VLK9fO2mKKaG7NxihQvQH388j9Fu2gx/atK0ufg+tiJtDp1cPB7MOAj19OkTKl7EwPUaXcaOn0jt2ncUX+MoOo6kRxcEdlHoC/8BRqEv74qe8RgZ56t+4/Y9cYw/rrVQomQp2rBpm1D22bOnYs2Yk6MnzlDGjJkEN3b2LOmdP7l4rIFxwY9dO3eQb9fOZmdz8NBRwRcLAeUJqE+iC3jlVq5ZL75eumQRjRlleLnFYj0CvJdZj5mjrmD/7yikrRuH14x1eDmyNft/R6KtfCz2/8qxcmRL3ssciTaPlRAQ4ABvQrAyz5ERsBOBH3/6iQLnL6TkKVKYHO037jYwaCHVrGXI2F25YhmNGDbY7KgIAoO3DMfQ3XNmoS9fvtipXcK+HNy7w0eOoc4d29LJE8djgAHb4aggArfA2iN/bpPCedIF7Tp0orHj/MSf69et4cJRdt5WHoUKE7h194fuizXwZ8yJ3LxpQzpx/FiMUdOnz0DHTp4VmdXgTS5X2pDty2IbAlgH4yZMEkUlSxbzMEsRU7tOXZobuEAM8Oud2+RVvozZwdas20RlypYTv7Vu0ZSOHAm3TSm+SiDAe5k+bwT2//q0C68Z/dqF/b8+bcP+X5924b1Mv3ZhzeInAhzgjZ92Y60ZAV0hkCVrNjp0+LgIQv3555+Uzz27yFyMLj5dfGn4SAN3b9jB/dS+raEwmCReFb2pa7fulCFjRvry+TPdvHmDpk2dFINOQFeT17ky6zZsoVKlDQGq6VMn05yAWTE0ht1A4YBCeji2XqhgHpMia9my56DhI0ZR1mzZRYb2/Xv3aPEiBC/36nz2+lWvc5duNGLkGKFgxIXzVK9ODbPKbty8nYqXKCl+G9i/D21Yv9akXfcevalKteqUNm1aev3qNZ09e5qmT5tstlCiftHQj2ZYC3gJ9cMPPwilqniXpxtRUTEUxJ4XfuSE+P7lixdizRgLrxn1barGXoY9bsSoseThUZhSuKWgx48f0749uwU1ijmfpf4sXK9H9v/6takaa4b3MvXty/5ffUzV6JH9vxooatOHGnsZ+39tbMO96g8BDvDqzyasESMQ7xDYtz+ccru7C7379+0linRFFwQGwX2JwlEIIpYpWVRwvUKQpbhoyQpyz2MaJJH6OHrkMLVu2dQs72+8A8uBCoPbFRyvsQWhJFWGDh9JXbv1EH+GhR2g9m1ais/4z+7SFavJy6uSWa1hv3q1awh6ARblCGANIKAurYVSxQvT48e/x+gA3MrgWDRnP7wMmTMvSATlowvW16wZ02i2/wzlSnFLgcDwEaPJp6uBSxf84OAJNyd7Qw/J+9WgAX1F1juvGe1uInv3MmiG47k9e/Ul8I1Hl0+fPlHH9q3p2NEj2k3CRXtm/69Pw9q7Ztj/a2NX9v/a4KpGr+z/1UBR/T7s3cvY/6tvE+5R3whwgFff9mHtGAHdI1ClanVauHiZ0PPevd/Is0wJszr7z55H9Rs2Er8hCxHZiBD8Z/eB8eItAAAgAElEQVTM+cuUIkUK8ffzZ89oZ8h2Sp8hA5UoWVrOpEMw0cuzNH3+/Fn3mOhFwROnz1O6dAbO1ratmlN4eFgM1VK4uQkKBwQ9wPFauGAeevv2rWhnnD2KAMjunSH093/+Js/yFQgVbyGwR/06Nejatat6mbbu9TAuNLhu7WoaPLCfWZ2N7deuTUs6FHZAtMPxTwR+cdwQEhUZSYfDw6hI0WJUoKCHyLKGxMa3rHuAnKQgqGMuXLour4VCBdxFUcnoYrznRafN4DWjjfHs3cuMC4AiUxeB3Du3b1HZcp6CaxnBLLwYGTViKK1YvlSbSbhgr+z/9WtUe9cM72Xa2Jb9vza42tsr+397EdTuenv3Mvb/2tmGe9YnAhzg1addWCtGIN4g8PPPv1DQwiVUsKAH1azmbTbQlyFDRkKhKDxEf/jwgfLnySE4eCHGBVyMA78SAIOHDic4Z0hc3L7xBjAHKtqxcxcaPGQ43bgRRbVrVDE78srV60XAFgL6BtA4QCZOnkYtW7URnxHEQnBdshm+q+RdhYIXLqFvvvkmTp5SB0433gxVukxZCpgzn75PmtRkLRhPoHWbdjRh4hTx1dWrV8Tagrj9+COdOXdJDuJGL3qIQP36jVsJGQ+QJo3q0elTJ+MNNs5UFIHxqdNmUb0GDSlg9kyaOX2qWXUuXokiNzc38RvW1eXLl3jNaGw4e/Yy7FVLlq0UGuKFlLdXObGnSYITJCG79hG4ZvGSK0+urMwNr9Ce7P8VAuWEZvasGfb/2hmM/b922NrTM/t/e9DT9lp79jL2/9rahnvXJwIc4NWnXVgrRiDeIZA6dZpYj+rv2nuA8uXLL+aE4msI1EKqVa8pgoSSvHnzRmQz7tm902T+UjEjPJznzJYx3mHjTIWRIZ0oUSICttElf/4CtHPPfvH169evqWC+XOLz999/T9ei7oiAPARBj6D5c+Xgr9SPcWE274rlmCvZSkPHtmYQpAWFQ5IkSURWIQqrPXhwX/Q+Z14w1albTx7p1s0b1K1rpxjYS8UMjYPDVqqXYJvHtZcNGDREHPOHHDkcLqhjeM045laxZS+DZqfORhACkZIc2L+P+vTqbpKdbVzM0PhFl2NmFv9HYf+vTxvasmbY/zvGluz/HYOztaOw/7cWMce0t2UvY//vGNvwKPpDgAO8+rMJa8QIuBQC4ApdtmK1mBNoFkqXKCLPL2R3KBUoUFD8jSAiskEhOHLu262zOEILadGyNU2aMl0EuzJnSOtS+DhzMsiqzpgxk1Chc8d2FLpvj/jcb8Ag6t2nv/j85csXOVv01atXglpDKq6GAPBvD56IdrFRQDhzfvF17KnTZ1HTZi2E+lu3bKY+vQycsJAbt++JgD2OmQN/6Wg5bNe3dw9R5BCyfNVaqlChIj18+EDwXbPYjwAKr4HCAfsUstmLFMonF7PjNWM/vvb0ENteliNnTjoQdjTGXgZ/M3eOP/nPnC4PK2Vmg0MeXPIs9iPA/t9+DLXqgf2/Vsja1y/7f/vw0+pq9v9aIWt/v+z/7ceQe3AtBDjA61r25NkwArpDIOLSdXH0FVK/bk26cP6c+Jw4cWKKvHlXBKjA3Ysj6P4B88i7clXxO4K5u3eFiAdtVD1v1bptjAAv+GOPnThLW7dsotEjh3EVdCusjwAiHiQgCKhXrWygaYCcOX+J0qRJK/DMkTWDKE6EImxSAD7y+nXq4tOBUqdOTZu27BDXtGnZjA4fPiT3MWNWAJUoWYq6d/OhSxcjrNAsYTdFpuHJMxfEukDGej737PJx8Zq1alNg0CIBELh7Fy0MovlBiyhHTkPmNYJWs2fNEFQb4UdOEKrbI/O3bKliMqi8Zmy/v5YuX0UVK1UWHQTPn0cT/capumZgs8ePH1N3Xx96+eKF7YomsCvj2svmzV9AtWrXFYg0b9qQkidPQVOmzSTwLUJevXxJ/fr2ovBDB+nWrw8E//LGDetoQL/eMorgmZ3pP4fGjRkp+ONZlCPA/l85Vo5syf7fkWgrH4v9v3KsHN2S/b+jEVc2Hvt/ZThxq4SFAAd4E5a9ebaMgEMRQBB32449lNvdnU4cPyYesCVBoOnSlSjxZ+C8AJoyyU98zpU7NwUFL6as2bKLv5FBCgE/1uPHv1PJYoXkPoz5Y8eNHUWLFwY7dH7xeTAEzMeM8xMBjfLlStG93+7K07kaeZuSJUtG169fo+pVKorvkb0we+58qljRwAWLADwKUOF7BIIRiJSyR405l9EGv7EoQwC0GSvXbBAcr2PHjKQlixbIF/p08aXhI0eLv40pMWrXqUsTJ0+XCxIiaAWuXsj2bVupV4+uvGaUwR9nKxSKBD8v7ukCeXOKNSCJvWvGmHP55Inj1KxJAxU0ThhdxLWXSYWiotP7gNsd6wn7H+SP588pZapU4rPxaQb8bcy5jBMoOInCYhkB9v+WMXJWC/b/zkI+7nHZ/+vTLtCK/b8+bcP+X592Ya2ciwAHeJ2LP4/OCCQIBJABde7cGZOsNOPj/YsWBNH4cYbAlSR169Unv0nTRKBRkokTxlFw0DzxJ6gdQPEAQYBxwvgxIih2IyqSdobsMAm+JAiQbZgksK3gVZFCdmw3ufri5UgRIIye2YtGefLkpcCghSI7VJKzZ05TowZ15L+NOZcPHTpIFy9cEEfat23dLCgDWCwj0KRp8xjZgsaZCjWqVjIpaIj1NHTYSEIxCilohVFAzyBhzmvGMu6WWuDIf4oUboR73ljsWTPGnMvoExnYCB6/ePGCNq5fK784saRbQv49tr1s6YrV4qUUstuzZ0lvAhGyeAPmBQkqE0nev39PeXP/s7cZcy4/ffqEli1ZTImTJKZDYQfl0ygJGXclc2f/rwQlx7dh/+94zJWOyP5fKVKObcf+37F4Kx2N/b9SpLhdQkGAA7wJxdI8T0ZAhwjcvf+YvvrqK/r1zm3yKl8mhoYIWo0aPY5QzAsP6LlzZJZpGIw5l6JfiGDiobAD5Nu1M1dDt8Hu0vF+ZE975M9tNsBUv0EjmjBxCiVNmpTq1Kom0zAYcy6aG/r5s2c0aGA/CjtoKO7GohyBYsVLyJQYKFSIgoXRBZnxc+cFUznP8iYZ2GjHa0Y51ta2tGfNTJvhT3igNycI9N6IiqJOHdrIhfas1S0ht/ebNFXQ+0CQFY3s6OiSN28+mr9gMWXKlNnkNIkx56I5DD98+CCoOvxn/cPjm5Cxtnbu7P+tRcwx7e3Zy9j/a2cj9v/aYWtvz/asGfb/9qIf+/Xs/7XDlnvWNwIc4NW3fVg7RsClETD+j01cFAvIJs2ZMxedPnVS4GGcyfj27Vu6eSOK/v3vf1OevPkIlVYlWbVyOQ0fOsgihg0bNaEtmzdy1u//I2X8kBadWsMYTATnK3lXkYuu4TdjzsVr167Sm9evKVPmzJQu3T/ZcwjAI5vO+Ii7OSMh8+vs2dOCJ5PFgIAUpEXWep2aVenKlctmoUG27suXL+XsXTXXDLIlPMtXoF07Q9gsdq4ZY85FvMS6evUKff70idzz5JV5YjHE3V/vUAXP0hbx5jVjChGCtBGXI0VWO3iNy5crSfAZse03KCAp7UvGnIvIgn/44AH99NNPlC17DvFiUhKcXoie0R29fwSR4aMuX75k0YYJpQH7f31amv2/Pu3C/l+/drF1zbD/19am7P+1xZd71y8CHODVr21YM0bA5RFAMPbytZuUKFEiMdddO3fQ8GGD4wzo4cEafJfff/+9eBCPzh+LQlTTZwYIzt5CBdxjfZiXwF28dIUo7Hbr5g3yrujp8pgrneDufQcJQQkIMqx9OrenWzdvxnl57z79qd8AQ0A9emAYx6HB4evlVUlQDwzs3yfOvtq0bU/j/SaLDGzwnX78+FGp6i7drmix4rR5qyGwiiDv9KmTBW0JguaxiZprBryah4+dEkX4li1dLIobshgQsGXNbNuxmwoVLiKuj865jOOgS5evJnBat2vTUpxKiEt4zZhHB3y7vt17iR/BE96ze1c6eMBA7xObgIpmT2iY+BkBYWPOZawnUDegTxQxLFe6uMW+duzaJ4pUtmzemI4dPcJLhki8jGX/r89bwZa9jP2/9rZk/689xraOYMuaYf9vK9rKr2P/rxwrbuk6CHCA13VsyTNhBOIlAsjs3B6yh1KlTi3rf//+PTocfoh+f/SIbt26aZIhanzkBtyxPXx9Yswbx9SLFy9Jofv2iN9A9bBh0zaaPm2ynAWM7+fMC6Y6deuJIGKtGpXFUWipvaXs0ngJthVKI+Nt9dqNVLLUP1mDr169Ena5fesmvX37hpYvWyL3iID7pas3RBADgccihfKZcC5LDVGkaueO7XJAcsasAJGFumzJIrkvHFdHdhcEGdjIxGa7/GO8ipUq04JFSwXWEOCNzM+Tx4/R69evBf1FVFSkfIEtawZZihMnTaU+vbqL4oYQvDQJP3pSZGPju/JlSxKKV7FtDFBbu2bKlvMUawzy5MljKlHUw+wKbdS4KW3auF7+jdeMFRvZ/zcdNGQYde/RW74Q9+3Jk8fp8qWL9OXzF1q0MMjkJZJ05BYXwMdE5ynH9x6FCtPHjx9kv4EAe/4CBWno4AHy/oYg/e69B8Xa2bd3N/l0am+98i58Bft/fRrX2r2M/b/j7Mj+33FYWzOStWuG/b816NrXlv2/ffjx1fEPAQ7wxj+bscaMgMshgP8YLV62ksqX9xLBWGPBw/Ka1SvFV6lTp6HT5y6K47HWZHb26TuA+vYfKPo4d/YMdevSiQYOHip4L5H5WL9ODfnoLI5aLVqyXASH0S6hS/+Bg6mbb085mCjhER4eRm1b/cMbunDxMsLxcMjSxQtpzOgRFqFD8ONA2FHRDgFDZNalTZtWBN5xHxhnNML2YYeP07OnT6hB/dr0+tUri/27cgMERlav3WBS7A7zxYuJsqWKydQMtq6ZbSF7qFChwqK/9evW0JhRw0VGY5YsWQk8yjjqjmxIyMhRY6lt+440ZbIfLQye78qwK5qb0jVz7sIV+cWWkmP+GJzXjCITmG2EvX32nEAT6gs0BAWMRwF3+Rrwi/sHGIp5WnOyI/LmXUqSJAl9+vSJ/MaPofBDYbQ/7Ig4oXL48CFq07KZ6BN72559YZQufXrq0K6VRXoH22ccP65k/69fOyndy9j/O9aG7P8di7c1oyldM+z/rUHV/rbs/+3HkHuIPwhwgDf+2Io1ZQRcHgFk3g4YOITKV/CitGl/FlltxsdfN23ZQSg0AZk8cQLND5yjCBNkT02aMp3AtYuHawSt8C8yHxs3rCuCvpDSZcqKjDoEkIPmz6VJfuMV9e/qjYBHp85dBX4ZMmYUwd6ihfLRmzdvxNQRdNp/8IjA9N27d5Q/Tw6L/LoSZh06+dCQoSNMuJPx27Qpk2juHEMWLziYDx89JQIzyFStWc3b1SFXPD9gP3jIcCpQ0INSpUotuKT79zUcR4fYumbADTc/eJFMHyCtGWRxly9bQrY9HmZ69e4n7I2APwJZLCT2kLjWDF6aDBlmeAkC/lYEeJUKrxmlSJlvB95w3+49KXuOnGJP6di+jUzZgD3syvVbBJ5p3NOVK3lapKaRRilVugwFzJ0vXkRCpDVz5vQp4WckkY7lYq+sUK4U/fHHc/sm5CJXs//XpyEt7WXs/51nN/b/zsM+rpEtrRn2/86zG/t/52HPIzsOAQ7wOg5rHokRYATsQKBEyVKCZgGCDMKihfNb3Vv69Blo7/5D4uEdgmO6I4cPERmK4DbbuHm7CMysWL5UfM+iDIEDYUcoR85conHvXr60bctmZRf+fytwMW7dsVvm/EVgBLQMo0YMpaRJk9KRY6dFkBfZdJUrlVccPLZKCRdsrMaa8fSsQCtWr5Mz6589e0qdOrSlSxcjxJF3HH2DvXD0XKJEcUEoVZ0SeIzBPYoXT3jJBGoG4GqN8JqxBi3lbceM86P2HQwnN2ylVBg6fCR17dZDHvTkiePk262zoKxZv3GroL1B9nulCmVl+hPlGibMlmrsZez/tbl32P9rg6u9vaqxZtj/22uFmNez/1cfU7V6ZP+vFpLcj7MR4ACvsy3A4zMCjIAiBM6cvyQKO0GaN20oinjFJRkzZiJw+RqLlG2IoMqLP/6Qj0ejQjr6Rmbqxg3raEC/f7gaFSmXgBvVrlOX5gYuEAigGJtX+TJW28U4cxo2g+0g79+/p7/++ovc3Nzo7t1fydurXJzFxBKwGcxO3Zo1g5ce33z7bQzeZCnbELbAUWqpIGJUZCTldncXwd3ePbvR9m1bGX6FCMybv4Bq1TZkdK5csYxGDBvMa0Yhdlo2+/Gnn+h8xFWZAsgjf26ZhsTcuAgY/v77IxGkl8T4tMHTp09ENq90WuTevd8ExQkoHCpX9Izhn7ScW3zv25q9DHNl/+8Yi7P/dwzOtoxizZph/28LwrZdw/7fNty0vor9v9YIc/+ORIADvI5Em8diBBgBmxAwPgIYceE81atTI85+WrdpRxMmTqHjx45Sd18fwbEoHYlCQKp921aiIn3Hzl0EPQAy6SAIYpUpVTTB87taY6S16zcLagtIVe8KJsW9oveTIUNGOnrijKg8371rZ8F7jEJFm7eGiODhgqBA8pswVvQ3Z24QpUyVSu6ift2adOH8OWtUS9BtrV0zK1evJxT9QOG8saNHiMCtZFusCy/P0vT69SuaMnUm1W/YSM7ohQ3r1KzKWdVW3G2gAPjhhx9E8DCfe3aTACGvGSuAVLmpTxdfGj5ytOh1+tTJNCdgVpwjSEUlcdIARfBgU+m0wfXr16hG1Ur0yy/paF7QQsFnLcmsmdPIf+Z0lbV33e6s3cvY/zvuXmD/7zisrRnJ2jXD/t8adO1ry/7fPvy0upr9v1bIcr/OQIADvM5AncdkBBgBqxFAUQlUj+/bu4fFY604Itula3c5cwqB3nKehqP9KJy2Z/dOMT4CjgcOHZWzEvEdiq4tXhhMkyaOjzVohYysQoWL0G+/3Y2R8Wj1xFzgAgTKM2fOYpHWAtWfgxcukQPq4KYEjsicBiXD8KGDBBqgyUBBNWS7GQsKu/Xq3lXmfzUHHbhjU6ZMSdeuXY0zcOYCsFucgjVrZsu2nVSkaDHRJwK6yJjOn78AffjwQWROP3r0UPyGjC2pCJ6kALhEhw8dGGcWL6qsu+fJS9euXqGPHz9a1N2VG+CFEgLlh48cskhn4og1kzu3O3389Inu/XbXlWFXNDe8XMLLwNYtm8bZPmXKVLT/4GFC1g8E2blJEicRp0Lu3L5F3hU95f1n6vRZ1LRZC5P+7v56h7r6dIzzhRjvZf9AZs1exv5f0a2uWiP2/6pBqWpH1qwZ9v+qQh9nZ+z/HYe1tSOx/7cWMW6vVwQ4wKtXy7BejAAjYBcCWbJmo6DgxeIYuSTIspIKUOHh+WD4MULgCYWhxo4eSUHBiyhnrtyiOdqhvbFkypyFlq9cI4KZCPJCENwKCpwrFwSzS+kEcDHwnj5zNlWvUUvGEBQZZUoWFbMHrntDDwm7gWu5RjVv8ps0hSpXqSZ+O3gglDq0ax0DqZGjxlLzlq2FPSEI5l+MuEC9e3XnwJXC+wrFJ/ASBZQYkiDbPezgfvEnbIBq6bDD2DEj6eGDBzRthj+lSJFC4F2oYB6RLW8sNWvVJr+JUwWHsiSw96gRw+TCVgrVS7DNtFgzeMhcvnKtKFqJFywQ0KHs3bOb+vXpQV++fEmweFsz8d59+lPP3n1lDPGCsEihfPIpkLHjJ1K79h3Fi8P6dWqQd5Wq5Nu9l2gPTl6smejCe5k1FjDflv2//Rhq0YMWexn05DVjv7XY/9uPoRY9aLFm2P+rYyn2/+rgyL2ojwAHeNXHlHtkBBgBnSBQv0Ej8g+YZ6INuENHDB9MS5evFsXWolewR0CqVet2gufXWBCQnBsYLKgEzAmCxG1aNtPJzPWtBh6+Qw+Ey5m80PbVq1c0sH8f6t23v8gcff36NXmWKS5n6+LI4bQZs6lT+zYmVefxH1UU30MmsDlBoKpFs0bCziyWEfAPCKT6Df659xG4RbGpzZs2iuxrZFdHP76OQmvJkv0QI4N79Jjx1KGTT6yDTpwwjoKDTNenZQ0TZgs11wxeVG0P2WMSyDdGFdyxVbwrMFWNglsN/uDI8dOEbDlJECifG+BP3yX6TgRzwdHbpFE9eQ+C34Ff2rZ1M4Xs2C5fx3uZAsCtaML+3wqwHNhUzb2M14y6hmP/ry6eavWm5pph/6+WVUg8D7L/Vw9P7kk9BDjAqx6W3BMjwAjoCAEEZOcHLxLZhggkJfshmahsLmWrQVUEe6tWrmBRa+NCImgMHuCg+fMoXfr01LGTj/xwHz1YbLHjBNgAhYn2hx2hJEmSCI5kFJmaMm0mJU+eXEYD3KSeZUqYBHJjg+r4qXOEPiGgE1i/djUdOBBKjRo3o3r1G8g0HeDwRUYvS+wI+E2aSq1atxXZhm1bN6f2HTqRd+WqJhcEzZ9Lk/zGW4Rxlv9catCosWiHIDFoUVavWkGoyt2qTTs503ralEmc/W4BTTXXTNq0PwsebIl3/MmTxxQcFEjPnz2lNm07UPESJYU2OJlQIG/OBE9zEpdp8LLjQNgRypY9h8jGbd+uFU2f4U85cuaSL8O937ZVc3FKxJLwXmYJIeW/s/9XjpUjW6q5l0FvXjPqWY/9v3pYqtmTmmuG/b96lmH/rx6W3JP6CHCAV31MuUdGgBFwMgJeFb1p6fJVIrg3a8Y08p9lKGiDytp42yrRK4hMqzn+cRa8SeHmRmfPX5YDItGr3qOvnXv2U758+cUY+fPkoLdv3zoZAX0Oj4ryh46coKRJk9L5c2epQb1aQlFgePFKlDjqD0FQJHTfHsG3jGBvbCI9kOB3BHcrli9jws9coUJFWrpitYHT9+B+UVyPxTwCOOLayaerCOg1a9KATp86KRpKBYukq5BpPWhAX2Gf2ATrb9mK1bItfTq1N2mPhwxwXyOTMbZj6mwnAwJqr5nwIycI2UCQ27duCq5YrDdJwF+KF2EQZNRvWL+WTWEGAexZu/cdpDx58orTBuXLlZQznlev3SgKFkqCF4m+3ToLbl7ey7S/ndj/a4+xLSOovZex/7fFCuz/1UNN+57UXjPs/9WxGft/dXDkXrRDgAO82mHLPTMCjIATEADX57kLV8TRmeD582ii3zihBYJJqHCOojgoiPPf//xHDnSAN7RWjSoEbtDosic0TDzEQw4dOkjtWpsWy8H3yOAKCz8m2iipvu4EWHQx5InT50W2MwqgocK8JGvWbaIyZcuJIC2yo/EZggB8757daNfOkBj6gzt005Yd4nsEJStWKEsoXBRddu09IILv6Ns9ZxZd4KA3JUBLEhi0SAT6cH+jmB2koEchQvEVrCVkWxco6CHWEeTKlctUq3rlGFMBX9y5iKsiQxsydPAAWrN6ZYx2oHXo3qO3+L5sqWL04MF9vcGiC33UXDODhw4XlAGQP54/pxLFPES2dnS5eec+fffdd2It1qtTQxc46E2J2XPmixMCyHSuUK6UfNpAqsQtvaQCryXWD/5etnQxjRk1nPcyDY3J/l9DcO3sWs29jP2/ncYwupz9v3pYqt2TmmuG/b961mH/rx6W3JM2CHCAVxtcuVdGgBFwIgI4Bg5O1tn+M4QWiRMnpsPHTlGaNGlFIAkP5KLoTYNGNGHiFJFBms89e4zjyKgOPWq0IUCMAGHBfLnMFh9Chujd+49FOxxDHzZkoBNnr9+hcdTMt0cvGj50kJw1uHjpCkED8PnzZ6pa2UsEacHBOy9oIWXKlJmqV6lI169fizGpK9dv0Q8//CC+h51nTp9qduJS/wgCZ8n4s37BcbJmCEzdvfsr7Q/dKzTJndtdZKaD0mTrls3Up5evWCdYD+06dKJLly5SvdrVY2i9bsMWKlW6jPj+8uVLVLtGFbMza9ioCc30nyN+Q8bwyRPHnYyAPodXa83gJdTBQ0fl0wuwC+xjTs5HXKWUqVKJ+wF7JUtMBBAAHzVmPAXODaBHjx6KBm3atqfxfpPF5z69utPWLZsIJ0Dmzgumcp7lTU6TGPfIe5m6dxj7f3XxVKs3tfYy6MNrRi2rGPph/68unmr1ptaaYf+vlkUM/bD/VxdP7k19BDjAqz6m3CMjwAjoCAFkTyG4i/8ogW8S3K4IJkqC4CyKDpjL/rwaeVvOWOzq01HwiJoTKQMCv+H4+vp1a3SEgH5Vkd6CI1O3ZnVvuhEVZaIsCqvdunkzxgSMA+8IrpQuYb7AGi48c/6SCOwjS9ujgLt+wdCRZjjCv2//IfGfWFAxdO7YzkQ7ZMlBgKmxZMiQkY6dPCu+wguUYkUKCAoGczJv/gKqVbuu+ClH1gxmX5zoCBLdqGLrmjEOvG/bukVkxpsTcPMigxfB/LCwA9S+TUvdzF3Pihi/sMALrFUrl5uoiwdscxQNvJdpa1X2/9ria0/vtu5lvGbsQd3ytez/LWPkrBa2rhn2/9pajP2/tvhy79YjwAFe6zHjKxgBRiAeIYAHvIC588Vx82qVvcSRWiVizD1qqRjb8lVrCXyvkAqepWMEixGobNmyDZUqXZb++vsvOnfmNM2cMTXBc/XiuLhPl27UplWzWLMJzdnq4uVIkoKMdWtXj7V4GrLnLl0xBI2vXr1CNat5m3SHwm6t27SnipW8RSA/KipK8DXHxZWp5N6J723wMmTRkhX05Oljs5Qksc1v2co15OVloN5YEBRIfhPGxgoFOJfd3NzEy5ac2TLGaIcsvAYNG1OBggXp5cuXtGfPLlqyaIEJX2x8x9kW/W1ZM+Dxw4sOBG2Bd55cWc1SM0CfFi1b06QpBs7yOQGzBOWMsfCaMW+18uW9aMasAAoODqSFwfMVm1atvQwDNm/RiqpUq06ZM2WmBw8f0JKFC2S6FcUKuVhD9v/6Nagtexlmo9aa4b3M/L3B/t+11gz7f+3tyf5fe9MgsRgAACAASURBVIx5BOsQ4ACvdXhxa0aAEUggCEjHlDFd8MWCN9acgNMXbZEJbI7ntUMnH3GsXSrsJvUBygBkepnjJ00gENs0zdp16tLcwAXiWnNBW+NOFyxaSlWrGThEQeEgUXbg78JFihKKIUlcscbX7di+jXp272KTfgn1IjwsX7p6Q9znnz59EnzHuMfNCbhLkYkCMcfzamw34+tRcK9R/dpmKTsSKu5K5h0YtJBq1qojmpoL2hr3Af7yVKlTi6/Aa238soPXjBK0lbdRay/Di6yQXftEEdHo8uud24JfPq5ilco1Tjgt2f/r09ZqrRney9S1L/t/dfFUszf2/2qiqV5fau1l7P/Vs4kr9cQBXleyJs+FEWAEVEEAGQzHT50TfcXFI4rflyxbSSikAzEu6oa/EYiEE5fk7du39PHjB0EZIMm8ubNp6uSJquidEDoBLyw4eiFVvMvHoHWQMDDOWvjy5Qvlyp5JDjgiOxtcmVLQHRQRjx//TqAYkL67cP4cNahXK8FnjCq9p/oPHEy9evcTzePiRMbvEZeui2KHEGMuWBRo27v/kEmgCnZJmjSZTJUC6oeO7Von+MxEpXZBuxu371GiRIlE4D13jsyx3tONGjcVWaiQ6KcWeM1Yg7iytmrsZXnz5qNNW0PkF1Uo5nb//j36+edfCHQbkFevXonTK6AoYrGMAPt/yxg5q4Uaa4b3MvWtx/5ffUzV6pH9v1pIqtuPGnsZ+391beJKvXGA15WsyXNhBBgBVRAwpmeIi1MXXGWHDh8XQUEECXH0GcFESDffnjRk2AjxGQ/dyAgN2bFd/I0HSASyQAsAMUfroMpEXLAT6XimJU7dtes3U+kyZQUC4MNEtjQkT568tHvfQTmQu3LFMho5fIiwEY7z7ti1j/CfJoilQKULwmvzlIzpGVCwMDYqlPYdO9OYsRPEOOC9xr0vyaYtOwjV0SHv378XmYcSN3aVqtUpeOESkSmPQCUC9iyWEQCPMjh1IXFx6mIPQwY2MrEgxoXveM1YxtmWFvbuZQjgnr94TS42iaB8owa15bWHdYb1BrH0otIW/V31Gvb/+rWsvWuG9zJtbMv+Xxtc7e2V/b+9CGp3vb17Gft/7WzjCj1zgNcVrMhzYAQYAVURmDMvmOrUrSf6jKsA1JHjpylTpsyi3ZZNG6lvnx7iM4q2hR85IYJR0YO7kqIpU6aicxFXRKBx7ZpVNGRQf1Xn4Kqd3b3/WOC6b+9u8unU3uw0vSp607IVq8VvoAlAwBFHlHEdjt5K2aMohocAvrHAHjimnjJVKrp791eqUK6Uq0Kp6rzCj56kLFmy0vNnz6ho4fxm+0bwEAGpb775RvzeoV1rOnggVHxu1bot+U2aKj4jgOvtVY4ePDAEJiUxzjBt0qgenT51UtU5uGJnpUqXIRRYgfTw9ZFfMkWf65RpM6lZc0NBtYcPH1CZkkXFZ14z2t0V9uxl0Mo4qIK9qmL5MjFoUaQTJtgHs2b6hU8kKDAn+38FIDmpiT1rhvcy7YzG/l87bO3pmf2/Pehpe609exn7f21t4wq9c4DXFazIc2AEGAFVEZgfvIhq1Kwt+syS8WezXKLGGbqgXijikVfO3j197iKlTfuzuD6u4C0y5lKkSCGO1JYrXVzVObhiZwi+/vbgyf+x9x5gUWRZ+/j5f/vb2dndmdlxRiesjjlHUDGLgJgT5ohkBQOioqiYc0BBTCgggmJEUDGLgDmLGUyjjpN1R2d2Ztz59tvd//Pe3iqrq6u6q5sGoeue59lnR/rWrar31k3nvuc97NWOHT1Mgf4+Jq8JFi4SeAns6MUL59O6tatYuTXrNlD3HgbJDHPO25TU7YSkCXCKoP25WUYASbwgPfL82TNq4mxgQMtNytC9dPEC9etj0IVFOPnpc5cYgxrmM2ywogTDH//4Ryq4/5iV2bljG02aGGb5wXReQqrz5j1kIJ08mWuCSO3adVhEAfoXDqSgOX7nzm3eZ4rw2ynsWNbLqzfFro5jT4iokabO9enHH380eWLpwYla+xfha5bKqvn8XzKbrbB9hs//RdeufP4vOmwLUzOf/wuDXtFdW9ixjM//Rdc2jlIzd/A6Skvy9+AIcATshkCbtq4sARdszuwZtDHBkNRLMDBEk5K3iGH+fXv3oMuXLrKfkRk6Ymok+29oHzo3rKPKmsq/94hpJ167lke9une22/M7ckUCaxrYtmzmTK9evRJfF4umQ0eyqU7duuxv0iRskNMAqxoGJ1a7ti3pyeNHilDt2XeQnBs34VIAVnxIAgMU2Hbq4GaijTxj5hwKHBHMakQyQjikhMRP6Xv2U5OmLuy3kydyyXvoQMU7QyMZjmBY9IplFLMiyoon1GdRsNYePv6KMXHPnD5FQwb1MwICWtU5J8/SO++8w/4u1QTnfaZovxlbxzI81e2Ch2KbQWImJTlJ8WHHhU2kCeEGeZo2LV1MWPFF+4als3Y+/5fcdrO1z/CxrGjblM//RYuvrbXz+d9W5Ir+OlvHMj7/F33bOMIduIPXEVqRvwNHgCNgdwQE5ysqXhG1lDk+/vWvf7FQ8rnzFzGHCQwartOnRYj3v3H7nqKOpfwBa9SsSVnZp9ifORtRe/ONDR1P4ZOnsAuQNGjQgL5MpxXOv/UJSaJ+7m+//UYujRuIrDY47LFxh8EZAqeImkGzFNplnFmtvV2qVa9B2bmn2QVgFEI+Iyc7i5A4bebseWL4P34fPnQQnTiRw8pKExrhOqcGtUXHr/zuODjBAQqMsxG1t41wYIErcnKOU1joaHr54gU1b9GSEjamiBqunz98QO7tWosV8z6jHWNbSto6lvn4+rM5CPbwwX3ycDNojSsZ9MahKc6jEaxrIT7/W4dXcZW2tc/wsaxoW4jP/0WLb2Fq5/N/YdArumttHcv4/F90beJINXMHryO1Jn8XjgBHwG4IIGw5Y99Bo+zk//d//yfqh+JGcpmA3n36UUzsGvYMCHHu0tFD9XmkYaATx4dS2q4dRmXhjJwYHkG1atdh2dCfP39GqZtTmKMZm3U9G0KTEaIkGBihYEILBg3XoYP7i6zqMh98QHnX7zDGNRy/SIaHtlQyaUgb9GGhEys1yAksWhpFTo2c6d333mMJjVBu/rzZhMRverbBQ4bRoiVRIrMdDlvo7QJ3GNi98+bOosT49SJMUh3RtWtiacmiBaoQXrp6g8A4hdWuUdmIvY2/BQSNpMGDhzINbPSRp188oeVRS+nQwf16bhbmZD90NFvUCwcY8j4D3d1uXTowxy/Mnn2Gj2Xqn5+1Yxlqgo44NMJhPbp2ZAnUlAxtePXabXYY+cPf/kbOjQyRDYLh7wsXLyPXdm5MXgXj5s0b12nu7BmiRIdeOw6f/0tuy1vbZ+w5lvH5X/274PN/yewzfP4vme2Cp7J2LOPzf8lty5L2ZNzBW9JahD8PR4AjUGIQgI7u7j2ZjGUoNTiqFsyfQ/Hr1xn9/eyFK1S+fAX2t06eblRQkK/4LtIEa9hUw1mFOgULGx9OYRPCRceYtJKvvvqSOndwJ+j+6tkQdowTcIFJLWABR1X3rh2NnK0xK9dQ776G0PSVMcsZI1vNpM4TeRu6urpR4qbNzOEuNziO+/ftRdev5em5WZh28boNicypKDV858OGDCBo7woGzd0Hj75k3zkcjvVqV1M9vJAenkilN1AXvoHNqTtEhra8AdT0mvXUUMAYGLV1bWfy2sAnKMDXaAyyV5/hY5nlr8yascyjfQcmDwSDYxcOXjVL2JhMHToapH9WxUZT1NLFYlHMbfsOHGaOXblhLoI0UVJivOWHd+ASfP4vuY1rTZ+x11jG53/L3wOf/y1j9CZK8Pn/TaCu7Z7WjGV8/teGKS9FxB28/CvgCHAEOAIWEHBp1px6efWhjz/+mM6cOU1796QrsjWRAAwLKXmos7z6pJRU8vDwZH9O2phAs2caNHth0kQg+Pf9e3fp6tUrzHklOI+RTMfTvS19//13um47JN3y9Qukho0a0d/+9jfK3LeHLpw/Z4IJdFsh4QDWbvUqFVQ1kQcOGkJLo6LZ9cDd08Mg6QCTs1OAfU72cWrUyJlq1a7N2h2sUb/hQxUThOmtoeCQxWbvf373Ozp29BAdOXxITEIoYIEN8+atBua6XOpEjte1G/mMVQqTal7DuYv2FfoG2vjihfP04sUP5NrOXUy2Z8kZppf2wWGVt48vVa9eg27fvkV792SwMH+52aPP8LFM+1eldSyLWrGS+g8YZNIP5HeCc/L8pTw2LoFJX6dmFTFqAfJABw8fFw+qoIV9POsYlStXjpq6NBOjVCwx6rW/Xekuyef/ktl+WvuMPcYyPv9b9w3w+d86vIqrNJ//iwtp6+6jdSzj8791uOq5NHfw6rn1+btzBDgCdkNAmgDK3Ma4kZMz7dt/mN0Xzqj6daqLoeZ9+w2gFTGr2G9gUQX4DWfh/4JFTp9FI4JHsX/u2L6VJoePt9vzO3JFdx88obffftusbAY0d6/dLBClHuQ6safOXhTZwnKnPE7VE5NS2O9ct1f7lzQ1cgYFh4xhF3T0bGeSmE2oCZrLYGvD5PhuSEiiTp27st/gqPJo15ppM8Pg3Np/6BjVr9+A/RuyHadPndT+gDouWdg+w8eyovl49u4/TE5OzsxpW6OqcWSJ9I4HDmeJ371U4x19AhnvBamTe3cLqKOnm3joBcdwVs4pdjCCA6tqlcvrXhJIS0vy+V8LSm+mTGHHMjjF+Pxv/7bj87/9MbVXjYXtM3z+t1dLGNfD5/+iwdURa+UOXkdsVf5OHAGOQLEjIA0h79m9s2qo/uWrN6ncRx+x55OyFiHbAMYVNEth48aG0J6MdJP3yDlxhqpWq07Pnz2jJs71i/09S9sN4dAAsxqWnraLxocZHIpyk4YzyxnYZ85fFmU69u3dQ2NHjzS5fv7CJeQ93BDm3qBuDabNy808ApAMgP4nMKv8mWmoOK4GMxcMLEGKQ5pcrXOXbrQ+fiO7CRxe7d3aMAew3B4+/oogB5F17Ag7NOFmHoHC9hk+lhXdFyZIyECKpnWLpoo36td/IC2PjhX7RROneqKkD/6O32GQ+3Ft3dxEjxws3t0ZmazMhLCxtDttZ9G9kIPUzOf/ktmQhR3L8FZ8/i+atuXzf9HgWthaC9tn+Pxf2BZQv57P/0WHraPVzB28jtai/H04AhyBN4JAlarVKPfkWXbv2bOmK+oXIvwfMgCwb775mlq4OIvPmpV9kmrUrMX+nZ2dxUL9lQxMUc8Oncw6xd4IACX4pgIb4crlS9THq7vJk3bs1IXiEzexv4NVDceJwAKdPXcB+fkHst+UEhUJlUkZCz7DBnOZBg3fA3Smx0+YxEq6NG5oIjmCjcaJ0+fF5GCQEwgdE8zKv/fee3Q57xaBeQ2bMnkibdtq0CaVm5ZFsYbH1VWRwvQZPpYV3aciMHjAVkeySLkhCRT6jNAvxowaQZn79rJirVq3oW07drP/BjsXzt2nT78wqQOHKY++MLDgkfwTSUC5mUeAz/8l9wspzFjG5/+ia1c+/xcdtoWtuTB9hs//hUVf/Xo+/xcdto5WM3fwOlqL8vfhCHAE3hgCgk4o2IS9unc2ykQeMTWSRo02bJSxuW7XpoXINnRz86DkLdvYb0hG5dSgtijbIH+Z7NzTVK26gSEKeQdulhGQah5PnxbBmNOCQSd20+atIkNU6iiELtat/AeM/Qnr3asbXb1yWfGG8xYspuE+fuy3Rg1q08sXLyw/mM5L/OUvf6Ebt+8xFMAmBAP31atXIirSMHMw1ps2biCGkku1yO7cuU1dOnqooikweM+dPUODBvTROeraXt/WPsPHMm342lpKqhN++NABGhnkL1YF5lTuqXOi7nT28WPk5zNM/F3KRDQnI9S4SVPK2HuAXTd3zkxKjF9v6+Pq6jo+/5fM5rZ1LOPzf9G2J5//ixbfwtRua5/h839hULd8LZ//LWPESxgQ4A5e/iVwBDgCHAE7IYAQfYTqw8AEPXPmFHMIenn1ITB8BJMzfI/nnKLqNWqyn6GrC31dJQOzCs4q/L88CZidXsEhq6lduw5lHjwqJhW6efMGZR09Qm1d21GTpi5MqxWWk3OcfL0NDGvYnHkLydcvgP23OVY1fodGX8WKleif//wnS+QmN7SZu4cnubl70JdPn9L+zL3Mqal3g8QCpBZgOLRAu7x8+YK8+vSjMmXKiH2pa+f2okYvHO4F9x8zORPIO4AJLzCu5XhKE7nJtZOFspCB8Ordl8qWLUsXLpwnOM70brb2GT6WFe2Xg3EEUj4ff2yQNIFUw4HMfVS+QgVCJMJbb73F/o4DkeYuTqL8QvMWLWln2h7224sffiCnhnVUH3TZ8hgaMHAw+92c3FDRvmnpq53P/yWzzWwdy/j8X/TtWRLm/6J/y9J3B1v7jD3nf+jAd+3Wgxo0bEQF+XeYVJCUAFD6UC38E5eU+b9hw0bUvUcv+u1/f2MJWq/lXS38y/Ea7IoAd/DaFU5eGUeAI6B3BHr07EWxq+NERqgUDzh9w0JHiSGz+K1evfp08MhxVuzZ998zlqKaTZ4yjUaPGcd+VkqyhgRu//n3v+nGjetiFWANp+/epeoA00t7VapchQ4cOiay2+TvvSkpkWbNmCb+GU5fhKkh1BmMa+gdQ6JByaRtqJRkDc6SJctWmHwTcP4PGdRP94tWQb9YCduXL1+SV8+u9Ojzh+LPUjb8kcMHaUSggTmtZFIWsDzJGjYQaemZVLuOsbML4e+RUydTRnqaXrqH4nta22fsOZZBgsPdoz1BlkMwjK3ff/89XTh/TtftAidu5oGjJt+tAArG/369e9Bvv/0m4nTkWK5YXk3fHYWxgcy/94glpVRLsoYDmcuXLtLz589Y/WA6howeS7ExK0z0fPXWUHz+L5ktbu1Yxuf/4mvHNzX/4w35mlm9na3tM/ac/6URWsITYj5K3ZJCiMLTs73J+R+O/13p+5hEmtRAsBg2ZADdv2eIyOP25hHgDt433wb8CTgCHAEHQ6BGzZo0b/5ixg7FZAzZhfv379HY0cFGjiq8duq2XdSmrStDIHhEAB06uF8RDbAW79z9nDkcwVoEA0suA5B3/Q598OGHTFfx0oULVL9BA6pZqzbbqENeQO+nrFiUzJoznzFG33nnHeaMAFbLly02crqjAXx8/Wnu/EWsLdQSqwkNZeQ8CR1Fe9INOpcwKRsO/0bbCYxh/BtMu04d3EVniYN1Bc2vA/bh1GnTqWKlykwS48cff6RLF8/TqOAgI0cVKoSsA8I78V07N6qrKoeBzdu+/YfZM8gPT7BQTcvINHL4oz4hmRuuWRG1lFbGLNf8Do5Y0Jo+Y8+xLCl5C3m070Bw8J89c4reffc9xriHRS9fRjHRUY4It1XvNGZsGNMH/7BsWXbd999/x1hOSxYtMKpHGgqNjVjzpk6q95kWOZNGhoxmvx89coiCAnyNykLj99xFA1vn9u1bdK+ggNzbezK2/c8//8xkgzDG6dn4/F8yW9+asYzP/8XbhsU9/wtvx9fM5tvZmj5jj/n/z3/+M6XvOWB0eClfl0Fqa/DAvrqfZ4p7/kdyVuxnpGtk6X4G0YvDhw2is2dOF+/gwe+miAB38PIPgyPAEeAIFCECcOaZ2/BevHKdhdv++uuvVKdmFdUnkYYLnjyRS95DDZnQBcOkm7Jlu+gEkf4GZ1mj+rV0vyCSYmKpXdbGxVO37j3ZJUi6hlBoJXNp1pzS0vexn+CMAs6CzZo9j/wDR7B/4huAYypu3WrmrJo+cw717tOX/QbHDJKMcTMgYK5tpBme865eYexeNZOGC0q1l7FpuXT1JmMpwh4+uE/jw8bS9Wt51N6zI61ctVZ0/I6TOez13EaW+oy9xjJgHD55CotWkG4mhH7Urm1LevL4kZ6bwuTdzbUNWKWr125g10QtXUyrYqMVsQMTF4cnOJRUkz6BDM2WbTvFxIfSirCxw8ab22sEiqvP8Pnfuq/OUrvw+d86PO1Zuqjnf+FZeZ+xrtUs9Rl7zP/Hjp9gpBQYDgynTJ7AyBd169Zj6zLht4MHMilkpCH5MTfza2Z7zP8tW7Wm7TvTRagP7N9Hc2fPpBcvfiAf3wCaNn2muG7HHgh7Tm5vFgHu4H2z+PO7cwQ4AjpH4MGjL5mWqLnN8WefVaSTZy6Izg7XNi1UHRzQRloTF8/0YAUbFRxIB/Zn6hxp615fYOX+9NNP1KBuDcWLseAFA6TMBx+w3xcvnE/r1q5i/w326N7MQ+KiZ3RIkEkbSEMTzbWpdU/u2KWlYYBzZs+gjQkGx5Xchgz1pkVLDCxPbBTq1X6tgb0n8xA5Ozdmv33+8AG1d2/L2MCCffTRx0xTGQ7gvLyr5NWji2ODaqe3s/dYhn61Zu0Gat2mrfiE2OyNGWU4NOGmDYHFS5fT4CGGZGtgvKtJzSDZpLt7e1bu0sUL1K+P4YBLycDmQYQDGFcwSzI22p5Uf6Xs3Wf4/G+fb4jP//bB0d612GP+lz8T7zP2aaXCjmVh48Np/MRJ7GFAeOng4WpErMB6G4f2SDJtiRBjnzdyjFoKO/8javTq9Tss6hEGmYxpUwztJBiSVaekbmf/5BFWJeO74Q7ektEO/Ck4AhwBHSIgZSNCazJ0TLAiCjknzlDVatXZb5Y0R1EGrFGwR2E8GZttH9aVvFtUtlw5+uabr1kSLyWTOmjBwm3WpBFjvkFi4Mq12/T++++zy9RYc8h6f+XaLVZGrgFs21M7/lV9+w2gFTEGJ3qvHl0UZUfA0AX+QsKpCWFjWei6vG/A8evcsA797//+rwlwYGWDnQ0Zj2qVyzs+sIV8w6Iay6ADeOLUOXZQgnZqWK+m7jWrrW2q5C3bCNnNMTZV/syQnE1ukAlCiC0Mztq2rZqpRi0I127bsZtatW7D/pmUGE9IHspNOwJF1Wf4/K+9DdRK8vm/8BgWRQ2Fnf/Vnon3mcK1VmHHMsjaHDt+UiREdOvsySSA5BYyaixNmWaYZ9TWf4V7E8e7urDzv3SeNxc1d7vgIXMCP7h/j5EmuL1ZBLiD983iz+/OEeAI6ByBazfyGQMUTEL3dq1N0Jg9dwHTWYS9ePGCGjeqa8Q2lF8Ap9at/AeiVm+H9q5c+N6GbywpJZU8PDwJulJgf0oTFqE6hPInJqWIC1IpztExq6lPv/7srtD4bdPSRfEJkOQLbQVL2BBH8+bOsuFJ9XWJVE9UyamEjcbRrFwxlO/0qZOE5Gow4H3tZgFzwMMC/X3o2FGDRq/cNqfuINd2bqz9q1epoC+QbXxbe49leIzDR3OoTt267IkWzp9L6+PW2Ph0+r1s4KAhtDTKIMvQt3cPliBNap988illnzgjsnFnzYykTRsTzALWuElTyth7gJX5+9//zqIc9K69a8sXZu8+w+d/W1rB9Bo+/9sHR3vXUpj5X+1ZeJ+xTysVZiw7c/4yVajwGXuQXTu3U/gEQzJpuXkP9yUQK2BdO7VXdALb520cp5bCzP/Y52zctJmBgbWwS5OG9OKHHxTBuX7rLiO1FOTnU6cObo4DYCl9E+7gLaUNxx+bI8ARcAwEsPHGBAyTJ7WZGjmDgkPGsN+wee7RtSPdvHnD7IvHrFxDvfv2Y2W0sH0dA0X7v4WU0QYWb3u3NvTLL7+wG4ENhw2goA8qZeginAnJ8OBERJvhJBsar0rmFxBEs+fMZz9xGQ3tbQj5BEGCZEbkFEpJTmIXoz327j9MCLmEgaGLAxHBOb9w8TIaOmw4+w2JOgYN6KN605t37rNMwd999y1jZnOzjIC9xzIk3olP3MRuLE+Sp/Y00O398ceXdDzrGGPfczP0i4ePv2L/DxZ0r+6d6c6d2wwayJEczz0tZsW2pGst4Hn2whUqX95w8KFFp7pW7drUp29/OpGbQ+fPnTV7SKmnNrN3n+Hzv32+Hj7/2wfHoqjF1vlf7Vl4n7FPK9k6liEKBCxRGCTRoOEqlcySPp2UTYpoFH6oaLntCjP/5546R1WqVGU3mTtnJiXGr1e8IZJ7Q64Otj9zL40O4TJallumaEtwB2/R4str5whwBDgCZhGAE+nwsRxxs/yPf/yD8vPvUM2atURGFSrQwl6DVi8Wv0I4s1OD2qJTkjeD9QhsSEiiTp0NSbyw4Lx39y6V+aAMS4onWG5uNvkMGyz+W8q4zjp2hAL8DA5FJTt0NJslj4DJtTGhbYnEetho/vnP79DLly+YTvPiRfNVT9Ctf8PSeQUcuGkZmYylDgOz/cmTx1S/fgORnQtHFhI+CWxFLHLvPngiJpBq6tyAnj9/pggA2gRtA1PSIu3QsTNFTJlGn/61PGM1fPXVlxS/YR3tSTdsUvRq9hzLgCHY1mXKlGFwoi0tZWd2dXWjzVt3iPA/f/aMkjYmsMSGkNrQs/n6B7LDJMwNMHyzv/7yC1WvUVP8G2RmPNq1ZoxccyZlUalFnsivl24UMZaiLRfMmy06mvXaNvbsM7bO/9Bn7ti5C1WuVJmefvmUNsZvIMxrerc3Of/rHXtz72/L/K9WH+8z9vvSbB3LBL1rPIlUTkv+ZFjDFdx/zNZ98rwKKAs5p8VLoqhGjZr0+7feomfff0fpu9PY/K/mMLbf25fsmmyZ/5FHZN9+Q4Qb1lJNnOurvmTE1EgaNTqU/a5lr1qy0XKMp+MOXsdoR/4WHAGOQClGAAuXjH0HycnJVOsVjqogfx9NG64Dh7OYkwtmLlt6KYaq2B89cvosGhE8SvG+sStX0PJlhnAxwe49/IItQLGgbOxUT9UZi01K5sGj7DI5S3Rs6HgKmxAuOiul9aPeSRPDKG3Xa0dWsYNSAm6IcD5874LOsfSRwPbs0a2TEYMTeI6fYEgMgQzAo4KDVN9C6niXM6vlC2X5ffv26amaALEEwFbkj2CvsSx88hRCP4BpZZVKtcqlL4qELCMD/ejkydwif/+S3YakigAAIABJREFUfAMcTMRtSFQcV+BwhZSJpY0wIhPAbv/Tn/7EXrWTpxsVFOSbfW13D09KSt4iOpKlhbOzs9j8pmcHvL36jLXz//tlylDmgSNGCVmFtoHjvnvXjro/IH4T87/QBnCw+AeMoPr169PHn3xKv/3jH3T3bgHt3LGV9mS8zmhfksecono2a+d/tefgfca+LWTtWAbt3azsU4rrYPmTSZ2IcpaoIKmi9DY4sOzbuzvdLSiw78uWstqsnf8RDSfsSZHYFglulQxrAkQtCvseMLDBxJYaGL4TJk4mJ+fGhEMV2OPHjyg76xitWb1S1/N/UX1G3MFbVMjyejkCHAGOgJUIIPR/TGgYVapcmX7++9/p3LmztGpltKZQY2yiN6WksjsiSzoYobYaJmof3wDq0rUbxayIohMncmytyiGuq1K1GkVOn0l169VnYc5Xr1xmzECwO6XWoEFD2n/oGPsTtF2h8apmUtYCHLY7d2xjRXt59abY1XHiZV9++ZSx3ZydG7PswYIsxMqY5bQiaqlD4GvrS4CNiOQo/fsPonLlytHX33xNuTnHWRZfuaMK2ZfBVkRIHxagP/74o+Jtpdqi8n4k/Q31YJONhBJdu/egOnXqsraBoyrA11vTgYyt710arivMWAYmELI2//73v2ft1bJZY01jIHBBG2DTOHjwMPLq3Zfpmwu2YN4c2rB+bWmAr8ieEdhOnhJJrVu3oXfffY/u3btL6bt3aT4wkobhHs86Sv6+3pqfFW3RqlVrCgwKZhs9YSwDO6hViyYmOueaK3aQgoXpM9bO//Xq1WdREIKjHv3siy+e0Kef/lVMTonIiM4d3Onbb79xEIRte43inP+FMWz5ilhRx1/pqV++fEmzZkzVtaPXmvlfCUPeZ2zrD1qu0jqWIUrN1y+AVRkWOpoy0tMUq4dOMpJ44f8xVkkjsFauWkdevV/LbeFA+PHjx9SiZUs2nsGwHhwyqB+T5tKzWTP/Q9YJzltL7N0ZM+dQ4AhDgvDs48fIz2eYEcQ+vv40Y9Zctp5TMkTBbU5OojmzZ+i5aez+7tzBa3dIeYUcAY4AR6D4EYD+EU5JYZAMsDbEEotlZCiGLixC1IXNN+pbuyaWlixaUPwvVcruCP3PyVOmsacePnSQqmNcqi2Kk24kKIKhDe5//lRcCCG0bNGCeSIKYK3AgYywdSxY4cR/+eJFKUPpzTwuktkhyZq5pHd4MmmyDyw4NyZsEB84JnYt9e7Tl/1bzt6GEwDhbFhAQ6sZ8ihg33OzHgGwPT3ad2AX7ti+lSaHG5i8thjCz6G9jPFMq465LffRwzXYLJ+7eJWNU9iUQd9aztTRigOSJe1M20u169Rhl0BKBQnguNmGgDXzP5wkV67dFnWXkRSnX58eojQHpDywDoDduHGdaf9zs4xAYed/3AGHU7t27xOlafC3+/fuMubuBx98SA0bObFM9YKlbkmhaVMMkSncrEOA9xnr8CqK0jt2ZVCLlq3YerZa5fKqESTSxMUgPECyCdbUpRntzshk/435fdiQAYTEuoIhSRikVuCoxEFV86ZORfEaDlcnojuu3zQwns0lvcOh7aUrN8Q9S+sWTQmkFBgw33fgCOEwUTDIQN24fo2tIerVb0BI8CqYVrknhwO7iF6IO3iLCFheLUeAI8ARKC4ExoVNpAnhk9ntkIStexeDc0SLwZEyYmQIWygpnbBaShSm5R56KYNss1hQAjMkgFAybK6hLQqNXZiUVdi7Tz+KiV3D/q62sZayhDN2p1HYuNF6gbdQ7/n46bdsUZmRvpvCQpUlN6T9CGF99etUN7qnVLqhTUsX5iyWGhayB48cZ3+SO+cL9fA6urh27Tp0JMsgpQBpBRx+FDZ836tPX1oZa2DuyjWzdQRtoV91z76D5Ny4CatHSZ7G2hugP2JzWO6jj9il6G+W9H+tvYceyls7/2/avJXc3dszaB49+pzpLssjHoS5DH+vWumvPJmRhg+psPM/HCKX826Jzl0wqoOD/On27VtGdwcjbubsecyBsn1bKkVMmqDh6XgRKQK8z5SM7+H8pTzGsoUmfKvmhrlFblhXQUoD8wXW1h3au9L9e/dYsYSNyQTpAZhaVJtU2gERJ4g84WYeASkJBcmI1ZjP0jXBxQvnqX/fXmLFW7enUes2bdm/QXqYGjGR9u7JMLqxS7PmlJi0mXDgizwarq2b86axEwLcwWsnIHk1HAGOAEegOBCAdmtCUgpNmRzOwmHgKLx+664YzgzHk3CCqvY80HYbGxpGbV3d6O233xaLgZWFSfrDD8uKzKqDBzIpZGRgcbxaqb/H4qXLCYxBWN1aVRX1C6WJW+7dLaAO7duJ7y1dLPXr09NEAkIoCL0rtDsWXVh8cTOPADYGnz/5mrE4T508wVgecgM7GgkKBea6UlKvkFFjacq06ezSxQvn07q1q0zqEZjCUpYJbx9lBOCgOHnmAm1L3UKrYqNZodyTZwlsaFjk1Mm0ZXOyXeB79MU3rG0thRva5WYOUAk0qzt37kYjR/gzTWkke0zdtou9GUL3wVC3h0klH8yF6NrjXo5QR2Hnf6kEECIMmjrXV5SrGebtQwsWGSSAvIcM1L1+tZZvp7Dzv9QhouZ4F54DB2Ebk7cwh0hhD8C0vFtpLsP7TMltPSH5JiRHIJ0lN6zdLl65Th999DH7CRFV0lD+/HuPmMwM+kCNqp8pMoBx7aWrN9j1c+fMpMT49SUXkBLyZC1btabtOw0632r6u1JCCpKDuzRuIEb0QDpt1mxD9CF+a+/WRnVfCknA47mnWZ4E+WFWCYGjVD4Gd/CWymbjD80R4AjoFYGs7JNUo6ZhIXTr1k169euvhFNQWHraLhofNkYVmnkLFjNdSoSRCwaGDtiiSRvjaW9GOhPAh9MFCytsALGRx+krN8sIwDEFBxXsyOGDNCLQz+iiaZEzaWSIgXELbJu7ODG9ZMEgvwCGrjkGMGv3/8oNQAu4d69uJg8Grdgvnz4lhENxMyAgJIwA7gg5liaGKlu2HGGjAQkHGPSQoYssNzgk7z54wphT0PBF35Ay38BEASNF6JvdOnuKVYwYOYp8/QNo3NhRqo57vbXV7LkLyM/fcHiEfnDgQCZ5D/dl/8YhFcL9rDWwfeSbBFdXN9q81ZCUUH6oYm39eigvlYrBWLQ/cx+1bNmKypYrx14f2uLQGLfGEIqJTfjz58+MLsOhSsWKldjfEHmCCBRu6ggUZv5HrdCxFEL8Z0ROoZTkJMWbSRmOStEKvI1MESjM/C91iKBmHKL88LfnlJN9nGKiozizvRAfXEnpMwIDtRCv4nCXSpPfyg90gReYu0KIPxjtbVs1M8IA6zGQVL755mtq4WKapBqFpXIDy5YsotWrYhwOx6J4ISm27q6t6NWrV+JtoLGMSBC0kXxNUKt2bTp8NEckS2DNDXmMWzdv0OJFC3SdhLgo2kmtTu7gLU60+b04AhwBjkAhEcAmIm59osiwFarDKSnCmdV0PwcOGkJgS8GwaX/44D6lpm6mLSmbjK6RZhVWWwzhxBUaftiwQzdpc8om1eQIhXzdUne51GGBZA+xK6Pp2fffscRGru3cxPcZFzqK9qTvNno/MKbAnIIN6OdFF86fM3l/OENwDxjq9+rZ1agMWIpClvutqZsJm3h5+G2pA9UOD9yla3eK25DIakIfgYTC9q2p1MurD40eO050enz33bfUrEkj8Y741tcnJJFTI2e2URAWtCggDffHocnJMxfF8FopwxeyHHDKoy4YWPJgxcudXXZ4zVJVBVjoK2JWUafOXY1wxUv06tGFruVdtep9cNCVlr6POUdyc7Jpy+ZNTLMSByuC/Ay0xKEpzs08Agh7XbY8xkgLFFfk37lDnTu6Ww3fseMnWJLDO3du0+60nUyHb8rU6eLhJA4REfXAzTwCts7/qBWh/XPnL2I3wPzv4dZG9WaQmoFjBXNHlYqvdRJxAZ//1dvIlvkf8wOicoQxCusz6TyDf2Mu16q1C7Y9SADffP01Xbhwjl788IOuu1VJ6DPQtIa2NZiqBfl3aMXypYrrO701FELzsZcQvn2QVNbHraFq1avTpIhpVKWKYU7AXgNsdUg5SE2I+MHvtapXUmSzjxodSpBpgCExMaQcpIZ1SLfuPalcuY8oP/8OnTt72siZqbc2Ed4X8/+AgYPZP599/z07aMK6KmT0WBoy1Ft04O7P3EujQ0aIMGXnnmYJoWHysQx/w77Fe+hAfmhVxB8Wd/AWMcC8eo4AR4AjUBQIdO7SjZYsW0Hvv/8+qx7yCosWzlMMP4LTDw4mLGQw4U4cH8o22XKDHi8SHMHMhTLLs9aiPDboiQnrafmyJUXxuqWmTmx+Dx05Li5w5A+ODTM2atu2GnCWGpi3GXsPsD/BSeXm2tIkiZpU4gFh7VFLFxvVAZb2cJ/XzGG0y5xZ01myKr0bQsqiV642cSYKuDy4f485zAUdUCSQOJZ1QtQIRdt9/fVXbDPy8ccGjeWjRw7Ru+++R2g7wYGLpDhdO3uKByfof2gX6aIYdUF+YNaMabp3wCOx0Lq4BDEyAbhioxcxeYJVieqkydmUvnU1XWs47uXJCrFBgRNM7zZxUgRBmkTYgMNZNCokiCBBotXA3gWzXeq0kl6LzTmiHbg2olZEiayZ/4Var+TdElnYiGJAf1AyjHtXr91mG3gw65HMU2p8/ldvJ1vmf2kkw6WLFwjyTBgTw8aHs3ZGxAgMyfA6dXh9SCx/iqCRIQTmtRCJIvyOSK9Av+GM5ahne1N9Bg58HLpL5dDQDnCahU8YZ3VCZEdrQ3zrezMPi3kp5O/3888/04C+vRTD96VRcULfkV9/+epNcQ2HQy3pvI7E0sujY43mJqzNTp7MpdDRwYryNY6Gv7n3kTp5lcrJ84BIk95hHd2wXk1GjAgaEUzew/3EsQn5FVq3bGoUwagnXIvjXbmDtzhQ5vfgCHAEOAJFhMDkKdNoZPBocRMABmLwiABC+L5gf/zjH2lz6g6RLSVsFoJHBtCjzx+K5a7dyCds7mDDhw6iEydyFJ8ap+HQgPv00/JUvUYNo+RscJL169tL16wRODJWRK+iHr28jLCB03z4sEFmdaakm2cwTVdGL2dsUzhB5HrLjZ3qGS2QIDUArTFBR1baeAhvGx0cpLqpL6LPs8RVC5YnEtlBc1cwLOjBppbLmwgJQFAO/Qo6Yli0YhN//mIeffDhh0bvh3qQwRltjIMUucHRtWbdBpbQUDBsXmZOn6p44FLiwCviB+rWvQctWrKcJdyAISph/txZLEJAq8EhOTZ0PNuw4XDjqy+f0vPnz2lragpl7ttrUo2w+f71l19o27YtdOniRZZ0slXrNkwCB7IBSm2p9XkcoRzY6egzSCApGFg4fr7DNI/ziDzYtnO32O/grPr3f/5Nt2/dpHlzZlq9kYYcit4dVmgLLfM/ykkPb9UOOoS2lSYuUjpE5PO/+V5t7fyPpKtlypRhlcodUFiP7c08RJUqVWa/b4hbSwvmzzF5AOhlQjdTMDlzDmsJzEtqyZIcYZzS+g7F3WcwVkGKCG1Zt159qlu3ntEaTa1Ntb6PI5TDWipxYwpL4ikcBOIbBqMWzl1zyTfPXrhC5ctXYDBAlmzu7BniXG+kHf/DD+TUsI4IF2SzImfMMlqLYY0t3B9OSPQZOI71bGCfTwyPMDo4wtps9sxIE6JK8pZtBPkGmJwtDVxXr11P3XsYErFZOrAyhzmf/y1/kdzBaxkjXoIjwBHgCJRoBOAQWbl6nZgZGwzdtF0GzUmpwbmFCRaOJhgWUEiihvJwEo+fOIn9/dq1POrV3ZCZ1pJh0kYYD8JtBYeXrfqZlu5V2n4H8wYL1vIVKrDQJjlLUO19Fi5eRkOHDRd/hnMXGlZwRgnJJpSShe3avZeaNW/BrkvamMCy0qJdpMyRkydyaeyYYM3PUtow1/q86AMuzZrRN998Q5cvGSQvpIZvOe/6HfYnsBZbNm9sFLYHBzF0e8FsRPsge7D0UMXcczRv0ZJWrYkTWcAoi6Q6cMDrPckExhMksgsMCmaHVlnHjlCA3+u+oKV9Mc6hL6Cu0DHBJpmbpXU4OTdmsg4CQ1X6Gx/HjNHGod669QlUtVp1xjpv2awxG5esMUFnHNc1b+pkzaWM1Thm7Hhq79mBbTbRZ0aNDGSyD3o2LfN/1IqV1H/AIAZT3949FMc8/CZlW8MpWKdmFbNJvPj8r/7laZn/4fTDwbowB7i1bWlSIQ7o4QTGPA5HV/061Y3K4FArdNwE9jf0SzhW4JiHEyQwaCQFBI1kYyF+g2489OP1bm+yz+CAGFERY8eNF4kZ06dFWHWQ6ajth3HdpVkLhguSSGtJIIhrtu1MZ/krBINz9ttvvqZPPv0rS8IGk2qOoz/ce/gFW1PDxo0NoT0Z6ezf/foPpFlz5rP+hj1Su7YtuW4sEUFbt379hnT58iVVPMBUx4Ew2g1zh5Jk4KGj2eyQA4boEGkeEnPfNZ//rev13MFrHV68NEeAI8ARKLEIQDPP1z9QMUGU9KGR0AOOPyGkHJMwWJ9YVGFBg+RGcq0rSy+NBRN0+4SJe83qlbR08UJLl/HfVRDAYnXa9FnMYSuEaApFsXhC4hspg03QH0UZbAKhx4y2xIJ1ydIV1LtvP5GZgOsT4uNo0QJDlltupghIddvwHeN7lps0PNAWFg423hFTIsV+iPpzco7TuDEhut+EI6xvwcIlNGXyRCP2DvoFohGQoPC3335T/XSRAMTdvb1iiLn8ImwQwVD17NDJ6Kee3TvT9WuGpHncXiPg1acvlf9rBZM+sSfzEGUdPWI2iQ0YUtAbhSGRIRIamjM4HKGR3b17TxPGPK6LXr6MaQNyI6aZqzb/S5NMItu8mkk1+NWSTSpdy+d/275AHBSeOW+Itlo4fy7TH1UyHEIJyXTRflLHCfoT+hVMKeM9mL1g+MKUkr/a9uSOcdWb7DOQAUICOKy90Z41q1XUfbRIYb6qXl692UEHcJXLAYHZ69L4tQNY2u+Ukrfh4OXi5ets/Yw8I+7tXrPjC/OMjn5t/r1HzKGuJpeB98fhBg7xYRPCxpqNXuPzv+1fDHfw2o4dv5IjwBHgCJRaBLBwWbosmrBZly6GEGI+dHB/m94LjhJo/cJ4tnptELZr505v/eEPZrPS4+T6aNYJMaxPiaEtlRNQSuCGBW1c/EaR5WBOY1nbkzt2KYT5h0+ewl4y0N9HsX3Qh7CghQNevoHQig4OWZZGxZBX7z7iJdBVBgOLmykCJ89cYOHKSgx2aelVa9ZTz15ebMNc+TODXrIlW712A/XoaQgfLMw4aOk+jvg7wjIRngmWoKeHq6p+MfrKg0dfsjkHOstyWRRgAwZQ4IhgxqQSQm8FzODUFw4mwayXhtw6Iq72eidBf9ccKx14Q48SBodTE6d69NNPP2l+BD7/a4ZKLAhZpSvXbrF/z5oZSZs2JihWknnwKDVsaEj+6ebaSpTWQjTIzrQ97O/mpDdyTpxhzHuwd6GLyc0yAsXRZ4R5Ck/TtlUzgrORm3kEEG24b2+GWYke5DtYtMRw8AdCg7trKyNsweC+fusum4fU9ipTI2dQcMgYq9YQem874bDpzOlTNGRQP0U4JoRPZlrhMCUJID7/2+cr4g5e++DIa+EIcAQ4AqUSAak2n/ACeXlXWbi4tSxebLzvPnjCFk1KyVlKJUBF/NAIvcRiM2LSBEU2G06wj2Tlisn0IKkRMjLQ6KnA2pozdwH7G3RHsTF/9eqV4pPDEbNsRQyFjx+nqrFcxK9cKqoHUxTh5LCM9N0UFjpK8bnhrEJ4P3CvW8uQ8dkaA1N1/YaN1KJlK3YZkushjJabKQJgOt0ueCiGXG5KSmRJ6uSG8QehgnA4aXXwSvWrsSFs2riBZn1Z3lZE0k0bnIJgP0v13QWMpLqHUgcvHL/ePn40dKg3Va9R0+jQEcmIkKl77ZpVdPBwlpgwx9/Xmydm0/jxCQxetXEK4fwnTp8XnedKTFBLt+LzvyWETH+XOsV37dzOkm7JDWVu3L7HDnjl7Td/4RLyHu7LLlGT5sJvAgMYmu/1alez/kF1eEVx9JmYlWtYdBUsKMCXJW3lpo4AiAqnz10iIfGakjyPq6sbO2wUclGosUSlUgFg9+KQXmrQGkckF8zToy3dv3ePN40FBDBOYT/z9OkXLMpQyaRkFESL4tCRz//2/7S4g9f+mPIaOQIcAY5AqUEgO/c0C2mCYfMghPpNjQinrambFd8DkzEWv6mbk5lTUtDJQui0aztDlufDhw7QyCB/k+sXLFpKW7ek6F5rFMBIM87i39CUTIxfT6dPn6IPP/yQAgJHUJeu3UVnBxZNYHnIkz5Jw2pRzz//+U+WnE0rCxRM1E6duzCdYHPJLErNR22nB4XkCEI4wUoc0M/LJNkGQgJjV8exuyEJW7MmBoaVVgOLITRsgijBgX4U4Out+6za5vCDDtzBw8dFzK5cvkSDB/Y1kmsQ5BlQDzaAXToakn6Ysx27MkQne8KGOJo393XyFUvX8t8NCCQlb2HJvGD4lnEQJXVYyNuuk6cbFRTkM+kFhMNKdZDhJIbcQ2xstOgolsqmQKu6a6f2itA3cnKmmzeus37LzYDAwEFDaGmUISpAPjfjcAN64nAkwqB96eczTBW6wsz/vD1MERCiEtBnOnq6mbDfDx/NoTp167IL5Qe8yH+ATPew2bOmU1JivCLEx46foJq1arPElbWqV+LNoAEBe/YZpdshn8KpsxfFHAmNGtTWfW4ES80ya/Y8gsQcDOtg5E9ITNhAt27eYN839KixZhMsY3cahY0bLf4bh79Yd3u096QOHTpRjZq12G9yFi8kGk6fvUTvvPMOuw/6jFwSKmhkCCESLiM9zdJj6+b3JctW0KDBQ9n7KkkwCaxo/C5Evdl7/tcN2BZelDt4+ZfAEeAIcAR0ioDUQQW2bqvmTVjojJu7B/Xu1U0VlcVLl9PgIYYNIBY/YGqVLfcRC60V/tapgxvdLSgwqgPhzwiDhuXmZlPo6GDda41iEwEWjpDsQQl0YAxne+TUyaoabY2bNKW58xcZJZrIv3OHBvb3soixNAEPHLx796TTsqWLdL/ZAFsk5+RZ1jZoAyTh2JSUQNfyrhJCAOctWCw6GtV0epXaE4m9NiQkGSVZy7t6hfz9vDUnnNDpkMVeG/ilbtvFNl8wOPKglYsxrK2rG2OQCOMQnL+WMsdLD1rgWEQIs/wQRc94W/PuUpkLXIcN8JUrl6hcuY+MMqRLHbTbduymVq3bMMyPZx2lNatjTRIWItEU2EFCX3Rt3VwxnHmYtw/hEBF1IanlnozdtDxqie4PrsBmA3Pq448NciVgTR3I3McSgHbs1EWcf9Be0Lc2l9yoMPN/n7796S9/eZ++ePKEDhzINCtNZM13V5rLSmUWgHv67l20ZXMyO/BYumyFeAAP2Qwc8EoTG8JJeOnqDfb6OCBWStImLcMjq7R/KfbsM/K7VqxYiQ4fyxEJFQ/u36P27m1NHg7P4O7hydbkXz59yiIZrI2s0/7GpaMknIhYN8t1dqVPj76CxHU7tm8V/4wDLETDyWV/hAIoOzl8PIEBHL1yNZUtV479hLWZV8+uRuDAKQkJD7QP9j+jgoN0n+wTACGKA9FTgozSiRM5tCUlmQry79DsufOpvWdHEUeBsW7P+b90fMHF85TcwVs8OPO7cAQ4AhyBEoWANIwZD2Yus7b8weGoXbIsWlycSn8HkzEsdDSdPXPa6DLcDxt0wQmMH7GZ2bB+LS1ZZJAX0KvBaQHmwcBBQ6lMmTIiDGDifvn0Cxo7Ophu3jRs4iwZdPo2b90pSjooJZCQ1oHQ3HMXr5osluEg2ZyyiWUe1rMBn737Dxk5Y4GNdHOxd08GhY4JtggT2PGr1sQZLXIRaojQWrDqlAwMLWz4BYcLWJDNmrXQfcZtYLl1x25ycnJWxV1rZnJpyKDW0HSwRP/z738z3UvBwDBFW0kdMBY/CgcsAF33qOUrjRi50tcEcwehmdiEYz7AvCD0JzgvQseEMGaW1NbGxVO37j3Zn9T6G5il2FwKWdOF69Ffd6ftZP1Mz4Z5JvPAUapdp44iDPiW+/XuYTZ5IS60Zf6XO/6FB4AkzajgQJP1gt7aqVv3HiwaRJ5QVcABh1g+wwbTyZO5JtBIow+uXcujYYP7Gx1oRMespj79DHkV5IxGobJKlauQZ4eO1KJFS3rvvb8wZj3YwhfOn9NbUxi9r736jFApHF9IGgltV8EJpqQRi/KY++HMFKQGhDquXrnM9E3VZLj00GCQLps7fyE70JWO97/++ivduH6NRgT6GhEb4JDNzj0jrq9x0BG3bg0d2L+Pdu7eIzp90c+keN+6dZN6dO1oEg0iOCWlWGdnZ7EEudboljtiW2Es2bf/sLgHUXpHIc+EPed/PpYZI80dvI7Yu/g7cQQ4AhwBCwhItXfPnztLA/v3tgozMKqwyHFu3IRtJrCgQpiU2uJmWuRMGhliCJVCmODbb78t3g+JP6BBe+jgfquewRELA9c6devR1199ZbOjCJvE7BNnWDIqGMI2Eb6pZNhkVKlSlcDyadaiBYFhJWU4FOTnU5dOHroOd8aCf1LEVBrm7Wt0QAEH1fZtqZqc4D6+/jR95hyRKScwgsMnhKqy5YQQUdwHWYlfvPiBOnXuyhxn5rIUO2K/UHsnaCVPmjKNmjdvyTbM2CwjPB/OXbBELZlUv1qNRaVUR971O0xaALIply5coPoNGrAQUWwQEf0AlreeDY6RoBEh5O3jyw5H4MDFOJ+8KZFiVkQZjSdIIrkuLkEMlwVuYF2PCglijPYqVasRkkShDoTJNqhbQ9EJiXGvnZsHVahQgbVFx06d2bgm2DfffE2QhcBz6NnGjA0jP/9A+rBsWQYDHO5wgFtz0GrN/I9oBYxbMPRPMOIqfPaLRqrTAAAgAElEQVQZ4fAMhrEQckLLly3Rc7MQ+sGSpSsI0TjCgYfAag+fGKaqCY62gH6ywM7GGARHcNrO7fTk8WPK2HeQOY5RV8tmjY2SU+HaDQmbRGkteQMgkSEY8Djs1bMVps+ArTt46DDq2LEzS3QndSBiLRzg582SekoNshtw8AomP1QG075TB3d6/vyZnpuFvTvm4apVq9HdgnzVSA1plBrmgfZubZgkHQwRP+cu5omEFRw6YS+TlXVUMekh+mfGXsOBPEgY6FtCf8W/49atJjgw9WwYV5A8uHOXrkbRiQ8f3KeZM6YZfe/2mv/5WGb8xXEHr557IH93jgBHQNcIINQZG4qhg/ubLBSxYPHxC1DN6gzgUObiletsE52Tc5x8vYco4olEUghnwkIImw9sMurWq08romMJWleCwZmITT0WAdzUEYADFtgjzFbNpCFkgvyGVkyhybxjZ7qYzEgIXdN6vSOXA3MU3+5PP/1oIkGi9N5YvCYmbRad7SiD9vD3GcZYUuasQ8fOFBO7RpQikJadM3sGbUwwyJ1wsw0BOCHB+BQOm7QmUsEGPWXLdmrr2s7kxnAeNqpfi0s82NAkYIYuXBwlHqJgrkhJTqJWrVozhy1s/rzZFL9+nebawXhP2JhCcLLAMMdAPoibAQHMI0pyJPaa/6WJ1+Dc9XBrQ08eP2L3xrogbfde0bHPk+a9/irxvf7+rbfo84cPNI0laK/olWsIsltyxqdQ68kTueQ9dKB4k85durFQdCkDEuPXP/7xij744EMjBj76TY9uHRnrXu+m1meAC5ilyEPRsmVrcnJ2pgqfVVSU3wKOB/Zn0ozICBOnpFxnNnr5MuY0fPfd99ghce8+fVkTCBqmem8PLe9/7UY+22tgrIMEk5yIInXaWtLtP3vhikiCQAK3y5cvsUS5gk42nufly5dMg5YnzTM44D/5+BN68OC+2fGjMPM/H8tMewF38GoZGXgZjgBHgCOgMwRmz5lPfgFBZGnTJTANcHJdvUoFRZSkyde2bd1CUyZPFMuFjQ+nMaFh4mYCC7DkTRtp1oxpOkNc++si+2/ZsmUJmX/NGZzvYPWYaxu16+GMR+g0HJpoE7StOV1G7U+vj5LAL2pFLHn17iOyO4DfiqiltGb1Ss0gYDM5a858AgNY2LhDAqB5UyfNdfCCyggsj46lfv0NDo9jRw9ToL+PVVBBDmVNXLzoPMTFCDfHxp2bbQjge586bQYFBI00CVcvjEMDDGCw52CW5jTbntyxrrLX/I9w3ZOnzzNw1Jzr0JDFITGcIjgc4WYZARxOKTlb4VBH+H8TFxdq2rSZyEpE6Hrzpo1ExxZ0x9PS94lzE6IdJowbY3ToONzHj6ZGzmQOYKwB2rVtKTrnLT+h/kqcPneJPvusouKLAz+MX2Cv79i+jSUyVDJI/+zNPCQevIwOCTKZT5CzwXu4L7vctU0L3iYaPrXbBQ/ZQTnYuy1clGWdsrJPiodNkBBSIlAAd+APk2te40Ae+yGpzBokHrp19tTwhLwIELBl/udjmfK3wx28vE9xBDgCHAGOgBECcCTd//wp22AjhKxl88aqyZ8OHjkuZq2tVOF1OKxQIZwgmQePsn9ik4HwWrmjEMkPwCTBAgkGBxiSVnEzRQAJNzalpLIf1PT08Bs2gPcefsEWTGArAHdrTbqR6NLRgyeR0AggnLpgIsI5LtiVy5cowH+4apituarl+tX9+vRkEg3ctCOA5B7NmjenxQvnM2cFEuhhQw5scQDi3LCOTYm4kNEbjCvY/Xt3ydPDVftD8ZKqCIDduXrNeiOWNBwk0CEFw8paQ/tv3LSZXZaetovGh42xtgrdlLfn/I81xN0HT9haQs25EjJqLE2ZZpAQqla5PD9ItPClYX6Zv3ApS6imFqKPpIVbt6eJjsL+fXuJcwbmpUtXb4rzE+QXIGmjZFibHc89zZJYIikSN2UEpPMASkDaAg5ASPUcO3aESc5YStyJPnLl2m1Ru1TQKZXfsWzZcnTlmkF+aFNSIidDaPgoBee7uUMkaOhHTI1ktWGdsG7tKqOa5RrvXTu1V5SBQj4NjGmQ0uIOXg2No1BE6/zPxzJ1fLmD17Zvj1/FEeAIcAQcGoGVq9Yx9iEMTl5o9Mp1JV2aNaddu/eadSKeOntRZLjhRHxQ/z5Mt1LJEM4+OWIa30iY+bLAiALTAA5cGLLOg5Emt4SNyaLDfE9GOo0bG2L195qSup3atXNn1ymx3uAIwKKXh20aoIXTEHIM0iRGSKI2ftyYQoXqTY2cwVhZMK69a/VnzC4AGx1aewhBnhoxkUYEjxYTtCEENiY6yuqK0Qdv5T9g2r/YvHdo70r3792zuh5+gTIC2Gxj0y03JH6EdIM1JnUi2joeWnO/0l7WXvM/cNi0eSu5u7dnkCgdTkmZ9Pwg0fKXgzEHjlfMuwvmzzGS0cKcDAZ84IhgMeID+sZSTdD9h44RtMthOGzP3LeXbt++SclJiYpzuXAv6F9zU0YACfIgjyEYHLzjw8ZSTnaWZsikyfCwRm7T0kXxWrQHvgFYwoY4mjd3luZ76LWglKwQPCJAMd+HNNJw4fy5tD5ujRFcUl1k9IVAv+GKSQ9xEZKHofz8ubNV9zt6bQut761l/udjmTqa3MGr9Uvj5TgCHAGOgM4Q2LJ1p8igggMDjFEk3ICjVp40Si69AKjgANmTeYjq1q1nlDRky+ZkVcaIziC26XWhnbw7I1MMYYam66IFc9lGDTpjUctjyLNDJ1a3rY4nJOFLTEphm0RoYYJZhf+X2tKoaPLq3ZdtHjesX2vTuzjSRdBxWx+/kYUbC/1l4oTQQiWok+tXQ5oBTEZu1iGAzXPvvv3EcUi6EXdqWMe6yv5bOmblGlYn7MjhgzQi0M+mevhFpgjAGX/1+h1Rtx1jDLLPI5GKuT7Qu08/Wrx0Oe3bm8GSS4Lti4NIJAQFowqmxoCH4+R3/+//0csXL3iTEFFh5n+EqiOpKsZE6MkCWxgSsro0bkCvXr1i/0bb7Ezbw+YZJSkh6DKOHhNG16/n0cH9mXTiRI7u2wbM3NZt2oo4wNkEXeN//evfVLVaNXbgJMz98rXWMG8fWrBoqSKGmN8hVTNm1EjNh7bQ13z1669ie+q5ccCaXrlqrVFiRzA4g4P8LTr50GZ37n4uJsNr795WNRcFpNMgoQJTkgTCWAcNZfSZzclJdPPmDT03C3t3jC845MU4hEON0SEj6PAhQ6I0YRwSyCr4N2QcEHEgNcz33Xv2MtKmvnrlMg0fNsiq6B/eZyx/jlrmf3uPZZafqnSV4A7e0tVe/Gk5AhwBjkCxIjAhfDKFjptg4hiRPsQXXzwh19bNVUPQ4HScv2Axde3WQ2SVwEkMto482YH85dq0daWJ4RFUq3Yd5jBGSGLq5hQm4yB3OBYrMG/4Ztg0p2XsEzNnCxs6IZuv8HhTI8Jpa6ohNFmrgYkCBpdQV25uNguNlhoyoJ+7eFUsA6dj6JgQFoqod8Phx4Xz5ywmUdOCk5RVYi6UVktdei8DhnVc/EaRvQY8sAEf0LeXmFFbK0ZwYCE6AX0ETDqnBrWtrkPrvfRYTsr6TN2SQtOmTGJzR5OmLmblSa7fuiuGOAM3OA0Fx67Q3nJNRIx3i5YsF0PW4QDIz79Dc2ZN170Uii3zPw4g4SwRokyAO+SZhGRekDKJnBbB9K/79O0vHlTKxzf0LSRBFJzDqAcM/NQtybRsySJdz//ALnL6LJbASMmeP3tGvsOHmDj3rt0sEDVCwVJ89epX8vDswCJ1BI13YNy9SwfCuk7NwIgcNHio2LfgZD6Rm02zZ05nSUT1bCODR1P45Cni94/DXkQNREwaT2os6NlzF5CffyCDLevYEQrwG64KIXIwgDQBc25U10g+DQciq9caJ19FeyxftoR2p+3Uc7MwKbkdaXvE8QR7j0sXz7PkdThoEta75iI80EfGT5xEgUHB4niGsQ3JCy9fumgWX95ntH9+WuZ/e41l8qfCfhWHvJYkVbS/zZspyR28bwZ3fleOAEeAI1BqEAALZ9HiKKPQc+Hh4SAZ1L+3phNsOCV37t5DcA7C8u/coc4dDRIASoYEbGETwhWdy1i0du7gbtFBXGpAtuFBsSCdt2Ax2yRL9V5R1S+//EKLF86zKpQZGsihYRMIusmCvXjxgpo1aWjC6Nmz7yA5N25i8tRgNISMDCQkAuNWOAQQRosQNKE969eprsmpAQkPhHjOnzeHsYDA+JkydTrFb1hnFKpbuKcrvVe7uXkwzW/BOQIHbWzMCkIos1Y7cDiL6tdvwIqraSXK68Lme+bsebRqZTRt35bK2KjQMAcDLiQ4kMs7/BcwOC/gxICp6bartRM26vEJm1gkAwzyQr/73e/o7z/9xPQqV8YsN7o0aGQITZ8xW7XZd+3cTuETxmn9LByynDXzP+aOvfsPi87CUydPEDLN4wAwPnETdezURRGjtWtiacmiBUa/wem4JGoFc8BgfpMeXv7wt7/RgP5euu8zGMsQRVOnbj3693/+Tbdv3aTTp0/SnvTdJjijbPKWbezvOGBHIinBwCBN2JhCru3c2J+wvmrV3HR+x29S54v8Jjh0j5g0gXbuMNxHr4axfWlUDGHMF75bOHeXLF5AifHrTWBBvgS0AfBr7FRPVatfmtPiu+++pWZNXq/VUCmciM2btyDo9GIMlPaZnJzj5O8zTNMawlHbDeNI6vY0cnZurPiKGem7KSx0lMXXR1slJaeKTHrMU1gnI0JByXifsQipWEDL/G+vsQw3RV+NiV1DzZq1EPsMnLvPnn3Polajli3WHNGg/S2LviR38BY9xvwOHAGOAEfAIRCAQwQsg4oVK9MPf3tOW7akqIaRqb0wFpwXLl8TmaeTw8fTju1bTYqvWbeBuvfoJf4drJ+rV68QGL3ly1dgfwfTxNO9LQ9ZJyJIKnTu0pUt6G9cv0YIzbR0Al27dh3q2r0Hk3OoWbOWEdMN+CLr+cABvU1CltEGqdt2iW2QkZ5GyLgtMICwSUGbInGLPKGeQ3SEYnoJqX71pIlhmjbNzVu0ZCHPguEbEDZ5cPrXrVW1mJ6+5N9mbOh4dqAhMA216n9KEx3C0QQWlRbLzj1N1aobkh1K2wX/BiNx9aoYLdU4fBmM79CyrlO3Lk2ZPJEg/2ONYRyChA0ckzigaupcX3Ec+uSTT9lcJLQHEnuCHQqH2ZChw8UDTSRI7OPV3ZpHcMiyWuZ/OBCx+YYdPXLIRE8/9+RZqlK1Gvsd8hnbUjdTZuZei8kn4VAJGhFCw339xLUD5hYkNXz0+UOHxNveLyV1sEdOnczWCHKTRozAMS9nfUoZojg8GRUcxJzKPn7+NHjwMPFgxVZdc3u/85uuDzkT1m/YyMYywU6fOklDB/cX/y09yIVERqC/j+pjHzmWK45LltYEkHcKC5tIAwcPFdmmPOmXAVqMQePGTaAatWrRn//0J3r69CklbUyg7OOGA3Wttm59AotMhGVnZ5Hf8KEml/I+oxVNQzkt8789xjLcq3OXbuywX4guUXpSRAFhfSbXZLburYq/NHfwFj/m/I4cAY4AR8BhEUB4Ghx+5nRCpSe0SuFoffsNoBUxhgy2cIQgXA3JxARDaOKIYMMpOxyJcBJzM48ANhrdu/ekpi4uVLNWbYJzAwnS5Aa87xYUsFNrbDaU7PLVm1Tuo4/YT0LCCmz+166Lp5atWouXgNUwb85MqyUieFsSDRw0hKBxDEOobNtWzTTDAuYb+k/ZcuWMrrG0IdR8AwcqCEYPFvhv/eEP5Os9RNOb5V2/I7J/IV0CCRMtBifVsuUrqWcvLxM2olYnsZb7OEoZOD6U9CPBAnVu3NiE8Sl9bzh58+89orfffls107w0a7qSY0U6z6gdRDoK1vZ6D+iIok/B+Vq9SgWTQ0bME1ev3WbfvzWHI9LnmzV7HvkHjmB/wjrDpbEhYRg38wiAWe3k5MzYaDWqfqZYGAdQOIiCgb0WNm60UTlp4tWwUMNaTzD0uYOHjzNnJg55MWeBKcyNWMJbJN0qU6YMjRk1guVLEGz0mHE0eco09s/hQwep6kxj3INjCwZ5gQZ1DYeFlgwJvw4fyxGJEfJ2s3S9Xn8HkeEPf3jbaO8hxwLj2N0HTxj7GrIoTZzrm8DF+4xtX5Da/I/a7DGWYX2NdbZgYMSnbEqiBw/uU40aNan/wEFUqVJl8XdEmCDSpLQYd/CWlpbiz8kR4AhwBEo4Ajh5PXP+MmPUuLd77eiTPzYYc/c/Nyz8Hz36nNzathSLILTs/KU8kU06bmwI0y+TW86JM1S1WnXVRVUJh6pYHw94Q8sQzg65YSOGZBLX8q6yRFHYeJjTNpZmowfDt1MHQ0inYE1dmlHs6nXiZgJ/93BrYzXTu1gBKmE3w0YZWbIF2Q3oIdqSKEW6sbDWSVzCICkxjzMubCJBlxSGNkHbWGs4bDlx6pzo5LXGSWztvRyxPHR2kYQFrFpIwqiZwICXzzFCeelYBumGFVGmyacwF0FSiPcfbV+SoIEslwCQXi1lifbt3cOidqXSnaUSKZAS0Lvuq5bWSd+zn2lYv3z5khrVr6V4CfoVklHBbt++RV07tTcqJ9SBP7Zp6WKSPAzXQxsTcxg/fDeFuFv3HnRgf6bRDxs3bab2nh3ZYUjlzz5RbBes4YCrsCZYMG+OVYltIY+G8RAGrVj0O27mEbh2I5/+/M475NKkodnEmwLhAevmKhU/NamU9xn7f2mFHcu8+vSllbGGxNDodzjAVZKVwaEKokmh448DK0iflRbjDt7S0lL8OTkCHAGOQAlHQEkYX+mRwb4BCwe2d08GhY4JFotBP7RGTcPmQy3kCb8lJqUwaQFzi+ISDlexPd7y6FiW0EawvKtXKOvYUZYUxRrHIbSqsPkTQtrNOW6RaGza9Fl06+YNvpmw0NLbd6bTDz/8jSaOD2XZyJHlHBmCYcgaD1aPtWYvJ7G193Wk8tA7TEhKoSmTw1noJjbXcGBhsY9xBw4OWxhqkIZAEh6YrU5iR8LZmndxdXWjzVt3sEugd9jJ003RuYcxCswq9AM1lifa83bBQ+ZoV3MCp6XvYwl4EI1Qp2YVax5Vl2WFg1eE79euUVlRJgja+khUBLNVmkQ6p9ki46HHxtmxK4NatGzFEn3VrFZREYKIqZEEZjtMKaknQprXx29kv0M6BdjLDX3qnXfeIawzvHp21SPUVr3z4qXLafCQYewaSChBSkluGxKSqFNnA5b37hZQh/btrLoHCj98/BWL2oKTCnMXN3UE0B5oF9jnDx8wvJXkxqQyPyBKtHBxNqmU9xn7f2mFGcuQbPfE6fNiBKMaiUh4aqwDO3ftRpBwKk3GHbylqbX4s3IEOAIcgRKMQI2aNenQkWyRfXv2zGmmNSZlhILlm3vqnKLupVQ4HxtEZKaHw0vJBD1LbPKRfIqbOgIBQSNZki3BMQvnFJIHTY0It0ojVx7ShDDB2TMjVbMz435whgkbFnwfuzP2U9TSRVYlf3PktgXjGXqhMITObkzcQCNGjmKOKWwoGjeqy7SmrTUkW/Ee7ssu0+okhmbpl0+fck3r/4ItPWyCdiGSocHZB0tP20Xjw8ZY2yx2cxJbfWMHukCqe4g+4+M9mDDXSG3X7r3UrHkL9ielxDlw6qLvrVy1Vow2kIdOQ07g4uXrbAzj84y2D0jqGFm/bg0tXDDX5EIkFkRGe9iMyClm5wKESZctW9Yoiufdd9+lcxfzCP8Pa97UiSf11NA8mFciZ8xiJRfOn2uiKfnRRx+zCCxhnSBnRuOAt1XrtgRnIxyF0KaEo1CaUFW6hjt/7iwN7N/b6MnQ7yzlBtDwKg5VBHqw0KaGIYpqRKCf0ftNi5xJI0MMUhkY75q7ODF5E2vMq3cfWrlqHbtE6VCRt4sxmugDJ89cEBNCP/v+e+retaPRtw7MTp+7RHAYwuLWraZFCwzEFcEK22f4mln5Ky/MWCZE5UhrxqHXxQvnacmi+VaRXqzpg8Vdljt4ixtxfj+OAEeAI+DACMABsnV7mrhJwMZ4x7ZUOpGbQ63btiU//yCmVwWTh/gfzzlF1WvUZL+Z0zyE8wtsBPw/kq8h0YqSgaGF7NJIAqLmKHbgpjB6NWABXVawQISkW3CiL5g3W7OzFZs6H78ACg4ZTdgMCgbniu/wIYwZZM6kCUIQUjtm1EizIdZ6aRsw2saEhpkkuVPaMGjBBG2D5FGCkxi6cC9fvDB7KcpCxgPJJrambmaOF3NSHVqeo7SXwcY7bn2imNRGeB/0G+gfYrNtrUmZWEoal/L6MFZeuXabOfvBJAKrTqp7ae39HaV8UkoqeXh4steBwwhOi53bt7IxCOOTNJkd5IKERFwYB9P3HKBatWsb6SCjHjisPNq1ZnIMCDU/ceq8mDTqwP59LKGUkiFZ5at//IOePH7kKPAW6j0EFi8qgbwSdNifP3/G6gybEE7jJxjYuxhfwPI1N28Ikg8og2R3Dx8+oJ69erP2gWEegSOSmzYEEIEjYLcpKZFioqNYgjuw1JI3bxO1xZEAD0knYfi+EWVS5oMPTG4C1iLwR1viwAQHK0KyVfmBiSBNAzb80y++oORNiVyf/7+IShOqgvkcuzKann3/HU2eEkmu7V7LYI0LHUV70ndra+z/lurStTvhUExY9yFSKG2XIQpCsG07djN2N/opHF1wVNoSnWLVg5XwwugnWTmnxLUu5gdote/csZ0qVqxIoeMmiHkO8E23cHESD+Pt1Wf4mln9I7FlLAPpAeQHGOaUv//0ExvzhDELfz986ACFjAzUvP4tqfM/d/CW8AGGPx5HgCPAEShtCEBHNy19r5gtW+n5wUBo0cxZ3NyB0QNmDwyn5U0bN1B9bSSkQGIKmJLOG3TOFixcarQhwWJ15vRpZhMmlDacbXleMALWxSWIMhiowxZnKzCOWhErZp9FGHSzJo3MsnOGDPWmGbPmGmWshXN49KgRVjNSbHn3knwN2GhI9oVkLIJdu5ZHo0YGWq0vKYSVox6tTuJ5CxbTcJ/XzCGwrufMms76l94NIZZLlq2g999/n0GBjd6ihfMoMX69VdCg7x07fpJttLU6icG6AvtKamibxIT1tHyZYaOiV/MLCKKZs+Yabc7kWEidGdjIHc8+JTqxgOP5c2fo/v17FBxiYGPjb7/88rPRARYOIrt18TSKdgDDCw4xHGiC4St8F4cPHaQJYWNscv47SjviUGJH2h5ydm4svhLm+9+/9ZbIuoVTPmLSBLPjCw6qjmWfFPudHB/MWwP6euneEWXNd4ODDRxwQEJBMDinpFnkcSjfspkzY623at2GoJksJGSFQ/fM6VPMSSzMVZj7//jHP4lti3pTkpPYIaHUDh/NYQnYpIZxcO3qWIIGtp4NfebQkePiwZQcCzjQp02ZxGQxtBqcVlgnT5wUITp3nzx5TK6tDVEogjk5N6a9mYdMqsW45+87zOr1h9bnKw3lMFevjYunrt3UNYvRNt06exIORWD27DN8zaz+lVg7lqEmaYJcRJeePnWSjW2Y/0eNCRU1ri1JZ5WG+Z87eEvDCMOfkSPAEeAIlEIE4DDyDwgycvRiMQTd3RmREWwDIVjqtl2EcExY8IgAOnRwv+IbYzJGpm4siLFJdGpYx4idKM2wrVSBUmhiKYS20I8MB+2iJctFNg8qPHf2DI0KCdLsbAUbLvPAEXFTohReKH9QtB80ZpG9VmCU4JtI3rSRORT1Hr4JJyBYowKTXZDTmDQxTFObw+EEBy8M0g5IpmMJUxzIXLp6Q9FRBjbj6OAgunHjuqb7O3IhHCyNDB4tOjuQdRljlblEX1I8pJIPs2dNp6TEeItwQRMTDJFPPy1P1WvUMGJ5P7h/j/r17cUYeHq1zz6rSFMjZzBnkxBaDizgiEJ0gjRbfebBo4ypCENYuad7W3EOGjM2jCZFTBVhxJj07Nn3lJuTzaJJpAYmIhwiZcqUUYQd30VHTzeLrHlHbzOwdRFKKySGEt4X2E4IG6uJiY45YkX0KurTrz+7/OiRQyzL+fmzZ5n0jLWGhHn4NvRs7733HqWk7jBywAMPzBNgKE6eNEEcU7DWEtov69gRCvAbLkIHaSGwdgXDwdeXT7+g5OQkxbENjsYyZT6g6tVrEOSAhEguXA929qABfXR9MCJ86z16eRmN88+fPaPhwwaxpHeWDGMgGO59+w0wOnzCdThk8XBvYzJfwCHp7t6ePvn0r9TIyYkqVaps1KaItAKrUc8GjCaGR7DvVsr2BNt64oRxRkmE7dlngDlfM6t/edaMZZi3T54+zypT0uWHnMaRrFzx+585fSrbl8ittMz/3MGr5xGLvztHgCPAESgGBOBAatjIiX766Ue6eeO6YkjmxSvX6eOPP7GYzGbOvIXk6xfAnvrkiVzyHvo6eVh0zGpxI4jNCpzEqVtSCIl5hg33FTcqtiZ2KQaoivUW2FBMmTadAoOCRadVXt5V8urRRXwObBjMhaKDeXrxyg3GAEIYebXK5TW9AzbaCBt0bvw6vBYO/+mREVaHIGq6YSkr1KNnL1q4OIqwgMUGDzILWgzSDEj8ARsVHGiSsVupDqleadLGBALLB5rNb7/9tlgcfW3smGDdO63AXFu5eh3bEMOUwl2VMEZ7rl67gf2klozFUvuivw4YOJi1DdioMEQmtG7R1NKluvi9kZMzY97eLchnMgtSwyb5/udP2eYcrMGG9WqazEOQFmrdpq3ZvoO+hXBqwZkMR/H6uLUsnHq4j7+o+4uxDPfQu8wJwPRo34GaurjQX/7yPhXk32GsXemcUrFiJfr666/M6sELEQYIq4XmvjXyKDg0GzN2PLX37MBYpkioh8gIgXGni86h8JL4ljt07ESVK1ehr77+ivbv22ukvw7csrJPsSvz79yhzh3dTfoU5GMQ2YC536VJQ82Hw6iol1dvmrdgiXjIrFUr3sGuXFwAACAASURBVNHbC2MV1kXlK1RgB0zm5JXgbMJ3DRkHRMGVK/eRifQM2iZz7x6aMH6spvEI38WMWXOoe49eDGqspcH6lY+pjt4OSu+HQwkcov/P//c/dOPmdZO2Kco+w9fM6l+cpbEMV0qT2y5eOJ/WrV1lUuH7ZcrQtRv5rA8h7wKY2VIrTfM/d/DqcYTi78wR4AhwBEoYAg8efclYCwjZHzywr+LTga2FxAfCCbprmxai7qG7hydtSkkVF6RIVAG2j2CYmKGnhQ0emAzOjYxDBUsYHMX6OFjUrFodxxjU2MTdLShg94dTasGiZSzRl1IGYeEhk7dsIyRXgbVt1cyqjQCYEUh0JNX0hdYoNLAKCvKLFYeSdjMsMpFgBRtfhJJZMv/AEQQGO8ycNrW0HinjF04paMtiQwcH1pKlK6h3337ihhHfQEJ8nEkiEUvP5Yi/YzPt6x9IWpjVaEfoxcFZD+vXpyddunjBZlhQH+Rs6tatx+pYs3plqcvwbPPL23ghEuEggRTseNZR8vf1NqkJB5GX826y712J4YMLkAwJ2swwMKih/y5lyINNLMg94NvYuWObjU+sn8uu5N2i69fzFNtEQAFt8uiLb1jbrIhaajGkH/P96LHjqHv3nuJhiBTR6OXLmP4sN3UEED0wanQoK6B2kIUDp2XLY1gZsDxHBvlbBSkcZmfPXxG1THt270zXr+VZVYfeCiM0fcvWnYTxSsomleKAg5D8/Du0b28GbU5OsupARKhnmLcPi7aCKTn49Ya7lvctjj7D18xaWsK0jNTBCyKK2p5G0H1HEmmsh6VWmuZ/7uC17TvhV3EEOAIcAY6AnRDApu3x029ZbZBvCB0TrFizNHmLVA4AIYSX826JOnJTI8IVk3dItXuR/fnp0y/s9AaOUQ2c34JshtQplZ2dRX7Dh6q+pDQRREfPdqKD2BpUEPqOEGlBzxKhb149u1pTha7KgrmDEPFreVfZe8Mheyv/gShd0qG9K92/d88iJtKMwkoJXOAYi4vfSA0aNGR1WcMmtnhzBy2Ag5ED+zNFtpQ0Czocu3DwFtbQV9HesHt3C6hD+3aFrdLhr3/y5XfsHQ8eyGQHSEomlXHA5g6bPMGkm3f0A2SzV9ok3nv4BeuHfAyz/EnBgQhcYeYiDpDgC8wq2P7MvTQ6ZIRJ5ThACRwRTP36D6Ty5SsY/Q6HlyAJAEkTSDtxM48ADrDmzF3ACskTpkmvvPvgCYv2gCQQWOvWGjTO18cbQqGhxQsHPjd1BLJzTxtp9SJKAMnRMN+fOnmC9Q97rW2F9QGiHmpVr8SbxQICxdVn8Bh8zWzd5xgyaiyLWIQhCkQqESjUJI30+fnnn6lebcNhLqy0zf/cwWvd98FLcwQ4AhwBjkARIIDNGzZxYG8i67ncZs9dQH7+hk35ixcvGKtUCH9FhueWrQzXQCu0R9eOik8IXbIVMYawHOi9QXOWmzICCEW/dPWmuClWc7yDRQg2IRzCSifeWvDFtXPnLyJkuMV/gxEHJrC9NilanqG0lTmec4rp9ILxDt3kWbPmMbYtTCuTSroZQXKpJk716NWrV4pQgKG9bEUMhY8fZ5P2ZWnD19bnbd6iJe1M28OSdc2eGUlHjx4mMBSxccB41bypk1EYtK33gbMKjhX0Fx6RoA3FazcL2KEI2gYbNyVtaumBRxOn+sxxAqtWvQahzwm64Zhj1HSp0d5ly5VjUgBubVtqezidlurStTvFbUhkb4/+gcRrSqxnqfzShri1tGD+HHYN+pW3jx8NHerNxkOhffAbkrXC2bV2zSo6eDiLyn30EbsG7G2wuLmZRwBOcrDeganaYQXwR/QVyqBf1a1V1WpYIeGRlGxIHmbugN/qih3wAoxDcPAKBqkSJHWUao3b87XPXrjCDkswVlb+7BN7Vu2QdRVXn+FrZus/n959+lFM7Bp2oVoOhLDx4TR+4iRWRrqOLo3zP3fwWv+N8Cs4AhwBjgBHwM4ILI2KZom3YJBWCArwFe8gDXvFQhOba2Q5hUG24fS5S+y/LenArVm3QdQVq1H1M5vC1uz82iW6OrA292QeEvV5wRQMDPAVZTHw+/ZdGWJG7l07t1P4hHFWvRM2d1h0waEsWNy61VwGwAyKWNzjmwe7FgbHCP6G/2HD59SgNttsW7IDh7Oofv0GYjEkyVkZvZxWxUZbupT/roKAj68/4TBKCJ1Fewh6rZtTNtH0aRFWYQcHyt79hyl1czJzfAmMUWS2h+6ifCNiVeU6K4zEkmvjEthbg0k9oJ+XkSZlu3bulJK6nf2OvoA5QnACSw8R92Sk07ixIYrooa3B4EVftBT5oDP4VV83IGgkzZw1V/wd+M6cPoUxQmFgqk2bPlP8HfJKONSADvXFy9eNElLhkDHr6BGKjY2mR58/ZNdIWcJIVNW1k0E/m5tlBFatWU89e3mxgtErllHMCmNZC+nBu1ZZIOld0U9wcAIHCmzK5Im0bavB2ctNGQEn58aEtaww/6MU5GKCRwZoitrRiisOdSG/BeOsd62oERV1n+FrZu1tIS958859JpWFiI7ePbsaJS6Ehj+SpwqHhFK5mNI4/3MHr+3fCb+SI8AR4AhwBOyEACbdw8dyxNBKhIRBQ6xmzVpGWbgXzp9L6+MMp7CwTZu3igmPpMwepccSGFyY3GtWq2inJ3fsaqA1unXHbpZIRTAwo/79n3+zpHiCffXVlwTZC61JhbA5j0/YZJSFG7qXcOwLsgOOjWzh3w4aeZEzZovSJKhRnunc0l2QFRrsaUGCAeWhtzewv5foYLFUB//dGAHoSa+Ni2fJWASDo7CxUz2rkhDh2sVLl9PgIcNYNagDTquy5T4S9Xzxt04d3GySRdFju0kP+RCieSI3m7EG4SwHznCow6TOeLQnkoBi44e5AyxFNf2+IUO9adESgxMMByVRSxfrEWar39mrdx9aHr1KxB/fNWQw/vTnPxvN/1s2J1Pk1Mms/m07dhP0KFEWjNw1q2Pp6hWDzrJgyIwO/Ws43nmyKKubhUXwZJ84IzoTMc8fO3qEJbgd7usnau+jZmuZ0ehrh49mU42atdiD4VAF6zKtawjr38axrlCa/0GOmBA2VjH83Jq3h8wQHJWCs2tTUiLNmjHNmip0W7ao+gxfMxf+k8I8ExO7VowUxIFf9vFjVKdOXfLs0En83qUSgKV1/ucO3sJ/L7wGjgBHgCPAEbADAmC9Zew7SE5Ozia1gQkX5O9DubnZ4m9gfUIQH4tQOITr1KyiujnAxL5y1Tp2LddGtK6xsBGL35jMHOnSEFihFkgpINuswLiyVPvESRGMVSU4U7ChQ0bbpYsXWrqU/y5DABguXLyMkOxGaBtbktQ1bNiINm/dKTrykTEbMhncbEcADt5Va+II2a9hQpI6ZHBWkgdQuhM22kuWRRs5uYRy3333LYWFjmYyHdy0I4BkhGCMKo1lqEXO0IWzvlt3g26yJaft5as3RSkAD7c29PDBfe0PpvOSCG/esnUHVa1WXRGJY0cPU6C/D/sNB8Jw3AptCMdj6JgQunzpotG10rbj4f+2f2DQyIVWrpJhLEPkTtquHZpvALks6GFKk6uqJXLTXKkOCyrN/3CUr46NsSmJIOaqiCmR5NWnr9i3MM9AWkjrnKXDZlB8ZXv2Gb5mtt9XhYTc8YmbjCI/pLXL8ySU1vmfO3jt983wmjgCHAGOAEfADgggNGxMaBhVqlyZfv773+ncubO0amU0ffPN10a1Y9ETOm4C+5ul5Bx51++I2bTN6Sfa4fEdtgokswsZPZa6du1Ob//xj/T9d98xfUOwRrQYHF7r4hJEBwiuuXXrJgX4etO3336jpQpeRgUBbMzWrU8g58ZNxBJdOnrQnTu3NWOGzSLYWpUqVWbXJCXGM60yboVDwC8giKZMnc4SEcGsPWACCxFsRbQtWKcjAn3p1s0bRgnACveE+rsaeu/TZ8xmDMS/vP8+c2bAkbElJZnWrok1AkRIIoVDxNo1Kqs6OpDca3m04dqC/HzGrOZmPQIVK1aiSRHTqEHDhmwT/vnDhzR/3iwTlnqNmjXZfCIwQHEn6OpDkxwSDlWqViMkZhWY10iaBwY2N9sQgN7+jFlzqV79BoQkjziwevjgAS1dspCx4MwZDuP79BtAPXt6Uf0GDUXZGlwDxyGY7qtXxdj2YPwqdogon//RBxBmbimXQVOXZkweDVEMn3zyqRGaX375lHr37GYX3Xg9NlNh+gzw4mvmovlqMP9PnTaDPDw82fyPQ5EnTx5TRPh4E2390jr/cwdv0Xw7vFaOAEeAI8ARKGIEpPIMallR8QhwsMyeM589DUKc3VxbFfGT8eqlCGAzuCYunqBxKdivv/5KUyMmMrYcN/shgJDl2FXr6P/+9X/UwsWYCQ+GHJwd2LSpGcIAkSQKbHqw4lo1f+0wtt9T6q8mhIgvXRbNmFEhIwPp0MH9IghoEx+/ANq00aAPq2QoA5kAMN5yco6Tr7dBr5xb0SKAcFto6sLMaeqifRBNImiJ8ySeRdsu0trBcl+4OEqULUFESEpyErVq1Zpq1qrNis6fN5vi1xsieLgVLQI4CG7dxpVat2lLTZq6UNWq1RQjEODYBeN66pRwu2rHFu3blezahfkfCQVxIIVDjf+/vfuOj6rKAjh+BMtHpLpIESSEJiCd0KU3QekoRRBsLNJBOoICgoD0KojSUZpIr0II6NKkB0OXooBSBGQRZd39nJudx8xkQiYkTGbm/e5fZN597537vS9McnLnXP30m6M9mzevVKhYWUqVKm0S7Vpmy1Ev3nlkupGx/oFXF07QfC/Az8y+N/d0x0B+/yfB6x/PEFEggAACCMRTIHzrvyQ0NIfZLTus2N3Nopwvo79wf78v0vo4TnzrxMUzJLq7CegGOrp60bHRlB5evWqF+Wg5q6ke3OOivyDoak/ntmb9JkmfPr2UKFbonjfWRKL+4qerGnKFZn1wQdrwyp7mRf/4pH+Eiuv/po9HjTWlOJgX3z04ZcqWE91gRVuHdm1i3a1++MejpWmzV00//QNKudJhvguSO5k/XOmKLH2/cZT+cbBobfe4/s+DMHEExo6bJA0aNY71YlrG6XDkIVm+bKksWbyQnwEShz3GVXRjQn3ul3612BzTP9zu2LXP5ecw55P0PUX/3/p221aZM2uGREX98IAi47JxCfAzc1xCvjseyO//JHh995xwJwQQQACBRBRwJKJ0M5biRQt4vPLir5Zbmx2511ZKxFC4lJuAfjRN6/Y67/Ssv3BoDcX9+/bi5WMBrTs2c/Y8c9elSxZLl87tPUagiXhdsagJE92RXlcA0R6cgK6eOnbyrElK6YqrMqWKxboR2+p134hueqgtJGvGBxcUV7YEdHXoxMnTzNctmzeRiIjwGDp58+YzG4Tq94yuSqxds2q8SqPAnXgCadOlk4mTpkr5ChWti+r7TqsWzZiTxGP2eCXnkhjaQT+lc+b0aTl4cL9sjQiX9evWyq1btx5wFFzek4BjQ0LHMS13dvzYMbOCes2alWzS6QePDT8z+8EkuIUQyO//JHj973kiIgQQQAABLwQcq6Zi20m+/4CB8labtuZK+stGWNECcvPmTS+uTJf7FdAE4ZhxE+WlOvWsS+hHZidNHMeO8veLmgjnhWQPlY2bIqwVPLrrvK4YdW/TP58l1Wu8YF5232wqEcLgEh4EdPNH3QRSmyZ5m7zcQPbt3ePSU2vxLVqyjMS7j58gTcCf+PEn8zFmXd3WvKnr6kRTMiPiO0mZMqWJTP+fY7NIH0+S2+169elnNvF0b/379TalG2gPRqBZ8xby0fCR1uZcWhpg3JhR1NZ9MNzxuuq323e7/LFda/O3bfOmnP7xVLyuQ+fEF+Bn5sQ3TawrBvL7PwnexHoKuA4CCCCAgE8FcubKLZvCo3eQ118m2rz1umzetNHUexvwwWDrI7N6/LVXm8qWLZt9Gp8db6abF8yYNU+KFi1mhn/w4AF5o1ULNunwg4ehSNFismTpCusjzFpj96Mhg8zHznXeRo4aK9Wq1zSR6h9NqletQG1EH83b3PkLrVWHaq+rrEeNHG4+Ntuq9Rvy3oCBVnL+i/lzpXfPd30UGbf5evlqa/NCrX+s5WV+u3pVSpUuI9M/n23Vfj154rhUrlgOsCQU0JJMe/YfNv/H6R8WdfOu9h07i25UWCqsCO9DD3hutM671tt3vP/r7XSzL/2e4eevB4wfx+X1o/+9evcTrSvqeI/X9/7u3TpRKiMJp4afmZMQ34tbB+r7PwleLyaXLggggAAC/ingadWI7rytH5d1/BA7eND78tmnU/1zAEEaVYUKlSRN2jSx1qwM0mH7/bB0h/rFS5ebGruOpglFx/eL47U+vbrL/Hlz/H48wRRgt+49pVPnbjHmwnmMZ86clgrlSpkEPM03AvoHQ61fHRKS3bqhfiIkRYoU1teaiH+xVnWT+KUlnYDzxqvz5s6Wvr17mNXXutmXlmii+UZA3//1kzzpn3rKuuGBA/vlnTZv3nOTT99EZ9+7aHJ3xMixUq9+A+t9RvdC0D+ETJs62b4wfjByfmb2g0nwEEKgvv+T4PXP54moEEAAAQS8FKhYsbJMmfZZjJ2a9ePOLZq/wi92XjrSzR4CmswdPGSYNGz0cozvGS1hMmzoYD7KnESPQrHiYfLRsJGSN1++GBEcOnRQmr7cIMbmeUkUqq1uq98zc+YtcKnt6gDYsH6tvP1ma5LuSfxEaA1LTcRr0wS81g+/c+dOEkdl79u379BZunTrbn36wPHphF49u5lPXdGSRkD/0Ks/MxcocHdzYq1V3anDO/Kv775NmqC4KwJ+KhCI7/8keP30YSIsBBBAAIH4CTRo2Fg02ZsseXLZsH6NrFu7hl8i4kdIb5sJVKlaXV6oVdus5jmwf5/MnTOLRJUfPAO66/nrb7wl2bJllyuXL8ncubPlxPFjfhCZvUPQTSNbtmotuXLllsjIQ7Ls66XMi588Eloe4LMZcyRf/vymhImWMqElvYCWxxg1ZrzUfrGOtWr02rVrUui5PEkfnM0j0Pf/0WPGmxJNjvbh4A/k06lTbC7D8BGIKRBI7/8keHmCEUAAAQQQQAABBBBAAAEEAlqgYMFCpvY7zb8EdM+EyVM+NZ9O0NqvHdq18a8AbRyNrrLu0LGLJE+eXIoXLWDqJtMQQCBwBUjwBu7cETkCCCCAAAIIIIAAAggggAACfi+gq0b/9d02uXXrlt/HaqcAU6VKJcWLl5Dw8OgyJzQEEAhcARK8gTt3RI4AAggggAACCCCAAAIIIIAAAggggAACNhcgwWvzB4DhI4AAAggggAACCCCAAAIIIIAAAggggEDgCpDgDdy5I3IEEEAAAQQQQAABBBBAAAEEEEAAAQQQsLkACV6bPwAMHwEEEEAAAQQQQAABBBBAAAEEEEAAAQQCV4AEb+DOHZEjgAACCCCAAAIIIIAAAggggAACCCCAgM0FSPDa/AFg+AgggAACCCCAAAIIIIAAAggggAACCCAQuAIkeAN37ogcAQQQQAABBBBAAAEEEEAAAQQQQAABBGwuQILX5g8Aw0cAAQQQQAABBBBAAAEEEEAAAQQQQACBwBUgwRu4c0fkCCCAAAIIIIAAAggggAACCCCAAAIIIGBzARK8Nn8AGD4CCCCAAAIIIIAAAggggAACCCCAAAIIBK4ACd7AnTsiRwABBBBAAAEEEEAAAQQQQAABBBBAAAGbC5DgtfkDwPARQAABBBBAAAEEEEAAAQQQQAABBBBAIHAFSPAG7twROQIIIIAAAggggAACCCCAAAIIIIAAAgjYXIAEr80fAIaPAAIIIIAAAggggAACCCCAAAIIIIAAAoErQII3cOeOyBFAAAEEEEAAAQQQQAABBBBAAAEEEEDA5gIkeG3+ADB8BBBAAAEEEEAAAQQQQAABBBBAAAEEEAhcARK8gTt3RI4AAggggAACCCCAAAIIIIAAAggggAACNhcgwWvzB4DhI4AAAggggAACCCCAAAIIIIAAAggggEDgCpDgDdy5I3IEEEAAAQQQQAABBBBAAAEEEEAAAQQQsLkACV6bPwAMHwEEEEAAAQQQQAABBBBAAAEEEEAAAQQCV4AEb+DOHZEjgAACCCCAAAIIIIAAAggggAACCCCAgM0FSPDa/AFg+AgggAACCCCAAAIIIIAAAggggAACCCAQuAIkeAN37ogcAQQQQAABBBBAAAEEEEAAAQQQQAABBGwuQILX5g8Aw0cAAQQQQAABBBBAAAEEEEAAAQQQQACBwBUgwRu4c0fkCCCAAAIIIIAAAggggAACCCCAAAIIIGBzARK8Nn8AGD4CCCCAAAIIIIAAAggggAACCCCAAAIIBK4ACd7AnTsiRwABBBBAAAEEEEAAAQQQQAABBBBAAAGbC5DgtfkDwPARQAABBBBAAAEEEEAAAQQQQAABBBBAIHAFSPAG7twROQIIIIAAAggggAACCCCAAAIIIIAAAgjYXIAEr80fAIaPAAIIIIAAAggggAACCCCAAAIIIIAAAoErQII3cOeOyBFAAAEEEEAAAQQQQAABBBBAAAEEEEDA5gIkeG3+ADB8BBBAAAEEEPAvgccff1xu374tf//9t38FRjQIIIAAAggggAACCCDglwIkeP1yWggKAQQQQAABBOwi0Kr1G1Ktek3JmSuXPPVUBnn00UfN0P/880/5/cYNOXHiuIwfO1oiIsLtQsI4EUAAAQQQQAABBBBAIB4CJHjjgUVXBBBAAAEEEEAgsQRy5sotM2fPk2zZQry65I0bN2TRgi9k4Af9vervi05Llq6QsBIlza2GfjhIpn4yyRe35R4IIIAAAggggAACCCDgJECCl8cBAQQQQAABBBDwsUC37j2lU+du8tBDD7nc+ebNm3L58iVJkyatpE6dOsbxv/76S3KFZvVxtLHfbtnKtVKkSFHTYeSIYTJh/Bi/iY1AEEAAAQQQQAABBBCwiwAJXrvMNONEAAEEEEAAAb8QKFSosKxYvd4llqVfLZFePbqa2ruOpsnfwkWKSq/e/aRsuefNyyR4/WIKCQIBBBBAAAEEEEAAAb8SIMHrV9NBMAgggAACCCAQ7ALbd+2VzJmfthK2b7ZuKVu2bL7nsJ8vX0EmTp4mKVOmDLoVvMmSJUu0DeU0Kf7f//73npbe9InrGUyMa8R1D44jgAACCCCAAAIIIOCtAAleb6XohwACCCCAAAIIJFCgfYfO0rN3X+sqwz8aIpMnjffqqppU1M3YNqxfa/XXEgkPP/ywXPvtN2netHGs15k0ZZpkD81hjrdo/opcvXIlRl+tpdvvvfcle/ZQSZ0mjSRPntysKL527Tc5EhVl6utu2xphzqtYsbL07NNPcufOI4899ph57dKvv8qFixdcrrtt6xb5aMhgl9d0E7kRI8dKiZIlJUOGjGZTOd1Q7pdfLsquHTukZ4+u5mtPTeMr+3x5c+j9/n3l+PFjMnzEKClWPMxsUKftwoXzsmP7dunxbmfrOiVKlpKevfpK7jzPSrp06UwS+Pr167Jp4wbp2qVDnEnhylWqSecu3YxN2nTpTOmMf//733Lx4gWZ9slkmT9vjlfx7t61U9I9+aTUqVNPKlSsJJkyPy03rl+XAf37yLGjR716DuiEAAIIIIAAAggggIC7AAlengkEEEAAAQQQQMBHAjt275NMmTKbu125fFmKFs6foDufPnfRnP/3339LaLbo63pqh344LqlSpTKHqlUpHyOZOGfeApNwjKstX/a1dGz/T+nQsYv06NUnru5y9EiUVK9a0eqnJSfmzl9o6gvH1q5duyYtmr0sBw7sj9Hlm81bJVfuPOb1777dJpq4feSRRzxeSu9dq2ZVGTVmgtRv0DDW+505c1rKl43eKM696eriCZM+kZfq1LvnWDXWVxrVk1u3brn0c473vb695OksWaTtOx1Er+vcOnVoK8u+XhqnJx0QQAABBBBAAAEEEPAkQIKX5wIBBBBAAAEEEPCRwLGTZ82KVW1DPxxkVsUmpCVGgldXxbZp284KQ5PFujL1j1u3JGOmzJIiRQrr2ObN30jrls3ltVavy/sDPzSrhx1NV8X+5z//cRmOrlht8nID81qWLFnl2+27XTaO05XEFy5ckEyZMpmVrY6mMZQpWcysxnVuzglTdzddbexYTex8HedkqsaodYwdc+Do179fb5k9a0aMqVi1dqMUKFDQel1XGR8/dsx8nSt3brMC2dFWrVwu7dq+HWu8Oib3xK6jMwnehHwXcC4CCCCAAAIIIIAACV6eAQQQQAABBBBAwAcCuoJWV9I6WqMGdUQToAlpiZHg/eHoKSuJO3fOLOnXp6dLSFqSQMsg1HyhtoSHbzIJXkfTEhFFihQ1X44cMUwmjB8T63CWLltlSilo02TsG61bWCUf9DUt+zB9xmwr+bpr5w5p3LCuy/XcE7w3b96UYUMHy5LFC0X/rQneDZsiJCQku8t5v/7yiwweNEBWrVwhd+7cMauo13+zRdKkSWP6nTt3VsqVjo7N0V58qY5M/mS6+VKTsz3e7SKLFy1w6fP2P9+R9/p/YF7T5HHliuXk1MkTVh9PCenff/9dDkceku3bvzPn5MuXX0YMH0qJhoR8I3AuAggggAACCCBgcwESvDZ/ABg+AggggAACCPhGoFKlKjJr7hfWzXLneCbWWrPeRpTQBK8mb/cfjLJulydnNpN89dTSp39KMmTIIIcPR1qHvU3wFipUWFasXm+d17J5E4mICI9xG3ej2jWrSmTkIY8JUy3R0PLVJiZh69xy5sotm8K3WS/NmT1TtDyCe2v8chMZNSa6/rHW082XJ9Sly8HDx6xSEnq+XsdT+3rFGilatJg5NOPz6fLBgH4e49Vk7mefTpXBg973dnrphwACCCCAAAIIIICAVwIkeL1iohMCCCCAAAIIIJAwgY6dukr3nr3NRbRMmTdUDAAAC8tJREFUQK7QrAm7oIgkNMH7xBNPyOEjJ6043BOUcQXobYK3V59+0q59J3O58+d/ltIlolf9emrOdYp1RbCuDHY095q2sSVdj586Z9XmrVGtotkkzr09/vjjEnXsR/OyJl+zP5PJ6qIrfDUObVoTuNBz0XV/PbVWrd+QQR9+ZA59u22ry2Z3zvEO/KC/fD59WlykHEcAAQQQQAABBBBAIN4CJHjjTcYJCCCAAAIIIIBA/AUaNX5FRo+dYE50TyjG/2rRZyQ0wavXcN6ATb++fv26rFm9UjZuWC9bI8JjbBzmHKu3Cd4Zs+ZKlarVzanr1q6WNm+9HuuQP/1sptSoWcsc37hhnbz5+mtWX28TvJq01uS1NvdVwM43dvjpayFZ79bTrVO3nkycHJ2M1fIMZ8+eiTXe1KlSW/WD3Tds8zbe+51/zkMAAQQQQAABBBBAQAVI8PIcIIAAAggggAACPhDImvUZs8mYo9WsVkmion5I0J0TI8HbrHkLGTZiVKxxXL16VdavWyODBw6QGzduuPTzNsHrnOicOmWSDB0yKNb79R8wUN5q09YcP3b0iFSrUsHq623C1Lm8wr0SvKfOnLc2PnNO8DrHEJ8J0lq/YcXubsrmbbzxuQd9EUAAAQQQQAABBBBwFyDByzOBAAIIIIAAAgj4SMA5oTjgvT4ya+bnCbpzYiR4NYBatV+SgYOHSMaMd8sUuAf2xx9/SL2XXnBJSnub4P1ux/eSJUt0SYoxoz6WsWNGxjruPv36S9t3Opjjp06dlErly8Q7wXsg8qi1gdr9JHjHjp8sDRo2MvfVcho/nrpbxuJeExYZGSmdO74T73gT9BBwMgIIIIAAAggggIDtBUjw2v4RAAABBBBAAAEEfCWw72CUpEuXztxuz/e7pUG9FxN0a0eCN66SD85lGKpVKS/Hjh71eN/QHDmlbt36UqZsOXn22bzy5D/+4dLv3LmzUq50mPWac4J39MgRMm6s55XAi79aLiVKljLnfbV4kXTtEp3A9dTGjpskDRo1Nod27tguLzeqZ3XzdkVsQhO8/2zbXvq+N8Dc133M8Zkwb+ONzzXpiwACCCCAAAIIIICAuwAJXp4JBBBAAAEEEEDARwKLliyTkqVKW3dr2byJRESE3/fdY6sh635BbxO87uele/JJmTFzrhQtVtw6FJots6lLq805wTtp4jgZMWyox7FoCQgtBaFt3769ZiVwbG3F6vVSqFBhc3je3NnSt3cPq6u3CdOEJniLFQ+TpctWmfv++eefkjvHM/c1R97Ge18X5yQEEEAAAQQQQAABBP4vQIKXRwEBBBBAAAEEEPCRQObMT4uWK0iWLJm549UrV6RcmTC5efPmPSN4+OGHZeTo8VKteg0pkC+X1ff4qXPyyCOPmK8bN6wru3buiHGdhx56SHTTsRQpUphjzit49Zgmca9cvhzr/XUV7979h63jpcKKyIUL583Xc+cvlPIVKpp/L1r4pXTv1tnjdZo0bS4jRo4xx3S1cVjRgnLp0q8x+mbIkFF2fr9fNC5t73btJIsXLbD6eZswTWiCV+dHy2k42pzZM+W9vr3uOUcas86FJoQdzdt4ffT4cRsEEEAAAQQQQACBIBUgwRukE8uwEEAAAQQQQMA/BZxrzGqEWtu2S6f2smb1So8BV6/xgowdP0lSpkxp6sHmCo2uZatNE6+OMgp793wv9evWdrlG5SrVzLlp06a1XndO8Gophi8WLJGNG9aZZOq1a9dixFCwYCFZuWaD9XqenNnk9u3b5uvBQ4bJa61eN//WJHGxIs+ZBK570+SnbnyWKlUqcygy8pDUfbGm3Llzx+qqSezlq9bJc88VMK9dv35dCubP7XIpbxOmCU3w6k0/mzFbqlWvae6vY9KaybNnzYh1jkZ8PFo2blwvPd7tYvXxNl7/fFKJCgEEEEAAAQQQQCBQBEjwBspMEScCCCCAAAIIBI2ArlJ139Ds4sULcuL4cTkS9YNkyZpVns2bTzJlyiyPPfaYNW73BO/EydOkTt27NWq1XuzePXvMBmOamNXVue7NPcH75cKvTBctu7B//z45eGC/7N61Q0JDc0qp0mVM7VzHKuHDhyOlVo0q1iWrVqshn8+cY32t9w/fvMlcS+//888/Sbu2b5vjjRq/IqPHTrD6akL4yy/nyZEjUabeb9Omr7rU/NXNyr5eGh2bo3mbME2MBK+6a81kx8pnjeH8+Z9l29YIE3NISHZTuiJ79lCTfNfmvorZ23iD5sFmIAgggAACCCCAAAJJIkCCN0nYuSkCCCCAAAII2Fng0UcfNSUX6tarb5Uj8Mbj2NEjUq1KBavrE088IfsPHbESsJ6uoatkdXWso8WW4I3r/lpGolL5MvLLLxddum79bqdkyxbi8fSjR6KketXoEg7apkydLrVfrBPXrWTF8mXSoV2bGP28TZgmRoJXb1623PMybfpMa+VxXIGT4I1LiOMIIIAAAggggAACD0KABO+DUOWaCCCAAAIIIICAFwL58z8nk6ZMk2wh2V2SsM6najmE3bt2ypjRH3ussaslDbQWrqNUg/O5Bw8ekDdatZBvwrdJ6tSpzaFKFcrKqZMnzL810dyuQydp2uxV0frAnpquxl29aoX069tLfrt6NUaX9Omfkplz5psVu+5t7949Ur9OLZeX6zdoKCNGjnVZmezooGN9t2tHk+D11NZtCJe8+fKZQz27d5UFX8732E+T3o6yFDWqVZQjUVEe+2mdXUc95JCsGT320eMfDh0urzRpFmsi/dKvv8rq1StlwrgxLglwb+P14lGhCwIIIIAAAggggAACsQqQ4OXhQAABBBBAAAEE/EAgbbp0UqJEKSlUuLDc+euOaLmD3bt3yekfT8UZnda4DStRUsqWfV50Va+etyV8k1UrN84L/D/Zmy//c1KoUGF5OksW+fmnn0yt3EMHD7hsHBbbtRzxZwsJkUu//iL79u27Z+y66rdS5SqSI0dOOXnyhGze9I2cPXvGm1CTrI+WvggrUUry5HlWbv9525SzOBx5KM5N8pIsYG6MAAIIIIAAAgggYAsBEry2mGYGiQACCCCAAAIIIIAAAggggAACCCCAAALBKECCNxhnlTEhgAACCCCAAAIIIIAAAggggAACCCCAgC0ESPDaYpoZJAIIIIAAAggggAACCCCAAAIIIIAAAggEowAJ3mCcVcaEAAIIIIAAAggggAACCCCAAAIIIIAAArYQIMFri2lmkAgggAACCCCAAAIIIIAAAggggAACCCAQjAIkeINxVhkTAggggAACCCCAAAIIIIAAAggggAACCNhCgASvLaaZQSKAAAIIIIAAAggggAACCCCAAAIIIIBAMAqQ4A3GWWVMCCCAAAIIIIAAAggggAACCCCAAAIIIGALARK8tphmBokAAggggAACCCCAAAIIIIAAAggggAACwShAgjcYZ5UxIYAAAggggAACCCCAAAIIIIAAAggggIAtBEjw2mKaGSQCCCCAAAIIIIAAAggggAACCCCAAAIIBKMACd5gnFXGhAACCCCAAAIIIIAAAggggAACCCCAAAK2ECDBa4tpZpAIIIAAAggggAACCCCAAAIIIIAAAgggEIwCJHiDcVYZEwIIIIAAAggggAACCCCAAAIIIIAAAgjYQoAEry2mmUEigAACCCCAAAIIIIAAAggggAACCCCAQDAKkOANxlllTAgggAACCCCAAAIIIIAAAggggAACCCBgCwESvLaYZgaJAAIIIIAAAggggAACCCCAAAIIIIAAAsEoQII3GGeVMSGAAAIIIIAAAggggAACCCCAAAIIIICALQRI8NpimhkkAggggAACCCCAAAIIIIAAAggggAACCASjAAneYJxVxoQAAggggAACCCCAAAIIIIAAAggggAACthAgwWuLaWaQCCCAAAIIIIAAAggggAACCCCAAAIIIBCMAiR4g3FWGRMCCCCAAAIIIIAAAggggAACCCCAAAII2EKABK8tpplBIoAAAggggAACCCCAAAIIIIAAAggggEAwCvwPX4dIeV2zus4AAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "vn.ask(\"What are the top 10 customers by sales?\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Training Plan\n",
- "A training plan is a great way to extract metadata from your database to use for training. You specify which databases and schemas to filter on and it will attempt to retrieve past queries from the query history as well as the table and column names from the information schema."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Trying query history\n",
- "Using model gpt-3.5-turbo for 147.25 tokens (approx)\n",
- "Using model gpt-3.5-turbo for 168.25 tokens (approx)\n",
- "Using model gpt-3.5-turbo for 147.0 tokens (approx)\n",
- "Using model gpt-3.5-turbo for 147.25 tokens (approx)\n",
- "Trying INFORMATION_SCHEMA.DATABASES\n",
- "Trying INFORMATION_SCHEMA.COLUMNS for SNOWFLAKE_SAMPLE_DATA\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "Train on SQL: What are the top 10 customers based on their total sales?\n",
- "Train on SQL: What are the top 10 countries with the highest total sales?\n",
- "Train on SQL: What are the top 5 customers based on their total sales?\n",
- "Train on SQL: What are the top 15 customers based on their total sales?\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 CUSTOMER\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 SUPPLIER\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 LINEITEM\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 PARTSUPP\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 PART\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 ORDERS\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 REGION\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 NATION"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "training_plan = vn.get_training_plan_snowflake(filter_databases=['SNOWFLAKE_SAMPLE_DATA'], filter_schemas=['TPCH_SF1'])\n",
- "training_plan"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.train(plan=training_plan)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Ask More Questions!\n",
- "Now that you have a fuly trained model, you can continue asking questions and it will continue to learn and improve."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.ask()"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "venv",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.11.2"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/manual-train.ipynb b/notebooks/manual-train.ipynb
deleted file mode 100644
index cfbac36a..00000000
--- a/notebooks/manual-train.ipynb
+++ /dev/null
@@ -1,400 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Manually Training Vanna\n",
- "This notebook shows how to manually train Vanna. If you prefer to automatically train Vanna, see [here](vn-train.html)\n",
- "\n",
- "# Install Vanna\n",
- "First we install Vanna from [PyPI](https://pypi.org/project/vanna/) and import it.\n",
- "Here, we'll also install the Snowflake connector. If you're using a different database, you'll need to install the appropriate connector."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install vanna"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Login\n",
- "Creating a login and getting an API key is as easy as entering your email (after you run this cell) and entering the code we send to you. Check your Spam folder if you don't see the code."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "api_key = vn.get_api_key('my-email@example.com')\n",
- "vn.set_api_key(api_key)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set your Model\n",
- "You need to choose a globally unique model name. Try using your company name or another unique string. All data from models are isolated - there's no leakage."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.set_model('my-model') # Enter your model name here. This is a globally unique identifier for your model."
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Train with DDL Statements\n",
- "If you prefer to manually train, you do not need to connect to a database. You can use the train function with other parmaeters like ddl"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.train(ddl=\"\"\"\n",
- " CREATE TABLE IF NOT EXISTS my-table (\n",
- " id INT PRIMARY KEY,\n",
- " name VARCHAR(100),\n",
- " age INT\n",
- " )\n",
- "\"\"\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Train with Documentation\n",
- "Sometimes you may want to add documentation about your business terminology or definitions."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Train with SQL\n",
- "You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# View Training Data\n",
- "At any time you can see what training data is in your model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
id
\n",
- "
training_data_type
\n",
- "
question
\n",
- "
content
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
15-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the PARTSUPP table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
11-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the CUSTOMER table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
14-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the ORDERS table.\\n\\nThe fo...
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
1244-sql
\n",
- "
sql
\n",
- "
What are the names of the top 10 customers?
\n",
- "
SELECT c.c_name as customer_name\\nFROM snowf...
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
1242-sql
\n",
- "
sql
\n",
- "
What are the top 5 customers in terms of total...
\n",
- "
SELECT c.c_name AS customer_name, SUM(l.l_quan...
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
17-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the REGION table.\\n\\nThe fo...
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
16-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the PART table.\\n\\nThe foll...
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
1243-sql
\n",
- "
sql
\n",
- "
What are the top 10 customers with the highest...
\n",
- "
SELECT c.c_name as customer_name,\\n sum(...
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
1239-sql
\n",
- "
sql
\n",
- "
What are the top 100 customers based on their ...
\n",
- "
SELECT c.c_name as customer_name,\\n sum(...
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
13-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the SUPPLIER table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
10
\n",
- "
1241-sql
\n",
- "
sql
\n",
- "
What are the top 10 customers in terms of tota...
\n",
- "
SELECT c.c_name as customer_name,\\n sum(...
\n",
- "
\n",
- "
\n",
- "
11
\n",
- "
12-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the LINEITEM table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
12
\n",
- "
18-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the NATION table.\\n\\nThe fo...
\n",
- "
\n",
- "
\n",
- "
13
\n",
- "
1248-sql
\n",
- "
sql
\n",
- "
How many customers are in each country?
\n",
- "
SELECT n.n_name as country,\\n count(*) a...
\n",
- "
\n",
- "
\n",
- "
14
\n",
- "
1240-sql
\n",
- "
sql
\n",
- "
What is the number of orders placed each week?
\n",
- "
SELECT date_trunc('week', o_orderdate) as week...
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id training_data_type \\\n",
- "0 15-doc documentation \n",
- "1 11-doc documentation \n",
- "2 14-doc documentation \n",
- "3 1244-sql sql \n",
- "4 1242-sql sql \n",
- "5 17-doc documentation \n",
- "6 16-doc documentation \n",
- "7 1243-sql sql \n",
- "8 1239-sql sql \n",
- "9 13-doc documentation \n",
- "10 1241-sql sql \n",
- "11 12-doc documentation \n",
- "12 18-doc documentation \n",
- "13 1248-sql sql \n",
- "14 1240-sql sql \n",
- "\n",
- " question \\\n",
- "0 None \n",
- "1 None \n",
- "2 None \n",
- "3 What are the names of the top 10 customers? \n",
- "4 What are the top 5 customers in terms of total... \n",
- "5 None \n",
- "6 None \n",
- "7 What are the top 10 customers with the highest... \n",
- "8 What are the top 100 customers based on their ... \n",
- "9 None \n",
- "10 What are the top 10 customers in terms of tota... \n",
- "11 None \n",
- "12 None \n",
- "13 How many customers are in each country? \n",
- "14 What is the number of orders placed each week? \n",
- "\n",
- " content \n",
- "0 This is a table in the PARTSUPP table.\\n\\nThe ... \n",
- "1 This is a table in the CUSTOMER table.\\n\\nThe ... \n",
- "2 This is a table in the ORDERS table.\\n\\nThe fo... \n",
- "3 SELECT c.c_name as customer_name\\nFROM snowf... \n",
- "4 SELECT c.c_name AS customer_name, SUM(l.l_quan... \n",
- "5 This is a table in the REGION table.\\n\\nThe fo... \n",
- "6 This is a table in the PART table.\\n\\nThe foll... \n",
- "7 SELECT c.c_name as customer_name,\\n sum(... \n",
- "8 SELECT c.c_name as customer_name,\\n sum(... \n",
- "9 This is a table in the SUPPLIER table.\\n\\nThe ... \n",
- "10 SELECT c.c_name as customer_name,\\n sum(... \n",
- "11 This is a table in the LINEITEM table.\\n\\nThe ... \n",
- "12 This is a table in the NATION table.\\n\\nThe fo... \n",
- "13 SELECT n.n_name as country,\\n count(*) a... \n",
- "14 SELECT date_trunc('week', o_orderdate) as week... "
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "vn.get_training_data()"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Removing Training Data\n",
- "If you added some training data by mistake, you can remove it. Model performance is directly linked to the quality of the training data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.remove_training_data(id='my-training-data-id')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Asking Questions"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.ask()"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.11.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/notebooks/other-database-mistral-chromadb.ipynb b/notebooks/other-database-mistral-chromadb.ipynb
deleted file mode 100644
index c63156fa..00000000
--- a/notebooks/other-database-mistral-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "22323c93-597c-5855-a512-939a14abf9e5", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Mistral via Mistral API, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "6ae2763b-0004-5c7a-b3ac-a55a75770c34", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-mistral-marqo.ipynb b/notebooks/other-database-mistral-marqo.ipynb
deleted file mode 100644
index 17e95db8..00000000
--- a/notebooks/other-database-mistral-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "ca51d95b-179d-5082-896d-247b220d8713", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Mistral via Mistral API, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "8cd881d4-867e-522b-9d09-084e04c93f8a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-mistral-other-vectordb.ipynb b/notebooks/other-database-mistral-other-vectordb.ipynb
deleted file mode 100644
index c7587e4e..00000000
--- a/notebooks/other-database-mistral-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "924358e7-d53d-5554-baff-faa508826010", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Mistral via Mistral API, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "69c22c46-b8d4-5ad1-a81a-f71314449d2a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-mistral-vannadb.ipynb b/notebooks/other-database-mistral-vannadb.ipynb
deleted file mode 100644
index c19e91d2..00000000
--- a/notebooks/other-database-mistral-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "0e71bc98-8716-580a-b971-496b54f1af8e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Mistral via Mistral API, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "08388fc8-a2a0-51ff-a240-e9c7c1921808", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-azure-chromadb.ipynb b/notebooks/other-database-openai-azure-chromadb.ipynb
deleted file mode 100644
index 8f16606b..00000000
--- a/notebooks/other-database-openai-azure-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "92ea27dc-5881-5eb6-93c3-455e04899d35", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Azure OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a30bd540-225c-5ca0-9f80-3628945e8366", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-azure-marqo.ipynb b/notebooks/other-database-openai-azure-marqo.ipynb
deleted file mode 100644
index 69f46341..00000000
--- a/notebooks/other-database-openai-azure-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "57d4a531-2711-5199-b845-0b545e6bd26a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Azure OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "403b36a4-dcbf-591a-8b34-2cee340d8ae4", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-azure-other-vectordb.ipynb b/notebooks/other-database-openai-azure-other-vectordb.ipynb
deleted file mode 100644
index 5c036129..00000000
--- a/notebooks/other-database-openai-azure-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "28e43ee2-89a3-5c6e-972c-18e14187ecbc", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Azure OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "98bd55a9-8534-57e0-bbf2-790053912d0d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-azure-vannadb.ipynb b/notebooks/other-database-openai-azure-vannadb.ipynb
deleted file mode 100644
index fc824ebc..00000000
--- a/notebooks/other-database-openai-azure-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "c84b946c-c10e-5f4d-b0e9-1053cac2d9c0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Azure OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "c08f1c4c-ba75-5ac2-882a-ca5ed62a8475", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-standard-chromadb.ipynb b/notebooks/other-database-openai-standard-chromadb.ipynb
deleted file mode 100644
index 42845d23..00000000
--- a/notebooks/other-database-openai-standard-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "deeb1a83-b623-52c8-9e9c-8fde4842d65e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "b4e86bda-15bf-591d-88bb-fa94a50b50e0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-standard-marqo.ipynb b/notebooks/other-database-openai-standard-marqo.ipynb
deleted file mode 100644
index 3b3acb10..00000000
--- a/notebooks/other-database-openai-standard-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "4fc64584-bab8-5895-a16b-2d54274bc40b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "bb1d1e59-d6cf-5ab3-bcbf-8166b0d8f1c3", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-standard-other-vectordb.ipynb b/notebooks/other-database-openai-standard-other-vectordb.ipynb
deleted file mode 100644
index f676c5f7..00000000
--- a/notebooks/other-database-openai-standard-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "83e6caa0-808d-5e3f-a3bc-dd6055253309", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "0dc9e571-d346-5296-9c2b-6288e2e7fdfd", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-standard-vannadb.ipynb b/notebooks/other-database-openai-standard-vannadb.ipynb
deleted file mode 100644
index e8dfbe01..00000000
--- a/notebooks/other-database-openai-standard-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "46dcb449-a2c9-571d-a7ce-d6450eb19571", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "db8cee28-61fc-5750-bc66-8a3f8e312e9c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-vanna-chromadb.ipynb b/notebooks/other-database-openai-vanna-chromadb.ipynb
deleted file mode 100644
index c8669ca3..00000000
--- a/notebooks/other-database-openai-vanna-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "0137feba-b7f4-52f8-985b-c86be0e0f5bb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI via Vanna.AI (Recommended), ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "105b1b11-2b54-59ac-8b07-3fc3536824da", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-vanna-marqo.ipynb b/notebooks/other-database-openai-vanna-marqo.ipynb
deleted file mode 100644
index 58c2bbee..00000000
--- a/notebooks/other-database-openai-vanna-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "b3805a05-e5f3-5ea2-9c50-25a1c9a51a75", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI via Vanna.AI (Recommended), Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "30b9ca1a-c459-53b6-ba57-d8a6bb5cb9fa", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-vanna-other-vectordb.ipynb b/notebooks/other-database-openai-vanna-other-vectordb.ipynb
deleted file mode 100644
index 7b14f392..00000000
--- a/notebooks/other-database-openai-vanna-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "dea72209-4768-5f52-ba75-ae7671cc46fe", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI via Vanna.AI (Recommended), Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a35e6042-02e6-5934-b6c7-45abff11bcef", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-openai-vanna-vannadb.ipynb b/notebooks/other-database-openai-vanna-vannadb.ipynb
deleted file mode 100644
index 14646105..00000000
--- a/notebooks/other-database-openai-vanna-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "0f6a628d-5dca-58b1-b690-40302dab9bf2", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using OpenAI via Vanna.AI (Recommended), Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "1a507369-8ade-5a6e-b349-9927657cb37f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-other-llm-chromadb.ipynb b/notebooks/other-database-other-llm-chromadb.ipynb
deleted file mode 100644
index e742a27a..00000000
--- a/notebooks/other-database-other-llm-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "7b709983-57b5-5bc7-940a-bcbf832468c6", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Other LLM, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "b348bb01-4210-561c-bbd9-759bb6a11099", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-other-llm-marqo.ipynb b/notebooks/other-database-other-llm-marqo.ipynb
deleted file mode 100644
index 8a18d350..00000000
--- a/notebooks/other-database-other-llm-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "3a87478b-c54b-5bdd-b94f-e7ea9d43e69a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Other LLM, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "f9acdcfc-f442-571b-9ff3-544bb5a2421e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-other-llm-other-vectordb.ipynb b/notebooks/other-database-other-llm-other-vectordb.ipynb
deleted file mode 100644
index 207f31c8..00000000
--- a/notebooks/other-database-other-llm-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "d4a7bd4f-e238-5168-8c26-03ab7d9b6ceb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Other LLM, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "6b7aad07-6701-5974-9b5a-c6ed21cc3eca", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/other-database-other-llm-vannadb.ipynb b/notebooks/other-database-other-llm-vannadb.ipynb
deleted file mode 100644
index 99714187..00000000
--- a/notebooks/other-database-other-llm-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "8b253300-a4e8-5b94-8ef5-958eefde2756", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Other Database using Other LLM, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "638a9f05-ed43-58ab-aa9b-2f88ddc6a370", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use Vanna to generate queries for any SQL database\n
\n \n
\n \n
\n "}, {"id": "9b30d7e1-f279-5b6a-a620-fc988020efcc", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nimport pandas as pd\n\n# There's usually a library for connecting to your type of database. Any SQL database will work here -- you just have to use the right library.\nconn_details = {...} # fill this with your connection details\nconn = ... # fill this with your connection object\n\n# You define a function that takes in a SQL query as a string and returns a pandas dataframe\ndef run_sql(sql: str) -> pd.DataFrame:\n df = pd.read_sql_query(sql, conn)\n return df\n\n# This gives the package a function that it can use to run the SQL\nvn.run_sql = run_sql\nvn.run_sql_is_set = True\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-mistral-chromadb.ipynb b/notebooks/postgres-mistral-chromadb.ipynb
deleted file mode 100644
index 9bcb6cf4..00000000
--- a/notebooks/postgres-mistral-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "0f3048c8-acae-5ca8-b441-2e74e9190bc2", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Mistral via Mistral API, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a03347e7-7aec-59e2-a48b-a8b757da02f7", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-mistral-marqo.ipynb b/notebooks/postgres-mistral-marqo.ipynb
deleted file mode 100644
index bacfa9b8..00000000
--- a/notebooks/postgres-mistral-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "aa811fa4-4d25-5b33-9da8-e68a69b87e0a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Mistral via Mistral API, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "369fb3d9-2130-513d-af1f-aa2ac6672dc5", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-mistral-other-vectordb.ipynb b/notebooks/postgres-mistral-other-vectordb.ipynb
deleted file mode 100644
index a8070e9c..00000000
--- a/notebooks/postgres-mistral-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "1bf7ca05-0a4b-56c4-8958-79b30e5afc2e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Mistral via Mistral API, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "13f1c9f5-c46b-56da-a35a-83299b1735b6", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-mistral-vannadb.ipynb b/notebooks/postgres-mistral-vannadb.ipynb
deleted file mode 100644
index d0ce0717..00000000
--- a/notebooks/postgres-mistral-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "7eb3f36a-c79b-5c0c-8eb6-4601a6c3c634", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Mistral via Mistral API, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "e0d82a7a-03af-5945-94b5-d9b71c024f01", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-azure-chromadb.ipynb b/notebooks/postgres-openai-azure-chromadb.ipynb
deleted file mode 100644
index 7865e671..00000000
--- a/notebooks/postgres-openai-azure-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "e7cd5976-e784-52c5-be86-b454ffa806c8", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Azure OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "d69856a3-3ea7-5ca5-8159-040262aa4049", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-azure-marqo.ipynb b/notebooks/postgres-openai-azure-marqo.ipynb
deleted file mode 100644
index 5433eab0..00000000
--- a/notebooks/postgres-openai-azure-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "bd301e2e-9b25-5c91-aebc-1f0c23d76aad", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Azure OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "11a49ddb-4573-5a2d-8673-58f553dfdb70", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-azure-other-vectordb.ipynb b/notebooks/postgres-openai-azure-other-vectordb.ipynb
deleted file mode 100644
index b1dd2d46..00000000
--- a/notebooks/postgres-openai-azure-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "6c5bdd16-d84b-527f-a805-d01f53e7337c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Azure OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "55d62c18-7f8e-53cf-8a60-fb5abd6efee4", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-azure-vannadb.ipynb b/notebooks/postgres-openai-azure-vannadb.ipynb
deleted file mode 100644
index 21b62613..00000000
--- a/notebooks/postgres-openai-azure-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "778e258a-8586-5d24-bde4-0a1a6361f6a9", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Azure OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "b707bd2c-b6fa-517e-944f-1f316438c252", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-standard-chromadb.ipynb b/notebooks/postgres-openai-standard-chromadb.ipynb
deleted file mode 100644
index c94330e8..00000000
--- a/notebooks/postgres-openai-standard-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "95b3f23b-49e5-5f79-bedc-f3e5dea0f14f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a552e618-fefd-5a0d-8005-c47323ee0a3a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-standard-marqo.ipynb b/notebooks/postgres-openai-standard-marqo.ipynb
deleted file mode 100644
index 5e969bb7..00000000
--- a/notebooks/postgres-openai-standard-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "82494868-ca31-5a5b-aa10-f5ebf57091af", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "095e6e97-1391-5e97-8901-e7cc282058c6", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-standard-other-vectordb.ipynb b/notebooks/postgres-openai-standard-other-vectordb.ipynb
deleted file mode 100644
index e60380bc..00000000
--- a/notebooks/postgres-openai-standard-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "ad6a7ca6-de11-5e6c-accf-b908b3b5f536", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "cc22b65c-c118-568d-95b5-320743ba50ce", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-standard-vannadb.ipynb b/notebooks/postgres-openai-standard-vannadb.ipynb
deleted file mode 100644
index 9fbe816a..00000000
--- a/notebooks/postgres-openai-standard-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "bd885f8c-8938-5a71-826f-6c4000c70508", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "23336edb-af5c-5cee-a11a-da2a8355603f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-vanna-chromadb.ipynb b/notebooks/postgres-openai-vanna-chromadb.ipynb
deleted file mode 100644
index 612aab84..00000000
--- a/notebooks/postgres-openai-vanna-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "df07813d-72a1-5452-8dc9-f6894538a24b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI via Vanna.AI (Recommended), ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "75fcde7a-5d87-565f-81e2-8270d4b4be99", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-vanna-marqo.ipynb b/notebooks/postgres-openai-vanna-marqo.ipynb
deleted file mode 100644
index 449dd310..00000000
--- a/notebooks/postgres-openai-vanna-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "351a9c1a-ccd5-571d-8d48-cd42b3cfa2d3", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI via Vanna.AI (Recommended), Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "c9208da9-f260-5e4f-9713-1f0f7f0ed03b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-vanna-other-vectordb.ipynb b/notebooks/postgres-openai-vanna-other-vectordb.ipynb
deleted file mode 100644
index fe6d158d..00000000
--- a/notebooks/postgres-openai-vanna-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "c6b9a340-0204-5267-b461-47450cdb8a2d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI via Vanna.AI (Recommended), Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "502499f2-8200-5bdf-bc7d-4bd15b1e7f63", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-openai-vanna-vannadb.ipynb b/notebooks/postgres-openai-vanna-vannadb.ipynb
deleted file mode 100644
index 2080b769..00000000
--- a/notebooks/postgres-openai-vanna-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "ff3e46c3-5735-53fe-86ba-dd1ca947e4ba", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using OpenAI via Vanna.AI (Recommended), Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "c263c951-b756-57eb-a66a-ef636ff0a696", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-other-llm-chromadb.ipynb b/notebooks/postgres-other-llm-chromadb.ipynb
deleted file mode 100644
index b4571ebb..00000000
--- a/notebooks/postgres-other-llm-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "30e88248-26ea-53ad-93a6-9b3d5da41033", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Other LLM, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "0dc3de1e-d806-5f7c-86aa-f0a764bbb64c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-other-llm-marqo.ipynb b/notebooks/postgres-other-llm-marqo.ipynb
deleted file mode 100644
index 9ab9303a..00000000
--- a/notebooks/postgres-other-llm-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "47e6700f-2fb1-5518-bd4f-d8f1ab43e77e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Other LLM, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "bf373d88-64a8-5f57-9f12-1238aba1bdfc", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-other-llm-other-vectordb.ipynb b/notebooks/postgres-other-llm-other-vectordb.ipynb
deleted file mode 100644
index 93074de0..00000000
--- a/notebooks/postgres-other-llm-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "3a23b994-dde6-5290-a4ae-5c0fbc8143d0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Other LLM, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "1a323199-007a-5773-aab8-b6510f11824b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/postgres-other-llm-vannadb.ipynb b/notebooks/postgres-other-llm-vannadb.ipynb
deleted file mode 100644
index e7c3c13c..00000000
--- a/notebooks/postgres-other-llm-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "cd757483-4d52-5a68-94b5-0244087a9cdb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Postgres using Other LLM, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "2ba202ba-7325-523a-9717-cb7730ea4253", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "38707ef4-8063-5170-873a-45e63c1928a7", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_postgres(host='my-host', dbname='my-dbname', user='my-user', password='my-password', port='my-port')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/slack.ipynb b/notebooks/slack.ipynb
deleted file mode 100644
index 4663122a..00000000
--- a/notebooks/slack.ipynb
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Using Vanna with Slack"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- ""
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Source Code\n",
- "https://github.com/vanna-ai/vanna-slack"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/snowflake-mistral-chromadb.ipynb b/notebooks/snowflake-mistral-chromadb.ipynb
deleted file mode 100644
index bdf1360a..00000000
--- a/notebooks/snowflake-mistral-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "581af781-64b0-5419-b34c-f423e998b939", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Mistral via Mistral API, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "028bcaab-c1fe-57d7-ad3d-eae62574637b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-mistral-marqo.ipynb b/notebooks/snowflake-mistral-marqo.ipynb
deleted file mode 100644
index 249b1caf..00000000
--- a/notebooks/snowflake-mistral-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "dc380e10-5a07-55b0-b4ff-4c3064aab9e0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Mistral via Mistral API, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "be9a2065-77c5-5ae6-90a4-d388c26f1808", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-mistral-other-vectordb.ipynb b/notebooks/snowflake-mistral-other-vectordb.ipynb
deleted file mode 100644
index 8e77a2a7..00000000
--- a/notebooks/snowflake-mistral-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "bb27d995-aa3f-5004-9976-87e64a33a9d0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Mistral via Mistral API, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "59581b59-5760-589b-b8b8-423389281910", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-mistral-vannadb.ipynb b/notebooks/snowflake-mistral-vannadb.ipynb
deleted file mode 100644
index a6e39bee..00000000
--- a/notebooks/snowflake-mistral-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "331570b7-be75-5d5f-8cff-7e4570addec8", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Mistral via Mistral API, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "30ca42f3-0e6c-5e60-a359-503a87213bf2", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-azure-chromadb.ipynb b/notebooks/snowflake-openai-azure-chromadb.ipynb
deleted file mode 100644
index 1b36a137..00000000
--- a/notebooks/snowflake-openai-azure-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "6287c685-ff0c-5a75-a58f-fd9d47b14fc3", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Azure OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "7c603f36-8039-502a-983d-bf98a618b27a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-azure-marqo.ipynb b/notebooks/snowflake-openai-azure-marqo.ipynb
deleted file mode 100644
index 75ad2788..00000000
--- a/notebooks/snowflake-openai-azure-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "ea82563f-1e40-530f-b1c1-b49a1ac0f125", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Azure OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "4aa821af-2cc8-5a11-b109-361e5b3baf55", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-azure-other-vectordb.ipynb b/notebooks/snowflake-openai-azure-other-vectordb.ipynb
deleted file mode 100644
index 81be22d3..00000000
--- a/notebooks/snowflake-openai-azure-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "6aac9f07-876b-5289-9f4e-7524132617ad", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Azure OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "1124d018-1c19-5e7e-9bc5-0ef3f2d34a44", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-azure-vannadb.ipynb b/notebooks/snowflake-openai-azure-vannadb.ipynb
deleted file mode 100644
index 879e02c3..00000000
--- a/notebooks/snowflake-openai-azure-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "813e792b-6025-521d-acaf-cc20cbd83c99", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Azure OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "2e6e05ce-2c8b-524e-9478-07968ff24fe5", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-standard-chromadb.ipynb b/notebooks/snowflake-openai-standard-chromadb.ipynb
deleted file mode 100644
index d6306dfa..00000000
--- a/notebooks/snowflake-openai-standard-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "75481477-4412-582b-aba7-52183e26f37c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "339703f1-d6cd-5c0f-8ac1-c221f0798512", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-standard-marqo.ipynb b/notebooks/snowflake-openai-standard-marqo.ipynb
deleted file mode 100644
index 5db3df4c..00000000
--- a/notebooks/snowflake-openai-standard-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "66a6659a-5332-5d82-9036-3b8d8c3ff05c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "65d93a64-34d2-53ad-9bcd-f50890404297", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-standard-other-vectordb.ipynb b/notebooks/snowflake-openai-standard-other-vectordb.ipynb
deleted file mode 100644
index f8a6247f..00000000
--- a/notebooks/snowflake-openai-standard-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "a53aec8f-5a05-50f3-9209-7bbf1dca9e6f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "4486c1b3-6c3e-530c-8386-50ca4b3f99e8", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-standard-vannadb.ipynb b/notebooks/snowflake-openai-standard-vannadb.ipynb
deleted file mode 100644
index d6e70fe7..00000000
--- a/notebooks/snowflake-openai-standard-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "f13605be-e49c-5be3-87bc-2a90efb57306", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "e2b2b876-72a0-5854-9177-5ad9bcc29ef7", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-vanna-chromadb.ipynb b/notebooks/snowflake-openai-vanna-chromadb.ipynb
deleted file mode 100644
index adb00201..00000000
--- a/notebooks/snowflake-openai-vanna-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "e493593c-e8c4-5cdd-bdb8-e5d8bb39b0c6", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI via Vanna.AI (Recommended), ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "21979433-946d-5051-90ef-4b087189e318", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-vanna-marqo.ipynb b/notebooks/snowflake-openai-vanna-marqo.ipynb
deleted file mode 100644
index 9d67ea89..00000000
--- a/notebooks/snowflake-openai-vanna-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "89fd2ba0-45a4-5e18-b00c-20d30d963c5e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI via Vanna.AI (Recommended), Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "ee4afbb6-cc60-578b-bba5-10f44e347353", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-vanna-other-vectordb.ipynb b/notebooks/snowflake-openai-vanna-other-vectordb.ipynb
deleted file mode 100644
index 15b02b8c..00000000
--- a/notebooks/snowflake-openai-vanna-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "42212054-35d6-56f3-be8e-47af265d9df9", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI via Vanna.AI (Recommended), Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "c38dad5b-51c7-5b49-9e21-6dbace6b923c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-openai-vanna-vannadb.ipynb b/notebooks/snowflake-openai-vanna-vannadb.ipynb
deleted file mode 100644
index 5664727a..00000000
--- a/notebooks/snowflake-openai-vanna-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "94653bec-534d-5627-9309-0f5d8df292eb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using OpenAI via Vanna.AI (Recommended), Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "e3e271b5-29aa-5174-b69e-2260293a6c0a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-other-llm-chromadb.ipynb b/notebooks/snowflake-other-llm-chromadb.ipynb
deleted file mode 100644
index 84a75034..00000000
--- a/notebooks/snowflake-other-llm-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "f755ebca-fde7-5eb1-802d-2c830e0b6282", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Other LLM, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "0ceeb6ff-3607-5b14-9238-000548eb8fcd", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-other-llm-marqo.ipynb b/notebooks/snowflake-other-llm-marqo.ipynb
deleted file mode 100644
index 76541921..00000000
--- a/notebooks/snowflake-other-llm-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "6b2a5e56-05a4-5866-ba96-3dd081faf78a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Other LLM, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "aef88a00-30a8-567a-8b2d-f6e2abdbca26", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-other-llm-other-vectordb.ipynb b/notebooks/snowflake-other-llm-other-vectordb.ipynb
deleted file mode 100644
index e03ae6ae..00000000
--- a/notebooks/snowflake-other-llm-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "cb9146eb-a0a0-5e0f-82b7-59e92f069498", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Other LLM, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "dcd9d3c5-e561-5d70-a775-f0f40a772553", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/snowflake-other-llm-vannadb.ipynb b/notebooks/snowflake-other-llm-vannadb.ipynb
deleted file mode 100644
index bc0e3d28..00000000
--- a/notebooks/snowflake-other-llm-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "5dcc604a-caa9-5f6d-ab0e-3f417516c076", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for Snowflake using Other LLM, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "aadb008e-18eb-5637-b13d-7a2626e8573d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "392c4dd9-cfbd-5d5d-8346-78041426ee08", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\nvn.connect_to_snowflake(\n account=\"myaccount\",\n username=\"myusername\",\n password=\"mypassword\",\n database=\"mydatabase\",\n role=\"myrole\",\n)\n"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "5d321d01-d66f-5c5e-a3f3-e2d3d4330344", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The information schema query may need some tweaking depending on your database. This is a good starting point.\ndf_information_schema = vn.run_sql(\"SELECT * FROM INFORMATION_SCHEMA.COLUMNS\")\n\n# This will break up the information schema into bite-sized chunks that can be referenced by the LLM\nplan = vn.get_training_plan_generic(df_information_schema)\nplan\n\n# If you like the plan, then uncomment this and run it to train\n# vn.train(plan=plan)\n\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-mistral-chromadb.ipynb b/notebooks/sqlite-mistral-chromadb.ipynb
deleted file mode 100644
index 3344b4b8..00000000
--- a/notebooks/sqlite-mistral-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "b901f917-7d1d-5429-b7f3-628b1f239f8d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Mistral via Mistral API, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "540b0186-561a-5cfa-817b-86688e213f3e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-mistral-marqo.ipynb b/notebooks/sqlite-mistral-marqo.ipynb
deleted file mode 100644
index a6f265b1..00000000
--- a/notebooks/sqlite-mistral-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "a6943a3f-7b29-5bf1-b38e-0435de3c1f13", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Mistral via Mistral API, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "13c67deb-266d-5e80-a282-f743005fe2e0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-mistral-other-vectordb.ipynb b/notebooks/sqlite-mistral-other-vectordb.ipynb
deleted file mode 100644
index 92baa9e7..00000000
--- a/notebooks/sqlite-mistral-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "0aeab80e-f7e9-5ae8-967e-72d92129951d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Mistral via Mistral API, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "2ece6ad9-270f-59ff-a4aa-db2654c5eafd", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-mistral-vannadb.ipynb b/notebooks/sqlite-mistral-vannadb.ipynb
deleted file mode 100644
index fc65a432..00000000
--- a/notebooks/sqlite-mistral-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "5c6445ea-8f7a-5824-b2df-adc2e1e7f405", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Mistral via Mistral API, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "cd81f971-231c-5588-ade6-ba27ec4cbd26", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-azure-chromadb.ipynb b/notebooks/sqlite-openai-azure-chromadb.ipynb
deleted file mode 100644
index 5cf30d01..00000000
--- a/notebooks/sqlite-openai-azure-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "262d99dc-b1f5-52a2-b3dd-c959896d40d0", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Azure OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "b988d8ae-969c-5d2d-9548-d79ab9566238", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-azure-marqo.ipynb b/notebooks/sqlite-openai-azure-marqo.ipynb
deleted file mode 100644
index 125c89b4..00000000
--- a/notebooks/sqlite-openai-azure-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "831c5414-60d7-548f-933c-a363ff7d1031", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Azure OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "2a2e13d1-9783-58bc-94aa-71e814b971a8", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-azure-other-vectordb.ipynb b/notebooks/sqlite-openai-azure-other-vectordb.ipynb
deleted file mode 100644
index bf86de41..00000000
--- a/notebooks/sqlite-openai-azure-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "48659c68-dbb3-5f89-a750-75a3bd1d4872", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Azure OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "ab32bcb2-1993-56d5-886f-8262fde1de35", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-azure-vannadb.ipynb b/notebooks/sqlite-openai-azure-vannadb.ipynb
deleted file mode 100644
index 13ca5244..00000000
--- a/notebooks/sqlite-openai-azure-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "79b5f2a1-f4ac-5c48-9451-4d4c5e9bbb4d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Azure OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "09f17b31-ae67-5c56-a75e-86914502d751", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-standard-chromadb.ipynb b/notebooks/sqlite-openai-standard-chromadb.ipynb
deleted file mode 100644
index 960f8a7d..00000000
--- a/notebooks/sqlite-openai-standard-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "af8cd30a-415d-5ac9-9511-853d099fca5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "110b678c-bd21-5651-9f10-6049f62e5edc", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-standard-marqo.ipynb b/notebooks/sqlite-openai-standard-marqo.ipynb
deleted file mode 100644
index f1c57684..00000000
--- a/notebooks/sqlite-openai-standard-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "1eaacb62-b6c9-5f78-9feb-8444240b5cbe", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "5d155d07-2d90-5dfc-b869-1ca6ba2259b9", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-standard-other-vectordb.ipynb b/notebooks/sqlite-openai-standard-other-vectordb.ipynb
deleted file mode 100644
index dedd0971..00000000
--- a/notebooks/sqlite-openai-standard-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "8fedd282-2590-569a-93ce-ab6c6a4fa48a", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "2218e0a1-fa4e-56e9-9926-933c4a92043b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-standard-vannadb.ipynb b/notebooks/sqlite-openai-standard-vannadb.ipynb
deleted file mode 100644
index 880163d8..00000000
--- a/notebooks/sqlite-openai-standard-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "078f7efe-c23e-5d4c-98ee-a1d3e014992f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "3b9fc8e7-75e3-5625-b12b-40759de02591", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-vanna-chromadb.ipynb b/notebooks/sqlite-openai-vanna-chromadb.ipynb
deleted file mode 100644
index 025282b4..00000000
--- a/notebooks/sqlite-openai-vanna-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "9d6519a8-e544-5523-82ce-97784be01264", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI via Vanna.AI (Recommended), ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "96bb2afc-e019-52bb-b5ae-575a74d42bd3", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-vanna-marqo.ipynb b/notebooks/sqlite-openai-vanna-marqo.ipynb
deleted file mode 100644
index e2614c8e..00000000
--- a/notebooks/sqlite-openai-vanna-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "859cb351-0751-5448-a269-505618a2bc89", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI via Vanna.AI (Recommended), Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "af96ca79-ccab-57c3-a8ef-d222d781d4c1", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-vanna-other-vectordb.ipynb b/notebooks/sqlite-openai-vanna-other-vectordb.ipynb
deleted file mode 100644
index 8183cd3b..00000000
--- a/notebooks/sqlite-openai-vanna-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "506bdbf0-9097-5ea8-a3ac-fbbee8ce189c", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI via Vanna.AI (Recommended), Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "d0d5c54c-adbb-572b-a2e5-bd708e7d6392", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-openai-vanna-vannadb.ipynb b/notebooks/sqlite-openai-vanna-vannadb.ipynb
deleted file mode 100644
index 75641d28..00000000
--- a/notebooks/sqlite-openai-vanna-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "3b9016b5-2bfd-5bd2-98e7-8ba4a9dec1be", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using OpenAI via Vanna.AI (Recommended), Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "e5b1e80e-8db4-5085-8d4f-6e34ca21d45e", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
Which LLM do you want to use?
\n
\n \n
\n \n
\n
[Selected] OpenAI via Vanna.AI (Recommended)
\n Use Vanna.AI for free to generate your queries\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-other-llm-chromadb.ipynb b/notebooks/sqlite-other-llm-chromadb.ipynb
deleted file mode 100644
index 2a98dc90..00000000
--- a/notebooks/sqlite-other-llm-chromadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "d3c0d01c-97e4-50e9-8e05-32bbed37f5d3", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Other LLM, ChromaDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "a3b250e1-ea89-548a-ac9d-73350818add5", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n Use ChromaDBs open-source vector database for free locally. No additional setup is necessary -- all database files will be created and stored locally.\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-other-llm-marqo.ipynb b/notebooks/sqlite-other-llm-marqo.ipynb
deleted file mode 100644
index 4bdcfd90..00000000
--- a/notebooks/sqlite-other-llm-marqo.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "5a3d07b2-2583-51d2-a8c1-c0321bfc439b", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Other LLM, Marqo\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "98059112-2f3f-5c56-b579-836d1282aaec", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-other-llm-other-vectordb.ipynb b/notebooks/sqlite-other-llm-other-vectordb.ipynb
deleted file mode 100644
index 7253864c..00000000
--- a/notebooks/sqlite-other-llm-other-vectordb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "e7a07123-59ae-5e9d-9fc4-8606541246e6", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Other LLM, Other VectorDB\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "f8bf2a61-7dfe-598e-8f6b-d29dc7b440ea", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/sqlite-other-llm-vannadb.ipynb b/notebooks/sqlite-other-llm-vannadb.ipynb
deleted file mode 100644
index 7857555a..00000000
--- a/notebooks/sqlite-other-llm-vannadb.ipynb
+++ /dev/null
@@ -1 +0,0 @@
-{"cells": [{"id": "22fc9194-d307-554e-84c7-5c61665bd738", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Generating SQL for SQLite using Other LLM, Vanna Hosted Vector DB (Recommended)\nThis notebook runs through the process of using the `vanna` Python package to generate SQL using AI (RAG + LLMs) including connecting to a database and training. If you're not ready to train on your own database, you can still try it using a sample [SQLite database](getting-started.html)."}, {"id": "ba3c203c-27c0-589c-82e4-c1411f3af28d", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n
\n "}, {"id": "4bb60e4c-1036-5c5d-84c6-11c9f2e9c8d1", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.connect_to_sqlite('my-database.sqlite')"}, {"id": "f06c0e89-83f7-5ad1-8f6e-a64cf5bd8e60", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Training\nYou only need to train once. Do not train again unless you want to add more training data."}, {"id": "068a891d-bbab-5462-9767-ebf7211fe423", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\ndf_ddl = vn.run_sql(\"SELECT type, sql FROM sqlite_master WHERE sql is not null\")\n\nfor ddl in df_ddl['sql'].to_list():\n vn.train(ddl=ddl)\n"}, {"id": "7c421f88-42ea-567c-8581-3dcac96c36a3", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "\n# The following are methods for adding training data. Make sure you modify the examples to match your database.\n\n# DDL statements are powerful because they specify table names, colume names, types, and potentially relationships\nvn.train(ddl=\"\"\"\n CREATE TABLE IF NOT EXISTS my-table (\n id INT PRIMARY KEY,\n name VARCHAR(100),\n age INT\n )\n\"\"\")\n\n# Sometimes you may want to add documentation about your business terminology or definitions.\nvn.train(documentation=\"Our business defines OTIF score as the percentage of orders that are delivered on time and in full\")\n\n# You can also add SQL queries to your training data. This is useful if you have some queries already laying around. You can just copy and paste those from your editor to begin generating new SQL.\nvn.train(sql=\"SELECT * FROM my-table WHERE name = 'John Doe'\")\n"}, {"id": "59fcb3b1-4434-583d-82be-ed8e9b04d699", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# At any time you can inspect what training data the package is able to reference\ntraining_data = vn.get_training_data()\ntraining_data"}, {"id": "0dd237e6-ab36-5dd4-9234-e2d25168d50f", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# You can remove training data if there's obsolete/incorrect information. \nvn.remove_training_data(id='1-ddl')"}, {"id": "bf2fc121-a3ab-5a2e-95b0-383271e82d5f", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Asking the AI\nWhenever you ask a new question, it will find the 10 most relevant pieces of training data and use it as part of the LLM prompt to generate the SQL."}, {"id": "edb6679e-a102-5efc-b890-81babca8f500", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "vn.ask(question=...)"}, {"id": "8c49dd68-3bc6-5098-93f1-2d4d8617badb", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Launch the User Interface\n![vanna-flask](https://vanna.ai/blog/img/vanna-flask.gif)"}, {"id": "b87d140b-ef56-5795-b489-46bb11d01459", "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "from vanna.flask import VannaFlaskApp\napp = VannaFlaskApp(vn)\napp.run()"}, {"id": "29793859-c3c8-50da-994a-c8f6348d6730", "cell_type": "markdown", "execution_count": null, "metadata": {}, "outputs": [], "source": "## Next Steps\nUsing Vanna via Jupyter notebooks is great for getting started but check out additional customizable interfaces like the \n- [Streamlit app](https://github.com/vanna-ai/vanna-streamlit)\n- [Flask app](https://github.com/vanna-ai/vanna-flask)\n- [Slackbot](https://github.com/vanna-ai/vanna-slack)\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5"}}, "nbformat": 4, "nbformat_minor": 5}
\ No newline at end of file
diff --git a/notebooks/streamlit.ipynb b/notebooks/streamlit.ipynb
deleted file mode 100644
index 5f6dc409..00000000
--- a/notebooks/streamlit.ipynb
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- ""
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- }
- ],
- "metadata": {
- "language_info": {
- "name": "python"
- },
- "orig_nbformat": 4
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/notebooks/vn-ask.ipynb b/notebooks/vn-ask.ipynb
deleted file mode 100644
index 618aa3b6..00000000
--- a/notebooks/vn-ask.ipynb
+++ /dev/null
@@ -1,572 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "![Vanna AI](https://img.vanna.ai/vanna-ask.svg)\n",
- "\n",
- "The following notebook goes through the process of asking questions from your data using Vanna AI. Here we use a demo model that is pre-trained on the [TPC-H dataset](https://docs.snowflake.com/en/user-guide/sample-data-tpch.html) that is available in Snowflake.\n",
- "\n",
- "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/vanna-ai/vanna-py/blob/main/notebooks/vn-ask.ipynb)\n",
- "\n",
- "[![Open in GitHub](https://img.vanna.ai/github.svg)](https://github.com/vanna-ai/vanna-py/blob/main/notebooks/vn-ask.ipynb)\n",
- "\n",
- "# Install Vanna\n",
- "First we install Vanna from [PyPI](https://pypi.org/project/vanna/) and import it.\n",
- "Here, we'll also install the Snowflake connector. If you're using a different database, you'll need to install the appropriate connector."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install vanna\n",
- "%pip install snowflake-connector-python"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn\n",
- "import snowflake.connector"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Login\n",
- "Creating a login and getting an API key is as easy as entering your email (after you run this cell) and entering the code we send to you. Check your Spam folder if you don't see the code."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "api_key = vn.get_api_key('my-email@example.com')\n",
- "vn.set_api_key(api_key)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set your Model\n",
- "You need to choose a globally unique model name. Try using your company name or another unique string. All data from models are isolated - there's no leakage."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.set_model('tpc') # Enter your model name here. This is a globally unique identifier for your model."
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set Database Connection\n",
- "These details are only referenced within your notebook. These database credentials are never sent to Vanna's severs."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_snowflake(account='my-account', username='my-username', password='my-password', database='my-database')"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Get Results\n",
- "This gets the SQL, gets the dataframe, and prints them both. Note that we use your connection string to execute the SQL on your warehouse from your local instance. Your connection nor your data gets sent to Vanna's servers. For more info on how Vanna works, [see this post](https://medium.com/vanna-ai/how-vanna-works-how-to-train-it-data-security-8d8f2008042)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "SELECT c.c_name as customer_name,\n",
- " sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales\n",
- "FROM snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o\n",
- " ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c\n",
- " ON o.o_custkey = c.c_custkey\n",
- "GROUP BY customer_name\n",
- "ORDER BY total_sales desc limit 10;\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
CUSTOMER_NAME
\n",
- "
TOTAL_SALES
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
Customer#000143500
\n",
- "
6757566.0218
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
Customer#000095257
\n",
- "
6294115.3340
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
Customer#000087115
\n",
- "
6184649.5176
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
Customer#000131113
\n",
- "
6080943.8305
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
Customer#000134380
\n",
- "
6075141.9635
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
Customer#000103834
\n",
- "
6059770.3232
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
Customer#000069682
\n",
- "
6057779.0348
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
Customer#000102022
\n",
- "
6039653.6335
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
Customer#000098587
\n",
- "
6027021.5855
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
Customer#000064660
\n",
- "
5905659.6159
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " CUSTOMER_NAME TOTAL_SALES\n",
- "0 Customer#000143500 6757566.0218\n",
- "1 Customer#000095257 6294115.3340\n",
- "2 Customer#000087115 6184649.5176\n",
- "3 Customer#000131113 6080943.8305\n",
- "4 Customer#000134380 6075141.9635\n",
- "5 Customer#000103834 6059770.3232\n",
- "6 Customer#000069682 6057779.0348\n",
- "7 Customer#000102022 6039653.6335\n",
- "8 Customer#000098587 6027021.5855\n",
- "9 Customer#000064660 5905659.6159"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAPoCAYAAABkvZZOAAAgAElEQVR4XuzdCbhdZXU38PeGhCkBjFQwhEEkYDDMkwIODIKzMn1O/epsxaEtKKKCUkBwaPtZAcU64QBUxRapiopigCLzDEUjg4wqSqGEECQkJN9zjuVK4ObeG961cve++5fn6fPQe/f5n3f/1sblWj09GZg6deqS4g8BAgQIECBAgAABAgQIECBAgAABAgQItE5gwIK3dTVzYAIECBAgQIAAAQIECBAgQIAAAQIECPQFLHg9CAQIECBAgAABAgQIECBAgAABAgQIEGipgAVvSwvn2AQIECBAgAABAgQIECBAgAABAgQIELDg9QwQIECAAAECBAgQIECAAAECBAgQIECgpQIWvC0tnGMTIECAAAECBAgQIECAAAECBAgQIEDAgtczQIAAAQIECBAgQIAAAQIECBAgQIAAgZYKWPC2tHCOTYAAAQIECBAgQIAAAQIECBAgQIAAAQtezwABAgQIECBAgAABAgQIECBAgAABAgRaKmDB29LCOTYBAgQIECBAgAABAgQIECBAgAABAgQseD0DBAgQIECAAAECBAgQIECAAAECBAgQaKmABW9LC+fYBAgQIECAAAECBAgQIECAAAECBAgQsOD1DBAgQIAAAQIECBAgQIAAAQIECBAgQKClAha8LS2cYxMgQIAAAQIECBAgQIAAAQIECBAgQMCC1zNAgAABAgQIECBAgAABAgQIECBAgACBlgpY8La0cI5NgAABAgQIECBAgAABAgQIECBAgAABC17PAAECBAgQIECAAAECBAgQIECAAAECBFoqYMHb0sI5NgECBAgQIECAAAECBAgQIECAAAECBCx4PQMECBAgQIAAAQIECBAgQIAAAQIECBBoqYAFb0sL59gECBAgQIAAAQIECBAgQIAAAQIECBCw4PUMECBAgAABAgQIECBAgAABAgQIECBAoKUCFrwtLZxjEyBAgAABAgQIECBAgAABAgQIECBAwILXM0CAAAECBAgQIECAAAECBAgQIECAAIGWCljwtrRwjk2AAAECBAgQIECAAAECBAgQIECAAAELXs8AAQIECBAgQIAAAQIECBAgQIAAAQIEWipgwdvSwjk2AQIECBAgQIAAAQIECBAgQIAAAQIELHg9AwQIECBAgAABAgQIECBAgAABAgQIEGipgAVvSwvn2AQIECBAgAABAgQIECBAgAABAgQIELDg9QwQIECAAAECBAgQIECAAAECBAgQIECgpQIWvC0tnGMTIECAAAECBAgQIECAAAECBAgQIEDAgtczQIAAAQIECBAgQIAAAQIECBAgQIAAgZYKWPC2tHCOTYAAAQIECBAgQIAAAQIECBAgQIAAAQtezwABAgQIECBAgAABAgQIECBAgAABAgRaKmDB29LCOTYBAgQIECBAgAABAgQIECBAgAABAgQseD0DBAgQIECAAAECBAgQIECAAAECBAgQaKmABW9LC+fYBAgQIECAAAECBAgQIECAAAECBAgQsOD1DBAgQIAAAQIECBAgQIAAAQIECBAgQKClAha8LS2cYxMgQIAAAQIECBAgQIAAAQIECBAgQMCC1zNAgAABAgQIECBAgAABAgQIECBAgACBlgpY8La0cI5NgAABAgQIECBAgAABAgQIECBAgAABC17PAAECBAgQIECAAAECBAgQIECAAAECBFoqYMHb0sI5NgECBAgQIECAAAECBAgQIECAAAECBCx4PQMECBAgQIAAAQIECBAgQIAAAQIECBBoqYAFb0sL59gECBAgQIAAAQIECBAgQIAAAQIECBCw4PUMECBAgAABAgQIECBAgAABAgQIECBAoKUCFrwtLZxjEyBAgAABAgQIECBAgAABAgQIECBAwILXM0CAAAECBAgQIECAAAECBAgQIECAAIGWCljwtrRwjk2AAAECBAgQIECAAAECBAgQIECAAAELXs8AAQIECBAgQIAAAQIECBAgQIAAAQIEWipgwdvSwjk2AQIECBAgQIAAAQIECBAgQIAAAQIELHg9AwQIECBAgAABAgQIECBAgAABAgQIEGipgAVvSwvn2AQIECBAgAABAgQIECBAgAABAgQIELDg9QwQIECAAAECBAgQIECAAAECBAgQIECgpQIWvC0tnGMTIECAAAECBAgQIECAAAECBAgQIEDAgtczQIAAAQIECBAgQIAAAQIECBAgQIAAgZYKWPC2tHCOTYAAAQIECBAgQIAAAQIECBAgQIAAAQtezwABAgQIECBAgAABAgQIECBAgAABAgRaKmDB29LCOTYBAgQIECBAgAABAgQIECBAgAABAgQseD0DBAgQIECAAAECBAgQIECAAAECBAgQaKmABW9LC+fYBAgQIECAAAECBAgQIECAAAECBAgQsOD1DBAgQIAAAQIECBAgQIAAAQIECBAgQKClAha8LS2cYxMgQIAAAQIECBAgQIAAAQIECBAgQMCC1zNAgAABAgQIECBAgAABAgQIECBAgACBlgpY8La0cI5NgAABAgQIECBAgAABAgQIECBAgAABC17PAAECBAgQIECAAAECBAgQIECAAAECBFoqYMHb0sI5NgECBAgQIECAAAECBAgQIECAAAECBCx4PQMECBAgQIAAAQIECBAgQIAAAQIECBBoqYAFb0sL59gECBAgQIAAAQIECBAgQIAAAQIECBCw4PUMECBAgAABAgQIECBAgAABAgQIECBAoKUCFrwtLZxjEyBAgAABAgQIECBAgAABAgQIECBAwILXM0CAAAECBAgQIECAAAECBAgQIECAAIGWCljwtrRwjk2AAAECBAgQIECAAAECBAgQIECAAAELXs8AAQIECBAgQIAAAQIECBAgQIAAAQIEWipgwdvSwjk2AQIECBAgQIAAAQIECBAgQIAAAQIELHg9AwQIECBAgAABAgQIECBAgAABAgQIEGipgAVvSwvn2AQIECBAgAABAgQIECBAgAABAgQIELDg9QwQIECAAAECBAgQIECAAAECBAgQIECgpQIWvC0tnGMTIECAAAECBAgQIECAAAECBAgQIEDAgtczQIAAAQIECBAgQIAAAQIECBAgQIAAgZYKWPC2tHCOTYAAAQIECBAgQIAAAQIECBAgQIAAAQtezwABAgQIECBAgAABAgQIECBAgAABAgRaKmDB29LCOTYBAgQIECBAgAABAgQIECBAgAABAgQseD0DBAgQIECAAAECBAgQIECAAAECBAgQaKmABW9LC+fYBAgQIECAAAECBAgQIECAAAECBAgQsOD1DBAgQIAAAQIECBAgQIAAAQIECBAgQKClAha8LS2cYxMgQIAAAQIECBAgQIAAAQIECBAgQMCC1zNAgAABAgQIECBAgAABAgQIECBAgACBlgpY8La0cI5NgAABAgQIECBAgAABAgQIECBAgAABC17PAAECBAgQIECAAAECBAgQIECAAAECBFoqYMHb0sI5NgECBAgQIECAAAECBAgQIECAAAECBCx4PQMECBAgQIAAAQIECBAgQIAAAQIECBBoqYAFb0sL59gECBAgQIAAAQIECBAgQIAAAQIECBCw4PUMECBAgAABAgQIECBAgAABAgQIECBAoKUCFrwtLZxjEyBAgAABAgQIECBAgAABAgQIECBAwILXM0CAAAECBAgQIECAAAECBAgQIECAAIGWCljwtrRwjk2AAAECBAgQIECAAAECBAgQIECAAAELXs8AAQIECBAgQIAAAQIECBAgQIAAAQIEWipgwdvSwjk2AQIECBAgQIAAAQIECBAgQIAAAQIELHg9AwQIECBAgAABAgQIECBAgAABAgQIEGipgAVvSwvn2AQIECBAgAABAgQIECBAgAABAgQIELDg9QwQIECAAAECBAgQIECAAAECBAgQIECgpQIWvC0tnGMTIECAAAECBAgQIECAAAECBAgQIEDAgtczQIAAAQIECBAgQIAAAQIECBAgQIAAgZYKWPC2tHCOTYAAAQIECBAgQIAAAQIECBAgQIAAAQtezwABAgQIECBAgAABAgQIECBAgAABAgRaKmDB29LCOTYBAgQIECBAgAABAgQIECBAgAABAgQseD0DBAgQIECAAAECBAgQIECAAAECBAgQaKmABW9LC+fYBAgQIECAAAECBAgQIECAAAECBAgQsOD1DBAgQIAAAQIECBAgQIAAAQIECBAgQKClAha8LS2cYxMgQIAAAQIECBAgQIAAAQIECBAgQMCC1zNAgAABAgQIECBAgAABAgQIECBAgACBlgpY8La0cI5NgAABAgQIECBAgAABAgQIECBAgAABC17PAAECBAgQIECAAAECBAgQIECAAAECBFoqYMHb0sI5NgECBAgQIECAAAECBAgQIECAAAECBCx4PQMECBAgQIAAAQIECBAgQIAAAQIECBBoqYAFb0sL59gECBAgQIAAAQIECBAgQIAAAQIECBCw4PUMECBAgAABAgQIECBAgAABAgQIECBAoKUCFrwtLZxjEyBAgAABAgQIECBAgAABAgQIECBAwILXM0CAAAECBAgQIECAAAECBAgQIECAAIGWCljwtrRwjk2AAAECBAgQIECAAAECBAgQIECAAAELXs8AAQIECBAgQIAAAQIECBAgQIAAAQIEWipgwdvSwj3ZY//wrJ+VdZ62zqhffsLx/1y+/rWT+tdPnjy5nHf+xYOvnT377HLoIQcvM2tgYKCcc94FZcqUNfrX3HrrLeWA/V416vd2IQECBAgQIECAAAECBAgQIECAAAECwwtY8HbsCfnVTbeVVVddddR3/bWvfqX8/UcP61//lKlTyzXXzRl87ZIlS8p228wq995zz5B57zzwPeWwjxwx+Lu5c+eWrWZtNur3diEBAgQIECBAgAABAgQIECBAgAABAha8noHHCHz166eUdZ8+bViTNdZYo2y44Ub9a4Zb8PZ+f+YPvlfefeA7hsy7+ro5ZerUqRa8nkACBAgQIECAAAECBAgQIECAAAECSQI+wZsE2+bYb3/nu+W5O+/Sv4V3vuOt5cc/OrP/z4//BG/vZ4sXL+5/KnfevHlL3fI+++5Xjjvh80v9zCd42/xUODsBAgQIECBAgAABAgQIECBAgEATBSx4m1iVMTzTrFlblN739Pb+3HHH7eV5O+84eJrHLnivvOLyst32O/R/d9q3v1k+8P6Dljr1hZdcUaZPX7/c/Yc/lMlTppTVV1+9WPCOYWG9NQECBAgQIECAAAECBAgQIECAwLgUsOAdl2V98jd19uz/LJtu9qx+wGsO2KdccvFFQy54Tzn562X3PfbsL3EXLlxYZs3cpCxYsKB/7c677Fq+ddrp/X/u/SVsRx59rAXvky+JVxIgQIAAAQIECBAgQIAAAQIECBBYpoAFr4djUGCPPfcqve/o7f355S9+UV6y9+5L6Tz2E7y9Be/FF11QPnviF/vXfPWkL5cjjzi8/89n/fTcMnPzzQc/sfvLG26x4PWcESBAgAABAgQIECBAgAABAgQIEEgQsOBNQG1r5GVXXlvWWWfd/vFf/KLdypw5vxx2wXv4hw8tV13zi/LUtdfuf3p35qbPKJvMmFHOnn1+/3Wf/Pgx5fMnnlAseNv6RDg3AQIECBAgQIAAAQIECBAgQIBA0wUseJteoRV0vje+6S3lY8d+sv9ul15ycfk/+7/6Ce/8+E/w9ha8b3rzW8vRx3yif+3xx3267LTTc/t/QduDDz5Ynv2sZ5YlS5YMu+Cdut6MFXSH3oYAAQIECBAgQIAAAQIECBAYK4H/+e1NY/XW3pfAuBew4B33JR75BgcGBsr1c24ukydP7i9kd33uDuU3v7lzVAve3kW9106ZMqX/XbwTJ04svbwTP3d8+dQnju1nDPcJ3nU32XbkA7qCAAECBAgQIECAAAECBAgQaLXA72++qtXnd3gCTRaw4G1ydVbQ2T58+EfLge96b//dfnLWj8o73vbmId95qE/w9i486H2HlIPf94HB1zz88MNl8802LosWLRpxwbvyalNW0F16GwIECBAgQIAAAQIECBAgQGCsBB7+4wNj9dbel8C4F7DgHfclHv4Ge5/avea/flUmTZpUFi9eXLbZcmb/L0cb6s+yFrwTJkwoc268tayyyir9l516yjfKYR/688LXd/B2/CFz+wQIECBAgAABAgQIECBAgAABAmkCFrxptO0IPuFzXyivevU+/cN++1v/Wg495OBlHnxZC97eC3rf39v7Ht/ekniLzWeU+fPnD+ZY8LbjWXBKAgQIECBAgAABAgQIECBAgACB9glY8LavZmEnnjZtvXLRpVf2vzO397UKvcXsggULntSCt/fp3Rfutke563e/Lddee81SGRa8YSUTRIAAAQIECBAgQIAAAQIECBAgQGApAQveDj8Q3/7Od8tzd96lL/DYvxRtWSTDfYJ3OEYL3g4/ZG6dAAECBAgQIECAAAECBAgQIEAgVcCCN5W3ueGzZm1RfnjWz/oH7H2dwqyZm5QlS5YMe2AL3ubW08kIECBAgAABAgQIECBAgAABAgS6KWDB2826l5+dc36Zselm/bs/+qgjyle+9IURJSx4RyRyAQECBAgQIECAAAECBAgQIECAAIEVKmDBu0K5m/FmO+70nPJvp3+vf5j/uffess1Wm4/qYGuttVa59vob+tee/I2vlY8c9sFRve7Rr2i47777ytZbPGtUr3ERAQIECBAgQIAAAQIECBAgQIAAAQIjC1jwjmzkCgIECBAgQIAAAQIECBAgQIAAAQIECDRSwIK3kWVxKAIECBAgQIAAAQIECBAgQIAAAQIECIwsYME7spErCBAgQIAAAQIECBAgQIAAAQIECBAg0EgBC95GlsWhCBAgQIAAAQIECBAgQIAAAQIECBAgMLKABe/IRq4gQIAAAQIECBAgQIAAAQIECBAgQIBAIwUseBtZFociQIAAAQIECBAgQIAAAQIECBAgQIDAyAIWvCMbuYIAAQIECBAgQIAAAQIECBAgQIAAAQKNFLDgbWRZHIoAAQIECBAgQIAAAQIECBAgQIAAAQIjC1jwjmzkCgIECBAgQIAAAQIECBAgQIAAAQIECDRSwIK3kWVxKAIECBAgQIAAAQIECBAgQIAAAQIECIwsYME7spErCBAgQIAAAQIECBAgQIAAAQIECBAg0EgBC95GlsWhCBAgQIAAAQIECBAgQIAAAQIECBAgMLKABe/IRq5oiMCSJUsacpL2HmNgYKC9h3dyAgQIECBAgAABAgQIECBAgACBJwhY8HooWiEwecozyjrTXtCKszb1kPMfuKPcc/fl5ZFF85p6ROciQIAAAQIECBAgQIAAAQIECBBYTgEL3uUEc/mKF+h9cnfq2tuUPV7+kxX/5uPoHe+45Yxy5cXvL48semAc3ZVbIUCAAAECBAgQIECAAAECBAh0W8CCt9v1b8XdW/DGlMmCN8ZRCgECBAgQIECAAAECBAgQIECgSQIWvE2qhrMMKWDBG/NgWPDGOEohQIAAAQIECBAgQIAAAQIECDRJwIK3SdVwFgvexGfAgjcRVzQBAgQIECBAgAABAgQIECBAYIwELHjHCN7bjl7AJ3hHbzXclRa8MY5SCBAgQIAAAQIECBAgQIAAAQJNErDgbVI1nGVIAQvemAfDgjfGUQoBAgQIECBAgAABAgQIECBAoEkCFrxNqoazWPAmPgMWvIm4ogkQIECAAAECBAgQIECAAAECYyRgwTtG8N529AI+wTt6q+GutOCNcZRCgAABAgQIECBAgAABAgQIEGiSgAVvk6rhLEMKWPDGPBgWvDGOUggQIECAAAECBAgQIECAAAECTRKw4G1SNZzFgjfxGbDgTcQVTYAAAQIECBAgQIAAAQIECBAYIwEL3jGC97ajF/AJ3tFbDXelBW+MoxQCBAgQIECAAAECBAgQIECAQJMELHibVA1nGVLAgjfmwbDgjXGUQoAAAQIECBAgQIAAAQIECBBokoAFb5Oq4SwWvInPgAVvIq5oAgQIECBAgAABAgQIECBAgMAYCVjwjhG8tx29gE/wjt5quCsteGMcpRAgQIAAAQIECBAgQIAAAQIEmiRgwdukajjLkAIWvDEPhgVvjKMUAgQIECBAgAABAgQIECBAgECTBCx4m1QNZ7HgTXwGLHgTcUUTIECAAAECBAgQIECAAAECBMZIwIJ3jOC97egFfIJ39FbDXWnBG+MohQABAgQIECBAgAABAgQIECDQJAEL3iZVw1mGFLDgjXkwLHhjHKUQIECAAAECBAgQIECAAAECBJokYMHbpGo4iwVv4jNgwZuIK5oAAQIECBAgQIAAAQIECBAgMEYCFrxjBO9tRy/gE7yjtxruSgveGEcpBAgQIECAAAECBAgQIECAAIEmCVjwNqkazjKkgAVvzINhwRvjKIUAAQIECBAgQIAAAQIECBAg0CQBC94mVcNZLHgTnwEL3kRc0QQIECBAgAABAgQIECBAgACBMRKw4B0jeG87egGf4B291XBXWvDGOEohQIAAAQIECBAgQIAAAQIECDRJwIK3SdVwliEFLHhjHgwL3hhHKQQIECBAgAABAgQIECBAgACBJglY8DapGs5iwZv4DFjwJuKKJkCAAAECBAgQIECAAAECBAiMkYAF7xjBe9vRC/gE7+ithrvSgjfGUQoBAgQIECBAgAABAgQIECBAoEkCFrxNqoazDClgwRvzYFjwxjhKIUCAAAECBAgQIECAAAECBAg0ScCCt0nVcBYL3sRnwII3EVc0AQIECBAgQIAAAQIECBAgQGCMBCx4xwje245ewCd4R2813JUWvDGOUggQIECAAAECBAgQIECAAAECTRKw4G1SNZxlSAEL3pgHw4I3xlEKAQIECBAgQIAAAQIECBAgQKBJAha8TaqGs1jwJj4DFryJuKIJECBAgAABAgQIECBAgAABAmMkYME7RvDedvQCPsE7eqvhrrTgjXGUQoAAAQIECBAgQIAAAQIECBBokoAFb5Oq4SxDCljwxjwYFrwxjlIIECBAgAABAgQIECBAgAABAk0SsOBtUjWcxYI38Rmw4E3EFU2AAAECBAgQIECAAAECBAgQGCMBC94xgve2oxfwCd7RWw13pQVvjKMUAgQIECBAgAABAgQIECBAgECTBCx4m1QNZxlSwII35sGw4I1xlEKAAAECBAgQIECAAAECBAgQaJKABW+TquEsFryJz4AFbyKuaAIECBAgQIAAAQIECBAgQIDAGAlY8I4RvLcdvYBP8I7eargrLXhjHKUQIECAAAECBAgQIECAAAECBJokYMHbpGo4y5ACFrwxD4YFb4yjFAIECBAgQIAAAQIECBAgQIBAkwQseJtUDWex4E18Bix4E3FFEyBAgAABAgQIECBAgAABAgTGSMCCd4zgve3oBXyCd/RWw12ZseDt1WZgYCDmgFIIECBAgAABAgQIECBAgAABAgSWW8CCd7nJvGBFC1jwxohnLHgHJqxaZm55UFlllakxh+xoyjWXHV4WL15oWd7R+rttAgQIECBAgAABAgQIECBQI2DBW6PntStEwII3hjljwTthpdXLXq86r0yesmHMITuacsap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2bRxA+cliSwJhAdYvHS55MyVS4UwQSgTWuITQHiMacGzpFr1mrrX6JMnTyRfbt/E75yX9wD3/+nBs1SIJs3GjhkpC+fP83IyHD4JxCTgSfd/CrxcwSRAAiRAAiRAAiRAAiRAAiRAAh5NIG/efCr2Oy1pEUDOhJB5C9XuBMR+7dalQ9LqoBf3Bl7W3br3ktdee00K+udRcZNpJEACnkuAAq/nzh17TgIkQAIkQAIkQAIkQAIkQAIkQAJJngC8Ro8dPSzPnj1L8n31pg6mSJFCChYsLJGR0WFOaCRAAp5LgAKv584de04CJEACJEACJEACJEACJEACJEACJEACJEACJODlBCjwevkC4PBJgARIgARIgARIgARIgARIgARIgARIgARIgAQ8lwAFXs+dO/acBEiABEiABEiABEiABEiABEiABEiABEiABEjAywlQ4PXyBcDhkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeC4BCryeO3fsOQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJcToMDr5QuAwycBEiABEiABEiABEiABEiABEiABEiABEiABEvBcAhR4PXfu2HMSIAESIAESIAESIAESIAESIAESIAESIAESIAEvJ0CB18sXAIdPAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTguQQo8Hru3LHnJEACJEACJEACJEACJEACJEACJEACJEACJEACXk6AAq+XLwAOnwRIgARIgARIgARIgARIgARIgARIgARIgARIwHMJUOD13Lljz0mABEiABEiABEiABEiABEiABEiABEiABEiABLycAAVeL18AHD4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIDnEqDA67lzx56TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4OQEKvF6+ADh8EiABEiABEiABEiABEiABEiABEiABEiABEiABzyVAgddz5449JwESIAESIAESIAESIAESIAESIAESIAESIAES8HICFHi9fAFw+CRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp5LgAKv584de04CJEACJEACJEACJEACJEACJEACJEACJEACJODlBCjwevkC4PBJgARIgARIgARIgARIgARIgARIgARIgARIgAQ8lwAFXs+dO/acBEiABEiABEiABEiABEiABEiABEiABEiABEjAywlQ4PXyBcDhkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeC4BCryeO3fsOQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJcToMDr5QuAwycBEiABEiABEiABEiABEiABEiABEiABEiABEvBcAhR4PXfu2HMSIAESIAESIAESIAESIAESIAESIAESIAESIAEvJ0CB18sXAIdPAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTguQQo8Hru3LHnJEACJEACJEACJEACJEACJEACJEACJEACJEACXk6AAq+XLwAOnwRIgARIgARIgARIgARIgARIgARIgARIgARIwHMJUOD13Lljz0mABEiABEiABEiABEiABEiABEiABEiABEiABLycAAVeL18AHD4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIDnEqDA67lzx56TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4OQEKvF6+ADh8EiABEiABEiABEiABEiABEiABEiABEiABEiABzyVAgddz5449JwESIAESIAESIAESIAESIAESIAESIAESIAES8HICFHi9fAFw+CRAAiRAAiSQlAmkSJFCfv/99yTXxffee09+++23JNWvN954Q1Kl+kju3bubpPrFzpAACZAACZAACZAACZAACcQvAQq88cuXrZMACZAACZAACbhIIG3adNK7b3/JmSu34L8hov7jH/+Q//3vf/Kf//xHHj36RbZv3SJzZs+IIa52695LmjZvoc6EMuPGjnJ61mHDR0nVatVVuVUrlsvcOTNt1kEfunbrKc1atBQfnw/k7bffVuXQr+fPn8sfT5/Kwx8eypZNG2X5sqW6IJ3N11fClq1y2g9nBRaEhkh42JIYxVL6+MjIkWMlT9688mmatPLOO++oMn///bf88vPPcuvWTdm8aYMsXxbm8BTZc+SQJWEr9DIvXryQ6lUryh9//OGw3r///W/ZtWe//PuNN/Ryg4P6y4ED+y3qzZ47XwoULOhsmDGOV61UzkLc37UnUt5N8W6Mci+eP5dff/1VHj9+JCdPnJCFC+bJX3/9Zfp8salgPTawq12jqjx58sRuc7PmhErBQoXU8cCAFnLl8mWnp169Zr2kz5BBL7d40QJZsmiB03pt2raXdu076uVu3rghLZs3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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/markdown": [
- "AI-generated follow-up questions:\n",
- "\n",
- "* What is the country name for each of the top 10 customers by sales?\n",
- "* How many orders does each of the top 10 customers by sales have?\n",
- "* What is the total revenue for each of the top 10 customers by sales?\n",
- "* What are the customer names and total sales for customers in the United States?\n",
- "* Which customers in Africa have returned the most parts with a gross value?\n",
- "* What are the total sales for the top 3 customers?\n",
- "* What are the customer names and total sales for the top 5 customers?\n",
- "* What are the total sales for customers in Europe?\n",
- "* How many customers are there in each country?\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "vn.ask(\"What are the top 10 customers by sales?\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "SELECT n.n_name as country_name,\n",
- " sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales\n",
- "FROM snowflake_sample_data.tpch_sf1.nation n join snowflake_sample_data.tpch_sf1.customer c\n",
- " ON n.n_nationkey = c.c_nationkey join snowflake_sample_data.tpch_sf1.orders o\n",
- " ON c.c_custkey = o.o_custkey join snowflake_sample_data.tpch_sf1.lineitem l\n",
- " ON o.o_orderkey = l.l_orderkey\n",
- "GROUP BY country_name\n",
- "ORDER BY total_sales desc limit 5;\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
COUNTRY_NAME
\n",
- "
TOTAL_SALES
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
FRANCE
\n",
- "
8960205391.8314
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
INDONESIA
\n",
- "
8942575217.6237
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
RUSSIA
\n",
- "
8925318302.0710
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
MOZAMBIQUE
\n",
- "
8892984086.0088
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
JORDAN
\n",
- "
8873862546.7864
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " COUNTRY_NAME TOTAL_SALES\n",
- "0 FRANCE 8960205391.8314\n",
- "1 INDONESIA 8942575217.6237\n",
- "2 RUSSIA 8925318302.0710\n",
- "3 MOZAMBIQUE 8892984086.0088\n",
- "4 JORDAN 8873862546.7864"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAPoCAYAAABkvZZOAAAgAElEQVR4XuzdB5QkVdUA4LeIgIFkAFEk5yg5SZSoIKCICUWCqAgKmEUUcwZBgR9FgmBCMkgGCUaQJDmJKEowIEnSL/zn9f7TOzM7u1NdO2+7b9XX53iO7Lx6dd93392uvV1TPWneeed9NnkRIECAAAECBAgQIECAAAECBAgQIECAQDiBSRq84XImYAIECBAgQIAAAQIECBAgQIAAAQIECHQENHhtBAIECBAgQIAAAQIECBAgQIAAAQIECAQV0OANmjhhEyBAgAABAgQIECBAgAABAgQIECBAQIPXHiBAgAABAgQIECBAgAABAgQIECBAgEBQAQ3eoIkTNgECBAgQIECAAAECBAgQIECAAAECBDR47QECBAgQIECAAAECBAgQIECAAAECBAgEFdDgDZo4YRMgQIAAAQIECBAgQIAAAQIECBAgQECD1x4gQIAAAQIECBAgQIAAAQIECBAgQIBAUAEN3qCJEzYBAgQIECBAgAABAgQIECBAgAABAgQ0eO0BAgQIECBAgAABAgQIECBAgAABAgQIBBXQ4A2aOGETIECAAAECBAgQIECAAAECBAgQIEBAg9ceIECAAAECBAgQIECAAAECBAgQIECAQFABDd6giRM2AQIECBAgQIAAAQIECBAgQIAAAQIENHjtAQIECBAgQIAAAQIECBAgQIAAAQIECAQV0OANmjhhEyBAgAABAgQIECBAgAABAgQIECBAQIPXHiBAgAABAgQIECBAgAABAgQIECBAgEBQAQ3eoIkTNgECBAgQIECAAAECBAgQIECAAAECBDR47QECBAgQIECAAAECBAgQIECAAAECBAgEFdDgDZo4YRMgQIAAAQIECBAgQIAAAQIECBAgQECD1x4gQIAAAQIECBAgQIAAAQIECBAgQIBAUAEN3qCJEzYBAgQIECBAgAABAgQIECBAgAABAgQ0eO0BAgQIECBAgAABAgQIECBAgAABAgQIBBXQ4A2aOGETIECAAAECBAgQIECAAAECBAgQIEBAg9ceIECAAAECBAgQIECAAAECBAgQIECAQFABDd6giRM2AQIECBAgQIAAAQIECBAgQIAAAQIENHjtAQIECBAgQIAAAQIECBAgQIAAAQIECAQV0OANmjhhEyBAgAABAgQIECBAgAABAgQIECBAQIPXHiBAgAABAgQIECBAgAABAgQIECBAgEBQAQ3eoIkTNgECBAgQIECAAAECBAgQIECAAAECBDR47QECBAgQIECAAAECBAgQIECAAAECBAgEFdDgDZo4YRMgQIAAAQIECBAgQIAAAQIECBAgQECD1x4gQIAAAQIECBAgQIAAAQIECBAgQIBAUAEN3qCJEzYBAgQIECBAgAABAgQIECBAgAABAgQ0eO0BAgQIECBAgAABAgQIECBAgAABAgQIBBXQ4A2aOGETIECAAAECBAgQIECAAAECBAgQIEBAg9ceIECAAAECBAgQIECAAAECBAgQIECAQFABDd6giRM2AQIECBAgQIAAAQIECBAgQIAAAQIENHjtAQIECBAgQIAAAQIECBAgQIAAAQIECAQV0OANmjhhEyBAgAABAgQIECBAgAABAgQIECBAQIPXHiBAgAABAgQIECBAgAABAgQIECBAgEBQAQ3eoIkTNgECBAgQIECAAAECBAgQIECAAAECBDR47QECBAgQIECAAAECBAgQIECAAAECBAgEFdDgDZo4YRMgQIAAAQIECBAgQIAAAQIECBAgQECD1x4gQIAAAQIECBAgQIAAAQIECBAgQIBAUAEN3qCJEzYBAgQIECBAgAABAgQIECBAgAABAgQ0eO0BAgQIECBAgAABAgQIECBAgAABAgQIBBXQ4A2aOGETIECAAAECBAgQIECAAAECBAgQIEBAg9ceIECAAAECBAgQIECAAAECBAgQIECAQFABDd6giRM2AQIECBAgQIAAAQIECBAgQIAAAQIENHjtAQIECBAgQIAAAQIECBAgQIAAAQIECAQV0OANmjhhEyBAgAABAgQIECBAgAABAgQIECBAQIPXHiBAgAABAgQIECBAgAABAgQIECBAgEBQAQ3eoIkTNgECBAgQIECAAAECBAgQIECAAAECBDR47QECBAgQIECAAAECBAgQIECAAAECBAgEFdDgDZo4YRMgQIAAAQIECBAgQIAAAQIECBAgQECD1x4gQIAAAQIECBAgQIAAAQIECBAgQIBAUAEN3qCJEzYBAgQIECBAgAABAgQIECBAgAABAgQ0eO0BAgQIECBAgAABAgQIECBAgAABAgQIBBXQ4A2aOGETIECAAAECBAgQIECAAAECBAgQIEBAg9ceIECAAAECBAgQIECAAAECBAgQIECAQFABDd6giRM2AQIECBAgQIAAAQIECBAgQIAAAQIENHjtAQIECBAgQIAAAQIECBAgQIAAAQIECAQV0OANmjhhEyBAgAABAgQIECBAgAABAgQIECBAQIPXHiBAgAABAgQIECBAgAABAgQIECBAgEBQAQ3eoIkTNgECBAgQIECAAAECBAgQIECAAAECBDR47QECBAgQIECAAAECBAgQIECAAAECBAgEFdDgDZo4YRMgQIAAAQIECBAgQIAAAQIECBAgQECD1x4gQIAAAQIECBAgQIAAAQIECBAgQIBAUAEN3qCJEzYBAgQIECBAgAABAgQIECBAgAABAgQ0eO0BAgQIECBAgAABAgQIECBAgAABAgQIBBXQ4A2aOGETIECAAAECBAgQIECAAAECBAgQIEBAg9ceIECAAAECBAgQIECAAAECBAgQIECAQFABDd6giRM2AQLNEnjZyxZIa6+zTndRZ515Rvrf//3fZi1ywFcz33zzp3XXW68b5Tln/zw9+eSTAx618AgQIECAAAECBAgQIECg7QIavGPsgEmTJqVll11uQvfGM888k2655eYJnXMQJ5ttttnSEkssWSu0J596Kt15x+21jq160KKLLZ623W77tMjCi6YXv+QlaY455kh//etfO+e99dZb0rXXXJ0eeOD+qtMZV1hgy61elxZ4+cu7Z/nh8celp556qvBZ+zP9gZ/9Qtplt3d3T779tq9LV1/1+/4EU/Css88+e1pjzbXS8suvmJZZZtm04CtfmR599JFOHd511x/TH++8M91y803p3nv/VjCKsaf+8Ec/nvb+wL7dH77z7W9Jl176i5kehxMSIECAAAECBAgQIECAAIFeBDR4x9DabPMt01FHH9eLY6WxO7zh9enKK35XaWzUQe/adff02c99sXb4Cy84f+1jp3fgXnvvk/bc6wPpBS94wbjz33PPX9Jxxxydjv7+d91BOUor32W6+RZbdv/0tFNPTg8//PC4pnUH3HDzHWnOOefsHr71Vpul66//Q93pBvq4pjd4cx4P/NwX03bbvzHNOuus4+bikUceSb/65WXpqO8dOdP+3tTgHTctBhAgQIAAAQIECBAgQIDAAApo8I6RlM232Cp97/vHTni62tDgzXcg5kZV3ddEN3jzHbs/OOHHaaGFFu45pPzr8RddeH7aY/ddej62qQe8f68Ppo9+/JPd5b13j93SOWefVWy5GrzNuIN3t3e/J31y/09XauyOtZlOO/WU9MG931dsnw1NrMFbnNgJCBAgQIAAAQIECBAgQKCAgAavBu+EbqtBavB+7BP7p/ftuXfKj9wY/Xr22Wc7d57mR2fMM888Y47Jx+THASy52Csn1CjyZBq85bLX1Dt4p3VXf67Bxx9/PP3nscfSnHPNlfKjG6b1uvCC89Juu7yzHP7/z6zBW5zYCQgQIECAAAECBAgQIECggIAG7xioudGw8SabTpf77Tu9M22w4UbdMeede3Y65eSTpntMblI0/UuTRjd4f37WGemkn51Yaes+9dST6ZeXX1Zp7HiDNthgo3T8j3461bDLLr0kffMbX03XXXtNyg2moddyyy2f1t9go/T67bZPK6ywYvfPNXhHEs7sBu9O79g5vWLBBbtBHPqtgzpNwSa+mtjgnfdFL0rXXHfTiA9Q8peWHXfM99NB3/zaiFzmx6estfa6aY0110ybbLJZWmbZZbtp1uBt4o63JgIECBAgQIAAAQIECBCYKAEN3pqS+3/qM2mP9+7ZPfobX/tK+vahB9ecrTmHjW7w9sMl37F7zR9uTvPOO++IRu1HPrxPOu2Uk8fFzs3eI486pvNYBw3e/jZ4x01WgwY0scH7jYMOSW/a8S3dLP3nP/9Jm268fvrrX+8ZN3MLLvjK9M2DD01rr7Nu0uAdl8sAAgQIECBAgAABAgQIEGixgAZvzeRPdIN3lllmSautvkbnruAFX/HKdO21V6dfXHxR+vOf764Z4ZTD8p1xm7xm0/Tq9TdM//znP9L5552brr3m6hmed6wJBqHB+5kDP5923X2Pbnj5Tt311l69UlNp+Jo+/8WvpK23fn1aZeXlpmtVMndFkpRSmmfeedMWW2yV1lxr7XT//fel3/3mN+mKK3477t2xM/sO3hlZf24Q5npadbXV04P/+le66qrfp9/8+pfpoYce6mna/IHB0ksvk1ZZdbW0xBJLpn/+85/plltuTjfdeEO67757e5preoOn1+DNe2z99TdMG2/ymjTrc5+bLr7ownTZpb8Y+N8IuOKq69L887+su+wD9v94+sFxx/Rk9rqtt0lPP/2/6fzzzpnmcbPNNltaZpll08KLLJIWXHChNP/886enn346/etf/0o33nB9uvLK3427t/PkM/KIhmj7rackGEyAAAECBAgQIECAAAECAy2gwVszPRPV4M1fAnbCj36acnNgrFd+pMM5Z/887f3+94x4pMDosaedcXZ61Sqrdv443yW33NKLpbe9/R3p4588IM0999xTTZ2fPXvcsUenAz+9f02BsQ/rd4P3ZS9bIP3miqtTbogNvX524k/Sh/f74ISuM082Ubk77Ijvptdt/fpOfLkZvdjCL59urpdcaql0wUVTHmVxxOHfTl/98henWt+Nt9yZcnM/v6677tq07dZbpne/531p3/0+0v3z4QflPZHvuD7sO4dMNVdumufcTut5xqMPuOGG69PWW23W+ePR8R5+2KHpa1/5Unre856XPrDPfmnd9dZPiy++RHrhC1/YWfc99/wlrb/ump1jf3LiKZ07OPMr30291OILTTePs846a/ruUcekDTfaZJpf6JWbvbvvtnP6/ZVXTHeuHPfXvn5wp7E71rrzwbmJeOUVv0tHHnFYuuSSi2doj43V4M37+DuHH5kWWODlY86dz73jDtt1niU9/JX/Pvnlb67s/lFe83gfVAwN/uGPf5bWe/X63WN3fdc70sUXXVBrbTfd+scRe237bV+Xrr5q4r44Lj9ne6d3vCvNNddc040v76tf/+qX6bMHfirdesst0xzba4M38n6rlVAHESBAgAABAgQIECBAgMBACmjw1kzLRDR4c8Ps05/53Ihm5LTC+fsDD6Q37bBduuuPd4455MKLL0tLLrV092e333briP+e1ry56fG2t+ww3YZiL0T9bvDmhs+e7/9AN+Qnnngirbjckp3m4ES+JjJ3P/jhT9KGG27cDW+RV75suvlYccWV0lnnTGm4Hf+DY9OnPvmxqZZ3x133pOc+97mdP//XP/+ZHn3s0c5jJ8Z7nXvOz9N73r3riGFf/+a30o5vfut4h3Z//sc770gbb7he579XWmnldObZ53d/lu/g/Muf/5w+8rFPpHzn5ehXfkbrUCP35+de2H0mcm7SZZtpvVZfY810zHE/HLfZN3T8j390Qvr4Rz805nS7vfs9ndrs5ZX3Wf7ivrqv0Q3eW26+ecRzaKc1b74De8vNN+nkePjr2vyYkhe9qPtHu++6c7rg/HOnG15ulP7hxtu6De2ci6WXWLj23w+/v/r69NL55uue88Sf/jh95EP71CWa6rjTzjwnrfL/H2xVnXR6Dr00eKPvt6pexhEgQIAAAQIE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AAECBAgQIECAAIE6Ahq8ddQcQ4AAAQIECBAgQIAAAQIECBAgQIAAgQEQ0OAdgCQIgQABAgQIECBAgAABAgQIECBAgAABAnUENHjrqDmGAAECBAgQIECAAAECBAgQIECAAAECAyCgwTsASRACAQIECBAgQIAAAQIECBAgQIAAAQIE6gho8NZRcwwBAgQIECBAgAABAgQIECBAgAABAgQGQECDdwCSIAQCBAgQIECAAAECBAgQIECAAAECBAjUEdDgraPmGAIECBAgQIAAAQIECBAgQIAAAQIECAyAgAbvACRBCAQIECBAgAABAgQIECBAgAABAgQIEKgjoMFbR80xBAgQIECAAAECBAgQIECAAAECBAgQGAABDd4BSIIQCBAgQIAAAQIECBAgQIAAAQIECBAgUEdAg7eOmmMIECBAgAABAgQIECBAgAABAgQIECAwAAIavAOQBCEQIECAAAECBAgQIECAAAECBAgQIECgjoAGbx01xxAgQIAAAQIECBAgQIAAAQIECBAgQGAABDR4ByAJQiBAgAABAgQIECBAgAABAgQIECBAgEAdAQ3eOmqOIUCAAAECBAgQIECAAAECBAgQIECAwAAIaPAOQBKEQIAAAQIECBAgQIAAAQIECBAgQIAAgToCGrx11BxDgAABAgQIECBAgAABAgQIECBAgACBARDQ4B2AJAiBAAECBAgQIECAAAECBAgQIECAAAECdQQ0eOuoOYYAAQIECBAgQIAAAQIECBAgQIAAAQIDIKDBOwBJEAIBAgQIECBAgAABAgQIECBAgAABAgTqCGjw1lFzDAECBAgQIECAAAECBAgQIECAAAECBAZAQIN3AJIgBAIECBAgQIAAAQIECBAgQIAAAQIECNQR0OCto+YYAgQIECBAgAABAgQIECBAgAABAgQIDICABu8AJEEIBAgQIECAAAECBAgQIECAAAECBAgQqCOgwVtHzTEECBAgQIAAAQIECBAgQIAAAQIECBAYAAEN3gFIghAIECBAgAABAgQIECBAgAABAgQIECBQR0CDt46aYwgQIECAAAECBAgQIECAAAECBAgQIDAAAhq8A5AEIRAgQIAAAQIECBAgQIAAAQIECBAgQKCOgAZvHTXHECBAgAABAgQIECBAgAABAgQIECBAYAAENHgHIAlCIECAAAECBAgQIECAAAECBAgQIECAQB0BDd46ao4hQIAAAQIECBAgQIAAAQIECBAgQIDAAAho8A5AEoRAgAABAgQIECBAgAABAgQIECBAgACBOgIavHXUHEOAAAECBAgQIECAAAECBAgQIECAAIEBENDgHYAkCIEAAQIECBAgQIAAAQIECBAgQIAAAQJ1BDR466g5hgABAgQIECBAgAABAgQIECBAgAABAgMgoME7AEkQAgECBAgQIECAAAECBAgQIECAAAECBOoIaPDWUXMMAQIECBAgQIAAAQIECBAgQIAAAQIEBkBAg3cAkiAEAgQIECBAgAABAgQIECBAgAABAgQI1BHQ4K2j5hgCBAgQIECAAAECBAgQIECAAAECBAgMgIAG7wAkQQgECBAgQIAAAQIECBAgQIAAAQIECBCoI6DBW0fNMQQIECBAgAABAgQIECBAgAABAgQIEBgAAQ3eAUiCEAgQIECAAAECBAgQIECAAAECBAgQIFBHQIO3jppjCBAgQIAAAQIECBAgQIAAAQIECBAgMAACGrwDkAQhECBAgAABAgQIECBAgAABAgQIECBAoI6ABm8dNccQIECAAAECBAgQIECAAAECBAgQIEBgAAQ0eAcgCUIgQIAAAQIECBAgQIAAAQIECBAgQIBAHQEN3jpqjiFAgAABAgQIECBAgAABAgQIECBAgMAACGjwDkAShECAAAECBAgQIECAAAECBAgQIECAAIE6Ahq8ddQcQ4AAAQIECBAgQIAAAQIECBAgQIAAgQEQ0OAdgCQIgQABAgQIECBAgAABAgQIECBAgAABAnUENHjrqDmGAAECBAgQIECAAAECBAgQIECAAAECAyCgwTsASRACAQIECBAgQIAAAQIECBAgQIAAAQIE6gho8NZRcwwBAgQIECBAgAABAgQIECBAgAABAgQGQECDdwCSIAQCBAgQIECAAAECBAgQIECAAAECBAjUEdDgraPmGAIECBAgQIAAAQIECBAgQIAAAQIECAyAgAbvACRBCAQIECBAgAABAgQIECBAgAABAgQIEKgjoMFbR80xBAgQIECAAAECBAgQIECAAAECBAgQGAABDd4BSIIQCBAgQIAAAQIECBAgQIAAAQIECBAgUEdAg7eOmmMIECBAgAABAgQIECBAgAABAgQIECAwAAIavAOQBCEQIECAAAECBAgQIECAAAECBAgQIECgjoAGbx01xxAgQIAAAQIECBAgQIAAAQIECBAgQGAABDR4ByAJQiBAgAABAgQIECBAgAABAgQIECBAgEAdAQ3eOmqOIUCAAAECBAgQIECAAAECBAgQIECAwAAIaPAOQBKEQIAAAQIECBAgQIAAAQIECBAgQIAAgToCGrx11BxDgAABAgQIECBAgAABAgQIECBAgACBARDQ4B2AJAiBAAECBAgQIECAAAECBAgQIECAAAECdQQ0eOuoOYYAAQIECBAgQIAAAQIECBAgQIAAAQIDIKDBOwBJEAIBAgQIECBAgAABAgQIECBAgAABAgTqCGjw1lFzDAECBAgQIECAAAECBAgQIECAAAECBAZAQIN3AJIgBAIECBAgQIAAAQIECBAgQIAAAQIECNQR0OCto+YYAgQIECBAgAABAgQIECBAgAABAgQIDICABu8AJEEIBAgQIECAAAECBAgQIECAAAECBAgQqCOgwVtHzTEECBAgQIAAAQIECBAgQIAAAQIECBAYAAEN3gFIghAIECBAgAABAgQIECBAgAABAgQIECBQR0CDt46aYwgQIECAAAECBAgQIECAAAECBAgQIDAAAhq8A5AEIRAgQIAAAQIECBAgQIAAAQIECBAgQKCOgAZvHTXHECBAgAABAgQIECBAgAABAgQIECBAYAAENHgHIAlCIECAAAECBAgQIECAAAECBAgQIECAQB0BDd46ao4hQIAAAQIECBAgQIAAAQIECBAgQIDAAAho8A5AEoRAgAABAgQIECBAgAABAgQIECBAgACBOgIavHXUHEOAAAECBAgQIECAAAECBAgQIECAAIEBENDgHYAkCIEAAQIECBAgQIAAAQIECBAgQIAAAQJ1BDR466g5hgABAgQIECBAgAABAgQIECBAgAABAgMgoME7AEkQAgECBAgQIECAAAECBAgQIECAAAECBOoIaPDWUXMMAQIECBAgQIAAAQIECBAgQIAAAQIEBkBAg3cAkiAEAgQIECBAgAABAgQIECBAgAABAgQI1BHQ4K2j5hgCBAgQIECAAAECBAgQIECAAAECBAgMgIAG7wAkQQgECBAgQIAAAQIECBAgQIAAAQIECBCoI6DBW0fNMQQIECBAgAABAgQIECBAgAABAgQIEBgAAQ3eAUiCEAgQIECAAAECBAgQIECAAAECBAgQIFBHQIO3jppjCBAgQIAAAQIECBAgQIAAAQIECBAgMAACGrwDkAQhECBAgAABAgQIECBAgAABAgQIECBAoI6ABm8dNccQIECAAAECBAgQIECAAAECBAgQIEBgAAQ0eAcgCUIgQIAAAQIECBAgQIAAAQIECBAgQIBAHQEN3jpqjiFAgAABAgQIECBAgAABAgQIECBAgMAACGjwDkAShECAAAECBAgQIECAAAECBAgQIECAAIE6Ahq8ddQcQ4AAAQIECBAgQIAAAQIECBAgQIAAgQEQ0OAdgCQIgQABAgQIECBAgAABAgQIECBAgAABAnUENHjrqDmGAAECBAgQIECAAAECBAgQIECAAAECAyCgwTsASRACAQIECBAgQIAAAQIECBAgQIAAAQIE6gho8NZRcwwBAgQIECBAgAABAgQIECBAgAABAgQGQECDdwCSIAQCBAgQIECAAAECBAgQIECAAAECBAjUEdDgraPmGAIECBAgQIAAAQIECBAgQIAAAQIECAyAgAbvACRBCAQIECBAgAABAgQIECBAgAABAgQIEKgjoMFbR80xBAgQIECAAAECBAgQIECAAAECBAgQGAABDd4BSIIQCBAgQIAAAQIECBAgQIAAAQIECBAgUEdAg7eOmmMIECBAgAABAgQIECBAgAABAgQIECAwAAIavAOQBCEQIECAAAECBAgQIECAAAECBAgQIECgjoAGbx01xxAgQIAAAQIECBAgQIAAAQIECBAgQGAABDR4ByAJQiBAgAABAgQIECBAgAABAgQIECBAgEAdAQ3eOmqOIUCAAAECBAgQIECAAAECBAgQIECAwAAIaPAOQBKEQIAAAQIECBAgQIAAAQIECBAgQIAAgToCGrx11BxDgAABAgQIECBAgAABAgQIECBAgACBARDQ4B2AJAiBAAECBAgQIECAAAECBAgQIECAAAECdQQ0eOuoOYYAAQIECBAgQIAAAQIECBAgQIAAAQIDIKDBOwBJEAIBAgQIECBAgAABAgQIECBAgAABAgTqCGjw1lFzzEALPPPM7OnJJ3dLKb1woOMUHIHJAg+nOeY4Nk2a9AQQAgQIECBAgAABAgQIECBAgEDPAhq8PZM5YNAFnnnmeenhh69Ozz47/6CHKj4CadKkv6a5514rTZr0nxAazzzzwvTf/y6VUpo1RLyCbLvA02nWWe9MkyY9HALi2WefTZMmTQoRqyAJZAF71j4gQIAAAQIECAyGgAbv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AggggAACCCCAAAIIIIAAAggggIDTAgR4nW4+Co8AAggggAACCCCAAAIIIIAAAggggAACYRYgwBvm1qfuCCCAAAIIIIAAAggggAACCCCAAAIIIOC0AAFep5uPwiOAAAIIIIAAAggggAACCCCAAAIIIIBAmAUI8Ia59ak7AggggAACCCCAAAIIIIAAAggggAACCDgtQIDX6eaj8AgggAACCCCAAAIIIIAAAggggAACCCAQZgECvGFufeqOAAIIIIAAAggggAACCCCAAAIIIIAAAk4LEOB1uvkoPAIIIIAAAggggAACCCCAAAIIIIAAAgiEWYAAb5hbn7ojgAACCCCAAAIIIIAAAggggAACCCCAgNMCBHidbj4KjwACCCCAAAIIIIAAAggggAACCCCAAAJhFiDAG+bWp+4IIIAAAggggAACCCCAAAIIIIAAAggg4LQAAV6nm4/CI4AAAggggAACCCCAAAIIIIAAAggggECYBQjwhrn1qTsCCCCAAAIIIIAAAggggAACCCCAAAIIOC1AgNfp5qPwCCCAAAIIIIAAAggggAACCCCAAAIIIBBmAQK8YW596o4AAggggAACCCCAAAIIIIAAAggggAACTgsQ4HW6+Sg8AggggAACCCCAAAIIIIAAAggggAACCIRZgABvmFufuiOAAAIIIIAAAggggAACCCCAAAIIIICA0wIEeJ1uPgqPAAIIIIAAAggggAACCCCAAAIIIIAAAmEWIMAb5tan7ggggAACCCCAAAIIIIAAAggggAACCCDgtAABXqebj8IjgAACCCCAAAJFK7DPPvvIb7/9Jn/99VfRHpijIYAAAggggAACCCCAQFwBArx0DAQQQAABBBBAAIGEAhd1u0RatzlZKlWuLKVLHyL/+Mc/zLa///67/PTjj7Jjx3YZNnSwLFgwD0UEEEAAAQQQQAABBBAoBgECvMWAziERQAABBBBAAIFsF6hU+SgZO36ilCtXPlBRf/zxR3nx+Uly5x23BtrexY2u6tVH+t94syn6iuXL5OyO7V2sBmVGAAEEEEAAAQQQyDEBArw51qBUBwEEEEAAAQQQKKzANdf1l959rpHddtstT1b/+c9/5Ntvv5GSJQ+UAw44IN/nf/zxh1SueERhD5+1+/e95jrpd831pnxr16yWDu1Oy9qyUjAEEEAAAQQQQACB8AgQ4A1PW1NTBBBAAAEEEEAgpUCdOnVl+muz8mw3dcpkueH6fmbt3WjS4G/devXlhhsHSNPjjjd/JsCbkpcNEEAAAQQQQAABBBDIuAAB3oyTkiECCCCAAAIIIOCuwLKVa+Www/7tBWwv7XaBzJ8/N2mFjm92gjw24kkpUaJEoBm8u+++e1a9pC1oeZjB626/puQIIIAAAggggEAuCxDgzeXWpW4IIIAAAggggEAaAv41ZnW3B+4bKCOGDwuUg87o1ZexvTlrZr7tdR3fBx4cLEcdVUUO/te/RAOqP//8s3z6yceis4OHP/ZIwmNMmzFT9txzT/l+1y4595xOCbcb/viTUqHikebz88/tLDu/+87bVgPWo8aMN//evm2b9Lm6h5x62hnSvWcvqVSpsuy///4m4Lxr506ZNGmCDLr/3jzH2W+//eSFydPk34f9Ww46+GDz2a+//irbt2/Ls90333wtF53f1fytbbv20r3n1eb/X546WZ4a+bh5Qd3Jp5wqrVq1kcpVqsjvv/0mEyeMk0suu9Jb7qJ3rx6yIyZf/0E0Dy3LXnvtZf58XtezTblJCCCAAAIIIIAAAuEVIMAb3ran5ggggAACCCCAQB6B5avWSZkyh5m/ffftt1K/bo1CC11wYTe56577TFA3Udq8aZN07tRevv/++3ybfPjJl+ZvGoCtWC5Stnhp46btJlCrqXWrZrJt61Zvs3r1G8i06a+bf+s6wlu3bJb6DY5OmNe6dWul/RmneJ+ridqkSv4lKu68+17pdvGlZpcF8+fJxAnjZfDQR0WDxf408/VX5ZgmTaVUqVLmz2/NniWXdLsg4aH8s4i1LjWqRoLaJAQQQAABBBBAAIHwChDgDW/bU3MEEEAAAQQQQCCPwLb3PjazTDXde89dMvKJ4YUS6nru+XL/oIe9PDRI++WXX8j3u76XI8qWNUs6RNM3X38tR9evle94mQ7wxh5Ay/Tnn3969Y5+3qvnFTL9lWnmn6UOOkhWrdkge+yxR54Xy+l+/vTjjz9KvdrVzJ/8AV49RqIAtwZ4t27dYl5qp0nzrFq5vPlvvLRu/SZTHk3PjB8rt9x8Q6HaiJ0RQAABBBBAAAEE3BcgwOt+G1IDBBBAAAEEEECg0AI6+1VnwUZTxzPbyqqVKwqcrwY0Nb/ojNXPP/9MOrQ9Tb744nMvz779rhOdkarLO2i6/9575PERj+Y5pq0A78oVy+WB+weK/ldT7dp15KWp0+Wf//yn+fd7O7ZLy+bH5SlLOmvw+gO80Ux0hu+2bVtl+dIl8s0330jlo6rIwgU0HXaQAAAS8klEQVTzZMb0afLulvfMUhSaHhp0vzw6bEg+e13reOKkF83f//77b6lTs4r88MMPBW4jdkQAAQQQQAABBBDIDQECvLnRjtQCAQQQQAABBBAolECLFq1k3IRJXh5HHVlWfv/99wLnecNNA6TnVb3N/jobtVb1yvLLL7/ky++hwY/I2Z3PMX//7bffpEqlcnm2yXSAV8ty8YXnyYIF8/KVpdfVfeX6G24yf9fZuFpmfypMgHfJ4kVyxWXdTL7x0pjxE6VVq9bmo0SzmXU94nr16pttli1dIl3OPrPA7cOOCCCAAAIIIIAAArkjQIA3d9qSmiCAAAIIIIAAAgUWuLp3P7mu/41mf/9asgXN8LU33pKaNSNLLkx7ear07tU9blYHHHCAvL1xi7eEQYsTmsr77+3wts10gHfXrl1St1bVuGU55JBDZeWa9eYznSFboWyZPNsVNMCrwd2uXTompTyqShWZPWeht02ns9p5s4v1j/pytzXr3vFmO59xahvZsCFSVhICCCCAAAIIIIBAuAUI8Ia7/ak9AggggAACCCBgBDp26mxeApYouJku09q33zVBSU19ru4hL0+dkjALXd+29CGHmM+v6Xu1TH7pBW/bogzw6kGjx9P/L3/EoXnKXNAAr75k7YLzuqQkXLB4uZQvX8Fst3rVSjmrwxnePoMeGiJdzjnX/PvTTz+RpsckfklcygOxAQIIIIAAAggggEBOCRDgzanmpDIIIIAAAggggEDBBI44oqwsXrbK2/nk1i1k8+ZNBctMRHZ88Km3pmyqvN54c55Uq17dHGvM00/JHbff4h23qAO8H3z8hTdLtqgDvJ27dJUHHx5q6q4ziHWm8ffff2/+vWX7h976wANu6i8TnhlX4LZhRwQQQAABBBBAAIHcEiDAm1vtSW0QQAABBBBAAIECC7z/0efeUgm33XKTjBs7usB5+QOlxzVpKJ988nHCvGbOmivVa9Qwn0+cMF5uvvH6UAZ4tdKbtr4v++67r6n/+HFj5NYBN0rXc8+X+wc9bP7266+/StXK5QvcLuyIAAIIIIAAAgggkHsCBHhzr02pEQIIIIAAAgggUCCBdRs2S6lSpcy+a1avkjPbn16gfHSndzbvkBIlSpj9u114nsydMzthXkuWr5bDDz/CfD7w7jvlyZEjvG2jM3jjrYnrz3Djpu2y//77mz+1btVMtm3d6n1cr34DmTb9dfPvZGvw6ufFOYNXj6+BXA3oavrpp5+kZrVKsnDJCilXLhLUnfTsBLmx/7UFbhd2RAABBBBAAAEEEMg9AQK8udem1AgBBBBAAAEEECiQwIuTp0njY5p4+15wbhdZsGBegfKat3CpVKx4pNl3yOAHZejghxLm419+oHOnDrJ82VJv22Rr4vozLOoA78aNG+T0U1onrNOdd98r3S6+1HwedA1e3bbUQQeJrl+82267mX0HPzRIrrmuv/l/DXLXq1Nddu3cWaA2YScEEEAAAQQQQACB3BQgwJub7UqtEEAAAQQQQACBtAUOO+zforNpd999d7Pvzu++k+OObSj/+c9/kua15557ykODh0nrNidJreqVzbZjxk+UVq0iAVDNRwOT8ZJ/+QH9vEqlcvLbb795m25//xPZa6+9zL87ndVOVq5Yni8bDYa+u+U9b2kDWzN4L7zoYrl74P3m+B9//JEcf2yjhC4FDfBqhi+/8prUb5D/JWqrVq6Qjme2Tbtd2QEBBBBAAAEEEEAgtwUI8OZ2+1I7BBBAAAEEEEAgLYGbBtwq3Xv08vbRNV/79r5KXn9tRtx82px0igwdNtwsx/DHH39I5YqRpRYqVT5K3pq70JuJOvLx4XLvwLvy5KHLMrwxe563tMKSxYuka5eOebbR2awHHXyw+dvaNaulQ7vT8nzeslVrc/wDDzzQ+7utAG+DoxvK1GmvmuPobNrGR9eVr776Mq5LYQK8xzY9Tp57YUq+fHXJDF06g4QAAggggAACCCCAgF+AAC/9AQEEEEAAAQQQQCCPwIrVb8uhh5bJ87cvv/xCdmzfLls2b5LDjzhCqlarLmXKHCZ77723t50/wKt/HDV6nGgAOJp0WYNXXp4q3377jZmh2uWcc73ZuX/99Zc0alBHvvnm6zzHfWzEk9K2XXvvb/qytrVr1kjJkiWldu06ZkmD2GQrwKt13bztA2+Gs85s1sD3jz/8IBWOPFLKHlFWTmzZzBSnMAFe3X/12o3yr9Klvap9/vln0qRRfXoqAggggAACCCCAAAL5BAjw0ikQQAABBBBAAAEE8gj84x//MEsutGvfwZuBG4Ro29Yt0rrVCd6mBxxwgLw6c7b3grBEeWhw947bBsi4saPzbbLffvvJ2xu3eIHgeHn8+eefostERJOtAK/mP+ihISYwHS/5A9yFDfD2urqvXH/DTd5hbr9tgIwdPSpIM7ANAggggAACCCCAQMgECPCGrMGpLgIIIIAAAgggEFSgRo2aMvzxJ6Vc+Qp5Aqj+/XW9XF0bVl+kFm99XN1W16294MJucYPFusTBued0km1btyYsVs2atWTCsy94SzX4N9ywYb1cctH58ta8RaIBZU0tTmgq77+3w9tM93/tjbfMv5OtB6yfv//R52aGri7BUKFs3lnM+rl+9uDDQ6Vjp8756vPzzz9L9SoVzXFuve1OueyK7ub/58yZLRdfeF5QdrPd+RdcJAPvG2T+X42rVi5vykRCAAEEEEAAAQQQQCBWgAAvfQIBBBBAAAEEEEAgpcCBpUpJo0bHSJ26deXPP/4UXSph1aqV8uEH76fcN7pBnTp15YTmLc3yChs3rpf58+fJrp07A+2vL1Jr2KixNG16vOisXj32/Hlz8ryQLVBGGdpIl2vQNXmr16gpP3z/vWzbtlXeXrc2Q7mLedmdrlGs6cUXnpPrrumTsbzJCAEEEEAAAQQQQCC3BAjw5lZ7UhsEEEAAAQQQQAABxwUaNT5GXpryiqmFztptUK+mfPftt47XiuIjgAACCCCAAAII2BIgwGtLlnwRQAABBBBAAAEEECiAwPTXZonOdta0ds1q6dDutALkwi4IIIAAAggggAACYREgwBuWlqaeCCCAAAIIIIAAAlkvoMsy6PIM0dTprHYJ1zbO+spQQAQQQAABBBBAAIEiESDAWyTMHAQBBBBAAAEEEEAAgdQCTz09Vk46+VSzob6ArlGDOql3YgsEEEAAAQQQQACBUAsQ4A1181N5BBBAAAEEEEAAgWwSGDV6nFSoUNEU6fERj8nkl17IpuJRFgQQQAABBBBAAIEsFCDAm4WNQpEQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEgAgR4gyixDQIIIIAAAggggAACCCCAAAIIIIAAAgggkIUCBHizsFEoEgIIIIAAAggggAACCCCAAAIIIIAAAgggEESAAG8QJbZBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSyUIAAbxY2CkVCAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSCCBDgDaLENggggAACCCCAAAIIIIAAAggggAACCCCAQBYKEODNwkahSAgggAACCCCAAAIIIIAAAggggAACCCCAQBABArxBlNgGAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIQgECvFnYKBQJAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIIkCAN4gS2yCAAAIIIIAAAggggAACCCCAAAIIIIAAAlkoQIA3CxuFIiGAAAIIIIAAAggggAACCCCAAAIIIIAAAkEECPAGUWIbBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgCwUI8GZho1AkBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgiAAB3iBKbIMAAggggAACCCCAAAIIIIAAAggggAACCGShAAHeLGwUioQAAggggAACCCCAAAIIIIAAAggggAACCAQRIMAbRIltEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBLBQgwJuFjUKREEAAAQQQQAABBBBAAAEEEEAAAQQQQACBIAIEeIMosQ0CCCCAAAIIIIAAAggggAACCCCAAAIIIJCFAgR4s7BRKBICCCCAAAIIIIAAAggggAACCCCAAAIIIBBEgABvECW2QQABBBBAAAEEEEAAAQQQQAABBBBAAAEEslCAAG8WNgpFQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEgggQ4A2ixDYIIIAAAggggAACCCCAAAIIIIAAAggggEAWChDgzcJGoUgIIIAAAggggAACCCCAAAIIIIAAAggggEAQAQK8QZTYBgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQyEIBArxZ2CgUCQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCCJAgDeIEtsggAACCCCAAAIIIIAAAggggAACCCCAAAJZKECANwsbhSIhgAACCCCAAAIIIIAAAggggAACCCCAAAJBBAjwBlFiGwQQQAABBBBAAAEEEEAAAQQQQAABBBBAIAsFCPBmYaNQJAQQQAABBBBAAAEEEEAAAQQQQAABBBBAIIgAAd4gSmyDAAIIIIAAAggggAACCCCAAAIIIIAAAghkoQAB3ixsFIqEAAIIIIAAAggggAACCCCAAAIIIIAAAggEESDAG0SJbRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgSwUIMCbhY1CkRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgSACBHiDKLENAggggAACCCCAAAIIIIAAAggggAACCCCQhQIEeLOwUSgSAggggAACCCCAAAIIIIAAAggggAACCCAQRIAAbxAltkEAAQQQQAABBBBAAAEEEEAAAQQQQAABBLJQgABvFjYKRUIAAQQQQAABBBBAAAEEEEAAAQQQQAABBIIIEOANosQ2CCCAAAIIIIAAAggggAACCCCAAAIIIIBAFgoQ4M3CRqFICCCAAAIIIIAAAggggAACCCCAAAIIIIBAEAECvEGU2AYBBBBAAAEEEEAAAQQQQAABBBBAAAEEEMhCAQK8WdgoFAkBBBBAAAEEEEAAAQQQQAABBBBAAAEEEAgiQIA3iBLbIIAAAggggAACCCCAAAIIIIAAAggggAACWShAgDcLG4UiIYAAAggggAACCCCAAAIIIIAAAggggAACQQQI8AZRYhsEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCALBQjwZmGjUCQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCCIAAHeIEpsgwACCCCAAAIIIIAAAggggAACCCCAAAIIZKEAAd4sbBSKhAACCCCAAAIIIIAAAggggAACCCCAAAIIBBEgwBtEiW0QQAABBBBAAAEEEEAAAQQQQAABBBBAAIEsFCDAm4WNQpEQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEgAgR4gyixDQIIIIAAAggggAACCCCAAAIIIIAAAgggkIUCBHizsFEoEgIIIIAAAggggAACCCCAAAIIIIAAAgggEESAAG8QJbZBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSyUIAAbxY2CkVCAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSCCBDgDaLENggggAACCCCAAAIIIIAAAggggAACCCCAQBYKEODNwkahSAgggAACCCCAAAIIIIAAAggggAACCCCAQBABArxBlNgGAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIQgECvFnYKBQJAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIIkCAN4gS2yCAAAIIIIAAAggggAACCCCAAAIIIIAAAlkoQIA3CxuFIiGAAAIIIIAAAggggAACCCCAAAIIIIAAAkEECPAGUWIbBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgCwUI8GZho1AkBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgiAAB3iBKbIMAAggggAACCCCAAAIIIIAAAggggAACCGShAAHeLGwUioQAAggggAACCCCAAAIIIIAAAggggAACCAQRIMAbRIltEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBLBQgwJuFjUKREEAAAQQQQAABBBBAAAEEEEAAAQQQQACBIAIEeIMosQ0CCCCAAAIIIIAAAggggAACCCCAAAIIIJCFAgR4s7BRKBICCCCAAAIIIIAAAggggAACCCCAAAIIIBBEgABvECW2QQABBBBAAAEEEEAAAQQQQAABBBBAAAEEslCAAG8WNgpFQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEgggQ4A2ixDYIIIAAAggggAACCCCAAAIIIIAAAggggEAWChDgzcJGoUgIIIAAAggggAACCCCAAAIIIIAAAggggEAQAQK8QZTYBgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQyEIBArxZ2CgUCQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCCJAgDeIEtsggAACCCCAAAIIIIAAAggggAACCCCAAAJZKPD/mPLQmOuKNKgAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/markdown": [
- "AI-generated follow-up questions:\n",
- "\n",
- "* What are the total sales for each country in descending order?\n",
- "* Which country has the highest number of customers?\n",
- "* What are the total sales for each customer in descending order?\n",
- "* Which customers in the United States have the highest total sales?\n",
- "* What are the total sales and number of orders for each customer in each country?\n",
- "* What are the total sales for customers in Europe?\n",
- "* What are the top 10 countries with the highest total order amount?\n",
- "* Which country has the highest number of failed orders?\n",
- "* Which customers have the highest total sales?\n",
- "* \n"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "vn.ask(\"Which 5 countries have the highest sales?\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "with ranked_customers as (SELECT c.c_name as customer_name,\n",
- " r.r_name as region_name,\n",
- " row_number() OVER (PARTITION BY r.r_name\n",
- " ORDER BY sum(l.l_quantity * l.l_extendedprice) desc) as rank\n",
- " FROM snowflake_sample_data.tpch_sf1.customer c join snowflake_sample_data.tpch_sf1.orders o\n",
- " ON c.c_custkey = o.o_custkey join snowflake_sample_data.tpch_sf1.lineitem l\n",
- " ON o.o_orderkey = l.l_orderkey join snowflake_sample_data.tpch_sf1.nation n\n",
- " ON c.c_nationkey = n.n_nationkey join snowflake_sample_data.tpch_sf1.region r\n",
- " ON n.n_regionkey = r.r_regionkey\n",
- " GROUP BY customer_name, region_name)\n",
- "SELECT region_name,\n",
- " customer_name\n",
- "FROM ranked_customers\n",
- "WHERE rank <= 2;\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
REGION_NAME
\n",
- "
CUSTOMER_NAME
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
ASIA
\n",
- "
Customer#000102022
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
ASIA
\n",
- "
Customer#000148750
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
AMERICA
\n",
- "
Customer#000095257
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
AMERICA
\n",
- "
Customer#000091630
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
EUROPE
\n",
- "
Customer#000028180
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
EUROPE
\n",
- "
Customer#000053809
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
MIDDLE EAST
\n",
- "
Customer#000143500
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
MIDDLE EAST
\n",
- "
Customer#000103834
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
AFRICA
\n",
- "
Customer#000131113
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
AFRICA
\n",
- "
Customer#000134380
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " REGION_NAME CUSTOMER_NAME\n",
- "0 ASIA Customer#000102022\n",
- "1 ASIA Customer#000148750\n",
- "2 AMERICA Customer#000095257\n",
- "3 AMERICA Customer#000091630\n",
- "4 EUROPE Customer#000028180\n",
- "5 EUROPE Customer#000053809\n",
- "6 MIDDLE EAST Customer#000143500\n",
- "7 MIDDLE EAST Customer#000103834\n",
- "8 AFRICA Customer#000131113\n",
- "9 AFRICA Customer#000134380"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABXgAAAPoCAYAAABkvZZOAAAgAElEQVR4XuzdebyM5f/H8Q+JlF22rMe+Z9/3ZKkQkexLSJQobSiVVJasUZJs2couspN9y87h2LeoSBItfPk9Prff3GbmzH7PmDPnvK7H4/v4Zuba7ud1z/zxPtdcd6K0adPeFgoCCCCAAAIIIIAAAggggAACCCCAAAIIIIBAxAkkIuCNuDVjwggggAACCCCAAAIIIIAAAggggAACCCCAgCFAwMuNgAACCCCAAAIIIIAAAggggAACCCCAAAIIRKgAAW+ELhzTRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHi5BxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgQgVIOCN0IVj2ggggAACCCCAAAIIIIAAAggggAACCCCAAAEv9wACCCCAAAIIIIAAAggggAACCCCAAAIIIBChAgS8EbpwTBsBBBBAAAEEEEAAAQQQQAABBBBAAAEEECDg5R5AAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQiVICAN0IXjmkjgAACCCCAAAIIIIAAAggggAACCCCAAAIEvNwDCCCAAAIIIIAAAggggAACCCCAAAIIIIBAhAoQ8EbowjFtBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAgJd7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiFABAt4IXTimjQACCCCAAAIIIIAAAggggAACCCCAAAIIEPByDyCAAAIIIIAAAggggAACCCCAAAIIIIAAAhEqQMAboQvHtBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQJe7gEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCBCBQh4I3ThmDYCCCCAAAIIIIAAAggggAACCCCAAAIIIEDAyz2AAAIIIIAAAggggAACCCCAAAIIIIAAAghEqAABb4QuHNNGAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIeLkHEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBCBUg4I3QhWPaCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAS/3AAIIIIAAAggggAACCCCAAAIIIIAAAgggEKECBLwRunBMGwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQIODlHkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBCJUgIA3QheOaSOAAAIIIIAAAggggAACCCCAAAIIIIAAAgS83AMIIIAAAggggAACCCCAAAIIIIAAAggggECEChDwRujCMW0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQICAl3sAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCIUAEC3ghdOKaNAAIIIIAAAggggAACCCCAAAIIIIAAAggQ8HIPIIAAAggggAACCCCAAAIIIIAAAggggAACESpAwBuhC8e0EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABAl7uAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIEIFCHgjdOGYNgIIIIAAAggggAACCCCAAAIIIIAAAgggQMDLPYAAAggggAACCCCAAAIIIIAAAggggAACCESoAAFvhC4c00YAAQQQQAABBBBAAAEEEEAAAQQQQAABBAh4uQcQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEIFSDgjdCFY9oIIIAAAggggAACCCCAAAIIIIAAAggggAABL/cAAggggAACCCCAAAIIIIAAAggggAACCCAQoQIEvBG6cEwbAQQQQAABBBBAAAEEEEAAAQQQQAABBBAg4OUeQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEIlSAgDdCF45pI4AAAggggAACCCCAAAIIIIAAAggggAACBLzcAwgggAACCCCAAAIIIIAAAggggAACCCCAQIQKEPBG6MIxbQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgICXewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIhQAQLeCF04po0AAggggAACCCCAAAIIIIAAAggggAACCBDwcg8ggAACCCCAAAIIIIAAAggggAACCCCAAAIRKkDAG6ELx7QRQAABBBBAAAEEEEAAAQQQQAABBBBAAAECXu4BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgQgUIeCN04Zg2AggggAACCCCAAAIIIIAAAggggAACCCBAwMs9gAACCCCAAAIIIIAAAggggAACCCCAAAIIRKgAAW+ELhzTRgABBBBAAAEEEEAAAQQQQAABBBBAAAEECHi5BxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgQgVIOCN0IVj2ggggAACCCCAAAIIIIAAAggggAACCCCAAAEv9wACCCCAAAIIIIAAAggggAACCCCAAAII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AggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBAh4Y6FOmwgggAACCCCAAAIIIIAAAggggAACCCCAgAcCBLweIFIFAggggAACCCCAAAIIIIAAAggggAACCCAQCwEC3lio0yYCCCCAAAIIIIAAAggggAACCCCAAAIIIOCBAAGvB4hUgQACCCCAAAIIIIAAAggggAACCCCAAAIIxEKAgDcW6rSJAAIIIIAAAggggAACCCCAAAIIIIAAAgh4IEDA6wEiVSCAAAIIIIAAAggggAACCCCAAAIIIIAAArEQIOCNhTptIoAAAggggAACCCCAAAIIIIAAAggggAACHggQ8HqASBUIIIAAAggggAACCCCAAAIIIIAAAggggEAsBP4PEDnN3qu3FrEAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/markdown": [
- "AI-generated follow-up questions:\n",
- "\n",
- "* - What are the total sales for each customer in the Asia region?\n",
- "* - How many orders does each customer in the Americas region have?\n",
- "* - Who are the top 5 customers with the highest total sales?\n",
- "* - What is the total revenue for each customer in the Europe region?\n",
- "* - Can you provide a breakdown of the number of customers in each country?\n",
- "* - Which customers in the United States have the highest total sales?\n",
- "* - What are the total sales for each customer in the Asia region?\n",
- "* - What are the top 10 customers with the highest returned parts gross value in Africa?\n",
- "* - What are the top 3 customers with the highest total sales overall?\n",
- "* - Can you provide a list of the first 10 customers in the database?\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "vn.ask(\"Who are the top 2 biggest customers in each region?\")"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Run as a Web App\n",
- "If you would like to use this functionality in a web app, you can deploy the Vanna Streamlit app and use your own secrets. See [this repo](https://github.com/vanna-ai/vanna-streamlit)."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.11.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/notebooks/vn-connect-to-bigquery.ipynb b/notebooks/vn-connect-to-bigquery.ipynb
deleted file mode 100644
index 5ca96996..00000000
--- a/notebooks/vn-connect-to-bigquery.ipynb
+++ /dev/null
@@ -1,532 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "![Vanna AI](https://img.vanna.ai/vanna-ask.svg)\n",
- "\n",
- "The following notebook goes through the process of connecting to your gcs using bigquery connector and running sql queries usig Vanna AI. For demo purpose we are using one the google's example queries.\n",
- "\n",
- "# Install Vanna\n",
- "First we install Vanna from [PyPI](https://pypi.org/project/vanna/) and import it.\n",
- "Here, we'll install vanna with extra postgres. If you're using a different database, you'll need to install the appropriate extras."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install vanna[bigquery]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set Database Connection\n",
- "These details are only referenced within your notebook. These database credentials are never sent to Vanna's severs.\n",
- "You need to set:\n",
- "`PROJECT_ID`.\n",
- "in your environment. By default vanna will look for the pre-set google ADC but if it is not pre-set, you'll also need to provide service account credentials json file path. we can also provide parameters `cred_file_path` `project_id` to the method."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Not using Google Colab.\n"
- ]
- }
- ],
- "source": [
- "vn.connect_to_bigquery()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "or if you are using service account you can provide credentials json file path:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "cred_file_path = \"provide/creds/path.json\"\n",
- "vn.connect_to_bigquery(cred_file_path=cred_file_path)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Note: \n",
- "You need to add `PROJECT_ID` to your environment or you can pass it as `project_id` in above method as a parameter"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Get Results\n",
- "This gets the SQL run it and prints it's result as a dataframe. Note that we use your provided credentials to execute the SQL on your warehouse from your local instance. Your connection nor your data gets sent to Vanna's servers. For more info on how Vanna works, [see this post](https://medium.com/vanna-ai/how-vanna-works-how-to-train-it-data-security-8d8f2008042). We will be using google demo sql below. Note that below SQL only works for the google demo data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
submitter_id
\n",
- "
case_id
\n",
- "
diag__treat__count
\n",
- "
primary_site
\n",
- "
disease_type
\n",
- "
proj__name
\n",
- "
proj__project_id
\n",
- "
demo__demographic_id
\n",
- "
demo__gender
\n",
- "
demo__race
\n",
- "
...
\n",
- "
exp__bmi
\n",
- "
exp__years_smoked
\n",
- "
exp__pack_years_smoked
\n",
- "
exp__cigarettes_per_day
\n",
- "
exp__alcohol_history
\n",
- "
exp__state
\n",
- "
exp__created_datetime
\n",
- "
exp__updated_datetime
\n",
- "
state
\n",
- "
updated_datetime
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
TCGA-CN-5363
\n",
- "
291b069c-9dde-4e1e-8430-85146bc94338
\n",
- "
2
\n",
- "
Larynx
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
2611cb61-6d05-5286-b94a-ce6cac2ba37b
\n",
- "
male
\n",
- "
black or african american
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
15.0
\n",
- "
0.821918
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T18:43:25.167078-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:25:25.511101-05:00
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
TCGA-CN-5365
\n",
- "
4cffea0b-90a7-4c86-a73f-bb8feca3ada7
\n",
- "
2
\n",
- "
Tonsil
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
97a7f69b-0f40-5450-bbeb-92084a100a9d
\n",
- "
male
\n",
- "
white
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
26.0
\n",
- "
1.424658
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:39:51.442671-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:25:25.511101-05:00
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
TCGA-CN-A642
\n",
- "
a1ded1e8-eb28-49dd-8f3d-1ce8f40eed8f
\n",
- "
2
\n",
- "
Other and unspecified parts of tongue
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
4bc58619-47fc-5c2d-aaec-9d9e562e049b
\n",
- "
male
\n",
- "
white
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
5.0
\n",
- "
0.273973
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:30:27.901248-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:25:39.854271-05:00
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
TCGA-CR-7380
\n",
- "
53b254b7-021f-43df-af9b-3fc01b87479e
\n",
- "
2
\n",
- "
Other and ill-defined sites in lip, oral cavit...
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
be41a712-ebee-52e1-907c-80b1917daa45
\n",
- "
male
\n",
- "
white
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:40:20.032260-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:26:05.315718-05:00
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
TCGA-CV-5978
\n",
- "
e16e9535-b20f-4c9a-8b5b-82df80c99448
\n",
- "
2
\n",
- "
Larynx
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
92d1d967-c8a0-52cb-a62d-1d11bdf85068
\n",
- "
female
\n",
- "
black or african american
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:52:06.976359-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:26:05.315718-05:00
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
TCGA-CV-6948
\n",
- "
fcf0dc48-b889-4593-a15b-aa715aae7bf5
\n",
- "
2
\n",
- "
Floor of mouth
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
2fd1a926-7584-50d5-b6b7-9b9d02710f47
\n",
- "
female
\n",
- "
white
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
No
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:55:16.152855-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:26:16.536997-05:00
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
TCGA-CV-7409
\n",
- "
acd98e20-d2da-4256-99a5-13e261bc88e6
\n",
- "
2
\n",
- "
Other and ill-defined sites in lip, oral cavit...
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
2a3f5bb4-3606-5549-8d85-ec413eadd7ab
\n",
- "
male
\n",
- "
black or african american
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
No
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:48:25.311492-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:26:28.608672-05:00
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
TCGA-CV-A6JU
\n",
- "
b1b3983d-37d2-4bef-bd17-708e3e600146
\n",
- "
2
\n",
- "
Other and unspecified parts of tongue
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
604e3dac-30be-589d-b622-df0b41cd9a7f
\n",
- "
female
\n",
- "
white
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
81.0
\n",
- "
4.438356
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:48:40.594893-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:26:39.780396-05:00
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
TCGA-QK-A6IH
\n",
- "
c1f286f6-d4a1-494a-88c8-ff8e2a3df2ce
\n",
- "
2
\n",
- "
Gum
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
83e5c705-bd2e-5516-9700-ed3803dde268
\n",
- "
female
\n",
- "
white
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:49:42.057478-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:27:02.392779-05:00
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
TCGA-QK-A8Z8
\n",
- "
ac511727-185b-4ac0-b6c0-dc3a79657be6
\n",
- "
2
\n",
- "
Larynx
\n",
- "
Squamous Cell Neoplasms
\n",
- "
Head and Neck Squamous Cell Carcinoma
\n",
- "
TCGA-HNSC
\n",
- "
fd1e46fb-43bb-54ae-b713-a579ba857ed4
\n",
- "
female
\n",
- "
black or african american
\n",
- "
...
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
80.0
\n",
- "
4.383562
\n",
- "
Yes
\n",
- "
released
\n",
- "
None
\n",
- "
2019-07-31T19:48:22.125112-05:00
\n",
- "
released
\n",
- "
2019-08-06T14:27:02.392779-05:00
\n",
- "
\n",
- " \n",
- "
\n",
- "
10 rows × 70 columns
\n",
- "
"
- ],
- "text/plain": [
- " submitter_id case_id diag__treat__count \\\n",
- "0 TCGA-CN-5363 291b069c-9dde-4e1e-8430-85146bc94338 2 \n",
- "1 TCGA-CN-5365 4cffea0b-90a7-4c86-a73f-bb8feca3ada7 2 \n",
- "2 TCGA-CN-A642 a1ded1e8-eb28-49dd-8f3d-1ce8f40eed8f 2 \n",
- "3 TCGA-CR-7380 53b254b7-021f-43df-af9b-3fc01b87479e 2 \n",
- "4 TCGA-CV-5978 e16e9535-b20f-4c9a-8b5b-82df80c99448 2 \n",
- "5 TCGA-CV-6948 fcf0dc48-b889-4593-a15b-aa715aae7bf5 2 \n",
- "6 TCGA-CV-7409 acd98e20-d2da-4256-99a5-13e261bc88e6 2 \n",
- "7 TCGA-CV-A6JU b1b3983d-37d2-4bef-bd17-708e3e600146 2 \n",
- "8 TCGA-QK-A6IH c1f286f6-d4a1-494a-88c8-ff8e2a3df2ce 2 \n",
- "9 TCGA-QK-A8Z8 ac511727-185b-4ac0-b6c0-dc3a79657be6 2 \n",
- "\n",
- " primary_site disease_type \\\n",
- "0 Larynx Squamous Cell Neoplasms \n",
- "1 Tonsil Squamous Cell Neoplasms \n",
- "2 Other and unspecified parts of tongue Squamous Cell Neoplasms \n",
- "3 Other and ill-defined sites in lip, oral cavit... Squamous Cell Neoplasms \n",
- "4 Larynx Squamous Cell Neoplasms \n",
- "5 Floor of mouth Squamous Cell Neoplasms \n",
- "6 Other and ill-defined sites in lip, oral cavit... Squamous Cell Neoplasms \n",
- "7 Other and unspecified parts of tongue Squamous Cell Neoplasms \n",
- "8 Gum Squamous Cell Neoplasms \n",
- "9 Larynx Squamous Cell Neoplasms \n",
- "\n",
- " proj__name proj__project_id \\\n",
- "0 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "1 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "2 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "3 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "4 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "5 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "6 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "7 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "8 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "9 Head and Neck Squamous Cell Carcinoma TCGA-HNSC \n",
- "\n",
- " demo__demographic_id demo__gender \\\n",
- "0 2611cb61-6d05-5286-b94a-ce6cac2ba37b male \n",
- "1 97a7f69b-0f40-5450-bbeb-92084a100a9d male \n",
- "2 4bc58619-47fc-5c2d-aaec-9d9e562e049b male \n",
- "3 be41a712-ebee-52e1-907c-80b1917daa45 male \n",
- "4 92d1d967-c8a0-52cb-a62d-1d11bdf85068 female \n",
- "5 2fd1a926-7584-50d5-b6b7-9b9d02710f47 female \n",
- "6 2a3f5bb4-3606-5549-8d85-ec413eadd7ab male \n",
- "7 604e3dac-30be-589d-b622-df0b41cd9a7f female \n",
- "8 83e5c705-bd2e-5516-9700-ed3803dde268 female \n",
- "9 fd1e46fb-43bb-54ae-b713-a579ba857ed4 female \n",
- "\n",
- " demo__race ... exp__bmi exp__years_smoked \\\n",
- "0 black or african american ... NaN NaN \n",
- "1 white ... NaN NaN \n",
- "2 white ... NaN NaN \n",
- "3 white ... NaN NaN \n",
- "4 black or african american ... NaN NaN \n",
- "5 white ... NaN NaN \n",
- "6 black or african american ... NaN NaN \n",
- "7 white ... NaN NaN \n",
- "8 white ... NaN NaN \n",
- "9 black or african american ... NaN NaN \n",
- "\n",
- " exp__pack_years_smoked exp__cigarettes_per_day exp__alcohol_history \\\n",
- "0 15.0 0.821918 Yes \n",
- "1 26.0 1.424658 Yes \n",
- "2 5.0 0.273973 Yes \n",
- "3 NaN NaN Yes \n",
- "4 NaN NaN Yes \n",
- "5 NaN NaN No \n",
- "6 NaN NaN No \n",
- "7 81.0 4.438356 Yes \n",
- "8 NaN NaN Yes \n",
- "9 80.0 4.383562 Yes \n",
- "\n",
- " exp__state exp__created_datetime exp__updated_datetime \\\n",
- "0 released None 2019-07-31T18:43:25.167078-05:00 \n",
- "1 released None 2019-07-31T19:39:51.442671-05:00 \n",
- "2 released None 2019-07-31T19:30:27.901248-05:00 \n",
- "3 released None 2019-07-31T19:40:20.032260-05:00 \n",
- "4 released None 2019-07-31T19:52:06.976359-05:00 \n",
- "5 released None 2019-07-31T19:55:16.152855-05:00 \n",
- "6 released None 2019-07-31T19:48:25.311492-05:00 \n",
- "7 released None 2019-07-31T19:48:40.594893-05:00 \n",
- "8 released None 2019-07-31T19:49:42.057478-05:00 \n",
- "9 released None 2019-07-31T19:48:22.125112-05:00 \n",
- "\n",
- " state updated_datetime \n",
- "0 released 2019-08-06T14:25:25.511101-05:00 \n",
- "1 released 2019-08-06T14:25:25.511101-05:00 \n",
- "2 released 2019-08-06T14:25:39.854271-05:00 \n",
- "3 released 2019-08-06T14:26:05.315718-05:00 \n",
- "4 released 2019-08-06T14:26:05.315718-05:00 \n",
- "5 released 2019-08-06T14:26:16.536997-05:00 \n",
- "6 released 2019-08-06T14:26:28.608672-05:00 \n",
- "7 released 2019-08-06T14:26:39.780396-05:00 \n",
- "8 released 2019-08-06T14:27:02.392779-05:00 \n",
- "9 released 2019-08-06T14:27:02.392779-05:00 \n",
- "\n",
- "[10 rows x 70 columns]"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "sql=\"\"\"SELECT *\n",
- "FROM `isb-cgc-bq.TCGA_versioned.clinical_gdc_r24`\n",
- "LIMIT 10\"\"\"\n",
- "vn.run_sql(sql=sql)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Run as a Web App\n",
- "If you would like to use this functionality in a web app, you can deploy the Vanna Streamlit app and use your own secrets. See [this repo](https://github.com/vanna-ai/vanna-streamlit)."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.10.12"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/notebooks/vn-connect-to-postgres.ipynb b/notebooks/vn-connect-to-postgres.ipynb
deleted file mode 100644
index 64eae9b0..00000000
--- a/notebooks/vn-connect-to-postgres.ipynb
+++ /dev/null
@@ -1,1336 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "![Vanna AI](https://img.vanna.ai/vanna-ask.svg)\n",
- "\n",
- "The following notebook goes through the process of connecting to your postgres database and running sql queries usig Vanna AI. Here we use a demo connection(https://rnacentral.org/help/public-database)\n",
- "\n",
- "# Install Vanna\n",
- "First we install Vanna from [PyPI](https://pypi.org/project/vanna/) and import it.\n",
- "Here, we'll install vanna with extra postgres. If you're using a different database, you'll need to install the appropriate extras."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install vanna[postgres]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set Database Connection\n",
- "These details are only referenced within your notebook. These database credentials are never sent to Vanna's severs.\n",
- "You need to set:\n",
- "`Host`\n",
- "`DATABASE`\n",
- "`PG_USER`\n",
- "`PASSWORD`\n",
- "`PORT`\n",
- "in your environment. Example connection you can use: `HOST=hh-pgsql-public.ebi.ac.uk` `DATABASE=pfmegrnargs` `PG_USER=reader` `PASSWORD=NWDMCE5xdipIjRrp` `PORT=5432`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_postgres()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Or we can provide credentials as parameters `host` `dbname` `user` `password` `port` in above method."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Get Results\n",
- "This gets the SQL run it and prints it's result as a dataframe. Note that we use your connection string to execute the SQL on your warehouse from your local instance. Your connection nor your data gets sent to Vanna's servers. For more info on how Vanna works, [see this post](https://medium.com/vanna-ai/how-vanna-works-how-to-train-it-data-security-8d8f2008042). We will be using example sql below. Note: below SQL only works for the above demo connection."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
id
\n",
- "
timestamp
\n",
- "
userstamp
\n",
- "
descr
\n",
- "
current_release
\n",
- "
full_descr
\n",
- "
alive
\n",
- "
for_release
\n",
- "
display_name
\n",
- "
project_id
\n",
- "
avg_length
\n",
- "
min_length
\n",
- "
max_length
\n",
- "
num_sequences
\n",
- "
num_organisms
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
5
\n",
- "
2017-05-17 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
VEGA
\n",
- "
98
\n",
- "
VEGA
\n",
- "
N
\n",
- "
None
\n",
- "
VEGA
\n",
- "
PRJEB4568
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
NaN
\n",
- "
0
\n",
- "
0
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
1
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENA
\n",
- "
731
\n",
- "
ENA
\n",
- "
Y
\n",
- "
None
\n",
- "
ENA
\n",
- "
None
\n",
- "
412.0
\n",
- "
10.0
\n",
- "
900074.0
\n",
- "
12086180
\n",
- "
814855
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
26
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
GENCODE
\n",
- "
450
\n",
- "
GENCODE
\n",
- "
N
\n",
- "
None
\n",
- "
GENCODE
\n",
- "
None
\n",
- "
889.0
\n",
- "
32.0
\n",
- "
205012.0
\n",
- "
47677
\n",
- "
2
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
3
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
SRPDB
\n",
- "
732
\n",
- "
SRPDB
\n",
- "
Y
\n",
- "
None
\n",
- "
SRPDB
\n",
- "
PRJEB4384
\n",
- "
173.0
\n",
- "
30.0
\n",
- "
533.0
\n",
- "
503
\n",
- "
684
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
15
\n",
- "
2017-05-02 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
WORMBASE
\n",
- "
735
\n",
- "
WormBase
\n",
- "
Y
\n",
- "
None
\n",
- "
WormBase
\n",
- "
PRJNA13758
\n",
- "
174.0
\n",
- "
17.0
\n",
- "
84141.0
\n",
- "
26116
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
24
\n",
- "
2017-05-02 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
FLYBASE
\n",
- "
739
\n",
- "
FlyBase
\n",
- "
Y
\n",
- "
None
\n",
- "
FlyBase
\n",
- "
PRJ_FLY
\n",
- "
765.0
\n",
- "
18.0
\n",
- "
21216.0
\n",
- "
4210
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
14
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
TAIR
\n",
- "
720
\n",
- "
TAIR
\n",
- "
Y
\n",
- "
None
\n",
- "
TAIR
\n",
- "
PRJ_TAIR
\n",
- "
384.0
\n",
- "
19.0
\n",
- "
6227.0
\n",
- "
4406
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
2
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
RFAM
\n",
- "
635
\n",
- "
RFAM
\n",
- "
Y
\n",
- "
None
\n",
- "
Rfam
\n",
- "
None
\n",
- "
135.0
\n",
- "
24.0
\n",
- "
11047.0
\n",
- "
1872081
\n",
- "
14735
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
25
\n",
- "
2017-05-11 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENSEMBL
\n",
- "
721
\n",
- "
Ensembl
\n",
- "
Y
\n",
- "
None
\n",
- "
Ensembl
\n",
- "
None
\n",
- "
908.0
\n",
- "
20.0
\n",
- "
347561.0
\n",
- "
1294678
\n",
- "
264
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
52
\n",
- "
2022-12-21 11:20:36.071013
\n",
- "
RNACEN
\n",
- "
RIBOCENTRE
\n",
- "
729
\n",
- "
Ribocentre
\n",
- "
Y
\n",
- "
None
\n",
- "
Ribocentre
\n",
- "
None
\n",
- "
67.0
\n",
- "
28.0
\n",
- "
1619.0
\n",
- "
151770
\n",
- "
5536
\n",
- "
\n",
- "
\n",
- "
10
\n",
- "
53
\n",
- "
2023-01-24 11:56:51.648817
\n",
- "
RNACEN
\n",
- "
EVLNCRNAS
\n",
- "
730
\n",
- "
EVLncRNAs
\n",
- "
Y
\n",
- "
None
\n",
- "
EVLncRNAs
\n",
- "
None
\n",
- "
2311.0
\n",
- "
199.0
\n",
- "
205012.0
\n",
- "
933
\n",
- "
3
\n",
- "
\n",
- "
\n",
- "
11
\n",
- "
6
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
TMRNA_WEB
\n",
- "
414
\n",
- "
tmRNA Website
\n",
- "
Y
\n",
- "
None
\n",
- "
tmRNA Website
\n",
- "
PRJEB4570
\n",
- "
335.0
\n",
- "
23.0
\n",
- "
644.0
\n",
- "
2857
\n",
- "
7560
\n",
- "
\n",
- "
\n",
- "
12
\n",
- "
51
\n",
- "
2022-09-22 15:14:59.500143
\n",
- "
RNACEN
\n",
- "
EXPRESSION_ATLAS
\n",
- "
636
\n",
- "
Expression Atlas
\n",
- "
Y
\n",
- "
None
\n",
- "
Expression Atlas
\n",
- "
None
\n",
- "
953.0
\n",
- "
72.0
\n",
- "
32709.0
\n",
- "
11030
\n",
- "
3
\n",
- "
\n",
- "
\n",
- "
13
\n",
- "
35
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENSEMBL_PROTISTS
\n",
- "
724
\n",
- "
Ensembl Protists
\n",
- "
Y
\n",
- "
None
\n",
- "
Ensembl Protists
\n",
- "
None
\n",
- "
212.0
\n",
- "
11.0
\n",
- "
7940.0
\n",
- "
5261
\n",
- "
32
\n",
- "
\n",
- "
\n",
- "
14
\n",
- "
36
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENSEMBL_FUNGI
\n",
- "
725
\n",
- "
Ensembl Fungi
\n",
- "
Y
\n",
- "
None
\n",
- "
Ensembl Fungi
\n",
- "
None
\n",
- "
210.0
\n",
- "
19.0
\n",
- "
16569.0
\n",
- "
15817
\n",
- "
62
\n",
- "
\n",
- "
\n",
- "
15
\n",
- "
22
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
MODOMICS
\n",
- "
92
\n",
- "
Modomics
\n",
- "
Y
\n",
- "
None
\n",
- "
Modomics
\n",
- "
None
\n",
- "
140.0
\n",
- "
54.0
\n",
- "
5025.0
\n",
- "
319
\n",
- "
60
\n",
- "
\n",
- "
\n",
- "
16
\n",
- "
20
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
LNCIPEDIA
\n",
- "
612
\n",
- "
LNCipedia
\n",
- "
Y
\n",
- "
None
\n",
- "
LNCipedia
\n",
- "
None
\n",
- "
1534.0
\n",
- "
200.0
\n",
- "
152544.0
\n",
- "
126876
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
17
\n",
- "
28
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
RGD
\n",
- "
194
\n",
- "
Rat Genome Database
\n",
- "
Y
\n",
- "
None
\n",
- "
RGD
\n",
- "
None
\n",
- "
2340.0
\n",
- "
49.0
\n",
- "
27956.0
\n",
- "
11124
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
18
\n",
- "
27
\n",
- "
2017-10-23 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
MGI
\n",
- "
174
\n",
- "
Mouse Genome Database
\n",
- "
Y
\n",
- "
None
\n",
- "
MGI
\n",
- "
None
\n",
- "
851.0
\n",
- "
21.0
\n",
- "
84395.0
\n",
- "
16719
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
19
\n",
- "
50
\n",
- "
2022-08-16 15:52:33.990145
\n",
- "
RNACEN
\n",
- "
PLNCDB
\n",
- "
606
\n",
- "
PLncDB
\n",
- "
Y
\n",
- "
None
\n",
- "
PLncDB
\n",
- "
None
\n",
- "
6659.0
\n",
- "
199.0
\n",
- "
985945.0
\n",
- "
936926
\n",
- "
80
\n",
- "
\n",
- "
\n",
- "
20
\n",
- "
49
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
RIBOVISION
\n",
- "
560
\n",
- "
RiboVision
\n",
- "
Y
\n",
- "
None
\n",
- "
RiboVision
\n",
- "
None
\n",
- "
1676.0
\n",
- "
30.0
\n",
- "
5070.0
\n",
- "
36
\n",
- "
15
\n",
- "
\n",
- "
\n",
- "
21
\n",
- "
42
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
INTACT
\n",
- "
740
\n",
- "
IntAct
\n",
- "
Y
\n",
- "
None
\n",
- "
IntAct
\n",
- "
None
\n",
- "
705.0
\n",
- "
18.0
\n",
- "
93092.0
\n",
- "
386
\n",
- "
9
\n",
- "
\n",
- "
\n",
- "
22
\n",
- "
48
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
PSICQUIC
\n",
- "
632
\n",
- "
PSICQUIC
\n",
- "
Y
\n",
- "
None
\n",
- "
PSICQUIC
\n",
- "
None
\n",
- "
2251.0
\n",
- "
21.0
\n",
- "
84395.0
\n",
- "
95
\n",
- "
8
\n",
- "
\n",
- "
\n",
- "
23
\n",
- "
34
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENSEMBL_METAZOA
\n",
- "
723
\n",
- "
Ensembl Metazoa
\n",
- "
Y
\n",
- "
None
\n",
- "
Ensembl Metazoa
\n",
- "
None
\n",
- "
712.0
\n",
- "
18.0
\n",
- "
46956.0
\n",
- "
285241
\n",
- "
152
\n",
- "
\n",
- "
\n",
- "
24
\n",
- "
40
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
MALACARDS
\n",
- "
726
\n",
- "
MalaCards
\n",
- "
Y
\n",
- "
None
\n",
- "
MalaCards
\n",
- "
None
\n",
- "
1861.0
\n",
- "
16.0
\n",
- "
220253.0
\n",
- "
57129
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
25
\n",
- "
41
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
GENECARDS
\n",
- "
727
\n",
- "
MalaCards
\n",
- "
Y
\n",
- "
None
\n",
- "
GeneCards
\n",
- "
None
\n",
- "
1301.0
\n",
- "
16.0
\n",
- "
347561.0
\n",
- "
515365
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
26
\n",
- "
47
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENSEMBL_GENCODE
\n",
- "
728
\n",
- "
ENSEMBL_GENCODE
\n",
- "
Y
\n",
- "
None
\n",
- "
Ensembl/GENCODE
\n",
- "
None
\n",
- "
1274.0
\n",
- "
32.0
\n",
- "
347561.0
\n",
- "
76095
\n",
- "
2
\n",
- "
\n",
- "
\n",
- "
27
\n",
- "
19
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
DICTYBASE
\n",
- "
86
\n",
- "
dictyBase
\n",
- "
Y
\n",
- "
None
\n",
- "
dictyBase
\n",
- "
PRJ_DICTY
\n",
- "
82.0
\n",
- "
32.0
\n",
- "
1060.0
\n",
- "
149
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
28
\n",
- "
12
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
SNOPY
\n",
- "
511
\n",
- "
snOPY
\n",
- "
Y
\n",
- "
None
\n",
- "
snOPY
\n",
- "
PRJEB8122
\n",
- "
117.0
\n",
- "
42.0
\n",
- "
1004.0
\n",
- "
2501
\n",
- "
7
\n",
- "
\n",
- "
\n",
- "
29
\n",
- "
46
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
PIRBASE
\n",
- "
485
\n",
- "
piRBase
\n",
- "
Y
\n",
- "
None
\n",
- "
piRBase
\n",
- "
None
\n",
- "
28.0
\n",
- "
15.0
\n",
- "
40.0
\n",
- "
200827
\n",
- "
17
\n",
- "
\n",
- "
\n",
- "
30
\n",
- "
45
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
CRW
\n",
- "
593
\n",
- "
CRW
\n",
- "
Y
\n",
- "
None
\n",
- "
CRW
\n",
- "
None
\n",
- "
1365.0
\n",
- "
107.0
\n",
- "
4381.0
\n",
- "
934
\n",
- "
685
\n",
- "
\n",
- "
\n",
- "
31
\n",
- "
8
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
GTRNADB
\n",
- "
733
\n",
- "
GtRNAdb
\n",
- "
Y
\n",
- "
None
\n",
- "
GtRNAdb
\n",
- "
PRJEB5173
\n",
- "
76.0
\n",
- "
53.0
\n",
- "
356.0
\n",
- "
93098
\n",
- "
4337
\n",
- "
\n",
- "
\n",
- "
32
\n",
- "
9
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
REFSEQ
\n",
- "
719
\n",
- "
RefSeq
\n",
- "
Y
\n",
- "
None
\n",
- "
RefSeq
\n",
- "
None
\n",
- "
637.0
\n",
- "
15.0
\n",
- "
91671.0
\n",
- "
107976
\n",
- "
22247
\n",
- "
\n",
- "
\n",
- "
33
\n",
- "
31
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ENSEMBL_PLANTS
\n",
- "
722
\n",
- "
Ensembl Plants
\n",
- "
Y
\n",
- "
None
\n",
- "
Ensembl Plants
\n",
- "
None
\n",
- "
279.0
\n",
- "
15.0
\n",
- "
79788.0
\n",
- "
76428
\n",
- "
59
\n",
- "
\n",
- "
\n",
- "
34
\n",
- "
43
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
SNORNADB
\n",
- "
446
\n",
- "
snoRNA Database
\n",
- "
Y
\n",
- "
None
\n",
- "
snoRNA Database
\n",
- "
None
\n",
- "
50.0
\n",
- "
45.0
\n",
- "
74.0
\n",
- "
680
\n",
- "
10
\n",
- "
\n",
- "
\n",
- "
35
\n",
- "
10
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
RDP
\n",
- "
85
\n",
- "
RDP
\n",
- "
Y
\n",
- "
None
\n",
- "
RDP
\n",
- "
None
\n",
- "
1536.0
\n",
- "
1337.0
\n",
- "
1600.0
\n",
- "
4779
\n",
- "
2487
\n",
- "
\n",
- "
\n",
- "
36
\n",
- "
7
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
LNCRNADB
\n",
- "
464
\n",
- "
lncRNAdb
\n",
- "
Y
\n",
- "
None
\n",
- "
lncRNAdb
\n",
- "
PRJEB6238
\n",
- "
3086.0
\n",
- "
61.0
\n",
- "
32753.0
\n",
- "
62
\n",
- "
10
\n",
- "
\n",
- "
\n",
- "
37
\n",
- "
39
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
MIRGENEDB
\n",
- "
559
\n",
- "
MirGeneDB
\n",
- "
Y
\n",
- "
None
\n",
- "
MirGeneDB
\n",
- "
None
\n",
- "
41.0
\n",
- "
20.0
\n",
- "
282.0
\n",
- "
18901
\n",
- "
75
\n",
- "
\n",
- "
\n",
- "
38
\n",
- "
17
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
SILVA
\n",
- "
610
\n",
- "
SILVA
\n",
- "
Y
\n",
- "
None
\n",
- "
SILVA
\n",
- "
None
\n",
- "
1080.0
\n",
- "
300.0
\n",
- "
4997.0
\n",
- "
8193988
\n",
- "
665540
\n",
- "
\n",
- "
\n",
- "
39
\n",
- "
30
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ZWD
\n",
- "
615
\n",
- "
ZWD
\n",
- "
Y
\n",
- "
None
\n",
- "
ZWD
\n",
- "
None
\n",
- "
86.0
\n",
- "
21.0
\n",
- "
951.0
\n",
- "
44332
\n",
- "
6763
\n",
- "
\n",
- "
\n",
- "
40
\n",
- "
33
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
LNCBOOK
\n",
- "
616
\n",
- "
LncBook
\n",
- "
Y
\n",
- "
None
\n",
- "
LncBook
\n",
- "
None
\n",
- "
1686.0
\n",
- "
54.0
\n",
- "
205012.0
\n",
- "
322552
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
41
\n",
- "
11
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
PDBE
\n",
- "
734
\n",
- "
PDBe
\n",
- "
Y
\n",
- "
None
\n",
- "
PDBe
\n",
- "
None
\n",
- "
591.0
\n",
- "
10.0
\n",
- "
19000.0
\n",
- "
3760
\n",
- "
382
\n",
- "
\n",
- "
\n",
- "
42
\n",
- "
16
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
SGD
\n",
- "
736
\n",
- "
SGD
\n",
- "
Y
\n",
- "
None
\n",
- "
SGD
\n",
- "
PRJ_SGD
\n",
- "
243.0
\n",
- "
58.0
\n",
- "
6858.0
\n",
- "
212
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
43
\n",
- "
18
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
POMBASE
\n",
- "
737
\n",
- "
PomBase
\n",
- "
Y
\n",
- "
None
\n",
- "
PomBase
\n",
- "
PRJNA13836
\n",
- "
179.0
\n",
- "
47.0
\n",
- "
3485.0
\n",
- "
200
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
44
\n",
- "
23
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
HGNC
\n",
- "
738
\n",
- "
HUGO Gene Nomenclature Committee
\n",
- "
Y
\n",
- "
None
\n",
- "
HGNC
\n",
- "
None
\n",
- "
1058.0
\n",
- "
33.0
\n",
- "
205012.0
\n",
- "
8438
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
45
\n",
- "
44
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
ZFIN
\n",
- "
741
\n",
- "
ZFIN
\n",
- "
Y
\n",
- "
None
\n",
- "
ZFIN
\n",
- "
None
\n",
- "
907.0
\n",
- "
83.0
\n",
- "
13525.0
\n",
- "
1025
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
46
\n",
- "
37
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
SNODB
\n",
- "
444
\n",
- "
snoDB
\n",
- "
Y
\n",
- "
None
\n",
- "
snoDB
\n",
- "
None
\n",
- "
117.0
\n",
- "
33.0
\n",
- "
791.0
\n",
- "
1970
\n",
- "
1
\n",
- "
\n",
- "
\n",
- "
47
\n",
- "
13
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
GREENGENES
\n",
- "
71
\n",
- "
Greengenes
\n",
- "
Y
\n",
- "
None
\n",
- "
Greengenes
\n",
- "
None
\n",
- "
1403.0
\n",
- "
1253.0
\n",
- "
2368.0
\n",
- "
1004892
\n",
- "
92684
\n",
- "
\n",
- "
\n",
- "
48
\n",
- "
38
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
5SRRNADB
\n",
- "
387
\n",
- "
5SrRNAdb
\n",
- "
Y
\n",
- "
None
\n",
- "
5SrRNAdb
\n",
- "
None
\n",
- "
120.0
\n",
- "
95.0
\n",
- "
180.0
\n",
- "
9487
\n",
- "
7158
\n",
- "
\n",
- "
\n",
- "
49
\n",
- "
32
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
LNCBASE
\n",
- "
248
\n",
- "
LncBase
\n",
- "
Y
\n",
- "
None
\n",
- "
LncBase
\n",
- "
None
\n",
- "
22.0
\n",
- "
17.0
\n",
- "
26.0
\n",
- "
1151
\n",
- "
2
\n",
- "
\n",
- "
\n",
- "
50
\n",
- "
29
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
TARBASE
\n",
- "
223
\n",
- "
TarBase
\n",
- "
Y
\n",
- "
None
\n",
- "
TarBase
\n",
- "
None
\n",
- "
22.0
\n",
- "
16.0
\n",
- "
27.0
\n",
- "
1291
\n",
- "
2
\n",
- "
\n",
- "
\n",
- "
51
\n",
- "
4
\n",
- "
2017-05-01 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
MIRBASE
\n",
- "
435
\n",
- "
MIRBASE
\n",
- "
Y
\n",
- "
None
\n",
- "
miRBase
\n",
- "
PRJEB4451
\n",
- "
55.0
\n",
- "
15.0
\n",
- "
2354.0
\n",
- "
65389
\n",
- "
271
\n",
- "
\n",
- "
\n",
- "
52
\n",
- "
21
\n",
- "
2017-05-02 00:00:00.000000
\n",
- "
RNACEN
\n",
- "
NONCODE
\n",
- "
146
\n",
- "
NONCODE
\n",
- "
Y
\n",
- "
None
\n",
- "
NONCODE
\n",
- "
None
\n",
- "
1130.0
\n",
- "
201.0
\n",
- "
244296.0
\n",
- "
234669
\n",
- "
7
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id timestamp userstamp descr \\\n",
- "0 5 2017-05-17 00:00:00.000000 RNACEN VEGA \n",
- "1 1 2017-05-01 00:00:00.000000 RNACEN ENA \n",
- "2 26 2017-05-01 00:00:00.000000 RNACEN GENCODE \n",
- "3 3 2017-05-01 00:00:00.000000 RNACEN SRPDB \n",
- "4 15 2017-05-02 00:00:00.000000 RNACEN WORMBASE \n",
- "5 24 2017-05-02 00:00:00.000000 RNACEN FLYBASE \n",
- "6 14 2017-05-01 00:00:00.000000 RNACEN TAIR \n",
- "7 2 2017-05-01 00:00:00.000000 RNACEN RFAM \n",
- "8 25 2017-05-11 00:00:00.000000 RNACEN ENSEMBL \n",
- "9 52 2022-12-21 11:20:36.071013 RNACEN RIBOCENTRE \n",
- "10 53 2023-01-24 11:56:51.648817 RNACEN EVLNCRNAS \n",
- "11 6 2017-05-01 00:00:00.000000 RNACEN TMRNA_WEB \n",
- "12 51 2022-09-22 15:14:59.500143 RNACEN EXPRESSION_ATLAS \n",
- "13 35 2017-05-01 00:00:00.000000 RNACEN ENSEMBL_PROTISTS \n",
- "14 36 2017-05-01 00:00:00.000000 RNACEN ENSEMBL_FUNGI \n",
- "15 22 2017-05-01 00:00:00.000000 RNACEN MODOMICS \n",
- "16 20 2017-05-01 00:00:00.000000 RNACEN LNCIPEDIA \n",
- "17 28 2017-05-01 00:00:00.000000 RNACEN RGD \n",
- "18 27 2017-10-23 00:00:00.000000 RNACEN MGI \n",
- "19 50 2022-08-16 15:52:33.990145 RNACEN PLNCDB \n",
- "20 49 2017-05-01 00:00:00.000000 RNACEN RIBOVISION \n",
- "21 42 2017-05-01 00:00:00.000000 RNACEN INTACT \n",
- "22 48 2017-05-01 00:00:00.000000 RNACEN PSICQUIC \n",
- "23 34 2017-05-01 00:00:00.000000 RNACEN ENSEMBL_METAZOA \n",
- "24 40 2017-05-01 00:00:00.000000 RNACEN MALACARDS \n",
- "25 41 2017-05-01 00:00:00.000000 RNACEN GENECARDS \n",
- "26 47 2017-05-01 00:00:00.000000 RNACEN ENSEMBL_GENCODE \n",
- "27 19 2017-05-01 00:00:00.000000 RNACEN DICTYBASE \n",
- "28 12 2017-05-01 00:00:00.000000 RNACEN SNOPY \n",
- "29 46 2017-05-01 00:00:00.000000 RNACEN PIRBASE \n",
- "30 45 2017-05-01 00:00:00.000000 RNACEN CRW \n",
- "31 8 2017-05-01 00:00:00.000000 RNACEN GTRNADB \n",
- "32 9 2017-05-01 00:00:00.000000 RNACEN REFSEQ \n",
- "33 31 2017-05-01 00:00:00.000000 RNACEN ENSEMBL_PLANTS \n",
- "34 43 2017-05-01 00:00:00.000000 RNACEN SNORNADB \n",
- "35 10 2017-05-01 00:00:00.000000 RNACEN RDP \n",
- "36 7 2017-05-01 00:00:00.000000 RNACEN LNCRNADB \n",
- "37 39 2017-05-01 00:00:00.000000 RNACEN MIRGENEDB \n",
- "38 17 2017-05-01 00:00:00.000000 RNACEN SILVA \n",
- "39 30 2017-05-01 00:00:00.000000 RNACEN ZWD \n",
- "40 33 2017-05-01 00:00:00.000000 RNACEN LNCBOOK \n",
- "41 11 2017-05-01 00:00:00.000000 RNACEN PDBE \n",
- "42 16 2017-05-01 00:00:00.000000 RNACEN SGD \n",
- "43 18 2017-05-01 00:00:00.000000 RNACEN POMBASE \n",
- "44 23 2017-05-01 00:00:00.000000 RNACEN HGNC \n",
- "45 44 2017-05-01 00:00:00.000000 RNACEN ZFIN \n",
- "46 37 2017-05-01 00:00:00.000000 RNACEN SNODB \n",
- "47 13 2017-05-01 00:00:00.000000 RNACEN GREENGENES \n",
- "48 38 2017-05-01 00:00:00.000000 RNACEN 5SRRNADB \n",
- "49 32 2017-05-01 00:00:00.000000 RNACEN LNCBASE \n",
- "50 29 2017-05-01 00:00:00.000000 RNACEN TARBASE \n",
- "51 4 2017-05-01 00:00:00.000000 RNACEN MIRBASE \n",
- "52 21 2017-05-02 00:00:00.000000 RNACEN NONCODE \n",
- "\n",
- " current_release full_descr alive for_release \\\n",
- "0 98 VEGA N None \n",
- "1 731 ENA Y None \n",
- "2 450 GENCODE N None \n",
- "3 732 SRPDB Y None \n",
- "4 735 WormBase Y None \n",
- "5 739 FlyBase Y None \n",
- "6 720 TAIR Y None \n",
- "7 635 RFAM Y None \n",
- "8 721 Ensembl Y None \n",
- "9 729 Ribocentre Y None \n",
- "10 730 EVLncRNAs Y None \n",
- "11 414 tmRNA Website Y None \n",
- "12 636 Expression Atlas Y None \n",
- "13 724 Ensembl Protists Y None \n",
- "14 725 Ensembl Fungi Y None \n",
- "15 92 Modomics Y None \n",
- "16 612 LNCipedia Y None \n",
- "17 194 Rat Genome Database Y None \n",
- "18 174 Mouse Genome Database Y None \n",
- "19 606 PLncDB Y None \n",
- "20 560 RiboVision Y None \n",
- "21 740 IntAct Y None \n",
- "22 632 PSICQUIC Y None \n",
- "23 723 Ensembl Metazoa Y None \n",
- "24 726 MalaCards Y None \n",
- "25 727 MalaCards Y None \n",
- "26 728 ENSEMBL_GENCODE Y None \n",
- "27 86 dictyBase Y None \n",
- "28 511 snOPY Y None \n",
- "29 485 piRBase Y None \n",
- "30 593 CRW Y None \n",
- "31 733 GtRNAdb Y None \n",
- "32 719 RefSeq Y None \n",
- "33 722 Ensembl Plants Y None \n",
- "34 446 snoRNA Database Y None \n",
- "35 85 RDP Y None \n",
- "36 464 lncRNAdb Y None \n",
- "37 559 MirGeneDB Y None \n",
- "38 610 SILVA Y None \n",
- "39 615 ZWD Y None \n",
- "40 616 LncBook Y None \n",
- "41 734 PDBe Y None \n",
- "42 736 SGD Y None \n",
- "43 737 PomBase Y None \n",
- "44 738 HUGO Gene Nomenclature Committee Y None \n",
- "45 741 ZFIN Y None \n",
- "46 444 snoDB Y None \n",
- "47 71 Greengenes Y None \n",
- "48 387 5SrRNAdb Y None \n",
- "49 248 LncBase Y None \n",
- "50 223 TarBase Y None \n",
- "51 435 MIRBASE Y None \n",
- "52 146 NONCODE Y None \n",
- "\n",
- " display_name project_id avg_length min_length max_length \\\n",
- "0 VEGA PRJEB4568 NaN NaN NaN \n",
- "1 ENA None 412.0 10.0 900074.0 \n",
- "2 GENCODE None 889.0 32.0 205012.0 \n",
- "3 SRPDB PRJEB4384 173.0 30.0 533.0 \n",
- "4 WormBase PRJNA13758 174.0 17.0 84141.0 \n",
- "5 FlyBase PRJ_FLY 765.0 18.0 21216.0 \n",
- "6 TAIR PRJ_TAIR 384.0 19.0 6227.0 \n",
- "7 Rfam None 135.0 24.0 11047.0 \n",
- "8 Ensembl None 908.0 20.0 347561.0 \n",
- "9 Ribocentre None 67.0 28.0 1619.0 \n",
- "10 EVLncRNAs None 2311.0 199.0 205012.0 \n",
- "11 tmRNA Website PRJEB4570 335.0 23.0 644.0 \n",
- "12 Expression Atlas None 953.0 72.0 32709.0 \n",
- "13 Ensembl Protists None 212.0 11.0 7940.0 \n",
- "14 Ensembl Fungi None 210.0 19.0 16569.0 \n",
- "15 Modomics None 140.0 54.0 5025.0 \n",
- "16 LNCipedia None 1534.0 200.0 152544.0 \n",
- "17 RGD None 2340.0 49.0 27956.0 \n",
- "18 MGI None 851.0 21.0 84395.0 \n",
- "19 PLncDB None 6659.0 199.0 985945.0 \n",
- "20 RiboVision None 1676.0 30.0 5070.0 \n",
- "21 IntAct None 705.0 18.0 93092.0 \n",
- "22 PSICQUIC None 2251.0 21.0 84395.0 \n",
- "23 Ensembl Metazoa None 712.0 18.0 46956.0 \n",
- "24 MalaCards None 1861.0 16.0 220253.0 \n",
- "25 GeneCards None 1301.0 16.0 347561.0 \n",
- "26 Ensembl/GENCODE None 1274.0 32.0 347561.0 \n",
- "27 dictyBase PRJ_DICTY 82.0 32.0 1060.0 \n",
- "28 snOPY PRJEB8122 117.0 42.0 1004.0 \n",
- "29 piRBase None 28.0 15.0 40.0 \n",
- "30 CRW None 1365.0 107.0 4381.0 \n",
- "31 GtRNAdb PRJEB5173 76.0 53.0 356.0 \n",
- "32 RefSeq None 637.0 15.0 91671.0 \n",
- "33 Ensembl Plants None 279.0 15.0 79788.0 \n",
- "34 snoRNA Database None 50.0 45.0 74.0 \n",
- "35 RDP None 1536.0 1337.0 1600.0 \n",
- "36 lncRNAdb PRJEB6238 3086.0 61.0 32753.0 \n",
- "37 MirGeneDB None 41.0 20.0 282.0 \n",
- "38 SILVA None 1080.0 300.0 4997.0 \n",
- "39 ZWD None 86.0 21.0 951.0 \n",
- "40 LncBook None 1686.0 54.0 205012.0 \n",
- "41 PDBe None 591.0 10.0 19000.0 \n",
- "42 SGD PRJ_SGD 243.0 58.0 6858.0 \n",
- "43 PomBase PRJNA13836 179.0 47.0 3485.0 \n",
- "44 HGNC None 1058.0 33.0 205012.0 \n",
- "45 ZFIN None 907.0 83.0 13525.0 \n",
- "46 snoDB None 117.0 33.0 791.0 \n",
- "47 Greengenes None 1403.0 1253.0 2368.0 \n",
- "48 5SrRNAdb None 120.0 95.0 180.0 \n",
- "49 LncBase None 22.0 17.0 26.0 \n",
- "50 TarBase None 22.0 16.0 27.0 \n",
- "51 miRBase PRJEB4451 55.0 15.0 2354.0 \n",
- "52 NONCODE None 1130.0 201.0 244296.0 \n",
- "\n",
- " num_sequences num_organisms \n",
- "0 0 0 \n",
- "1 12086180 814855 \n",
- "2 47677 2 \n",
- "3 503 684 \n",
- "4 26116 1 \n",
- "5 4210 1 \n",
- "6 4406 1 \n",
- "7 1872081 14735 \n",
- "8 1294678 264 \n",
- "9 151770 5536 \n",
- "10 933 3 \n",
- "11 2857 7560 \n",
- "12 11030 3 \n",
- "13 5261 32 \n",
- "14 15817 62 \n",
- "15 319 60 \n",
- "16 126876 1 \n",
- "17 11124 1 \n",
- "18 16719 1 \n",
- "19 936926 80 \n",
- "20 36 15 \n",
- "21 386 9 \n",
- "22 95 8 \n",
- "23 285241 152 \n",
- "24 57129 1 \n",
- "25 515365 1 \n",
- "26 76095 2 \n",
- "27 149 1 \n",
- "28 2501 7 \n",
- "29 200827 17 \n",
- "30 934 685 \n",
- "31 93098 4337 \n",
- "32 107976 22247 \n",
- "33 76428 59 \n",
- "34 680 10 \n",
- "35 4779 2487 \n",
- "36 62 10 \n",
- "37 18901 75 \n",
- "38 8193988 665540 \n",
- "39 44332 6763 \n",
- "40 322552 1 \n",
- "41 3760 382 \n",
- "42 212 1 \n",
- "43 200 1 \n",
- "44 8438 1 \n",
- "45 1025 1 \n",
- "46 1970 1 \n",
- "47 1004892 92684 \n",
- "48 9487 7158 \n",
- "49 1151 2 \n",
- "50 1291 2 \n",
- "51 65389 271 \n",
- "52 234669 7 "
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "vn.run_sql(sql=\"SELECT * FROM rnc_database\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Run as a Web App\n",
- "If you would like to use this functionality in a web app, you can deploy the Vanna Streamlit app and use your own secrets. See [this repo](https://github.com/vanna-ai/vanna-streamlit)."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.10.12"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/notebooks/vn-train.ipynb b/notebooks/vn-train.ipynb
deleted file mode 100644
index 56428bf9..00000000
--- a/notebooks/vn-train.ipynb
+++ /dev/null
@@ -1,394 +0,0 @@
-{
- "cells": [
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "# Install Vanna\n",
- "First we install Vanna from [PyPI](https://pypi.org/project/vanna/) and import it.\n",
- "Here, we'll also install the Snowflake connector. If you're using a different database, you'll need to install the appropriate connector."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "%pip install vanna\n",
- "%pip install snowflake-connector-python"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "import vanna as vn\n",
- "import snowflake.connector"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Login\n",
- "Creating a login and getting an API key is as easy as entering your email (after you run this cell) and entering the code we send to you. Check your Spam folder if you don't see the code."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "api_key = vn.get_api_key('my-email@example.com')\n",
- "vn.set_api_key(api_key)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Set your Model\n",
- "You need to choose a globally unique model name. Try using your company name or another unique string. All data from models are isolated - there's no leakage."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.set_model('my-model') # Enter your model name here. This is a globally unique identifier for your model."
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Automatic Training\n",
- "If you'd like to use automatic training, the Vanna package can crawl your database to fetch metadata to train your model. You can put in your Snowflake credentials here. These details are only referenced within your notebook. These database credentials are never sent to Vanna's severs."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.connect_to_snowflake(account='my-account', username='my-username', password='my-password', database='my-database')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Trying query history\n",
- "Trying INFORMATION_SCHEMA.COLUMNS for SNOWFLAKE_SAMPLE_DATA\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "Train on SQL: What are the top 10 customers ranked by total sales?\n",
- "Train on SQL: What are the top 10 customers in terms of total sales?\n",
- "Train on SQL: What are the top two customers with the highest total sales for each region?\n",
- "Train on SQL: What are the top 5 customers with the highest total sales?\n",
- "Train on SQL: What is the total quantity of each product sold in each region, ordered by region name and total quantity in descending order?\n",
- "Train on SQL: What is the number of orders for each week, starting from the most recent week?\n",
- "Train on SQL: What countries are in the region 'EUROPE'?\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 SUPPLIER\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 LINEITEM\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 CUSTOMER\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 PARTSUPP\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 PART\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 ORDERS\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 REGION\n",
- "Train on Information Schema: SNOWFLAKE_SAMPLE_DATA.TPCH_SF1 NATION"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "training_plan = vn.get_training_plan_experimental(filter_databases=['SNOWFLAKE_SAMPLE_DATA'], filter_schemas=['TPCH_SF1'])\n",
- "training_plan"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.train(plan=training_plan)"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# View Training Data\n",
- "At any time you can see what training data is in your model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
id
\n",
- "
training_data_type
\n",
- "
question
\n",
- "
content
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
15-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the PARTSUPP table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
11-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the CUSTOMER table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
14-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the ORDERS table.\\n\\nThe fo...
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
1244-sql
\n",
- "
sql
\n",
- "
What are the names of the top 10 customers?
\n",
- "
SELECT c.c_name as customer_name\\nFROM snowf...
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
1242-sql
\n",
- "
sql
\n",
- "
What are the top 5 customers in terms of total...
\n",
- "
SELECT c.c_name AS customer_name, SUM(l.l_quan...
\n",
- "
\n",
- "
\n",
- "
5
\n",
- "
17-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the REGION table.\\n\\nThe fo...
\n",
- "
\n",
- "
\n",
- "
6
\n",
- "
16-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the PART table.\\n\\nThe foll...
\n",
- "
\n",
- "
\n",
- "
7
\n",
- "
1243-sql
\n",
- "
sql
\n",
- "
What are the top 10 customers with the highest...
\n",
- "
SELECT c.c_name as customer_name,\\n sum(...
\n",
- "
\n",
- "
\n",
- "
8
\n",
- "
1239-sql
\n",
- "
sql
\n",
- "
What are the top 100 customers based on their ...
\n",
- "
SELECT c.c_name as customer_name,\\n sum(...
\n",
- "
\n",
- "
\n",
- "
9
\n",
- "
13-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the SUPPLIER table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
10
\n",
- "
1241-sql
\n",
- "
sql
\n",
- "
What are the top 10 customers in terms of tota...
\n",
- "
SELECT c.c_name as customer_name,\\n sum(...
\n",
- "
\n",
- "
\n",
- "
11
\n",
- "
12-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the LINEITEM table.\\n\\nThe ...
\n",
- "
\n",
- "
\n",
- "
12
\n",
- "
18-doc
\n",
- "
documentation
\n",
- "
None
\n",
- "
This is a table in the NATION table.\\n\\nThe fo...
\n",
- "
\n",
- "
\n",
- "
13
\n",
- "
1248-sql
\n",
- "
sql
\n",
- "
How many customers are in each country?
\n",
- "
SELECT n.n_name as country,\\n count(*) a...
\n",
- "
\n",
- "
\n",
- "
14
\n",
- "
1240-sql
\n",
- "
sql
\n",
- "
What is the number of orders placed each week?
\n",
- "
SELECT date_trunc('week', o_orderdate) as week...
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " id training_data_type \\\n",
- "0 15-doc documentation \n",
- "1 11-doc documentation \n",
- "2 14-doc documentation \n",
- "3 1244-sql sql \n",
- "4 1242-sql sql \n",
- "5 17-doc documentation \n",
- "6 16-doc documentation \n",
- "7 1243-sql sql \n",
- "8 1239-sql sql \n",
- "9 13-doc documentation \n",
- "10 1241-sql sql \n",
- "11 12-doc documentation \n",
- "12 18-doc documentation \n",
- "13 1248-sql sql \n",
- "14 1240-sql sql \n",
- "\n",
- " question \\\n",
- "0 None \n",
- "1 None \n",
- "2 None \n",
- "3 What are the names of the top 10 customers? \n",
- "4 What are the top 5 customers in terms of total... \n",
- "5 None \n",
- "6 None \n",
- "7 What are the top 10 customers with the highest... \n",
- "8 What are the top 100 customers based on their ... \n",
- "9 None \n",
- "10 What are the top 10 customers in terms of tota... \n",
- "11 None \n",
- "12 None \n",
- "13 How many customers are in each country? \n",
- "14 What is the number of orders placed each week? \n",
- "\n",
- " content \n",
- "0 This is a table in the PARTSUPP table.\\n\\nThe ... \n",
- "1 This is a table in the CUSTOMER table.\\n\\nThe ... \n",
- "2 This is a table in the ORDERS table.\\n\\nThe fo... \n",
- "3 SELECT c.c_name as customer_name\\nFROM snowf... \n",
- "4 SELECT c.c_name AS customer_name, SUM(l.l_quan... \n",
- "5 This is a table in the REGION table.\\n\\nThe fo... \n",
- "6 This is a table in the PART table.\\n\\nThe foll... \n",
- "7 SELECT c.c_name as customer_name,\\n sum(... \n",
- "8 SELECT c.c_name as customer_name,\\n sum(... \n",
- "9 This is a table in the SUPPLIER table.\\n\\nThe ... \n",
- "10 SELECT c.c_name as customer_name,\\n sum(... \n",
- "11 This is a table in the LINEITEM table.\\n\\nThe ... \n",
- "12 This is a table in the NATION table.\\n\\nThe fo... \n",
- "13 SELECT n.n_name as country,\\n count(*) a... \n",
- "14 SELECT date_trunc('week', o_orderdate) as week... "
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "vn.get_training_data()"
- ]
- },
- {
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Removing Training Data\n",
- "If you added some training data by mistake, you can remove it. Model performance is directly linked to the quality of the training data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "vn.remove_training_data(id='my-training-data-id')"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.11.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/pyproject.toml b/pyproject.toml
index 6c84fa76..e21937e1 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
[project]
name = "vanna"
-version = "0.1.1"
+version = "0.2.1"
authors = [
{ name="Zain Hoda", email="zain@vanna.ai" },
]
@@ -27,10 +27,11 @@ dependencies = [
[project.optional-dependencies]
postgres = ["psycopg2-binary", "db-dtypes"]
+mysql = ["PyMySQL"]
bigquery = ["google-cloud-bigquery"]
snowflake = ["snowflake-connector-python"]
duckdb = ["duckdb"]
-all = ["psycopg2-binary", "db-dtypes", "google-cloud-bigquery", "snowflake-connector-python", "duckdb", "openai", "mistralai"]
+all = ["psycopg2-binary", "db-dtypes", "PyMySQL", "google-cloud-bigquery", "snowflake-connector-python", "duckdb", "openai", "mistralai", "chromadb"]
test = ["tox"]
chromadb = ["chromadb"]
openai = ["openai"]
diff --git a/src/vanna/base/base.py b/src/vanna/base/base.py
index 7542c38b..0e9e9cb6 100644
--- a/src/vanna/base/base.py
+++ b/src/vanna/base/base.py
@@ -72,6 +72,7 @@ class VannaBase(ABC):
def __init__(self, config=None):
self.config = config
self.run_sql_is_set = False
+ self.static_documentation = ""
def log(self, message: str):
print(message)
@@ -102,10 +103,12 @@ def generate_sql(self, question: str, **kwargs) -> str:
Returns:
str: The SQL query that answers the question.
"""
+ initial_prompt = self.config.get("initial_prompt", None)
question_sql_list = self.get_similar_question_sql(question, **kwargs)
ddl_list = self.get_related_ddl(question, **kwargs)
doc_list = self.get_related_documentation(question, **kwargs)
prompt = self.get_sql_prompt(
+ initial_prompt=initial_prompt,
question=question,
question_sql_list=question_sql_list,
ddl_list=ddl_list,
@@ -140,18 +143,35 @@ def is_sql_valid(self, sql: str) -> bool:
else:
return False
- def generate_followup_questions(self, question: str, **kwargs) -> str:
- question_sql_list = self.get_similar_question_sql(question, **kwargs)
- ddl_list = self.get_related_ddl(question, **kwargs)
- doc_list = self.get_related_documentation(question, **kwargs)
- prompt = self.get_followup_questions_prompt(
- question=question,
- question_sql_list=question_sql_list,
- ddl_list=ddl_list,
- doc_list=doc_list,
- **kwargs,
- )
- llm_response = self.submit_prompt(prompt, **kwargs)
+ def generate_followup_questions(
+ self, question: str, sql: str, df: pd.DataFrame, **kwargs
+ ) -> list:
+ """
+ **Example:**
+ ```python
+ vn.generate_followup_questions("What are the top 10 customers by sales?", df)
+ ```
+
+ Generate a list of followup questions that you can ask Vanna.AI.
+
+ Args:
+ question (str): The question that was asked.
+ df (pd.DataFrame): The results of the SQL query.
+
+ Returns:
+ list: A list of followup questions that you can ask Vanna.AI.
+ """
+
+ message_log = [
+ self.system_message(
+ f"You are a helpful data assistant. The user asked the question: '{question}'\n\nThe SQL query for this question was: {sql}\n\nThe following is a pandas DataFrame with the results of the query: \n{df.to_markdown()}\n\n"
+ ),
+ self.user_message(
+ "Generate a list of followup questions that the user might ask about this data. Respond with a list of questions, one per line. Do not answer with any explanations -- just the questions. Remember that there should be an unambiguous SQL query that can be generated from the question. Prefer questions that are answerable outside of the context of this conversation. Prefer questions that are slight modifications of the SQL query that was generated that allow digging deeper into the data. Each question will be turned into a button that the user can click to generate a new SQL query so don't use 'example' type questions. Each question must have a one-to-one correspondence with an instantiated SQL query."
+ ),
+ ]
+
+ llm_response = self.submit_prompt(message_log, **kwargs)
numbers_removed = re.sub(r"^\d+\.\s*", "", llm_response, flags=re.MULTILINE)
return numbers_removed.split("\n")
@@ -169,6 +189,36 @@ def generate_questions(self, **kwargs) -> List[str]:
return [q["question"] for q in question_sql]
+ def generate_summary(self, question: str, df: pd.DataFrame, **kwargs) -> str:
+ """
+ **Example:**
+ ```python
+ vn.generate_summary("What are the top 10 customers by sales?", df)
+ ```
+
+ Generate a summary of the results of a SQL query.
+
+ Args:
+ question (str): The question that was asked.
+ df (pd.DataFrame): The results of the SQL query.
+
+ Returns:
+ str: The summary of the results of the SQL query.
+ """
+
+ message_log = [
+ self.system_message(
+ f"You are a helpful data assistant. The user asked the question: '{question}'\n\nThe following is a pandas DataFrame with the results of the query: \n{df.to_markdown()}\n\n"
+ ),
+ self.user_message(
+ "Briefly summarize the data based on the question that was asked. Do not respond with any additional explanation beyond the summary."
+ ),
+ ]
+
+ summary = self.submit_prompt(message_log, **kwargs)
+
+ return summary
+
# ----------------- Use Any Embeddings API ----------------- #
@abstractmethod
def generate_embedding(self, data: str, **kwargs) -> List[float]:
@@ -184,7 +234,7 @@ def get_similar_question_sql(self, question: str, **kwargs) -> list:
question (str): The question to get similar questions and their corresponding SQL statements for.
Returns:
- list: A list of similar questions and their corresponding SQL statements.
+ list: A list of similar questions and their corresponding SQL statements.
"""
pass
@@ -224,7 +274,7 @@ def add_question_sql(self, question: str, sql: str, **kwargs) -> str:
sql (str): The SQL query to add.
Returns:
- str: The ID of the training data that was added.
+ str: The ID of the training data that was added.
"""
pass
@@ -232,7 +282,7 @@ def add_question_sql(self, question: str, sql: str, **kwargs) -> str:
def add_ddl(self, ddl: str, **kwargs) -> str:
"""
This method is used to add a DDL statement to the training data.
-
+
Args:
ddl (str): The DDL statement to add.
@@ -265,7 +315,7 @@ def get_training_data(self, **kwargs) -> pd.DataFrame:
This method is used to get all the training data from the retrieval layer.
Returns:
- pd.DataFrame: The training data.
+ pd.DataFrame: The training data.
"""
pass
@@ -321,7 +371,10 @@ def add_ddl_to_prompt(
return initial_prompt
def add_documentation_to_prompt(
- self, initial_prompt: str, documentation_list: list[str], max_tokens: int = 14000
+ self,
+ initial_prompt: str,
+ documentation_list: list[str],
+ max_tokens: int = 14000,
) -> str:
if len(documentation_list) > 0:
initial_prompt += f"\nYou may use the following documentation as a reference for what tables might be available. Use responses to past questions also to guide you:\n\n"
@@ -354,6 +407,7 @@ def add_sql_to_prompt(
def get_sql_prompt(
self,
+ initial_prompt : str,
question: str,
question_sql_list: list,
ddl_list: list,
@@ -383,12 +437,17 @@ def get_sql_prompt(
Returns:
any: The prompt for the LLM to generate SQL.
"""
- initial_prompt = "The user provides a question and you provide SQL. You will only respond with SQL code and not with any explanations.\n\nRespond with only SQL code. Do not answer with any explanations -- just the code.\n"
+
+ if initial_prompt is None:
+ initial_prompt = "The user provides a question and you provide SQL. You will only respond with SQL code and not with any explanations.\n\nRespond with only SQL code. Do not answer with any explanations -- just the code.\n"
initial_prompt = self.add_ddl_to_prompt(
initial_prompt, ddl_list, max_tokens=14000
)
+ if self.static_documentation != "":
+ doc_list.append(self.static_documentation)
+
initial_prompt = self.add_documentation_to_prompt(
initial_prompt, doc_list, max_tokens=14000
)
@@ -599,6 +658,7 @@ def run_sql_snowflake(sql: str) -> pd.DataFrame:
return df
+ self.static_documentation = "This is a Snowflake database"
self.run_sql = run_sql_snowflake
self.run_sql_is_set = True
@@ -632,6 +692,7 @@ def connect_to_sqlite(self, url: str):
def run_sql_sqlite(sql: str):
return pd.read_sql_query(sql, conn)
+ self.static_documentation = "This is a SQLite database"
self.run_sql = run_sql_sqlite
self.run_sql_is_set = True
@@ -731,14 +792,100 @@ def run_sql_postgres(sql: str) -> Union[pd.DataFrame, None]:
except psycopg2.Error as e:
conn.rollback()
raise ValidationError(e)
-
+
except Exception as e:
conn.rollback()
raise e
+ self.static_documentation = "This is a Postgres database"
self.run_sql_is_set = True
self.run_sql = run_sql_postgres
+
+ def connect_to_mysql(
+ self,
+ host: str = None,
+ dbname: str = None,
+ user: str = None,
+ password: str = None,
+ port: int = None,
+ ):
+
+ try:
+ import pymysql.cursors
+ except ImportError:
+ raise DependencyError(
+ "You need to install required dependencies to execute this method,"
+ " run command: \npip install PyMySQL"
+ )
+
+ if not host:
+ host = os.getenv("HOST")
+
+ if not host:
+ raise ImproperlyConfigured("Please set your MySQL host")
+
+ if not dbname:
+ dbname = os.getenv("DATABASE")
+
+ if not dbname:
+ raise ImproperlyConfigured("Please set your MySQL database")
+
+ if not user:
+ user = os.getenv("USER")
+
+ if not user:
+ raise ImproperlyConfigured("Please set your MySQL user")
+
+ if not password:
+ password = os.getenv("PASSWORD")
+
+ if not password:
+ raise ImproperlyConfigured("Please set your MySQL password")
+
+ if not port:
+ port = os.getenv("PORT")
+
+ if not port:
+ raise ImproperlyConfigured("Please set your MySQL port")
+
+ conn = None
+
+ try:
+ conn = pymysql.connect(host=host,
+ user=user,
+ password=password,
+ database=dbname,
+ port=port,
+ cursorclass=pymysql.cursors.DictCursor)
+ except pymysql.Error as e:
+ raise ValidationError(e)
+
+ def run_sql_mysql(sql: str) -> Union[pd.DataFrame, None]:
+ if conn:
+ try:
+ cs = conn.cursor()
+ cs.execute(sql)
+ results = cs.fetchall()
+
+ # Create a pandas dataframe from the results
+ df = pd.DataFrame(
+ results, columns=[desc[0] for desc in cs.description]
+ )
+ return df
+
+ except pymysql.Error as e:
+ conn.rollback()
+ raise ValidationError(e)
+
+ except Exception as e:
+ conn.rollback()
+ raise e
+
+ self.run_sql_is_set = True
+ self.run_sql = run_sql_mysql
+
+
def connect_to_bigquery(self, cred_file_path: str = None, project_id: str = None):
"""
Connect to gcs using the bigquery connector. This is just a helper function to set [`vn.run_sql`][vanna.base.base.VannaBase.run_sql]
@@ -825,6 +972,7 @@ def run_sql_bigquery(sql: str) -> Union[pd.DataFrame, None]:
raise errors
return None
+ self.static_documentation = "This is a BigQuery database"
self.run_sql_is_set = True
self.run_sql = run_sql_bigquery
@@ -847,13 +995,13 @@ def connect_to_duckdb(self, url: str, init_sql: str = None):
" run command: \npip install vanna[duckdb]"
)
# URL of the database to download
- if url==":memory:" or url=="":
- path=":memory:"
+ if url == ":memory:" or url == "":
+ path = ":memory:"
else:
# Path to save the downloaded database
print(os.path.exists(url))
if os.path.exists(url):
- path=url
+ path = url
elif url.startswith("md") or url.startswith("motherduck"):
path = url
else:
@@ -873,6 +1021,7 @@ def connect_to_duckdb(self, url: str, init_sql: str = None):
def run_sql_duckdb(sql: str):
return conn.query(sql).to_df()
+ self.static_documentation = "This is a DuckDB database"
self.run_sql = run_sql_duckdb
self.run_sql_is_set = True
@@ -895,17 +1044,20 @@ def connect_to_mssql(self, odbc_conn_str: str):
)
try:
- from sqlalchemy.engine import URL
import sqlalchemy as sa
+ from sqlalchemy.engine import URL
except ImportError:
raise DependencyError(
"You need to install required dependencies to execute this method,"
" run command: pip install sqlalchemy"
)
- connection_url = URL.create("mssql+pyodbc", query={"odbc_connect": odbc_conn_str})
+ connection_url = URL.create(
+ "mssql+pyodbc", query={"odbc_connect": odbc_conn_str}
+ )
from sqlalchemy import create_engine
+
engine = create_engine(connection_url)
def run_sql_mssql(sql: str):
@@ -913,9 +1065,10 @@ def run_sql_mssql(sql: str):
with engine.begin() as conn:
df = pd.read_sql_query(sa.text(sql), conn)
return df
-
+
raise Exception("Couldn't run sql")
+ self.static_documentation = "This is a Microsoft SQL Server database"
self.run_sql = run_sql_mssql
self.run_sql_is_set = True
@@ -943,7 +1096,7 @@ def ask(
question: Union[str, None] = None,
print_results: bool = True,
auto_train: bool = True,
- visualize: bool = True, # if False, will not generate plotly code
+ visualize: bool = True, # if False, will not generate plotly code
) -> Union[
Tuple[
Union[str, None],
@@ -1024,7 +1177,9 @@ def ask(
display = __import__(
"IPython.display", fromlist=["display"]
).display
- Image = __import__("IPython.display", fromlist=["Image"]).Image
+ Image = __import__(
+ "IPython.display", fromlist=["Image"]
+ ).Image
img_bytes = fig.to_image(format="png", scale=2)
display(Image(img_bytes))
except Exception as e:
@@ -1377,4 +1532,3 @@ def get_plotly_figure(
fig.update_layout(template="plotly_dark")
return fig
-
diff --git a/src/vanna/chromadb/chromadb_vector.py b/src/vanna/chromadb/chromadb_vector.py
index 032cb0cc..81873c1d 100644
--- a/src/vanna/chromadb/chromadb_vector.py
+++ b/src/vanna/chromadb/chromadb_vector.py
@@ -20,10 +20,12 @@ def __init__(self, config=None):
path = config.get("path", ".")
self.embedding_function = config.get("embedding_function", default_ef)
curr_client = config.get("client", "persistent")
+ self.n_results = config.get("n_results", 10)
else:
path = "."
self.embedding_function = default_ef
curr_client = "persistent" # defaults to persistent storage
+ self.n_results = 10 # defaults to 10 documents
if curr_client == "persistent":
self.chroma_client = chromadb.PersistentClient(
@@ -229,6 +231,7 @@ def get_similar_question_sql(self, question: str, **kwargs) -> list:
return ChromaDB_VectorStore._extract_documents(
self.sql_collection.query(
query_texts=[question],
+ n_results=self.n_results,
)
)
diff --git a/src/vanna/flask.py b/src/vanna/flask/__init__.py
similarity index 83%
rename from src/vanna/flask.py
rename to src/vanna/flask/__init__.py
index dcf8e713..2a80e354 100644
--- a/src/vanna/flask.py
+++ b/src/vanna/flask/__init__.py
@@ -7,6 +7,8 @@
import requests
from flask import Flask, Response, jsonify, request
+from .assets import css_content, html_content, js_content
+
class Cache(ABC):
@abstractmethod
@@ -92,10 +94,11 @@ def decorated(*args, **kwargs):
return decorator
- def __init__(self, vn, cache: Cache = MemoryCache()):
+ def __init__(self, vn, cache: Cache = MemoryCache(), allow_llm_to_see_data=False):
self.flask_app = Flask(__name__)
self.vn = vn
self.cache = cache
+ self.allow_llm_to_see_data = allow_llm_to_see_data
log = logging.getLogger("werkzeug")
log.setLevel(logging.ERROR)
@@ -296,23 +299,55 @@ def add_training_data():
return jsonify({"type": "error", "error": str(e)})
@self.flask_app.route("/api/v0/generate_followup_questions", methods=["GET"])
- @self.requires_cache(["df", "question"])
- def generate_followup_questions(id: str, df, question):
- followup_questions = []
- # followup_questions = vn.generate_followup_questions(question=question, df=df)
- # if followup_questions is not None and len(followup_questions) > 5:
- # followup_questions = followup_questions[:5]
+ @self.requires_cache(["df", "question", "sql"])
+ def generate_followup_questions(id: str, df, question, sql):
+ if self.allow_llm_to_see_data:
+ followup_questions = vn.generate_followup_questions(
+ question=question, sql=sql, df=df
+ )
+ if followup_questions is not None and len(followup_questions) > 5:
+ followup_questions = followup_questions[:5]
- cache.set(id=id, field="followup_questions", value=followup_questions)
+ cache.set(id=id, field="followup_questions", value=followup_questions)
- return jsonify(
- {
- "type": "question_list",
- "id": id,
- "questions": followup_questions,
- "header": "Followup Questions can be enabled in a future version if you allow the LLM to 'see' your query results.",
- }
- )
+ return jsonify(
+ {
+ "type": "question_list",
+ "id": id,
+ "questions": followup_questions,
+ "header": "Here are some potential followup questions:",
+ }
+ )
+ else:
+ return jsonify(
+ {
+ "type": "question_list",
+ "id": id,
+ "questions": [],
+ "header": "Followup Questions can be enabled if you set allow_llm_to_see_data=True",
+ }
+ )
+
+ @self.flask_app.route("/api/v0/generate_summary", methods=["GET"])
+ @self.requires_cache(["df", "question"])
+ def generate_summary(id: str, df, question):
+ if self.allow_llm_to_see_data:
+ summary = vn.generate_summary(question=question, df=df)
+ return jsonify(
+ {
+ "type": "text",
+ "id": id,
+ "text": summary,
+ }
+ )
+ else:
+ return jsonify(
+ {
+ "type": "text",
+ "id": id,
+ "text": "Summarization can be enabled if you set allow_llm_to_see_data=True",
+ }
+ )
@self.flask_app.route("/api/v0/load_question", methods=["GET"])
@self.requires_cache(
@@ -352,25 +387,14 @@ def catch_all(catch_all):
@self.flask_app.route("/assets/")
def proxy_assets(filename):
- remote_url = f"https://vanna.ai/assets/{filename}"
- response = requests.get(remote_url, stream=True)
+ if ".css" in filename:
+ return Response(css_content, mimetype="text/css")
- # Check if the request to the remote URL was successful
- if response.status_code == 200:
- excluded_headers = [
- "content-encoding",
- "content-length",
- "transfer-encoding",
- "connection",
- ]
- headers = [
- (name, value)
- for (name, value) in response.raw.headers.items()
- if name.lower() not in excluded_headers
- ]
- return Response(response.content, response.status_code, headers)
- else:
- return "Error fetching file from remote server", response.status_code
+ if ".js" in filename:
+ return Response(js_content, mimetype="text/javascript")
+
+ # Return 404
+ return "File not found", 404
# Proxy the /vanna.svg file to the remote server
@self.flask_app.route("/vanna.svg")
@@ -398,24 +422,7 @@ def proxy_vanna_svg():
@self.flask_app.route("/", defaults={"path": ""})
@self.flask_app.route("/")
def hello(path: str):
- return """
-
-
-
-
-
-
-
-
- Vanna.AI
-
-
-
-
-
-
-
-"""
+ return html_content
def run(self):
try:
diff --git a/src/vanna/flask/assets.py b/src/vanna/flask/assets.py
new file mode 100644
index 00000000..a55503ed
--- /dev/null
+++ b/src/vanna/flask/assets.py
@@ -0,0 +1,36 @@
+html_content = """
+
+
+
+
+
+
+
+ Vanna.AI
+
+
+
+
+
+
+
+
+"""
+
+css_content = """.nav-title{font-family:Roboto Slab,serif}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-px{left:1px;right:1px}.bottom-0{bottom:0}.bottom-px{bottom:1px}.left-0{left:0}.top-0{top:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.m-3{margin:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-3{margin-right:.75rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[2\.375rem\]{height:2.375rem}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.min-h-\[15rem\]{min-height:15rem}.min-h-\[calc\(100\%-3\.5rem\)\]{min-height:calc(100% - 3.5rem)}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-\[2\.375rem\]{width:2.375rem}.w-\[3\.25rem\]{width:3.25rem}.w-full{width:100%}.w-px{width:1px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[85rem\]{max-width:85rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.-space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(-1px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(-1px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-md{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-\[3px\]{border-width:3px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.border-current{border-color:currentColor}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity))}.border-t-transparent{border-top-color:transparent}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-12{padding-bottom:3rem}.pl-7{padding-left:1.75rem}.pr-4{padding-right:1rem}.pr-9{padding-right:2.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity))}.opacity-0{opacity:0}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-transparent{--tw-ring-color: transparent}.ring-offset-white{--tw-ring-offset-color: #fff}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:h-6:before{content:var(--tw-content);height:1.5rem}.before\:w-6:before{content:var(--tw-content);width:1.5rem}.before\:translate-x-0:before{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:transform:before{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\:bg-white:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.before\:shadow:before{content:var(--tw-content);--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.before\:ring-0:before{content:var(--tw-content);--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.before\:transition:before{content:var(--tw-content);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.before\:duration-200:before{content:var(--tw-content);transition-duration:.2s}.before\:ease-in-out:before{content:var(--tw-content);transition-timing-function:cubic-bezier(.4,0,.2,1)}.first\:mt-0:first-child{margin-top:0}.first\:rounded-t-lg:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.last\:rounded-b-lg:last-child{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.checked\:bg-blue-600:checked{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.checked\:bg-none:checked{background-image:none}.checked\:before\:translate-x-full:checked:before{content:var(--tw-content);--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.checked\:before\:bg-blue-200:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.hover\:border-green-500:hover{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.hover\:border-red-500:hover{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.focus\:z-10:focus{z-index:10}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-blue-600:focus{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity))}.focus\:ring-gray-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity))}.focus\:ring-green-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(187 247 208 / var(--tw-ring-opacity))}.focus\:ring-red-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(254 202 202 / var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:ring-offset-white:focus{--tw-ring-offset-color: #fff}.open.hs-overlay-open\:mt-7{margin-top:1.75rem}.open.hs-overlay-open\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.open.hs-overlay-open\:opacity-100{opacity:1}.open.hs-overlay-open\:duration-500{transition-duration:.5s}.open .hs-overlay-open\:mt-7{margin-top:1.75rem}.open .hs-overlay-open\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.open .hs-overlay-open\:opacity-100{opacity:1}.open .hs-overlay-open\:duration-500{transition-duration:.5s}@media (prefers-color-scheme: dark){.dark\:divide-gray-700>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(55 65 81 / var(--tw-divide-opacity))}.dark\:border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.dark\:bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.dark\:bg-opacity-80{--tw-bg-opacity: .8}.dark\:text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.dark\:text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.dark\:text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.dark\:text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:shadow-slate-700\/\[\.7\]{--tw-shadow-color: rgb(51 65 85 / .7);--tw-shadow: var(--tw-shadow-colored)}.dark\:before\:bg-gray-400:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.dark\:checked\:border-blue-500:checked{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:checked\:bg-blue-500:checked{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.dark\:checked\:bg-blue-600:checked{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.dark\:checked\:before\:bg-blue-200:checked:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.dark\:hover\:border-blue-400:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity))}.dark\:hover\:bg-gray-900:hover{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.dark\:hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.dark\:hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.dark\:hover\:text-slate-300:hover{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.dark\:hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.dark\:focus\:ring-gray-700:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity))}.dark\:focus\:ring-offset-gray-800:focus{--tw-ring-offset-color: #1f2937}}@media (min-width: 640px){.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:mb-3{margin-bottom:.75rem}.sm\:mt-10{margin-top:2.5rem}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:p-4{padding:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:p-10{padding:2.5rem}.md\:p-5{padding:1.25rem}}@media (min-width: 1024px){.lg\:bottom-0{bottom:0}.lg\:right-auto{right:auto}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.lg\:pl-64{padding-left:16rem}}
+"""
+
+js_content = """var yr=Object.defineProperty;var br=(r,e,n)=>e in r?yr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n;var tn=(r,e,n)=>(br(r,typeof e!="symbol"?e+"":e,n),n);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))t(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&t(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function t(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();function se(){}function vr(r,e){for(const n in e)r[n]=e[n];return r}function rr(r){return r()}function xn(){return Object.create(null)}function ot(r){r.forEach(rr)}function pt(r){return typeof r=="function"}function xe(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}let Vt;function or(r,e){return r===e?!0:(Vt||(Vt=document.createElement("a")),Vt.href=e,r===Vt.href)}function _r(r){return Object.keys(r).length===0}function Gt(r,e,n,t){if(r){const o=ir(r,e,n,t);return r[0](o)}}function ir(r,e,n,t){return r[1]&&t?vr(n.ctx.slice(),r[1](t(e))):n.ctx}function Ut(r,e,n,t){if(r[2]&&t){const o=r[2](t(n));if(e.dirty===void 0)return o;if(typeof o=="object"){const i=[],s=Math.max(e.dirty.length,o.length);for(let l=0;l32){const e=[],n=r.ctx.length/32;for(let t=0;tr.removeEventListener(e,n,t)}function v(r,e,n){n==null?r.removeAttribute(e):r.getAttribute(e)!==n&&r.setAttribute(e,n)}function wr(r){let e;return{p(...n){e=n,e.forEach(t=>r.push(t))},r(){e.forEach(n=>r.splice(r.indexOf(n),1))}}}function kr(r){return Array.from(r.childNodes)}function Ve(r,e){e=""+e,r.data!==e&&(r.data=e)}function bt(r,e){r.value=e??""}let Dt;function qt(r){Dt=r}function xr(){if(!Dt)throw new Error("Function called outside component initialization");return Dt}function sr(r){xr().$$.on_mount.push(r)}const St=[],At=[];let Ot=[];const sn=[],$r=Promise.resolve();let ln=!1;function Sr(){ln||(ln=!0,$r.then(lr))}function an(r){Ot.push(r)}function nn(r){sn.push(r)}const rn=new Set;let $t=0;function lr(){if($t!==0)return;const r=Dt;do{try{for(;$tr.indexOf(t)===-1?e.push(t):n.push(t)),n.forEach(t=>t()),Ot=e}const zt=new Set;let yt;function Ne(){yt={r:0,c:[],p:yt}}function Qe(){yt.r||ot(yt.c),yt=yt.p}function M(r,e){r&&r.i&&(zt.delete(r),r.i(e))}function I(r,e,n,t){if(r&&r.o){if(zt.has(r))return;zt.add(r),yt.c.push(()=>{zt.delete(r),t&&(n&&r.d(1),t())}),r.o(e)}else t&&t()}function _e(r){return(r==null?void 0:r.length)!==void 0?r:Array.from(r)}function on(r,e,n){const t=r.$$.props[e];t!==void 0&&(r.$$.bound[t]=n,n(r.$$.ctx[t]))}function J(r){r&&r.c()}function F(r,e,n){const{fragment:t,after_update:o}=r.$$;t&&t.m(e,n),an(()=>{const i=r.$$.on_mount.map(rr).filter(pt);r.$$.on_destroy?r.$$.on_destroy.push(...i):ot(i),r.$$.on_mount=[]}),o.forEach(an)}function Y(r,e){const n=r.$$;n.fragment!==null&&(Lr(n.after_update),ot(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function Tr(r,e){r.$$.dirty[0]===-1&&(St.push(r),Sr(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<{const D=x.length?x[0]:k;return a.ctx&&o(a.ctx[g],a.ctx[g]=D)&&(!a.skip_bound&&a.bound[g]&&a.bound[g](D),d&&Tr(r,g)),k}):[],a.update(),d=!0,ot(a.before_update),a.fragment=t?t(a.ctx):!1,e.target){if(e.hydrate){const g=kr(e.target);a.fragment&&a.fragment.l(g),g.forEach(G)}else a.fragment&&a.fragment.c();e.intro&&M(r.$$.fragment),F(r,e.target,e.anchor),lr()}qt(c)}class Se{constructor(){tn(this,"$$");tn(this,"$$set")}$destroy(){Y(this,1),this.$destroy=se}$on(e,n){if(!pt(n))return se;const t=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return t.push(n),()=>{const o=t.indexOf(n);o!==-1&&t.splice(o,1)}}$set(e){this.$$set&&!_r(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Er="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Er);function $n(r,e,n){const t=r.slice();return t[4]=e[n],t[6]=n,t}function Sn(r){let e;return{c(){e=E("span"),e.innerHTML="",v(e,"class","inline")},m(n,t){U(n,e,t)},d(n){n&&G(e)}}}function On(r){let e,n=r[4]+"",t,o,i,s,l=r[6]{i{"text"in l&&n(2,t=l.text)},[i,o,t]}class Pr extends Se{constructor(e){super(),$e(this,e,jr,Cr,xe,{text:2})}}function Ln(r,e,n){const t=r.slice();return t[5]=e[n],t}function Tn(r){let e,n,t,o,i,s=r[5].question+"",l,c,a,d;function g(){return r[4](r[5])}return{c(){e=E("li"),n=E("button"),t=Pt("svg"),o=Pt("path"),i=Z(),l=we(s),c=Z(),v(o,"stroke-linecap","round"),v(o,"stroke-linejoin","round"),v(o,"d","M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 01.865-.501 48.172 48.172 0 003.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z"),v(t,"class","w-3.5 h-3.5"),v(t,"fill","none"),v(t,"stroke","currentColor"),v(t,"stroke-width","1.5"),v(t,"viewBox","0 0 24 24"),v(t,"xmlns","http://www.w3.org/2000/svg"),v(t,"aria-hidden","true"),v(n,"class","flex items-center text-left gap-x-3 py-2 px-3 text-sm text-slate-700 rounded-md hover:bg-gray-100 dark:hover:bg-gray-900 dark:text-slate-400 dark:hover:text-slate-300")},m(k,x){U(k,e,x),w(e,n),w(n,t),w(t,o),w(n,i),w(n,l),w(e,c),a||(d=je(n,"click",g),a=!0)},p(k,x){r=k,x&8&&s!==(s=r[5].question+"")&&Ve(l,s)},d(k){k&&G(e),a=!1,d()}}}function qr(r){let e,n,t,o,i,s,l,c,a,d,g,k,x,D,L,m,h=_e(r[3]),p=[];for(let _=0;_ ',o=Z(),i=E("div"),s=E("ul"),l=E("li"),c=E("button"),c.innerHTML=`
+ Training Data`,a=Z(),d=E("li"),g=E("button"),g.innerHTML=`
+ New question`,k=Z();for(let _=0;_