Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR

El propósito de esta monografía es presentar un sistema de monitoreo basado en microcontroladores para proteger los datos sensibles mediante comunicaciones seguras. Enun contexto donde las amenazas cibernéticas son cada vez más frecuentes y sofisticadas, es fundamental contar con soluciones que gara...

Full description

Autores:
Ruiz Vega, Nicolas Enrique
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2024
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/93576
Acceso en línea:
http://hdl.handle.net/11349/93576
Palabra clave:
Websocket
Microcontroladores
Cifrado AES-CTR
MicroPython
Angular
Spring Boot
Ingeniería en Control -- Tesis y disertaciones académicas
WebSocket
Microcontrollers
AES-CTR Encryption
MicroPython
Angular
Spring Boot
Rights
License
Abierto (Texto Completo)
id UDISTRITA2_7dfd3fcfd5b59b1089b7d0dfe8e43dda
oai_identifier_str oai:repository.udistrital.edu.co:11349/93576
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
dc.title.titleenglish.none.fl_str_mv Secure data transmission system: integration of Micropython and AES-CTR Cryptography
title Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
spellingShingle Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
Websocket
Microcontroladores
Cifrado AES-CTR
MicroPython
Angular
Spring Boot
Ingeniería en Control -- Tesis y disertaciones académicas
WebSocket
Microcontrollers
AES-CTR Encryption
MicroPython
Angular
Spring Boot
title_short Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
title_full Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
title_fullStr Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
title_full_unstemmed Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
title_sort Sistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTR
dc.creator.fl_str_mv Ruiz Vega, Nicolas Enrique
dc.contributor.advisor.none.fl_str_mv Giraldo Ramos, Frank Nixon
dc.contributor.author.none.fl_str_mv Ruiz Vega, Nicolas Enrique
dc.contributor.orcid.none.fl_str_mv Giraldo Ramos, Frank Nixon [0000-0001-8407-1831]
dc.subject.none.fl_str_mv Websocket
Microcontroladores
Cifrado AES-CTR
MicroPython
Angular
Spring Boot
topic Websocket
Microcontroladores
Cifrado AES-CTR
MicroPython
Angular
Spring Boot
Ingeniería en Control -- Tesis y disertaciones académicas
WebSocket
Microcontrollers
AES-CTR Encryption
MicroPython
Angular
Spring Boot
dc.subject.lemb.none.fl_str_mv Ingeniería en Control -- Tesis y disertaciones académicas
dc.subject.keyword.none.fl_str_mv WebSocket
Microcontrollers
AES-CTR Encryption
MicroPython
Angular
Spring Boot
description El propósito de esta monografía es presentar un sistema de monitoreo basado en microcontroladores para proteger los datos sensibles mediante comunicaciones seguras. Enun contexto donde las amenazas cibernéticas son cada vez más frecuentes y sofisticadas, es fundamental contar con soluciones que garanticen la integridad y confidencialidad de la información, el método a presentar integra tecnologías como MicroPython y Java, junto con los framework Spring Boot y Angular, para desarrollar un entorno seguro que previeneaccesos no autorizados y ataques. El diseño del sistema se centra en la creación de un marco eficiente que no solo monitoriza los datos, sino que también facilita su gestión, permitiendo una respuesta rápida ante incidentes de seguridad al implementar algoritmos de cifrado y protocolos de comunicación seguros, se busca ofrecer una solución integral que minimice los riesgos de filtraciones y garantice la seguridad de los datos. Se incluye un sistema de monitoreo que se basa en microcontroladores, específicamente usando MicroPython, para adquisición de datos y transmisión de estos. Como estrategia se importó el algoritmo de codificación “AES-CTR” para codificar los datos y garantizar la confidencialidad de los datos durante la transmisión. También, se hace uso de WebSockets para garantizar una comunicación en tiempo real entre microcontrolador y servidor que provea seguridad a nivel del sistema. Este tipo de sistema no es solamente una manera eficiente de manejar los datos, sino un entorno robusto para prevenir accesos no autorizados y ataques cibernéticos. Los resultados obtenidos tras la implementación del sistema han sido motivadores. Las pruebas realizadas indican que la combinación de MicroPython y Spring Boot ha permitido una transmisión eficiente y segura de los datos. Se registró una reducción notable en la latencia de comunicación, lo que mejora la experiencia del usuario al monitorear datos en tiempo real. Además, el análisis de seguridad realizado con herramientas como Wireshark demostró que los datos cifrados son difícilmente inaccesibles para posibles atacantes. En conclusión, este trabajo no solo aborda las vulnerabilidades existentes en los sistemas embebidos, sino que también establece un modelo para futuras aplicaciones en entornos donde la seguridad de los datos es de gran importancia.
publishDate 2024
dc.date.created.none.fl_str_mv 2024-11-18
dc.date.accessioned.none.fl_str_mv 2025-03-12T15:43:01Z
dc.date.available.none.fl_str_mv 2025-03-12T15:43:01Z
dc.type.none.fl_str_mv bachelorThesis
dc.type.degree.none.fl_str_mv Monografía
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/93576
url http://hdl.handle.net/11349/93576
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv “¿Qué es el cifrado AES? - Panda Security.” Accessed: Oct. 30, 2024. [Online]. Available: https://www.pandasecurity.com/es/mediacenter/cifrado-aes-guia/
“El 61% de las empresas ya usan plataformas IoT a pesar de los riesgos de seguridad.” Accessed: Oct. 30, 2024. [Online]. Available: https://latam.kaspersky.com/about/press-releases/el-61-de-las-empresas-ya-usan-plataformas-iot-a-pesar-de-los-riesgos-de-seguridad?srsltid=AfmBOop5IeY-
“MicroPython - Python for microcontrollers.” Accessed: Aug. 22, 2024. [Online]. Available: https://micropython.org/
C. Capera Cuellar, “Análisis de rendimiendo de la función criptográfica Hash sobre sistemas embebidos de 32 bits,” 2024. Accessed: Oct. 30, 2024. [Online]. Available: http://hdl.handle.net/11349/39155
“TLS de MBed.” Accessed: Oct. 30, 2024. [Online]. Available: https://www.trustedfirmware.org/projects/mbed-tls/
Y. Díaz Gutiérrez and J. M. Cueva Lovelle, “Analysis of the Cryptographic Hash function in block chains and its impact on the security of data transactions,” Redes de Ingeniería, vol. 9, no. 2, pp. 82–87, Dec. 2019, doi: 10.14483/2248762X.14383.
“Definición del algoritmo SHA-256 - Ayuda de Google Ads.” Accessed: Oct. 30, 2024. [Online]. Available: https://support.google.com/google-ads/answer/9004655?hl=es-419
A. Brayan et al., “Diseño e implementación de una herramienta para el procesamiento, almacenamiento y visualización de datos de telemetría de la aeronave Calima T-90 de la Fuerza Aérea Colombiana.,” 2022. Accessed: Oct. 30, 2024. [Online]. Available: http://hdl.handle.net/11349/30113
“Sistema de información basado en la tecnología blockchain aplicado a la gestión de la información de la historia clínica de usuarios.” Accessed: Oct. 30, 2024. [Online]. Available: https://repository.udistrital.edu.co/items/804c6927-74f3-4710-a946-e53b3abc139c
“Repositorio Institucional de la Universidad Politécnica Salesiana: Diseño de un guante con sensores de flexibilidad que traducen letras del abecedario del lenguaje sordo mudo utilizando Micropython.” Accessed: Oct. 30, 2024. [Online]. Available: https://dspace.ups.edu.ec/handle/123456789/21759
R. L. Rivest, A. Shamir, and L. Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,” Commun ACM, vol. 21, no. 2, pp. 120–126, Feb. 1978, doi: 10.1145/359340.359342
R. Steven et al., “Sistema de información en línea para la gestión de usuarios del parqueadero de la Universidad Distrital Francisco José de Caldas sede tecnológica,” 2024. Accessed: Oct. 30, 2024. [Online]. Available: http://hdl.handle.net/11349/39318
“What Is Java Spring Boot?. Java Spring Boot is a widely used… | by Dávid Lakatos | Medium.” Accessed: Apr. 27, 2024. [Online]. Available: https://medium.com/@lktsdvd/what-is-java-spring-boot-812dad38e574
“Qué es una API REST (RESTful): cuáles son sus principios - Platzi.” Accessed: Oct. 30, 2024. [Online]. Available: https://platzi.com/clases/1638-api-rest/21611-que-significa-rest-y-que-es-una-api-restful/
L. A. Manrique Arias, “Prototipo de IoT para el monitoreo del cultivo de tomate en un huerto urbano mediante una aplicación móvil usando Ionic,” Jun. 2024, Accessed: Oct. 30, 2024. [Online]. Available: http://dspace.unach.edu.ec/handle/51000/13215
“Ionic Framework: el líder en desarrollo de aplicaciones multiplataforma.” Accessed: Oct. 30, 2024. [Online]. Available: https://ionicframework.com/
“¿Qué es la criptografía? | IBM.” Accessed: Oct. 29, 2024. [Online]. Available: https://www.ibm.com/mx-es/topics/cryptography
A. Mauricio, C. Mejía, A. Jhon, and T. Chacón, “Prototipo de cifrado híbrido combinando los métodos de encriptación AES y RSA, implementado sobre una red Grid.,” 2019. Accessed: Aug. 22, 2024. [Online]. Available: http://hdl.handle.net/11349/22405
“The WebSocket API (WebSockets) - Web APIs | MDN.” Accessed: Oct. 29, 2024. [Online]. Available: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
“Home • Angular.” Accessed: Aug. 22, 2024. [Online]. Available: https://angular.dev/
“TypeScript: JavaScript With Syntax For Types.” Accessed: Oct. 29, 2024. [Online]. Available: https://www.typescriptlang.org/
“Top 10 (Free) Angular Resources.” Accessed: Aug. 22, 2024. [Online]. Available: https://www.telerik.com/blogs/top-10-free-angular-resources
“Estudio cuantitativo: definición, métodos, diseño y análisis.” Accessed: Oct. 31, 2024. [Online]. Available: https://www.compilatio.net/es/noticias/investigacion-cuantitativa
“Java Persistence API (JPA) - Documentación de IBM.” Accessed: Oct. 31, 2024. [Online]. Available: https://www.ibm.com/docs/es/was-liberty/nd?topic=liberty-java-persistence-api-jpa
“¿Qué es handshake en informática? | KeepCoding Bootcamps.” Accessed: Oct. 31, 2024. [Online]. Available: https://keepcoding.io/blog/que-es-handshake-en-informatica/
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.acceso.none.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.none.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/869d54a1-0e8d-4b85-9d1e-bd434a66218e/download
https://repository.udistrital.edu.co/bitstreams/09bdde53-24d6-4bc7-b605-8081a93eb005/download
https://repository.udistrital.edu.co/bitstreams/a1cb0676-59c7-4df8-83b2-9bb69b4b4863/download
bitstream.checksum.fl_str_mv 997daf6c648c962d566d7b082dac908d
5db0f6dcc37b92f1d1e0c666cd183900
337f5bc6806993dd4e8ba14883879aa1
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1837007132836233216
spelling Giraldo Ramos, Frank NixonRuiz Vega, Nicolas EnriqueGiraldo Ramos, Frank Nixon [0000-0001-8407-1831]2025-03-12T15:43:01Z2025-03-12T15:43:01Z2024-11-18http://hdl.handle.net/11349/93576El propósito de esta monografía es presentar un sistema de monitoreo basado en microcontroladores para proteger los datos sensibles mediante comunicaciones seguras. Enun contexto donde las amenazas cibernéticas son cada vez más frecuentes y sofisticadas, es fundamental contar con soluciones que garanticen la integridad y confidencialidad de la información, el método a presentar integra tecnologías como MicroPython y Java, junto con los framework Spring Boot y Angular, para desarrollar un entorno seguro que previeneaccesos no autorizados y ataques. El diseño del sistema se centra en la creación de un marco eficiente que no solo monitoriza los datos, sino que también facilita su gestión, permitiendo una respuesta rápida ante incidentes de seguridad al implementar algoritmos de cifrado y protocolos de comunicación seguros, se busca ofrecer una solución integral que minimice los riesgos de filtraciones y garantice la seguridad de los datos. Se incluye un sistema de monitoreo que se basa en microcontroladores, específicamente usando MicroPython, para adquisición de datos y transmisión de estos. Como estrategia se importó el algoritmo de codificación “AES-CTR” para codificar los datos y garantizar la confidencialidad de los datos durante la transmisión. También, se hace uso de WebSockets para garantizar una comunicación en tiempo real entre microcontrolador y servidor que provea seguridad a nivel del sistema. Este tipo de sistema no es solamente una manera eficiente de manejar los datos, sino un entorno robusto para prevenir accesos no autorizados y ataques cibernéticos. Los resultados obtenidos tras la implementación del sistema han sido motivadores. Las pruebas realizadas indican que la combinación de MicroPython y Spring Boot ha permitido una transmisión eficiente y segura de los datos. Se registró una reducción notable en la latencia de comunicación, lo que mejora la experiencia del usuario al monitorear datos en tiempo real. Además, el análisis de seguridad realizado con herramientas como Wireshark demostró que los datos cifrados son difícilmente inaccesibles para posibles atacantes. En conclusión, este trabajo no solo aborda las vulnerabilidades existentes en los sistemas embebidos, sino que también establece un modelo para futuras aplicaciones en entornos donde la seguridad de los datos es de gran importancia.The purpose of this monograph is to present a monitoring system based on microcontrollers to protect sensitive data through secure communications. In a context where cyber threats are increasingly frequent and sophisticated, it is essential to have solutions that ensure the integrity and confidentiality of information. The method to be presented integrates technologies such as MicroPython and Java, along with the Spring Boot and Angular frameworks, to develop a secure environment that prevents unauthorized access and attacks. The system design focuses on creating an efficient framework that not only monitors data but also facilitates its management, allowing for a quick response to security incidents by implementing encryption algorithms and secure communication protocols. The goal is to offer a comprehensive solution that minimizes the risks of data leaks and ensures data security. A monitoring system based on microcontrollers is included, specifically using MicroPython for data acquisition and transmission. As a strategy, the “AES-CTR” encoding algorithm was imported to encrypt the data and ensure confidentiality during transmission. Additionally, WebSockets are utilized to guarantee real-time communication between the microcontroller and server, providing system-level security. This type of system is not only an efficient way to handle data but also a robust environment to prevent unauthorized access and cyberattacks. The results obtained after implementing the system have been encouraging. Tests conducted indicate that the combination of MicroPython and Spring Boot has enabled efficient and secure data transmission. A notable reduction in communication latency was recorded, improving user experience when monitoring data in real-time. Furthermore, the security analysis performed with tools such as Wireshark demonstrated that encrypted data is hardly accessible to potential attackers. In conclusion, this work not only addresses existing vulnerabilities in embedded systems but also establishes a model for future applications in environments where data security is of great importance.pdfspaWebsocketMicrocontroladoresCifrado AES-CTRMicroPythonAngularSpring BootIngeniería en Control -- Tesis y disertaciones académicasWebSocketMicrocontrollersAES-CTR EncryptionMicroPythonAngularSpring BootSistema de transmisión de datos segura: integración de Micropython y Criptografía AES-CTRSecure data transmission system: integration of Micropython and AES-CTR CryptographybachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2“¿Qué es el cifrado AES? - Panda Security.” Accessed: Oct. 30, 2024. [Online]. Available: https://www.pandasecurity.com/es/mediacenter/cifrado-aes-guia/“El 61% de las empresas ya usan plataformas IoT a pesar de los riesgos de seguridad.” Accessed: Oct. 30, 2024. [Online]. Available: https://latam.kaspersky.com/about/press-releases/el-61-de-las-empresas-ya-usan-plataformas-iot-a-pesar-de-los-riesgos-de-seguridad?srsltid=AfmBOop5IeY-“MicroPython - Python for microcontrollers.” Accessed: Aug. 22, 2024. [Online]. Available: https://micropython.org/C. Capera Cuellar, “Análisis de rendimiendo de la función criptográfica Hash sobre sistemas embebidos de 32 bits,” 2024. Accessed: Oct. 30, 2024. [Online]. Available: http://hdl.handle.net/11349/39155“TLS de MBed.” Accessed: Oct. 30, 2024. [Online]. Available: https://www.trustedfirmware.org/projects/mbed-tls/Y. Díaz Gutiérrez and J. M. Cueva Lovelle, “Analysis of the Cryptographic Hash function in block chains and its impact on the security of data transactions,” Redes de Ingeniería, vol. 9, no. 2, pp. 82–87, Dec. 2019, doi: 10.14483/2248762X.14383.“Definición del algoritmo SHA-256 - Ayuda de Google Ads.” Accessed: Oct. 30, 2024. [Online]. Available: https://support.google.com/google-ads/answer/9004655?hl=es-419A. Brayan et al., “Diseño e implementación de una herramienta para el procesamiento, almacenamiento y visualización de datos de telemetría de la aeronave Calima T-90 de la Fuerza Aérea Colombiana.,” 2022. Accessed: Oct. 30, 2024. [Online]. Available: http://hdl.handle.net/11349/30113“Sistema de información basado en la tecnología blockchain aplicado a la gestión de la información de la historia clínica de usuarios.” Accessed: Oct. 30, 2024. [Online]. Available: https://repository.udistrital.edu.co/items/804c6927-74f3-4710-a946-e53b3abc139c“Repositorio Institucional de la Universidad Politécnica Salesiana: Diseño de un guante con sensores de flexibilidad que traducen letras del abecedario del lenguaje sordo mudo utilizando Micropython.” Accessed: Oct. 30, 2024. [Online]. Available: https://dspace.ups.edu.ec/handle/123456789/21759R. L. Rivest, A. Shamir, and L. Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,” Commun ACM, vol. 21, no. 2, pp. 120–126, Feb. 1978, doi: 10.1145/359340.359342R. Steven et al., “Sistema de información en línea para la gestión de usuarios del parqueadero de la Universidad Distrital Francisco José de Caldas sede tecnológica,” 2024. Accessed: Oct. 30, 2024. [Online]. Available: http://hdl.handle.net/11349/39318“What Is Java Spring Boot?. Java Spring Boot is a widely used… | by Dávid Lakatos | Medium.” Accessed: Apr. 27, 2024. [Online]. Available: https://medium.com/@lktsdvd/what-is-java-spring-boot-812dad38e574“Qué es una API REST (RESTful): cuáles son sus principios - Platzi.” Accessed: Oct. 30, 2024. [Online]. Available: https://platzi.com/clases/1638-api-rest/21611-que-significa-rest-y-que-es-una-api-restful/L. A. Manrique Arias, “Prototipo de IoT para el monitoreo del cultivo de tomate en un huerto urbano mediante una aplicación móvil usando Ionic,” Jun. 2024, Accessed: Oct. 30, 2024. [Online]. Available: http://dspace.unach.edu.ec/handle/51000/13215“Ionic Framework: el líder en desarrollo de aplicaciones multiplataforma.” Accessed: Oct. 30, 2024. [Online]. Available: https://ionicframework.com/“¿Qué es la criptografía? | IBM.” Accessed: Oct. 29, 2024. [Online]. Available: https://www.ibm.com/mx-es/topics/cryptographyA. Mauricio, C. Mejía, A. Jhon, and T. Chacón, “Prototipo de cifrado híbrido combinando los métodos de encriptación AES y RSA, implementado sobre una red Grid.,” 2019. Accessed: Aug. 22, 2024. [Online]. Available: http://hdl.handle.net/11349/22405“The WebSocket API (WebSockets) - Web APIs | MDN.” Accessed: Oct. 29, 2024. [Online]. Available: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API“Home • Angular.” Accessed: Aug. 22, 2024. [Online]. Available: https://angular.dev/“TypeScript: JavaScript With Syntax For Types.” Accessed: Oct. 29, 2024. [Online]. Available: https://www.typescriptlang.org/“Top 10 (Free) Angular Resources.” Accessed: Aug. 22, 2024. [Online]. Available: https://www.telerik.com/blogs/top-10-free-angular-resources“Estudio cuantitativo: definición, métodos, diseño y análisis.” Accessed: Oct. 31, 2024. [Online]. Available: https://www.compilatio.net/es/noticias/investigacion-cuantitativa“Java Persistence API (JPA) - Documentación de IBM.” Accessed: Oct. 31, 2024. [Online]. Available: https://www.ibm.com/docs/es/was-liberty/nd?topic=liberty-java-persistence-api-jpa“¿Qué es handshake en informática? | KeepCoding Bootcamps.” Accessed: Oct. 31, 2024. [Online]. Available: https://keepcoding.io/blog/que-es-handshake-en-informatica/LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/869d54a1-0e8d-4b85-9d1e-bd434a66218e/download997daf6c648c962d566d7b082dac908dMD52ORIGINALLicencia de Uso y Publicación.pdfLicencia de Uso y Publicación.pdfapplication/pdf236231https://repository.udistrital.edu.co/bitstreams/09bdde53-24d6-4bc7-b605-8081a93eb005/download5db0f6dcc37b92f1d1e0c666cd183900MD53RuizVegaNicolasEnrique2024.pdfRuizVegaNicolasEnrique2024.pdfapplication/pdf3735497https://repository.udistrital.edu.co/bitstreams/a1cb0676-59c7-4df8-83b2-9bb69b4b4863/download337f5bc6806993dd4e8ba14883879aa1MD5411349/93576oai:repository.udistrital.edu.co:11349/935762025-03-12 10:44:54.643open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK