Compare commits

..

2 Commits

Author SHA1 Message Date
b942e84458 Add docs Python Total 2023-05-14 13:18:02 +02:00
e81027cc44 Add matplotlib
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
2023-05-14 11:45:09 +02:00
111 changed files with 31815 additions and 0 deletions

View File

@ -0,0 +1,180 @@
# -*- coding: utf-8 -*-
"""Python TOTAL - Matplotlib.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1CqTZeTV1_gEcvQEVFOVdUh1Ibcf1HcS0
# Práctica de la librería Matplotlib
En este notebook, se desarrollarán una serie de tareas utilizando la librería Matplotlib, empleada para la visualización de datos mediante gráficos.
Se proponen y documentan posibles formas de resolver los ejercicios, pero pueden existir varias formas de lograr los mismos resultados.
Siempre es una buena idea verificar la [Documentación Oficial de Matplotlib](https://matplotlib.org/stable/index.html), donde es posible encontrar todo tipo de información referida a esta librería. Y si te quedas trabado, busca en Google "como hacer [algo] con Matplotlib". Hay enormes probabilidades de que esa pregunta ya haya sido respondida!
Por ejemplo, si quieres crear un gráfico con `plt.subplots()`, puedes buscar directamente en Google [`plt.subplots()`](https://www.google.com/search?q=plt.subplots())
"""
# Commented out IPython magic to ensure Python compatibility.
# Importamos el módulo de Matplotlib como plt
import matplotlib.pyplot as plt
# La siguiente linea nos permite ver los gráficos directamente al ejecutarlos en el notebook
# %matplotlib inline
# Creamos un gráfico utilizando plt.plot()
plt.plot()
# Graficamos una lista de números
a = [1,5,3,8,7,15]
plt.plot(a)
# Creamos dos listas, x e y. Llenamos a la lista x de valores del 1 al 100.
x = list(range(101))
# Los valores de y van a equivaler al cuadrado del respectivo valor en x con el mísmo índice
y = []
for numero in x:
y.append(numero**2)
# Graficamos ambas listas creadas
plt.plot(x,y)
"""Hay otra manera de crear gráficos en Matplotlib, utilizando el método orientado a objetos (OO)."""
# Creamos el gráfico utilizando plt.subplots()
# fig se refiere a la figurar general
# ax se refiere al eje
fig, ax = plt.subplots()
ax.plot(x, y)
"""Veamos cómo sería un flujo de trabajo en Matplotlib"""
# Commented out IPython magic to ensure Python compatibility.
# Importar y preparar la librería
import matplotlib.pyplot as plt
# %matplotlib inline
# Preparar los datos
x = list(range(101))
y = []
for numero in x:
y.append(numero**2)
# Preparamos el área del gráfico (fig) y el gráfico en sí (ax) utilizando plt.subplots()
fig, ax = plt.subplots()
# Añadimos los datos al gráfico
ax.plot(x, y)
# Personalizamos el gráfico añadiendo título al gráfico y a los ejes x e y
ax.set(title="Gráfico de casos de COVID-10 en Latam", xlabel="Días", ylabel="Casos confirmados")
# Guardamos nuestro gráfico empleando fig.savefig()
fig.savefig("/ejemplo-grafico-covif.png")
"""Veamos ahora un gráfico de dispersión:"""
#creamos un nuveo set de datos utilizando la librería Numpy
import numpy as np
x_1 = np.linspace(0, 100, 20)
y_1 = x_1**2
# Creamos el gráfico de dispersión de x vs y
fig, ax = plt.subplots()
ax.scatter(x_1, y_1)
ax.set(title="Otro gráfico más", xlabel="Días", ylabel="Aumento exponencial")
# Visualizamos ahora la función seno, utilizando np.sin(X)
fig, ax = plt.subplots()
x_2 = np.linspace(-10, 10, 100)
y_2 = np.sin(x_2)
ax.scatter(x_2, y_2)
"""Veamos ahora otro tipo de gráfico. Por ejemplo, un gráfico de barras, que por lo general asocia resultados numéricos a variables categóricas (categorías)"""
# Creemos un diccionario con tres platos y su respectivo precio
# Las claves del diccionario serán los nombres de las comidas, y los valores asociados, su precio
comidas = {"lasagna":350, "sopa":150, "roast beef":650}
# Crearemos un gráfico de barras donde el eje x está formado por las claves del diccionario,
# y el eje y contiene los valores.
fig, ax = plt.subplots()
ax.bar(comidas.keys(), comidas.values())
# Añadimos los títulos correspondientes
ax.set(title="Precios de comidas", xlabel="Comidas", ylabel="Precios")
# Probemos a continuación con un gráfico de barras horizontales
fig, ax = plt.subplots()
ax.barh(list(comidas.keys()), list(comidas.values()))
ax.set(title="Precios de comidas", xlabel="Precios", ylabel="Comidas")
"""Un gráfico semejante es un histograma. Podemos generar números aleatorios que siguen una distribución normal (que se acumulan en torno a un valor central), con la función randn:"""
# Creamos una distribución de 1000 valores aleatorios distribuidos normalmente
x = np.random.random(1000)
# Creamos el histograma
fig, ax = plt.subplots()
ax.hist(x)
"""Veamos ahora un caso más complejo, trabajando con subplots, o figuras que cotienen varios gráficos:"""
# Creamos una figura con 4 subgráficos (2 por fila)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(12,8))
"""Añadimos datos a cada uno de los gráficos (axes)"""
# Creamos la misma disposición de gráficos, con un tamaño de figura de 10x5
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10,5))
# Para nuestro primer gráfico, tomamos el conjunto x_1, y_1, y generamos un gráfico de líneas
ax1.plot(x_1, y_1)
# Para nuestro segundo gráfico, tomamos el conjunto x_2, y_2, y generamos un gráfico de dispersión
ax2.scatter(x_2,y_2)
# Creamos un gráfico con los precios de tres comidas en la esquina inferior izquierda
ax3.bar(comidas.keys(), comidas.values())
# El gráfico de la esquina inferior derecha será un histograma de valores aleatorios con distribución normal
ax4.hist(np.random.randn(1000))
"""Matplotlib tiene un conjunto de varios estilos disponibles, podemos verificarlos de la siguiente manera:"""
# Verificamos estilos disponibles
plt.style.available
# Cambiamos el estilo predeterminado por "seaborn-whitegrid"
plt.style.use('seaborn-v0_8-whitegrid')
"""Habiendo cambiado el estilo (el cambio más evidente que veremos será una grilla en el fondo de cada gráfico), cambiaremos también los colores de las líneas, puntos y barras en cada uno de los gráficos por códigos hex a nuestra preferencia:
"""
# Copiamos los valores de los gráficos anteriores
# Creamos la misma disposición de gráficos, con un tamaño de figura de 10x5
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10,5))
# Para nuestro primer gráfico, tomamos el conjunto x_1, y_1, y generamos un gráfico de líneas
ax1.plot(x_1, y_1, color="#fcba03")
# Para nuestro segundo gráfico, tomamos el conjunto x_2, y_2, y generamos un gráfico de dispersión
ax2.scatter(x_2,y_2, color="#fcba02")
# Creamos un gráfico con los precios de tres comidas en la esquina inferior izquierda
ax3.bar(comidas.keys(), comidas.values(), color="#03c6fc")
# El gráfico de la esquina inferior derecha será un histograma de valores aleatorios con distribución normal
ax4.hist(np.random.randn(1000), color="#fc036b")

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,6 @@
print("El nombre de tu cerveza\nes '" + input("Que ciudad te gustaria visitar?: ") + " " + input("Cual es tu color favorito?: ") + "'\nFelicitaciones!")

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,6 @@
nombre = input("Por favor, dime tu nombre: ")
ventas = int(input("Diga sus ventas totales del mes: "))
comision = round(ventas * 13 / 100,2)
print(f"Hola {nombre}, tus comisiones de este mes son de ${comision}")

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,41 @@
texto = input("Ingresa un texto a elección: ")
letras = []
texto = texto.lower()
letras.append(input("Ingresa la primera letra: ".lower()))
letras.append(input("Ingresa la segunda letra: ".lower()))
letras.append(input("Ingresa la tercera letra: ".lower()))
print("\n")
print("CANTIDAD DE LETRAS")
cantidad_letras1 = texto.count(letras[0])
cantidad_letras2 = texto.count(letras[1])
cantidad_letras3 = texto.count(letras[2])
print(f"Hemos encontrado la letra '{letras[0]}' repetida {cantidad_letras1} veces")
print(f"Hemos encontrado la letra '{letras[1]}' repetida {cantidad_letras2} veces")
print(f"Hemos encontrado la letra '{letras[2]}' repetida {cantidad_letras3} veces")
print("\n")
print("CANTIDAD DE PALABRAS")
palabras = texto.split()
print(f"Hemos encontrado {len(palabras)} palabras en tu texto")
print("\n")
print("LETRAS DE INICIO Y DE FIN")
letra_inicio = texto[0]
letra_final = texto[-1]
print(f"La letra inicial es '{letra_inicio}' y la letra final es '{letra_final}'")
print("\n")
print("TEXTO INVERTIDO")
palabras.reverse()
texto_invertido = ' '.join(palabras)
print(f"Si ordenamos tu texto al revés va a decir: '{texto_invertido}'")
print("\n")
print("BUSCANDO LA PALABRA PYTHON")
buscar_python = 'python' in texto
dic = {True:"", False:"no"}
print(f"La palabra 'Python' {dic[buscar_python]} se encuentra en el texto")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,23 @@
from random import randint
intentos = 0
estimado = 0
numero_secreto = randint(1,100)
nombre = input("Dime tu nombre: ")
print(f"Bueno {nombre}, he pensado un número entre 1 y 100\nTienes 8 intentos para adivinar")
while intentos < 8:
estimado = int(input("Cuál es el número?: "))
intentos += 1
if estimado < numero_secreto:
print("Mi numero es mas alto")
elif estimado > numero_secreto:
print("Mi numero es mas bajo")
else:
print(f"Felicitaciones {nombre}! Has adivinado en {intentos} intentos")
break
if estimado != numero_secreto:
print(f"Lo siento, se han agotado los intentos. El numero secreto era {numero_secreto}")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,315 @@
%PDF-1.4 %âãÏÓ
1 0 obj <</MarkInfo<</Marked true>>/Metadata 2 0 R/Pages 3 0 R/StructTreeRoot 5 0 R/Type/Catalog>> endobj 2 0 obj <</Length 3513/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c017 91.164464, 2020/06/15-10:20:05 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
<xmp:ModifyDate>2021-09-05T18:00:53-03:00</xmp:ModifyDate>
<xmp:CreateDate>2021-09-05T18:00:53-03:00</xmp:CreateDate>
<xmp:MetadataDate>2021-09-05T18:00:53-03:00</xmp:MetadataDate>
<xmp:CreatorTool>Canva</xmp:CreatorTool>
<dc:format>application/pdf</dc:format>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">[S5] Python TOTAL Cheat Sheets</rdf:li>
</rdf:Alt>
</dc:title>
<dc:creator>
<rdf:Seq>
<rdf:li>Facundo Nicolás Colque</rdf:li>
</rdf:Seq>
</dc:creator>
<xmpMM:DocumentID>uuid:eebf06bf-3e1e-4c14-9cda-85798c1c3f38</xmpMM:DocumentID>
<xmpMM:InstanceID>uuid:e9bed3f8-450c-4369-919d-68cb1c24dbc9</xmpMM:InstanceID>
<pdf:Producer>Canva</pdf:Producer>
<pdf:Keywords>DAEpLMhmRl8,BADsJ4ZOebQ</pdf:Keywords>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
endstream endobj 3 0 obj <</Count 1/Kids[6 0 R]/MediaBox[0.0 7.91997 1620.0 1627.92]/Type/Pages>> endobj 5 0 obj <</IDTree 7 0 R/K 8 0 R/ParentTree 9 0 R/ParentTreeNextKey 1/Type/StructTreeRoot>> endobj 7 0 obj <</Names[10 0 R 8 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R]>> endobj 8 0 obj <</ID 10 0 R/K 12 0 R/P 5 0 R/S/Document>> endobj 9 0 obj <</Nums[0[36 0 R 40 0 R 52 0 R 54 0 R 54 0 R 56 0 R 56 0 R 58 0 R 60 0 R 60 0 R 64 0 R 64 0 R 76 0 R]]>> endobj 36 0 obj <</ID 35 0 R/K<</MCID 0/Pg 6 0 R/Type/MCR>>/P 34 0 R/S/NonStruct>> endobj 40 0 obj <</ID 39 0 R/K<</MCID 1/Pg 6 0 R/Type/MCR>>/P 38 0 R/S/NonStruct>> endobj 52 0 obj <</ID 51 0 R/K<</MCID 2/Pg 6 0 R/Type/MCR>>/P 50 0 R/S/NonStruct>> endobj 54 0 obj <</ID 53 0 R/K[<</MCID 3/Pg 6 0 R/Type/MCR>><</MCID 4/Pg 6 0 R/Type/MCR>>]/P 50 0 R/S/NonStruct>> endobj 56 0 obj <</ID 55 0 R/K[<</MCID 5/Pg 6 0 R/Type/MCR>><</MCID 6/Pg 6 0 R/Type/MCR>>]/P 50 0 R/S/NonStruct>> endobj 58 0 obj <</ID 57 0 R/K<</MCID 7/Pg 6 0 R/Type/MCR>>/P 50 0 R/S/NonStruct>> endobj 60 0 obj <</ID 59 0 R/K[<</MCID 8/Pg 6 0 R/Type/MCR>><</MCID 9/Pg 6 0 R/Type/MCR>>]/P 50 0 R/S/NonStruct>> endobj 64 0 obj <</ID 63 0 R/K[<</MCID 10/Pg 6 0 R/Type/MCR>><</MCID 11/Pg 6 0 R/Type/MCR>>]/P 62 0 R/S/NonStruct>> endobj 76 0 obj <</ID 75 0 R/K<</MCID 12/Pg 6 0 R/Type/MCR>>/P 74 0 R/S/NonStruct>> endobj 75 0 obj (node00036882) endobj 74 0 obj <</ID 73 0 R/K 76 0 R/P 72 0 R/S/P>> endobj 73 0 obj (node00036881) endobj 72 0 obj <</ID 71 0 R/K 74 0 R/P 70 0 R/S/Div>> endobj 71 0 obj (node00036880) endobj 70 0 obj <</ID 69 0 R/K 72 0 R/P 68 0 R/S/Div>> endobj 69 0 obj (node00036878) endobj 68 0 obj <</ID 67 0 R/K 70 0 R/P 66 0 R/S/Div>> endobj 67 0 obj (node00036877) endobj 66 0 obj <</ID 65 0 R/K 68 0 R/P 24 0 R/S/Div>> endobj 65 0 obj (node00036876) endobj 24 0 obj <</ID 23 0 R/K[26 0 R 42 0 R 66 0 R]/P 22 0 R/S/Div>> endobj 23 0 obj (node00036834) endobj 22 0 obj <</ID 21 0 R/K 24 0 R/P 20 0 R/S/Div>> endobj 21 0 obj (node00036833) endobj 20 0 obj <</ID 19 0 R/K 22 0 R/P 18 0 R/S/Div>> endobj 19 0 obj (node00036832) endobj 18 0 obj <</ID 17 0 R/K 20 0 R/P 16 0 R/S/Div>> endobj 17 0 obj (node00036831) endobj 16 0 obj <</ID 15 0 R/K 18 0 R/P 14 0 R/S/Div>> endobj 15 0 obj (node00036830) endobj 14 0 obj <</ID 13 0 R/K 16 0 R/P 12 0 R/S/Div>> endobj 13 0 obj (node00036745) endobj 12 0 obj <</ID 11 0 R/K 14 0 R/P 8 0 R/S/Div>> endobj 11 0 obj (node00036743) endobj 26 0 obj <</ID 25 0 R/K 28 0 R/P 24 0 R/S/Div>> endobj 42 0 obj <</ID 41 0 R/K 44 0 R/P 24 0 R/S/Div>> endobj 41 0 obj (node00036861) endobj 44 0 obj <</ID 43 0 R/K 46 0 R/P 42 0 R/S/Div>> endobj 43 0 obj (node00036862) endobj 46 0 obj <</ID 45 0 R/K 48 0 R/P 44 0 R/S/Div>> endobj 45 0 obj (node00036863) endobj 48 0 obj <</ID 47 0 R/K[50 0 R 62 0 R]/P 46 0 R/S/Div>> endobj 47 0 obj (node00036865) endobj 50 0 obj <</ID 49 0 R/K[52 0 R 54 0 R 56 0 R 58 0 R 60 0 R]/P 48 0 R/S/P>> endobj 62 0 obj <</ID 61 0 R/K 64 0 R/P 48 0 R/S/P>> endobj 61 0 obj (node00036874) endobj 49 0 obj (node00036866) endobj 25 0 obj (node00036847) endobj 28 0 obj <</ID 27 0 R/K 30 0 R/P 26 0 R/S/Div>> endobj 27 0 obj (node00036848) endobj 30 0 obj <</ID 29 0 R/K 32 0 R/P 28 0 R/S/Div>> endobj 29 0 obj (node00036849) endobj 32 0 obj <</ID 31 0 R/K[34 0 R 38 0 R]/P 30 0 R/S/Div>> endobj 31 0 obj (node00036851) endobj 34 0 obj <</ID 33 0 R/K 36 0 R/P 32 0 R/S/P>> endobj 38 0 obj <</ID 37 0 R/K 40 0 R/P 32 0 R/S/P>> endobj 37 0 obj (node00036854) endobj 33 0 obj (node00036852) endobj 6 0 obj <</BleedBox[0.0 7.91997 1620.0 1627.9199]/Contents 77 0 R/MediaBox[0.0 7.91997 1620.0 1627.9199]/Parent 3 0 R/Resources<</ExtGState<</G3 78 0 R>>/Font<</F10 79 0 R/F11 80 0 R/F6 81 0 R/F8 82 0 R>>/Pattern<</P14 83 0 R/P15 84 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/StructParents 0/TrimBox[0.0 7.91997 1620.0 1627.9199]/Type/Page>> endobj 77 0 obj <</Filter/FlateDecode/Length 2502>>stream
xœ½ZÛn$·}Ÿ¯èçKñÎ"°X@IFر€<Š/0´ d×ÿ<C397>œ"»ä¨k¦5v$£žêf]O]Hµ².—ŸIã÷ƒê¾šh“Ê&g;=>ü÷ '¥µöDŒ SLAヌ—¯?þõ·é žrŠo2³åêC}ÈçÀ|ÌÄ¿ÿünª_=Ü|ç¦_¿<5F>½5‰?âüž¿~į$:è³r‡%<25>¬4E7)oBšTÖâ5±×HP'¸èU¶&“µ
0ÏMÞ%æϦ•U†œ‡E3|s>i'—MPA‡8}ÈšTr.‡Ž7?üû<C3BC>?~þúe:þ´^>»ùÁøé§ã?ÊßoÏ_“‰ÊF­Í¼Wž8nŸ{ªÓŠbšÉ¤Óv
Ö)žK^Ãv«Ýø®MÓó!§ÜŠç ì°1Ó”QÎÕç² a-%•tÖ¡[KZ«è½ö<C2BD>a•ŽòÉœÑ š3Lïi«ÎXݨ”•wazéhQ[MšXFŽFÇ)Øa<ë·êÒh°dµ®Q_ ÖgC5­lÐánṟ§y <0B>$†î¡£"üÎÂ3fæ™YËžJ<C5BE>“¦Žü¢-Óh<>ùìò¼ú:Èa_ð
í ÕÂkX¸XGŠëYñ¶8d —Ùb8 ñš $¤¨’lÈ/ÎÅfRŽ¼Î &F£½1õe ÚFe˜…\8lRkxƒ—M ¾~CB‰€3àC|Å‚æÈ·ÌêsGMÚ¨ì-c3gà!)òŒúŠšd¬²ä©YÅ -)Ÿ8B)e"ノˆÍy¢™s[ ¤x2ÌY× ˜©Np7ëbNhMëçCGõQ«Û
9ëýÄ"4ÂðÎÊeNʦJ£<4A>Ýj\£"y´Ca²¸nTbC™£*RX¿×”³E¹•Vã_y¹¸ÚœFªÏ(éÒ¨¦Àa@QDâ8.!+“¸¾Í8­rSŽ2§²bÙý<04>;,j#1žÚÚ9AêÚ>‰<>…«ä V´ÑlåœpSÓz¡T|S¶yMáÝ3-é™V€…¼Û´Ì’è[À¬ÈÖ¥ä£ÅÔ ´•d ðÊX<Vq©nQpÃÌ¡MÀ:øWß<>„\Ÿáï\ÜPHàù°<á#¾gŽOåÂÐk´"W5JD¼tAsb©!h†t¿Ê[iX]´*«Û“<C39B>Ñtjã3|Áí?•ì<E280A2>ƒ@žÛT£RDaÞ‰€ŸÈí)UΤÐh,=ÊdØ Ï ™me„`-_Wi¼d&!Ï*|á`Këù¡YP#pn±>µ˜¬<CB9C>f¥ ½¶ð¹ àêù%oB]š .(D_‡˜l ~ÿÉCÌ+bbîžPc§<63>o¾?þýÜ?}º»?n 4ˆŠj¤Ÿ~Á\V×>}>|ôùÓôôûÊðHøôŸéãC%iJ—¯ä{_Èè°HZ´Í™œëÓ¤´ñä&w÷•7æ“`½^ž¾…üðýñððt¢ºÙ£º<C2A3>Ö=TFÎñLÂ<4C>¨ü]Õ&`µó:ÒLžÖ¶*Éè4T¢S˜¸^I/·ÿ1(ìÕ
_$‡<E280A1>§–‹´ÃÏôúé@èÈA %ó‰<C3B3>Ðêt‰%â„’Ø>8Ü#¥ÅÚa!®ìV+î<>º^¼ððŽ <0B>>“0ä B}täñ2ƒø5>ߪfÐúü`?†Ñ®aD!EgBíDøOJáš»=9¢×¸%0úþ¡Þàò•1ï¬7hÆ[PÝCýºâ¶â+<fÉÆêöXnÀ÷M4¤Ðx=,Òyvn2r^d ÃÓdèŠ Œö¤Ñ`0§.wnVÃæõÆÑ/7È¢§u†ØÞ<C398>v¹u‰„dÜŸþ(H—½u<.uó…^ À©ÿÊ]ÙîV˜<56>t Ì”<C38C>ûÀ *\0ð`’Òº ~Z«PÔ¹S¡y-Ìvpi1ŽØ¿¥æäVþòŠ¬úWŒ<G¡JI߶äx·8Ù#ö—ã8*•ÍF:òäè¹2#ÀÁ _ew™×hGïÅFFó¦eÛï¾Ø'å":oÜÖ ˜l¼îs—¦Î\Ñ0 3xè·ŒÂf—Q?†°Ó÷Xyâê¤:ä¤ Šq‡¶ƒ­Ï—<C38F>8ËØL^1yÑ©=ÍE~”M[e«$çVÉF}vå¯ÑWî2Þ¤¬µá(.67ŒØÈ{G<>N*º [aÁÆ£+'Ýl8`wo;£ÈkìZÞÞK¯hsboÛœ(D.v£çÍ!£í$<24> În;Þn4†<34>X¥N­@¯ëf5±Ë¹nŠK.×}EN{ƒè¶:Üé±GlÔtW´|ðÿpã˜$¾+ N2DÒwÀƒN]Êëü¦‰].™n}5ÐðA‰NÝ|,ûäqžß<îôàŒ³àE1GÎ5<C38E>¸cc`<60>ÆZ3ÛvÒ4Ælë*ãcv£¶fGýˆñ’/• ]îà<>ÒÖÁ)ZŠœ8årý›œÙtiÉàFêf½+„ÈEK,¦¢·Þ^µ®PøáN@¼8ŠíB¬ŒWë»™néâŒí­9wf{%íÆåAídÇ"ì%†=0ÁÉû.i%®h²Á›wØ!í£ÎŽ‰t±Ô£ÊRçÿssbßÏú9ñ¤nyódèËFd^ƒ_¬“c<E2809C>ãžÎ,Ö6yJŠžX)f­6#“w4!‡<>V Ș‘Ýå¤A¤nJÎh´4yô<79>C:…º¼.VÂ3Ó¹4ÐKh°þ ¼<>ÞáEOzöâ|úê ÿ P±pFïÖII'Tƒ]°&»Ði¬”÷"Þ¯èÀr|ÏÌáoß<1A>9€”¥68L{öWôÇ·ï³ä=8þHYwÅæèÏäzi«ÞIç<>¸qמâŠ}ä_qÅÛ÷…é@zExßßïçä<C3A7>¬=SÒÍŽæB\E<>EIÏ&xaï»kTØ7×ï:¶YíÔ*m ¶§•NG¤zvê«®Å{ø¸¦ož…¤£ž·ŸYÝ>Hû™·'È`Æ­ÞÞEäŒyý…çx6P½ƒ¢$Rû<52>sÐõ¶ IgŒÛ+42£$Xß<58>Z‰+®8ƒ¥<E28099>ùfÓûJ—:ß;I—ùÞEºÔ.ÞGºt$*KÃãÖ› ü†ƒuüb˜I3Ëû <0B><>ϯÅúCO<43>Þg0¶/Åj~}Ž_:ùoWŽ¥5šÙ7Fói={¸­1öYemÜzxÍü8)MÈì%ëŽ5(å O¿$6ÍU®G}òfå^ÙxXPîÜæãnD„Ç—i#Ÿÿ„vS‡ýf´?•I÷½n Í<>‡ÿ½C¹Ù
endstream endobj 83 0 obj <</Matrix[0.52402771 0 0 -0.51232868 939.72131 1846.0164]/PatternType 2/Shading<</ColorSpace/DeviceRGB/Coords[811.53003 574.90002 665.26001 573.72998]/Extend[true true]/Function<</C0[1 0.808 0.318]/C1[1 0.808 0.318]/Domain[0 1]/FunctionType 2/N 1>>/ShadingType 2>>/Type/Pattern>> endobj 84 0 obj <</Matrix[0.52402771 0 0 -0.51232868 939.72131 1846.0164]/PatternType 2/Shading<</ColorSpace/DeviceRGB/Coords[862.82001 642.17999 573.28003 642.17999]/Extend[true true]/Function<</C0[1 0.808 0.318]/C1[1 0.808 0.318]/Domain[0 1]/FunctionType 2/N 1>>/ShadingType 2>>/Type/Pattern>> endobj 79 0 obj <</CIDToGIDMap/Identity/CharProcs<</g0 85 0 R/g1 86 0 R/g17 87 0 R/g2 88 0 R/g33 89 0 R/g3F 90 0 R/g49 91 0 R/g56 92 0 R/g88 93 0 R/g91 94 0 R/g9F 95 0 R/gA1 96 0 R/gAB 97 0 R/gB6 98 0 R/gBD 99 0 R/gCA 100 0 R/gD4 101 0 R/gE9 102 0 R>>/Encoding<</Differences[0/g0/g1/g2/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g17/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g33/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g3F/g0/g0/g0/g0/g0/g0/g0/g0/g0/g49/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g56/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g88/g0/g0/g0/g0/g0/g0/g0/g0/g91/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g9F/g0/gA1/g0/g0/g0/g0/g0/g0/g0/g0/g0/gAB/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/gB6/g0/g0/g0/g0/g0/g0/gBD/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/gCA/g0/g0/g0/g0/g0/g0/g0/g0/g0/gD4/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/gE9]/Type/Encoding>>/FirstChar 0/FontBBox[-114 486 1714 -1588]/FontDescriptor 103 0 R/FontMatrix[0.00048828125 0 0 -0.00048828125 0 0]/LastChar 233/Subtype/Type3/ToUnicode 104 0 R/Type/Font/Widths[973 614 1482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1157 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 965 0 0 0 0 0 0 0 0 0 0 0 1804 0 0 0 0 0 0 0 0 0 1347 0 0 0 0 0 0 0 0 0 0 0 0 1093 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1188 0 0 0 0 0 0 0 0 1227 0 0 0 0 0 0 0 0 0 0 0 0 0 1227 0 534 0 0 0 0 0 0 0 0 0 554 0 0 0 0 0 0 0 0 0 0 1227 0 0 0 0 0 0 1314 0 0 0 0 0 0 0 0 0 0 0 0 819 0 0 0 0 0 0 0 0 0 793 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1174]>> endobj 80 0 obj <</CIDToGIDMap/Identity/CharProcs<</g0 105 0 R/g100 106 0 R/g101 107 0 R/g102 108 0 R/g103 109 0 R>>/Encoding<</Differences[0/g0/g100/g101/g102/g103]/Type/Encoding>>/FirstChar 0/FontBBox[84 36 1192 -1572]/FontDescriptor 103 0 R/FontMatrix[0.00048828125 0 0 -0.00048828125 0 0]/LastChar 4/Subtype/Type3/ToUnicode 110 0 R/Type/Font/Widths[973 771 1262 1256 1295]>> endobj 81 0 obj <</BaseFont/Rubik-Light/DescendantFonts[111 0 R]/Encoding/Identity-H/Subtype/Type0/ToUnicode 112 0 R/Type/Font>> endobj 82 0 obj <</BaseFont/Rubik-LightItalic/DescendantFonts[113 0 R]/Encoding/Identity-H/Subtype/Type0/ToUnicode 114 0 R/Type/Font>> endobj 114 0 obj <</Filter/FlateDecode/Length 358>>stream
xœ]Ùjƒ@†ï}Š¹L/:q ˆ<>¸]hÚ0zL…:Êh.|ûŽç·)t@áãlÿYì´ÌJÕÍÂ~ÓC}¡Y´<59>j4MÃ]×$®të”åJÑtõ¼ÿë¾_i¦¾Tí`űö»±N³^ÄîÔ Wz²ìWÝ<57>îÔMì>Ó‹áË}¿©'5 ÇJÑPk2=WãKÕ“°9l_6ÆÞÍËÞÄüy|,# ÉìBM=44<34>UMºR7²bǼDÄ…y‰Eªùgw#„]Ûú«Òì~0îŽ#<23>„Écò\¦H2Á3}Ø<Ðä3<C3A4>éœ<C3A9>R¦ô *@ð,LYÈBKƒ`Ëêå'êÐ ä ¹ºô"ô— Eæ<œm
þïL3ŒP:* UB+úO1¢ ƒH4žmzx6nÁUÜYÜŽô¹qéC<C3A9>Œ6¨¹nj½¨ÇÔw­ÍðÙñê×¥wŠ—9ãµ~?•½E
endstream endobj 113 0 obj <</BaseFont/Rubik-LightItalic/CIDSystemInfo<</Ordering(Identity)/Registry(Adobe)/Supplement 0>>/CIDToGIDMap/Identity/DW 0/FontDescriptor 115 0 R/Subtype/CIDFontType2/Type/Font/W[0[290 0 0 264 653]130 131 569 142[580 535]149[579 0 0 0 544]172[224]189[225]195[879 590]203 204 556 215[579 0 580 350 0 0 0 492]230[351 0 0 0 586]245[533]252[534]509[614 394]584[237]589[234]603 604 317]>> endobj 115 0 obj <</Ascent 935/CapHeight 700/Descent -250/Flags 68/FontBBox[-482 -264 1088 896]/FontFile2 116 0 R/FontName/Rubik-LightItalic/ItalicAngle -12/StemV 219/Type/FontDescriptor>> endobj 116 0 obj <</Filter/FlateDecode/Length 5474/Length1 13832>>stream
xœí;Yp[×uç¾Ë¸Šzà<08>| )7<>.HK<48>(Y€,™KŠ#ŶìxUXÛi?:“dÚIÚIÛ|d¦rìÚ×ã6©iš~´q3i“ÔžfÒ8<C392>“N<E2809C>x<mLöœ÷@€¢l§ÉG§Ö»CÜsï9÷žõž{H€jxœïé[ûƒ'Tœù þäNçÏUO×î`s8þÒÒ½åDkÕ?âøÿ`õÜ©Ó÷.â
÷]€*ï©ü…s8_ Pósìm§î¾¼úËÛ>ÛàAúzÛÚJ~¹î÷úÇ8~ñ±5œ°|Ûîãk§/^Š=Á½Šã€ãÑ»Ï.å8ÿ°„ûý@üÚéü¥sB´ú$@ÿ^>“?½Ò ÑzeZ>wöÂÅÍ¿>€(é Ÿ;¿r®ó.é2ŽIþAàv1D”w<E2809D>ËlþÌRûÙíÐdžHJeÏÑÙcà Ã[üŸlZY`ý2ÀŸŽ³q/7pÒÀ\éÆO¦÷|ûf´
Ru€
Ý°öÂ
Ü÷ÂexÞÚÜÔwë¸^Äåww·ù¯\?×ÂífßÜü*Ò¥ðç‘Í?ÜüŽÎaë©ÖùŸ‡áiøü.|þ¾
_ƒoÀ·á;ðOð}ø!ü~¿Ê3ŽmFHOΰ™ä ßä^Ù|›«ß|ÛAÑŒ"þQ?Š8ªXÿʶ^)Ûäƒ/oÞZ1ÿÂæ¡<C3A6>èp¿/Uì÷ú¸<44>*kp43••åÙç¡úЬf™?žÑ|Z8[•×<E280A2>f4.˜Á6XZR}~¿Y RÊä5´m*—ŒhLÕäÜjDãTyYÖ^NkBûñka&¥¦¦4ËTƯñÁìáÛ2~Åï[ÏÈZ:<3A>S‰¬OÖ†ÊfåA<E2809A>_ÖÂ8eŽd­—ð½Dùr:#£4ëyY“Ò™ÎÈ„“ŠËùrÙlÖ§±®lVÑ <20>YÉf#¯Ê¸<C38A>Ì£db*<2A>ÑD%©Y”$êÕX.¢ ªrÉËq1)†$öЧ&æ¦4¾Ó<C2BE>È”¼.¯#ƒB¯D%eri_þp6£dýYYKÌgç#ÕLþMT5kªëƼn) •¤‚Wy<E28099>[\ÕØJ¡‰<C2A1>ͪÊ$ª#µô¼ %rY"ÉMê¢ÚÔkV¤¦<C2A6>þííj¥/$cÖ…"¤Pïœ<µ®äÉ/º½ÀG6Õd
Y”½£ä' Ž,׸
|[ª•/rªºB×<12>Îö)þl§?¢U©Ž›Ò–ó“­ZEBYÖœ©ý´%™ÕªhtGU8Šh5¸M­n-°„|µêTN^ÏÉZ5-¢Õª³G2ay2ЪV”K­N<C2AD>=”™<E2809D>7&}~œwéóõjjRG3…šš”ÆòI­¦b#9YpÒG~hÌžàƒéL<C3A9>Œ‡Ú&×ѿĶӯà²"ì3ð´<04>ÍdQ“”g+]u\
Z+¥Áø5Ƙî+—
঎d´%)Oi >IÁ€KÊ9dÿl]Ä•L®ç
õ–.í“]¾64“usuE4<45>Z`Ô{ÑÎÔ7¨žúFµ PߤÕ…zŸZ°RߢlÔïR vê;T¥hwÍC +r·ÆNÒ‰h<E280B0>eHo y<><79>ì*C¶—<C2B6>ç d«
ZU×ÿB¿Ý¨_+Ê%£~ÔûQ?êÛP?êÔ<>úêG}õ£¾õ£>„úQFý¨WU9®‡iDE¶u99…¾Í¥tWâÑS)V»U-Ò¥Eðöà˜oàE%?¤PF|O
iß[r-ój=<3D>y¦2˜ÈHÁ=å–¹ݧÊQ]Þ~¤cS×3ÁÓ¹#sšï—õÛhr\*ô1)7€@‰wOE~(¢EÕî†xD½)Fð¢OÀ”»å:ùhË}ëë3Ê ¦Š ^˜Y1Äó¸Ñ¤C˜¢¼Z- ˜5ƒ:™fOu­¬w+²_Çý†+Iänc/MÀ¤”µ%<25>Ä¡Ì3œÌ˾g¸v¾9¤DjÃœ¬èÔÊ4áÔöó˜£dfÜ\*·¬h|*¿Œh.•÷!œ£D¶}MÅÂô®L£3ä0<C3A4>úa§sÁýv`¢)SÀ,<2C>N1²ÄëvÅ .<>T¹Å }?R´ƒŒ³b»i%Ž&-¡4ŽŸVfˆ)y/^2)cZŽdºå8^¹$½9)“\EX8ÚW~»ÎÛ)¬MO)Ûce¤Š®ÊQ °]å¢{Ç1Qt“§µÚT&íÃ+SŽg» ÝÌ<C39D>{Ø—®À&v\û^+öªÚP×{1LªÚp×:ÊFñ…JÝ<4A>Ú­u㊔®2ÅfÑ'
n<gÆ®“˜
)þ
A<ó›Š[ÒRT\Á,T!þ¬)ãæÖ¡®¢¦q4ÜåWLK˜š””žA¥=ÆÇòϲ«[Àóü‘ÌïÃí˜Û¥EÞ¯jƒØÍݦÐÀò4Þ¥EKÍ©ÂÚ,·¨×0Y!pFÀAõÓgÒè3‡ˆf
<EFBFBD>ÃDCÀ<Ñp„h8ª>ƒYo/B·"Ätè˜ú 3æ2sY¢c':º<>ètèÑéÐIâ™BàvâIÀñ$ G< ÈÍ4DCÀÑ°L4¬èr%ZÕå"è”.Akº\Ý¡ËEÐ<45>º\Ý¥ËEÐݺ\<04>F<1B>xFž5À ÏÑõQG÷à5jÒœ7@¢¹ Ó0“æ".-íúQ}¤¯¸×iÅÇ <0C>È/á>&Áe$<> ܇´ñÒ~÷ë#<23>ü$ò+âJ“à!$O ´c¥ýÑG:ù£<48> ?Ž+M' <0C>® |R}Æ.pÅb5Ù¥ÙV4><3E>¾T¼‡#è34=¾qÖ”½áÍ|ˆÛ+ð÷;5vŒ½°Õ¸³}ᵟ½_ãÊÚçKE»M8µc{CxC<#~ÙhŽmíq³½¹S³vV´;n¶y{ÑúËÿ{ÍÖVj³ïÑ~ÛöêÍFÍ.èßr<00>ÿÑà‰…šø/l<ÿ#JèÿðŽÖOý·ÔÿnØhÝxGHð!<21>Uÿ†RÿÚró»ø1ν½‰H  Š1ŽÛpLàVjdVä9ÆFé `_36ÔÇb{CW[{t`<60>Åúûû\^<5E>Û¢(m¡<6D>ߊý Ÿoxö„ÓÓéå/0‡ÍãZ7>·h¯õ>Ëú§6…û¤ÛýîÇxäô|öó5ÿÎÖQªÀæÛœ«‡ÝÐËϵ88Q`ûgµÆt&Ñ XMÀÔ¬•‰"·`á9Žåæ| ?c³:p^'â,ŒçSü\6áe¹_îëêÀí[£Ñ<C2A3>±ÁXŸ·a0Fšx­¼…iÄ~œ#lt ]i³X±yÜý=$òö‰¿tK\µT'IÜŠÙKÁýñØјÃ* #‰¹…F«(žýîÀv{$§SÚÐgO842<34>V[ú\Mƒ3§5ÊÁæËx“ö.îUhƒ‡édî5f|ìÅùZî<15>!
kϹ¸2«ì¢RŠ4çPiÃ2@Ó2åxÜïzËøýþ¨-#Ãî`4jX&d5 á2 c<><EFBFBD><n2„E‰Å¶LcÚÆÛÿÒœKâjÐvî)³ï >yD¤¦‡î>¸ˆF±DÑcÃCF“RW@· ÷Yú|³½cõPkcSÇÊÕ2êÚÛw ³Kq7 Ó/ @Ù|›ýã£â‰aÆ)ÛŒ0P¯€Às?jY žQIQL‰ôÅ7DúC<C3BA>XØjo*y½¨Ž¡f¬ÌÉ}Å`¨æ”ÇE§è{líä1Æv—CbÜøè¾Ó^Q/ß7`•¤z»<7A>wŽ,%¥“‡w7ÆÝg.;0¬íÎÁ<C38E>LÖÝ×ÜzyµÊæ”Âé3ƧÑãk•1^ò¦©ÂNqžüã| \ç¨ñ<07>ó<EFBFBD>Í ¼Ý÷À™{:úÍø~ºç<>ƒc±ÌÅùøÞ¹eŠóóÒ¨»;°¶~ðMò仫zœ‡Â#‡ºZúš«‡ö¯¥eãƒh<C692>>´C/† &qàÑ<C3A0><wÅÆ,Àx [Šá¢‚‚• BJ˜ Â}á==†Âv{ãvW/ýF(öÅLE11YWI;ë“ÇyÑÙútîèq;ÏÕJ¿Çñ‰ÑÁƒ.§ä¬µI{ï{<7B>‰É±}wÕ2iñHCSkßÚ•“Gj<E2809A>ä”\®øAÕã´Ø¬®±nZÜ#3Ë·`¦Êû3ôj ]Mtø:£ë<C2A3>$ÆfEtÏ(?W[ P»»vW£ «¢»§«P<_änë¼éúŒÄÙÑî탳³Z©ýQÊ7ÆÉÒówÁ‰Èª*üp¾û”Sbß-æ</$Õt©š^]ÌãF"×àQ€¾m wo9Z\
Æž|½7·>WçàøRôz-Œ"] 06k³Š¼®³/Ñ 4AX¶@ü§¶<C2A7>ÙD­þ«¥x(Ú>¨£v»¯\ #ã4˜ÎåKù(:@ž,·—&voÈÚ–ìNWÍœžÎXÇM<C387>â¶Å¡5W¼4ŠFŠÃ¢í¹ýðì®Ýߣ1k
ø—ÓÙ<EFBFBD>3áæÁÞtfã‡%kpN´FÌ=ë`_4† Ó<>q]¡ó…ânÐ-<2D>d‡"&¨BL„BƒAŒŠÆëm°MýÕ•üÙXöˆmÌÔmTˆ<W7Z®[O°s~_kûÆt]z}{znKo¼AºpІÙõ¿P2ѱ•J)zÙÅtŠÍyPeOØÚ½ ]ÃÆ!,K¨Ûï‡âõðpNä%±é‰µã ¢ÓÒtumß9·E'âûκ%8—òiO««Ûµz%—ö¶ÆW¯Œœ˜oìkõŒMœ˜÷wÈîøàMiHJ7å7̲Q¯fÞÜLr5fý°ö\sen-ÖcF^Í¡~©Yʼž[u×PŒê®¹ž¦,·v„<76>Å®pP¿)-7º!ÛŒ4`¢üž´WfÓ•¹MIµ”d_*B̨å‰ö§fR-%Yý~Ir­h³Zà·Ù x<04>J<EFBFBD>~“\nÊU•6¨¤)«ÔNdÑ Éq<E2809A>´•eãÊ{¦}§p`ÙÊò`t[õ<>- ·,uÃK5Y;Pbúi©L PÝ`œMv…³¡«B‰€¯¬<> Œ”ŒÚ¡+£Ñ¨ˆjl;v¥¤¼í°ÕÛ¢ <«ºâG«4<E28099>gêŸ)w·)N©ZrNÇ7þÆ̱ßÒ³æp"¼€å
\AÖî÷—•gŒ•×,ã0Ö­†ƒrk0hµ{ñ˜¡yu©¼Æý†ælÑìà8‡Ó^CØP7§MŒ„<18>XÄ<~@©³×XmBíààø1;·k|dzX° ÝßʳZ{Mµˆ,ÚG¦íÜÈÜ\R°<52>-NH¡¨ËY-Úv+=ªSô´x«ëbí®Ú`²3<Po¯ªr7Õö†œbs ¾~°ËÞØ1FMP«3xçô@OBE­hiœ:É3½HE Þè˨…4ì<34>H4¨ô1ˆšÑú¨ˆK/IÈø¥k±ä^<5E>šÒð¨}⺘Ç)p¿é”ûǾ¶8 ³gO·?ÄBºS¾HAóEÜøÞžúF¯¢äýX—1^:1—·c<C2B7>”r9§ :‡ÏaÆ6oµs‡„r¢Q§¹¼cÐR,Q¶®X³6qm¯ÂÈIó¶¸ÿ˜¼Gç(y—]õu-<2D>ñ.éðÌî0kÑïù7zwõvŸ8ÈÊÞ.Zdjs &Ä]¨M3ø­x5¡:Fàc¹EwŽþ)<29>Á˜€nïkñ¡ãEŽ«&ò’¢\sòG™Óær sLä«ì<C2AB>˜¯7~h««ñ8«Ø·E»äÝ8Æ4Q²[­<C2AD>Þ*²cf röA á¯Æô#T2ŸÐ™û )0L̽hžAÞ mâ_b¯(=–û™ÃQ_<51>B0{]£Õ!n²×5¼Tk³¿Ì¾Á‰6GÍÆöT<C3B6>Ý*ÚÞ]­Áü7€^œÁøsa™Xv%+o1·Àr··¶ a}xë{ÿKìÓËö:—ÿSmu®¶O<C2B6>?v¾ÅUcŸ˜ÊÜCýø´tûB¨÷ø<C3B7>'¯æÔŽãžz"~ç…¹Ãý¡É‰;/Ì΄&ÇÑF“x$žÄ÷îfèH´;ð}<7D>1zÃÁ˜â® <Ré¥á á¥A—•®•IZ^ÿZâø[ ]#ñÕïØlvÆÊ“3XÔrs<72>özQtÚ¿ r˜-ÏQ¬o¾µù,Ü씦c2‡ÜÊÓ_tpPuG¬VaŸ¥ÊQçä"'«¬ç-¢ï<C2A2>?Ž{«L㊹®Ê¬(s01¶{%³w"ˆ‰³×È–-yv•§ÌNiG´Ï)À“ÇCòèDžãê©»µ!o8zÔèw­~ÔŒq~*Üw:cwP¶°Ž¤Smí}Q+eŠZûçN,®þôk¹*{µ½jŸöùÂÂì„£<>^@I%IP àP*îŽQåA@Qö† zÅŠcŽÍLßI„[ ñ>w<>¦hÈw7ÿ5<E2809A> š
åÉDuÉ_áù«`<60>I|™ˆ ^{ K¬g9樭î°ÚlÙ«n«eÞaµ[bÖ"ÐF`üM°ºÑ¸ñ}!Áÿ^-ÿã/îuÖ¶5b6œyŠ¾;ºù|Ønôó<C3B4>é'ÁË5€²#.U¹'Óßmþ†ž×ô·ß_ïy}ç=ø³àáÜxN…6úù l¸Ôæz? v{å¾ì'ï­–ê{í‡þÌ×CU p^,În>7ŸÏ‡öáVa€­S­zóyßçÍÍ·®ûqÅßW|à‡<C3A0>A Û|á×éæóÿçy vQ<76>νOßFÂ0 ¿…¸ß©òšÿkb…ã v„Óðfà…/˜0´ ó09°‹›°ˆ/<2F>m&lÑë˜ÃðQX„;à.ˆÀö§` .Â>üÉÃÝ8^[aÎÄÏ JŽþ…ÚÖZ¹l­\±zzŽÂ,¾]@èý¹–Ã;óI¡<çà2ʶŹùì<C3B9>(BGpfûòµi¤= wâüq‘°ùsüù»Ôª³ÏÃ×g
Œ=<3D>Õ˜ñ‡§ç
`M>w:;Š<08>4H8s¶9Û<39>­Sl´Š6sêNË­¤eïõ)gò¥Æ„+Q<><51>^¶$Ð%vœ«K¾¤ÿ“<C3BF>Ñô9& võPFK\ÍøåÉB;<3B>¾b{Ý—¸ºt$C$Y|ÎEÛÛˆM­¢³óy¶ù˜&<Uà`òqß'ÿáö6Ò
endstream endobj 112 0 obj <</Filter/FlateDecode/Length 464>>stream
xœ]“ÛŠ£@†ï}Š¾œ½l»Ó¶BŒÈÅØÌ>€ÑJF˜´Ò1yûmë—,¬<>Àg<C380>þ*«âêXݸˆø—Ÿú-â2ºÁÓ}zøžÄ™®£%†±_6âÿþÖÍQOÏûB·£»LÑ~/Dü;Xr˜Îô-Šú<7F>üè®âíOu
|zÌóÝÈ-BFE!º„Lß»ùGw#sØûqöqy¾‡˜Ï™„bN ¦ŸºÏ]O¾sWŠö2<…Ø·á)"rÃvmv¾ôŸ<C3B4>gwÜ¥T²X)I˜vt&e@)“®A“I™ ²Ø ²¤¨`vL™bJl (G…žyBõ¼„gÎTn¶ T<>6[Ïšé`a+APBu…þÒ„,-T׈³è¨FN [ƒn-t6Pf¡³AÎõZtd1³,ëLÂZIsN%á©Ù¦v¨ K´¨
„,ª!RLF,(Ãä ÌÌð\T¾UhxM¶}xmÇk24ž¡Jª0a|µr‡—h®ÂËj{‰éרYo#JÐ87<38>´øÞ<%±Ú@2Ç)ƒ™ªlÓ
uëv¯Wø:<3A>þá}¸>U>—õPFG¯kž§y<C2A7>ZÁú
endstream endobj 111 0 obj <</BaseFont/Rubik-Light/CIDSystemInfo<</Ordering(Identity)/Registry(Adobe)/Supplement 0>>/CIDToGIDMap/Identity/DW 0/FontDescriptor 117 0 R/Subtype/CIDFontType2/Type/Font/W[0[290 0 0 258]17[651]27[592]37[570]61[548]86[628]93[605]99[557]130 131 536 142[580 536]149[580 0 0 0 546 546]163[360 581]169[591 0 0 223 0 223]183[233]189[225]195[878 590]203 204 558 215 217 581 218[348 0 0 0 492]230[359 0 0 0 585 585]245[536]252[532]508[616 398 0 576 0 572 582 0 0 572]582[241 237]588[238 0 0 340 207]600 601 301 602 603 319 662[480]]>> endobj 117 0 obj <</Ascent 935/CapHeight 700/Descent -250/Flags 4/FontBBox[-479 -264 1071 905]/FontFile2 118 0 R/FontName/Rubik-Light/ItalicAngle 0/StemV 78/Type/FontDescriptor>> endobj 118 0 obj <</Filter/FlateDecode/Length 7356/Length1 16952>>stream
xœí| t[Çuà<75>÷ð¼‡ÿ H<C2A0>À$EàW¤$þ@Š”ÊI)êcÙ{­ÈŽã¤6[;=iš&»{4îiMÒ}<7D>òqÚÄëz7Nš¤Éö“îI·©lŽ·É©ÓÍzãúd<72>$å(i{Ò³õsg澹߹sgH
aaüDkûÚ‡~¥? K—¯Ô½Ç÷2ÁOÛÒý×<1—ãëÂuÿÞ¹+«—î_~Û qÀáZ]¼zû‹ñßX[W/>xîì{z.įý_k+‹Ë%O>ÿ<¶p<º†ÒO¤wt^ĶoíÒµ?e—°ýë¶G.Þ½´˜Œô<C592>ã|<7C>HÏ_Z|àŠ)ᜈ! ð\^¼´RþÙg±Ý†ü5_¹ûêµ­?<3F>v€#wÑø•{W®4_PÄ6ñûy0 u,8¿°!Ì`Ï°^³3Ðκ± &È="ä=ÓçÆà9ðÀOÄ<4F>l™q0Ã:<Ÿ¥1Á*|ž¨<C5BE><C2A8>Ù7ËññÚÄj°îÄq¶<PM8…^8 œ†9X‡ûáAø|^†Wà'[[|îzhàoµá[èáo%ù['ø[p±ð­­ÿ!„‘7Jü5*Ïl¡å¶~È?û){<7B> öö­oe¶þpë[ØÏxO[žØÍü»‘ø·y.x„”0+œ$aÜàGNàQx
Þ¿ áwàcð ÔÓà?Ã<C383>¯ÂƒoÁ_Â_ÃKðø1ü<ÏA,½ÐKº¬(G\Ìlþ±ðÂÖ«BéÖ«z ú±NŽ?ÆÇûpŒCï¿°c†òæÈâÁ§¶Nônkb/<œïóý!oçð4y4˜žI¦=žágÀ91¬™OÌÎh<C38E>n­1½pγ1=£ þÅÏYÁ
KKêY·×«AZƒ„:p-Xˆ‡5Ò< çšò,{´çRš)0{³‘)‰äRR3'g¼šèOOžžñª^÷ÆŒGK¥°+v{´nºÓiOFÇ^\Ö±+Ûòhm4ÞF˜Ï¥f<ÈÍÆ¢GSR3 Øã¡1… (AÑ÷B:<3A>vk,˜¤fVÒé°&†<8<>É¿ˆœI‰ÔŒ&©qͬÆQŽ´Æš)¤"_žåŒt6î¡âØ­s@ßš´<C5A1>\ÒÄf/&<ž $<24>i“ü(äÄÌBʽ8™žQÓÞ´G<47>˜Á17‰¥Ö¤<C396>fIoâºãš2cS<63>«¨q5¾¨ gÏil ¹Ð¤æ°f yˆU[béœõÐ Zl!M( œUkè¦Å‰d¼ÙÓ½*´…¢ÏÂÈBå^ð$7ÔE² ׸I§šÇ<C5A1>L\¢uÔÅ<01>„í6¯k>| ÜÛ¢å¿dq<><11>íV½éfoXs„2<32>Ôš3„ˆ<1E>fO§×PãiÍA­Il9°ÖŠpšb®j` éjÎÄgcÁ£9Qia­84<5“1-¤}šcE} ¬•„†'f†Oè<4F>n/ö—ñþÒPŠÓ3™¢¢„ÆãZQ<5A>|=9ž±Ó—¿4æBKˆþÔL†”‡ÒÆ7оD¶Ù«âkìÖÇé\
Ô“FI†<EFBFBD>ÿ!ì-4Õm ˜(SQ[ ÝdŒq[•… BrjF+R㞤fCçSTt¸¸gɺ¤„áÖ<17>o,dJÍA퉠»ÕTŽ²•ÃZE(èv¡ž©® eDª÷…2&ª«B‰êêPÆLµ;”±P]ÊX©® edªBª¡wͼ€V=-›£Öšó]¹Á{ôÁ`Þ` 7x¯>XÍüäÛ<C3A4>òÕ!_<>j/ÊGu=ÊGµŠòQíCù¨ö£|TP>ªP>ªQ>ªC!O?wÓpÉ–,xhÛ…7%.½ùjKH µ0®ÂV\CžÛXQ]ìV)"¾!†¤oË™¹´ÖæŒÄ*3ÈHÀùšÙ=ÜòD8¿ˆÇ»‰àêÜ“8õƒëS|78¤vgÚY ׉
@Ž÷fWÅbwX„Z*ûÃZôg¡¢/!zÚ\~OgˆV>êòØÆÆ<C386>:„¡b·Œ¬¢ŒU”£J»1D¹´bD3aÔôs4MNW6ZT<5A>§çë)Dñ´èsi&ìAL<41>¶@A#61sKðˆ÷-! V§ãH­“UŽ­âNì\<5C> Ìô}CH,,«š˜X\Æa!±èFx<46>ÙÎw- ïê SE
ƒ(
ηU™&Œh =KÚ5+ÎHù9ø<>ÒCå6-´}¯¡öJ<C3B6>¬Ô~TQ_nH³òñAuˆˆõúsê#a²†©™O?n¹Ä}¶ÓC|&0û±u,w×<77>·—[g-¥oÌã$a˜j<CB9C>R€<52>"æ=„<>¢…´'fRnÜ2=ýéL z¸`tÒ<74>*<18>íùî½q$¤u߈`<¤õ7<>7ò/궨hЭßHpÉ7 <>¸XZp<5A>é³`ÜÁ-Ä@ü9œxèŸÊoI
Qý*F¡<ñ¦³<&1¶v = b«'èU³šÈJz…®Ð¸ËZ´N\ÏGoÓ §cåeZáã!­ «aÒ[ìĽÔÐÔHˆ\XFp4tƒc0ÆC7ïI!À{&'‰À$ápp˜"¦C·0êAè$BŒC§B·˜Þ7ƒ<37>Þ—&<FÐ,áqè4áqè.ÂãÐÑL p†h0O4 X š,Î g ‡€%Â!`™pXá|Å:Çù"h•óEÐç‹ óœ/Ö9_]à|tóEÐ%Ôqo΀—yK;„àÝ:xÁ+¤tÞŠaëÜF³8÷ê á\å8,s _îËÍzoñ7î×Azã-:Hèà<Y„u<>þ<>ÂCˆÛŸï:oqô·ê ¡ßÐABßÌ"<¢ƒ„ð6$„G÷`n¾·óGL ý:HèïÄ7³¿¢ƒ„ð¸Â¡[²I0ÕxP³®h¢/õ€±ãÉmÅðl[tGg¿³{”OîQþþç+lÿÏ]Δ?Ù.‚õUÞ³W‹Ä{òÊôb3Íî*ÿA:œ+¼|CzÕ,ì*Sy塼òŠe¬ |Øò{{k–§­ßÕ‹||GùwÙòc…íQú
Ê[Þ,ÿªË 6Ë2¿°wðòî_zù¦}Ó(/kŽwï(_sš<73>ƒÎwþRÊ—þÅ•×x,ç7ŸÏ éºù¢þ[Eño)lÿÙk<C399>Ñ]2üyèÿú6½¯™ZÅ'°iá·¤Àß;²õªpJxZ ?ÖÓÌD;L0 ÌtL¢`¯ƒ À<íñà ŠÒ¼™IRBÁŽw4ªÑF\tήh´£Ý媬(7«j}C  Ö›-æŠòJ—«£=ÚíÀQSPÿèQ‰1éÑGÓ÷÷ˆv¹¼ÔT¶<}fÍĘiíÌôr™©´\v0±çþ´ò×ÝÕ\ÿ<>#K<>˜\¿ìî¼>8]a“;—Ž<E28094> gPø*áó Bk,„²‰¸õ­`ŽsÈeï0˜±ÝÇÙVÁëõ{ýb»=)éŒvxÛ]ij·"•ä u»]aï´ÙÊæÓlˆ×Ÿc+¼¾×®ïRv[bßâßÿÀ+ƒ+rUM±Àn®$f2õ™ˆ¡:¨!~Ìò¾]ülsQB*å¬<ÊI„%yý¥4<C2A5>ÍWôêÅBÊa¬FWcœȡO ÚåPªFL²Ë Œª(½L±³4'uéüº‚]?}¯.¤ÀçÅùË Úba3ÑyD¶*ωÉIU”¸«Êk*j·Ä‡Ê/ IÂq ËÚ£‘Î6ˆô+zèÂWPÀžÄ狺˜–—/l¾†LÍ=:¼ù—(eúp}¸ b±ƒûчEÔ²p5Ž. 7P&`×'a<1E>9N:È÷ã.ˆúýa5¢ûq <71>ó¤»,òhh"<22>YÇæ~л¢âý»W
Ü<EFBFBD>- ³ósᓧFO5w­lJ¹ÅÉÌóGGO7M¦&ïj}ç}JÇd«Õ^Þv4y(pÀ_SÕ6ÅžÈD“Õ.ÛÚ<C39B>ô÷7tø««Û¢³+dC7ê¸u\ÞX<C39E>€+<2B>Í¡½Ã&&Š}" P•þˆ*É•AªŒDòœHW,í/<2F>íØWÈ_Ô½fÝ®eç§ï%<25> yëUöU¡¡.6ä·ˆ¸T<C2B8>kûR31r#“nP´!U&‡-¨EqÞŒ®M¼¸c¾Ý(5ú8ž un2%L#éXYS@SGS;Òiˆø;›­èü¨{仫‹€â×uVõ%ºê#ìŽF#Ft|ròÀ…ÓH$;ŽÈ&›ì”<1D>S/ÌÚ•Åîš<qæm“S£Jã@S|ÊîR»úkì²Cvõ…ÎÛ¼Eúhõ¶ô.ÌÖ—Ú¢M-í˜ëòêáQA^„wñØ:‰>æD«ƒV¸S¼îÊRÉPM-i† Óõófm ^¼;ÆqÎ>CyhÇ„ˆJ)ß¿`ëþ–?©õE:­hRWCEVtc±T<C2B1>B*qÑX¸.º¢ºÂÌ õréùWߥ«¸ÄÕ‹ÃÃ";:9êÃc˜WÆ[ Eø·ôýòø“+Ji©²òdïê„R:÷–öÑ`CÃÐy4e7jã%ô† ­,†Ž\]ÂívˆäÎ"Í<>_$<24>Ý!ŒýÁ•·Œt®iwÈm¿w/1}ïZ|®E`NÙ©ÈRùÑ®£ÓÔ;<3B>@¹$+ØÍ„¹¸òà¥ÆÆKk@»Ú»ZOͪêì©Ö.2sñV´\eøßh¹Ü°.ÄduµlÚÃpY È&Ž‡­<Ãbÿ.ÃÕÖÔ¶Ô†<48>æà†3®Œ<18>5çÃY³ahá@Gþí¬¡.õm¯÷òt
{™ïhdÛOyr¥¦fåÉñ—y>Çýw¼÷ü<C3B7>R[«GÛW'jæÞ•øïÑjõh€c±A3KØ<C383>! Ü°230ÑŒqš¼Ô<C2BC>Ë4oÑקªâ.TQœzðvúü™/OÀٽ²NØ6ö˜Õ2Ý+*n]³2f½º°vnÿ^hlíJɲ½X¶GÎô}èÔ±cÓÊ[Ï76®ÝØxc<>Ò:q è²›kE_<45>…M£ËË£&\‹º´ߟ]Ÿä9K~- ßCé±fÚYqÏY•xdĘÍ}fÝüj¤Ã¯Zåj¾áѱÃ0Š¾º<C2BE>éŽxù”=MêMǧ;©îìhxŒêÇÐ0DŸ±+NÅÞ3rŠ×žN^oÕch×<C397>½Âch/¼-&·kŠM³áq ˆÂ`7€Y™Ä¤%0ÅyŠæÉa™Y,<B$È÷»0M¦ƒÃvb§c.S{z:PTÅ…§F}KËÊZÉ·4ô¾ú=]³T÷ɼUùÅ3~Uiÿ=''{/_ÌóÑbű|=Eî‰á„¼“‰ÃMVËvÙ~zètr<ë«-Š<03> êÂCÌŽŽZ]­ <0C>G?­™X%KN¢„"®M?YÒF©Ãq#Ódó¸òÃI0r?¨þHAž¤GÃý¡DwAÞ<£/£ºÑƒg×94~üèInÀlàkh|ëÒæ÷ø¶X91{:µù}žÕ "±÷#WE°B±&ò)#„ƒ˜ÒðÍ®˜~Íbqí¾
Dt [ÁÒ¬ožTš—TQ{)Hf7¹pÕèÃMøIä䯨{Ó‡œ0˜@ªO V$PsÑÏà‡<64>~"s¹© &Ãõ4Žoý„¯'ZGð¢Lga륭8|˜ËÛ±6)O^Q<¨‡ÚºŠýClËb F;ZÈÙéœøW2u©œÑø´)_¯ƒ¯¥î(æûå^Og=ÞÅyÔ5¿MœÉÓ„nqŠ™ ëU¬ÇÚ'?SlÄÜvà"9až*ÛjÄlbS͵O£lž('·Óü—az ¼]TÝ»´òö^º£™5_u²íJÛ¾tω5Þ>çÀX/ ÓªÞú3ÁŽ{Ö6¿Í½¸êôØøìæÿÔáÙññôæK†á2*Å%4òi}™éâ¡<E28093>aÍ<>²«ä²î^ƒé˜ãY†s·]†º ­{.C\‡”}¼Š\—à™-kßWîT0áÀË7h)²yZ  6RZ
xš)­¯©Æ7Š´ ·÷¬Â|)?ÈýÇ«¼®®­eë¡STŸ2jåá•æ敇^Q<eåáÞÓSŠÛ­L<C2AD>>=å÷O<C3B7>¦u¥óIëê«Ù}JËæŒqÌKs9cUy±­ g$WÓ•¯§ʇ)­8,òÔƒ<C692>a7ÎÎœ±¦ÑÑS<C391>½“Åz=—ôårFÔîâgŒt#?À—°jžsŒ)ȳÆ"jbY©¬TŸ Dä‡zÎx~¨¡S¾ûÅùî—Í·|ž"ÑT(´±‚ô$¥,šBl¡Ð…8;ó­jÜéHhSàö[(´;&\ìù¼ôør.i~»‘"ë׳”?±ìõ¢°­Fù!&È”rñ<72> 3.¾¾ØÆé:hˆùl,示q·Ojh¢Hg„NjÉ­Üb}Ë~"ìt(Ÿ<þ;É–$<24><>ƒý_Ñ£Y+úßPãQˆÆ:nsêMî<õF!¢FB~¿eGŠ<47>Œ³—+ÿ:‡Ÿz]z¾÷étØi-²Èf×á®C#û“é#M=ý'šrÓZÞííß?<7Ò2{X u—È6ɺ_m ¹ë«ŠË£þxsS;uûÛöyÜΊÁÞ¦<C39E>F”§œkóLÞø}žØM<¹yr‡9«y¾ ÃÃôî 3¼¼Ìε­êÏ#ÝŽqË_'ðº?¥º/=ƸŽ?JÍ<4A>êÉÝ·»{8@A<>¿†ööa<õ¢sñTàGUóRîP\™í¥ƒ0™æ%ãLñÔj$âãñÔ•¿<E280A2>íÚ>³§ßç8Ç¿ytzû¤P7Ú¯\_f5|·ÿþÇO§X¥±ñóøJQJ癢Ô²Qês<öá×ÿAYöÑý<C3BD>òÍãºÛnßíäŒß5ˆ YG)+Ëfþyû[åÁn­<6E>mÂÇ>&Øä
«]xF©)®bÿÕfµ+ÒfŠib·Ú6Ûªˆ¦Š1âU¤Y5±ª"IØ&Šæ>,Œ4øzE=Žuvu‰Yç$úY­¯ª¿m7<6D>þ'3-¶|ôÖ¢r«Ý¼ù=Kqù³v«Tô)ö|m^c¿VD?½§ˆ~G Oñ~ô,ÚQ0³Û¾Úü§ØH>s7“»oÜÈÖ'Óæ„ôI£VÞwýÄôõ÷½ïzMO·ûúûú¯®×vt¸×î»om,µ~µRƒª9Èozc~½Š²a<±<>pƒßøl¤
*»ýdºð±P`çׯ]yÞÂû-«Y±Ø$ùJq9BFð© IvZ,Šåw,Ì®ðìã¿%l‡îX$wæ<77>P_°^kšÃ(¯õ…—à ¯"<22>Úqª·ïÍrD÷WäÉ[p§Å¿¸Ð+Øñpï<14>K±ÔÂïÎ(vùëÊÓ€ûlv럕¯?tèbRi ËŠììk9ºaWŠlŽWŒ[+Yù‡å³±ùäQí(ƒŒ2tÁ`,f·ÐÇñtÁ#¡@‘ÐŒ-³°Šñc[ ˼Q Kö°Þéôû¢”Áâö½T¹î¢ÔbÄI³ú§«]¸PßbÑ]}£+­“T•ÙJe'«c6… ò•ù<E280A2>ŠÈÈÀ¥XìÒ€™j¬²ì<Ø×dûñÆŠRâ<E280BA>香¶ûwë;W††×#|g}U¨EÝôzc]N\1%ú¹žaÔgâ¿q¥U˜§{W<Ö kš}õøVu ‡î]y´ï*;$dS󇄬”<Îw|ûr÷á/2Ùa-ÃØýÞºÀèåîîË£m“íí“mú·¿xèÔ,«l‡,YÿÜzäâ¡CãýM©®®ñ¦¦ñ®®TÝ*¢WIü&DœãYÝD^&GfqÈ«F¶7nŒùª úUÚã<03>ì<EFBFBD>1:mòù{“Et
xÖŠF xÎ&} N¹<10>^¹­¯ú: RþÖT[[ªµ•ÿsÈfË_[ãë½½ë‰ÄzogÊ·ùm„EšÇÚ;Æš›Ç::Fé~<7E>ΤaÀσÍt~Ç8<C387>µŠáÃüŸí“hà6ÚÐÛ”ÄÎl÷m~xF ÷l}ž†9(†}±
 $œ¢ø=O?Èoô ܲF@«’Ÿ±
e¢+l±šM)¶Ë¸³,ßcSðµcøþïâŒÆ™JÏËv<C38B>©
˜žÎ±šÇêè{<7B>U¢…<C2A2>P ÁXc‰ Ю(éwñó´ÆÙHQN\[ä®,G<»®¤c•!ǪÚ^ØŠlÖ°lcEBQÙýù özÙÓxB´ÉO—åŠÈ¼›ó±?V#ð­<59>g¹dDYÜMyü6³ãœc[¬D´êqôp²ÁD¦Éæpé ⨖½~žÞågà<óÈA³¨Àß"ƒ_¹Bß¿õA»">D¦¯ÿq.èÙZ„s4 †å ãÚ4íÞD š¯?K“ ´<>{Aã69ƒ&;xeW^‡N3†r<06>fmžœ«\ÎSÜÕ¹œt‰P 5.@§™»¡'éŒÅ—m~<7E>.cOÈ»¥÷Hmí^‹Ý!ðì—>þñ/-Ò½’ã˜ö¡iÇ9Hô«Pæ­}]æU.3y:§ý€+_ævcñgÙp( |sóANî8Q>ÆÁEâç,Ñ)öûÂEŒ7¾˜×Â}'o<>qg"ê5àn!Šrb]~ KµRrq¹-Y<E28099>´ÉvæÝ|Ñ.Ûd¹”5;Å›ß*•§lr‰â°~ùËV‡É¯ýk¶
§ÝYaû·À p~„9Z 2æå<C3A6>˜[aB x;ùñ5¤_EQ¢Ÿ1Ã@)ßõÉÔÆ’²ÓÙT&]²ÚmŠp¢Ø*<2A>°YÊ,RÚl¢Ÿë?c:¿éÝŠ˜s{„¿aõÛ-&À/ô¿
/E?A¼¼Þ;ÃûEÁ÷Ï;?§qíö4„¹¿úÙîÓOÿ~9<>°šésÇø0‰øÝ·+ø«%¡¢ôùYs²5(˜˜íœoœßêÏ0ˆŸ üŒÿL&¿¿õÒžýßÉ›/ï/Ä0Æoa÷|„è¦ÏϤkà'u:$»«p^öwÐúFïb$,/˜ëŒÐçŽèî£SÞmÆÊñ,ôæóæóæó¯òÖ Áž¢»„cz ú¡]ÜŽ»Ø¾ã}àÿÛçGx|zvõÿ<C3B5>Ÿ£øæà|?oð°0Œá§†~ªþù°¿ÁüúÍç Ö…¹ £,~ ,p¿ƒk†>øUü€Ã•ýv Ìߦøÿ@0¬gaO¹weaB˜]ê°)Gjpea3Ðù)ž…óp˜Wœ‡UXƒkpVà^¸Ší»á2x <78>ÿ<•m¨O¥ÃxNChïY&qU¹8Û6Ž''<27>®Àƒ8nôµ68„¦°gëüwSˆ{7J´KûŽ]C¼»9ǹÿC`ëëôìñ ?_žœÉ0öTZcú‰]É€%þ™Ké$¨4S#f_°ŽX»­ÍÒ>dÍv­Ošãæ¢Wâ]öø³ûbe1gLyÎCÕÊØWb¹ÂûDÈøØã3Zìñ™Œ¸<<3C> Pë÷­<C3B7> b<>/MÍJŸ˜ý¬uÌÚk IÕÉÞü Ûz‡fz2#ÀÀ-i~ÿ%ã ¤
endstream endobj 103 0 obj <</CapHeight 1536/Flags 4/FontName/Nourd-SemiBold/ItalicAngle 0/StemV 156/Type/FontDescriptor/XHeight 1059>> endobj 110 0 obj <</Filter/FlateDecode/Length 223>>stream
xœ]<5D>ÍjÃ0„ïzŠ=&‡ 9íÑJBÀ‡¦¡N@ÖFP¯ÄZ>øí#)?…´0Ì|bvå¡=¶ä"È {Óa„Áeœý¡ÇÑ‘¨ö`<60>U¦™t2ÁÝ:GœZ¼¨kù<>Ü9ò
ë{Ü
ùÅÙÑŸC—t·„ðR,é§OÎzB<7A>Ûµ6ù.®»Äü%®k@Ø]ÝÛoqÚ kQÔJ5PŸN<C5B8>@²ÿ¼ÑÏh•¢ê=õVâée8/øjeæT¨\¡4ÉáëPÁ‡LåwÒ‰oÉ
endstream endobj 105 0 obj <</Filter/FlateDecode/Length 126>>stream
xœMŽ1C1CwNÁ¾ùIΓªú½ÿZS:ñ@6öž<C3B6>KS¾dô×lØ_BK7àCkܘq¾Äršð¡ºìÁ^<T9Ôõþ¤Cb½ØIdW(\Iñ Ú`$8Õ•Ã<E280A2>ŠEOõrzH Ö6ZN8½XSò‡©xèM_¡Ù.¸
endstream endobj 106 0 obj <</Filter/FlateDecode/Length 124>>stream
xœ=ÏA!À;¯à®ï¡iz°ÿ¿Ä퉑„ Y<_:4ðkõŠ<C3B5>Ðád¦â:VfÌê”ý%âÇ æ}X_FÏFá¨+6ÃÝÀ“°¦¤D¯rÿ+¶”Ñbg™yŠŸK|à ?¦­,o
endstream endobj 107 0 obj <</Filter/FlateDecode/Length 218>>stream
xœ5»q1„sUAšá%„ê9<C3AA>ÇÁ¹ÿÔ,¿œ}p˲èDC‰éMY[IÄvÕ_2„Oý…¤¿Lñ .ôŒ* ½ÿ¬z`ª—<šž|ïHgšË€'“æÀ<E28093>ÓÌÐKÂyzCVý#|C†¬KÏ°NÕÑG8;ÖI,0ºÕ._L‰¡*’ļì^†0æÐòÞd«»GÈÂ[Ð8è2òÒW*c
åKÏØK.ãŽRÖc|èsLóYI¦éI±q~­Å¥e¾obx(BòJmIÜwôïxÇÏøvÌQ8
endstream endobj 108 0 obj <</Filter/FlateDecode/Length 310>>stream
xœ5KŽÄ0D÷>ˆdþø<µf¹ÿv
;½i½ EšTbÖIôÃ#ØšþÆbmØ)T-<2D> Þœé‡ƒxzÒ•Tet•Òk!¶¦!<>דýìÞïÏ£
UóK÷Ð¥/\@:³hk—v$§5¹ö{èÀ°ô <0C>®àJÒÌ7ª«·nµ¦­@Ïî 6)¦¼t<C2BC>´o´xWBÇ!F懧¥¢rÁ5‡Ü èîuðÁ >hÜþˆ¨ÕlLßuáð~<7E>h¿4ÜÃ+>#¿ÑŠ¾†Ub-Ë>ÑFåI-0lÉAÅÖ—XÑ6¬<36>wñŠ1mõÕ—<C395>>­V Ï€H<£<>,øéÏHpOž˜ØæÜC&ª`Žb5ìû~T÷øŸñfvø
endstream endobj 109 0 obj <</Filter/FlateDecode/Length 199>>stream
xœM<EFBFBD>A!E÷ž 4ñ3 ržiš.œûo âdº1OýÀÿ€M©<C2A9>^У`ì÷7
*Œ^2Œ®Í×Îû¢Ì„ZuZÎ2plž¥Ûͽ·U6¨7 ªæZTU°KÍ)F„iJ»(ˆ½ÑLjî3³º…ƒÎÒu$ÎDÁMŸ¹º™ŸÞÐÝÖ•¥Fü;ß/<wÌl(î{ÌÚUºIr‡^·XÄvqWʪØfö
:ÿv<Ëw[…/èÚÖÇñà£ý§üÂT'
endstream endobj 104 0 obj <</Filter/FlateDecode/Length 311>>stream
xœ]Moƒ0 †ïù9n‡Š<E280A1>R(´•8ìCcû41]¤¢<>ø÷s⪓v=Žý¾‰í¨íŽ<C3AD>VŽGïv=8>*--,óÍ
ดK%Ü=
1 †E(î×ÅÁÔéqfUÅyô<79>ÙÅÙ•?5r¾À3Þ¬«ô•?}µ=Æý͘˜@;³ºæFtzÌë0<01>lÓIÌ+·nPóWñ¹àiˆz<>˜%,f`}VÅqÍ«ó¹f å¿\R<>ä2ŠïÁbi¥qœÆ5r8K<38>x‡¼Ý·žÏÄh^eeà<65>×îrâ y¿œoKòϽOIÚ|<7C>ÜÜÏKÏâù@>ùÉóØßÕ6<C395>ù˜û»Nô†¢ ÍÞ»òmûÕ<æ)nÖâ(Ãþ ýô”†ÇŠÍl¼Ê¿x”9
endstream endobj 85 0 obj <</Filter/FlateDecode/Length 126>>stream
xœMŽ1C1CwNÁ¾ùIΓªú½ÿZS:ñ@6öž<C3B6>KS¾dô×lØ_BK7àCkܘq¾Äršð¡ºìÁ^<T9Ôõþ¤Cb½ØIdW(\Iñ Ú`$8Õ•Ã<E280A2>ŠEOõrzH Ö6ZN8½XSò‡©xèM_¡Ù.¸
endstream endobj 86 0 obj <</Length 17>>stream
614 0 0 0 0 0 d1
endstream endobj 87 0 obj <</Filter/FlateDecode/Length 183>>stream
xœ=<3D>;ƒ!„{OÁþ@ðqžd2)Ìýۢݧ, ,v@ exHkÂÆöñ¦BÈdô3<C3B4>á¯<$ Bð*¬ÃÕÖð°L<08> WZ7®<37>ŠÍpšÏÁ66ÎaFʘ ݺ;V×V+{C<17>0qÈ)Ž9…xôXιß/yTE¾ÈãF2õ^fI…¥£égM6ykG¢·O<C2B7><4F>iuÇ·JþwXÀæ<C380>1;_å[>åxûMã
endstream endobj 88 0 obj <</Filter/FlateDecode/Length 155>>stream
xœMOI!¼ó
>`-(øžI¥r˜üÿ$3•\ìÆ^Xtî #aSr~€<ƾÓÉoòÙ/ݱ.6×­¤ÊÍOªžÅ9 Ï}ÔÃOR™‰ÚÓŠD7í©[¯4$37Ç<37>r<14>
>xÃòª†Á«ù~~¿_óþÑñ·ÆI/rÃn2Ï¥çRæšÂ<C5A1>uÓŸcûŸôq]6.
endstream endobj 89 0 obj <</Filter/FlateDecode/Length 128>>stream
xœ=<3D>IÃ0E÷œ X2“eÎãªÊ½ÿ¶8<C2B6>¬x >> ;162葦SÀœfÄSn¤•pÁMÜ'îB‰nÌ6VÇ#¾a<C2BE>Š$îDR·—<C2B7>•¼n?.<16>£¸|†*éìŠYKSªŠG_ÅŽý|eÃÕ,Û
endstream endobj 90 0 obj <</Filter/FlateDecode/Length 142>>stream
xœ=<3D>AC!C÷œ 8ˆ_=<3D><>N7½ÿ¶œîž¨Kœ…×â¦cëTçþðKi€¾¤ýY Ü5 mÑŒñ¡b5ŸœÂòÁqÑ!ïýrÆ@ ¨s,!ŠŒzè“ùÍlDƒ±waŸ1s·rHTكdžW½ñ (hb÷¡UÚÂû…d÷¤IÿtTyÓ™7>
endstream endobj 91 0 obj <</Filter/FlateDecode/Length 164>>stream
xœM<EFBFBD>;1D{Ÿ‚ ¬d¾6çÙ(JáÜ¿ ج”ŠgÄÀŒe@T <0A>Gã…<C3A3><E280A6>¾MУ
sLÈ©p·C>aµÁô ö)‡÷¦Ë¦a'Y=8$ˆ±ðœ5Ç¢˜p.Žuf<75>±c¨H\s69ì¬V]HEòLqWˆÕ>Ç.ÒÉTû=ì.´¨SÆÜ<Äa('„×T'Ô$®¿ýyíÝ~½¬A
endstream endobj 92 0 obj <</Filter/FlateDecode/Length 148>>stream
xœM<EFBFBD>;! D{Ÿ‚ ¬äf9Q”Ü¿<C39C>m`•žaÆx ìR°ªX!4òúE`j»›+tíJeÀ:a_'zn²ÛEü ßîÝ…öšú,*‡(­k<C2AD>l8 ñÆ Z7Ê1Éi5@Îs£?œ†& PÔgÜdO´É3*uO¬nÄÈ™ÿ0á9z8<
endstream endobj 93 0 obj <</Filter/FlateDecode/Length 215>>stream
xœ-<2D>1C÷9( Hø<48>'­Ñ,fî¿m“Ô¦êIÇF$“˜ðy„SHDœtÒG†;7ý<37>œÙ ÌJ<C38C>9fX0ž“ö8ó<38>òìMȪðàb¶ö(‡<—Óߨµ€.T3*.À4Ì¥AT
oNêçì±òŹf»éÓx0$èL¥ÉÝlØ#Ü.ÿD<CB86>½­¥
ù¯¤òh¯Sì”H)$G5ιîy`xŽÐzDUõùà”ßCžqúË}çŽÒÿ¿IÙ¨g<C2A8>ê=ú¿ãg|òýLÏ
endstream endobj 94 0 obj <</Filter/FlateDecode/Length 207>>stream
xœE<EFBFBD>Kn1D÷œ ´ÄÇ`8OGQ<16>ûoxf²ò“¡
(ÙH˜ŒS02/BQübpyþ¸;Ã×¼&‰7Œ6 U­•®ÒÏ ;µ!<21>ðZ†LÕè-)§<¢CÂMÞ$Ö–»<UH“˜ºvM.<1F>Ñ¡-©âî¢<C3AE>Õô<pÃ
;¨½<C2A8>R .­URgƒôÃ0×Ðá¹þ2ú<32>ζÃstÝsbø熟ŠÊ»!*©]) Æê¤(1v]à{U§:|@³<16>ºÛ„ŽàcÒŽßð#ØL¤
endstream endobj 95 0 obj <</Filter/FlateDecode/Length 194>>stream
xœ5<EFBFBD>AÃ0"TccüžTUéÿ¯]ŒsIFØ]´µÉÂj“_:ÌYU…·<C2B7>øEl tôúwå6¹*ß…Ó~Ý\4½F7t<37>(p<>xÜØsÇ&ÄHC)~‘Š à„§Ñ´—mÛH¡Cá>n¼VF˜Ÿ²]4B÷™zb­"­O&íøžP:BÏuò&E<><45>q²£=÷«Kbª(w¡7yÇ<UÎ ÄÁŽŒY·¾éKúö™Jò
endstream endobj 96 0 obj <</Filter/FlateDecode/Length 155>>stream
xœE<EFBFBD>AC!D÷œ üÄQüêy~Ótaï¿í š®xÃL¬Å4)RÓ ÖºZÎ|¿ ù®lá†~¥ÔÃ>¾<>óØT0ô`K]cÓ…Þé´ÃÛ(
}°_<C2B0>Mwúû?òa<02>É$¬e¬{QÍ7¢“Ðu6ιMªC]äiúæ)¨y3JÛªMXÉ<58>é0ƒèé
~o$÷]¹&¾åØ…=“
endstream endobj 97 0 obj <</Filter/FlateDecode/Length 207>>stream
xœE<EFBFBD>1ƒ÷œ‚ Œçï<SUoÑÞû dÔMòIlh<6C>èÇTÒ”³ë b³E¥C¿RÇÃ!¸U,½%™ej*cTöÝõ0leRö'ÇÔT†ÓÏÿ?™™ë+)<29>ˆæfkÿ;¢¡`êçaRYbÁÒ«y(ÍÃÁÀa´a‡wcj<63>ÕªžJmmØß-Õ6xµGŸ/¿].6'ŸÞ½Þ=Çȵ¼â~>t_Ÿ5ó*›Ã,ÊÎ<C38A>Yõe©5·?Gˆ{¼åiRÈ
endstream endobj 98 0 obj <</Filter/FlateDecode/Length 195>>stream
xœE<EFBFBD>In1÷œ‚ ´ägãóteѹÿ6@û++—LéaÎŃ!­±Oí—lã°º‰±Xðµ|“H§ðC2£Xƒ³È6Ï؇nŠÃÁ>G@õCˆš-VÔdW³©ŒºkšoÞŒrm=Ó¯¶W£>h\>ÙÆà+rÑåÀMËåÅЄeþce³±%šò@Xe¡-<2D>á£-2/¹J°]ZäEÏ ÏáH•½ã¤úŸõM?ôM){K“
endstream endobj 99 0 obj <</Filter/FlateDecode/Length 134>>stream
xœ=ŽAC!D÷œ üD@ÏcÓtÓûoë€éÊæ!&<26>Gð#-„EÕY<C395>_BÓ¾´¢rôhóK®7‡wF¬J°Y´ÉÌ.Ã<>ÞÚ¡™#¸ÂMŸtŸQ{Ÿ£Ðúù³®Õ<>8er¦Â¯pê-
׈J%Ôf"Ú2…þ¿¼éý˜
endstream endobj 100 0 obj <</Filter/FlateDecode/Length 198>>stream
xœ5<EFBFBD>1Ã0{^Á<z<>2™ÎÿÛ€L{-N¾ã²^LÁè^ß/™šðÉCBY3ú¼•qáéŒ÷ƒ>ª^¡†FòÀÚg)H´¨¡ÔÐiúð‚….54­¡K…bOŠ•¬<15>Š,ïè m^Z>ZO ^Å&7m˜ªÍ*µ ¥<>Ÿeä\RÛT”´
>?˜ GDÓvo¾<6F>ç_Ñ ¦MGiÅO]÷CY g Ù·G>w—|ÃÞð¤‰Ii
endstream endobj 101 0 obj <</Filter/FlateDecode/Length 226>>stream
xœ=ÑAŽ!Ð=§à&" x'<27>YÔÜ;€To*¯T¾¨k3vœ -\câ`ü!Pî¡?P£ÀdA2_9|ý<>ånëÛؘ¿Ê>1<>=km|`.õÉ.8u9(B(F4Öù·Ñ^ùA<>âãIÑÈ÷VLQ™4É|Ë—Ö/§—5\ØÑmº7ù¼o+J¨«×DNªâÓO™×üZ:£Õu iéÀà÷´­ª®"ëÀõ݃¨moù Ùã®Æã÷8Ï•ŸÐêô¨ä{#ÉaúÒŬñõ¶ÿß<C3BF>
endstream endobj 102 0 obj <</Filter/FlateDecode/Length 164>>stream
xœE<EFBFBD>11{^ÁlxÏEQŠËÿÛ`Ÿs©ÁzY cáæü€x2Эw~Rdw?#6G×EÊá4ø ÏÎkÉ'5ÄnKN¶dMÝ:~¶Ý®'Yßxe™1ÖR:ëVì^:DM0Í1œ­ž!ÆŠ¬¸¢—\tQ¹ª-2Wõªµá @mùcZÍoÏ­óWCÒï¨ÿkœô¦}KI;
endstream endobj 78 0 obj <</BM/Normal/ca 1>> endobj 63 0 obj (node00036875) endobj 59 0 obj (node00036871) endobj 57 0 obj (node00036870) endobj 55 0 obj (node00036869) endobj 53 0 obj (node00036868) endobj 51 0 obj (node00036867) endobj 39 0 obj (node00036855) endobj 35 0 obj (node00036853) endobj 10 0 obj (node00036731) endobj 4 0 obj <</Author(Facundo Nicolás Colque)/CreationDate(D:20210905180053-03'00')/Creator(Canva)/Keywords(DAEpLMhmRl8,BADsJ4ZOebQ)/ModDate(D:20210905180053-03'00')/Producer(Canva)/Title([S5] Python TOTAL Cheat Sheets)>> endobj xref
0 119
0000000000 65535 f
0000000016 00000 n
0000000122 00000 n
0000003712 00000 n
0000035391 00000 n
0000003800 00000 n
0000007596 00000 n
0000003898 00000 n
0000004400 00000 n
0000004458 00000 n
0000035360 00000 n
0000006496 00000 n
0000006442 00000 n
0000006411 00000 n
0000006356 00000 n
0000006325 00000 n
0000006270 00000 n
0000006239 00000 n
0000006184 00000 n
0000006153 00000 n
0000006098 00000 n
0000006067 00000 n
0000006012 00000 n
0000005981 00000 n
0000005911 00000 n
0000007131 00000 n
0000006527 00000 n
0000007217 00000 n
0000007162 00000 n
0000007303 00000 n
0000007248 00000 n
0000007397 00000 n
0000007334 00000 n
0000007565 00000 n
0000007428 00000 n
0000035329 00000 n
0000004578 00000 n
0000007534 00000 n
0000007481 00000 n
0000035298 00000 n
0000004661 00000 n
0000006637 00000 n
0000006582 00000 n
0000006723 00000 n
0000006668 00000 n
0000006809 00000 n
0000006754 00000 n
0000006903 00000 n
0000006840 00000 n
0000007100 00000 n
0000006934 00000 n
0000035267 00000 n
0000004744 00000 n
0000035236 00000 n
0000004827 00000 n
0000035205 00000 n
0000004941 00000 n
0000035174 00000 n
0000005055 00000 n
0000035143 00000 n
0000005138 00000 n
0000007069 00000 n
0000007016 00000 n
0000035112 00000 n
0000005252 00000 n
0000005880 00000 n
0000005825 00000 n
0000005794 00000 n
0000005739 00000 n
0000005708 00000 n
0000005653 00000 n
0000005622 00000 n
0000005567 00000 n
0000005536 00000 n
0000005483 00000 n
0000005452 00000 n
0000005368 00000 n
0000007950 00000 n
0000035076 00000 n
0000011115 00000 n
0000012820 00000 n
0000013199 00000 n
0000013328 00000 n
0000010523 00000 n
0000010819 00000 n
0000030875 00000 n
0000031071 00000 n
0000031138 00000 n
0000031391 00000 n
0000031616 00000 n
0000031814 00000 n
0000032026 00000 n
0000032260 00000 n
0000032478 00000 n
0000032763 00000 n
0000033040 00000 n
0000033304 00000 n
0000033529 00000 n
0000033806 00000 n
0000034071 00000 n
0000034275 00000 n
0000034544 00000 n
0000034841 00000 n
0000028741 00000 n
0000030493 00000 n
0000029161 00000 n
0000029358 00000 n
0000029553 00000 n
0000029842 00000 n
0000030223 00000 n
0000028867 00000 n
0000020576 00000 n
0000020041 00000 n
0000013892 00000 n
0000013463 00000 n
0000014292 00000 n
0000014481 00000 n
0000021120 00000 n
0000021299 00000 n
trailer
<</Size 119/Root 1 0 R/Info 4 0 R/ID[<5B890D6FB70F17438CF8D940E9227A0B><7AC5296FB8C8794B8D51FE6DF80D23C8>]>>
startxref
35616
%%EOF

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,92 @@
from random import choice
palabras = ['panadero', 'dinosaurio', 'helipuerto', 'tiburon']
letras_correctas = []
letras_incorrectas = []
intentos = 6
aciertos = 0
juego_terminado = False
def elegir_palbra(lista_palabras):
palabra_elegida = choice(lista_palabras)
letras_unicas = len(set(palabra_elegida))
return palabra_elegida, letras_unicas
def pedir_letra():
letra_elegida = ''
es_valida = False
abecedario = 'abcdefghijklmnñopqrstuvwxyz'
while not es_valida:
letra_elegida = input("Elige una letra: ")
if letra_elegida in abecedario and len(letra_elegida) == 1:
es_valida = True
else:
print("No has elegido una letra correcta")
return letra_elegida
def mostrar_nuevo_tablero(palabra_elegida):
lista_oculta = []
for l in palabra_elegida:
if l in letras_correctas:
lista_oculta.append(l)
else:
lista_oculta.append('-')
print(' '.join(lista_oculta))
def chequear_letra(letra_elegida, palabra_oculta, vidas, coincidencias):
fin = False
if letra_elegida in palabra_oculta:
letras_correctas.append(letra_elegida)
coincidencias += 1
else:
letras_incorrectas.append(letra_elegida)
vidas -= 1
if vidas == 0:
fin = perder()
elif coincidencias == letras_unicas:
fin = ganar(palabra_oculta)
return vidas, fin, coincidencias
def perder():
print("Te has quedado sin vidas")
print("La palabra oculta era " + palabra)
return True
def ganar(palabra_descubierta):
mostrar_nuevo_tablero(palabra_descubierta)
print("Felicitaciones, has encontrado la palabra!!!")
return True
palabra, letras_unicas = elegir_palbra(palabras)
while not juego_terminado:
print('\n' + '*' * 20 + '\n')
mostrar_nuevo_tablero(palabra)
print('\n')
print('Letras incorrectas: ' + '-'.join(letras_incorrectas))
print(f'Vidas: {intentos}')
print('\n' + '*' * 20 + '\n')
letra = pedir_letra()
intentos, terminado, aciertos = chequear_letra(letra,palabra,intentos,aciertos)
juego_terminado = terminado

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,176 @@
import os
from pathlib import Path
from os import system
mi_ruta = Path(Path.home(), "Recetas")
def contar_recetas(ruta):
contador = 0
for txt in Path(ruta).glob("**/*.txt"):
contador += 1
return contador
def inicio():
system('cls')
print('*' * 50)
print('*' * 5 + " Bienvenido al administrador de recetas " + '*' * 5)
print('*' * 50)
print('\n')
print(f"Las recetas se encuentran en {mi_ruta}")
print(f"Total recetas: {contar_recetas(mi_ruta)}")
eleccion_menu = 'x'
while not eleccion_menu.isnumeric() or int(eleccion_menu) not in range(1,7):
print("Elige una opcion:")
print('''
[1] - Leer receta
[2] - Crear receta nueva
[3] - Crear categoria nueva
[4] - Eliminar receta
[5] - Eliminar categoria
[6] - Salir del programa''')
eleccion_menu = input()
return int(eleccion_menu)
def mostrar_categorias(ruta):
print("Categorias:")
ruta_categorias = Path(ruta)
lista_categorias = []
contador = 1
for carpeta in ruta_categorias.iterdir():
carpeta_str = str(carpeta.name)
print(f"[{contador}] - {carpeta_str}")
lista_categorias.append(carpeta)
contador += 1
return lista_categorias
def elegir_categoria(lista):
eleccion_correcta = 'x'
while not eleccion_correcta.isnumeric() or int(eleccion_correcta) not in range(1, len(lista) + 1):
eleccion_correcta = input("\nElije una categoria: ")
return lista[int(eleccion_correcta) - 1]
def mostrar_recetas(ruta):
print("Recetas:")
ruta_recetas = Path(ruta)
lista_recetas = []
contador = 1
for receta in ruta_recetas.glob('*.txt'):
receta_str = str(receta.name)
print(f"[{contador}] - {receta_str}")
lista_recetas.append(receta)
contador += 1
return lista_recetas
def elegir_recetas(lista):
eleccion_receta = 'x'
while not eleccion_receta.isnumeric() or int(eleccion_receta) not in range(1, len(lista) + 1):
eleccion_receta = input("\nElije una receta: ")
return lista[int(eleccion_receta) - 1]
def leer_receta(receta):
print(Path.read_text(receta))
def crear_receta(ruta):
existe = False
while not existe:
print("Escribe el nombre de tu receta: ")
nombre_receta = input() + '.txt'
print("Escribe tu nueva receta: ")
contenido_receta = input()
ruta_nueva = Path(ruta, nombre_receta)
if not os.path.exists(ruta_nueva):
Path.write_text(ruta_nueva, contenido_receta)
print(f"Tu receta {nombre_receta} ha sido creada")
existe = True
else:
print("Lo siento, esa receta ya existe")
def crear_categoria(ruta):
existe = False
while not existe:
print("Escribe el nombre de la nueva categoria: ")
nombre_categoria = input()
ruta_nueva = Path(ruta, nombre_categoria)
if not os.path.exists(ruta_nueva):
Path.mkdir(ruta_nueva)
print(f"Tu nueva categoria {nombre_categoria} ha sido creada")
existe = True
else:
print("Lo siento, esa categoria ya existe")
def eliminar_receta(receta):
Path(receta).unlink()
print(f"La receta {receta.name} ha sido eliminada")
def eliminar_categoria(categoria):
Path(categoria).rmdir()
print(F"La categoria {categoria.name} ha sido eliminada")
def volver_inicio():
eleccion_regresar = 'x'
while eleccion_regresar.lower() != 'v':
eleccion_regresar = input("\nPresione V para volver al menu: ")
finalizar_programa = False
while not finalizar_programa:
menu = inicio()
if menu == 1:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
mis_recetas = mostrar_recetas(mi_categoria)
mi_receta = elegir_recetas(mis_recetas)
leer_receta(mi_receta)
volver_inicio()
elif menu == 2:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
crear_receta(mi_categoria)
volver_inicio()
elif menu == 3:
crear_categoria(mi_ruta)
volver_inicio()
elif menu == 4:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
mis_recetas = mostrar_recetas(mi_categoria)
mi_receta = elegir_recetas(mis_recetas)
eliminar_receta(mi_receta)
volver_inicio()
elif menu == 5:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
eliminar_categoria(mi_categoria)
volver_inicio()
elif menu == 6:
finalizar_programa = True

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,57 @@
class Persona:
def __init__(self, nombre, apellido):
self.nombre = nombre
self.apellido = apellido
class Cliente(Persona):
def __init__(self, nombre, apellido, numero_cuenta, balance = 0):
super().__init__(nombre, apellido)
self.numero_cuenta = numero_cuenta
self.balance = balance
def __str__(self):
return f"Cliente: {self.nombre} {self.apellido}\nBalance de cuenta {self.numero_cuenta}: ${self.balance}"
def depositar(self, monto_deposito):
self.balance += monto_deposito
print("Deposito aceptado")
def retirar(self, monto_retiro):
if self.balance >= monto_retiro:
self.balance -= monto_retiro
print("Retiro realizado")
else:
print("Fondos insuficientes")
def crear_cliente():
nombre_cl = input("Ingrese su nombre: ")
apellido_cl = input("Ingrese su apellido: ")
numero_cuenta = input("Ingrese su numero de cuenta: ")
cliente = Cliente(nombre_cl, apellido_cl, numero_cuenta)
return cliente
def inicio():
mi_cliente = crear_cliente()
print(mi_cliente)
opcion = 0
while opcion != 'S':
print('Elije: Depositar (D), Retirar (R), o Salir (S)')
opcion = input()
if opcion == 'D':
monto_dep = int(input("Monto a depositar: "))
mi_cliente.depositar(monto_dep)
elif opcion == 'R':
monto_ret = int(input("Monto a retirar: "))
mi_cliente.retirar(monto_ret)
print(mi_cliente)
print("Gracias por operar en Banco Python")
inicio()

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,5 @@
def Sumar(número1, número2):
return número1+número2
suma = Sumar(5,7)
print(suma)

View File

@ -0,0 +1,20 @@
'''
Este módulo contiene una sencilla función de suma,
y ejecuta un ejemplo mostrando el resultado en pantalla
'''
def sumar(numero1, numero2):
"""
Esta función recibe dos argumentos numéricos
y devuelve su suma
"""
return numero1 + numero2
SUMA = sumar(5, 7)
print(f'El resultado de la suma fue: {SUMA}')

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,32 @@
def numeros_perfumeria():
for n in range(1, 10000):
yield f"P - {n}"
def numeros_farmacia():
for n in range(1, 10000):
yield f"F - {n}"
def numeros_cosmetica():
for n in range(1, 10000):
yield f"C - {n}"
p = numeros_perfumeria()
f = numeros_farmacia()
c = numeros_cosmetica()
def decorador(rubro):
print("\n" + "*" * 23)
print("Su número es:")
if rubro == "P":
print(next(p))
elif rubro == "F":
print(next(f))
else:
print(next(c))
print("Aguarde y será atendido")
print("*" * 23 + "\n")

View File

@ -0,0 +1,34 @@
import numeros
def preguntar():
print("Bienvenido a Farmacia Python")
while True:
print("[P] - Perfumería\n[F] - Farmacia\n[C] - Cosmútica")
try:
mi_rubro = input("Elija su rubro: ").upper()
["P", "F", "C"].index(mi_rubro)
except ValueError:
print("Esa no es una opción válida")
else:
break
numeros.decorador(mi_rubro)
def inicio():
while True:
preguntar()
try:
otro_turno = input("Quieres sacar otro turno? [S] [N]: ").upper()
["S", "N"].index(otro_turno)
except ValueError:
print("Esa noes una opción válida")
else:
if otro_turno == "N":
print("Gracias por su visita")
break
inicio()

View File

@ -0,0 +1,55 @@
import re
import os
import time
import datetime
from pathlib import Path
import math
inicio = time.time()
ruta = 'C:\\Users\\Usuario\\Desktop\\Mi_Gran_Directorio'
mi_patron = r'N\D{3}-\d{5}'
hoy = datetime.date.today()
nros_encontrados = []
archivos_encontrados = []
def buscar_numero(archivo, patron):
este_archivo = open(archivo, 'r')
texto = este_archivo.read()
if re.search(patron, texto):
return re.search(patron, texto)
else:
return ''
def crear_listas():
for carpeta, subcarpeta, archivo in os.walk(ruta):
for a in archivo:
resultado = buscar_numero(Path(carpeta,a), mi_patron)
if resultado != '':
nros_encontrados.append((resultado.group()))
archivos_encontrados.append(a.title())
def mostrar_todo():
indice = 0
print('-' * 50)
print(f'Fecha de Búsqueda: {hoy.day}/{hoy.month}/{hoy.year}')
print('\n')
print('ARCHIVO\t\t\tNRO. SERIE')
print('-------\t\t\t----------')
for a in archivos_encontrados:
print(f'{a}\t{nros_encontrados[indice]}')
indice += 1
print('\n')
print(f'Números encotrados: {len(nros_encontrados)}')
fin = time.time()
duracion = fin - inicio
print(f'Duración de la búsqueda: {math.ceil(duracion)} segundos')
print('-' * 50)
crear_listas()
mostrar_todo()

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Some files were not shown because too many files have changed in this diff Show More