Seguimiento visual de un manipulador serial utilizando redes neuronales profundas
El presente documento expone el detallado proceso de elaboración de una plataforma virtual mediante la utilización de software de código abierto, destacando herramientas como ROS, Gazebo y Python. Dicha plataforma se emplea con el objetivo principal de capturar y etiquetar bases de datos, cuyo propó...
- Autores:
-
Ortega Quiñones, Kevin David
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2023
- Institución:
- Universidad Tecnológica de Pereira
- Repositorio:
- Repositorio Institucional UTP
- Idioma:
- spa
- OAI Identifier:
- oai:repositorio.utp.edu.co:11059/14712
- Acceso en línea:
- https://hdl.handle.net/11059/14712
https://repositorio.utp.edu.co/home
- Palabra clave:
- 000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación
Visión por computadora
Redes neuronales
Reconocimiento de objectos
Manufactura flexible
Manufactura inteligente
Cobots
- Rights
- openAccess
- License
- Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
id |
UTP2_39084cdc6dd92d614b646fbbd9d526e6 |
---|---|
oai_identifier_str |
oai:repositorio.utp.edu.co:11059/14712 |
network_acronym_str |
UTP2 |
network_name_str |
Repositorio Institucional UTP |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
title |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
spellingShingle |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas 000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación Visión por computadora Redes neuronales Reconocimiento de objectos Manufactura flexible Manufactura inteligente Cobots |
title_short |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
title_full |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
title_fullStr |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
title_full_unstemmed |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
title_sort |
Seguimiento visual de un manipulador serial utilizando redes neuronales profundas |
dc.creator.fl_str_mv |
Ortega Quiñones, Kevin David |
dc.contributor.advisor.none.fl_str_mv |
Holguín Londoño, Germán Andrés |
dc.contributor.author.none.fl_str_mv |
Ortega Quiñones, Kevin David |
dc.subject.ddc.none.fl_str_mv |
000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación |
topic |
000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computación Visión por computadora Redes neuronales Reconocimiento de objectos Manufactura flexible Manufactura inteligente Cobots |
dc.subject.lemb.none.fl_str_mv |
Visión por computadora Redes neuronales Reconocimiento de objectos |
dc.subject.proposal.spa.fl_str_mv |
Manufactura flexible Manufactura inteligente |
dc.subject.proposal.eng.fl_str_mv |
Cobots |
description |
El presente documento expone el detallado proceso de elaboración de una plataforma virtual mediante la utilización de software de código abierto, destacando herramientas como ROS, Gazebo y Python. Dicha plataforma se emplea con el objetivo principal de capturar y etiquetar bases de datos, cuyo propósito radica en el entrenamiento de una red neuronal convolucional diseñada para estimar con precisión la posición de un manipulador serial. En este sentido, la captura de dichos datos se lleva a cabo de manera eficiente y efectiva mediante la utilización de tres cámaras estratégicamente ubicadas en el entorno de trabajo del robot. |
publishDate |
2023 |
dc.date.accessioned.none.fl_str_mv |
2023-06-23T16:19:55Z |
dc.date.available.none.fl_str_mv |
2023-06-23T16:19:55Z |
dc.date.issued.none.fl_str_mv |
2023 |
dc.type.none.fl_str_mv |
Trabajo de grado - Pregrado |
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.driver.none.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
format |
http://purl.org/coar/resource_type/c_7a1f |
status_str |
acceptedVersion |
dc.identifier.uri.none.fl_str_mv |
https://hdl.handle.net/11059/14712 |
dc.identifier.instname.none.fl_str_mv |
Universidad Tecnológica de Pereira |
dc.identifier.reponame.none.fl_str_mv |
Repositorio Institucional Universidad Tecnológica de Pereira |
dc.identifier.repourl.none.fl_str_mv |
https://repositorio.utp.edu.co/home |
url |
https://hdl.handle.net/11059/14712 https://repositorio.utp.edu.co/home |
identifier_str_mv |
Universidad Tecnológica de Pereira Repositorio Institucional Universidad Tecnológica de Pereira |
dc.language.iso.none.fl_str_mv |
spa |
language |
spa |
dc.relation.references.none.fl_str_mv |
[1] TECHNOLOGIES, Faro. Faro lanza la última sonda Vantage Laser Tracker 6DoF. https://www.prnewswire.com/news-releases/ faro-r-lanza-la-ultima-sonda-vantage-laser-tracker-6dof-876210429.html, Fecha de acceso: 2 de junio de 2023. (document), 2 [2] MICROSYSTEMS, Leica. Laser Tracker. http://www.metronica.es/metronica/ laser-tracker/, Fecha de acceso: 2 de junio de 2023. (document), 2 [3] PANTELERIS, Paschalis; OIKONOMIDIS, Iason y ARGYROS, Antonis. Using a Single RGB Frame for Real Time 3D Hand Pose Estimation in the Wild. En: 2018 IEEE Winter Conference on Applications of Computer Vision (WACV), 2018, págs. 436–445. (document), 2, 4, 2 [4] UNIVERSAL ROBOT UR5 collaborative robot - UR5 - robotmp.com. https://www.robotmp.com/universal-robot-ur5-collaborative-robot. Consultado el [18 MAYO 2023]. (document), 6 [5] WIKIMEDIA. Ángulos de Euler. Wikipedia Commons, n.d. https://es.wikipedia. org/w/index.php?title=%C3%81ngulos_de_Euler&oldid=141375560. (document), 5.2, 8 [6] DURDEVIC, Zakariae Machkour. Daniel Ortiz-Arrollo. Petar. Classical and Deep Learn ing based Visual Servoing Systems: a Survey on State of the Art. En: Journal of Intelligent y Robotic Systems, 2022, págs. 1–27. 1, 2 [7] HASHIMOTO., Yasuhiko. The Kawasaki Robot Story. En: 50th Anniversary Website Robot Division of Kawasaki Heavy Industries, Ltd, 2018, pág. 01–25. 1.1 [8] WILLIAMS, Theodore Joseph. The Purdue enterprise reference architecture: a technical guide for CIM planning and implementation. Instrument Society of America, 1992. 1.1 [9] BARONA LÓPEZ, Gustavo y VELASTEGUÍ, Luis Efraín. Automatización de procesos industriales mediante Industria 4.0. En: AlfaPublicaciones, tomo 3, No 3.1, 2021, págs. 84–101. 1.1 [10] HENDERSON., Hugh Durrant. Thomas C. Multisensor Data. En: Springer Handbook of Robotics, 2014, págs. 1–54. 1.1 [11] CHEN., Zeyin Zhao. Xin Wang. Jiafan Chen. Mengzhong. A Generalized Kinematic Error Modeling Method for Serial Industrial Robots Based on Product of Exponentials Formula. En: IEEE International Conference on Real-time Computing and Robotics, 2021, pág. 1023–1028. 1.1, 2 [12] WANG, Junwei Li. Guoliang Liu. Guohui Tian. Xianglai Zhu. Ziren. International Conference: Distributed RGBD Camera Network for 3D Human Pose Estimation and Action Recognition. En: International Conference on Information Fusion, 2018, pág. 1554–1558. 1.2 [13] CHEN., Yutian Liu. Shaozhong Zhang. Danjiang. Obstacle avoidance method based on the movement trend of dynamic obstacles. En: IEEE International Conference on Control and Robotics Engineering (ICCRE), 2018, pág. 45–50. 1.2 [14] IGOR, Juhasova Bohuslava. Juhas Martin. Halenar. TCP/IP Protocol Utilisation in Process of Dynamic Control of Robotic Cell According Industry 4.0 Concept. En: SAMI 2017 • IEEE 15th International Symposium on Applied Machine Intelligence and Infor matics • January 26-28, 2017 • Herl’any, Slovakia, 2017, pág. 000218–000222. 2 [15] R., Wang H. Yang B. Liu Y. Chen W. Liang X. Pfeifer. Visual servoing of soft robot ma nipulator in constrained environ- ments with an adaptive controller. En: IEEE/ASME Transactions on Mechatronics 22(1), 1, 2016, págs. 41–50. 2 [16] SHAO., Wen-Chung Chang. Chia-Kai. Hybrid Fuzzy Control of an Eye-to-Hand Robotic Manipulator for Autonomous Assembly Tasks. En: SICE Annual Conference 2010, 2010, pág. 408–414. 2 [17] HOLGUÍN LONDOÑO, Germán Andrés. SISTEMAS MULTISENSOR DE SERVO CONTROL VISUAL CON MEDICIONES FUERA DE SECUENCIA. Inf. téc., Uni versidad Tecnológica de Pereira, 2016. 2 [18] SIMON, D. Optimal State Estimation: Kalman, H Infinity, and Nonlinear Approaches. En: Wiley, 2006. 2 [19] ZHANG Q. YANG L. T CHEN, Z. Li, P. survey on deep learning for big data. Infor mation Fusion 42. ScienceDirect, 2018. 2 [20] HASHIMOTO, K. Kimura, H. isual servoing with nonlinear observer. En: International Journal of Computer Information Systems and Industrial Management Applications, tomo 1, 1995, págs. 484–489. 2 [21] ABDELAAL, Mahmoud, et al. Uncalibrated stereo vision with deep learning for 6-DOF pose estimation for a robot arm system. En: Robotics and Autonomous Systems, tomo 145, 2021, pág. 103847. ISSN 0921-8890. 2 [22] BOUDET, E. Malis; F. Chaumette; S. 2 1/2 D visual servoing. En: IEEE Transactions on Robotics and Automation, tomo 15, No 2, 1999. 2 [23] TOMIZUKA, Jwu-Sheng Hu. Chi-Shen Tsai. Masayoshi. Ensuring Safety in Human Robot Coexistence Environment. En: 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2014) September 14-18, 2014, Chicago, IL, USA, 2014, pág. 4191–4196. 2 [24] QUIGLEY, Morgan, et al. ROS: an open-source Robot Operating System. En: ICRA workshop on open source software, 3.2, 2009, pág. 5. 3 [25] FERNANDEZ, Enrique, et al. Learning ROS for robotics programming. Packt Publish ing Ltd, 2015. 3 [26] QUIGLEY, Morgan; GERKEY, Brian y SMART, William D. Programming Robots with ROS: a practical introduction to the Robot Operating System. " O’Reilly Media, Inc.", 2015. 3 [27] OPEN SOURCE ROBOTICS FOUNDATION. ROS - Robot Operating System. https: //www.ros.org/, Consultado en mayo de 2023. 3 [28] OPEN SOURCE ROBOTICS FOUNDATION. ROS Noetic. https://wiki.ros.org/ noetic, Consultado en mayo de 2023. 3 [29] H., Huang L. Zhao. Implementation of UR5 pick and place in ROS-Gazebo with a USB cam and vacuum grippers. https://github.com/lihuang3/ur5_ROS-Gazebo. git, 2018. 4 [30] KEBRIA, Parham M., et al. Kinematic and dynamic modelling of UR5 manipulator. En: 2016 IEEE International Conference on Systems, Man, and Cybernetics (SMC), 2016, págs. 004229–004234. 4.3, 4.3.2, 4.3.3 [31] ... |
dc.rights.license.none.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) |
dc.rights.uri.none.fl_str_mv |
https://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.coar.none.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.accessrights.none.fl_str_mv |
info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) https://creativecommons.org/licenses/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 |
102 Páginas |
dc.format.mimetype.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidad Tecnológica de Pereira |
dc.publisher.program.none.fl_str_mv |
Ingeniería Eléctrica |
dc.publisher.faculty.none.fl_str_mv |
Facultad de Ingenierías |
dc.publisher.place.none.fl_str_mv |
Pereira |
publisher.none.fl_str_mv |
Universidad Tecnológica de Pereira |
institution |
Universidad Tecnológica de Pereira |
bitstream.url.fl_str_mv |
https://dspace7-utp.metabuscador.org/bitstreams/ada03de2-c657-4467-b9f3-d5b20af7a51f/download https://dspace7-utp.metabuscador.org/bitstreams/3c485232-772d-429e-a322-3d73e8c5fd45/download https://dspace7-utp.metabuscador.org/bitstreams/0c4d0dd6-d90a-404b-9614-101d98422c2d/download https://dspace7-utp.metabuscador.org/bitstreams/7b16a8be-4749-4c26-bd42-202dfb6847cd/download https://dspace7-utp.metabuscador.org/bitstreams/43aa0466-79c9-4b41-8edd-8bfe4db14065/download |
bitstream.checksum.fl_str_mv |
9107bb12a1179b1fa07d334f3c0c0f4c 2f9959eaf5b71fae44bbf9ec84150c7a bd7c019b94eb97e3cf93ddaeccd37866 82ae497c6a02e198cb440b415e9ddd10 5b647c6592f056931e79c95f98fd4801 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio de la Universidad Tecnológica de Pereira |
repository.mail.fl_str_mv |
bdigital@metabiblioteca.com |
_version_ |
1814022029039370240 |
spelling |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)https://creativecommons.org/licenses/by-nc-nd/4.0/http://purl.org/coar/access_right/c_abf2info:eu-repo/semantics/openAccessHolguín Londoño, Germán AndrésOrtega Quiñones, Kevin David2023-06-23T16:19:55Z2023-06-23T16:19:55Z2023https://hdl.handle.net/11059/14712Universidad Tecnológica de PereiraRepositorio Institucional Universidad Tecnológica de Pereirahttps://repositorio.utp.edu.co/homeEl presente documento expone el detallado proceso de elaboración de una plataforma virtual mediante la utilización de software de código abierto, destacando herramientas como ROS, Gazebo y Python. Dicha plataforma se emplea con el objetivo principal de capturar y etiquetar bases de datos, cuyo propósito radica en el entrenamiento de una red neuronal convolucional diseñada para estimar con precisión la posición de un manipulador serial. En este sentido, la captura de dichos datos se lleva a cabo de manera eficiente y efectiva mediante la utilización de tres cámaras estratégicamente ubicadas en el entorno de trabajo del robot.The present document outlines the detailed process of developing a virtual platform using open-source software, highlighting tools such as ROS, Gazebo, and Python. This platform is employed with the primary objective of capturing and labeling datasets, aiming to train a convolutional neural network capable of accurately estimating the position of a serial manipulator. In this regard, the data capture is efficiently and effectively performed through the use of three strategically positioned cameras in the robot's working environment.CONTENIDO pág. 1 INTRODUCCIÓN 11 1.1 DEFINICIÓN DEL PROBLEMA . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 JUSTIFICACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.3.1 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 ESTADO DEL ARTE 19 3 ECOSISTEMA DE SIMULACIÓN ROS / GAZEBO / Python 23 3.1 ESTRUCTURA DE UN BRAZO EN ROS . . . . . . . . . . . . . . . . . . . 24 3.2 MANIPULADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3 ESTRUCTURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 IMPLEMENTACIÓN DE UN MANIPULADOR SERIAL EN ROS 29 4.1 TIPOS DE ARTICULACIONES . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2 CINEMÁTICA VECTORIAL Y TRANSFORMACIONES DE COORDENADAS 30 4.3 MODELO DE DENAVITH-HARTENBERG . . . . . . . . . . . . . . . . . . 31 4.3.1 Cinemática Directa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.3.2 Parámetros DH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3.3 Cinemática Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5 CAPTURAS DE BASES DE DATOS 37 5.1 DEFINICIÓN DE POSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2 ÁNGULOS DE EULER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.3 ESPACIO DE TRABAJO ESFÉRICO . . . . . . . . . . . . . . . . . . . . . 40 5.4 MUESTREO DE MONTECARLO . . . . . . . . . . . . . . . . . . . . . . . 41 5.5 BASE DE DATOS ETIQUETADAS . . . . . . . . . . . . . . . . . . . . . . 43 6 APRENDIZAJE PROFUNDO 47 6.1 REDES NEURONALES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.2 CNN: CONVOLUCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3 DEEP CNNs-ARQUITECTURAS PROFUNDAS . . . . . . . . . . . . . . . 49 6.4 PROBLEMA DE REGRESIÓN . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.5 ENTRENAMIENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.6 Modelado CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7 EXPERIMENTOS Y RESULTADOS 57 7.1 EXPERIMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.2 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8 CONCLUSIONES 61 8.1 CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 8.2 RECOMENDACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 8.3 TRABAJOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 A TUTORIAL ROS1 65 A.1 INSTALACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 A.2 CONFIGURACIÓN DEL ENTORNO . . . . . . . . . . . . . . . . . . . . . 68 A.3 EJECUCIÓN DE ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 A.3.1 Nivel gráfico de computación de ROS . . . . . . . . . . . . . . . . . . 72 A.3.2 Nivel de la comunidad de ROS . . . . . . . . . . . . . . . . . . . . . . 74 A.3.3 Tutorial de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 A.3.4 Introducción a TurtleSim . . . . . . . . . . . . . . . . . . . . . . . . . 77 A.3.5 Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 B TUTORIAL DE INSTALACIÓN ROS2 83 B.1 RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 B.2 INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 B.3 INSTALACCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 BIBLIOGRAFÍA 89PregradoIngeniero(a) Electricista102 Páginasapplication/pdfspaUniversidad Tecnológica de PereiraIngeniería EléctricaFacultad de IngenieríasPereira000 - Ciencias de la computación, información y obras generales::006 - Métodos especiales de computaciónVisión por computadoraRedes neuronalesReconocimiento de objectosManufactura flexibleManufactura inteligenteCobotsSeguimiento visual de un manipulador serial utilizando redes neuronales profundasTrabajo de grado - Pregradoinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTextinfo:eu-repo/semantics/bachelorThesis[1] TECHNOLOGIES, Faro. Faro lanza la última sonda Vantage Laser Tracker 6DoF. https://www.prnewswire.com/news-releases/ faro-r-lanza-la-ultima-sonda-vantage-laser-tracker-6dof-876210429.html, Fecha de acceso: 2 de junio de 2023. (document), 2[2] MICROSYSTEMS, Leica. Laser Tracker. http://www.metronica.es/metronica/ laser-tracker/, Fecha de acceso: 2 de junio de 2023. (document), 2[3] PANTELERIS, Paschalis; OIKONOMIDIS, Iason y ARGYROS, Antonis. Using a Single RGB Frame for Real Time 3D Hand Pose Estimation in the Wild. En: 2018 IEEE Winter Conference on Applications of Computer Vision (WACV), 2018, págs. 436–445. (document), 2, 4, 2[4] UNIVERSAL ROBOT UR5 collaborative robot - UR5 - robotmp.com. https://www.robotmp.com/universal-robot-ur5-collaborative-robot. Consultado el [18 MAYO 2023]. (document), 6[5] WIKIMEDIA. Ángulos de Euler. Wikipedia Commons, n.d. https://es.wikipedia. org/w/index.php?title=%C3%81ngulos_de_Euler&oldid=141375560. (document), 5.2, 8[6] DURDEVIC, Zakariae Machkour. Daniel Ortiz-Arrollo. Petar. Classical and Deep Learn ing based Visual Servoing Systems: a Survey on State of the Art. En: Journal of Intelligent y Robotic Systems, 2022, págs. 1–27. 1, 2[7] HASHIMOTO., Yasuhiko. The Kawasaki Robot Story. En: 50th Anniversary Website Robot Division of Kawasaki Heavy Industries, Ltd, 2018, pág. 01–25. 1.1[8] WILLIAMS, Theodore Joseph. The Purdue enterprise reference architecture: a technical guide for CIM planning and implementation. Instrument Society of America, 1992. 1.1[9] BARONA LÓPEZ, Gustavo y VELASTEGUÍ, Luis Efraín. Automatización de procesos industriales mediante Industria 4.0. En: AlfaPublicaciones, tomo 3, No 3.1, 2021, págs. 84–101. 1.1[10] HENDERSON., Hugh Durrant. Thomas C. Multisensor Data. En: Springer Handbook of Robotics, 2014, págs. 1–54. 1.1[11] CHEN., Zeyin Zhao. Xin Wang. Jiafan Chen. Mengzhong. A Generalized Kinematic Error Modeling Method for Serial Industrial Robots Based on Product of Exponentials Formula. En: IEEE International Conference on Real-time Computing and Robotics, 2021, pág. 1023–1028. 1.1, 2[12] WANG, Junwei Li. Guoliang Liu. Guohui Tian. Xianglai Zhu. Ziren. International Conference: Distributed RGBD Camera Network for 3D Human Pose Estimation and Action Recognition. En: International Conference on Information Fusion, 2018, pág. 1554–1558. 1.2[13] CHEN., Yutian Liu. Shaozhong Zhang. Danjiang. Obstacle avoidance method based on the movement trend of dynamic obstacles. En: IEEE International Conference on Control and Robotics Engineering (ICCRE), 2018, pág. 45–50. 1.2[14] IGOR, Juhasova Bohuslava. Juhas Martin. Halenar. TCP/IP Protocol Utilisation in Process of Dynamic Control of Robotic Cell According Industry 4.0 Concept. En: SAMI 2017 • IEEE 15th International Symposium on Applied Machine Intelligence and Infor matics • January 26-28, 2017 • Herl’any, Slovakia, 2017, pág. 000218–000222. 2[15] R., Wang H. Yang B. Liu Y. Chen W. Liang X. Pfeifer. Visual servoing of soft robot ma nipulator in constrained environ- ments with an adaptive controller. En: IEEE/ASME Transactions on Mechatronics 22(1), 1, 2016, págs. 41–50. 2[16] SHAO., Wen-Chung Chang. Chia-Kai. Hybrid Fuzzy Control of an Eye-to-Hand Robotic Manipulator for Autonomous Assembly Tasks. En: SICE Annual Conference 2010, 2010, pág. 408–414. 2[17] HOLGUÍN LONDOÑO, Germán Andrés. SISTEMAS MULTISENSOR DE SERVO CONTROL VISUAL CON MEDICIONES FUERA DE SECUENCIA. Inf. téc., Uni versidad Tecnológica de Pereira, 2016. 2[18] SIMON, D. Optimal State Estimation: Kalman, H Infinity, and Nonlinear Approaches. En: Wiley, 2006. 2[19] ZHANG Q. YANG L. T CHEN, Z. Li, P. survey on deep learning for big data. Infor mation Fusion 42. ScienceDirect, 2018. 2[20] HASHIMOTO, K. Kimura, H. isual servoing with nonlinear observer. En: International Journal of Computer Information Systems and Industrial Management Applications, tomo 1, 1995, págs. 484–489. 2[21] ABDELAAL, Mahmoud, et al. Uncalibrated stereo vision with deep learning for 6-DOF pose estimation for a robot arm system. En: Robotics and Autonomous Systems, tomo 145, 2021, pág. 103847. ISSN 0921-8890. 2[22] BOUDET, E. Malis; F. Chaumette; S. 2 1/2 D visual servoing. En: IEEE Transactions on Robotics and Automation, tomo 15, No 2, 1999. 2[23] TOMIZUKA, Jwu-Sheng Hu. Chi-Shen Tsai. Masayoshi. Ensuring Safety in Human Robot Coexistence Environment. En: 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2014) September 14-18, 2014, Chicago, IL, USA, 2014, pág. 4191–4196. 2[24] QUIGLEY, Morgan, et al. ROS: an open-source Robot Operating System. En: ICRA workshop on open source software, 3.2, 2009, pág. 5. 3[25] FERNANDEZ, Enrique, et al. Learning ROS for robotics programming. Packt Publish ing Ltd, 2015. 3[26] QUIGLEY, Morgan; GERKEY, Brian y SMART, William D. Programming Robots with ROS: a practical introduction to the Robot Operating System. " O’Reilly Media, Inc.", 2015. 3[27] OPEN SOURCE ROBOTICS FOUNDATION. ROS - Robot Operating System. https: //www.ros.org/, Consultado en mayo de 2023. 3[28] OPEN SOURCE ROBOTICS FOUNDATION. ROS Noetic. https://wiki.ros.org/ noetic, Consultado en mayo de 2023. 3[29] H., Huang L. Zhao. Implementation of UR5 pick and place in ROS-Gazebo with a USB cam and vacuum grippers. https://github.com/lihuang3/ur5_ROS-Gazebo. git, 2018. 4[30] KEBRIA, Parham M., et al. Kinematic and dynamic modelling of UR5 manipulator. En: 2016 IEEE International Conference on Systems, Man, and Cybernetics (SMC), 2016, págs. 004229–004234. 4.3, 4.3.2, 4.3.3[31] ...PublicationORIGINALTRABAJO DE GRADO .pdfapplication/pdf996190https://dspace7-utp.metabuscador.org/bitstreams/ada03de2-c657-4467-b9f3-d5b20af7a51f/download9107bb12a1179b1fa07d334f3c0c0f4cMD58LICENSElicense.txtlicense.txttext/plain; charset=utf-814828https://dspace7-utp.metabuscador.org/bitstreams/3c485232-772d-429e-a322-3d73e8c5fd45/download2f9959eaf5b71fae44bbf9ec84150c7aMD52TEXTTRABAJO DE GRADO.pdf.txtTRABAJO DE GRADO.pdf.txtExtracted texttext/plain87621https://dspace7-utp.metabuscador.org/bitstreams/0c4d0dd6-d90a-404b-9614-101d98422c2d/downloadbd7c019b94eb97e3cf93ddaeccd37866MD53TRABAJO DE GRADO .pdf.txtTRABAJO DE GRADO .pdf.txtExtracted texttext/plain128283https://dspace7-utp.metabuscador.org/bitstreams/7b16a8be-4749-4c26-bd42-202dfb6847cd/download82ae497c6a02e198cb440b415e9ddd10MD56THUMBNAILTRABAJO DE GRADO .pdf.jpgTRABAJO DE GRADO .pdf.jpgGenerated Thumbnailimage/jpeg6893https://dspace7-utp.metabuscador.org/bitstreams/43aa0466-79c9-4b41-8edd-8bfe4db14065/download5b647c6592f056931e79c95f98fd4801MD5911059/14712oai:dspace7-utp.metabuscador.org:11059/147122024-09-05 17:23:08.477https://creativecommons.org/licenses/by-nc-nd/4.0/open.accesshttps://dspace7-utp.metabuscador.orgRepositorio de la Universidad Tecnológica de Pereirabdigital@metabiblioteca.comTEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuCgpNRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuCjEuIERlZmluaWNpb25lcwoKYS4JT2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLgoKYi4JT2JyYSBEZXJpdmFkYSBzaWduaWZpY2EgdW5hIG9icmEgYmFzYWRhIGVuIGxhIG9icmEgb2JqZXRvIGRlIGVzdGEgbGljZW5jaWEgbyBlbiDDqXN0YSB5IG90cmFzIG9icmFzIHByZWV4aXN0ZW50ZXMsIHRhbGVzIGNvbW8gdHJhZHVjY2lvbmVzLCBhcnJlZ2xvcyBtdXNpY2FsZXMsIGRyYW1hdGl6YWNpb25lcywg4oCcZmljY2lvbmFsaXphY2lvbmVz4oCdLCB2ZXJzaW9uZXMgcGFyYSBjaW5lLCDigJxncmFiYWNpb25lcyBkZSBzb25pZG/igJ0sIHJlcHJvZHVjY2lvbmVzIGRlIGFydGUsIHJlc8O6bWVuZXMsIGNvbmRlbnNhY2lvbmVzLCBvIGN1YWxxdWllciBvdHJhIGVuIGxhIHF1ZSBsYSBvYnJhIHB1ZWRhIHNlciB0cmFuc2Zvcm1hZGEsIGNhbWJpYWRhIG8gYWRhcHRhZGEsIGV4Y2VwdG8gYXF1ZWxsYXMgcXVlIGNvbnN0aXR1eWFuIHVuYSBvYnJhIGNvbGVjdGl2YSwgbGFzIHF1ZSBubyBzZXLDoW4gY29uc2lkZXJhZGFzIHVuYSBvYnJhIGRlcml2YWRhIHBhcmEgZWZlY3RvcyBkZSBlc3RhIGxpY2VuY2lhLiAoUGFyYSBldml0YXIgZHVkYXMsIGVuIGVsIGNhc28gZGUgcXVlIGxhIE9icmEgc2VhIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbCBvIHVuYSBncmFiYWNpw7NuIHNvbm9yYSwgcGFyYSBsb3MgZWZlY3RvcyBkZSBlc3RhIExpY2VuY2lhIGxhIHNpbmNyb25pemFjacOzbiB0ZW1wb3JhbCBkZSBsYSBPYnJhIGNvbiB1bmEgaW1hZ2VuIGVuIG1vdmltaWVudG8gc2UgY29uc2lkZXJhcsOhIHVuYSBPYnJhIERlcml2YWRhIHBhcmEgbG9zIGZpbmVzIGRlIGVzdGEgbGljZW5jaWEpLgoKYy4JTGljZW5jaWFudGUsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgdGl0dWxhciBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IgcXVlIG9mcmVjZSBsYSBPYnJhIGVuIGNvbmZvcm1pZGFkIGNvbiBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYS4KCmQuCUF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuCgplLglPYnJhLCBlcyBhcXVlbGxhIG9icmEgc3VzY2VwdGlibGUgZGUgcHJvdGVjY2nDs24gcG9yIGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IgeSBxdWUgZXMgb2ZyZWNpZGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhCgpmLglVc3RlZCwgZXMgZWwgaW5kaXZpZHVvIG8gbGEgZW50aWRhZCBxdWUgZWplcmNpdGEgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSB5IHF1ZSBjb24gYW50ZXJpb3JpZGFkIG5vIGhhIHZpb2xhZG8gbGFzIGNvbmRpY2lvbmVzIGRlIGxhIG1pc21hIHJlc3BlY3RvIGEgbGEgT2JyYSwgbyBxdWUgaGF5YSBvYnRlbmlkbyBhdXRvcml6YWNpw7NuIGV4cHJlc2EgcG9yIHBhcnRlIGRlbCBMaWNlbmNpYW50ZSBwYXJhIGVqZXJjZXIgbG9zIGRlcmVjaG9zIGFsIGFtcGFybyBkZSBlc3RhIExpY2VuY2lhIHBlc2UgYSB1bmEgdmlvbGFjacOzbiBhbnRlcmlvci4KCjIuIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgpOYWRhIGVuIGVzdGEgTGljZW5jaWEgcG9kcsOhIHNlciBpbnRlcnByZXRhZG8gY29tbyB1bmEgZGlzbWludWNpw7NuLCBsaW1pdGFjacOzbiBvIHJlc3RyaWNjacOzbiBkZSBsb3MgZGVyZWNob3MgZGVyaXZhZG9zIGRlbCB1c28gaG9ucmFkbyB5IG90cmFzIGxpbWl0YWNpb25lcyBvIGV4Y2VwY2lvbmVzIGEgbG9zIGRlcmVjaG9zIGRlbCBhdXRvciBiYWpvIGVsIHLDqWdpbWVuIGxlZ2FsIHZpZ2VudGUgbyBkZXJpdmFkbyBkZSBjdWFscXVpZXIgb3RyYSBub3JtYSBxdWUgc2UgbGUgYXBsaXF1ZS4KCjMuIENvbmNlc2nDs24gZGUgbGEgTGljZW5jaWEuCkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246CgphLglSZXByb2R1Y2lyIGxhIE9icmEsIGluY29ycG9yYXIgbGEgT2JyYSBlbiB1bmEgbyBtw6FzIE9icmFzIENvbGVjdGl2YXMsIHkgcmVwcm9kdWNpciBsYSBPYnJhIGluY29ycG9yYWRhIGVuIGxhcyBPYnJhcyBDb2xlY3RpdmFzLgoKYi4JRGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLgoKYy4JRGlzdHJpYnVpciBjb3BpYXMgZGUgbGFzIE9icmFzIERlcml2YWRhcyBxdWUgc2UgZ2VuZXJlbiwgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4KTG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuCgo0LiBSZXN0cmljY2lvbmVzLgpMYSBsaWNlbmNpYSBvdG9yZ2FkYSBlbiBsYSBhbnRlcmlvciBTZWNjacOzbiAzIGVzdMOhIGV4cHJlc2FtZW50ZSBzdWpldGEgeSBsaW1pdGFkYSBwb3IgbGFzIHNpZ3VpZW50ZXMgcmVzdHJpY2Npb25lczoKCmEuCVVzdGVkIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIHPDs2xvIGJham8gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIHkgVXN0ZWQgZGViZSBpbmNsdWlyIHVuYSBjb3BpYSBkZSBlc3RhIGxpY2VuY2lhIG8gZGVsIElkZW50aWZpY2Fkb3IgVW5pdmVyc2FsIGRlIFJlY3Vyc29zIGRlIGxhIG1pc21hIGNvbiBjYWRhIGNvcGlhIGRlIGxhIE9icmEgcXVlIGRpc3RyaWJ1eWEsIGV4aGliYSBww7pibGljYW1lbnRlLCBlamVjdXRlIHDDumJsaWNhbWVudGUgbyBwb25nYSBhIGRpc3Bvc2ljacOzbiBww7pibGljYS4gTm8gZXMgcG9zaWJsZSBvZnJlY2VyIG8gaW1wb25lciBuaW5ndW5hIGNvbmRpY2nDs24gc29icmUgbGEgT2JyYSBxdWUgYWx0ZXJlIG8gbGltaXRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIG8gZWwgZWplcmNpY2lvIGRlIGxvcyBkZXJlY2hvcyBkZSBsb3MgZGVzdGluYXRhcmlvcyBvdG9yZ2Fkb3MgZW4gZXN0ZSBkb2N1bWVudG8uIE5vIGVzIHBvc2libGUgc3VibGljZW5jaWFyIGxhIE9icmEuIFVzdGVkIGRlYmUgbWFudGVuZXIgaW50YWN0b3MgdG9kb3MgbG9zIGF2aXNvcyBxdWUgaGFnYW4gcmVmZXJlbmNpYSBhIGVzdGEgTGljZW5jaWEgeSBhIGxhIGNsw6F1c3VsYSBkZSBsaW1pdGFjacOzbiBkZSBnYXJhbnTDrWFzLiBVc3RlZCBubyBwdWVkZSBkaXN0cmlidWlyLCBleGhpYmlyIHDDumJsaWNhbWVudGUsIGVqZWN1dGFyIHDDumJsaWNhbWVudGUsIG8gcG9uZXIgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBjb24gYWxndW5hIG1lZGlkYSB0ZWNub2zDs2dpY2EgcXVlIGNvbnRyb2xlIGVsIGFjY2VzbyBvIGxhIHV0aWxpemFjacOzbiBkZSBlbGxhIGRlIHVuYSBmb3JtYSBxdWUgc2VhIGluY29uc2lzdGVudGUgY29uIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBMbyBhbnRlcmlvciBzZSBhcGxpY2EgYSBsYSBPYnJhIGluY29ycG9yYWRhIGEgdW5hIE9icmEgQ29sZWN0aXZhLCBwZXJvIGVzdG8gbm8gZXhpZ2UgcXVlIGxhIE9icmEgQ29sZWN0aXZhIGFwYXJ0ZSBkZSBsYSBvYnJhIG1pc21hIHF1ZWRlIHN1amV0YSBhIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhLiBTaSBVc3RlZCBjcmVhIHVuYSBPYnJhIENvbGVjdGl2YSwgcHJldmlvIGF2aXNvIGRlIGN1YWxxdWllciBMaWNlbmNpYW50ZSBkZWJlLCBlbiBsYSBtZWRpZGEgZGUgbG8gcG9zaWJsZSwgZWxpbWluYXIgZGUgbGEgT2JyYSBDb2xlY3RpdmEgY3VhbHF1aWVyIHJlZmVyZW5jaWEgYSBkaWNobyBMaWNlbmNpYW50ZSBvIGFsIEF1dG9yIE9yaWdpbmFsLCBzZWfDum4gbG8gc29saWNpdGFkbyBwb3IgZWwgTGljZW5jaWFudGUgeSBjb25mb3JtZSBsbyBleGlnZSBsYSBjbMOhdXN1bGEgNChjKS4KCmIuCVVzdGVkIG5vIHB1ZWRlIGVqZXJjZXIgbmluZ3VubyBkZSBsb3MgZGVyZWNob3MgcXVlIGxlIGhhbiBzaWRvIG90b3JnYWRvcyBlbiBsYSBTZWNjacOzbiAzIHByZWNlZGVudGUgZGUgbW9kbyBxdWUgZXN0w6luIHByaW5jaXBhbG1lbnRlIGRlc3RpbmFkb3MgbyBkaXJlY3RhbWVudGUgZGlyaWdpZG9zIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLiBFbCBpbnRlcmNhbWJpbyBkZSBsYSBPYnJhIHBvciBvdHJhcyBvYnJhcyBwcm90ZWdpZGFzIHBvciBkZXJlY2hvcyBkZSBhdXRvciwgeWEgc2VhIGEgdHJhdsOpcyBkZSB1biBzaXN0ZW1hIHBhcmEgY29tcGFydGlyIGFyY2hpdm9zIGRpZ2l0YWxlcyAoZGlnaXRhbCBmaWxlLXNoYXJpbmcpIG8gZGUgY3VhbHF1aWVyIG90cmEgbWFuZXJhIG5vIHNlcsOhIGNvbnNpZGVyYWRvIGNvbW8gZXN0YXIgZGVzdGluYWRvIHByaW5jaXBhbG1lbnRlIG8gZGlyaWdpZG8gZGlyZWN0YW1lbnRlIGEgY29uc2VndWlyIHVuIHByb3ZlY2hvIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLCBzaWVtcHJlIHF1ZSBubyBzZSByZWFsaWNlIHVuIHBhZ28gbWVkaWFudGUgdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIGVuIHJlbGFjacOzbiBjb24gZWwgaW50ZXJjYW1iaW8gZGUgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZWwgZGVyZWNobyBkZSBhdXRvci4KCmMuCVNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLgoKZC4JUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBlcyB1bmEgY29tcG9zaWNpw7NuIG11c2ljYWw6CgppLglSZWdhbMOtYXMgcG9yIGludGVycHJldGFjacOzbiB5IGVqZWN1Y2nDs24gYmFqbyBsaWNlbmNpYXMgZ2VuZXJhbGVzLiBFbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgeSBkZSByZWNvbGVjdGFyLCBzZWEgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgU0FZQ08pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIG8gcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbyBXZWJjYXN0KSBsaWNlbmNpYWRhIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcywgc2kgbGEgaW50ZXJwcmV0YWNpw7NuIG8gZWplY3VjacOzbiBkZSBsYSBvYnJhIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBvcmllbnRhZGEgcG9yIG8gZGlyaWdpZGEgYSBsYSBvYnRlbmNpw7NuIGRlIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLgoKaWkuCVJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgplLglHZXN0acOzbiBkZSBEZXJlY2hvcyBkZSBBdXRvciBzb2JyZSBJbnRlcnByZXRhY2lvbmVzIHkgRWplY3VjaW9uZXMgRGlnaXRhbGVzIChXZWJDYXN0aW5nKS4gUGFyYSBldml0YXIgdG9kYSBjb25mdXNpw7NuLCBlbCBMaWNlbmNpYW50ZSBhY2xhcmEgcXVlLCBjdWFuZG8gbGEgb2JyYSBzZWEgdW4gZm9ub2dyYW1hLCBlbCBMaWNlbmNpYW50ZSBzZSByZXNlcnZhIGVsIGRlcmVjaG8gZXhjbHVzaXZvIGRlIGF1dG9yaXphciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpIHkgZGUgcmVjb2xlY3RhciwgaW5kaXZpZHVhbG1lbnRlIG8gYSB0cmF2w6lzIGRlIHVuYSBzb2NpZWRhZCBkZSBnZXN0acOzbiBjb2xlY3RpdmEgZGUgZGVyZWNob3MgZGUgYXV0b3IgeSBkZXJlY2hvcyBjb25leG9zIChwb3IgZWplbXBsbywgQUNJTlBSTyksIGxhcyByZWdhbMOtYXMgcG9yIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIChwb3IgZWplbXBsbywgd2ViY2FzdCksIHN1amV0YSBhIGxhcyBkaXNwb3NpY2lvbmVzIGFwbGljYWJsZXMgZGVsIHLDqWdpbWVuIGRlIERlcmVjaG8gZGUgQXV0b3IsIHNpIGVzdGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuCgo1LiBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTEFTIFBBUlRFUyBMTyBBQ09SREFSQU4gREUgT1RSQSBGT1JNQSBQT1IgRVNDUklUTywgRUwgTElDRU5DSUFOVEUgT0ZSRUNFIExBIE9CUkEgKEVOIEVMIEVTVEFETyBFTiBFTCBRVUUgU0UgRU5DVUVOVFJBKSDigJxUQUwgQ1VBTOKAnSwgU0lOIEJSSU5EQVIgR0FSQU5Uw41BUyBERSBDTEFTRSBBTEdVTkEgUkVTUEVDVE8gREUgTEEgT0JSQSwgWUEgU0VBIEVYUFJFU0EsIElNUEzDjUNJVEEsIExFR0FMIE8gQ1VBTFFVSUVSQSBPVFJBLCBJTkNMVVlFTkRPLCBTSU4gTElNSVRBUlNFIEEgRUxMQVMsIEdBUkFOVMONQVMgREUgVElUVUxBUklEQUQsIENPTUVSQ0lBQklMSURBRCwgQURBUFRBQklMSURBRCBPIEFERUNVQUNJw5NOIEEgUFJPUMOTU0lUTyBERVRFUk1JTkFETywgQVVTRU5DSUEgREUgSU5GUkFDQ0nDk04sIERFIEFVU0VOQ0lBIERFIERFRkVDVE9TIExBVEVOVEVTIE8gREUgT1RSTyBUSVBPLCBPIExBIFBSRVNFTkNJQSBPIEFVU0VOQ0lBIERFIEVSUk9SRVMsIFNFQU4gTyBOTyBERVNDVUJSSUJMRVMgKFBVRURBTiBPIE5PIFNFUiBFU1RPUyBERVNDVUJJRVJUT1MpLiBBTEdVTkFTIEpVUklTRElDQ0lPTkVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgR0FSQU5Uw41BUyBJTVBMw41DSVRBUywgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjYuIExpbWl0YWNpw7NuIGRlIHJlc3BvbnNhYmlsaWRhZC4KQSBNRU5PUyBRVUUgTE8gRVhJSkEgRVhQUkVTQU1FTlRFIExBIExFWSBBUExJQ0FCTEUsIEVMIExJQ0VOQ0lBTlRFIE5PIFNFUsOBIFJFU1BPTlNBQkxFIEFOVEUgVVNURUQgUE9SIERBw5FPIEFMR1VOTywgU0VBIFBPUiBSRVNQT05TQUJJTElEQUQgRVhUUkFDT05UUkFDVFVBTCwgUFJFQ09OVFJBQ1RVQUwgTyBDT05UUkFDVFVBTCwgT0JKRVRJVkEgTyBTVUJKRVRJVkEsIFNFIFRSQVRFIERFIERBw5FPUyBNT1JBTEVTIE8gUEFUUklNT05JQUxFUywgRElSRUNUT1MgTyBJTkRJUkVDVE9TLCBQUkVWSVNUT1MgTyBJTVBSRVZJU1RPUyBQUk9EVUNJRE9TIFBPUiBFTCBVU08gREUgRVNUQSBMSUNFTkNJQSBPIERFIExBIE9CUkEsIEFVTiBDVUFORE8gRUwgTElDRU5DSUFOVEUgSEFZQSBTSURPIEFEVkVSVElETyBERSBMQSBQT1NJQklMSURBRCBERSBESUNIT1MgREHDkU9TLiBBTEdVTkFTIExFWUVTIE5PIFBFUk1JVEVOIExBIEVYQ0xVU0nDk04gREUgQ0lFUlRBIFJFU1BPTlNBQklMSURBRCwgRU4gQ1VZTyBDQVNPIEVTVEEgRVhDTFVTScOTTiBQVUVERSBOTyBBUExJQ0FSU0UgQSBVU1RFRC4KCjcuIFTDqXJtaW5vLgoKYS4JRXN0YSBMaWNlbmNpYSB5IGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgZW4gdmlydHVkIGRlIGVsbGEgdGVybWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZSBzaSBVc3RlZCBpbmZyaW5nZSBhbGd1bmEgY29uZGljacOzbiBlc3RhYmxlY2lkYSBlbiBlbGxhLiBTaW4gZW1iYXJnbywgbG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgcXVlIGhhbiByZWNpYmlkbyBPYnJhcyBEZXJpdmFkYXMgbyBDb2xlY3RpdmFzIGRlIFVzdGVkIGRlIGNvbmZvcm1pZGFkIGNvbiBlc3RhIExpY2VuY2lhLCBubyB2ZXLDoW4gdGVybWluYWRhcyBzdXMgbGljZW5jaWFzLCBzaWVtcHJlIHF1ZSBlc3RvcyBpbmRpdmlkdW9zIG8gZW50aWRhZGVzIHNpZ2FuIGN1bXBsaWVuZG8gw61udGVncmFtZW50ZSBsYXMgY29uZGljaW9uZXMgZGUgZXN0YXMgbGljZW5jaWFzLiBMYXMgU2VjY2lvbmVzIDEsIDIsIDUsIDYsIDcsIHkgOCBzdWJzaXN0aXLDoW4gYSBjdWFscXVpZXIgdGVybWluYWNpw7NuIGRlIGVzdGEgTGljZW5jaWEuCgpiLglTdWpldGEgYSBsYXMgY29uZGljaW9uZXMgeSB0w6lybWlub3MgYW50ZXJpb3JlcywgbGEgbGljZW5jaWEgb3RvcmdhZGEgYXF1w60gZXMgcGVycGV0dWEgKGR1cmFudGUgZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIGRlIGxhIG9icmEpLiBObyBvYnN0YW50ZSBsbyBhbnRlcmlvciwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGEgcHVibGljYXIgeS9vIGVzdHJlbmFyIGxhIE9icmEgYmFqbyBjb25kaWNpb25lcyBkZSBsaWNlbmNpYSBkaWZlcmVudGVzIG8gYSBkZWphciBkZSBkaXN0cmlidWlybGEgZW4gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIExpY2VuY2lhIGVuIGN1YWxxdWllciBtb21lbnRvOyBlbiBlbCBlbnRlbmRpZG8sIHNpbiBlbWJhcmdvLCBxdWUgZXNhIGVsZWNjacOzbiBubyBzZXJ2aXLDoSBwYXJhIHJldm9jYXIgZXN0YSBsaWNlbmNpYSBvIHF1ZSBkZWJhIHNlciBvdG9yZ2FkYSAsIGJham8gbG9zIHTDqXJtaW5vcyBkZSBlc3RhIGxpY2VuY2lhKSwgeSBlc3RhIGxpY2VuY2lhIGNvbnRpbnVhcsOhIGVuIHBsZW5vIHZpZ29yIHkgZWZlY3RvIGEgbWVub3MgcXVlIHNlYSB0ZXJtaW5hZGEgY29tbyBzZSBleHByZXNhIGF0csOhcy4gTGEgTGljZW5jaWEgcmV2b2NhZGEgY29udGludWFyw6Egc2llbmRvIHBsZW5hbWVudGUgdmlnZW50ZSB5IGVmZWN0aXZhIHNpIG5vIHNlIGxlIGRhIHTDqXJtaW5vIGVuIGxhcyBjb25kaWNpb25lcyBpbmRpY2FkYXMgYW50ZXJpb3JtZW50ZS4KCjguIFZhcmlvcy4KCmEuCUNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuCgpiLglTaSBhbGd1bmEgZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgcmVzdWx0YSBpbnZhbGlkYWRhIG8gbm8gZXhpZ2libGUsIHNlZ8O6biBsYSBsZWdpc2xhY2nDs24gdmlnZW50ZSwgZXN0byBubyBhZmVjdGFyw6EgbmkgbGEgdmFsaWRleiBuaSBsYSBhcGxpY2FiaWxpZGFkIGRlbCByZXN0byBkZSBjb25kaWNpb25lcyBkZSBlc3RhIExpY2VuY2lhIHksIHNpbiBhY2Npw7NuIGFkaWNpb25hbCBwb3IgcGFydGUgZGUgbG9zIHN1amV0b3MgZGUgZXN0ZSBhY3VlcmRvLCBhcXXDqWxsYSBzZSBlbnRlbmRlcsOhIHJlZm9ybWFkYSBsbyBtw61uaW1vIG5lY2VzYXJpbyBwYXJhIGhhY2VyIHF1ZSBkaWNoYSBkaXNwb3NpY2nDs24gc2VhIHbDoWxpZGEgeSBleGlnaWJsZS4KCmMuCU5pbmfDum4gdMOpcm1pbm8gbyBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSBzZSBlc3RpbWFyw6EgcmVudW5jaWFkYSB5IG5pbmd1bmEgdmlvbGFjacOzbiBkZSBlbGxhIHNlcsOhIGNvbnNlbnRpZGEgYSBtZW5vcyBxdWUgZXNhIHJlbnVuY2lhIG8gY29uc2VudGltaWVudG8gc2VhIG90b3JnYWRvIHBvciBlc2NyaXRvIHkgZmlybWFkbyBwb3IgbGEgcGFydGUgcXVlIHJlbnVuY2llIG8gY29uc2llbnRhLgoKZC4JRXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLgo= |