Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software

Esta tesis aborda el desafío de mantener la calidad del código en proyectos de software grandes y complejos mediante el desarrollo de una extensión para Visual Studio Code que detecta automáticamente "Code Smells" y establece quality gates. El objetivo principal es crear una herramienta qu...

Full description

Autores:
Vargas Rojas, Gabriela
Ramírez Ramírez, Santiago Andrés
Nielsen Rodríguez, Erik
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2024
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
spa
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/74646
Acceso en línea:
https://hdl.handle.net/1992/74646
Palabra clave:
Calidad del código
Mantenimiento de software
Herramientas de desarrollo
Code smells
Visual Studio Code
Herramientas de desarrollo
Ingeniería
Rights
openAccess
License
Attribution-NonCommercial-ShareAlike 4.0 International
id UNIANDES2_277d24c70827f63cb3e7a418a92821b2
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/74646
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.spa.fl_str_mv Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
title Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
spellingShingle Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
Calidad del código
Mantenimiento de software
Herramientas de desarrollo
Code smells
Visual Studio Code
Herramientas de desarrollo
Ingeniería
title_short Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
title_full Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
title_fullStr Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
title_full_unstemmed Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
title_sort Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del software
dc.creator.fl_str_mv Vargas Rojas, Gabriela
Ramírez Ramírez, Santiago Andrés
Nielsen Rodríguez, Erik
dc.contributor.advisor.none.fl_str_mv Bocanegra Garcia, Jose Joaquin
dc.contributor.author.none.fl_str_mv Vargas Rojas, Gabriela
Ramírez Ramírez, Santiago Andrés
Nielsen Rodríguez, Erik
dc.subject.keyword.spa.fl_str_mv Calidad del código
Mantenimiento de software
Herramientas de desarrollo
Code smells
topic Calidad del código
Mantenimiento de software
Herramientas de desarrollo
Code smells
Visual Studio Code
Herramientas de desarrollo
Ingeniería
dc.subject.keyword.eng.fl_str_mv Visual Studio Code
Herramientas de desarrollo
dc.subject.themes.spa.fl_str_mv Ingeniería
description Esta tesis aborda el desafío de mantener la calidad del código en proyectos de software grandes y complejos mediante el desarrollo de una extensión para Visual Studio Code que detecta automáticamente "Code Smells" y establece quality gates. El objetivo principal es crear una herramienta que ayude a los desarrolladores a identificar y corregir estos problemas mientras escriben el código, mejorando así la calidad del software y reduciendo el tiempo y esfuerzo necesarios para la depuración y el mantenimiento. Esta extensión será especialmente útil en entornos de equipo, facilitando la colaboración y asegurando la coherencia del código. La metodología del proyecto incluye la implementación de un algoritmo que analiza etiquetas de frameworks y detecta errores comunes, mostrando mensajes de error claros y concisos al usuario. Se integrará la extensión de manera accesible y fácil de usar, compatible con la mayoría de los frameworks. El desarrollo se realiza en fases: modelado, implementación y validación, con pruebas exhaustivas para asegurar la funcionalidad y efectividad de la herramienta. Los resultados del estudio demuestran la eficacia de la extensión en la detección de "Code Smells", subrayando su potencial para mejorar la calidad del código y la productividad de los desarrolladores. Se concluye que el uso de esta herramienta puede contribuir significativamente a mantener altos estándares de calidad en el desarrollo de software.
publishDate 2024
dc.date.accessioned.none.fl_str_mv 2024-07-23T14:33:13Z
dc.date.available.none.fl_str_mv 2024-07-23T14:33:13Z
dc.date.issued.none.fl_str_mv 2024-07-11
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.none.fl_str_mv Text
dc.type.redcol.none.fl_str_mv http://purl.org/redcol/resource_type/TP
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/1992/74646
dc.identifier.instname.none.fl_str_mv instname:Universidad de los Andes
dc.identifier.reponame.none.fl_str_mv reponame:Repositorio Institucional Séneca
dc.identifier.repourl.none.fl_str_mv repourl:https://repositorio.uniandes.edu.co/
url https://hdl.handle.net/1992/74646
identifier_str_mv instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv Easy Agile. (2021, March 14). 8 Software Development Methodologies Explained. Recuperado de https://www.easyagile.com/blog/software-development-methodologies/
Upwork. (2023, July 31). 8 Most Common Software Development Methodologies. Recuperado de https://www.upwork.com/hiring/for-clients/software-development-methodologies/
Wrike. (2023, May 27). Ultimate Guide to Software Development Methodologies. Recuperado de https://www.wrike.com/blog/guide-to-software-development-methodologies/
Springer. (2021, March 10). Code Smells Detection and Visualization: A Systematic Literature Review. Recuperado de https://link.springer.com/article/10.1186/s40411-021-00137-4
Journal of Software Engineering Research and Development. (2017, October 6). On the evaluation of code smells and detection tools. Recuperado de https://link.springer.com/article/10.1186/s40411-021-00137-4
LeanIX. (2022, October 26). How to Detect and Eliminate Code Smells in Real-Time. Recuperado de https://www.leanix.net/en/blog/how-to-detect-and-eliminate-code-smells-in-real-time
Visual Studio Code Extension API. (n.d.). Your First Extension. Recuperado de https://code.visualstudio.com/api/get-started/your-first-extension
Visual Studio Code Extension API. (n.d.). Extension API. Recuperado de https://code.visualstudio.com/api/references/vscode-api
Microsoft. (n.d.). Visual Studio Code - Code Editing. Redefined
Microsoft. (n.d.). Download Visual Studio Code - Mac, Linux, Windows
Microsoft. (n.d.). Descargar Visual Studio Tools: instalación gratuita para Windows, Mac …
IONOS. (2022, November 21). Code smell: explicado de forma sencilla.
intive. (n.d.). Un repaso por los code smells más comunes.
Pessoa, T., Brito e Abreu, F., Pessoa Monteiro, M., & Bryton, S. (2012). An Eclipse Plugin to Support Code Smells Detection. Retrieved from arXiv preprint server (1204.6492).
Paiva, T., Damasceno, A., Figueiredo, E., Sant’Anna, C. (2017) On the evaluation of code smells and detection tools. Retrieved from https://d-nb.info/1148154434/34
A. M. Fard and A. Mesbah, "JSNOSE: Detecting JavaScript Code Smells," 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM), Eindhoven, Netherlands, 2013, pp. 116-125, doi: 10.1109/SCAM.2013.6648192.
CIBERNINJAS. (2022, October 17). ¿Qué es AST? Árbol de sintaxis abstracta. Recuperado de https://ciberninjas.com/ast/
James Milner. (2022). Getting Started With Handling TypeScript ASTs. Recuperado de https://www.jameslmilner.com/posts/ts-ast-and-ts-morph-intro/
dc.rights.en.fl_str_mv Attribution-NonCommercial-ShareAlike 4.0 International
dc.rights.uri.none.fl_str_mv http://creativecommons.org/licenses/by-nc-sa/4.0/
dc.rights.accessrights.none.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv Attribution-NonCommercial-ShareAlike 4.0 International
http://creativecommons.org/licenses/by-nc-sa/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 29 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de los Andes
dc.publisher.program.none.fl_str_mv Ingeniería de Sistemas y Computación
dc.publisher.faculty.none.fl_str_mv Facultad de Ingeniería
dc.publisher.department.none.fl_str_mv Departamento de Ingeniería de Sistemas y Computación
publisher.none.fl_str_mv Universidad de los Andes
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/681757f6-7cec-45ef-b368-28715dd3f60d/download
https://repositorio.uniandes.edu.co/bitstreams/f998fb78-7ae7-4d5f-a779-5bfc02c938b8/download
https://repositorio.uniandes.edu.co/bitstreams/0b20ff66-b0af-44b5-9e06-6440e38957d7/download
https://repositorio.uniandes.edu.co/bitstreams/25d8dda3-3b92-476d-9465-3aee251ce006/download
https://repositorio.uniandes.edu.co/bitstreams/24180dc2-585a-4d6a-8bb0-313b09c38821/download
https://repositorio.uniandes.edu.co/bitstreams/09c9f046-2d89-4ff6-9b08-88c6d01d424c/download
https://repositorio.uniandes.edu.co/bitstreams/4599aef1-38c0-4405-b62f-7caeb8267cc4/download
https://repositorio.uniandes.edu.co/bitstreams/6e984904-0346-48e0-b3ea-77365db6bb86/download
bitstream.checksum.fl_str_mv 7b6d44e475a69bf54e36ea37bb26cfe0
a5244d2390d9719a0550b40a3bce5145
ae9e573a68e7f92501b6913cc846c39f
934f4ca17e109e0a05eaeaba504d7ce4
8aec1c242336eab0a75748dcf568b303
ec959958728393da4bc204ee0eb1cec5
f8e29af300984293f5bc11202b6eb6ef
00ba5ef71442f4a84e9b29b0f1389505
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1812133991249084416
spelling Bocanegra Garcia, Jose Joaquinvirtual::19137-1Vargas Rojas, GabrielaRamírez Ramírez, Santiago AndrésNielsen Rodríguez, Erik2024-07-23T14:33:13Z2024-07-23T14:33:13Z2024-07-11https://hdl.handle.net/1992/74646instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Esta tesis aborda el desafío de mantener la calidad del código en proyectos de software grandes y complejos mediante el desarrollo de una extensión para Visual Studio Code que detecta automáticamente "Code Smells" y establece quality gates. El objetivo principal es crear una herramienta que ayude a los desarrolladores a identificar y corregir estos problemas mientras escriben el código, mejorando así la calidad del software y reduciendo el tiempo y esfuerzo necesarios para la depuración y el mantenimiento. Esta extensión será especialmente útil en entornos de equipo, facilitando la colaboración y asegurando la coherencia del código. La metodología del proyecto incluye la implementación de un algoritmo que analiza etiquetas de frameworks y detecta errores comunes, mostrando mensajes de error claros y concisos al usuario. Se integrará la extensión de manera accesible y fácil de usar, compatible con la mayoría de los frameworks. El desarrollo se realiza en fases: modelado, implementación y validación, con pruebas exhaustivas para asegurar la funcionalidad y efectividad de la herramienta. Los resultados del estudio demuestran la eficacia de la extensión en la detección de "Code Smells", subrayando su potencial para mejorar la calidad del código y la productividad de los desarrolladores. Se concluye que el uso de esta herramienta puede contribuir significativamente a mantener altos estándares de calidad en el desarrollo de software.Pregrado29 páginasapplication/pdfspaUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y ComputaciónAttribution-NonCommercial-ShareAlike 4.0 Internationalhttp://creativecommons.org/licenses/by-nc-sa/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Herramienta de detección de Code Smells de frameworks en Visual Studio Code: Un enfoque para la mejora de la calidad del softwareTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPCalidad del códigoMantenimiento de softwareHerramientas de desarrolloCode smellsVisual Studio CodeHerramientas de desarrolloIngenieríaEasy Agile. (2021, March 14). 8 Software Development Methodologies Explained. Recuperado de https://www.easyagile.com/blog/software-development-methodologies/Upwork. (2023, July 31). 8 Most Common Software Development Methodologies. Recuperado de https://www.upwork.com/hiring/for-clients/software-development-methodologies/Wrike. (2023, May 27). Ultimate Guide to Software Development Methodologies. Recuperado de https://www.wrike.com/blog/guide-to-software-development-methodologies/Springer. (2021, March 10). Code Smells Detection and Visualization: A Systematic Literature Review. Recuperado de https://link.springer.com/article/10.1186/s40411-021-00137-4Journal of Software Engineering Research and Development. (2017, October 6). On the evaluation of code smells and detection tools. Recuperado de https://link.springer.com/article/10.1186/s40411-021-00137-4LeanIX. (2022, October 26). How to Detect and Eliminate Code Smells in Real-Time. Recuperado de https://www.leanix.net/en/blog/how-to-detect-and-eliminate-code-smells-in-real-timeVisual Studio Code Extension API. (n.d.). Your First Extension. Recuperado de https://code.visualstudio.com/api/get-started/your-first-extensionVisual Studio Code Extension API. (n.d.). Extension API. Recuperado de https://code.visualstudio.com/api/references/vscode-apiMicrosoft. (n.d.). Visual Studio Code - Code Editing. RedefinedMicrosoft. (n.d.). Download Visual Studio Code - Mac, Linux, WindowsMicrosoft. (n.d.). Descargar Visual Studio Tools: instalación gratuita para Windows, Mac …IONOS. (2022, November 21). Code smell: explicado de forma sencilla.intive. (n.d.). Un repaso por los code smells más comunes.Pessoa, T., Brito e Abreu, F., Pessoa Monteiro, M., & Bryton, S. (2012). An Eclipse Plugin to Support Code Smells Detection. Retrieved from arXiv preprint server (1204.6492).Paiva, T., Damasceno, A., Figueiredo, E., Sant’Anna, C. (2017) On the evaluation of code smells and detection tools. Retrieved from https://d-nb.info/1148154434/34A. M. Fard and A. Mesbah, "JSNOSE: Detecting JavaScript Code Smells," 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM), Eindhoven, Netherlands, 2013, pp. 116-125, doi: 10.1109/SCAM.2013.6648192.CIBERNINJAS. (2022, October 17). ¿Qué es AST? Árbol de sintaxis abstracta. Recuperado de https://ciberninjas.com/ast/James Milner. (2022). Getting Started With Handling TypeScript ASTs. Recuperado de https://www.jameslmilner.com/posts/ts-ast-and-ts-morph-intro/202013830201910908201913493Publication0000-0002-8342-7346virtual::19137-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000425192virtual::19137-185f75f85-ca3a-4d29-bd1c-312b6813e2a8virtual::19137-185f75f85-ca3a-4d29-bd1c-312b6813e2a8virtual::19137-1ORIGINALHerramienta de detección de Code Smells de frameworks en Visual Studio Code.pdfHerramienta de detección de Code Smells de frameworks en Visual Studio Code.pdfapplication/pdf1123634https://repositorio.uniandes.edu.co/bitstreams/681757f6-7cec-45ef-b368-28715dd3f60d/download7b6d44e475a69bf54e36ea37bb26cfe0MD51autorizacion tesis_signed.pdfautorizacion tesis_signed.pdfHIDEapplication/pdf380706https://repositorio.uniandes.edu.co/bitstreams/f998fb78-7ae7-4d5f-a779-5bfc02c938b8/downloada5244d2390d9719a0550b40a3bce5145MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/0b20ff66-b0af-44b5-9e06-6440e38957d7/downloadae9e573a68e7f92501b6913cc846c39fMD53CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-81031https://repositorio.uniandes.edu.co/bitstreams/25d8dda3-3b92-476d-9465-3aee251ce006/download934f4ca17e109e0a05eaeaba504d7ce4MD54TEXTHerramienta de detección de Code Smells de frameworks en Visual Studio Code.pdf.txtHerramienta de detección de Code Smells de frameworks en Visual Studio Code.pdf.txtExtracted texttext/plain36275https://repositorio.uniandes.edu.co/bitstreams/24180dc2-585a-4d6a-8bb0-313b09c38821/download8aec1c242336eab0a75748dcf568b303MD55autorizacion tesis_signed.pdf.txtautorizacion tesis_signed.pdf.txtExtracted texttext/plain2095https://repositorio.uniandes.edu.co/bitstreams/09c9f046-2d89-4ff6-9b08-88c6d01d424c/downloadec959958728393da4bc204ee0eb1cec5MD57THUMBNAILHerramienta de detección de Code Smells de frameworks en Visual Studio Code.pdf.jpgHerramienta de detección de Code Smells de frameworks en Visual Studio Code.pdf.jpgGenerated Thumbnailimage/jpeg9706https://repositorio.uniandes.edu.co/bitstreams/4599aef1-38c0-4405-b62f-7caeb8267cc4/downloadf8e29af300984293f5bc11202b6eb6efMD56autorizacion tesis_signed.pdf.jpgautorizacion tesis_signed.pdf.jpgGenerated Thumbnailimage/jpeg11000https://repositorio.uniandes.edu.co/bitstreams/6e984904-0346-48e0-b3ea-77365db6bb86/download00ba5ef71442f4a84e9b29b0f1389505MD581992/74646oai:repositorio.uniandes.edu.co:1992/746462024-09-12 16:19:55.493http://creativecommons.org/licenses/by-nc-sa/4.0/Attribution-NonCommercial-ShareAlike 4.0 Internationalopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K