{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMnrocvQrI7IGW+1wl6Rw8Q"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Setup"],"metadata":{"id":"kaEwde8QnJ6d"}},{"cell_type":"code","execution_count":1,"metadata":{"id":"AF6ktX81li2b","executionInfo":{"status":"ok","timestamp":1745738612413,"user_tz":-120,"elapsed":1634,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"outputs":[],"source":["# Set OpenAI key in the environment\n","from google.colab import userdata\n","import os\n","\n","api_key = userdata.get('ai_agents_openai')\n","os.environ['OPENAI_API_KEY'] = api_key\n","\n","serper_api_key = userdata.get('serper_api')"]},{"cell_type":"code","source":["!pip install -q grandalf"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"odT8_pUlQ14t","executionInfo":{"status":"ok","timestamp":1745740862415,"user_tz":-120,"elapsed":3724,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"e25afc9c-63e9-4134-95d4-07a8ecd43ffb"},"execution_count":26,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/41.8 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.8/41.8 kB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h"]}]},{"cell_type":"code","source":["!pip install -q langchain-community langchain-openai langgraph"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"rYjlTW8_nUIh","executionInfo":{"status":"ok","timestamp":1745738639443,"user_tz":-120,"elapsed":27028,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"3b2cea5e-5f44-4c27-abea-707ff7789fcc"},"execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.5/43.5 kB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.5/2.5 MB\u001b[0m \u001b[31m24.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 kB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m148.2/148.2 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.3/42.3 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m47.3/47.3 kB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m10.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m223.6/223.6 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h"]}]},{"cell_type":"code","source":["from openai import OpenAI\n","\n","from langchain.prompts import ChatPromptTemplate\n","from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n","from langgraph.graph import START, StateGraph, END\n","\n","from IPython.display import Markdown, Image\n","from typing_extensions import TypedDict\n","\n","import json\n","import ast"],"metadata":{"id":"u2CZFQSbnLOw","executionInfo":{"status":"ok","timestamp":1745738646464,"user_tz":-120,"elapsed":7027,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["# create openAI client\n","client = OpenAI()"],"metadata":{"id":"tOciS7yonjZF","executionInfo":{"status":"ok","timestamp":1745738647033,"user_tz":-120,"elapsed":565,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["COMPANY = 'Beat81'\n","LOCATION = 'DE'\n","POSITION = 'Data Analytics Working Student'\n","BACKGROUND = [\n","    \"Former Senior Manager in Revenue Management and Analytics at Zalando\",\n","    \"Did Pro Bono at the UN\",\n","    \"Currently Founder of Data Heroes and Bitte\",\n","]\n","INTERVIEWER = \"Matthias Glöel\" # only works for high-profile people"],"metadata":{"id":"70YbGj0jn0n2","executionInfo":{"status":"ok","timestamp":1745738647045,"user_tz":-120,"elapsed":11,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["# Create a TypedDict Class to store information\n","class AgentState(TypedDict):\n","  # Initial Data\n","  company: str\n","  location: str # country, ISO Code\n","  position: str\n","  background: list\n","  interviewer: str\n","\n","  # Generated Content\n","  company_data: str\n","  interviewer_data: str\n","  questions: str\n","\n","  # App keys\n","  memory: list\n","\n"],"metadata":{"id":"SOWcnXPKWIPQ","executionInfo":{"status":"ok","timestamp":1745744855740,"user_tz":-120,"elapsed":22,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":67,"outputs":[]},{"cell_type":"markdown","source":["# Researching the company"],"metadata":{"id":"lyC88k1vattv"}},{"cell_type":"code","source":["# Researching about the company with OpenAI web search\n","def research_company(state):\n","  # Inputs for web search\n","  state['company'] = COMPANY\n","  state['location'] = LOCATION\n","\n","  print('---Researching Company---')\n","  # Call the responses API\n","  response = client.responses.create(\n","      model = \"gpt-4.1\",\n","      tools = [{\"type\": \"web_search_preview\",\n","              \"user_location\": {\n","                  \"type\": \"approximate\",\n","                  \"country\": state['location']\n","              }}],\n","      input = f\"Research about {state['company']}\"\n","  )\n","\n","  # Store the outcome\n","  state['company_data'] = response.output_text\n","\n","  # display(Markdown(state['company_data']))\n","  return state"],"metadata":{"id":"M4G6VyrEaxo7","executionInfo":{"status":"ok","timestamp":1745743061340,"user_tz":-120,"elapsed":2,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":32,"outputs":[]},{"cell_type":"code","source":["# Test the function\n","example_data = research_company({'company': COMPANY})\n","example_data['company_data']"],"metadata":{"id":"XluINZpRduZ5","executionInfo":{"status":"ok","timestamp":1745738656265,"user_tz":-120,"elapsed":9168,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"colab":{"base_uri":"https://localhost:8080/","height":179},"outputId":"4902164f-1648-4b94-a953-e3e75823e913"},"execution_count":8,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'BEAT81 ist ein Boutique-Fitnessanbieter, der sich auf hochintensives Intervalltraining (HIIT) spezialisiert hat. Das Unternehmen wurde 2018 von Tim Dettmann, einem ehemaligen Badmintonprofi, gegründet und hat seinen Hauptsitz in Berlin. ([tagesspiegel.de](https://www.tagesspiegel.de/berlin/berliner-wirtschaft/berliner-fitnessstudio-kette-beat81-kann-man-in-45-minuten-1000-kalorien-verbrennen-10975528.html?utm_source=openai))\\n\\n**Trainingskonzept:**\\nDie 45-minütigen Workouts von BEAT81 kombinieren Kraft- und Ausdauerübungen und sind darauf ausgelegt, die Teilnehmer mindestens 15 Minuten lang über 81 % ihrer maximalen Herzfrequenz zu bringen. Dies soll den sogenannten Nachbrenneffekt (EPOC) auslösen, bei dem der Stoffwechsel angeregt wird und nach dem Training zusätzliche Kalorien verbrannt werden. ([de.beat81.com](https://de.beat81.com/?utm_source=openai))\\n\\n**Standorte:**\\nBEAT81 betreibt derzeit 38 Studios in Deutschland, darunter in Städten wie Berlin, München, Köln, Düsseldorf und Hamburg. Die Expansion des Unternehmens schreitet voran, mit weiteren Standorten, die in den kommenden Monaten eröffnet werden sollen. ([partnernewsroom.urbansportsclub.com](https://partnernewsroom.urbansportsclub.com/urban-sports-club-beat81-kooperation/?utm_source=openai))\\n\\n**Mitgliedschaften:**\\nBEAT81 bietet flexible Mitgliedschaftsoptionen an, darunter Einzelworkouts, 5er- und 10er-Pakete sowie monatliche und jährliche Abonnements. Die Preise variieren je nach gewähltem Paket und Laufzeit. Zudem erhalten Studierende einen Rabatt von 20 % auf alle Mitgliedschaftsoptionen. ([de.beat81.com](https://de.beat81.com/membership?utm_source=openai))\\n\\n**Partnerschaften:**\\nIm September 2024 verlängerte BEAT81 seine Partnerschaft mit Urban Sports Club um weitere fünf Jahre. Diese Zusammenarbeit ermöglicht es Mitgliedern von Urban Sports Club, die BEAT81-Studios entsprechend ihrer Mitgliedschaft zu nutzen. Im Rahmen dieser Partnerschaft sind weitere Studioeröffnungen, unter anderem in Hamburg, geplant. ([partnernewsroom.urbansportsclub.com](https://partnernewsroom.urbansportsclub.com/urban-sports-club-beat81-kooperation/?utm_source=openai))\\n\\n**Technologieeinsatz:**\\nEin zentrales Element des BEAT81-Trainings ist die Echtzeit-Überwachung der Herzfrequenz. Teilnehmer tragen Sensoren, die ihre Herzfrequenz messen und die Daten auf Bildschirme im Studio übertragen. Dies ermöglicht es den Trainern, die Intensität des Trainings individuell anzupassen und die Teilnehmer zu motivieren. ([tagesspiegel.de](https://www.tagesspiegel.de/berlin/berliner-wirtschaft/berliner-fitnessstudio-kette-beat81-kann-man-in-45-minuten-1000-kalorien-verbrennen-10975528.html?utm_source=openai))\\n\\nBEAT81 kombiniert somit intensive Workouts mit moderner Technologie und flexiblen Mitgliedschaftsmodellen, um ein effektives und motivierendes Fitnesserlebnis zu bieten. '"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":8}]},{"cell_type":"markdown","source":["# Research Interviewer"],"metadata":{"id":"XymLHPJVdl_-"}},{"cell_type":"code","source":["# Build the function to research about the interviewer\n","def research_interviewer(state):\n","\n","  # Inputs for the web search\n","  state['company'] = COMPANY\n","  state['interviewer'] = INTERVIEWER\n","  state['location'] = LOCATION\n","  state['position'] = POSITION\n","\n","  print('---Researching Interviewer---')\n","  # Call the responses API\n","  response = client.responses.create(\n","      model = \"gpt-4.1\",\n","      tools = [{\"type\": \"web_search_preview\",\n","              \"user_location\": {\n","                  \"type\": \"approximate\",\n","                  \"country\": state['location']\n","              },\n","                \"search_context_size\": \"medium\", # balanced scope\n","                }],\n","      input = f\"Research about {state['interviewer']}, who works for {state['company']} located in {state['location']}\"\n","  )\n","\n","  # Update the AgentState\n","  state['interviewer_data'] = response.output_text\n","\n","  # display(Markdown(state['interviewer_data']))\n","  return state\n","\n"],"metadata":{"id":"l5omg0lld4ez","executionInfo":{"status":"ok","timestamp":1745743341829,"user_tz":-120,"elapsed":8,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":41,"outputs":[]},{"cell_type":"code","source":["# Test the research interviewer function\n","example_data_interviewer = research_interviewer(example_data)\n","example_data_interviewer['interviewer_data']"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":125},"id":"BoDu8ordJOTp","executionInfo":{"status":"ok","timestamp":1745738882911,"user_tz":-120,"elapsed":4457,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"932f32e2-d8c8-4c52-820b-6eb9c0471a30"},"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'Matthias Gloël ist als Analytics Engineer bei BEAT81 tätig, einem Unternehmen mit Sitz in Berlin, Deutschland. ([career.beat81.com](https://career.beat81.com/departments/engineering?utm_source=openai)) BEAT81 wurde 2017 gegründet und bietet hochintensive Gruppenfitness-Workouts an, die durch Herzfrequenztechnologie optimiert werden, um maximale Ergebnisse in kürzester Zeit zu erzielen. ([startup-atlas.de](https://www.startup-atlas.de/company/beat81?utm_source=openai)) Das Unternehmen hat Standorte in mehreren deutschen Städten, darunter Berlin, München und Köln. ([de.beat81.com](https://de.beat81.com/?utm_source=openai)) '"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":10}]},{"cell_type":"markdown","source":["# Generate Questions"],"metadata":{"id":"Zvcduv0tIzA5"}},{"cell_type":"code","source":["def generate_questions(state):\n","  state['background'] = BACKGROUND\n","  # Define system message for AI that generates questions\n","  developer_message = f\"\"\"\n","  You are an AI that generates Interview questions to help prepare the user.\n","  Data:\n","  Company name: {state['company']}\n","  Interviewer: {state['interviewer']}\n","  User background: {state['background']}\n","  Job position: {state['position']}\n","  company_report from web search: {state['company_data']}\n","  Interviewer report from web search: {state['interviewer_data']}\n","\n","  Output:\n","  1) 10 concise question in bullet form to mimic a job interview.\n","  2) Questions may touch upon the user's background, culture fit, job fit, or qualifications.\n","  \"\"\"\n","\n","  print('---Generating Questions---')\n","  response = client.responses.create(\n","      model = \"gpt-4.1\",\n","      input=[\n","          {\"role\": \"developer\", \"content\": developer_message}],)\n","  state['questions'] = response.output_text\n","\n","  return state"],"metadata":{"id":"G_cHb_FpIS-J","executionInfo":{"status":"ok","timestamp":1745743451740,"user_tz":-120,"elapsed":7,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":49,"outputs":[]},{"cell_type":"code","source":["# Test the generate questions function\n","example_data_questions = generate_questions({'interviewer_data': example_data_interviewer['interviewer_data'],\n","                                             'company': COMPANY,\n","                                             'background': BACKGROUND,\n","                                             'position': POSITION,\n","                                             'company_data': example_data['company_data'],\n","                                             'interviewer': INTERVIEWER})\n","display(Markdown(example_data_questions['questions']))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":306},"id":"X5GEd7I5NDG6","executionInfo":{"status":"ok","timestamp":1745740086896,"user_tz":-120,"elapsed":6110,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"932bb576-598c-4eaf-b2ab-3131b22236a8"},"execution_count":18,"outputs":[{"output_type":"stream","name":"stdout","text":["---Generating Question---\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Markdown object>"],"text/markdown":"1. Can you walk me through a project at Zalando where you used analytics to drive a measurable business outcome?  \n2. What motivated your shift from senior management roles to founding Data Heroes and Bitte?  \n3. How has your experience working pro bono at the UN influenced your approach to data analytics or teamwork?  \n4. At Beat81, much of our value comes from real-time data (e.g., heart rate sensors). What experience do you have working with real-time or streaming data?  \n5. As a working student in data analytics, you may need to collaborate with both technical and non-technical teams. Can you give an example of translating complex analysis to stakeholders with varying data literacy?  \n6. Beat81’s business model relies on innovative technology and rapid expansion. How would you prioritize analytics projects to support both user growth and operational excellence?  \n7. What tools or programming languages are you most comfortable with for data analysis, and how have you applied them in past projects?  \n8. How do you ensure data accuracy and reliability when working with datasets from multiple sources, such as membership platforms and fitness trackers?  \n9. How do you stay up to date with the latest trends and technologies in data analytics, and what recent advancement excites you most?  \n10. What draws you to Beat81’s mission and culture, and how do you see yourself contributing to our team?"},"metadata":{}}]},{"cell_type":"code","source":["# Build the function for the interviewer bot\n","def interview_bot(state):\n","  if not state.get('memory'):\n","    state['memory'] = []\n","\n","  developer_message = f\"\"\"\n","  You are an AI that helps prepare the user for a job interview.\n","  Data:\n","  Company name: {state['company']}\n","  position: {state['position']}\n","  User background: {state['background']}\n","\n","  You follow a pre-defined script.\n","  Ask the questions exactly as given, in order.\n","  After the answer of the user give actionable feedback tied to the role.\n","\n","  questions:\n","  {state['questions']}\n","\n","  Memory: {state['memory']}\n","  \"\"\"\n","\n","  print('---Interviewing---')\n","  response = client.responses.create(\n","      model = \"gpt-4.1\",\n","      input=[\n","          {\"role\": \"developer\", \"content\": developer_message}],)\n","\n","  question = response.output_text\n","  display(Markdown(question))\n","  state['memory'].append(question)\n","\n","  return state"],"metadata":{"id":"NvK938CaXjwR","executionInfo":{"status":"ok","timestamp":1745744960620,"user_tz":-120,"elapsed":4,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":74,"outputs":[]},{"cell_type":"code","source":["# Build function to get an answer from the user\n","def get_answer(state):\n","  print('Please provide your answer')\n","  print('\\n(Type \"quit\", \"exit\", \"stop\" or \"end\" to finish the practice)')\n","  user_input = input()\n","  state['memory'].append(f\"User: {user_input}\")\n","  state['terminate'] = user_input.lower().strip() in ['quit', 'exit', 'stop', 'end']\n","\n","  return state"],"metadata":{"id":"KSGXE9Mxc-oA","executionInfo":{"status":"ok","timestamp":1745744963932,"user_tz":-120,"elapsed":4,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":75,"outputs":[]},{"cell_type":"markdown","source":["## Routers"],"metadata":{"id":"vqToM8VlehO2"}},{"cell_type":"code","source":["# Function that decides to terminate the flow or not\n","def termination_router(state):\n","  return \"End\" if state.get('terminate') else \"Continue\""],"metadata":{"id":"ssvdODF6ehAF","executionInfo":{"status":"ok","timestamp":1745744965951,"user_tz":-120,"elapsed":2,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":76,"outputs":[]},{"cell_type":"markdown","source":["# Build Workflow"],"metadata":{"id":"2QTiZCw2PK0e"}},{"cell_type":"code","source":["# Initializint the StateGraph\n","workflow = StateGraph(AgentState)\n","\n","# Set the entry point for the workflow\n","workflow.set_entry_point('Research Company')\n","\n","# Define Nodes\n","workflow.add_node('Research Company', research_company)\n","workflow.add_node('Research Interviewer', research_interviewer)\n","workflow.add_node('Generate Questions', generate_questions)\n","workflow.add_node('Interview Bot', interview_bot)\n","workflow.add_node('Get Answer', get_answer)\n","\n","# Define Edges\n","workflow.add_edge('Research Company', 'Research Interviewer')\n","workflow.add_edge('Research Interviewer', 'Generate Questions')\n","workflow.add_edge('Generate Questions', 'Interview Bot')\n","workflow.add_edge('Interview Bot', 'Get Answer')\n","\n","# Add a contitional edge for get_answer to go back or end the flow\n","workflow.add_conditional_edges(\n","    \"Get Answer\",\n","    termination_router,\n","    {\n","        \"Continue\": \"Interview Bot\",\n","        \"End\": END\n","    }\n",")\n","\n","# Compile the workflow\n","app = workflow.compile()"],"metadata":{"id":"TYnCnT5LPMkp","executionInfo":{"status":"ok","timestamp":1745744967954,"user_tz":-120,"elapsed":58,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":77,"outputs":[]},{"cell_type":"code","source":["# Display the Graph\n","display(Image(app.get_graph().draw_mermaid_png()))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":671},"id":"JTQSaVITQYhB","executionInfo":{"status":"ok","timestamp":1745744970818,"user_tz":-120,"elapsed":150,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"45a9d275-6a89-44b0-a883-afd721faffc3"},"execution_count":78,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAMUAAAKOCAIAAACZWkohAAAQAElEQVR4nOydB1wUx9vHh3b03puCWFBBBLHFil2j2KOxt9jb364x9hI1GnvsvXdj7z2xNxAriNIRkN4P3p+sufAKHGecA457vh8+x+7s7O7s7G+e55nZpp6dnc0IghPqjCD4QXoieEJ6InhCeiJ4QnoieEJ6InhSevQUHpiWFJ+ZHJ+ZmZmdnpLFSjya2qpq6iq6Buo6BupWDpqsVKCi2ONP2czvTvzbZ0lvfZMcquqqqjGcHmMLUVqKmJV4RNpqsRHpaAPZWeytX1K5qroOLrpVahswRUaB9fToSuyDCzHlqulBSeVcdJkKU1xwEtAk0DD8nybWamFSvbERU0wUUk9hAamntoQ519Sv522mosgyyktWFvvrz6iXDxLaDLC2dtRiiobi6cnnZtybJ4mt+lpp66mxUkpygvh0ToNx+c6QKRQKpqdXDxLC3qY26mLOlIArByLtK+iUd9djioMi6en26ejkhKwm3ZRCTAKX9kbqG6vXamXCFARVpiC8eZwYG5mhVGICTX+0iApNC3iaxBQExdDTx8gM6KlVPyumfCAwR3geF5XBFAHF0NPNYx8qK/jAzLfgXEv/xrEopggogJ5C/VMy0rLKVtZhyopjVd3UJDE6IqzEowB68ruTUL+DBVNuGnQw97sdx0o8JV1PyfHi9y+SLOxFrAjZv3//rFmz2NfTrFmz0NBQJgcsy2pi9BxWipVsSrqeUImOuJZStPj5+bGvJyQkJDY2lskNRxe9AN+S3tEr6eNPl/ZFVvLQt6uozeTAw4cP165d+/r1a1RCxYoVR44cWb169YEDBz558kTIsHv37kqVKp09e3bHjh1BQUEikcjNzW3cuHF2dnZYOmHCBA0NjbJly+7atatfv37r1q0T1mrUqNHSpUsZb96/SPZ/kuRVskdMSrp9QjCuZyyXm2pSUlLGjh1bvnz5bTlgYtSoUYmJiStWrHB2dm7RosXFixeR+PTp0+nTpzdp0mTv3r1r1qxJTk6eMmWKsAWI6c2bN5Dj6tWrO3bsuHDhQiRCW3PmzGFyAAOboW+TWcmmpN//lJyQqWsgl+t04eHhEEebNm0cHR1ZjrFp1aqVurq6lpYWfmGKjIw+XeR3cnKClYKw1NQ+FaNbt24TJ06Mi4szNDRECozWli1b9PX1sUhX95NfNjAwECa4o6OvjmiSlWxKtJ4y07Ozs5iGplyMaJkcpk2b1qVLl/r160MxcHZ5s0EcMELLli0LDg5OTU3NzMxEYnx8PPSECTg7QUxFgKaOakZ6VpY4W1Wt5N5TUaL9XVYWKlFeNxHAumzatKl58+bHjh3r3r17hw4dLly4kDfb4cOHZ86cCamtXLlyz549kydPzr1UT69IL9Zq6ahll2wLVaL1JNJSSUsWw0ox+WBiYjJmzBjo6dChQ1DM1KlTX7169UUeBOOenp7Dhg2D47O0tBTsU7GQnpqVkZ6tJirRN3yV9Hhcx0ANIRSTA/BfV69eFaYdHBzg+FRUVPLqKSMjQwikBCAv9ul2ymLoFCcniOUUSnKkpOvJ1kknKV4uDxdg4HHSpEk7d+4MDAx89+4dwmp4QFdXVyxCSPQyB4wnubi43L1719fXF/nnz59vZfXpmjQGqNLS0r7YICJx/N66dSsgIIDJAQTjNk5yGTfhiNp/GwguMuJjMsLfpsrj4p2tra21tTXCo61btx4/fhzDBxgIEPSEWPvkyZNHjhxxd3dv2bIlhLVhw4YzZ87UqlUL/hEjCPv27YP7gxAxvtC+fXthg6amptAZXKe/v3/btm0Zbx5e+WhqpWlZtkTfBFzSxzPjozOO/RHSZ7oDU3q2zQ7sPNpO37hEd8lLur8zMNWwsNeKjVCMu3/kR0xYurWjdgkXE1OI5zkreuj/dTKqzUDrgjLgCglcTN50sfhT31oYh8wLPJqcevs+Pj4Yas93EYpUUHnA5cuXVVXzb+GoAYV4NkEx7h8/uDy4QQczK4f8Q4cPHz6gF5Y3PT0d46HZmpr5P3qLyLqgk/eNYL9RUVEFLcLge0H7tbGxyTc9LCAVeoKzYyUexdATQnK/u/FNuinpXVCX9kbCOFmWVYBn0hXjfl8rRy0TK9GNo4pxzytfrh3+YG6nqRBiYgr0fEv1RkYYIL5//iNTJu6ejcnKzK7WQGGe6lSw5znvnf+ooso8mxkzJeDe+RhVVZUaCnWwCmOfBGq2MMYVvYt7Ilhp5/zOCFy4VCwxMQV9H8bL+wlXDkR+185MgRyB7Dy5HvvXieim3S0q1iiiO2E4oqjv60HbvXUiKvhVSsUaeo5V9cxsi/SBBXkQFZL29lnSi7sJZavo1GtnpqahkC+OUez3iSXGin3/ig18lpSanOVQRVdd9Ol1bxhSz0xXgPfTaYhUY6PScZU3MyM70C9JS0fV0UUP4wK6hgr83hgFfz/dPyR8zIwITE2My0yKz1RhKvhlXLl69Wrjxo0ZVyD9bJaNXz0jdQzV4pcpPqVET/LG09Pz/v37jCgMer8vwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0pNMWFgo+wcdZYT0JBORkZGMkAHSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRN6n700atSokTfxwYMHjCgABfteWRFja2ur8v9BCiMKhvQkjapVq+a235iuXLkyIwqG9CSNH374Ifc3x62trXv06MGIgiE9ScPd3d3Z2VmYhnGqVq2am5sbIwqG9FQIPXv2NDU1ZTmPuHTv3p0RUiE9FUL16tWFKAq/sE+MkMpXjz/FRWVEhaSlJImZ0tCizsDEUONmtTr5/hXHlAZtXXUzW5GhmcZXrfUV40/ijOxTW8I/RqZbOWirqCrk120J2ckWZ4cHphhbir4faKWmLuvpllVPaSlZx/8IdW9qCjExQmkIe5vy5Ep0+2G2Ii2ZJCVr/HRkVXDt781JTMqGtaN2zVbmR9cEy5hfJj35P040s9M2sdJkhPJhaqNpbKkZ4JMkS2aZ9BQZnKZrQFeOlRcdA/XIoDRZcsqkp9SkLD3jr4vzidKEnpFGaqJMPXqZrE5mRhaifUYoK9lZ2ZkZMgmAvBjBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRN56ald+8aJiYmSWS0tLXu7su3adf6+TQdV1ZJ40/qp08d+Wzrvwrnb6uqF10lqaurBQ7uvXrsQEhIk0hDZ2Zdt1bJd2+87lsxDK0rkaJ8aN2rm7d1FmE5OSrp7769lvy9ISIjv8WM/psjEJ8SPHz80OOS9d7suffsMTk1Juf/wzvIVvz58eHfmjF9VVJT6Tmg56snCwsq9uqdktl69RsnJSbv3bPmhay9ZbECJZc3apUHB71au2FyxwudH81q0+L66W40lv829eu2iV+PmTIkp0vNa2dnl4qWziYkJRkbGmH3+3HfzlrWvXr/IyhK7V685csQES0srpEdEhK/9Y9mTpw9TUpKtrW27dukJLyls4fz5U4eP7H0fFKijo9vEq+XAAcPhSZEuFou379hw6dLZqOgPhoZG9es1HvzTaGGRd3uvfn2H3Ln31+PH9w8fPK+np+fn5/PH+uWvX79AzsaNmmMjIpFI2P7794FLf5+PRQYGhj8NHNmyZdsvDiE29iP20qVzD4mYBNq0bl/G3qFKFVdhFt7zwMFdoaHBKGetmnWHDhlramqG9BkzJ6qpqVWu7HLk6D5syt295pTJs3fs3Hj16oXMzMxmzVqPGjEB2fYf2Lln77afp81DPUREhJmamPXrN7RZ01bSj1TYOLaJXcfERKE8o0dPrlLZZeOm1SdOHD508JzkMA8f3nvvwe1fF6xgvClSf49mjSPHqcJ0aFjI+InD1DU0Vq3YvGzp+viEuAmThmdkZGDRosWzPsbG/Lpw5ZbNBzp26Pb78oUPH91DOlr/wkUza9asi3SchmvXLy5f+auwZZwA/A0dOnbrloOTJ826fuPylq1/CIuwixOnjlQoX2n5sg3Ye0hoMHaEul7++8ZRIyaePXdi/caVn3Oqq69avaR3z4FrV2+HZV2ydG50dNQXh/Ds2VOcUU/POnmPzsXFTYifzp07uXTZ/NatvLdvOzxvzlI0mGk/jxWe+8AZffzkQVxc7M7tR7GXe/f+HjGyn6OD08H9Z6ZOmXPkyL77D+7klEQDre7Qod1Ll/xx/OhlL68WC3+dERwSJP1IsXE0wpcv/db/sevIoQv6+gaLl8xGeps2HRISE/6+fUNS1Gs3LrlUlcuDznLUE2ow8x8Qc1y4cPr0meNt/onHjx8/iMaEJli2rCPa+tTJc4KD39+4eQWL3gb6165Vz7lSFVsbu/beXVat3FLOsTzS9+7d5ubmMWjgCGsrm5qedWA/cOaEU46Tt2Hd7gb1vWysbWt41GrUqNmDh3eEYmAvWppaWAtWAYpBS9XU1Br3v2nYfv36jUcMGyfOzBRyopzduvWpU6d++fIV+/YdAt28evX8i4OCVWCfXmQg7S0rBw/vhtno3q0PCuPqWh12F5KCMf60TEUFm+3fb6iGhka5cuVxXJqamkIgX6d2PX09fX//Vzm5VLKysnr3GgSrBpX06f0Tsl2+fE76kWK1tLTUUSMn6urqouU0adLy3bu36DqgGtE8Llw8LeRCjfn6PkGzZHJAjv4OPSD8SWZxhG3bdho2ZKww+/yFL9wfalCYtbKyxmGjNpt4tahbp8Gu3Zvj4+MwgUZf2bkqyznZr9+8hG+SbNDN7dPLmfwDXqPStbV1Tpw8cuvWVZxv5ES1onVKckJJkmlIpFKlKhCZMIvQB3+SpZJWKxjRxKTELw5KCLc11Au8+xl7Dwh406L5v9vEYeL3jf8rwRva2ZWRhI86urpGhsaSnJhNyrXHCv+4VIjP1sYePQBMSz9SO9sygu8DQjo6QEhBM4bVh12Ei4RJMzMz/8Jf80KOekI00LnTj8I0DC+CACE4EEBsjlbSotW/rQTOLjrmk7H539ip5Z0qoj0hDkCldOzwAxpoSmoKDN7WbesQPeTeS0zOKkt+m3P7zs0xoybjnIlEmnv2br311zVJHl1dPck0TpgQveWL5GR87qbleTjRwtwSvzi1FhaW+W5BKCfOuiRFW/vTQ2aIBYVZSRAjAHecezb345CSwnya1taGByz0SEWaXz6DJGywYYMmK1ctvnzlPCrz+vVLkLuc+qFy1JOJsSl8ijANIzxu/NALF880b9ZaSNHT03er5gHp5F4F0SvLaY6dOnXHHyLWM2f/RMxuaGCEoQc4BcTmMPi5VzE2MUUzvXb9EjQnsTQ4qQWVCg0UTZb9VypXcYV1OXXqqId7zS8W7d23vU7t+vb2ZVHOzdAn1AAAEABJREFU3GYmKfnTk0a5NS0jKSkpghZZTvOzsbH7qiPNDUTcvHmby1fONWrY9KnPo/HjfmbyoYjicfhvdKTRW4n/51w6V6oaEhqEOipTxkH4Q4sxMTFF5AjZZebENDAkP3bv6+xcFZ4OZxEmOjIyXJLfysoGjRseU5wDhCJsOSkp6e+/bxT03DOcCFxtWtrnp3+g11FjBiJYYbJhaGDYskXbK1cvCIGzBERyGzauQuSHcsK4ImyXLPLLma70T9OSnSdPPr9YMTk5GR1PDAh/1ZF+wfetO6BU6B3DsMHnMvlQdP27YUP/l5qasmHD585U+/ZdYcB/XTwLWkEkvn3Hxv4Df0DcikXLVyz8bdk8TKMPeOnyOQRVCMOR3r17X3Tx0JEOCnqHpQsW/jJ6zEA0YsSqTk4Vzp0/ifxv3rya+vOYunUbIFbAZlH7XxSjvXdXJM5fMB3eFuE/RICu31eNa6Pzj1WmTB2NjifKA/XPX/jLoiWzYVAR/CFD16694IMQO4aHhz16fH/Vmt9gzLAK+xqgyz37tvn4PIaSli1fgBTE1191pF+A8B8tE31DDOUzuVF040/m5hbosGAsBO0bvR700X5ftgHygiYQHTs4OC2Yv1zwj78tXots48YPgZWCERrQf5hQBbDV6FTv3bcNURTch6tL9d+Xrhc8wqSJM5cundd/QFfk/2nQyIoVKvv6PB4yrNeWTQe+KAbinsW/rsb4E0YrEHQ3b9Ymd4wvCxjBWrF806HDe65cPY9TiyDGwaHcjF8W4nqAkAEDRQiTEfxBrCgn+npD/+mFfBWDBoxA0BP4LgBB29w5S21yOpWyH2le0Ct8+/ZNo4bNmNyQ6X0YF3ZFWJTRKeemz4gi4cjR/RiFv3ThLuMHTvSIUf0RM4wdM4V9JW8exUeHpDbraVFoTrq/oPSDISjEnYicgoIC58xawuQJ6an0ExDweuToAXDKC+Ytx8gTkyfk74jCIX9HFA+kJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6Qngicy6UnHQC2LXu+r1KjoGqrJkk+m+8iMzEUfgmS6r5QolUS8TzEyl+kF9DLpqUJ1vaiQVEYoKzj75avLdDeATHoSaavW8za7vCeUEcrHpT1hDTuZa2jK9DzMV3z/LvhVyqV9EY6u+uZ22uoi+v5dKScjLQtmyf9xQovelrblZf2u2FfoCaQkZfneio39kJEQk8mUieCgIDt7e6ZM6BtrGFtquHxnqKX7FQ9rfJ2elBZPT8/79+8zojBo/IngCemJ4AnpieAJ6YngCemJ4AnpieAJ6YngCemJ4AnpieAJ6YngCemJ4AnpieAJ6YngCemJ4AnpieAJ6YngCemJ4AnpieAJ6YngCemJ4AnpieAJ6YngCemJ4AnpSSacnJwYIQOkJ5nw9/dnhAyQngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ7Q++yl0bp1aw0NDVRRSEiIjY2NqqpqZmbm6dOnGVEAZJ+kERERAQ1hAr/h4eGYoOYnna/4NIcSUqdOndwCwnStWrUYUTCkJ2n07NnTyMhIMmtoaNivXz9GFAzpSRr16tWrUKGCZLZy5cq1a9dmRMGQngqhb9++MEuYMDAw6NOnDyOkQnoqhLp16womytnZmYxToRTev8vKZFGhackJyvUBxdx0bDE4KVKnfbNegc+SmLKiY6Buaq2pVpheChl/unEs6sW9eAMTkZaOTJ9LJ0orKYmZiXGZzjX167c3k5JNmp7Obo8wstCs+p0RI4gcfG/GJsSktehtWVCGAvV0YXeEkaWWc01DRhC58Lsdl/gxrWl3i3yX5h+PR7xPy0jLJjERealSxzA1KetDcFq+S/PXU3RYmpo6df2I/FFVV4kOS893Uf7xelKc2MhCxAgiP4wtRIlxGfkuyl9PWeLsjAy68EnkD2IhVZX8F9H9BQRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET7jdRDB9xnivpp6Sv+Yt6/Tp13nd+hWJiYmsRHLq9DGUMzOz8PuYh4/sN2nySFa0vH7zEsXz8/NhCgVP+2RnV2bc/6YJ0xkZGa9ePd+7b9vbQP9FC1cyJSAg4M206WP37TnJeGBhbjl2zBRra1umUPDUk462jnt1T8lsrZp1jYyMly6b7/fct0plF1baefnKj/HD0NCovXcXpmjIN36q7PxJRpGR4YKenj/33bxl7avXL7KyxO7Va44cMcHS0orlGLP1G1beuHn548cYSNCrcYufBo1UV1eXsopYLN6+Y8OlS2ejoj+g6uvXazz4p9FaWlpY9MuMCRoaGvb2ZQ8c3DVj+sK6dRvAa/yxfvnr1y+Qs3Gj5gMHDBeJPt/d9f594NLf52ORgYHhTwNHtmzZVvoRzZg5UU1Nzd29JjYeExNVxt5h9OjJODoUctfuLcgAJzVi+LgunXsUVPIjR/bt2rNl/P9+XrJ0rpdXi1OnjqI83X7oLWwfVdGpS/NOHbvXr+81eEjPNau2VqniivTz508dPrL3fVCgjo5uE6+WWAUHO3/hL3GxHxcvWi2siwAjOTnp0IGzwuzMWZMyxZnz5y6Ljo5at375U59HcXGx5cpVGDxoVPXqNdinjxy9HjT4xwXzfl+3YYWjg9OsmYvYNyPfmzCDgt/h19LiUz2GhoWMnzhMXUNj1YrNy5auj0+ImzBpOKoPi/bs3Xb5yrmJE2Zs3XJw3NhpmN65a5P0VfYf2Im/oUPHYpXJk2Zdv3F5y9Y/hJ1CTAFv3/gHvF786+oqVauFhAZjLZz45b9vHDVi4tlzJ9Zv/Ox/IdlVq5f07jlw7ertsKw4wah66UcEIT55+vDlS7/1f+w6cuiCvr7B4iWzkd6zx4BOnbpbWFgeO3KxXdvOUkqupq6elpZ67PiBqVPmdOvau2bNujduXpFs/8GDO4g4oZjcO7167eLCRTORc8vmA1Mmz752/eLylb8i3dOj9jO/p2hamI6Jif7wIQK7wPEKa0FANTxqY+mkKSPhIn6eOm/Thr3OzlUnTx317t1boaLwu2Pnxh7d+w0axCdA5KynzH9ITU198uThxo2rnJwq4Biw6Pjxg2jZP0+bV7asY8UKzlMnzwkOfi9UZWCgf3mnip41atva2NWpU3/pkj+aN/9e+iqtW3lvWLe7QX0vG2vbGh61GjVq9uDhnc+HpKYWEhIEkbm6Vjc0MDxx4rCmphYCO+dKVerXbzxi2DjxPzE4ytmtWx/ssXz5in37DkHVI+Yr5AhVVKCGUSMn6urqwkI0adIS5wYHi2lNkaaKigpMoKamppSSQ8TJycmdO/1Yu9Z3VlbWMMbPnj2V6Pja9UuoCqyVe597925zc/MYNHCEtZVNTc86sKPnzp3EKjCT2BRaDvI8fvKgQgXnCuUr+fo8Zjl2Nzb2I6r07t2/ENhNGD+9WjV3BLgjh483N7c8cnSfUFH4dXOrAatsZ2vPeMBTT7Dt6NYJf62/r/+/8UPKlHX8dcFK1DKWPn/hC/enr6cvZEZVQj3+/q8wXbdOg3v3b8+dNw01jtZZpoyDcHhSVtHW1kHVDxnaq3PXlu07NoXXiI+Pk5QEzk6yFiRSqVIVNbXPzw+2aPE94lxJTpeqbsIE/B1+E5MK743a2ZYRHCuAfcJvQkL8F3mklFyg8j8BZb3vGmFrt/66xnL0/dff15s2bZV7U0hEX6+mZ11JChSAX8gI5hASEQT09OlD7NHV1R1mCbMwoliKmnzx8hnsUPWcVVjOi4fcqnlgg3lLwgWe8RNKDxsuTMOe37lzC7MGOTUO4Np9fZ+0aPVvvcA4R8d8apc4x7q6en+eODRv/s9ZWVmNGjaFAUBDl7LKkt/m3L5zc8yoyQgvRCLNPXu3CqdEAFuTTCclJSImK6jMEmUIomcyvN5JpKn5RUreZ86klPyLEmpra9epXf/mzSve7To/enwfrQIWK/emUlJTsP2t29YhXsydHpOzNdhmH9/HcLWwTwiMNLW0lq84w3L0BGfHcloIdt2y9XeSFWGGzc0t8paECzz1pKWpBZ8iTA8b+r+//76xYcNKWFohRU9PHy3jf2On5l4F0aUwUa9eI/zBcUAliGl+Wzpv7pzfCloFTRbGqU/vnyBEIRGVXlCpoMu89kPeSD/YL2jcuDkaUkJiwo0bl+GjhbBdgraWNoxK1y494eJzpxubmOIXLg/VBdcGB+fiWl1dTT0sLATdGl/fxz8NGoUMsJFoM4j2cq+rqiavp73lFY8jcBnQfxjGDH1yrDFwrlQ1JDTIxsYOZkz4g0kwMTFF47t562pYeCjLsRaNGzVDxQmuoaBVxDlAKMKWk5KSoN2CHkxFVAHvk5b2+XmxM2f/HDVmIKwgkycFlTzfzLBPCPPv3fsbvYqmTVp9sRTxFiIw9JElm7KyskGkLzjT6tU9EYmfO3/S0dEJrkBHR8epXIXzF05FRITDdAklQStlOd5D+NMQiczNLJh8kGP/rl3bTqgI9MaFMej27bsmJib8ungWnDeC0+07NvYf+ANCLlQ0+t5z5k59/PgBVIVfVGs1Nw8pqyDgRZiPSkQ36s2bV1N/HoNBAXSGkUfo7OSmvXdXJM5fMB0OCPHZho2rELQKbzHkC2wSTi3aT3h4WEElz3dFHE7dug3hsuGa0ZzyZujevS+6eOgFBwW9w0YWLPxl9JiBKSmfTDLaLQ4H8XU1V3chM6zU0WP7kSh4eU/POgjwcfhC9V68dHbw4B4nTh5m8kGOesI5Gz1qEro/e/dtxyz6Jr8v2/AxJhp1MXR473v3/14wf7ngH2fNWIRwddacyX36dvp18Uz0StCxl77KpIkz0U3rP6Dr3PnTfujaa2D/4RhQHjKsV1TUhy+KgbAUAwcYpkIHfuWqxc2btRkyeAyTAzAtGM4eN2HombPHpZQ8/3W9WmI0COdeYnRzg4ASkeily2cHDOqGKz9oHr8vXY/AS1gKlxcZGVGtmocwix4GjJOHx+f3MsK8YYCqrEO5mbMn9evfBQMxffsOxvAYkw/5v7/gzpkYjJW4NTJhBJGHx1diNLVYrVb5yIPuLyB4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4kr+etLTVshm935fIHw2RqpZu/i/4zf/+J0Nz9Yh3yYwg8iMsMNnQTCPfRfnryb6STmqimBFEHrKzWEZqln1F7XyX5q8nNXWVuu3Mzu8IZQTx/7mwM/S7dqaqavn7O2nfKwsLTD29OaxaIxNjC5GWLkXuSk1KYmbch4zHV6LbDbaxLKtZULZCvqeYHC9+dCU2Mig1MV55v88J4uJi872zW3nQ1Ve3LKPp0dRYW0/as1aF6IkQ8PT0vH//PiMKg7wYwRPSE8ET0hPBE9ITwRPSE8ET0hPBE3NAbBQAABAASURBVNITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0pNMuLq6MkIGSE8y4ePjwwgZID0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8offZS6Nly5aqqqoqKirh4eHm5uaYRnWdPXuWEQVA9kkaUVFREBMmoKTo6GhMUPOTjiojCsbDwyO3gDDt6enJiIIhPUmjZ8+eRkb/fgbI2Ni4e/fujCgY0pM0Gjdu7OjoKJl1cnLy8vJiRMGQngoBJsrQ0BAT+MU0I6RCeioEGCTBRJUrV65hw4aMkMpX9u+yWVJcZlKCcn1auNP3/T+Gb+7cdkBkUBpTJnQN1HUN1JjKV6zyFeNPDy599LkZp6KqItIkq6YUpCaLVdVUqtU3dPeS9duksurp6qGorCxWrYGxpo4aI5SGtGTx0+sfNUSsQUczWfLLpKerhz6oi9TdGhkzQil5dDmGZWc17FS4pAr3XAgaUhKzSEzKjHsTk8Q4cVRIeqE5C9dTdGgaYiZGKDe47BQVVnh3pPD+XVJ8pqm1JiOUG1MbreTYzEKzFa6njDREWFmMUG7SU8VZMgwu0f0FBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRPSE8ET0hPBE9ITwRP5KWn7OzsixfPnD5z/M2blympKYaGRjU963bv1sfBoRxTWHBQ58+fOn32eEDA67S0NHNzyzp16vfo3s/UVKZ7zb6F129eDh7Sc82qrVWqlOgvf8jlzl3U+/yFvyz4dYaZmfno0ZNnzvi1c6cffXweDR/Z18fnMStuAgLedO/Rln0lWVlZc+ZOXbRktoWF1ZjRU2ZMX9iyRdsrV84PHtrz3bu3TA7kLqeFueXYMVOsrW1ZyUYu9unU6WOXLp2dPGlmq5btJIne7bqMGjNg565NixetZsXKy1d+7Os5dvzg1WsXp06e3aLF90JK/fqN237fEY1kzrypmzbsFZ5M50jucsLAt/fuwko8ctHTocN7XF2r5xYT0NPTW7Nqm46OjiTl+XPfzVvWvnr9IitL7F695sgREywtrZA+Y+ZENTU1d/eaBw7uiomJKmPvACNXpbKLsBY8zuEje98HBero6DbxajlwwHAtLS2ke7f36td3yJ17fz1+fP/wwfPY3cVLZ/fv3xESGqShIXJxcRs+bJytjR32uGv3FuT3auo5Yvi4Lp17REdHrVu//KnPo7i42HLlKgweNKp69Rp5D+rIkb3OzlUlYhIwMTHt1XPg0mXz7z+4U9Ozzp6929Bgzpy6KSwNCw/t0dP714Ura9f6TsrxRkSEr/1j2ZOnD1NSkmGBunbp+X2bDl+U082tRm5/hxaLygkNDUYl1KpZd+iQsYLPlVJ1T5483Lx1LTw1vIeTU8WfBo7EOWK84e/vcFZg/z1r1Mm7KLeYQsNCxk8cpq6hsWrF5mVL18cnxE2YNDwjIwOLRCIRKvflS7/1f+w6cuiCvr7B4iWzhbVgIRYumlmzZt0tmw9MmTz72vWLy1f+KizCpk6cOlKhfKXlyzZAYc+ePZ2/YHqDBk02bti7ZPGalOTkOXOmIFvPHgM6depuYWF57MjFdm07i8XiSVNG+j33/XnqPNgYKGby1FF5/VdkZERIaHCjhk3zHpRX4xb4hYiZVKQc76LFsz7GxkB2OKiOHbr9vnzhw0f3vihn7k2dO3cSCm7dynv7tsPz5iyFQKf9PFZ4DqCgqktJSZk2fWw5x/Jo0vjDBA4zOTmZ8Ya/ntDc8WtlaS1JQa0lJCZI/nAKkXj8+EG0pJ+nzStb1rFiBeepk+cEB7+/cfPKpxVUVNLSUkeNnKirqwtlNGnSEic4NTUVS/bu3ebm5jFo4AhrKxvYAzQyVK6wR2xNS1MLiypXdlFXV3dwcNqwfnfPHv1hk7D9jh27od7j4uOwQU2RJnwTPIimpubdu38hTJkwfnq1au52dmVGDh+PKPvI0X15DuoDfvMNX1BIAwPDyA8RTCpSjvdtoH/tWvWcK1VBUeHUVq3cgvP9RTlzb+rg4d316zVG58bG2hY2BnYOhwbjJ6XqIiPDoZ7mzdpg7+gSYZVFC1ehPIw3/P2dEEaIs/595vPEySOrVi+RzK5cvgm18PyFb2VnF309fSHRysoatenv/6qJ16fmbmdbRvBiAI0MvwkJ8VAJujlwcJJNwQvg1z/gtWDtK//jE1nOaX4b8Gbt2mWhYcGoULE4U9iIoYFh7tK+ePlMQ0OjuttnB6eqqupWzQN7+eKghNYv5VmgQoMnKcdbt06DXbs3x8fHYQJ+ubJzVSnbyczMRANo0fxft4vN4veN/yvBFeZbdWgq+Js7fxqi2Dq165crV14ezo7JQ09o3/gNCwuRpDSo7+Xo6MQ+vU7pw4KFvwiJyclJvr5PWrSqK8kGMxYdEyVMizS/vGMd5xLjDvjdum3d9h0bci+K+WctXV09SeKfJw7DcfTuNXD0qElIf/LkAfqbLA+JSYnYb8vW30lSYD7NzS2+yGZqav7FQUmAK4EULC2smFSkHO//xk4t71TxwsXTCHqggI4dfujT+6eCjIdQCdra/0YO2traOcX47LzyrTpsDc14/4Gdp08f27hpNaQ8cOAIr8bNGW/46wmBMEz35Svn+/YZLFQKTo9whoJDgnJl04clQFXmXhfRpZQta2tpw34gXEXokDvd2MQ0b+ZLl8+6V/cc0H+YMJspzv9eehgMtGZEG7kTVfOcSwTO8ODXrl38sXvfLxY9fHgXvwiB8248Pe3fB0KkHC8MJEIl/MXGfjxz9k9E4oYGRphl+SFUQlJSoiQlKTmJ/f+2lC/GxiZDh4zB3/v3geg3YOzDqVyFMmUcGFfkMv7UrVufkJAgtIYv0j/7+BycK1VFz8vGxg6HJPzBZZjkpwwJ8HeIPBAKSFaxsrJBhCtxIrlB60fkIZnF+MWnf3kcFoohRGaSbWqIROZmFnk3iAjs5avnFy6czp2YmJi4cfNquA/BY0I0Ob71s6+HDyr0eBFQXrh4Bl4MeYyMjKFX9AnyOtzclQBjht6GJMUvZ7pSpSqsYNCZuHnzqjCNXY/73zTsHcJivJGLnho3agajDbs6fcZ4nIDbt2+ePHV0yrQxcHbNmrYSjrx9+66JiQm/Lp6FukNkun3Hxv4Df0BcKX3L3bv3RRcPzSso6B0yY4OjxwyEx8mbE7HUg4d30XFDpx29IYscf/TipR/GtXHWY2KiMbIaHh7m6VkHpwc9wcePHyAnhhgGD+5x4uThvBvs1LE7egAo8PIVv9699zdWP/7noaHDen38GIO+IWwG++eknj13Ar84W3+eOCRZXcrxLl+x8Ldl8zCNPuCly+cQVKHPwXLUKSln7pJ07drr1l/XDh7ajfRHj++vWvObh3tNdGwLrjYWHh46c/YktHCUClW3e88WuA6n8hUZb+R1vQVRi4dHLXRqcLRw7TAVLlXdMJKJUyJkQAft92UbNmxYCUHg2NAdWzB/ubPURgbQY586Zc7efdsQRcHCu7pU/33peiGA+II+vQahEidMHAafgiC0V88BHz5EoPOM9t20Satz50+OmzC0x4/9+vcbilL9sX45qjs1NQUGr2/fwRiUyrtBrIgSIsTBuhj+gUVBJwARdO9eg9CrF/JUqlgZHUyU7Y91vzs6lkc/a8jQXuIc2yPleH9bvBZtb9z4IdgmCgAfLQzd5S5n/fr/vscMbRKdOJRkw8ZVqAT09TD+JL3eanjUmjRhxoFDu1A2ofM7d85SFInxpvD3F/x9Mjqbqbo2oOfN/+XDh0hcCYEWIVOmHDy5FqOuzuq0MZGeje4v+C+ge9GsWWt4DQRAlSpWMTO3+GIYQmkhPf1HRo+chJB23foVGRnp8FzoSzKC9PSfwXjplEmzGPH/IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPClcT5o6qmIxfbBF2RFpqYk0C/+URuFCMTDRiHiXwgjlJjww2cBYo9BshevJ2lFLnEnvH1d2ssTZ1o7ahWYrXE+6hupO1fQu7w1jhLJyaU9oRXc9bf3C1SLr98oCfJLunotxrW9iYqWppUefLFMKUhIyYyLSfW7E1Glj6lhVR5ZVvuJ7ipHv0x5fjY0MTk2MK/w7HqUMsVgsj6dpSzh6BuqWZbXcGhlZ2Mv6AZ+v0JMy4+npef/+fUYUBo0/ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT0RPCE9ETwhPRE8IT3JhLu7OyNkgPQkE48ePWKEDJCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4IntD77KXxww8/aGpqZmVlPX/+vEKFCiKRSCwW79mzhxEFQPZJGv7+/ioqKphQVVXFNCagLUYUDH0oURqwSblnYcsrV67MiIIhPUmjZ8+e8HeSWUx3796dEQVDepJGu3bt7OzsJLP29vZIYUTBkJ4KoVevXgjDMaGrq9u3b19GSIX0VAgwSGXLlsVEmTJl2rRpwwipFHP/LilenNN/KtF069JnzZo13bv2TU4QsxJONtMxKM7vPhbP+FNcVMadszFvfZMs7LWiw9MYwQkza82I96nlXHRrtzY1MC0GY1EMeooOyzixIaRxV2sDMw0NTXK4nMlIy0JzvXowrP1gWxPrwr9wz5ei1lN0WPqpTWEdR5dlhJw5vCKw/VBbY4silVRRm4e75z427WHDCPnT9EebO2diWNFSpHoSZ2a/9U2Em2OE/DGyEPk/Scgu2utDRaqnmLAMx6p6jCgqHF31Yoq2u1OkXYBslh0blc6IoiLuQ0ZW0Xa36P4CgiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InJV1Pd+7+NWXq6DWrtlap4sqKkOkzxqenpS1etJpxpV37xomJicK0lpaWubllE6+WvXoOUFcvJQ279NinmbMm1a3boFVLPs8zebfrkiWWy93ijRs18/bugom01NSnPo+279iQlJQ4Yvg46WsFBLyZNn3svj0nWcmm9Ojp5Ss/6IlxolbNukw+WFhYuVf3FKbr1KkfEhJ0/calQvWEo2OKgCLdvo026tXU88HDu1N/HuvdoUmnLi1WrfktKysrMzMT6RER4YsWz4ZDQU6kbNq8pk+/zi1bf9e7b6fjfx6SbMS7vdeRI/smTx2NRatW/9bOuzEyS5bu3be9VZt6ycnJ8HeTJo8UEqOjo+YvmN7tx++xaPjIfo8fP0BiSGgwdvrs2VMhz6XL5zB78tTR3EV99fpFoQelIRK5PCsXAAAQAElEQVTp6elLZk+dPta3f5fmLeu079gUO8Wukbh5y9rFS+bgALFNIaXEokh60tD4dGPn6jW/9eje7/jRS9OmzoUyrt+4jODjwL7TWDRq5MRdO48LeQ4f2dun90/bth76oWsvzJ49d0LYiLqGxolTRyqUr7R82YZmTVslJiU+enxfsovr1y/VrdNAR0dHkiIWiydNGen33PfnqfM2bdjr7Fx18tRR7969tbWxs7K0hsMSsj19+tDCwvLfWZ9HhoZG2Eveo8jOzs7MISEx4dr1SzdvXunSuYew6Ny5k0uXzW/dynv7tsPz5iyFHKf9PBb5e/YY0KlTd2z/2JGLxsYmrASjSHpSUf1UWq/GLVxdq6uoqHjWqG1pafXixTMkGhgY4hc6MDQwjE+IRyvv9kNvyMXayqZd204tmn8PwyNsRE1NTUtTa9DAEZUru+DPzq7MrVtXhUUwAC9e+jVt0ir3Tu/e/QvGZsL46dWquSPzyOHjEUQfOboPizw8avn4PhayPX7yoE3rDj5P/5VXDY9aKvk9W3jw0G6YH/zBUs6eM6Vrl54tW7T9vOjw7vr1Gnfv1sfG2hbHOHLEBEjq+XNfRO6aIk1sDRpVVS3Rp0zxHlcq71RRMg1PkZiY8EWGN29eovXX9Pw3AKruVuP9+8C0tM93vkJGkkVNvFrcvHVVeMgHcYy+nn7t2vVyb+3Fy2ewi9iCMIvT6VbN4/Wbl+zTRxZr+vo+wbofP8YEB79v790l5mN0ZGQEy7FPNWrUZvnRrFnrP9buwN+qFZsh0ytXL8CxwgqizBCui4ubJGdl50/lfOP/iikOihePi3K98ITluI8vMiQnJ+F37LjBEvMg5MHJhrlin95E8O897LB2O3Zu8vPzqVq1GrxPw4ZNBa8qAQ4xIyMDwZYkBefe3NwCEx7uNRMS4uH7At8FQOVGRsaVKlWBkuATEeXU8MhfTybGps6VqgjTUI9LVTcETFAVdIxyamv/62q1tbXxm5KSzBSHUjieKchl+s/zHR2ccqebmZrnzezgUM7R0enGzSuWltYIrgf0H/ZFBlgsuJv1f+zKnaiq9umZbhMTU6wLAQUEvHZ1/fRBWIjD1/dxenqavX1Z+GImA8iJ+O/t2zcYR4Dxw9iBZFFSTsPIrf6STynUU/nylXCG4uJiy5RxEFJiYz8i9vrC8EiAibp0+Sy68aamZhK/JsG5UtXU1FT26X0Yn7cWFh4KGyNMw+X5Pfd5+dKvf7+hLEdPm7asSU1L9SzA2eXF3/81PJ2pqTnKDCMn6TACv5zpSv8YM4WglDzurZnDkycPEdloa2kjBt+y9Q84kdCwEHTfxk8ctuS3OQWt6+XVAj7r9JljEFbeaNfTsw5OM7ruGCaAki5eOjt4cI8TJw8LS2u413r48C5Wr5Zjn6q6uGH60aN7BTk7EBkZjiLhDwMfJ04emTV7kq2tffPmn97c0rVrr1t/XUPAHh4ehgwYDYFLFTqJiBRjYqJ9fGD8SvQDQqXHPv3Yvd++/dv/+vv6rp3Hhg8bp69vsH7DCsQx8Er1vms0aODIgla0s7WvWMEZPakJ43/JuxRmA1dd/li/fObsSampKVZWNn37Dpb08KtV88Bphs9C8IRZ9C7RB8QQpVseOyfh6rWL+GM5ob2ZmTn6Db17DdLPGYJChzQtLfXAwV0bNq6Cm0Nfb+iQscJa6HWeO39y3IShu3cex8ABK6kU6fsLIoPSLu2LbDvYnhFFwsn1Qc16WpjbarKigu4vIHhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhSpHpSUWFG5iJGFBWobdWi/d5Skd5PZ2qjGeCTwIiiwv9pgqlNkTbgItWTqiorX03/Y0QGI+RPTHh6BQ99VrQU9f2+dduZXtwdzAj5c3FXaL12pqxoKYbvlSV8zNz/W1DjH6z1TTV09Ivz43+lkuQEcXxU+pUDYT0mldEzKur+VvF8TzElUfz3qehAvyRDU1FUSCorVrJz+PbnbsXiLDW1Yn6+w9RWKz463bGqbt22Zlo6xVCY4tGThIzUbFbc33udPHly+/btv/vuO/YNTJ069fHjxx07dhw8eDArRrKzNbSKU9PFPP6koVXManr79u374IBGXvXYt5GcGv8x7sOefTsC379ZsmQJKzaKuT6V/XOrO3bs6NOnD/tmkpOTYenT0tKuXLnStWvX8PBwppQotZ5iY2Nv3Ljh7e3NvpncEVhAQED//v0hLKZ8KLWeYJx69+7NeJCV9e93MFVUVD58+DB37lymfCj19Tvo6d69e4wHqampkJTERMFcaWlpMeVDefW0c+fOXr16qXC6vIXISRATfg0MDC5evMiUEuX1d7wicQEYJJFIZGtre/r0aTU15R2kLebxp+Li5MmT9+/fnzVrFpMDiYmJGhoamppF99aAkoOS2ieOkXheEDmlpKQwpUQZ9XTr1i0rKysnJycmH9TV1adPn3779m2mfCijnvhGTvkyevRo+FOmfChd/87Pzw9j2Z6enkyeVMyBKR9KZ59gnPr27cvkT2Bg4LVr15iSoVx6CgsL8/X1bdasGZM/Dg4OixYtioiIYMqEcumpCCKn3KxduzYmJoYpE0o0/oRLIrBMN2/eZITcUCL7JNcxp4LYt2/f0aNHmdKgRPapfv36Fy5cED5iUWSgL/n9998rz70ryqKngwcP+vv7T5kyhRHyRFn8XRFH4rnJyMh48+YNUw6UQk8XL16sWrWqjY0NKw5wbXjdunVK4vKUQk/FEonnZsyYMQEBAUwJKP3XWx48eIAL/rBPrPiwt7cfOHAgUwJKv56+KnJCrCOnDgqG5t++ffuNT/l9C+rq6kXwrdhSrid4mdDQUIwUyJg/JSVF+NoddzBOYW1tHR0dXVx3b5qZmTH5U8rjpyK7+isLhoaGrLRTmvX08eNHXF1p27YtKxnA3ZT6W8tLs56KccypIOBPMWLOSi+lOX7auXNnSbtJElEUrKaOjg4rpZRaPXEcc0KEfuzYsevXr6OPhsFJW1vb5s2bt2rV6r91l4yNjb9Iwca3bt16/PhxpviU2ut3zZo1O3TokJGR0VetFR8f/0X/LiEhYerUqegktmnTpnLlylj66NEjDHbXq1cP6f/tcVCMSpw5cwYXYcaNG8dy7uR88eIFBMrkCfp3NF7wHzlx4gTGCL5WTPmyYcOGkJCQJUuWlC9fXkhp2rSpq6vrihUrbty40bBhQ/b1QJQQEAaEhFmHHFipoHTqCc5u0aJF7JuJjY29evVqhw4dJGISaNmyJYa8nZ2dhdmzZ88ePXoU3hCBkYeHx6BBg0xMTJA+b948dOjc3NyOHDkSExODVYYNG4a1Zs+e7efnx3IuLK5atcrHx0fi77p16/bjjz+Gh4ejZwrZubi44FqN4CLbt2+P7kXnzp2FnS5btiwoKOj333/HNDa+adOmZ8+ewb5Cmv37969WrRorDkph/w5nAiFOuXLl2DcDKyIWiyGRvIuqVKkiuA9BE4io1q9f/8svv/j7+8+aNUuIIhBsQSuvX79euXLlnj179PT0li9fjnToCQJt1KjR3r17v7BMWOXgwYNI3LZt29q1a+ETsaL0QqKE06dPf/ny5cSJE1evXl2pUqUZM2a8f/+eFQelUE8cI3EMZ+PXyspKSh5Yprp163bp0gXD37hKOGTIEIgAZ5flvLgnLS0NKbBbuIYIAeE0w+ro6urCbkGOGOH8YkQKq5QpUwaxFLyhhYWFu7s75Mikgj4sIrDRo0fDmKEhDR48GKHSn3/+yYqD0qYn+BGc1xo1ajAeCOG2JNDJS2ZmJs4lbJUkBeaB5VznEWZxgiUv7tHX//Q28MTERGE2KysLpiXvNnNbVigPHQImlVevXsGqSRwcZIrwDmaSFQelLX7CqQ0ODn78+HH16tXZNyNc80I8bm5unm8GGBu4ttz3EAvqkby/QCT68vMEkg41ZJrvcHneVaSTlJSEDiOCPEkKZFo0V+vyUgrjcTg7jGRy0RNiZ5z1c+fO5d0aopyaNWva2dnBHuCMStKF4W/YlUI3/rVjDV/khycVJhCWQcTob+ZeWlwXdkph/NS4ceO3b9++e/eOfTMGBgYYHcBIJsaccqcjBkePDLuA2uCenj9/LlkkTFeoUEHKZsU5sK8EGs19rQZ+VpioWLGiMGZm/w9wf6amRf1lBIHSef1OMFGMB+j8Ozk5oceErhMGnDCSibEo9NLRe0d8jQydOnW6ffs2ovKIiIgnT56gl4cBAukvb4FpQSzln0NcXByTDWj077//RjgF77Zv3z5JXIXuJzSNUj19+hQDDRjgGDVqFMZLWXFQOsefOnbsCPuPkRshBP4WYBUWL14sXG+5dOkSghv0v6ZMmdKgQQMhA8whzAP0BIuFzHXq1IEEpW8T3T2EO0uXLp0wYQK6+kw20HGDjjEEhYPCABhGKASrCRs5d+7czZs3L1iwACWxtLTs2bNn7nCqKCm111u2bNmCyh0+fPhXrZX3egt30CVEJFT08U3RXG8ptXrCacMltjt37nzVWkWgp6ioqGLpfBWNnkrt/U/wArh2UejgchEDlXO5qlhiKc330yEqx1g5K0mo58BKL6VZTxiExBDR6dOnWckA/bJS/57WUv48AseBg28HV1q+duxb4Sjlz0thrM/ExATjQ+jGy5IfPXk5vTccV+uwcYw0slJN6X+eEwM227dvl1FP8otv0K3DaHupt0+l//0FtWvXjo2NFW4gKS6ePXs2bty4Ui8mpiTvwyj2KOrhw4fjx49nSoCyvE+sVatWkFRBt50QvFCW94khiiqusahbt275+voy5UCJ3p+JkPzmzZtFPJyIASdcuFWelworkZ7Wrl2rpaU1YMAAVoQIdymVmsehCkWJ9IThxLZt2169epURckOJ3j+up6cH13PkyBFWVJw5c2b9+vVMmVCu720U8cDBtm3bvL29mTKhXHoqU6aMk5NTkb1qd//+/dbW1kyZULrvlRWZiXr16pUSfvVV6fTk5uaG3ydPnjB5cu/evWXLlhXxtz1KAsr4vde+ffviCjGTJ+/evZs0aRJTPpRovCA3nTt3Xrp0qfIMCxUZymifmJyjqFOnTj19+pQpJUpqn4CXl9fx48d79eoVHR1tZmbG63WDsbGxMH6XLl1iSonSfd9cAhpS06ZNheb0315bmC+pqan79u1jyooy6qlNmzYRERESDUFSHO90k/6yqFKPMsZP6enpXxgkWV6HIgu7du3CVWemxCijnsaPH29paSmPwBFhU/F+GK3YUdJ4PDAwEKrCr2CoXF1dt27dyohvRknHCzDydPjw4QYNGiByysrK0tPTY9/M7du3Je8yVFpKlp6yxCw7q+j+fl+2vHu3Hw30DXW0db9xUzdv3Nq3d7+ujh7fEhb6l/XVryWTLyXC38XHZN49GxP0KllDpBoXlc6KFtTAt48XcNnIf8DIv2YnigAAD9dJREFUQjM9VWxfUad2axN94+LvrRe/nqLD0k9sCK3XwcrARF3HQHnHw/4zSXGZ8TEZt45FtB9qa2JVzM8fF7OeIt6lXtwT6T28DCO+meNr3rfobWlhL5fn5WWkmOOnO2djWvS1ZQQPWvSxRX2yYqU49ZTwMRPOTku3lH+yssjQ1lf7EJSaFFecIXpx6ikmPL2MM5+BaUKgbBW96PA0VnwUZ/wrzsxGLMkIfiTGZaJWWfFB/SmCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngiekJ4InpCeCJ6QngicKqSdf3ycHDu7yffYkPj5OW0u7ShXXTp1+rF3rO/bNBAS8GfhTd3Nzi317ThbB1+JKH4pXZX+eODx67KCPsTH9+w2dPXPxoEEjU1JTpkwdffDQbllW79CpWVh4aEFLz50/6eBQLirqw8NH9xjx9SiYfQoMDFi1ekmL5t9PnjRTcr+2d7vOCxfN3Ld/R6tW3vp60j4YHBoWEhcXW9BSsVh88dKZHt37Xb95+fyFU541ajPiK1Ew+3Ts+AF1dfWRIybkvvkf0xPGTd+/95RETM+f+06YONy7Q5O23o1+mTEhIiIcifcf3OnZqz0mevT0nj4jn69f3Lv398ePMY0aNWvZou2NG5dzv11uxsyJs+dMgWns1adjm7YNhg7r7ff88yvqnzx5CHuJHX3friEmfHweI7Hbj9/v3vP5gb7o6Civpp7zF/z73WnYSMGa5ltOcOTIvk5dWty6dQ05/1i3nCkOCqYnH9/HlZ1d8j4uJxKJJC+qhxEaP3GYuobGqhWbly1dH58QN2HS8IyMjOpuNWb8shAZ1q/bNXXynLwbP3vuBGySmZl5wwaf3pNx/fql3Nt/8vThy5d+6//YdeTQBX19g8VLZrOc19VPmz62nGP5Nau24Q8Tk6eOSkxMdK9e86nPI2FdrGhhYSmZhYmFjazhUbugciKPmrp6WloqGs/UKXM6dujGFAcF0xMiGysrG8lsVlZWQmKC5C89/dOzVsePH1RTU/t52ryyZR0rVnCGdIKD39+4eQWC09H5dDso1JD3hQXxCfF//X29RYu2LOfN0vXrNYbL+3exigpO8KiRE7GilpZWkyYt3717m5qaGhkZnpyc3LxZG+wLgRcM56KFq7CjGh61/PyeonjskwF70Kxpa2goPDyM5cjL1NSsXLnyBZWT5Xw2DZvtnNPJsLJSpDe6Kpie4NrEuR5hRFv3bu8l+UMIhcTnL3xhwyS+D+fD1sbO3/+V9C1fvnwORggyEmYhrEeP70dGRkgy2NmWgZKEaSgSvwkJ8XZ2ZfA3d/60PXu3oW8IHbi6Vkc2D49asFJv3/oj2+MnD1xdqlep7OqTY6Lwi6WylLNyZRemaChYPG5pYRUWFiKZtba2XbZ0nTCN+EaYSE5OwoBCi1Z1JdngRKJjoqRv+dy5E0lJSa2/r5878VN4/mM/YVqU57ud8IkwMCuXb9p/YOfp08c2bloNQQwcOMKrcXNYoDJlHOCdTUxMYXVcXKr7PfeBy2vevA1+Bw0YIUs5dXU5PAVfxCiYntzdax46vCckNBhnDrPa2tru1T2FRZJPqerp6btV8/jf2Km5VxQ8XUHAeb146Tdt6lz4LEnin38ewvCBRE8FYWxsMnTIGPy9fx8IKzVn7lR7u7Lly1eEy4MpMjIyRlAFB1q1qtsf635HyT98iKyR03P8D+Us+SiYv2vfvit0s3rNb5mZ/+9BBpzLpKTP76JwrlQ1JDTIxsYOFkL4g5eEnZCyWUTisChNm7SsUL6S5K916/bYLHQmZUXo4+bNq8I0djTuf9OwL8Fnwak983uK4Mm1mjtmq1apFhT0Dt1GR0cn7Ou/lbPko2B6sraymThhBjr2w4b3OXb84O07ty5eOvvb0nmDBv+IE9OqZTuWo7nExIRfF896/eYlfM32HRv7D/zh1esXWGSQE/fcuXMLgZdkmxh2unDxdMOGTb8YEK9S2cXS0ur/ReV5CA8PnTl7EvwdlAe57N6zBR4Q4/Xs04vOa8AUIcav5vpJTzBRMH7osqFnJ6wrpZyKi+Jdb2ni1aKMvcP+Azt27d6MThOCDDiUMaMnY9BIGDKA5n5ftmHDhpWjxwzE2XVwcFowf7lzpSrs0+fOK9eq9d2atUsRIEsCL4xLYYioUYOmeffVoH4TSG340P8VVBg4tUkTZhw4tGvrtnXYO/Y1d85Se/uyWIRAG702mDdBTwA7Pf7noRo5wbj0ciouxfn+ggCfJN+/4r26K9cXTuTK5X1h1eobOFYttiCM7i8geEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieEJ6InhCeiJ4QnoieFKcelJRZbqGJGie6Bqoq6kWw2dkJBTn/XQmlqKQ18mM4EfwqyQjS27frv0PFKeeDM009E00MtOV9APr3MlMyzYyFxmYFKfJL+b7fd29jC7uDmUEDy7sDvVoYsSKleL/Xtm75ym3T0fX72BpYFbM39pSVLJZXHTGzaPh9bzN7StqsWKlRHxPMSwg9cGlj4F+SVZltRPjMljJQ5wlVlMtid8tQsAQFpDiUFW3RlNja8diFhMrad+jjo/OYCrF2T0pCG9v7z///JOVPHDyDE1KUB+5ZHXXDUxLqMvzal7boCSdthJLybJPhKJDr/STiRMnTjBCBsg+yYSnp+f9+/cZURgUE8hEu3btGCEDZJ8InlD8JBMUP8kI2SeZoPhJRih+kgmKn2SE7BPBE4qfZOLYsWOMkAGyTzJB8ZOMUPwkEx06dGCEDJB9InhC8ZNMUPwkI2SfZILiJxmh+EkmKH6SEbJPBE8ofpIJip9khOyTTFD8JCMUP8kExU8yQvaJ4AnFTzJB8ZOMkJ5k4uTJk4yQAYqfZMLBwYERMkDxE8ET8ncyQfGTjJB9kgkaf5IRip9konPnzoyQAbJPBE8ofpKJw4cPM0IGyD7JBMVPMkLxk0xQ/CQjZJ8InlD8JBMUP8kI2SeZoPhJRih+kgmKn2SE7BPBE4qfZILiJxkh+yQTFD/JCMVPMkHxk4yQfZKGh4eHquqnkECoJRUVlaysrIcPHzKiACh+kkaFChWECZUcMFG+fHlGFAzpSRodOnTQ1NSUzGppaZHjkw7pSRodO3YsW7asZNbOzg4pjCgY0pM0YJDatm0rmCj8durUSSQqzq+plnxIT4UAByeYKBgnekq4UEhPhQCz5O3tDUMFMZFxKpTSM16QJWYBvonBr9Oiw9KSEzJFWuqxH1IZJ9LT0zmKydBMMyM9S0dPzdRa076CpqOrnmppadelQU/Br1Ke3op/65NgaKWrZ6arpq6irqmuoV0SP8/6mSyVjLTMzLRMsTg78UNSXHhSuWr61eob2JbXZgqOYusp8l3azRNRKUnMyM5I16T4v577n0mMTokNidXVU63nbWphr8kUFgXW0+0zH989T9G1MNAzVfhmLQBVJUbGO1bVrt3SmCkmiqqnk5vDU1PVzMqZsFLHB/8YXR1xmwFWTAFRSD2d3RGVkq5ubKvPSikfgxJ0dTNb9DRjiobi6QmWKSNbqxSLSSAmKEFLI61Nf0umUChYP/XuuY8pKWqlXkzAxF4/MUH13vmPTKFQJD19CE5/8zTF3KkUxkz5YlHB5NXj5KiwdKY4KJKebhz7YGBtwJQJAyvDG0ejmOKgMHoKfp2SnMhKzdCAjOibayfGZYX6pzAFQWH09PhqHAYtWUnl0PFfl67pxeQAjvrx9XimICiGntAHDfRL1DNV4BHw/4y+mXbA0wSmICiGnt76Jhnb6DBlxchKO9AvmSkCivF8S2RQqq6JLpMb9x+dvvH3/sioQC1NXfdqLVo1HSoSfbKFMxY0b+41MDom5Omzy+npKeUc3Lu0n2agb4pFcfEfDh6b/+btA20t/bq1OjF5omemF/EuxaGKArQoxbBPUaHpqmoqTD488b2078jsShXqTBy1t3vnmZg9cnKxsEhdXXT5+g4rS6efxx8fP3JPcOiLC1c3C4v2Hp4VHhnwU58VwweuS0z8+OzFdSY3VFRVosIymCKgGHpKjBWra8rLlEIx5Rw82jQfZmJsU6l87TbNh99/dCo+Xuilq1haONbx7KCmpm5sZFXBqVZwyHOkxsZFvgm479Wgj5Ojh7lZmfZtxiEDkxvqmmpJsZlMEVAMPamLVEXacjlhYnFmaPhLyEiSAongNyzijTBrY1VRsgiuLTnlU1cr8kMgfsvauwjpampqDmWqMbmBY1cTKciZYopAanJmRhpMFP9b5BAV4Qrmucsbzl/ZlDs9PuHzKKKGRj53I6Wlf4qORRr/DoZpiuQY3GSmidOSxEwRUAw96eqro06ZHBCJtFVUVBt+16OWR9vc6fp6ptLXwm96xr/DjCmpcuzSoy3pGCjGmVKMUuoZqScmyyWAQNxjZ+McGxduYe4gpGRkpsfHf9DWlnbJ2dy0DH6DQp5jXZbjNAMCH+nry+v2ErQlA6MSfPtyLhRDT1ZlNZ/dT4XVYHLAq37vnQd+trGq4FK5MUzO5evbA98/nTz2kKaowGs7JsbWZe1dL1/fZmJko6trePP2gXzdIi/SktKsXBVjLFcxorxyrroJH+Q1oFfNpcmPnWc9enp+6eoeG7ePycoSD+2/VoqYBHp2nWNqYrdl9/hNO8YaG1m7u7bMEsurC5YQmVzORY8pAgpzP92uhe9Ny5lrGyjdE3ApcWkf30X3mGzPFAGFuR7sWs8w8UMSUz7iPyS71lOYu3QU5n1ibg0N7557a2xnUNCoAS6YoNuf7yJxZoaauka+i3p2mVO5Uj3Gias3d128tjXfRdpaBimp+d8m0K/H4vKONfJdlJEqToxMdK3vwBQERbp//Pnd+Mc3kq2rmOe7NCU1MSUlvqBF2lr5xx96uibCpTouSCkDuo0a6vk7a4xNFBTOhz6L9PTSq1hDYe5vVrDnEf7cGK6uZ6BjpMBPPMpO8sfUrOSEtoMU6cEpBXsewfsnqxDfiMx0xRgs/hbg6UL9IhVLTEwR36/Sd3rZsGcRWeLS/NpPHF3484i+vzgwRUPx9CTSVu02zvbF1XfJcWmsNJIcm/by2rvu4+00NOV1i478UOD3F+xdHKRlpGdsX6qeeIkJik+PT+o+wY4pJor9fpU7Zz4+vBxjWcHERPFVBSWFv47xbGZSS2FfhsFKwfufMtKyrh2ODnqdrKEj0jfT1TfTUVVXGDeRlZmdEJWc8CEpIzWjTEXthp3MNESK5+NyU0reT5eelh34LPHlw6TEWHFMWIpIW93ATCs1qYTeI6ulqxEflZqekmlqo61nqFbJQ8/BRVfRlSRQCr+PIM7MTo4XJyeJxRlZrESirq6qraemY6CmpjimVEboexsET+h7QARPSE8ET0hPBE9ITwRPSE8ET0hPBE/+DwAA//8OWnKIAAAABklEQVQDAHthOvYyPmS0AAAAAElFTkSuQmCC\n","text/plain":["<IPython.core.display.Image object>"]},"metadata":{}}]},{"cell_type":"code","source":["# # In case you have issues with the image\n","# app.get_graph().print_ascii()"],"metadata":{"collapsed":true,"id":"JU9IpqfbQsnn","executionInfo":{"status":"ok","timestamp":1745744971956,"user_tz":-120,"elapsed":6,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}}},"execution_count":79,"outputs":[]},{"cell_type":"code","source":["# Test the app\n","result = app.invoke({'recursion_limit': 50})"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":599},"id":"Z_cpxnNhY_1H","executionInfo":{"status":"ok","timestamp":1745745023312,"user_tz":-120,"elapsed":49610,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"90d39ce6-133a-489b-c300-78e0e018ec4e"},"execution_count":80,"outputs":[{"output_type":"stream","name":"stdout","text":["---Researching Company---\n","---Researching Interviewer---\n","---Generating Questions---\n","---Interviewing---\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Markdown object>"],"text/markdown":"Great, let’s get started!\n\n1. Can you briefly walk us through your experience at Zalando, especially as it relates to data analytics and driving business decisions?"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Please provide your answer\n","\n","(Type \"quit\", \"exit\", \"stop\" or \"end\" to finish the practice)\n","At Zalando, I worked on large-scale analytics projects, focusing on customer behavior, A/B testing, and operational KPIs. I used tools like SQL, Python, and Tableau daily, and collaborated cross-functionally with product and marketing teams. This fast-paced, data-driven environment taught me how to extract insights quickly and communicate them clearly—skills that translate directly to a startup like Beat81, where agility and impact are key.\n","---Interviewing---\n"]},{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.Markdown object>"],"text/markdown":"Thank you for sharing that! Your experience at Zalando with large-scale analytics, A/B testing, and cross-functional collaboration is highly relevant. For a working student role, especially at a fitness tech company like Beat81, it's great that you emphasized your use of SQL, Python, and Tableau, as well as your comfort with fast-paced environments.\n\nActionable feedback:\n- For upcoming questions, consider highlighting specific examples with quantified outcomes (e.g., “improved KPI X by Y%”).\n- Since Beat81 is smaller and more agile than Zalando, emphasize how you can break down complex analyses into bite-sized, actionable insights for teams with fewer resources or less analytics specialization.\n- Directly mention how you can leverage your communication experience for cross-team initiatives, especially since student roles often interface with many parts of the company.\n\nLet’s move to the next question:\n\n2. What motivated your transition from managing analytics at a large company like Zalando to founding startups and now applying for a working student position at BEAT81?"},"metadata":{}},{"name":"stdout","output_type":"stream","text":["Please provide your answer\n","\n","(Type \"quit\", \"exit\", \"stop\" or \"end\" to finish the practice)\n","quit\n"]}]},{"cell_type":"markdown","source":["* Export the reports (company and interviewer)\n","* Add your own questions\n","* Text to Speech and Speech to Text\n","* Case Studies to the interview"],"metadata":{"id":"JszJE5SYgz3Z"}},{"cell_type":"code","source":[],"metadata":{"id":"gTe9_xMDaaCs"},"execution_count":null,"outputs":[]}]}