Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps)
Este informe documenta la fase 2 del diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada (RITA). El proyecto se centró en mejorar la plataforma existente mediante la creación de un backend escalable usando NestJS, TypeORM y PostgreSQL, acompañado de...
- Autores:
-
Herrera Velásquez, Santiago
Saldarriaga Pardo, David Steven
- 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/94016
- Acceso en línea:
- http://hdl.handle.net/11349/94016
- Palabra clave:
- Plataforma de videos
IPTV
RITA
Red de Investigaciones de Tecnología Avanzada
DevOps
Dockerización
Ingeniería de Sistemas -- Tesis y disertaciones académicas
Video Platform
IPTV
RITA
Dockeritation
DevOps
- Rights
- License
- Abierto (Texto Completo)
id |
UDISTRITA2_e5e7e87457e5c80685c3296451dd3e05 |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/94016 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.none.fl_str_mv |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
dc.title.titleenglish.none.fl_str_mv |
Design and implementation of the video platform for "la Red de Investigaciones de Tecnología Avanzada - RITA" - Phase 2 (REST API, Authentication, and DevOps implementation) |
title |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
spellingShingle |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) Plataforma de videos IPTV RITA Red de Investigaciones de Tecnología Avanzada DevOps Dockerización Ingeniería de Sistemas -- Tesis y disertaciones académicas Video Platform IPTV RITA Dockeritation DevOps |
title_short |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
title_full |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
title_fullStr |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
title_full_unstemmed |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
title_sort |
Diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps) |
dc.creator.fl_str_mv |
Herrera Velásquez, Santiago Saldarriaga Pardo, David Steven |
dc.contributor.advisor.none.fl_str_mv |
Ferro Escobar, Roberto Martínez Alayón, Carlos Andrés |
dc.contributor.author.none.fl_str_mv |
Herrera Velásquez, Santiago Saldarriaga Pardo, David Steven |
dc.contributor.orcid.none.fl_str_mv |
Ferro Escobar, Roberto [0000-0002-8978-538X] Martínez Alayón, Carlos Andrés [0000-0003-0818-7095] |
dc.subject.none.fl_str_mv |
Plataforma de videos IPTV RITA Red de Investigaciones de Tecnología Avanzada DevOps Dockerización |
topic |
Plataforma de videos IPTV RITA Red de Investigaciones de Tecnología Avanzada DevOps Dockerización Ingeniería de Sistemas -- Tesis y disertaciones académicas Video Platform IPTV RITA Dockeritation DevOps |
dc.subject.lemb.none.fl_str_mv |
Ingeniería de Sistemas -- Tesis y disertaciones académicas |
dc.subject.keyword.none.fl_str_mv |
Video Platform IPTV RITA Dockeritation DevOps |
description |
Este informe documenta la fase 2 del diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada (RITA). El proyecto se centró en mejorar la plataforma existente mediante la creación de un backend escalable usando NestJS, TypeORM y PostgreSQL, acompañado de un frontend actualizado basado en Angular. Entre los logros más destacados están la integración de un servicio de autenticación con cuentas institucionales de Microsoft, la migración de datos a una nueva base de datos optimizada, y la automatización del despliegue a través de Docker y Bitbucket Pipelines. También se implementó un sistema para la subida automatizada de videos a YouTube, resolviendo problemas de almacenamiento local. La pasantía utilizó principios de desarrollo ágil (SCRUM), asegurando entregas incrementales con pruebas automatizadas y manuales para garantizar calidad. Este trabajo consolida una plataforma eficiente, segura y alineada con las necesidades de RITA, permitiendo la gestión óptima de su contenido audiovisual. |
publishDate |
2024 |
dc.date.created.none.fl_str_mv |
2024-11-07 |
dc.date.accessioned.none.fl_str_mv |
2025-03-20T22:18:05Z |
dc.date.available.none.fl_str_mv |
2025-03-20T22:18:05Z |
dc.type.none.fl_str_mv |
bachelorThesis |
dc.type.degree.none.fl_str_mv |
Pasantí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/94016 |
url |
http://hdl.handle.net/11349/94016 |
dc.language.iso.none.fl_str_mv |
spa |
language |
spa |
dc.relation.references.none.fl_str_mv |
Fielding, R. T. (2000). Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine. Pantos, R., & May, W. (2021). HTTP Live Streaming (HLS). Internet-Draft (draft-pantos-hls-rfc8216bis-07). Kim, G., Humble, J., & Debois, P. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations. O'Reilly Media. Humble, J., & Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley |
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 |
dc.publisher.none.fl_str_mv |
Universidad Distrital Francisco José de Caldas |
publisher.none.fl_str_mv |
Universidad Distrital Francisco José de Caldas |
institution |
Universidad Distrital Francisco José de Caldas |
bitstream.url.fl_str_mv |
https://repository.udistrital.edu.co/bitstreams/d915c8d2-fd78-42b8-aa98-ba58ab3a5dae/download https://repository.udistrital.edu.co/bitstreams/17f3f931-7d51-4cb2-842f-e4c74c716244/download https://repository.udistrital.edu.co/bitstreams/223e44ed-8470-4f7b-abf9-982907ae13e6/download https://repository.udistrital.edu.co/bitstreams/600396af-a314-4dd8-8af7-526834a555f5/download https://repository.udistrital.edu.co/bitstreams/9a49fb9b-8771-4109-b2d0-8f9f43d4fa49/download |
bitstream.checksum.fl_str_mv |
639be9ab9574cf9853d403268ab0f2f3 e300900a95e7243e379c92517c1be43f 997daf6c648c962d566d7b082dac908d 4435388b146f302965fba94854ac3eb9 29ecc110cad9f202e7c3062f62bc3198 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Universidad Distrital |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1828164738204303360 |
spelling |
Ferro Escobar, RobertoMartínez Alayón, Carlos AndrésHerrera Velásquez, SantiagoSaldarriaga Pardo, David StevenFerro Escobar, Roberto [0000-0002-8978-538X]Martínez Alayón, Carlos Andrés [0000-0003-0818-7095]2025-03-20T22:18:05Z2025-03-20T22:18:05Z2024-11-07http://hdl.handle.net/11349/94016Este informe documenta la fase 2 del diseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada (RITA). El proyecto se centró en mejorar la plataforma existente mediante la creación de un backend escalable usando NestJS, TypeORM y PostgreSQL, acompañado de un frontend actualizado basado en Angular. Entre los logros más destacados están la integración de un servicio de autenticación con cuentas institucionales de Microsoft, la migración de datos a una nueva base de datos optimizada, y la automatización del despliegue a través de Docker y Bitbucket Pipelines. También se implementó un sistema para la subida automatizada de videos a YouTube, resolviendo problemas de almacenamiento local. La pasantía utilizó principios de desarrollo ágil (SCRUM), asegurando entregas incrementales con pruebas automatizadas y manuales para garantizar calidad. Este trabajo consolida una plataforma eficiente, segura y alineada con las necesidades de RITA, permitiendo la gestión óptima de su contenido audiovisual.This report outlines Phase 2 of the design and implementation of the video platform for the Advanced Technology Research Network (RITA). The project aimed to enhance the existing platform by developing a scalable backend using NestJS, TypeORM, and PostgreSQL, alongside an updated Angular-based frontend. Key achievements include integrating an authentication service using institutional Microsoft accounts, migrating data to a new optimized database, and automating deployment with Docker and Bitbucket Pipelines. Additionally, an automated system for uploading videos to YouTube was implemented, addressing local storage limitations. The internship followed agile development principles (SCRUM), ensuring incremental deliveries with automated and manual testing to ensure quality. This work establishes an efficient, secure platform aligned with RITA's needs, enabling optimal management of its audiovisual content.pdfspaUniversidad Distrital Francisco José de CaldasPlataforma de videosIPTVRITARed de Investigaciones de Tecnología AvanzadaDevOpsDockerizaciónIngeniería de Sistemas -- Tesis y disertaciones académicasVideo PlatformIPTVRITADockeritationDevOpsDiseño e implementación de la plataforma de videos de la Red de Investigaciones de Tecnología Avanzada - RITA - Fase 2 (API REST, Autenticación e Implementación DevOps)Design and implementation of the video platform for "la Red de Investigaciones de Tecnología Avanzada - RITA" - Phase 2 (REST API, Authentication, and DevOps implementation)bachelorThesisPasantíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Fielding, R. T. (2000). Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine.Pantos, R., & May, W. (2021). HTTP Live Streaming (HLS). Internet-Draft (draft-pantos-hls-rfc8216bis-07).Kim, G., Humble, J., & Debois, P. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations. O'Reilly Media.Humble, J., & Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-WesleyORIGINALHerreraVelasquezSantiago2024.pdfHerreraVelasquezSantiago2024.pdfapplication/pdf2362652https://repository.udistrital.edu.co/bitstreams/d915c8d2-fd78-42b8-aa98-ba58ab3a5dae/download639be9ab9574cf9853d403268ab0f2f3MD52Licencia de uso y publicacion editable.pdfLicencia de uso y publicacion editable.pdfapplication/pdf437558https://repository.udistrital.edu.co/bitstreams/17f3f931-7d51-4cb2-842f-e4c74c716244/downloade300900a95e7243e379c92517c1be43fMD53LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/223e44ed-8470-4f7b-abf9-982907ae13e6/download997daf6c648c962d566d7b082dac908dMD51THUMBNAILHerreraVelasquezSantiago2024.pdf.jpgHerreraVelasquezSantiago2024.pdf.jpgIM Thumbnailimage/jpeg6291https://repository.udistrital.edu.co/bitstreams/600396af-a314-4dd8-8af7-526834a555f5/download4435388b146f302965fba94854ac3eb9MD54Licencia de uso y publicacion editable.pdf.jpgLicencia de uso y publicacion editable.pdf.jpgIM Thumbnailimage/jpeg9688https://repository.udistrital.edu.co/bitstreams/9a49fb9b-8771-4109-b2d0-8f9f43d4fa49/download29ecc110cad9f202e7c3062f62bc3198MD5511349/94016oai:repository.udistrital.edu.co:11349/940162025-03-21 01:00:48.083open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |