Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto
Incluye figuras y tablas.
- Autores:
-
Porras García, Yerson Ferney
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2017
- Institución:
- Universidad de los Llanos
- Repositorio:
- Repositorio Digital Universidad de los LLanos
- Idioma:
- spa
- OAI Identifier:
- oai:repositorio.unillanos.edu.co:001/4531
- Acceso en línea:
- https://repositorio.unillanos.edu.co/handle/001/4531
https://repositorio.unillanos.edu.co
- Palabra clave:
- Procesamiento distribuido
Apache spark
Bolsa de palabras
Clúster
Balance costo-beneficio
Búsqueda de Información
Distributed processing
Apache spark
Bag of words
Cluster
Trade-off
Information retrieval
- Rights
- openAccess
- License
- Derechos reservados-Universidad de los Llanos, 2017
| id |
Unillanos2_858d72c4ba4a7f20e3d2233c483f502e |
|---|---|
| oai_identifier_str |
oai:repositorio.unillanos.edu.co:001/4531 |
| network_acronym_str |
Unillanos2 |
| network_name_str |
Repositorio Digital Universidad de los LLanos |
| repository_id_str |
|
| dc.title.spa.fl_str_mv |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| title |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| spellingShingle |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto Procesamiento distribuido Apache spark Bolsa de palabras Clúster Balance costo-beneficio Búsqueda de Información Distributed processing Apache spark Bag of words Cluster Trade-off Information retrieval |
| title_short |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| title_full |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| title_fullStr |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| title_full_unstemmed |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| title_sort |
Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto |
| dc.creator.fl_str_mv |
Porras García, Yerson Ferney |
| dc.contributor.advisor.none.fl_str_mv |
Calderon Moreno, Roger Cruz Roa, Angel Alfonso |
| dc.contributor.author.none.fl_str_mv |
Porras García, Yerson Ferney |
| dc.subject.proposal.spa.fl_str_mv |
Procesamiento distribuido Apache spark Bolsa de palabras Clúster Balance costo-beneficio Búsqueda de Información |
| topic |
Procesamiento distribuido Apache spark Bolsa de palabras Clúster Balance costo-beneficio Búsqueda de Información Distributed processing Apache spark Bag of words Cluster Trade-off Information retrieval |
| dc.subject.proposal.eng.fl_str_mv |
Distributed processing Apache spark Bag of words Cluster Trade-off Information retrieval |
| description |
Incluye figuras y tablas. |
| publishDate |
2017 |
| dc.date.issued.none.fl_str_mv |
2017 |
| dc.date.accessioned.none.fl_str_mv |
2024-10-22T16:42:47Z |
| dc.date.available.none.fl_str_mv |
2024-10-22T16:42:47Z |
| 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/publishedVersion |
| 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.coarversion.none.fl_str_mv |
http://purl.org/coar/version/c_970fb48d4fbd8a85 |
| dc.type.category.none.fl_str_mv |
Proyectos de investigación |
| format |
http://purl.org/coar/resource_type/c_7a1f |
| status_str |
publishedVersion |
| dc.identifier.citation.none.fl_str_mv |
Porras García, Yerson F. (2017).Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto [Trabajo de grado, Universidad de los Llanos]. Repositorio digital Universidad de los Llanos. |
| dc.identifier.uri.none.fl_str_mv |
https://repositorio.unillanos.edu.co/handle/001/4531 |
| dc.identifier.instname.none.fl_str_mv |
Universidad de los Llanos |
| dc.identifier.reponame.none.fl_str_mv |
Repositorio digital Universidad de los Llanos |
| dc.identifier.repourl.none.fl_str_mv |
https://repositorio.unillanos.edu.co |
| identifier_str_mv |
Porras García, Yerson F. (2017).Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto [Trabajo de grado, Universidad de los Llanos]. Repositorio digital Universidad de los Llanos. Universidad de los Llanos Repositorio digital Universidad de los Llanos |
| url |
https://repositorio.unillanos.edu.co/handle/001/4531 https://repositorio.unillanos.edu.co |
| dc.language.iso.none.fl_str_mv |
spa |
| language |
spa |
| dc.relation.references.none.fl_str_mv |
K. Shvachko, “HDFS Scalability: The limits to growth,” Login, pp. 6–16, 2010 D. Borthakur, “HDFS architecture guide,” Hadoop Apache Proj., vol. 53, pp. 1–13, 2008. F. J. Salinas Dezerega, “EVALUACIÓN DE ALGORITMOS DE AGRUPAMIENTO UTILIZANDO APACHE SPARK,” 2016. C. Gómez Martinez, “Procesamiento de grandes volúmenes de datos en entornos Cloud Computing utilizando Hadoop MapReduce,” Universidad de Almería, 2013. M. Weihua, Z. Hong, L. Qianmu, and X. Bin, “Analysis of information management and scheduling technology in Hadoop,” vol. 12, no. 2, pp. 133–138, 2014. M. A. Murazzo, N. R. Rodriguez, M. Guevara, and F. G. Tinetti, “Identificación de Algoritmos de Cómputo Intensivo para Big Data y su Implementación en Clouds,” 2016. R. Leira, P. Roquero, C. Vega, I. González, and J. Aracil, “HPSEngine: Motor de alto rendimiento y baja latencia para el procesamiento distribuido en tiempo real,” research.cvega.es. D. Ramírez Sánchez, “Data Mining sobre logs procesados con Hadoop,” BARCELONATECH, 2014. S. García, S. Ramírez-Gallego, J. Luengo, and F. Herrera, “Big Data : Preprocesamiento,” novática, pp. 17–23, 2016. S. J. Valbuena and J. M. Londoño, “SISTEMAS PARA ALMACENAR GRANDES VOLÚMENES DE DATOS,” Rev. GTI, vol. 13, no. 37, 2015. A. Hernández Dominguez and A. Hernández Yeja, “Acerca de la aplicación de MapReduce + Hadoop en el tratamiento de Big Data,” Rev. Cuba. Ciencias Informáticas, vol. 9, no. 3, pp. 49–62, 2015. S. Moon, J. Lee, X. Sun, and Y. suk Kee, “Optimizing the Hadoop MapReduce Framework with high-performance storage devices,” J. Supercomput., vol. 71, no. 9, pp. 3525–3548, Sep. 2015 A. F. Rojas Hernandez and N. Y. Gelvez Garcia, “Distributed processing using cosine similarity for mapping Big Data in Hadoop,” IEEE Lat. Am. Trans., vol. 14, no. 6, pp. 2857–2861, 2016. E. Ruiz García, “ESTUDIO Y EVALUACIÓN DE SISTEMAS ‘BIG DATA’ DE TRATAMIENTO DE INFORMACIÓN,” Universidad Politécnica de Madrid, 2016. E. F. Silva Balocchi, “Análisis y comparación entre el motor de bases de datos orientado a columnas Infobright y el framework de aplicaciones distribuidas Hadoop en escenarios de uso de bases de datos analíticas.” Universidad de Chile, 2014. M. Alcívar, E. Espinoza, and V. Cedeño, “Análisis de la información de una Base de Datos Transaccional usando Hive sobre Hadoop,” 2011. L. F. Tabares and J. F. Hernández, “Big Data Analytics : Oportunidades , Retos y Tendencias,” Univ. San Buenaventura, p. 20, 2014. R. Ramos Pollán, A. Cruz Roa, and F. A. González, “A Framework for High Performance Image Analysis Pipelines over Cloud Resources,” in 7th Colombian Computing Congress, CCC 2012 - Conference Proceedings, 2012. M. Trigila and R. Di Pasquale, “ENSEÑANDO COMPUTACIÓN PARALELA CON CLUSTERES DE BAJO COSTO - TEACHING PARALLEL COMPUTING WITH LOWCOST CLUSTER,” XIV Int. Conf. Eng. Technol. Educ., 2016. A. N. Cadavid, J. D. Fernández Martínez, and J. Morales Vélez, “Revisión de metodologías ágiles para el desarrolldo de software A review of agile methoologies for software development,” Univ. Icesi, vol. 11 No. 2, pp. 30–39, 2013. A. Firdaus, I. Ghani, and N. I. M. Yasin, “Developing Secure Websites Using Feature Driven Development (FDD): A Case Study,” J. Clean Energy Technol., vol. 1, no. 4, pp. 322–326, 2013. A. Molpeceres, “Procesos de desarrollo: RUP, XP y FDD,” javaHispano org, 2003. F. Alvarez Goikoetxea, “Estudio de un entorno de computación distribuida con Hadoop,” 2016 T. Lee, H. Lee, K. H. Rhee, and S. U. Shin, “The efficient implementation of distributed indexing with hadoop for digital investigations on big data,” Comput. Sci. Inf. Syst., vol. 11, no. 3, pp. 1037–1054, 2014. A. Plasencia Salgueiro and B. de los M. Ballagas Flores, “Análisis comparativo de herramientas de recuperación y análisis de información de acceso libre desde una concepción docente,” Transinformação, vol. 26, no. 3, pp. 315–326, Dec. 2014. V. I. Rosa Urrutia and J. G. Rivera Pleitez, “Big Data , análisis de datos en la nube,” Entorno, pp. 17–24, 2016. J. J. Camargo Vega, J. F. Camargo Ortega, and L. Joyanes Aguilar, “Conociendo Big Data,” Rev. Fac. Ing. (Fac. Ing.), Enero-Abril, vol. 24, no. 38, pp. 63–77, 2015. M. Niño and A. Illarramendi, “ENTENDIENDO EL BIG DATA: ANTECEDENTES, ORIGEN Y DESARROLLO POSTERIOR,” DYNA NEW Technol., vol. 2, no. 3, pp. 1–8, 2015. D. Laney, “3D Data Management: Controlling Data Volumen, Velocity, and Variety,” Appl. Deliv. Strateg., vol. 949, no. February 2001, p. 4, 2001. A. Ghaffar Shoro and T. Rahim Soomro, “Big Data Analysis: Ap Spark Perspective,” Glob. J. Comput. Sci. Technol., vol. 15, no. 1, pp. 7–14, 2015. A. Martín, S. Chavez, N. Rodriguez, A. Valenzuela, and M. Murazzo, “Bases de datos NoSql en cloud computing,” XV Work. Investig. EN CIENCIAS LA Comput., pp. 166–170, 2013. M. N. Vora, “Hadoop-HBase for large-scale data,” Proc. 2011 Int. Conf. Comput. Sci. Netw. Technol. ICCSNT 2011, vol. 1, pp. 601–605, 2011. C. M. Pérez Ibarra, S. A. Mendez, and N. M. Pérez Otero, “Restauración de imágenes y metaheurísticas en Hadoop,” 2015. O. O’Malley, “Terabyte sort on apache hadoop,” Yahoo, pp. 1–3, 2008 J. Maillo, I. Triguero, and F. Herrera, “Un enfoque MapReduce del algoritmo k-vecinos más cercanos para Big Data,” ACM, 2003. E. Izaguirre Equiza, “Trabajo Fin de Grado: Sistemas de recomendación en Apache Spark,” 2015. J. M. García Sánchez, “Sparkanalyzer: Instrumentación de Apache Spark,” 2016. A. Romero Rodríguez, “Extracción de Información Semántica a Partir de Categorías de Texto Estado del Arte.” L. A. López Rodríguez, J. M. Quinteiro González, and P. Hernández Morera, “Clasificador basado en Análisis de Sentimiento.” T. Deselaers, L. Pimenidis, and H. Ney, “Bag-of-visual-words models for adult image classification and filtering,” 2008 19th Int. Conf. Pattern Recognit., pp. 1–4, 2008. Y. Zhang, R. Jin, and Z. H. Zhou, “Understanding bag-of-words model: A statistical framework,” Int. J. Mach. Learn. Cybern., vol. 1, no. 1–4, pp. 43–52, 2010. L. Wu, S. C. H. Hoi, and N. Yu, “Semantics-preserving bag-of-words models and applications,” IEEE Trans. Image Process., vol. 19, no. 7, pp. 1908–1920, 2010. C. A. Cobos Lozada, E. E. Mendoza, M. E. Mendoza Becerra, L. C. Gómez Flórez, and E. L. Guzmán, “Algoritmos de expansión de consulta basados en una nueva función discreta de relevancia. (Spanish),” UIS Ing., vol. 10, no. 1, pp. 7–20, 2011. S. Jaramillo Valbuena and J. M. Londoño, BÚSQUEDA DE DOCUMENTOS BASADA EN EL USO DE ÍNDICES ONTOLÓGICOS CREADOS CON MAPREDUCE, vol. 24, no. 1. Bogotá: Universidad Militar, Nueva Granada, 2014. S. Vázquez-Reyes, M. de León-Sigg, P. Velasco-Elizondo, J. Villa-Cisneros, and S. Briceño-Muro, “Recuperación de información a través del índice invertido en Be Intelligent,” RISTI - Rev. Iber. Sist. e Tecnol. Inf., no. 21, pp. 85–98, 2017. S. D. Amaro Calderón and J. C. Valverde Rebaza, “Metodologías Ágiles,” Esc. Informatica., pp. 1–37, 2007. K. Mendes Calo, E. C. Estevez, and P. R. Fillottrani, “Evaluación de metodologías ágiles para desarrollo de software,” XII Workshop de Investigadores en Ciencias de la Computación. 2010. D. D. Lewis, “Reuters-21578 text categorization test collection.” AT&T Labs - Research, 2004. A. L. Maas, R. E. Daly, P. T. Pham, D. Huang, A. Y. Ng, and C. Potts, “Learning Word Vectors for Sentiment Analysis,” Proc. 49th Annu. Meet. Assoc. Comput. Linguist. Hum. Lang. Technol., pp. 142–150, 2011. K. Lang, “NewsWeeder: Learning to Filter Netnews,” Proc. 12th Int. Mach. Learn. Conf., pp. 331–339, 1995. F. Galgani and A. Hoffmann, “LEXA: Towards Automatic Legal Citation Classification,” in AI 2010: Advances in Artificial Intelligence, 2010, vol. 6464, pp. 445–454. F. Galgani, P. Compton, and A. Hoffmann, “Towards automatic generation of catchphrases for legal case reports,” in the 13th International Conference on Intelligent Text Processing and Computational Linguistics, 2012, vol. 7182, pp. 415–426. F. Galgani, P. Compton, and A. Hoffmann, “Knowledge Acquisition for Categorization of Legal Case Reports,” in PKAW 2012, 2012, vol. LNAI 7457, pp. 118–132. F. Galgani, P. Compton, and A. Hoffmann, “Citation Based Summarisation of Legal Texts,” in PRICAI 2012, 2012, vol. LNCS 7458, pp. 40–52. B. Pang, L. Lee, and S. Vaithyanathan, “Thumbs up? Sentiment Classification using Machine Learning Techniques,” in Proceedings of the 2002 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2002. |
| dc.rights.spa.fl_str_mv |
Derechos reservados-Universidad de los Llanos, 2017 |
| dc.rights.uri.none.fl_str_mv |
https://creativecommons.org/licenses/by-nc-nd/4.0/ |
| dc.rights.license.none.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 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 |
Derechos reservados-Universidad de los Llanos, 2017 https://creativecommons.org/licenses/by-nc-nd/4.0/ Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) http://purl.org/coar/access_right/c_abf2 |
| eu_rights_str_mv |
openAccess |
| dc.format.extent.none.fl_str_mv |
62 páginas |
| dc.format.mimetype.none.fl_str_mv |
application/pdf |
| dc.publisher.none.fl_str_mv |
Universidad de los Llanos |
| dc.publisher.faculty.none.fl_str_mv |
Facultad de Ciencias Básicas e Ingeniería |
| dc.publisher.place.none.fl_str_mv |
Villavicencio |
| dc.publisher.program.none.fl_str_mv |
Ingeniería de Sistemas |
| dc.publisher.branch.none.fl_str_mv |
Sede Barcelona |
| publisher.none.fl_str_mv |
Universidad de los Llanos |
| institution |
Universidad de los Llanos |
| bitstream.url.fl_str_mv |
https://repositorio.unillanos.edu.co/bitstreams/7bea1f77-012a-41d6-876d-55305a1c7f99/download https://repositorio.unillanos.edu.co/bitstreams/6167c699-2bf5-4017-ad1b-66f34e7b7b59/download https://repositorio.unillanos.edu.co/bitstreams/59abc449-ce6d-4d3f-90fb-abc139bc10ff/download https://repositorio.unillanos.edu.co/bitstreams/d90d1385-0666-4385-9c01-3c7757f3b65a/download https://repositorio.unillanos.edu.co/bitstreams/ede8e7e3-b485-4809-9b6d-2a6aaee2f5b0/download https://repositorio.unillanos.edu.co/bitstreams/6aa6ed1d-d2f8-4f91-8d1e-ef2f9d4b7cb0/download https://repositorio.unillanos.edu.co/bitstreams/077d22e0-37d5-4dd7-82b1-0653826696de/download |
| bitstream.checksum.fl_str_mv |
b61a90cb976a7166b7ebf210b9309e0a 7339aaaedb6e20439f3fee52eb30cc50 73a5432e0b76442b22b026844140d683 e4849713a93fdc466bc0ee15f151a158 48bb9d925a2534e37ca688c07fc77fe2 14c8ea12a385c8614367ee99bb539cb5 9cb15da7b52f4a20e0bbeb487e34200d |
| bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
| repository.name.fl_str_mv |
Repositorio Universidad de Los Llanos |
| repository.mail.fl_str_mv |
repositorio@unillanos.edu.co |
| _version_ |
1851059091599785984 |
| spelling |
Calderon Moreno, RogerCruz Roa, Angel Alfonsovirtual::233-1Porras García, Yerson Ferney2024-10-22T16:42:47Z2024-10-22T16:42:47Z2017Porras García, Yerson F. (2017).Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de texto [Trabajo de grado, Universidad de los Llanos]. Repositorio digital Universidad de los Llanos.https://repositorio.unillanos.edu.co/handle/001/4531Universidad de los LlanosRepositorio digital Universidad de los Llanoshttps://repositorio.unillanos.edu.coIncluye figuras y tablas.La computación distribuida para el procesamiento en paralelo sobre un clúster de computadores ofrece un rendimiento computacional mayor con tiempos de respuesta mucho menores que si se realizara el mismo procesamiento en una sola máquina. Si se toma en cuenta que cada computador por sí solo implica una serie de recursos y costos para su funcionamiento (económicos, humanos, etc.), y además se considera que cuanto más computadores se incluyan al clúster representará un aumento en tiempos de transmisión de información entre ellos, no es difícil inferir que habrá un punto en el cual se deberá hacer un balance entre las ventajas que ofrecen la inclusión de más computadores (en términos de capacidad de cómputo) y el costo que representan (en energía, dinero y transferencia de datos). Por lo tanto, el presente trabajo tuvo como objetivo realizar un análisis comparativo de la implementación de una plataforma de procesamiento distribuido de una colección de documentos de texto para la construcción de un sistema para la búsqueda de información y relevancia de resultados, usando representaciones como Bag of Words (BoW) y producto punto por medio de algoritmos de procesamiento distribuido, los cuales permitieron identificar la relación entre mejora de la capacidad de cómputo cuando se incrementa el número de computadores en el clúster como apoyo a la toma de decisiones en unidades de computación de alto desempeño para el análisis masivo de datos.The distributed computing for parallel processing on a computer cluster offers greater computational performance with less response times in comparison to the secuencial processing. If it is taken into account that each computer alone by itself implies a series of resources and costs for its operation (economic, human, etc.), and it is also considered that the more computers are included to the cluster, it will represent an increase in information transmission times among them, it is not hard to infer that there will be a point at which a balance should be made between the advantages offered by the inclusion of more computers (in terms of computing capacity) and the cost that they represent (energy, money and data transfer). Therefore, the present work aimed to perform a comparative analysis of the implementation of a distributed processing platform of a collection of text documents for the construction of a system to search for information and result relevance, using representations like Bag of Words (BoW) and dot product by means of distributed processing algorithms, which allowed to identify the relation between improvement of the computing capacity when the number of computers in the cluster is increased as support to the decision making in high performance computing units for the massive analysis of data.1 Resumen. -- 2 Abstract. -- 3 Introducción. -- 4 Objetivos. -- 4.1 Objetivo general (og). -- 4.2 Objetivos específicos (oe). -- 5 Marco de referencia. -- 5.1 Big Data. -- 5.2 Almacenamiento de datos. -- 5.2.1 Bases de datos no sql. -- 5.3 Procesamiento distribuido. -- 5.4 Apache hadoop5.4.1 Apache hbase. -- 5.4.2 Apache hadoop distributed file system – hdfs. -- 5.4.3 Algoritmo mapreduce. -- 5.5 Apache spark. -- 5.6 Procesamiento de documentos de texto. -- 5.6.1 Bolsa de palabras - bag of words (bow). -- 5.6.2 Búsqueda de documentos por relevancia. -- 5.7 Feature driven development – fdd. -- 5.8 Desempeño computacional. -- 5.8.1 Speed up. -- 5.8.2 Ley de amdahl. -- 6 Desarrollo de la metodología. -- 6.1 Metodología de investigación. -- 6.2 Metodología de desarrollo de software. -- 6.2.1 Modelo general del proyecto. -- 7 Aplicación búsqueda de documentos por relevancia. -- 7.1 Módulos de la bolsa de palabras. -- 7.1.1 Etapa 1: creación de bag of words. -- 7.1.2 Etapa 2: procesamiento y comparación de documentos. -- 7.1.3 Etapa 3: búsqueda y relevancia de documentos. -- 7.2 Implementación bow en apache spark. -- 7.2.1 Core (scriptcore.py). -- 7.2.2 Corpus (scriptcorpus.py). -- 7.2.3 Bowgral (scriptbowgral.py) 7.2.4 Diccionariogral (scriptdiccionariogral.py). -- 7.2.5 BoWIndividual (scriptBoWIndividual.py). -- 7.2.6 Histogramas (scripthistogramas.py). -- 7.2.7 Iddoc (scriptiddoc.py). -- 7.2.8 Idword (scriptidword.py). -- 7.2.9 Sparsematrix (scriptsparsematrix.py). -- 7.2.10 Tfidfmatrix (scripttfidfmatrix.py). -- 7.2.11 Producto punto (scriptproductopunto.py). -- 8 Resultados. -- 8.1 Conjunto de datos. -- 8.2 Diseño experimental. -- 8.3 Resultados preliminares. -- 8.4 Resultados finales. -- 8.5 Análisis de resultados. -- 8.5.1 Desviación estándar. -- 8.5.2 Speedup descendente. -- 8.5.3 Speedup ascendente. -- 9 Conclusiones. -- 10 Recomendaciones. -- 11 Anexos y repositorios. -- 11.1 Plataforma proyecto:. -- 11.2 Plataforma apache spark:. -- 11.3 Plataforma apache hadoop:. -- 12 Referencias bibliográficasTrabajo de grado presentado como requisito parcial para optar al título de Ingeniero de sistemas.PregradoIngeniero(a) de Sistemas62 páginasapplication/pdfspaUniversidad de los LlanosFacultad de Ciencias Básicas e IngenieríaVillavicencioIngeniería de SistemasSede BarcelonaDerechos reservados-Universidad de los Llanos, 2017https://creativecommons.org/licenses/by-nc-nd/4.0/Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Análisis comparativo del desempeño y costo computacional de una infraestructura de almacenamiento y procesamiento distribuido para el procesamiento de colecciones de textoTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/coar/version/c_970fb48d4fbd8a85Proyectos de investigaciónK. Shvachko, “HDFS Scalability: The limits to growth,” Login, pp. 6–16, 2010D. Borthakur, “HDFS architecture guide,” Hadoop Apache Proj., vol. 53, pp. 1–13, 2008.F. J. Salinas Dezerega, “EVALUACIÓN DE ALGORITMOS DE AGRUPAMIENTO UTILIZANDO APACHE SPARK,” 2016.C. Gómez Martinez, “Procesamiento de grandes volúmenes de datos en entornos Cloud Computing utilizando Hadoop MapReduce,” Universidad de Almería, 2013.M. Weihua, Z. Hong, L. Qianmu, and X. Bin, “Analysis of information management and scheduling technology in Hadoop,” vol. 12, no. 2, pp. 133–138, 2014.M. A. Murazzo, N. R. Rodriguez, M. Guevara, and F. G. Tinetti, “Identificación de Algoritmos de Cómputo Intensivo para Big Data y su Implementación en Clouds,” 2016.R. Leira, P. Roquero, C. Vega, I. González, and J. Aracil, “HPSEngine: Motor de alto rendimiento y baja latencia para el procesamiento distribuido en tiempo real,” research.cvega.es.D. Ramírez Sánchez, “Data Mining sobre logs procesados con Hadoop,” BARCELONATECH, 2014.S. García, S. Ramírez-Gallego, J. Luengo, and F. Herrera, “Big Data : Preprocesamiento,” novática, pp. 17–23, 2016.S. J. Valbuena and J. M. Londoño, “SISTEMAS PARA ALMACENAR GRANDES VOLÚMENES DE DATOS,” Rev. GTI, vol. 13, no. 37, 2015.A. Hernández Dominguez and A. Hernández Yeja, “Acerca de la aplicación de MapReduce + Hadoop en el tratamiento de Big Data,” Rev. Cuba. Ciencias Informáticas, vol. 9, no. 3, pp. 49–62, 2015.S. Moon, J. Lee, X. Sun, and Y. suk Kee, “Optimizing the Hadoop MapReduce Framework with high-performance storage devices,” J. Supercomput., vol. 71, no. 9, pp. 3525–3548, Sep. 2015A. F. Rojas Hernandez and N. Y. Gelvez Garcia, “Distributed processing using cosine similarity for mapping Big Data in Hadoop,” IEEE Lat. Am. Trans., vol. 14, no. 6, pp. 2857–2861, 2016.E. Ruiz García, “ESTUDIO Y EVALUACIÓN DE SISTEMAS ‘BIG DATA’ DE TRATAMIENTO DE INFORMACIÓN,” Universidad Politécnica de Madrid, 2016.E. F. Silva Balocchi, “Análisis y comparación entre el motor de bases de datos orientado a columnas Infobright y el framework de aplicaciones distribuidas Hadoop en escenarios de uso de bases de datos analíticas.” Universidad de Chile, 2014.M. Alcívar, E. Espinoza, and V. Cedeño, “Análisis de la información de una Base de Datos Transaccional usando Hive sobre Hadoop,” 2011.L. F. Tabares and J. F. Hernández, “Big Data Analytics : Oportunidades , Retos y Tendencias,” Univ. San Buenaventura, p. 20, 2014.R. Ramos Pollán, A. Cruz Roa, and F. A. González, “A Framework for High Performance Image Analysis Pipelines over Cloud Resources,” in 7th Colombian Computing Congress, CCC 2012 - Conference Proceedings, 2012.M. Trigila and R. Di Pasquale, “ENSEÑANDO COMPUTACIÓN PARALELA CON CLUSTERES DE BAJO COSTO - TEACHING PARALLEL COMPUTING WITH LOWCOST CLUSTER,” XIV Int. Conf. Eng. Technol. Educ., 2016.A. N. Cadavid, J. D. Fernández Martínez, and J. Morales Vélez, “Revisión de metodologías ágiles para el desarrolldo de software A review of agile methoologies for software development,” Univ. Icesi, vol. 11 No. 2, pp. 30–39, 2013.A. Firdaus, I. Ghani, and N. I. M. Yasin, “Developing Secure Websites Using Feature Driven Development (FDD): A Case Study,” J. Clean Energy Technol., vol. 1, no. 4, pp. 322–326, 2013.A. Molpeceres, “Procesos de desarrollo: RUP, XP y FDD,” javaHispano org, 2003.F. Alvarez Goikoetxea, “Estudio de un entorno de computación distribuida con Hadoop,” 2016T. Lee, H. Lee, K. H. Rhee, and S. U. Shin, “The efficient implementation of distributed indexing with hadoop for digital investigations on big data,” Comput. Sci. Inf. Syst., vol. 11, no. 3, pp. 1037–1054, 2014.A. Plasencia Salgueiro and B. de los M. Ballagas Flores, “Análisis comparativo de herramientas de recuperación y análisis de información de acceso libre desde una concepción docente,” Transinformação, vol. 26, no. 3, pp. 315–326, Dec. 2014.V. I. Rosa Urrutia and J. G. Rivera Pleitez, “Big Data , análisis de datos en la nube,” Entorno, pp. 17–24, 2016.J. J. Camargo Vega, J. F. Camargo Ortega, and L. Joyanes Aguilar, “Conociendo Big Data,” Rev. Fac. Ing. (Fac. Ing.), Enero-Abril, vol. 24, no. 38, pp. 63–77, 2015.M. Niño and A. Illarramendi, “ENTENDIENDO EL BIG DATA: ANTECEDENTES, ORIGEN Y DESARROLLO POSTERIOR,” DYNA NEW Technol., vol. 2, no. 3, pp. 1–8, 2015.D. Laney, “3D Data Management: Controlling Data Volumen, Velocity, and Variety,” Appl. Deliv. Strateg., vol. 949, no. February 2001, p. 4, 2001.A. Ghaffar Shoro and T. Rahim Soomro, “Big Data Analysis: Ap Spark Perspective,” Glob. J. Comput. Sci. Technol., vol. 15, no. 1, pp. 7–14, 2015.A. Martín, S. Chavez, N. Rodriguez, A. Valenzuela, and M. Murazzo, “Bases de datos NoSql en cloud computing,” XV Work. Investig. EN CIENCIAS LA Comput., pp. 166–170, 2013.M. N. Vora, “Hadoop-HBase for large-scale data,” Proc. 2011 Int. Conf. Comput. Sci. Netw. Technol. ICCSNT 2011, vol. 1, pp. 601–605, 2011.C. M. Pérez Ibarra, S. A. Mendez, and N. M. Pérez Otero, “Restauración de imágenes y metaheurísticas en Hadoop,” 2015.O. O’Malley, “Terabyte sort on apache hadoop,” Yahoo, pp. 1–3, 2008J. Maillo, I. Triguero, and F. Herrera, “Un enfoque MapReduce del algoritmo k-vecinos más cercanos para Big Data,” ACM, 2003.E. Izaguirre Equiza, “Trabajo Fin de Grado: Sistemas de recomendación en Apache Spark,” 2015.J. M. García Sánchez, “Sparkanalyzer: Instrumentación de Apache Spark,” 2016.A. Romero Rodríguez, “Extracción de Información Semántica a Partir de Categorías de Texto Estado del Arte.”L. A. López Rodríguez, J. M. Quinteiro González, and P. Hernández Morera, “Clasificador basado en Análisis de Sentimiento.”T. Deselaers, L. Pimenidis, and H. Ney, “Bag-of-visual-words models for adult image classification and filtering,” 2008 19th Int. Conf. Pattern Recognit., pp. 1–4, 2008.Y. Zhang, R. Jin, and Z. H. Zhou, “Understanding bag-of-words model: A statistical framework,” Int. J. Mach. Learn. Cybern., vol. 1, no. 1–4, pp. 43–52, 2010.L. Wu, S. C. H. Hoi, and N. Yu, “Semantics-preserving bag-of-words models and applications,” IEEE Trans. Image Process., vol. 19, no. 7, pp. 1908–1920, 2010.C. A. Cobos Lozada, E. E. Mendoza, M. E. Mendoza Becerra, L. C. Gómez Flórez, and E. L. Guzmán, “Algoritmos de expansión de consulta basados en una nueva función discreta de relevancia. (Spanish),” UIS Ing., vol. 10, no. 1, pp. 7–20, 2011.S. Jaramillo Valbuena and J. M. Londoño, BÚSQUEDA DE DOCUMENTOS BASADA EN EL USO DE ÍNDICES ONTOLÓGICOS CREADOS CON MAPREDUCE, vol. 24, no. 1. Bogotá: Universidad Militar, Nueva Granada, 2014.S. Vázquez-Reyes, M. de León-Sigg, P. Velasco-Elizondo, J. Villa-Cisneros, and S. Briceño-Muro, “Recuperación de información a través del índice invertido en Be Intelligent,” RISTI - Rev. Iber. Sist. e Tecnol. Inf., no. 21, pp. 85–98, 2017.S. D. Amaro Calderón and J. C. Valverde Rebaza, “Metodologías Ágiles,” Esc. Informatica., pp. 1–37, 2007.K. Mendes Calo, E. C. Estevez, and P. R. Fillottrani, “Evaluación de metodologías ágiles para desarrollo de software,” XII Workshop de Investigadores en Ciencias de la Computación. 2010.D. D. Lewis, “Reuters-21578 text categorization test collection.” AT&T Labs - Research, 2004.A. L. Maas, R. E. Daly, P. T. Pham, D. Huang, A. Y. Ng, and C. Potts, “Learning Word Vectors for Sentiment Analysis,” Proc. 49th Annu. Meet. Assoc. Comput. Linguist. Hum. Lang. Technol., pp. 142–150, 2011.K. Lang, “NewsWeeder: Learning to Filter Netnews,” Proc. 12th Int. Mach. Learn. Conf., pp. 331–339, 1995.F. Galgani and A. Hoffmann, “LEXA: Towards Automatic Legal Citation Classification,” in AI 2010: Advances in Artificial Intelligence, 2010, vol. 6464, pp. 445–454.F. Galgani, P. Compton, and A. Hoffmann, “Towards automatic generation of catchphrases for legal case reports,” in the 13th International Conference on Intelligent Text Processing and Computational Linguistics, 2012, vol. 7182, pp. 415–426.F. Galgani, P. Compton, and A. Hoffmann, “Knowledge Acquisition for Categorization of Legal Case Reports,” in PKAW 2012, 2012, vol. LNAI 7457, pp. 118–132.F. Galgani, P. Compton, and A. Hoffmann, “Citation Based Summarisation of Legal Texts,” in PRICAI 2012, 2012, vol. LNCS 7458, pp. 40–52.B. Pang, L. Lee, and S. Vaithyanathan, “Thumbs up? Sentiment Classification using Machine Learning Techniques,” in Proceedings of the 2002 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2002.Procesamiento distribuidoApache sparkBolsa de palabrasClústerBalance costo-beneficioBúsqueda de InformaciónDistributed processingApache sparkBag of wordsClusterTrade-offInformation retrievalPublication0000-0003-3389-8913virtual::233-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000629650virtual::233-1d0bc1d74-eceb-4ddd-9df7-0d4ad521b2d3virtual::233-1d0bc1d74-eceb-4ddd-9df7-0d4ad521b2d3virtual::233-1ORIGINALTrabajo de gradoTrabajo de gradoapplication/pdf2477528https://repositorio.unillanos.edu.co/bitstreams/7bea1f77-012a-41d6-876d-55305a1c7f99/downloadb61a90cb976a7166b7ebf210b9309e0aMD51Carta de autorizaciónCarta de autorizaciónapplication/pdf1885451https://repositorio.unillanos.edu.co/bitstreams/6167c699-2bf5-4017-ad1b-66f34e7b7b59/download7339aaaedb6e20439f3fee52eb30cc50MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-815543https://repositorio.unillanos.edu.co/bitstreams/59abc449-ce6d-4d3f-90fb-abc139bc10ff/download73a5432e0b76442b22b026844140d683MD53TEXTTrabajo de grado.txtTrabajo de grado.txtExtracted texttext/plain89157https://repositorio.unillanos.edu.co/bitstreams/d90d1385-0666-4385-9c01-3c7757f3b65a/downloade4849713a93fdc466bc0ee15f151a158MD54Carta de autorización.txtCarta de autorización.txtExtracted texttext/plain42https://repositorio.unillanos.edu.co/bitstreams/ede8e7e3-b485-4809-9b6d-2a6aaee2f5b0/download48bb9d925a2534e37ca688c07fc77fe2MD56THUMBNAILTrabajo de grado.jpgTrabajo de grado.jpgGenerated Thumbnailimage/jpeg7039https://repositorio.unillanos.edu.co/bitstreams/6aa6ed1d-d2f8-4f91-8d1e-ef2f9d4b7cb0/download14c8ea12a385c8614367ee99bb539cb5MD55Carta de autorización.jpgCarta de autorización.jpgGenerated Thumbnailimage/jpeg14413https://repositorio.unillanos.edu.co/bitstreams/077d22e0-37d5-4dd7-82b1-0653826696de/download9cb15da7b52f4a20e0bbeb487e34200dMD57001/4531oai:repositorio.unillanos.edu.co:001/45312024-10-23 04:02:19.745https://creativecommons.org/licenses/by-nc-nd/4.0/Derechos reservados-Universidad de los Llanos, 2017open.accesshttps://repositorio.unillanos.edu.coRepositorio Universidad de Los Llanosrepositorio@unillanos.edu.coPHA+TEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuPC9wPgo8cD5NRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuPC9wPgo8b2wgdHlwZT0iMSI+CiAgPGxpPgogICAgRGVmaW5pY2lvbmVzCiAgICA8b2wgdHlwZT1hPgogICAgICA8bGk+T2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLjwvbGk+CiAgICAgIDxsaT5PYnJhIERlcml2YWRhIHNpZ25pZmljYSB1bmEgb2JyYSBiYXNhZGEgZW4gbGEgb2JyYSBvYmpldG8gZGUgZXN0YSBsaWNlbmNpYSBvIGVuIMOpc3RhIHkgb3RyYXMgb2JyYXMgcHJlZXhpc3RlbnRlcywgdGFsZXMgY29tbyB0cmFkdWNjaW9uZXMsIGFycmVnbG9zIG11c2ljYWxlcywgZHJhbWF0aXphY2lvbmVzLCDigJxmaWNjaW9uYWxpemFjaW9uZXPigJ0sIHZlcnNpb25lcyBwYXJhIGNpbmUsIOKAnGdyYWJhY2lvbmVzIGRlIHNvbmlkb+KAnSwgcmVwcm9kdWNjaW9uZXMgZGUgYXJ0ZSwgcmVzw7ptZW5lcywgY29uZGVuc2FjaW9uZXMsIG8gY3VhbHF1aWVyIG90cmEgZW4gbGEgcXVlIGxhIG9icmEgcHVlZGEgc2VyIHRyYW5zZm9ybWFkYSwgY2FtYmlhZGEgbyBhZGFwdGFkYSwgZXhjZXB0byBhcXVlbGxhcyBxdWUgY29uc3RpdHV5YW4gdW5hIG9icmEgY29sZWN0aXZhLCBsYXMgcXVlIG5vIHNlcsOhbiBjb25zaWRlcmFkYXMgdW5hIG9icmEgZGVyaXZhZGEgcGFyYSBlZmVjdG9zIGRlIGVzdGEgbGljZW5jaWEuIChQYXJhIGV2aXRhciBkdWRhcywgZW4gZWwgY2FzbyBkZSBxdWUgbGEgT2JyYSBzZWEgdW5hIGNvbXBvc2ljacOzbiBtdXNpY2FsIG8gdW5hIGdyYWJhY2nDs24gc29ub3JhLCBwYXJhIGxvcyBlZmVjdG9zIGRlIGVzdGEgTGljZW5jaWEgbGEgc2luY3Jvbml6YWNpw7NuIHRlbXBvcmFsIGRlIGxhIE9icmEgY29uIHVuYSBpbWFnZW4gZW4gbW92aW1pZW50byBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgcGFyYSBsb3MgZmluZXMgZGUgZXN0YSBsaWNlbmNpYSkuPC9saT4KICAgICAgPGxpPkxpY2VuY2lhbnRlLCBlcyBlbCBpbmRpdmlkdW8gbyBsYSBlbnRpZGFkIHRpdHVsYXIgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHF1ZSBvZnJlY2UgbGEgT2JyYSBlbiBjb25mb3JtaWRhZCBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuPC9saT4KICAgICAgPGxpPkF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuPC9saT4KICAgICAgPGxpPk9icmEsIGVzIGFxdWVsbGEgb2JyYSBzdXNjZXB0aWJsZSBkZSBwcm90ZWNjacOzbiBwb3IgZWwgcsOpZ2ltZW4gZGUgRGVyZWNobyBkZSBBdXRvciB5IHF1ZSBlcyBvZnJlY2lkYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGVzdGEgbGljZW5jaWE8L2xpPgogICAgICA8bGk+VXN0ZWQsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgcXVlIGVqZXJjaXRhIGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgYWwgYW1wYXJvIGRlIGVzdGEgTGljZW5jaWEgeSBxdWUgY29uIGFudGVyaW9yaWRhZCBubyBoYSB2aW9sYWRvIGxhcyBjb25kaWNpb25lcyBkZSBsYSBtaXNtYSByZXNwZWN0byBhIGxhIE9icmEsIG8gcXVlIGhheWEgb2J0ZW5pZG8gYXV0b3JpemFjacOzbiBleHByZXNhIHBvciBwYXJ0ZSBkZWwgTGljZW5jaWFudGUgcGFyYSBlamVyY2VyIGxvcyBkZXJlY2hvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSBwZXNlIGEgdW5hIHZpb2xhY2nDs24gYW50ZXJpb3IuPC9saT4KICAgIDwvb2w+CiAgPC9saT4KICA8YnIvPgogIDxsaT4KICAgIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgogICAgPHA+TmFkYSBlbiBlc3RhIExpY2VuY2lhIHBvZHLDoSBzZXIgaW50ZXJwcmV0YWRvIGNvbW8gdW5hIGRpc21pbnVjacOzbiwgbGltaXRhY2nDs24gbyByZXN0cmljY2nDs24gZGUgbG9zIGRlcmVjaG9zIGRlcml2YWRvcyBkZWwgdXNvIGhvbnJhZG8geSBvdHJhcyBsaW1pdGFjaW9uZXMgbyBleGNlcGNpb25lcyBhIGxvcyBkZXJlY2hvcyBkZWwgYXV0b3IgYmFqbyBlbCByw6lnaW1lbiBsZWdhbCB2aWdlbnRlIG8gZGVyaXZhZG8gZGUgY3VhbHF1aWVyIG90cmEgbm9ybWEgcXVlIHNlIGxlIGFwbGlxdWUuPC9wPgogIDwvbGk+CiAgPGxpPgogICAgQ29uY2VzacOzbiBkZSBsYSBMaWNlbmNpYS4KICAgIDxwPkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246PC9wPgogICAgPG9sIHR5cGU9ImEiPgogICAgICA8bGk+UmVwcm9kdWNpciBsYSBPYnJhLCBpbmNvcnBvcmFyIGxhIE9icmEgZW4gdW5hIG8gbcOhcyBPYnJhcyBDb2xlY3RpdmFzLCB5IHJlcHJvZHVjaXIgbGEgT2JyYSBpbmNvcnBvcmFkYSBlbiBsYXMgT2JyYXMgQ29sZWN0aXZhcy48L2xpPgogICAgICA8bGk+RGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLjwvbGk+CiAgICAgIDxsaT5EaXN0cmlidWlyIGNvcGlhcyBkZSBsYXMgT2JyYXMgRGVyaXZhZGFzIHF1ZSBzZSBnZW5lcmVuLCBleGhpYmlybGFzIHDDumJsaWNhbWVudGUsIGVqZWN1dGFybGFzIHDDumJsaWNhbWVudGUgeS9vIHBvbmVybGFzIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLjwvbGk+CiAgICA8L29sPgogICAgPHA+TG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuPC9wPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBSZXN0cmljY2lvbmVzLgogICAgPHA+TGEgbGljZW5jaWEgb3RvcmdhZGEgZW4gbGEgYW50ZXJpb3IgU2VjY2nDs24gMyBlc3TDoSBleHByZXNhbWVudGUgc3VqZXRhIHkgbGltaXRhZGEgcG9yIGxhcyBzaWd1aWVudGVzIHJlc3RyaWNjaW9uZXM6PC9wPgogICAgPG9sIHR5cGU9ImEiPgogICAgICA8bGk+VXN0ZWQgcHVlZGUgZGlzdHJpYnVpciwgZXhoaWJpciBww7pibGljYW1lbnRlLCBlamVjdXRhciBww7pibGljYW1lbnRlLCBvIHBvbmVyIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhIGxhIE9icmEgc8OzbG8gYmFqbyBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYSwgeSBVc3RlZCBkZWJlIGluY2x1aXIgdW5hIGNvcGlhIGRlIGVzdGEgbGljZW5jaWEgbyBkZWwgSWRlbnRpZmljYWRvciBVbml2ZXJzYWwgZGUgUmVjdXJzb3MgZGUgbGEgbWlzbWEgY29uIGNhZGEgY29waWEgZGUgbGEgT2JyYSBxdWUgZGlzdHJpYnV5YSwgZXhoaWJhIHDDumJsaWNhbWVudGUsIGVqZWN1dGUgcMO6YmxpY2FtZW50ZSBvIHBvbmdhIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLiBObyBlcyBwb3NpYmxlIG9mcmVjZXIgbyBpbXBvbmVyIG5pbmd1bmEgY29uZGljacOzbiBzb2JyZSBsYSBPYnJhIHF1ZSBhbHRlcmUgbyBsaW1pdGUgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgbyBlbCBlamVyY2ljaW8gZGUgbG9zIGRlcmVjaG9zIGRlIGxvcyBkZXN0aW5hdGFyaW9zIG90b3JnYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gTm8gZXMgcG9zaWJsZSBzdWJsaWNlbmNpYXIgbGEgT2JyYS4gVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RvcyB0b2RvcyBsb3MgYXZpc29zIHF1ZSBoYWdhbiByZWZlcmVuY2lhIGEgZXN0YSBMaWNlbmNpYSB5IGEgbGEgY2zDoXVzdWxhIGRlIGxpbWl0YWNpw7NuIGRlIGdhcmFudMOtYXMuIFVzdGVkIG5vIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIGNvbiBhbGd1bmEgbWVkaWRhIHRlY25vbMOzZ2ljYSBxdWUgY29udHJvbGUgZWwgYWNjZXNvIG8gbGEgdXRpbGl6YWNpw7NuIGRlIGVsbGEgZGUgdW5hIGZvcm1hIHF1ZSBzZWEgaW5jb25zaXN0ZW50ZSBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIExvIGFudGVyaW9yIHNlIGFwbGljYSBhIGxhIE9icmEgaW5jb3Jwb3JhZGEgYSB1bmEgT2JyYSBDb2xlY3RpdmEsIHBlcm8gZXN0byBubyBleGlnZSBxdWUgbGEgT2JyYSBDb2xlY3RpdmEgYXBhcnRlIGRlIGxhIG9icmEgbWlzbWEgcXVlZGUgc3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIFNpIFVzdGVkIGNyZWEgdW5hIE9icmEgQ29sZWN0aXZhLCBwcmV2aW8gYXZpc28gZGUgY3VhbHF1aWVyIExpY2VuY2lhbnRlIGRlYmUsIGVuIGxhIG1lZGlkYSBkZSBsbyBwb3NpYmxlLCBlbGltaW5hciBkZSBsYSBPYnJhIENvbGVjdGl2YSBjdWFscXVpZXIgcmVmZXJlbmNpYSBhIGRpY2hvIExpY2VuY2lhbnRlIG8gYWwgQXV0b3IgT3JpZ2luYWwsIHNlZ8O6biBsbyBzb2xpY2l0YWRvIHBvciBlbCBMaWNlbmNpYW50ZSB5IGNvbmZvcm1lIGxvIGV4aWdlIGxhIGNsw6F1c3VsYSA0KGMpLjwvbGk+CiAgICAgIDxsaT5Vc3RlZCBubyBwdWVkZSBlamVyY2VyIG5pbmd1bm8gZGUgbG9zIGRlcmVjaG9zIHF1ZSBsZSBoYW4gc2lkbyBvdG9yZ2Fkb3MgZW4gbGEgU2VjY2nDs24gMyBwcmVjZWRlbnRlIGRlIG1vZG8gcXVlIGVzdMOpbiBwcmluY2lwYWxtZW50ZSBkZXN0aW5hZG9zIG8gZGlyZWN0YW1lbnRlIGRpcmlnaWRvcyBhIGNvbnNlZ3VpciB1biBwcm92ZWNobyBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS4gRWwgaW50ZXJjYW1iaW8gZGUgbGEgT2JyYSBwb3Igb3RyYXMgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZGVyZWNob3MgZGUgYXV0b3IsIHlhIHNlYSBhIHRyYXbDqXMgZGUgdW4gc2lzdGVtYSBwYXJhIGNvbXBhcnRpciBhcmNoaXZvcyBkaWdpdGFsZXMgKGRpZ2l0YWwgZmlsZS1zaGFyaW5nKSBvIGRlIGN1YWxxdWllciBvdHJhIG1hbmVyYSBubyBzZXLDoSBjb25zaWRlcmFkbyBjb21vIGVzdGFyIGRlc3RpbmFkbyBwcmluY2lwYWxtZW50ZSBvIGRpcmlnaWRvIGRpcmVjdGFtZW50ZSBhIGNvbnNlZ3VpciB1biBwcm92ZWNobyBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYSwgc2llbXByZSBxdWUgbm8gc2UgcmVhbGljZSB1biBwYWdvIG1lZGlhbnRlIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBlbiByZWxhY2nDs24gY29uIGVsIGludGVyY2FtYmlvIGRlIG9icmFzIHByb3RlZ2lkYXMgcG9yIGVsIGRlcmVjaG8gZGUgYXV0b3IuPC9saT4KICAgICAgPGxpPlNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLjwvbGk+CiAgICAgIDxsaT4KICAgICAgICBQYXJhIGV2aXRhciB0b2RhIGNvbmZ1c2nDs24sIGVsIExpY2VuY2lhbnRlIGFjbGFyYSBxdWUsIGN1YW5kbyBsYSBvYnJhIGVzIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbDoKICAgICAgICA8b2wgdHlwZT0iaSI+CiAgICAgICAgICA8bGk+UmVnYWzDrWFzIHBvciBpbnRlcnByZXRhY2nDs24geSBlamVjdWNpw7NuIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBvIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIHkgZGUgcmVjb2xlY3Rhciwgc2VhIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIFNBWUNPKSwgbGFzIHJlZ2Fsw61hcyBwb3IgbGEgZWplY3VjacOzbiBww7pibGljYSBvIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8gV2ViY2FzdCkgbGljZW5jaWFkYSBiYWpvIGxpY2VuY2lhcyBnZW5lcmFsZXMsIHNpIGxhIGludGVycHJldGFjacOzbiBvIGVqZWN1Y2nDs24gZGUgbGEgb2JyYSBlc3TDoSBwcmltb3JkaWFsbWVudGUgb3JpZW50YWRhIHBvciBvIGRpcmlnaWRhIGEgbGEgb2J0ZW5jacOzbiBkZSB1bmEgdmVudGFqYSBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS48L2xpPgogICAgICAgICAgPGxpPlJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuPC9saT4KICAgICAgICA8L29sPgogICAgICA8L2xpPgogICAgICA8bGk+R2VzdGnDs24gZGUgRGVyZWNob3MgZGUgQXV0b3Igc29icmUgSW50ZXJwcmV0YWNpb25lcyB5IEVqZWN1Y2lvbmVzIERpZ2l0YWxlcyAoV2ViQ2FzdGluZykuIFBhcmEgZXZpdGFyIHRvZGEgY29uZnVzacOzbiwgZWwgTGljZW5jaWFudGUgYWNsYXJhIHF1ZSwgY3VhbmRvIGxhIG9icmEgc2VhIHVuIGZvbm9ncmFtYSwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgKHBvciBlamVtcGxvLCB3ZWJjYXN0KSB5IGRlIHJlY29sZWN0YXIsIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIEFDSU5QUk8pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpLCBzdWpldGEgYSBsYXMgZGlzcG9zaWNpb25lcyBhcGxpY2FibGVzIGRlbCByw6lnaW1lbiBkZSBEZXJlY2hvIGRlIEF1dG9yLCBzaSBlc3RhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBlc3TDoSBwcmltb3JkaWFsbWVudGUgZGlyaWdpZGEgYSBvYnRlbmVyIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLjwvbGk+CiAgICA8L29sPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KICAgIDxwPkEgTUVOT1MgUVVFIExBUyBQQVJURVMgTE8gQUNPUkRBUkFOIERFIE9UUkEgRk9STUEgUE9SIEVTQ1JJVE8sIEVMIExJQ0VOQ0lBTlRFIE9GUkVDRSBMQSBPQlJBIChFTiBFTCBFU1RBRE8gRU4gRUwgUVVFIFNFIEVOQ1VFTlRSQSkg4oCcVEFMIENVQUzigJ0sIFNJTiBCUklOREFSIEdBUkFOVMONQVMgREUgQ0xBU0UgQUxHVU5BIFJFU1BFQ1RPIERFIExBIE9CUkEsIFlBIFNFQSBFWFBSRVNBLCBJTVBMw41DSVRBLCBMRUdBTCBPIENVQUxRVUlFUkEgT1RSQSwgSU5DTFVZRU5ETywgU0lOIExJTUlUQVJTRSBBIEVMTEFTLCBHQVJBTlTDjUFTIERFIFRJVFVMQVJJREFELCBDT01FUkNJQUJJTElEQUQsIEFEQVBUQUJJTElEQUQgTyBBREVDVUFDScOTTiBBIFBST1DDk1NJVE8gREVURVJNSU5BRE8sIEFVU0VOQ0lBIERFIElORlJBQ0NJw5NOLCBERSBBVVNFTkNJQSBERSBERUZFQ1RPUyBMQVRFTlRFUyBPIERFIE9UUk8gVElQTywgTyBMQSBQUkVTRU5DSUEgTyBBVVNFTkNJQSBERSBFUlJPUkVTLCBTRUFOIE8gTk8gREVTQ1VCUklCTEVTIChQVUVEQU4gTyBOTyBTRVIgRVNUT1MgREVTQ1VCSUVSVE9TKS4gQUxHVU5BUyBKVVJJU0RJQ0NJT05FUyBOTyBQRVJNSVRFTiBMQSBFWENMVVNJw5NOIERFIEdBUkFOVMONQVMgSU1QTMONQ0lUQVMsIEVOIENVWU8gQ0FTTyBFU1RBIEVYQ0xVU0nDk04gUFVFREUgTk8gQVBMSUNBUlNFIEEgVVNURUQuPC9wPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBMaW1pdGFjacOzbiBkZSByZXNwb25zYWJpbGlkYWQuCiAgICA8cD5BIE1FTk9TIFFVRSBMTyBFWElKQSBFWFBSRVNBTUVOVEUgTEEgTEVZIEFQTElDQUJMRSwgRUwgTElDRU5DSUFOVEUgTk8gU0VSw4EgUkVTUE9OU0FCTEUgQU5URSBVU1RFRCBQT1IgREHDkU8gQUxHVU5PLCBTRUEgUE9SIFJFU1BPTlNBQklMSURBRCBFWFRSQUNPTlRSQUNUVUFMLCBQUkVDT05UUkFDVFVBTCBPIENPTlRSQUNUVUFMLCBPQkpFVElWQSBPIFNVQkpFVElWQSwgU0UgVFJBVEUgREUgREHDkU9TIE1PUkFMRVMgTyBQQVRSSU1PTklBTEVTLCBESVJFQ1RPUyBPIElORElSRUNUT1MsIFBSRVZJU1RPUyBPIElNUFJFVklTVE9TIFBST0RVQ0lET1MgUE9SIEVMIFVTTyBERSBFU1RBIExJQ0VOQ0lBIE8gREUgTEEgT0JSQSwgQVVOIENVQU5ETyBFTCBMSUNFTkNJQU5URSBIQVlBIFNJRE8gQURWRVJUSURPIERFIExBIFBPU0lCSUxJREFEIERFIERJQ0hPUyBEQcORT1MuIEFMR1VOQVMgTEVZRVMgTk8gUEVSTUlURU4gTEEgRVhDTFVTScOTTiBERSBDSUVSVEEgUkVTUE9OU0FCSUxJREFELCBFTiBDVVlPIENBU08gRVNUQSBFWENMVVNJw5NOIFBVRURFIE5PIEFQTElDQVJTRSBBIFVTVEVELjwvcD4KICA8L2xpPgogIDxici8+CiAgPGxpPgogICAgVMOpcm1pbm8uCiAgICA8b2wgdHlwZT0iYSI+CiAgICAgIDxsaT5Fc3RhIExpY2VuY2lhIHkgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBlbiB2aXJ0dWQgZGUgZWxsYSB0ZXJtaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlIHNpIFVzdGVkIGluZnJpbmdlIGFsZ3VuYSBjb25kaWNpw7NuIGVzdGFibGVjaWRhIGVuIGVsbGEuIFNpbiBlbWJhcmdvLCBsb3MgaW5kaXZpZHVvcyBvIGVudGlkYWRlcyBxdWUgaGFuIHJlY2liaWRvIE9icmFzIERlcml2YWRhcyBvIENvbGVjdGl2YXMgZGUgVXN0ZWQgZGUgY29uZm9ybWlkYWQgY29uIGVzdGEgTGljZW5jaWEsIG5vIHZlcsOhbiB0ZXJtaW5hZGFzIHN1cyBsaWNlbmNpYXMsIHNpZW1wcmUgcXVlIGVzdG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgc2lnYW4gY3VtcGxpZW5kbyDDrW50ZWdyYW1lbnRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhcyBsaWNlbmNpYXMuIExhcyBTZWNjaW9uZXMgMSwgMiwgNSwgNiwgNywgeSA4IHN1YnNpc3RpcsOhbiBhIGN1YWxxdWllciB0ZXJtaW5hY2nDs24gZGUgZXN0YSBMaWNlbmNpYS48L2xpPgogICAgICA8bGk+U3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIHkgdMOpcm1pbm9zIGFudGVyaW9yZXMsIGxhIGxpY2VuY2lhIG90b3JnYWRhIGFxdcOtIGVzIHBlcnBldHVhIChkdXJhbnRlIGVsIHBlcsOtb2RvIGRlIHZpZ2VuY2lhIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZSBsYSBvYnJhKS4gTm8gb2JzdGFudGUgbG8gYW50ZXJpb3IsIGVsIExpY2VuY2lhbnRlIHNlIHJlc2VydmEgZWwgZGVyZWNobyBhIHB1YmxpY2FyIHkvbyBlc3RyZW5hciBsYSBPYnJhIGJham8gY29uZGljaW9uZXMgZGUgbGljZW5jaWEgZGlmZXJlbnRlcyBvIGEgZGVqYXIgZGUgZGlzdHJpYnVpcmxhIGVuIGxvcyB0w6lybWlub3MgZGUgZXN0YSBMaWNlbmNpYSBlbiBjdWFscXVpZXIgbW9tZW50bzsgZW4gZWwgZW50ZW5kaWRvLCBzaW4gZW1iYXJnbywgcXVlIGVzYSBlbGVjY2nDs24gbm8gc2Vydmlyw6EgcGFyYSByZXZvY2FyIGVzdGEgbGljZW5jaWEgbyBxdWUgZGViYSBzZXIgb3RvcmdhZGEgLCBiYWpvIGxvcyB0w6lybWlub3MgZGUgZXN0YSBsaWNlbmNpYSksIHkgZXN0YSBsaWNlbmNpYSBjb250aW51YXLDoSBlbiBwbGVubyB2aWdvciB5IGVmZWN0byBhIG1lbm9zIHF1ZSBzZWEgdGVybWluYWRhIGNvbW8gc2UgZXhwcmVzYSBhdHLDoXMuIExhIExpY2VuY2lhIHJldm9jYWRhIGNvbnRpbnVhcsOhIHNpZW5kbyBwbGVuYW1lbnRlIHZpZ2VudGUgeSBlZmVjdGl2YSBzaSBubyBzZSBsZSBkYSB0w6lybWlubyBlbiBsYXMgY29uZGljaW9uZXMgaW5kaWNhZGFzIGFudGVyaW9ybWVudGUuPC9saT4KICAgIDwvb2w+CiAgPC9saT4KICA8YnIvPgogIDxsaT4KICAgIFZhcmlvcy4KICAgIDxvbCB0eXBlPSJhIj4KICAgICAgPGxpPkNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuPC9saT4KICAgICAgPGxpPlNpIGFsZ3VuYSBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSByZXN1bHRhIGludmFsaWRhZGEgbyBubyBleGlnaWJsZSwgc2Vnw7puIGxhIGxlZ2lzbGFjacOzbiB2aWdlbnRlLCBlc3RvIG5vIGFmZWN0YXLDoSBuaSBsYSB2YWxpZGV6IG5pIGxhIGFwbGljYWJpbGlkYWQgZGVsIHJlc3RvIGRlIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgeSwgc2luIGFjY2nDs24gYWRpY2lvbmFsIHBvciBwYXJ0ZSBkZSBsb3Mgc3VqZXRvcyBkZSBlc3RlIGFjdWVyZG8sIGFxdcOpbGxhIHNlIGVudGVuZGVyw6EgcmVmb3JtYWRhIGxvIG3DrW5pbW8gbmVjZXNhcmlvIHBhcmEgaGFjZXIgcXVlIGRpY2hhIGRpc3Bvc2ljacOzbiBzZWEgdsOhbGlkYSB5IGV4aWdpYmxlLjwvbGk+CiAgICAgIDxsaT5OaW5nw7puIHTDqXJtaW5vIG8gZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgc2UgZXN0aW1hcsOhIHJlbnVuY2lhZGEgeSBuaW5ndW5hIHZpb2xhY2nDs24gZGUgZWxsYSBzZXLDoSBjb25zZW50aWRhIGEgbWVub3MgcXVlIGVzYSByZW51bmNpYSBvIGNvbnNlbnRpbWllbnRvIHNlYSBvdG9yZ2FkbyBwb3IgZXNjcml0byB5IGZpcm1hZG8gcG9yIGxhIHBhcnRlIHF1ZSByZW51bmNpZSBvIGNvbnNpZW50YS48L2xpPgogICAgICA8bGk+RXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLjwvbGk+CiAgICA8L29sPgogIDwvbGk+CiAgPGJyLz4KPC9vbD4K |
