From 3c4e9af476557b2a21338338d2c35bbe5bacef3f Mon Sep 17 00:00:00 2001
From: sejo :
+ modo_lista = 0
+ modo_pre = 0
+ modo_parrafo = 0
+ modo_galeria = 0
+
+ en_section = 1 #empezamos abriendo una ,
,
después de headers y blockquotes
+
+ print ""
+ print ""
+ print ""
+ print ""
+ print ""
+# print ""
+ print ""
+# print " "
+
+ contenido = "
" )
+ if( bloque ) # si lo previo fue header o blockquote
+ bloque = 0;
+
+ }
+ else
+ appendContenido( $0 )
+ next
+}
+
+/^=>/{ # link
+ if(!modo_pre){
+ if( modo_lista ){ # cierra la lista
+ modo_lista = 0
+ appendContenido( "" )
+ }
+ else if( modo_parrafo ){ # cierra el párrafo
+ modo_parrafo = 0
+ appendContenido( "
+
+ # borra flecha del inicio
+ sub("^=>","",$0)
+ # ahora $1 es el path, $2 a $NF el texto
+
+ # concatena todo el texto
+ texto = $2
+ for(i=3; i<=NF; i++){
+ texto = texto" "$i
+ }
+
+ if( match($1, /^\.\//)) { # si es link local
+ # si el path es imagen
+ if( match($1, /(png|jpg|gif)$/) ){
+ # crea imagen
+ if( !modo_galeria ){
+ appendContenido("
" ) + } + next +} + +/^> /{ # blockquote + if(!modo_pre){ + sub(">[[:blank:]]+","" + else if(modo_parrafo) + print "" + else if(modo_lista) + print "" + + # finaliza... + print "" + print "" + print "" + print "" + print "" +} diff --git a/generasitio.sh b/generasitio.sh new file mode 100755 index 00000000..321bc92e --- /dev/null +++ b/generasitio.sh @@ -0,0 +1,68 @@ +#!/bin/sh + +mkdir -p web/static +mkdir -p gem + + +fecha=$(date +"%s") + +echo "empezando conversión, estamos en ${fecha}" + +echo "revisando y copiando imágenes..." +for f in $(find src/ -regextype awk -regex ".*(jpg|png|gif)") +do + path="web/${f#src/}" # quita el prefijo de src/ y agrega web/ + gempath="gem/${f#src/}" # quita el prefijo de src/ y agrega gem/ + mkdir -p $(dirname $path) # crea directorio si no existe + mkdir -p $(dirname $gempath) # crea directorio si no existe + cp -vu $f $path + cp -vu $f $gempath +done + +#cp src/tw.txt web/ +#cp src/tw.txt gem/ + +#cp src/llave_sejo.asc web/ +#cp src/llave_sejo.asc gem/ + +cp src/estilo.css web/static/ + +# limpia +echo "limpiando archivos previos..." + +rm web/*html +rm gem/*gmi + +# crea índice +echo "generando índice..." +rm src/pages.gmo +ls -t src/*gmo | awk -f genindice.awk > src/pages.gmo + +echo "revisando y convirtiendo archivimos gmo a html y gmi..." + + + +i=0 +# convierte y actualiza archivos gmi a html +for f in $(find src/ -iname *.gmo) +do + + path=${f#src/} # quita el prefijo de "src/" + htmlpath="web/${path%gmo}html" # agrega "web/" y cambia el sufijo + gempath="gem/${path%gmo}gmi" # agrega "gem/" + + fecha=$(date -r $f --rfc-3339=date) + + +# echo "${f}" +# echo "${f} -> ${htmlpath}" +# echo "${f} -> ${gempath}" + # haz la conversión + awk -v fecha=$fecha -f gemtext2html.awk $f > $htmlpath + awk -v fecha=$fecha -f gmo2gmi.awk $f > $gempath + + (( i++ )) + +done + +echo "convertidas ${i} páginas!" diff --git a/genindice.awk b/genindice.awk new file mode 100644 index 00000000..ff157c59 --- /dev/null +++ b/genindice.awk @@ -0,0 +1,23 @@ +# ls src/*gmo | awk -f genindice.awk + +function link2nombre( t ){ # convierte un nombre con "_" a uno con espacios + gsub("_"," ",t); + sub(".gmo", "", t) + return t +} + +BEGIN{ + print "# index of pages" + print + print "last modified, above:" + print +} + +{ + sub("src/","",$0) + nombre = link2nombre($0) # convierte _ a espacios + sub(".gmo",".gmi",$0) + + if(nombre!="index") # no imprimas el índice + print "=> ./"$0" {"nombre"}" +} diff --git a/gmo2gmi.awk b/gmo2gmi.awk new file mode 100644 index 00000000..4a2c0c63 --- /dev/null +++ b/gmo2gmi.awk @@ -0,0 +1,43 @@ +function nombre2Link( t, r ){ # convierte un nombre con espacios, a uno con r (e.g. "_" + gsub(" ",r,t); + return t +} + +/^+ /{ # literal html + next # salta la línea +} + +/^& /{ # literal gemtext + sub(/^& /,"",$0) + print $0 + next + +} + +# imprime líneas normamlmente + +{ + print $0 +} + +# si tienen sintaxis de wikilink, y no son líneas de enlace, agrega el link +# (el % es por las líneas de uxn jaja) +/^[^=%].+{.+}/{ + i = match( $0, /{.+}/) + ifinal = index($0, "}") # índice del } final + + link = substr($0, i, ifinal-i+1) # {link} + nombre = substr($0, i+1, ifinal-i-1) # link + nombre = nombre2Link( nombre, "_" ) + + print "=> ./" nombre ".gmi " link +} + +# agrega footer + +END{ + print "" + print "most recent update on: 1" fecha + print "=> ./index.gmi {compudanzas}" + print "=> ./license.gmi {license}" +} diff --git a/src/about.gmo b/src/about.gmo new file mode 100644 index 00000000..c9de8f11 --- /dev/null +++ b/src/about.gmo @@ -0,0 +1,23 @@ +# about + +compudanzas is a research project aimed at the development of alternative modes of computation. + +# mission + +we enlarge to a human-scale and slow down to a human-speed the processes that give rise to what is understood as computing. + +through our experiments we ask: what happens when computers are dances, rituals, games, instead of closed electronic boxes with a high environmental and social cost? + +to what extent can we reappropriate these logics to inspire other ways of being in the world? + +what can be the role of non-electronic, very slow, human-scale, and seemingly useless computers, in a world that seems to be in {collapse}? + +are they alternative and empowering didactic materials? performances? puzzles? passtimes? magic tricks? marvelous pursuits? + +# meta + +read our updates in the {log} + +visit the index of {pages} in the site + +=> ./contact.gmi {contact} diff --git a/src/ciclo_de_memoria.gmo b/src/ciclo_de_memoria.gmo new file mode 100644 index 00000000..c28fc742 --- /dev/null +++ b/src/ciclo_de_memoria.gmo @@ -0,0 +1,54 @@ +# ciclo de memoria + +imaginemos la construcción de una memoria que existe en función el tiempo, como las antiguas líneas de retardo de mercurio, pero en el campo; un juego; un grupo de personas en {las danzas}. + +un "dispositivo"-danza que almacena información binaria, con capacidad de ser escrita y leída. + +=> ./img/ilustracion_ciclo-de-memoria.png pequeña ilustración del ciclo de memoria + +# guía + +cada persona ve a alguien más, y es vista por otra distinta. + +para iniciar, podemos acomodarnos en círculo. nuestra red es un ciclo. + +cada persona ve a alguien más, poniendo atención en cuál de las tres señales / movimientos realiza: + +* corte +* alto +* bajo + +hay música con pulso. + +en cada beat, la persona replica la señal que vio adelante. + +así, poco a poco, un dato palabra, número, o lo que sea, se recorre, circula, da vueltas. + +# la lectura + +para leer el dato almacenado, una persona-lectora fuera del ciclo se sintoniza a la frecuencia de pulsos. + +la persona-lectora se enfoca en observar a una sola persona dentro, que se convierte en la persona-salida. + +al observar la señal de corte, la persona-lectora empieza a anotar, repetir, transmitir, las señales de alto o bajo que vengan después. + +así continúa hasta observar de nuevo el corte: el dato habrá sido leído, y se mantiene en circulación. + +# la escritura + +ya sea que se decida de antemano la persona-entrada al ciclo, o todas las personas estén atentas para poder serlo, para escribir en la memoria hace falta una persona afuera, la persona-escritora. + +ella se sincroniza con los pulsos, y le avisa a la persona-entrada que viene a escribir. + +la persona-entrada espera a recibir y replicar la señal de corte de la persona a la que estaba siguiendo. + +justo cuando eso sucede, la persona-entrada empezará a ver y seguir a la persona-escritora. + +la persona-escritora, paso a paso, pulso a pulso, da las señales de alto o bajo a escribir, hasta llegar al corte. + +y así, paso a paso, pulso a pulso, poco a poco, el ciclo ahora tendrá un nuevo dato. + + + +## llega(n) aquí +=> ./las_danzas.gmi {las danzas} diff --git a/src/collapse.gmo b/src/collapse.gmo new file mode 100644 index 00000000..390bf8e2 --- /dev/null +++ b/src/collapse.gmo @@ -0,0 +1,44 @@ +# collapse + +how to live life when ecological and social collapse are coming in the short term? + +# textos + +que escribo para ir procesando, aprendiendo y compartiendo: + +=> ./después_ahora.gmi {después ahora} + + +# notes + +## deep adaptation + +deep adaptation agenda, the 4 Rs: + +* resilience: how do we keep what we really want to keep? +* relinquishment: what do we need to let go of in order to not make matters worse? +* restoration: what can we bring back to help us with the coming difficulties and tragedies? +* reconciliation: with what and whom can we make peace with as we face our mutual mortality? + +=> https://jembendell.com/2019/05/15/deep-adaptation-versions/ versions of the deep adaptation paper - jem bendell + +## how to live like the world is ending + +* act like we’re about to die. +* act like we might not die right away. +* act like we might have a chance to stop this. +* act like everything will be okay. + +=> http://birdsbeforethestorm.net/2019/12/how-to-live-like-the-world-is-ending/ how to live the world is ending - margaret killjoy + +## more references + +=> https://theanarchistlibrary.org/library/margaret-killjoy-take-what-you-need-and-compost-the-rest-an-introduction-to-post-civilized-theo take what you need and compost the rest: an introduction to post-civilized theory - margaret killjoy +=> https://www.resilience.org/stories/2019-05-10/loving-a-vanishing-world/ loving a vanishing world - emily johnston +=> https://deepgreenresistance.org/ deep green resistance +=> https://stopfossilfuels.org/ stop fossil fuels +=> http://viznut.fi/texts-en/permacomputing.html permacomputing | viznut + + +## incoming links +=> ./about.gmi {about} diff --git a/src/coloring_computers.gmo b/src/coloring_computers.gmo new file mode 100644 index 00000000..2d2be166 --- /dev/null +++ b/src/coloring_computers.gmo @@ -0,0 +1,48 @@ +# coloring computers + +non-electronic computers that work when you color them according to a simple set of rules. + +an exploration of computation without electricity and semiconductors, an attempt to reinvent digital systems away from efficiency and productivity, and hopeful prototypes to expose the inner workings of computers. + +# 4-bits to 7-segment display hexadecimal decoder (12020) + +=> ./img/foto_20201130_hex7segdecoder_01.png the coloring computer/decoder, waiting to be activated +=> ./img/foto_20201130_hex7segdecoder_02.png a human coloring the wires according to the logic rules +=> ./img/foto_20201130_hex7segdecoder_03.png the coloring computer/decoder, with an input of 0011, and an output that can be read as 3 + +a coloring decoder built with NOT (triangle), AND (semicircle), and OR (the other shape (?)) gates, based on a manual design. + +=> ./img/dibujo_20201207_hex7segdecoder_small.png the complete decoder + +=> https://opguides.info/engineering/digitallogic/ colored and animated version by Vega +=> https://ipfs.io/ipfs/QmZv53hr7QEzxrPaRNpiyU9VUNHw9UgyaTUqYD9x9iFpNA/dibujo_20201207_hex7segdecoder.png download the decoder in full size 1487x3057 (png, ~446KB) + +# computadora no(r)pal (12019) + +=> ./img/dibujo_20190715-norpalera-fulladder_blanco_small.png logic circuit in the shape of nopal + +a full-adder built with NOR gates in the shape of no(r)pales + +=> https://ipfs.io/ipfs/QmPz2D3bZRYFi1HnfiNJB8o9TZZvH8atuYpFixMKccYCYP/dibujo_20190715-norpalera-fulladder_blanco.png download computadora no(r)pal in full size 1200x1600 (png, ~429KB) + +# coloring computers (12018) + +the original ones + +=> ./img/foto_coloring-computers_cover-lee.png photo of the cover of the zine, colored +=> ./img/foto_coloring-computers_7seg-lee.png photo of a pair of colored pages of the zine, with a 7 segment display showing the digits 2 and 3 +=> ./img/foto_coloring-computers_pcd2019.png photo of a pair of colored pages of the zine, showing a digital circuit answering if two colors are the same + +the booklet contains three series of computers: computers that compare, computers that count, and computers that play. they are all NOR-based logic circuits designed by using truth tables, karnaugh maps, and maxterm expansions. + +=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/ original site and resources +=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers_pages.pdf download the page-by-page zine (pdf, ~1.5MB) +=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers.pdf download the ready-to-print-and-cut zine (pdf, ~1.4MB) + +CC-BY-SA 4.0 + +for the print and cut zine: print double-sided, cut in half, fold the pages and assemble + + +## incoming links +=> ./talks_and_workshops.gmi {talks and workshops} diff --git a/src/compuertas.gmo b/src/compuertas.gmo new file mode 100644 index 00000000..882cc222 --- /dev/null +++ b/src/compuertas.gmo @@ -0,0 +1,101 @@ +# compuertas lógicas + +las bases de los circuitos digitales. + +estos incluyen, claro está, a las {danzas compuertas} + +usamos la convención de utilizar dos valores posibles: 1 para denominar arriba, o verdadero, y 0 para denominar abajo, o falso. + + +# una entrada + +## buffer + +la salida es igual a la entrada + +## NOT + +la salida es lo opuesto a la entrada. + +también podríamos decir que la salida es lo que no es la entrada. + + +# dos entradas + +con dos entradas binarias, hay cuatro posibles combinaciones. + +## AND + +la salida es verdadera únicamente cuando todas sus entradas son verdaderas. + +en cualquier otro caso, la salida es falsa. + + +## OR + +la salida es verdadera cuando aunque sea una de sus entradas sea verdadera. + +únicamente cuando todas las entradas son falsas, su salida es falsa. + + +## XOR + +la salida es verdadera cuando una y solo una de sus entradas sea verdadera. + +en cualquier otro caso, la salida es falsa. + +también la podemos describir así: la salida es verdadera cuando las entradas son diferentes, y es falsa cuando las entradas son iguales. + + +## NOR + +la salida es verdadera cuando ninguna de sus entradas es verdadera. + +que es lo mismo que decir que su salida es verdadera cuando todas sus entradas son falsas. + +en cualquier otro caso, su salida es falsa. + +NOR es una de las compuertas universales: con ella se puede construir a todas las demás. + +esto se debe en parte a que NOR se convierte en NOT si sus dos entradas están conectadas como una sola. + +por otro lado, NOR es equivalente a negar con NOT la salida de una compuerta OR. + +por cómo funciona, también la podemos considerar como un AND que funciona con 0 en vez de con 1. + + +## NAND + +la salida es verdadera cuando aunque sea una de sus entrada es falsa. + +únicamente cuando todas sus entradas son verdaderas, su salida es falsa. + +NAND es la otra compuerta universal. esto se debe en parte a que se convierte en NOT si sus dos entradas están conectadas como una sola. + +por otro lado, NAND es equivalente a negar con NOT la salida de una compuerta AND. + +por cómo funciona, también la podemos considerar como un OR que funciona con 0 en vez de con 1. + + +# más entradas + +todas las compuertas funcionan igual para más de dos entradas, excepto XOR. + +importante: AND y OR poseen la propiedad distributiva. + +por ejemplo, un AND de tres entradas (a, b, c) es equivalente a un AND de dos entradas (a, b), con su salida (x) conectada a la entrada de otro AND de dos entradas (x, c) + +esto no sucede así ni en NOR ni en NAND. en su caso, hay que agregar un NOT entre las dos compuertas. + + +# demorgan + +una compuerta AND es equivalente a una compuerta NOR con sus entradas negadas. + +una compuerta OR es equivalente a una compuerta NAND con sus entradas negadas. + + + +## llega(n) aquí +=> ./danzas_compuertas.gmi {danzas compuertas} +=> ./logiteca.gmi {logiteca} diff --git a/src/contact.gmo b/src/contact.gmo new file mode 100644 index 00000000..c9687631 --- /dev/null +++ b/src/contact.gmo @@ -0,0 +1,7 @@ +# contact + +e-mail: sejo at posteo dot net +=> ./llave_sejo.asc [pgp key] + +fediverse: +=> https://merveilles.town/@chirrolafupa chirrolafupa in merveilles.town diff --git a/src/d-turing.gmo b/src/d-turing.gmo new file mode 100644 index 00000000..02818c9d --- /dev/null +++ b/src/d-turing.gmo @@ -0,0 +1,85 @@ +# d-turing + +bailando los inicios, una máquina de turing + +parte de las {las danzas} + +# componentes + +## participantes + +la siguiente descripción depende de tres personas / roles: + +* cabeza en cinta +* semáforo de estado +* instructora + +la dinámica podría adaptarse fácilmente para dos o una persona(s), pero es más divertido bailarla en grupo. + +## materiales + +como materiales tangibles se requiere lo siguiente: + +* un conjunto de objetos flexibles para crear una fila con ellos: por ejemplo cordones, calcetines, bloques de madera... +* una tabla de reglas en papel o arcilla; al menos en lo que se memoriza + +## elementos + +una máquina en específico consiste de los siguientes elementos: + +* un conjunto finito de símbolos posibles a colocar en la cinta, con un conjunto de movimientos que correspondan uno-a-uno. +* una cinta con dichos símbolos, acomodados en una configuración inicial según sea el caso. +* un conjunto finito de estados posibles, cada uno con un movimiento correspondiente. +* un estado inicial. +* un par de movimientos que indiquen dirección en un eje; por ejemplo izquierda y derecha. +* una tabla de reglas, que responde lo siguiente: dado un símbolo encontrado en la cinta, y un estado actual: ¿por cuál símbolo hay que reemplazarlo, a qué dirección hay que mover la cabeza, y cuál ha de ser el nuevo estado? + +# guía + +## preparación + +es necesario que la cabeza en cinta conozca los símbolos posibles en la cinta, y sus movimientos correspondientes. además, ha de conocer los movimientos de dirección. + +el semáforo ha de conocer los estados posibles y sus movimientos correspondientes. + +la instructora tiene que conocer todos los movimientos nombrados arriba. + +## inicialización + +hay que acomodar la cinta de símbolos en una configuración inicial adecuada. + +la cabeza en cinta se coloca al lado del primer símbolo. + +el semáforo empieza a moverse con el estado inicial. + +la instructora se prepara. + +## el ciclo + +la cabeza en cinta se empieza a mover transmitiendo en qué símbolo se encuentra. + +la instructora observa el movimiento del semáforo y el movimiento de la cabeza en cinta, y busca en su tabla de reglas la entrada correspondiente: + +¿qué acciones hay que tomar a partir del estado actual y del símbolo leído por la cabeza en cinta? + +### con respuesta + +si la tabla tiene una respuesta, la instructora empieza a moverse para transmitir las acciones a tomar: + +* primero realiza un movimiento de símbolo: la cabeza en cinta lo recibe y lo usa para reemplazar al símbolo en el que se encuentra actualmente. +* cuando concluye la transformación, la instructora realiza un movimiento de dirección: la cabeza en cinta lo recibe y lo sigue para dirigirse al siguiente símbolo que se encuentra en esa dirección. +* finalmente, la instructora realiza un movimiento de estado: el semáforo lo recibe, y lo ha de empezar a realizar como indicación del estado actual. + +terminando esas acciones, el ciclo vuelve a comenzar. + +### sin respuesta + +si la tabla no tiene una respuesta, entonces la máquina se detiene. el cómputo ha terminado. + +# algunas máquinas + +próximamente + + +## llega(n) aquí +=> ./las_danzas.gmi {las danzas} diff --git a/src/danza_papier.gmo b/src/danza_papier.gmo new file mode 100644 index 00000000..65bfaa7c --- /dev/null +++ b/src/danza_papier.gmo @@ -0,0 +1,199 @@ +# danza papier + +baile colaborativo que ejemplifica una arquitectura computacional común, basada en la wdr papiercomputer + +=> https://wiki.xxiivv.com/site/papier.html papier computer + +parte de las {las danzas} + + +# componentes + +## participantes + +la arquitectura base consta de al menos 6 personas: + +* PC: apuntadora del programa (program counter) +* Memoria: quien administra la lista de números correspondiente al programa +* CU: la directora, unidad de control +* Rn: al menos dos registros, R0 y R1 +* LU: la que responde preguntas lógicas + + +## materiales + +como materiales tangibles solo se requiere la lista de números que administra la Memoria. + +como sea, si el grupo cuenta con suficientes personas, cada uno de esos números puede ser cuerpeado por una persona distinta. + +opcionalmente, puede existir una tabla en papel que sirva de recordatorio a la CU de las operaciones a seguir: el microcódigo. + + +## movimientos + +se necesita contar con, y conocer, el siguiente conjunto de movimientos. + +### todas las personas + +* dígito-movimiento: un movimiento por cada digito en la base elegida (por ejemplo, del 0 al 9 para trabajar en base 10) +* posición: una forma de indicar si un dígito es el primero o el segundo +* finalización: un movimiento que indique que el cómputo ha terminado + +será importante conocer cuál es el movimiento siguiente y anterior a cada dígito-movimiento. + +### Registros y CU: + +* indicación de incremento +* indicación de decremento + +### LU y CU: + +* pregunta: ¿el contenido del Registro es 0? +* respuestas: sí, no + +### PC y CU: + +* indicación de incremento sencillo +* indicación de incremento doble + + +## instrucciones + +la computadora cuenta con los 5 siguientes códigos de operación (entre paréntesis su mnemónico) + +* 0: Fin del programa (FIN) +* 1: Condicional (CND) +* 2: Salta a (SLT) +* 3: Incrementa (INC) +* 4: Decrementa (DEC) + +una instrucción completa consiste de ese código de operación, acompañada de un dígito llamado argumento. + +ese argumento tiene un significado distinto según la instrucción: + +* FIN: argumento ignorado +* CND: el argumento es el número de Registro al cual preguntarle si es 0: si la respuesta es sí, hay que saltarse una instrucción, y si la respuesta es no, hay que continuar normalmente +* SLT: el argumento es el número de línea a la cual saltar a continuación +* INC: el argumento es el número de Registro que ha de incrementarse +* DEC: el argumento es el número de Registro que ha de decrementarse + + +# ciclo de instrucción + +la máquina estará en el llamado ciclo de instrucción hasta encontrar a una instrucción FIN. + +este ciclo consiste de dos partes, fetch (buscar) y execute (ejecutar). + +antes de comenzar, hay que realizar una inicialización: + +* PC toma el dígito-movimiento correspondiente a 0, y se mueve transmitiéndolo +* Registros toman el dígito-movimiento inicial que se les indique, y se mueven transmitiéndolo + +## fetch (buscar) + +* todes les Registros se mueven con una amplitud normal, transmitiendo sus dígitos-movimientos +* PC se mueve transmitiendo el dígito-movimiento que tiene almacenado +* Memoria recibe el dígito, y busca en su lista de números al par de dígitos que se encuentran en esa posición. +* Memoria se mueve transmitiendo esos dos dígitos-movimientos, con cuidad de indicar cuál es el primero y cuál es el segundo +* CU recibe esos dos dígitos +* la máquina pasa a la etapa execute + + +## execute (ejecutar) + +* CU identifica al primer dígito recibido como código de operación, y al segundo como argumento +* de acuerdo al código de operación, suceden las siguientes operaciones: + +### FIN: Fin del programa (0) + +* CU se mueve indicando finalización +* todes se detienen excepto Registros que continúan con sus dígitos-movimientos + +les Registros ahora pueden ser inspeccionados para leer los resultados del cómputo. + +### CND: Condicional (1) + +* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento +* Registros reciben el dígito +* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando +* les demás Registros reducen la amplitud de su propio dígito-movimiento. +* CU se mueve preguntando a LU si el Registro es 0. +* LU recibe la pregunta, y observa al Registro con movimiento amplio +* LU se mueve respondiendo sí o no +* CU recibe la respuesta de LU +* CU se mueve dirigéndose a PC: si la respuesta que recibió de LU fue sí, entonces se mueve indicando un doble incremento; si la respuesta fue no, entonces se mueve indicando un incremento sencillo +* PC recibe la indicación, y pasa al siguiente dígito-movimiento, ya sea una o dos veces según lo recibido. +* la máquina pasa a la etapa fetch + + +### SLT: Salta a (2) + +* CU se mueve dirigéndose a PC, transmitiendo el dígito-movimiento que recibió como argumento +* PC recibe el dígito y lo almacena, reemplazando al dígito-movimiento que estaba realizando antes. +* la máquina pasa a la etapa fetch + + +### INC: Incrementa (3) + +* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento +* Registros reciben el dígito +* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando +* les demás Registros reducen la amplitud de su propio dígito-movimiento. +* CU se mueve dirigiéndose a les Registros, transmitiendo la indicación de incremento +* Registro con el movimiento amplio, pasa al dígito-movimiento siguiente al que estaba realizando (incrementa en 1 al valor que estaba almacenando) +* les demás Registros hacen caso omiso +* CU se mueve dirigéndose a PC, indicando un incremento sencillo +* PC recibe la indicación, y pasa al siguiente dígito-movimiento +* la máquina pasa a la etapa fetch + + +### DEC: Decrementa (4) + +* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento +* Registros reciben el dígito +* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando +* les demás Registros reducen la amplitud de su propio dígito-movimiento. +* CU se mueve dirigiéndose a les Registros, transmitiendo la indicación de decremento +* Registro con el movimiento amplio, pasa al dígito-movimiento anterior al que estaba realizando (decrementa en 1 al valor que estaba almacenando) +* les demás Registros hacen caso omiso +* CU se mueve dirigéndose a PC, indicando un incremento sencillo +* PC recibe la indicación, y pasa al siguiente dígito-movimiento +* la máquina pasa a la etapa fetch + + +# ejemplo de programa + +este programa suma los dígitos en R0 y R1, colocando el resultado en R0 + +## lista de números + +este es el programa en formato de lista de números para que administre Memoria. + +* 0: 2 3 +* 1: 4 1 +* 2: 3 0 +* 3: 1 1 +* 4: 2 1 +* 5: 0 0 + +el primer dígito en la lista es el número de línea. + +los dos dígitos siguientes son el primer y segundo dígitos de instrucción + + +## ensamblador + +usando las palabras clave (mnemónicos) para indicar los códigos de operación, el programa se vería así: + +* 0: SLT 3 (salta a la línea 3) +* 1: DEC 1 (decrementa R1) +* 2: INC 0 (incrementa R0) +* 3: CND 1 (¿R1 es 0? si sí, salta una instrucción, si no, continúa) +* 4: SLT 1 (salta a la línea 1) +* 5: FIN 0 (fin del programa) + +(esta forma de programar es a la que se refiere la práctica de {s-camino}) + + +## llega(n) aquí +=> ./las_danzas.gmi {las danzas} diff --git a/src/danzas_compuertas.gmo b/src/danzas_compuertas.gmo new file mode 100644 index 00000000..4263e588 --- /dev/null +++ b/src/danzas_compuertas.gmo @@ -0,0 +1,39 @@ +# danzas compuertas + +antiguas historias hablaban de computar en conjunto, en comunidad. ¿{las danzas}? + +tareas sencillas y divertidas (requeridas de atención y presencia) que combinadas dan paso a complejidad, a olas, a cambios. + +# guía + +o se está de pie o se está en descanso. + +a cada quien se le asigna un rol: + +* simplemente decidir en qué posición colocarse +* colocarse siempre en oposición a tal persona +* o ponerse de pie solo cuando ni tal persona ni cual persona están de pie. + +(o alguna otra de las {compuertas} lógicas) + +la complejidad surge de quién ve a quién, quién depende de quién. + +cinco personas para multiplicar dos dígitos binarios... nada mal. + +más circuitos posibles, en la {logiteca} + +# posibilidades + +qué tal un sumador completo, aprovechando la idea de {ciclo de memoria} + +aquí un diagrama animado que muestra un par de ciclos de memoria como entrada a un full-adder. + +el resultado del full-adder está conectado a otro ciclo de memoria. todos los componentes conformados por personas. + +=> https://ipfs.io/ipfs/QmSKnbCUGj3FR5hRG5UAgfXxjyp7aTQoRCeJ9G4MENxNNG/20190718-sumadanza_600.gif suma danza (gif, 187KB ) + + +## llega(n) aquí +=> ./las_danzas.gmi {las danzas} +=> ./compuertas.gmi {compuertas} +=> ./logiteca.gmi {logiteca} diff --git a/src/danzasistemas-tag.gmo b/src/danzasistemas-tag.gmo new file mode 100644 index 00000000..742de0f0 --- /dev/null +++ b/src/danzasistemas-tag.gmo @@ -0,0 +1,78 @@ +# danzasistemas-tag + +una compudanza basada en máquina abstracta (tag systems, o bien, máquina de post) + +=> ./las_danzas.gmi {las danzas} + +# descripción + +las danzasistemas-tag consisten en "batallas" de baile en las que alternamos recibiendo y respondiendo secuencias de movimiento. + +las secuencias que respondemos son producto de procesar elementos de la secuencia que recibimos. + +# indicaciones + +necesitamos los siguientes elementos: + +* A: alfabeto finito de símbolos/movimientos identificables y replicables +* P: las reglas de producción: qué símbolos/movimientos hay que agregar al final de la nueva secuencia, de acuerdo al primer símbolo/movimiento de la secuencia recibida. +* m: número de eliminación: cuántos símbolos/movimientos hay que eliminar del inicio de la secuencia recibida. + +al recibir una secuencia de movimiento, hemos de poner atención y realizar lo siguiente para construir nuestra respuesta: + +* notar el primer símbolo/movimiento, que nos indica qué regla de producción seguir al final de la secuencia. +* descartar la cantidad de símbolos/movimientos del inicio de la secuencia de acuerdo al número de eliminación. (esto incluye al primer símbolo/movimiento). +* memorizar y replicar la secuencia recibida a partir de ese punto, en orden y hasta el final. +* agregar el o los símbolos/movimientos al final de la secuencia, de acuerdo a la regla de producción. + +según la danzasistema-tag, la dinámica de respuestas continúa hasta llegar al símbolo/movimiento que indique detenerse, o hasta que la secuencia de movimiento quede vacía. + +# ejemplo + +cómputo de secuencias de collatz, tomado de wikipedia + +=> https://en.wikipedia.org/wiki/Tag_system#Example:_Computation_of_Collatz_sequences Tag system - Example: Computation of Collatz sequences (web) + +los elementos de nuestra danzasistema-tag serían los siguientes: + +## A: alfabeto finito de símbolos/movimientos + +tres símbolos/movimientos: a, b, c + +## P: reglas de producción + +si primer símbolo/movimiento es 'a', agrega 'bc' al final. + +si primer símbolo/movimiento es 'b', agrega 'a' al final. + +si primer símbolo/movimiento es 'c', agrega 'aaa' al final. + +nota cómo cada regla de producción agrega una cantidad distinta de símbolos/movimientos al final. + +## m: número de eliminación + +en este caso, siempre descartaremos 2 símbolos/movimientos del inicio de la secuencia. + +## desarrollo + +partiendo de una secuencia inicial 'aaa'... + +``` +inicio: aaa +respuesta: abc +respuesta: cbc +respuesta: caaa +respuesta: aaaaa +respuesta: aaabc +respuesta: abcbc +respuesta: cbcbc +etc... +``` + +siempre se descartan los 2 símbolos/movimientos del inicio, pero la cantidad de símbolos/movimientos que se agregan al final cambian de acuerdo a la regla de producción. + +esta dinámica de respuestas a partir de esa secuencia inicial, eventualmente termina descartando a la secuencia completa. + + +## llega(n) aquí +=> ./las_danzas.gmi {las danzas} diff --git a/src/después_ahora.gmo b/src/después_ahora.gmo new file mode 100644 index 00000000..97e349db --- /dev/null +++ b/src/después_ahora.gmo @@ -0,0 +1,57 @@ +# después ahora + +textos hacia una práctica post-civilización. + +# La invitación + +Primero que nada, te invito, nos invito, a estar presentes. + +Respirar profundo, y de ser posible, mirar por alguna ventana. Notar el espacio de posibilidades que nos presenta lo que llamamos cielo. + +Espero que no fuera hace mucho la vez más reciente que le habías visto. + +Ahora bien, en este texto, partimos de la noción de que algo grande se está terminando. No solo grande, sino enorme; tal vez inabarcable, tal vez inconcebible. + +Partimos de la noción de que la civilización se está terminando. + +O de que ya se terminó, según desde dónde le veamos. + +Partimos de que vale la pena permitirse sentirlo y expresarlo. La intención es imaginar, encontrar, crear cómo queremos vivir mientras lo aceptamos. + +Por un lado siento las ganas de argumentarlo, de convencerte. Pero por otro lado sé que ya lo sabes: no se ve salida al desastre exponencial que se ha (¿hemos? ¿han?) desencadenado. + +Crecer por crecer y por siempre, dejando de lado los cuidados: probablemente no fue la mejor idea, forma de vivir impuesta. Hay y hubo quien se opuso, claro; pero ahí no se permiten alternativas. + +La duda es si esperamos y dejamos que la civilización como la conocemos, eso que se está terminando, caiga, colapse por su propio peso. A mí, esa espera me parece muy riesgosa. ¿Qué tal si al dejarle continuar, antes cae, colapsa la biósfera y su capacidad para mantener vida? + +¿Cuál de los dos finales nos resultará peor, el de la civilización o el de la vida en la Tierra? Los páneles solares y autos eléctricos no nos llevan a una tercera opción, realmente. + +¿Y entonces? ¿La decisión es retirarse? ¿La decisión es tirarla? ¿Qué tal vivir como si ya no existiera? + +Cualquier opción me suena incómoda, pero llena de energía vital. + +Personalmente, prefiero dejármelo sentir. No me va eso de hacerme creer que no está pasando nada, de hacer como si todo fuera a seguir normal, bien, "sin problema". + +Ya no me creo el cuento del progreso, de las soluciones tecnocéntricas. + +Vivir como si la civilización ya no existiera es lo que mejor me suena. Requiere creatividad, curiosidad, disposición, compasión y paciencia. Es alcanzable. No hay una fórmula específica, homogénea. + +Es plantar semillas de lo que pueda venir después: puede que no germinen, ¿pero realmente me veo haciendo otra cosa? + +Me queda claro que no es fácil. Además, no tengo mucha idea de cómo. + +Estas letras llegan a ti con miras a que exploremos, sintamos, conectemos, practiquemos. + +Por el momento usamos internet, después ya veremos. Si los cables seguirán plantados, ¿qué decidiremos hacer con ellos? + +--- + +Te invito a respirar de nuevo. A moverte con cómo te sientes ahora. + +Te invito a acompañarnos en esta búsqueda. + +Está bien si todavía no es el momento. Ya sabes dónde me encuentro. + + +## incoming links +=> ./collapse.gmi {collapse} diff --git a/src/estilo.css b/src/estilo.css new file mode 100644 index 00000000..56b973fe --- /dev/null +++ b/src/estilo.css @@ -0,0 +1,100 @@ +/* links en el sitio */ +a[href^="./"]{ + text-decoration:none; +} +/* links externos */ +a[rel=external]:after{ +/* content:"↝";*/ + content: "↗"; +} +a{ + color: #575; +} +a:hover{ + background-color: #575; + color: #fff; + border-radius:3px; +} +a:visited{ + color: #552; +} +a:visited:hover{ + background-color: #552; + color: #fff; + border-radius:3px; +} + +body{ + color: #010; + max-width:40em; + margin:0 auto; + font-size:18px; + padding: 1em; +} + +nav,footer,section{ +/* border-top: 2px solid;*/ +} +footer{ + font-size: x-small; + text-align: center; +} + +pre{ + background-color: #fee; + color: #433; + padding:1em; + border-radius:5px; + overflow-x: auto; +} + +main h1{ + padding-top: 2.0em; + font-size: 30px; +} +main h2{ + font-size: 25px; +/* border-top: 1px dashed;*/ + padding-top: 1em; + margin-left:0.3em; +} +main h3{ + font-size: 18px; + padding-top: 1em; + margin-left:1em; +} + +gallery{ + display:flex; + flex-direction:row; + flex-wrap:wrap; + justify-content:space-evenly; + align-content:center; +} +img{ + margin:10px; + border-radius:5px; +} + +nav{ + font-size:smaller; +} + +nav li{ + list-style-type:square; +} + +table,th,td{ + border-style:inset; + border-width: 1px; +} +table{ + margin:10px; + overflow-x: auto; +} + +#count{ /* para tiempo */ +word-wrap:break-word; +font-size:9px; +font-family:monospace; +} diff --git a/src/img/dibujo_20190715-norpalera-fulladder_blanco_small.png b/src/img/dibujo_20190715-norpalera-fulladder_blanco_small.png new file mode 100644 index 0000000000000000000000000000000000000000..99736377492c9252ddf8573f0f594312f4fab555 GIT binary patch literal 13161 zcma)jV{9!>^ljTy+qP|+w|0A~Tidp6+qP}Hy|sC7?bBP|`u+ZSpWaJe@;*$~?8&U` z>|`>NtXVr+MM)Y79v>bI3=BzDMpErRoB{&_M}Ylr0@lr&as3}aT8b%(fq^wAB77J_ z{TD-+$V*FteMct#8vHMUbCS_<1p`Ad{+|I}B~oeq-y)2gtfCam2^1nSfG62}wh#=A zJxW$mOv7vYre7rLSUcnUy?UNzE@<`L)KuHedP+YFdseB5kZo}k#X(^3AUF^IY+8<{ zfFofd+kM*yI277GqiZ=fq79x%h^@i+kpaa8FxRgoB8s7fPGeNyLm#Bd0gv90`PFAh zOU`kxtZA+Zyv3F$Vc{sxecN}veGOdjfBe2P3>AJ`_zJoW@`E`BRQ?B6k3>l*@dJSS z;w4W}Va_+?smLF{!Cx281xQKo{b7zJO8+05zRiO^9B;k*rcFnBUyk&tWb5ldTn&>! z-!;R(Ii!1TRKD-~26(RJ+JMFn5tCUzdiGR!zIc&6MIOF**}dB>urBLH87KY--{uK8 z&y(v;4%bfJ(5s?KY2+*32Hf{Mo8iKgA1E*aYaU#DjtHJCjPy4NHDfG%P7owcoDwMA zqx4o>Xq1)KZ=oh06<-g-1^nOs4d&lJ-re*0J>He3ZVaxtvow9XY&XXk<_Ujph>Up- z{#9K0%zwS5xGOBg{yG}`kU0|WJ8FIzPma*EAlkNTn!u3!",$0) + sub("$","",$0) + bloque = 1 + } + appendContenido( $0 ) + next +} + +/^# /{ # h1 + if(!modo_pre){ + sub("#[[:blank:]]+","",$0) #prefijo + sub("$","",$0) #sufijo + bloque = 1 + + if( !en_section ){ # si no se ha iniciado una sección antes + appendContenido( "" ) + en_section = 1 + } + else{ + appendContenido( " " ) + } + + # crea header con id + appendContenido( " "$0"
" ) + + # agrega header a navegación + appendNav( ""$0" " ) + } + else{ + appendContenido( $0 ) + } + next + +} + +/^## /{ # h2 + if(!modo_pre){ + sub("##[[:blank:]]+","",$0) + sub("$","",$0) + # crea header con id + appendContenido( ""$0"
" ) + bloque = 1 + } + else{ + appendContenido( $0 ) + } + next +} + +/^### /{ # h3 + if(!modo_pre){ + sub("###[[:blank:]]+","",$0) + sub("$","",$0) + appendContenido( ""$0"
" ) + bloque = 1 + } + else{ + appendContenido( $0 ) + } + next +} + +#$0 !~ /^(=>|```|#{1,3} |* |\+|>|[[:blank:]]*$)/{ # líneas de texto (no "especiales") +{ # cualquier otra línea de texto + if(!modo_pre){ + if(!modo_parrafo){ + modo_parrafo = 1 + appendContenido( "" ) + } + else # nueva línea en el mismo párrafo + appendContenido( "
" ) + + # busca y convierte wikiLink (máx uno por línea) + appendContenido( wikiLink($0) ) + } + else{ + gsub("<","\\<",$0) + gsub(">","\\>",$0) + appendContenido( $0 ) + } +} + +END{ + # imprime y cierra nav + if(navcount){ + print nav + print "" + } + + # imprime contenido + print contenido + # cierra tags que pudieron haber quedado abiertas + if(modo_pre) + print "
|&^G7hWqn-7jNd;a(?Q!k5UMmE zlSPW7m-c14MWo<9dw8;eyrMgdVD?U5T#Vazl#=f3WXg5Wa_6+VgkpLSk=qt>gK4#^ zK!fDeoQ(D3BL#_#-sbTXM{;01GL)i?y8SX>6ZvqT_mKhQ`-33C4ePb$ zNWIMOoy+X#oG#i}2vt>29W6j6+O_Fh#`##fW<0Cydj&aiYsMR&B3iLg0v6hhF1^ba zj6hbublMyu`&-eQV+2mVH7A|Z1sT&l-*j4>7jjn9U Oz*M4LE7U+CM@rY6Z}7hD z_n_@h#zvm~?Z4QMzWcX-kY{h6fAsYGH{bl}$&*>P|NZr^o(!K|N$_t$zkdDZ>)(Cy zk$Fn-t505i{q|Gy*{?o%_4VgZ{`edB)01~UO&|TY*FPVIPruu4&`*oE{qt8}q!*t) z{p9sGpLl+q{+WIDR==;l|8W6N{^qMsKKiRa^~)ywo*6l)%TA5dOkj>)D!>etpuRbr zl|Edn$8_~d`O@jl;Y4{WP2Wj5E*sW(@Oagm{@S0abjR6&Djoh3i9aYhSU-Zvou5o~ zp1XI?$mx~*qW4nshmVHgTXnX1!{<+a^UWK1{^6T9uRnkC6vo%T`u5q?jATz<%kvMP zz2U|3>%|xUt$+3Q?T5l!yY z_ S`|I^fS@GE? zum1G+pMUlG&8+TZzj~{0KmK>m?O$L2_(xxV^5L@dPQQKw?x#=T^cz84nZ4!XFMjiR z2HD#`d`9uM|M jUssK<=~kE8Xb?rxzaA)@otAQKym)u$HluaDt2}Hb?8> zU4o3-cDNkI7dU0G0jR*W4r*Z6a#J{E(EB1-;hv)|jzMS;zj@&M2Z2m_8RE&~UWV={ zJH|$wcl-2iZkyBI`a?8y6Iw|BE nY3Yb$P>p=F-`BUNa=7b%D!TNUz(n;A!33O6-+O`S< zU~ai2WAnZ9SY_mqm$!wA4ze`` Oc_#71QG7?X;E9qv3vY{Xu#kw_JB zR0?6OQ9~*I=6D*{H;D&NYa7pPX{c0bJH3v|lr8F!foeyu+$+eWWsnTU#$}D p@e_DRC!6KAgn;7E_b#W(-tND=~x%hTHB{r~cQQzDg4yQvB=WwGUok!?_9NJFr zMmY1A4y^*6abCFZ9Etz@?8&QN8{+?P<^N|shClIN^ndv3S^dup&tCm0*=eWO&P)B< zx4-z8wcAa6^%d<;;`e{MJx5+W`|Ml$*YNQ--#=TKnNRwU|NUQ|KmX$Auiw0R{pOpW zJ&8~L?G=JPd-mqpvsa&I@zt~E(<}JXUElwsuif-Y^po;;&-m;fLH_vFum8dQ)l*(Q z`^Bqgb^3bownwEtQvX3kzyAEmci%nzwS4^g%b$Gy)z55q`H}J8|KW{1&z?N}?f<_0 z;cs~|{1V7MdG-9&=V!^YZ$IMIhhKd^Jp1zb&pv$f`kU|n@Cu&s<==nyyEni7(^sGT zi+-8?2KS+U{dpEQw~WVU_BT9x?tk?b{nb6H)w!eW;H3NG;x|C8N_E5D?43e$WIAEJ z +k;{e3Ff}C_mWjOivv|3?CXw%P^w*q?8`Q&AhJ8wC~2&dEOg-Xi}GDX?$0ewnp z0>-N7 QJ`HOg&$dZ#!zIMgXR}s`dNl|1sF7Pk;Z+ z{=?$`0Pzpc|5ZglDd6d6pS*@Qh$efgcstnexBZj<>(%Sm^5v)9EBW%PFMjgvuvt0d zhaY|T_ls&jUmNZp_i4>M%|80O&wu{v&6{V>Kexa6=97Z#^RK@D@_T*L{v`YSH*f#` zS8w%`%h$%nO|ROYeDw7vzxeI*;n_#UwIE~vaj1U6*w@Erzr4Ks%JPcm&;RvF0TiGA z{58Dc%Vh3-`rFTk-@g9l4f5ru!*AZWU;IDcJb(J}S6{3J`8|W3pW^A;;n{FmRZsq4 z=QZ<`toR+gdHwnu_u;EgK6;vc^6H!CAHMnK^DO)PtGAzh_V(3TlK9WhKKAaXJpCm6 z-P?~}J^Q%Ws#c7hg`C*fBlSfAPVBrBPaRGGS@POvtu+!VK-y~PytJi3AiD~W*vn5? zt#q@3E+0LKNZSft#rF`v<7iIgtsbcH^Ui&`!6uVsrw~L#+zMiPicrB((CUIcilIJA zxpz%p`2#>NEg;Pah$q#~A#{zW-DeRLOchp(Gg9b0n8xfFq)V?}-k*QRV)K0e(xLbf z9HL&tzleFOCtiwACykfNFA=2!3QSk3^?N&gTs%F!`tmpH1=0^ce)a386rcDne*Wt1 zXZ-Ou&x@~R-sq37;LY>z_01di{O>cKKIPv({JZ$w(;xrlvdjLlw}1LHZJ+Tw^Y+y< zJ_Ejc3Os!h82)bg*f0KIpFD-)i$A^L`%nMy@rU)#KGZkz=Ic*>`uT7E^zq;S?&~j} z##ib-{>^;C{qdVOZ+OF-pKk?;zkTs9zkJH?pa1K#UtEG4-~Ge$@cgfV;_X+@fBx!| zkN)}DFJC>|fAZ@2hhP2bmA23S^yZuAAHI26%z^CR^Vz@s%ik4mzk2&|whYDJeD(ah ze*FEn|M>OSzk9=*H@|!PWc-gOPoBa!*yV)$_mBVM 3AfH*fyL$HU+L^=F^F zej{&QzqS9zw_kn!#Wz2D^3Uq bwVHs{beKc_54s;F&u z)8;P^x_DR>n&QRLloUf@iwveAprA8!CBiC@?7W}}UH9^!;yhJN^Af~!G3m|hSLB c|s8VC#fDP#c9h=*!dC5VgW}-`3H0#Bdj2(KO z0s&i)B^a*MhErJmaGVovX>blI)^p1Z&TrGY2W Go_+a653j!Y=Igh8_4Cg^)UQAJ=wHyw4?q3= z8vsem=d({ q{YuO1{dEoILweIznz&A2df<3)cHKyCD>rNf8Q;HWVrAo$sxewrh|S**5I= zV@EX*& y-{)mnR|0E%)F$>~Rjft9s@|+k+ nbaRc2IG?*tq$|q OIOn%`&(5g7 z>&ah*OfI36LI~ylr4W#0EC85FPg!>X&6z=4Ja#9;+6|az(kz0+hTDmrUBFlCpNzW3 zXdR_KHEu5`^pXXjOie5<`lUE^b#39c{el= zu;D7Q5s=G_9C61c2Bz!KUoXWaj5caD`4q|O0kkq?P778jsvSbWwjA!5Qs--%<;p?& zQ{xJ5owx2RNu?_c^yuBrgFtyF`e!eybx;=+sJg4@-x#V)&zjXq-pDOfDuF;RIZ)79 zzxI?YNT6P!;>=ZIs!-M*WThH{l--;PUDPsLh52IRc1LbSwa0Q@2XT&~oYVz%lF(S2 z3F*lDb9DDaeUQC@T+ldY-AwMZkV_;bY7w=fIqsc5PfE_fbP+bASWi 3k*U zC2$6m$D@=t+L{Upafe*z`E{7AFvspA_NXoc ztV)Mf#ye5L4`9UMtqH(Yxyh&w&IW1c#xn#)cPN@xK`a>0$=y+RCRo7ioj+FhSM_Z7 zo!Gecs7}&m7As$!4+;wq c&nOY*Of8hs!y;1Dxe-%w!DGMIhMqDNpXY z(&-4rI)xRbKn%o_cfq$MU3#)b@$2)S-7Y{VhV|kN7O>lsB)|ueVgQqVO6+-KjGYt% z^)gaXi R{6fZ|8|3_QDE&$WDC2#=0zZgr5Ag`5{wFXK6TX z40i$IcnHpOYvL(X6zdtm&9>Z*kzrz3+seE7+1Ce&WsDyzLvAcxj-D54ki20x5mNjs z*lxY=n3_$|q18AC-NM%BG!>ym!*(18m^!sy_J%?53kwIVpuMu31+x*s!fr90;JR zS1jaw5Nu3qwiF%vWrK|;tqwSoVQ1~$ZLAdxBCFL 4B9N&a>NQkC^myIsRz~dNgDw30ra!(TN=NNa_`-sQex&A8JMmz`?68iOuF1P zCsx?F`HEC O18=915A?i{N&!imR`gQ% zRoz+)w!4cASZ#p@Vj*5t?UfZ|Og^u*^UV&bJJ8z_dhZBTw!Im#P#Yqc-1_STaZSph z$nrbU0uvvs2BMPmr5KM=&ucl2d;d_CCszB$I)Tu~E0cFr39Ag~c!Mwrts#!yg;3|F zKv}7m$z)#ccP*!+J;G{lRKvgrtPBQC-pF*My20fD1p_I?zPmO!H+y*j5<+z=>Tfp5 zsz~S1&Yi8w#-Vf-1DH;jao2)f?@cz${ (9XUdBGUDi4)pnoT zZpSe;F3tPJy}T$;SL*=?(&2P#E$HF6J;Mgz1BsW_WRW=D;8sy$qcDx!jeOW}S#R^u zbwNZ3r``URaGV##sQak43N<54o$KT_haFh@1(Rby1h=w}sOejcDFPN;Sff04qPp2a zC0O`in+4<8NV|@9BjJumm*#^_0D(fmV%gUm4}DeJl-r_n^ipO_43Ul^9Y= z zw_D>^xUw71Gm^wQdIYuT)qGe8*!xO7hb;=*B7+R`y2 A9t>ssAGr0 o<}P!QK@oa 9!gz+OeG0!_;)Msj)ytM_DB zulAT!%Q!FbD0o*I!=3rX2!#6 Smog_|uUp4cDQTVLsTXDBUKDl#Y^V3r!+`!7=fgnQ=1Sk}3t0>Q~TSTbTeVX&(Y zt={itprS7qyLgAatf1J3>ZF!ZmZ@01NuhU4@Av^xMUZ6Y6cl=8t;b9)*!$!x!X`O@ z#p^24Hgy8E4ZGx)?u6U@>b}7SGD6(V>&AebS5O};!R^5MiWBTMt2g7cLVu1>U_QVI z^~-&Vyk^@B41h7|Fgo3df0Ntw5;TNc*On`Z)p~1o^i>!m7_0qiC!cgjZT1|^60^3U zT1IgURngg 8OUuY>=DTK0&}HkJW+%h5_ziAL>SvtIzk+~syr-# z*F2RNY}2XPYAG6H0}?(U**`O~XOGpb%bhK`{ClnfR-ZPGZoGuG4y3>1&USNw&fXzT z4=0!ca|E_@ev)*U6f(#F$F9l`mw~OqE)hDel-AgOHH5{SABpSD#9o&;ni_#r`G0+7 zu-@KF(MGEoyfCUugKA94!G;(k>>OV3r#MhAA@Ne01mq#Nz6#?(>-?aX>hPRCoi*Dy z+WIkML}#CUy(wMkmJxMQdG5JPby=T~(kDxXt&?-CI93FXlL1rK4wZ29)$wdU?%hqL z2Y`}J8`|l>1uhmN!G`OTBn!pbFCHpB0F!Zvp%>dnOONNPcU0bFWb1Lt#7UoQt*D&S z3ns6D?gU`Uy+hS?t4MMwjZ2a^MQqowD(N@IQltpR)d;WB#36-)jD)kjpWijNGNJ3J zx#u$Uo7>w^`DAAtH<2e(fenY4Mp$uymn(B*??TH7Mvud5yWb32p)kaZt$RCg$s<~d zl%B5EOMJLvaP3jOw-^;Fzn(y|0~bc%q+31C_cmC2Ji&DI;`~*Fct>abcxptv&H=U6 zcW1r2daRYM?R3twXN2>jwRd#O&;s4v0};q&SWlp_-Ht92z2ho=w5tL(98Qfo!nN;V zDuOiLp@{f9zclQaP`gegY?q86AI$eT+aTA`5rDkK>HXYMHrRC_u;jSsI39(|c``q1 zUK1)j;@Q_+ZSpy)h^KWcd-!}6hG7nztzNwRIgxg)WMdyL@^#mD$_cIBx&LyzHQP$f zsiL6@_73fUDQK({l?o$rReX@LlKZ?+oZmWF$&oOG^_g6-Iv@uwc&)J1kY^0{*zBU* zGv)ITY=TZz=n(DhRKvyb&?r7wM|T)2-Hz7D3rY={OeNiB==<{{ue`)uSHD}3ErQe( zONo&Uh2DXX>}hJbpU&%Q4dykfqIy_anQ t-E{Xd@u|$ryL95F0)SC9IGuVa=vU}!)$u;w1bzb^U1DR;IUGXIA2bI zia}LEuoMjJ%t0k6HViq~urqD5B2?*B2sINFx_a3LtIOjIb~=MIZK#?hFg&=sZd5Lc z^Y;+8?7}7xa8#)$??Sh)=s-mf8&s% P`QLv5_*AXC}7Ow!aWqd3spDC zP>_qifV~S!E~GNZkIt_n-JWDj*8VPC(%yQ+-`=U_G%VQAh&g%OZfaavG 7JmylQzNww%QGG&!Mzw@ztM@6$JkZ60GP9HKl*s) zCwS8T&G-G^U5|Wx`n^8?@DF!i|8XD{?|j$){+0atucpS8WS{@*-#(3h{P*8~+Yk2R z&wuf>AKu`GujWdY?6c3FeE9L}H?P0{L*Ku8{pQ)T=O4cL{NvYOfAZ1OZ~JHZr{{j= zO5j@t`_YdBA2WQ$=U<&GAfEi;#~=2erN96E Xls(@y8Kxy2M@>)oN*y zp*5cJ%U)+F&WagW6;u{vGKZ;Za=9-6RO4k6O$IOpHo)n|i?bQ0xi)yxbTZ|Jt}-JP z`Cc09E+e!9Kjj@x esO~%d z%&n;0LG)$>;=zl ixMk*b;6PBAo@3PSesg zl{Cwf>;bHw?do9B%FU36T$1q@BUX#_!$8aNJi^;xVz3uMc1-Tf`QDV$+%0N0d97DR zGI1iP;8nzRzMa?NsKp5*&_{~HVXU|TD5cw95UEbZdbgkP8O0=&B5Ck#0_YjeUbX_X zdQLDHbdK+&?du|lp(_@HYbS?l8^Ank7pxb2Jl%9^1(jPAZS%8#m gz z@pR)|C7^CUsra)e5vj&=UxI<1?RHL2KwkNB4hozaS9w|HcY;AM#gccjN(XV8@qvbf zC8;z&Q&u%9p+L5%I{W%-zzAonhlyj`%;@z8kZLZjfy*sXbhdl+mE4h=R~N{+k4 z_K?dVK>=cLWh1Q4wGE`J5Ybd~koG1kiVWnO?7X)Y#2wRegH1u@j_J%TVJeX3K6=sI zB3+CeZq&KpX&o>gm!Js%-sXWhi{&*K_AJm@s|6F#QygS(^}IbAY>cR)dRVM#GXoZ8 z@53KP3A=L|Wttfr24GkVvYrz1TCKde$KH(vR{P@%b#3spbsn%`&^2;yq#!YGr7Y42 zd%Co9?PN%Z%Y8@9PA>DVg)tY8!>X`UA^ &-Ug%;=4 zyOU#;9?@(-cbhWsi0xKk>C$=8`&{)Lm9~1J?&XZj>#dVDABVcM0Lc(=WCn7A^9HEZ zLQmZ}L#mxhN-)gu5`n@j?E=p5iWzxh3}opM<6?*q7|AxOmG4OUzeu8@_izOtkg99k zZMm4jA$T0kQk*bS&=E;x@V7ImR83%vU?dQO?Ps`Am4-D-=)PD{U5C)l+ii KxhAhLbXG5xdg;{NF%#oK9nFkYUlbbkw9Hh7tAe6h&(S4gRl4~*6NR6PnzQA^ zKme0Vv%nG0PznGXRjxoL!LAU(=^8LwL8x@Ys!=-c^sv>g8@&z6CdUqK$PNMnHuV ziPzLfIHMd(S$>1ztVozj894KSN4THCxsc{Sl|FyB?)na$NG2y)rE25OdAA{~9uLwU zabh>InSkBjI`1vbA*suGTD4hH_i@fnXF^!DXUH}|t{!Z<^8yQ>KbKV`QjuIjN~2gE zmv@7`s%OVoU#~-lrW9X^f3Ym&v7_qPmkFr5{c8Erd378P J~{{f&&%;&sNmapgM@5mY`l74=7 zmrkV8EA~Xw`gr1{^M}Zhf!fU0=;c%P;;WfjfR3x 2kQqiAr(k9b$-RQYmD}()I&ChvY1Hqt{;tYgO0Ecr7`JC#xq_~5mZ;H7`5DVAw z@PNG)f5>ZhsbvgHf28{QvpF6Xht^0~YpR{k` M;;`O@KUj!4Mn;L*xoRJX05IYKi+clK{Oc4nz5%PtEocdFu1)o?hSrpS22d2jbK z7CzIUUKFXa_RN=x6MIEPKrV0^v08J-@VQTroYRhN)Y}Z}I_{i&-%3Oi*@UD3K^)a_ zT7p96f*gtniin63e0TGr0WX&_awCeUv}DuVsOSK7p{Q5gSpAiVAI=kDXP3>sgQpQB ztT93f)Htl~Xdq`oK>Q0`%7r_2m!MEQ < zmIZn!&W6ww1gbpxc5Yh|J0w3NPj#@!u~wOilT|&sIx)II0|#{c(Up26qId;O=D1*DYGsrhRQos zE0+z7y@b2?_*g7(XiZ!uN2-3^F=15j2)dk>VlCrAMOr5-l{pYVh*~W*j2)WIE63eK z2|RBA;ZjPva6a6pTf0r&5#ya^jtM6|s3b|^K^ #Kl+a*9g)ju$T|M*;-)p=5(Oz|iq7Ey2Lc_ZRnV8n;P*11#m|vZGQChPH zr)V=jV;oO6xDZ5^r-pg>f?LWohpbnD@f3oct-wn$@SOK(@mDdf=w-oVUo^|Ud)Fer zM%E~LjSw`6rlHNDN{TWo@6-inJyo>@<7J@Cs#4;Q9!n%xik= @Xd{ zX2JG$HREOu h zu?lS=wlg^xK;8;M9Mw`B2_e9mBS$762DW8au@klI)WW0}O? Ng+wFu*ij)|Eaga@j zxO}G|S0_=;@rvm_zTkFNh7-3zMUR1FXPuySN^Y>BTPuvn^{ kdC! 8^Lh+b02@qIHgTr)0lsb-6Z8+Ca0U~RAMFxyfV9S5+{
3@yD 8pGVuUzIO8^s3abMsulFbQa&E3QHk;!u2nba-Kfh=K3yqz+ zqqZ5Ck+q@KNLT=sN5#7pAXHXlde_%AxygiuF`jOMIPc}Q1fos#r1Kr;MSZa~4dtyU z(u@(}sac+N(S;d0SEu_YZ04y^7c^CG4=c5ZM^T#;D<0Iz7Hk_Z@0^ihO_4bB5e`8e zUYDMVQ&3kl=XJg?fo-s}7IidkcT~{3ZMAKRTg0hTY11ZxmkW|Kn}wb_J*(vr7c5@F zSxr@R{|-S; _5+l;9D{j`-X)f3xx;11v z@GY8%WiNU)bpUGBa`FIDGj`xt(w<=`u>op>8T+78by9)#a_(*U{>8rDx8jt}g;k?Y zGkRAZwzj49b@^iJVk r6Eq`?D1y;6j+QqEh84VRSi=GAw>ioU-0aQs+~^+TBra zO-c>SElOun+WQ2F+HRJ})ZsR|3$c^(pj*WDPL9`IcSHqM`|?H8=80%I@f-}n2D~T% znHzFObz%91ks+YMi_`#BsSIO>B~;9W3iXZiXEtBq{^qA+b2~K`y5@MKKI*oo;gR~7 z2qM=LccFzLV#dJ>irXD+(I6_8z?w?BqJstVeZaCaBcvw1h{_T$n~C 8UQQHIwJ_U*nY{~wlu7gl+3|Z?Xlq85teXk&W!ixczgSOm=6#d#ioV-w* zr4W8K7fE%~Mx-Kk2T0W^Zf7_J)tOEtpmvGUSX(dz*a@I2l@4VD*abQjb}$C#9jFcK zXvA(V7@JZ8^BzHhObg}Ffm?1|(PbNpx|1|vHrS171vt)&!xsC 2E zO|Yk5=w_uFyt*1oF?iX--ul)Nyv!{W1|ZlRV`4%$C0}Qr +&(W~itp=U*ZFo2P)Zj94)re% zBN5B&jV~5U9QBfMlt73Og9Yu6%G~p)zvkDN32U^{f_nssT1}DxM|Pbp4P!{D^F{M6 zdb+U>3mvU2qV2`sG&g#?AaE3_fC$ r+9^Qml3YxhSF8R zoMe#vKGo_aKLDJlkCYGx%t4CtjCNd(lr{BWMrW<{v$3_WIxh5Txj?>$aYkm#C9#q2 z736H&nJEEl!aOEtOEt`9%jK$?invtD+z})I)-Z-D^&_7A%c$Fe=JP)iMn7drx^#Xl zCR)C~y6>1nzOQ=^C@NKE$Y99h#E`HS$(qf9kwHZf|zG^D&P;hrxWNcDK8yiInSQkghG2x-UGC9Fq*%8+(# zJ$JST!_K$ahJMn>fR{Nrd@V>%){CL1Xq*8?ZBJ{H{+#(f5m2i-XZld2>Z-LI(Zp%~ zccGVP!J<};X!=JwP!P`DhIQtjba)w-P9GR)Wa}o_px8OMa!0kq1Q>(u5-U )uxVGtE?MTbh2Q*R*`r?8xm_HrtlG(o6nI^qOSQA=3rLzj)b1+n46uve=xY^GdA zmu8>Wf~3Q*BSpi^sJEN+R}3}`S?_TL-GT&B=6>zdFeE;{P-SpbNwCe3y!LszcC$JG z?GU&%aBwBQ-N(8Q$zO2+%RY_yWe!Z+tczTsMBM_Ox)S81`;lU#>e7UDV*Fa~Cx9DV zdFoVLz-pE4(}ItESV>mX({^~##O`T>&MlOV$*~l5iSoY6frHgXYEzc%qYCJ43M& oHsQh9tONDw;mgPrTqqq@VUGCc=X*^dWxRZgIwX~B?U2vQryJoW^o4m611 z2n1Bc1s0Q0MP*ND2MW4IYJw`F>Ets4-p%2$jE!CD!n&|}Y($ayV7L-Q+emd{Y1Prg zbzap=l^@hCgg9-JqCki(GIN?IMMN#hJC0`l;lhSQ60AY2^|n3^0jO*^g4^|8bg>py z!n{41Vwl~hbPsUnfY#VaqG-KGkdb_32)0XReDv;$8G2NyIb2-x120b=Bt $(&?L2kvoU>|9Oee!8Ka<*)&L5!%+(yXkZ~jRtx7@?~Atw==al=W+s=m^#XA zkO~Wyu|WD1{{ TJ5i9a012&GW2J=0wRzj`N@F}Hy%aLm(O ?I7xy+6+V~RJla|4W}zH%i<9JLx%>@-iMx((&{sCK+bq36r^B+{XH zdf^30T&UU{W5oIm=Y1;L>!i>?77OUHEJ=k585Dx0iebgGpX>zV)`by ^(g7lma z?{UrvTH!nJCnFojD;5gMajx997J~Kc2Q4D(QF cbys_2I*x*|8tar7CM^Egf1L+ zOF@|Pwa^m8V>i&XJdJR!mPF_p2;vvw$U;SMyMaM#z?fG3ilX&`Ic7Sd5$4S_+H9Hj ziy*!1P8ZGTsr_n&oV4m}PE>o9I7k4OYWbyt$%f1-qE}>ZV%@FSIWji` ?7ql|~(6gYC(vT8PjAM R}B&@wT%jRc>50frzMQ(@db*aU2zOSKa<<^_4lM zH1x1Ps9KnUTD4VBCqiSx%KF)>T^J}5I{nm9)%}rrCl~0x9pc@pw;1e@&e+(qL6sh* zm}{MjJB6JrB>v~&>nj>@gsXaG;{Zi1^u>q>ga*KOwk<1#usOG!cb7S}@!;(~>piu> zUdUiWDr;W}GHN|h%#}8VV$%>stIiq&lV*1?nyC-@W%lyc4^SbB<1mguj1h=PcK|6k zk#!Y#Re^w1WgZ7Cy6( +C>E u{CuoC=cvtQ}Y%{nW_dv zP|0GS{I(ekaU(;A3VPi!g(9i!)G1;+71}dm>KrL9x@vx)Gvk?!+IBWY?LxiYdndB_ z@CX>_x51%I{1t{W!$zexroKTeVJ=Y+RZ*$UDOjyIrC^vXQ58g`?aon4l8=$wAf19Z zf|s@0o#TD0>qqA$(o3#(4p^G?7 ^sr((~p7d_VIh@17wE)lMMI@0qP zL?xw59YGN~bzWuWab=nYQfNp}T}6QJT!U j&R%0VUu8Y?BfxliCEvp>D*gad}>(-L39C2tu95X?!LY9GIAJJ9%6=_ zmq-lNI#xVV%tdvP;)t!Qrjbo-R5smWddh<+`xm(0OVxlS_|y+TtJEK=4+Le-_losP zkp0|)k18h~bw+o*gYTUL@7}LxB-lx-ZsE<$*D1AOaedR}0a2yRR-<$QE)s)1v9B81 z#)~U?ISv8ZArYN-fTu& i#EsL_fdFWJYb z1C*oe4+%**-rwCJJ<>9Ti)v+orA|B8exq6E+YC%(yO$|8DmsJC%x=xpIEA*S 3ZlWc?umo~a1o^ZZBuiV0F?%@7aSs8=t|y?lgeJ~QDxK_uMK9&}#nnt+ zdUm14V9Ncipl2Fbvr$Bwhl(*+;aIL(K$vpBuSMKTCsNf~1zV=CEq(De)#9jCXXe6{ zILS4S^`$oWEaC@A0e~xi)US(4cJrGf*_CB@nV) }Nq31>U0D|p4_wy&>c fs zOK98Ku;ilZxw6$-YE>~CZUJ)w%7ooX$s$cz&;{=pWwEtV8TDC^fv8otY*u!QCbwY~ z*k9Si`MKsYoRzP)Q>bFF$yYETQC}BI!OP _QN3C>~dW%v3S`C;~CB7*FU3Z7OthX_NC#Wv9$k7~aZ%w>B)6C cX1%qi0Bl3*d@;1e-%n`SRpd=Jk~@XOo;g@(+MXb1br~YO~(7Ql;Ga znvvg!Llc5$5N*2t+~8u=A{0zaXFjM(XO&FXFsp^0=6x cq{CMOPY=8=ni0m?k z%MHp~Nz`Q*Uaj-9eUR?21vB(G*l~lF(`jQL1mNf`4h3()`sJ)J>2MzGrSvb~#!?EZ z6geSLFJKtL1O-kt91r6d`xhS6(Wtz%6~=7rEVCCCJ)11%{C`Qcf {mtrKjSwBZ<~aKH@(G16Jg`->^ZL|6IXisqf}EN7i`Ae_8ezT zu>pGQIr&y-+c?`eLXjCJ8N@Kiu&(U@r8sv_2D*J<4yDg==#mJsn3OIg7bI0#nVJ1# zb=5Z#Y*M)CvT5-F Uy12MLOqq;-Q;hu)bnF+syU+=Y7rW zupAcGSjR*boXpO8-?nWlf-d#F;hrXJ01ov*k7EMHENb@wL|s~3XAmXZR>7 z z)U2C|LXM!=ZcJg^Q8yhp3oT@I^cX;egzK1@n21CQ3wf4xSiiI$iRl@$d)z8ebbw%o zt@WEen%&pYBHPxrD;qd`Zab?gLZCS* t3bun z>5w9N%Oyb~FolWnKy{RJa;c-g-!ClK@5|KuWd#HH0MI-@F)#Nkdbf3dqIox6r+Ts) z1RZM|EC{0(;kwuHWj;;~1a}s+pELV0GT83WKxgX}=TRuky`G3f;tjj#tL_qM|Iz%N zIgJqSbUM}gogoasus;xJ+zvm-u&!6=c@LW!ai~@@=A5^}nOASFv8Y!Cds@B2oyryK zaU5k>nSLL@l+Gqeeu-|M!$`l8<8JuEViA8VTnZg_Yt4!yvT(|cjjIB!baUD~*l;@B zfY`Q8&tvzi_T{~#gV}HmlZ{S2uIQ<~TzE)-#DcNZ Fw=T$@z z3dI)Nyz=Y}bwXF=SbwfyRZXX0hoZtJR< hY2cG3mIaTdf(a~1u-WX!aIS;5sm_j>)dnWt*b zFNMT+1PKMGpveN3LQ%vO6~huwbUTg r;N4oB*M#cs*@RG=%i)sjpAh>0Hi7gu2rGg$5aQkQu*ign*Xk$C>)e;>tux_Ao zP={8HTo;=D2+-PI9#ICiYirY;bG#c*PN^Y8Q!J&($;& yD=p3Sy`RRq3%| z;oN5*nFg;2wy;44w`0na&KF&oI?Pp^Z?=yyw-IFJoR5UnxkN0;&sehvdgr(eqsp#v`3w!;YGsv3 zXV#u(fnhLUI~bN0xzoltI!b<-`AmAk>2P?_&=$u=aa`*ai_tibJqBdhK8?v4&qiiX zaMwdo*oNvTGjGLKlHvT{=`vLrqYXfz1ax&soJEZrPr~3;y&{gLQ4nwM%8`sl3NTg! zXGWmS)h#5&F<8Cp>v-Jk?5b|J2IjUcF;p8aqM;xrw`e!FpN<3FB@^09c{;alj|T;D zf_fDvxV!zaVRm&*npErebBt?qU4pzl;Z9q`vBQN++4H6aRy^y+S|5!KdnQAfyek>< z6y-{ezX21#JD5u%5F1nxsd5f_d*t54Xgb+5mQaAX&ZDOwZzzE=R84#RZmPqb`KjfO z_Y!K7S-Lu&3QdKr!P28H^^^*!N#|sUlir@Bm_y&LqVsbR0S9f5+TJI}`9Ms2_L$$- z6~cz91IEra*Ao(t+AjWy^QnB|a`hB<$0be)41r=*!E=*pP`Z>GR8cWL4U5V)WoV&!N05aX lGL7A@W!Yk~5Sxl-R(vnKfS-9dLJ6y)!3jWQn+y8~g5fem$^5Y#I9_ zib$0mVP~)~ PU$f zW6lW~#9bP^jB3;Ad3uoy{KJh`T)W@rqys+;3{c2`4VRmDm%NxM6sE%qD4>z{zVqWs zkOGsVDCR!Zia{#Ro!bnOkdS8tT?AMd k_D+YPo~n_%+gTtkyHc_<3_;y2$w@60)2ZR5 zg=pQr+RecPOzMDUu^f)D%40#KI+LqSK|$K&ckbUOMiOM E4Vv$yul>aPghOO6n=N(hL2?CeYWBCH401_Dz^3EMkFUhIhD z;YFj;T7RSBYTgm^TV3g7kF#;A)DSoDv}le3bsw&0)-WFsmy@R#to5`F`w7Tn<94TD zcSxwWu?1{6fS|IE8<#T%8AxCkJEKr-Il{$XeD{pR;%w9j*z5Ivq6*d&8trvITAi_l z+1z7`0K1)NCpr!?Krg$augbJErt2?TRqJ$|*c`%Y175{B>%B@+k}UOieMpex`9!dx zV!9I_4OM4Layjm |H?^7BWd4lK-$4rk@K+tWMjwLmWA$fCd|ghg1PzUgE8)4aGt5 zZmwsD7hu itILx#GtlI!C8~j?{s$jPibnzW(46_iPtK|7~|n^gB1dJ z sOe1PQ D3ztUs)qKxO(Oi*UIozm4sq+Fr*_{M0G&df1TkodRjk2SyFE*7C zFquBQN qh{gTx2P9pW-#?8rWS}{z?h;&Dvi! z^ofV4SN2v{Zza!HFZ2}yV^GEIj s=6AbRNN0nc*PQ27F5f-CiG*gAXqA z4t6mfR$X<%c~qla_^6j_Zo78!qGNeQY%FdSj){eKioDz%&%|J;qIe0|&?r!q%R8G5 z%A^Xo$Ent3{sF>eSEpFTqu6oW_VcK;VC3W-bhQ3* ~StfTNKdiVm5pr1v|8rm%yhGc@mMiii#NV>U z{s+Y72faYtm(D>|r>=~~1?Sn%le}kK!G7#qzx#+8F^uU%u$t-G%nWwicp;U>?G7xR z1TT1(J0EK~Ub>-i)35kg59(@OXuDov0if;lw!}~pmTu0T7cUy04n}LOdLA}?xv196 zcQwg~F78FVu0+Z??$){$D@Db6x1*G!S@n6|rL5Kbv4gg|qenKLkpj{zaezvTOH&AO zPE=LZ``{dCKp(Pyll42~Hk43kMOF}H>58=0EJzezE8R+U>xtN_KAy_<%q3_ @|07U5Wi^T?rzl4XDeeq_6p~6!_tLmH#ZAkfy}*|8n r$pj$_!cy}wfs!!QYvdD!NV zda!rT%G~M&=X6peC%AK+bY9wS+S83Hb2o@cwR8)+o)JAXRFMcAZd9CrqnPd _e3?)EgNvss9osSfP#`EidzErer8q)60exgi@C8| z9~7y&2C*S9?Cx3BrtR)!O}%GE5*go;l{SP_i7?!Y)S5To=q)vgSar1{@2mo|_8+8J zQW4jXzC5)6J$R+Hol095R=2%@&R1ry@fhzCqyU>59RYKtP`tO^gi2F0KY9rmh?d>D z4bD`gUQ>q{Poq|Iic@WV&3tYl9A2on+s>=2bCWOqFygg2V(xbFebUOT(Nal5kH5E59co zeRVB4#A)6gZJHn(qOtdZnK9NozfY=?rcB~mfqRvp=u7KWu_2u%J^AU<)PQkLT8S-& z8|3V3iOO`vPd$HO6~}nLAVN0tScMX@xkf(Rr -~@g@`RuZg-P}vYtZ1J!^9ibGKf4do62(^M8$*t2f^T zF0B=f5tuDI9ab6`5~GpXJAH8~>f71mt5!Vg&N;E6@m_^3;b0-}vPB-}>H-o<>-QAw z!nkC1-|3b~kbZZ;I| fqk`Nlq0RVd#%GD+>evL zBZv*`81sx|mE@p%279kwri!)eSC*lx=Bl5g%m=5UNH@2HNW_j}i=0?=V}6~wKa 20XuXtKS?2jR zow=hkrBi>2l`RC**OwIiL+8k1qDZQGl{pSmDIvp7@Ay_=b8L;PEaGGt4xW1IC^0Y{ zRJt`*{BoI!6Xor>DKbXf{^iTNx)t>f0`Z-K5ZLLNpPLLeT`I3GRlW3n(;_=>3`V+u z$L*(XR*+7`z5~!hR{0TAi|-SI!AOYrRozcZsma5F7z;**iv{R(w${hP;cz%?;ADpc zPMbrdQ7~sb;Yn4+Rl8G@PU3h_sr BW`_(;! z!iFLptZ4%t@>7DsH?rO*Wgm@Q+^OkoJj6bz*xdxjIi?tUmAlxe^JOTdX$`l>xkHZi zpmNt>x5I<^kwuV#XsoXbtr+r|4F($st{8&dRh_>a!ZwWgC3ZJp5(<87a8)+ZUFbi0 zFV^3Kq`X{v8dsVc-)4pc+P&MHG*lfAU1zEU>32JsG8q 6h+7VqfoNJd0wK )o;9CPfj9`9LYqz9xdoH~dTs9_rtgzP_U883xFW|`tiL|JCLT_+ zUv{lZr)Yst&%g&!0%*H4Cg0bsXk%qwlohISj(1oB*(p@Ru~FouEJ(8Gh2}vyVDI!W zQYT)pg54d^%fO`BLu=%J`# C+6xe|}c~^P68k zeNYgJPlm64_Sc{N?wc>3l70K*4~NgT@BiLTAO77#H@SpND~-m6?0jnH0(Lnq447J) z!s%g1)wThKNQ{GK6CN9scAw`4tCQvsJFR+NJ~WU3?DpbMyi8;mp}G@!FT%t3xRhOF z9P0uIRWrM6q8={P&8F7IwcWDqUJQu@&s;XOAcH_W>g`c)AN>7!nD*97?Yu3in);eB zipL~K&Z@=JPlmsX{U7SzKL684fAtjj^tXWM7iZ;o`m5i){@y !qY#maF43s>Q~m-k#Kz5B>V;%Iagc z*W*6g&iW13dSW7f@cWk;;pyAqvnOAD{*izF{gVQC`u5}E>65R&SPw?=#h>2r`t_UF zuV24@^Ni=8zm|`@d};scyJg<~_`Ut=`9Ev>e|xvPXQ9V;E&iuZKmEg#=U@HmyTAU& z=imHnZF&Fu@X?2#@zAv{O{$tIlc8h@>sjBL>#fl2_u~*W@hnAiqUyF-^-e1q+AhKS zMsmi?aE5wk5T~4RDCdCeB`j;Irj^4U>0H=7YLi%B>-2OcgRvgz=6$22IrzJ?nwM5m zRS~0?>{3J*VLT`U;u^K3=^-0nI08(k7~?n`W2Bq=I~<8|JRZkLipk~DCAz1LCls-d z*t9k?Vyu6;Bi1*Sq`m6)sQ3ENyHG%$%AJoF8jxh3NI+F;PW~JKU3*IFB9qIzj-7$3 zv0CLjU#%lT2_y7_1fh^Im*ZZ#nZ$6it9BD>iRr2iPM+I-o{*T#letu{;;4^;i!GN2 z*~d(fAu}>;UFXM4$X1ZtcKfP}RZ}N&_B<~SG%xS_UZyrE?NOzKXik0=|B!0VTuLH& zEr#7ZvP6#6B~{`bP|V%kbZ+63W?*evZAgC}B?!9^bG4=P=N-^02Ycr>RcFNGiY`%X zOgD3<0V=9SG%*1dLrDruUaDpdRc4kxsf?z{gHC5(<4ZAdIRfnjmE9bk#!P9m!WkOCos_f&7 zb6rPIHG~~wHsx^|&Yfy5|4Wa57DyFc0`khFF65AH%7bHg)OxuVWEW1Qbo*U^KHVVS zAJi4i(%g7#;MSnjHpJfJc5x~9AWoh<^ObAb?%b2HB7?rjCbGVm$sPA_Dx+DL3_ZLg zigrs!g%u1mPE70K*T)KCNK;~iT}C3-*30cty(@`F#g&W-6N*Z0#_kg09B>%dw9>%L z7CDj`D5EiJjA8O!joFWRtg@q~+1Aue#K5^a7t`OZI(UpARNa_KSMR)CToFUrHY#oB zaY3cZ<56k5PSG}xV@JJcaH_*ErQ28M9qHV?iF naF=Ed7 zYy*=_58vmGY8gYfubSFOIAfQAn339MDs491Ahu-ebX|+H5ST$u^Ju4PnmTH8@(HZD z&>phZ!{I^v#(gsam6FMknqftl-rpcXqu_>{M%ubK9U29US(qRrMhIgh#(EAM-9HEC z&jVx~H7Ad=xJ3twb?LGe4+gMd;~_5BlRrKAs~-=aefMMkeE2kZey3l*hBt5CfV_GA zn)dJGKY#T){p; 6!qWCkQK@c^UTPEjB8_oa$T-fI%={d(ACD@v@se>yoJfA2 zg&y;$<$hm-;GEOWh1yh&3xy#bRTN28%%lgkMGmIzeBv}qu1J-~InU{_`*XNH@dC*< zAM6CHs@d6(+*ei>5^~F`iTR;mi#G!v%q`D?`7_B{1aisLbcaJeIm(74m)6DI%#= zdh9y|SI~vFQCHkf*_4@R_UyT1E$xXgWrmaIC14;c(G=3kwA!@AdBj@3Uy!N;!jAez z{OwUi#V)Rr4JtEedKP5}=N=IvN(t6iqTZDT!^#u6y5=1=EKSbR6oe8ml3%tNJMx(8 z9lfU~Y)CC9dgd03vtwOYzp2R0^Ku`j0iYZQ1tOBw)?d@I-*e@FT>-X>xx_fGcdcT0 z%%*j37gsXdnH@dUsaLcLh KH}#gETl>T-5M}B zC-XFWl*@j g)l-`8>r$I}Uod3npyi0Ywhes<+tE uTnavcelkcT&O(FqeJl> zEUPcszvE>N4x3& w?-9flU^QYu ztj1G!&0T@>PPgklKrpk`o9W@&K>$6It;IMbKD%XkA0CD+KSB_4hLRr03DSqVtX8E2 z*|ylL0dm1dAmdT7lr(=Rc1knSQznAiQS0M_=%z;q0%7hOS1F<9=32L6b!o?zuIbWF zB(dy0?lGoBH<+6N27--R7@!lQk3WBS-}mC(h-l#nt$lT!Oncxe{y956H<{iX0}` zLjk*y-BEIgQLB?YK2!g`86jp8m^*`7mrvK4QY%-=1(03Z96#b(+FUFPs^gga&t5YB z15AYX2$Itqt0PIb2;&{7k#WA}a4GlbR{7WQ=5c3oEk3oj1BPTR>;X)$z5IX#+ iGhN)4qj+qPFpWQ3vhfK(O1*rfD6BrwWn(lfR zGN#ht^!hXr#uyu%+3MFEVT`ajm5iey@gt;uJ!v2gvhF$k@b#njyq9T}*EcqYofjrA z_mtW=Z=Kg$vpnK%e$wMyh%jb`Xi}Sx1XxWxhM`D1R7osEkBJk%yI9Uq-Cb_W_gzo^ z=X>5fP@4l)4hPf~_qu8)?}}#b{x&wWIgE{1&n@N@9tI6am6?MgdpL#a9Q-~7`-m{i z>U!@Qu^6lpiIs}a^Elr1Z+GImTbkp@IgF5_9ygiM>)q_ GzvCFO~dDrbMF;b;rU zj@GNTSvzDW->%t(1a z-)*>U!IM#* `_rdnPl2bOK79&&^jA-L^4(LOJpIYjkFz|>zWdv!Uwp&& zf0q@1{MYCIO7#stPgC-HKK=d|kHB?4az?OW%y;x POv);EuDrrctpi%4N4>?306vRj<+0pL|x%1Au5V-gGcDrf_b0N#@UD@%$ zfK;3Y4{df-hi|i3ED4f9%nyatyk8J(h{m`?aw0)I?fsmT29uYJN|l+q_mWTm?L(5J zE;a{s jIU<~@Z29pnb%QQFo)^WyZLoIs2dur~*F z }1H)1nQ1^~R)1uhN^HqaD*L6a zHM8BBI1~S(Gm;u&nN~-@NLT55=6p&!?*LN^U5vF8mwHp{c@NM9Z6mIInde6@dkp=C zN?}U*qQB^jP~TKJxpY-#sE>oZ#{$YlQ!1;-%
?e|T3# Kv(N6*8HB-^z9H88`?egLTchY2z-lbQ}pDaTe1_k1ePWi~X% z2*igI{pP$zBIFQwbnyMp69o2p0Fy$!dmY@n7JN#N=X0sU!w5dze8$eRC_nTNdAuOB zdV*crv7Fzz`_gXc8o-x7Ol^BvL`GNtn0UB+{m&L8Z~Y0AxBdjByD8-6T?xe1ntueQ za&=9oMH&Cg)(AlE{0O=8Cn%+><#^vIq2so5>I2u=kU1da7p&|LuCV$6f>25`Lh1Yn zmG*n>?iq05hn;2f9Lz&9>(`+1hu4ohUJ&-PB+W?fe7x0n_=<}i`xxJ7={>M4^JMeN z^aHi>hY7-7x(KCoBc ^%BkbwMSl=Uwsb*WR zf2>oqBF+jU!12U&BiR26LD }5m>^v)pdD|9qQ2#$w zQ28iHjuY%To~XIuR&UlYxwJwTRvCT7E;@;yjgrEElKQs(;K;)d7lb`sgqkp#N}B$q z_^rp-r kDr*&p8V^RpMLiC)!XXl z{_UqrwE5}VHy?f$|L@lyeg?0UFXO+D<41q|_m94N3h|Fm{+OMi)Xh@w=xy{pjmA zzx(_tU-K*AcYOcxPoDlB{{Dvx@?h}c?wlOD%1{z0_f?~9+g!>%tXif5U{oaQFV3z& ziirhmk(S1UNqv2~eZ&C~s+m3de}y3IPo3SdBZPha^3cd_e<2znl=%T0rv|C|ZD4y@ zH7nk;Dl@yb(ZqI_TK{o`$7k37Q-V+u*qL&7Jk(}yy-M3PxFUxf;tjGpDsI<%q{@2O znFN3uD2Anxcalz9L*6!XW7s3WN#)O(koV^h-+7H4wILp{Wu*5=)hW0gH-Jm=>x0gj z#dO_QNq9&!&0~}L0v=TAsY8EI?(jb+$Si{yJG%pVkJ~NmF4iNq uikvYO#{{L#qhV}t<->KU#HmSbXu@2B0@a`A?f%(<0I?6)k~j^pGpQ_>v=^T| zsf2nS`D>Bll#>`B=vnzw^5@F&pAuviWd}^1WrvAO2|O?p4kR>eF|gajO5 >sgP z|1S^(NDvPa5ywj+Fl7^6#gJCdLg$kHiqlYJOhd4jj@p0j^7u;&5;4on><>RQqVw>f z^S@3IfM__RUXph1F%wuSC+Et`d9jGjHI+70 OF97v8l-a>fSa&oyHI?CbvvdCwb@rs;-h0000bbVXQnWMOn=I%9HWVRU5x zGB7eREig4LF)~y!IXW>pIyEvaFf}?bFg(F>UH||9C3HntbYx+4WjbwdWNBu305UK# zF)c7PEip1wF*!OhI65^rEig4YFfax#{*nLy048)rSafM)V>)ARaCvfRXJ~W)PH!M% zZ*X~XX=iA3EFg7rWgup9Wo2x6r<(AB0000TbVXQnX=7tLWMy+>a%pgMX>V=-b5ch_ cAYyfCY;-MYZsUc?#Q*>R07*qoM6N<$g4zPaEdT%j literal 0 HcmV?d00001 diff --git a/src/img/foto_20201130_hex7segdecoder_01.png b/src/img/foto_20201130_hex7segdecoder_01.png new file mode 100644 index 0000000000000000000000000000000000000000..ff00341021921390fcacc313e38f61faa0b8fea9 GIT binary patch literal 10187 zcmV;+Cp6fJP) 004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0001E zP)t-shFUL?YB`~IKAUz$QHqnTh*G0`Ny)C0%fr0q;@#BE(6YtMpO=_;PbiajWW%0o zv5{y`N;%=#+}+#awXU;oNg>6%xd>cn #lGL)C=<#aifMOnzLlGzk- zRPnAVio=W7BHdkz%e5J9_u*cYmka(I?=rbJ% ccwMB(xc1*jjv zVU$%Gb={1kAZS~gK5moz^qp(Ux-KvJd6fl!D@?a69uPbXfq)@EE`nmXUkm%tF`Mdy z$)5OuS34j3<4#?b4)CukL#TA%rlUI70^`=SBY=RBj#LOEPRBGgWf}jcisgCI7v5eC zymKk8*UJTnE<(qpJiV9i 2c@F@lG((oeeHKkf<>rjbR G~l$Sc`kcO4ik$?10&p-lr!1(wm5~Y~wuVmpF zj*610_@j4#MYG}`*gq&`?mPVJxjdg6m=eZlGS`R69-)y=h-vFft+w?iS!6ga*WBPP zG%mqmKnk&>cUselijQ`6O2@ljGbn&|uHd%dxX4a@zk-LWkOGF9(fe@}I>fR%)5z5I zlsU|5GUdCe2a>3eD)U+K$%90$mki7$0ucZo^cUu8t0O63gbs>+i&iBcUmXW*sE($j z`hX*@@9nsH0sss;-U+vfXn;al>8YB&jvrK+x!gZHEt*s`E5INS{q*5f-;zcYO)bV> zoz159A#YT;@lO(fQ^awqPj`{VG>sS}L=J%jb|j8U;20~Bn6AAiM_45}=Z{74q0eHV zxg xhr8@$cTl jrOp59dMyT+K zH<|o|*fHtRq;_R!dU?4wFDzrc7N--$TV*Eo;E^+Um*{#E5Jrg Zy+5@^aa= zVqOb&RWiR~$lLkgladyczh2utnYqUJCn9N@Zk5m3KJ=*#GR-lup)XSN^j$rUCnaRW zZv*2kppweOz+3rjRhdm)-c{|zd+uJ15zSN#OkJkxBma;oT;a+_o)j&WsDueww0j zMM5ybRdHNnq4i){ml#Hll q;UwQ|Z0s*Zm4&O}7yU*G2uWO#^U1r0Q-sqgs& z)0Bs8b8FAg; )!m=z+1$B50j z?*Uv`xh);Z5D=Z=Sd9}(yAKnDGKC;sSS-yu=UqR$J)n$aW2DgYaZNb>T5KH<6{!k; z4CvWQ=cEox4J8aVLF`EeKzM*5217H&Gz6AJq08{(#g5gyB$$Aaara*liI`V))j~@| z4--S2)VoJC3Pb|?DQ3Uf+*9<<+*Ha(YH_zK#{>j$Q7cibO3Y-4#2Hh}!U-P1ixAN> zq{#G9qfGR?l)H=di43W1t`+lP%ssUvUL=mDb}~|(9>?8ccRo`6cfB{XDVh^z3pSkE zl_D|6#ivfZ))vHb^&%D`5l+@96H0zmuaz5ExM^|~BmIjgzX!$WwW1xBiIcj0J6Vos zuK 5>UwCA+0GCi}rn%*7do-Lh67T;X`-H@JR-52JNCH7zYzXknAW$fVL}K(ruI z{ZTKwMmYVq!-vnx52awG5wF%93w}y%s!Pf?PZc4o(Xx7RU3gJw5DWo-pk5X{x}c1B zx-Od4WFU50n%Inxn+WDys6@0iQSC6IBeR0ZBKl{Y536XAn%v>T2Kp(_JH(F235=;< zqiPh0C<6Yrhqil$59d|?NMkk)j3mTS_L^~xt-+AT25H`zbw*KCuL|GY1z$eYYw2f? zEGhyJjl5Nsb!iK # z6Zw~2ySy31q_Iw7uajXB2{XeB4oiuBW=^yvzdnvBnHJ}+e`(WKlK4#S#jHd;!VP*X z#DQTpbx_JUzsB$)@A}xi7AF6BG7JafIvE+OsUtqZY!Z$>Ly}&W5HbZOi>sd!L$Pv) zNlj{6rgk7`N0-b?I4MzNor~h3P4r6aqK~&a>+sy6hkV={r!(&&C4?gx)w<8voYhW_ zlE8?ld1QKm>>fG^h6G}d4wzuZ-FY==ycVS>g~OCyy+Be>7^kG{yBz@>I=pYU_MnAb z8kwi+Rq2r-h2=~gy^GI~$t#jbN;ECBC=7{;rHxV%ok+#>M>=-%Dm1f&8dT^t+Jx7W zJfNl`84tqVWzk1@7yze#y}C>@sH(g|VLcLzH)4VqHOzoXz=`)sYJ} zOj#kOVo*q^%*0d~*Zb0C(|!R+C)-cy =tMB-spfG`?}qfi1kX ehb`WFjnW z)7`rIRFg#iwL9ZUYxw}vbEHL(gy4mWDaOPx`L2wS;O0lCdq{#={aSA)x!*QH_!kyU z6*W1OJFS?q0rxej4_kpSXwaN`;X-mr7Zk|`PBb3+ac|b`#zizUn$Bl>uZPOyV!7if zwWpBVw*8A4cYgvxB6dbr6@u04{j?seY}GEj{6!Gy%o|ZmVI(J-&F_R{Sb!tQIKK)b zA9-X)$f!?}_cloyKe4Q6OfCUh^J%Z@z;+kGiiJE-`oXF21%&_-03N>UseD%~5>Q-I zA0d1c1(L 8ojPDDetgPS ~4;>CA07SJ!$$Ysxf3l_Q21>gUN z+Vc=T9a2g&qnOjjux?@r$biE(JLZmotiWZNPV&O!Xj-5pxLf%Y7*#To^?t$wTU7ra zKw=j1%weA!okhnfh5f*6aU&%LBv?2}kwjz3Q71I7$cbrPO$&K^QKvN H3wWFH*=rn_>n@_hlf=3rEejs2G6;P&%pP>x(YQ zA1XvCtlkI&S^V2iU2s;RPdOudDa@vqV?Ym>a)3To^H_os>58D(oW{oqsy8~umqIZ{ zTGy8!v7Wl@apYK0{n!Oh3CT{5lHzwD^0EYul?Y-k-)s03Y|sZ+f9AkaYo49YphWW; zvpj`RWYm{zMNYeoR)_54hm>eml7jj4{C o zhImwh+hp0vizYJ9NC>Hi8%}yJPARUx?JoFd#$~IYht|9; zx3AWB qi6o86~R$ zdFrI9g^>WiCf?9>fOC==OFgww6Jeb39EhMOc|=Dd_>2=^Y4-+EdsIptf#}w G z>$=_lN7efxAhItcMm1@6g-PpDmBRwH%vrJ$^tI+GdMq~!AwVN 4J{ExyUCBEvxG-20%^|rU_;I0@88Q*7+fi_*xjy6I&0Ro1&GWmn7 z#A*)>yEaR^tWm_C@CzJZ 1^dshIsBf-@%XmSL8V}C`7dXW zW*nj-S4GfRfrAPYIGF{6cf)1{i5Qx=vZr<411qL=Q%k={Kv5vPzePrF!pI+7@bGyZ zmZ1@c^BQQ5YI4dB;s*?0+2HN~gg@Okq&Ykk6MRGx=GmomKJTVT&7KS@5yEjQ>I?y# zS7n>_?=M~O*fiIsxe1c-af$lbf4La=*{voah=kC+(_A>r*pcSdbBV15El32&-jjdP zLe0EzVx@>@wbXpfQ VL z0bf>=JYZ>K9C2Bx)fXlYGb#HK4}8Dfp7cHnhWo80CFAp^fi$)lCcVWO(E;56;XpK! zKq4k?qHrWDK3L _NvZ_rSMDz0bq#He81WV;TLk z>G?>&WKX=`*L&$$b?E{5ln?Y`Xqj@57T$?KgtJ4I^2)Fxinix{5tU(gb)KvoDH*=L zzTSuH=kGTW{9hTd4Rxz+trJGJRkdK%m)BShQGf-Q6