Generación semiautomática de aplicaciones web usando transformación de modelos
Para la elaboración aplicaciones web a través de la programación de software, se requiere el uso de múltiples herramientas de trabajo, por lo cual es importante explorar y comprender completamente estas expresiones, por esta razón es indispensable contar con la ayuda de metodologías nuevas o existen...
- Autores:
- Tipo de recurso:
- Fecha de publicación:
- 2024
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/35325
- Acceso en línea:
- http://hdl.handle.net/11349/35325
- Palabra clave:
- Ingeniería dirigida por modelos
Transformación de modelos
Dominio
Metamodelo
Marco de modelado de eclipse
Maestría en Ciencias de la Información y las Comunicaciones -- Tesis y disertaciones académicas
Metamodelo de dominio
Model driven engineering (MDE)
Transformación de modelos
Desarrollo de aplicaciones web
Model driven engineering
Transformations of models
Domain
Metamodel
Eclipse modeling framework
- Rights
- License
- Attribution-NonCommercial-NoDerivatives 4.0 Internacional
id |
UDISTRITA2_0769e25c82d4792f718fc530cb096f60 |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/35325 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Generación semiautomática de aplicaciones web usando transformación de modelos |
dc.title.titleenglish.spa.fl_str_mv |
Semi-automatic generation of web applications using model transformation |
title |
Generación semiautomática de aplicaciones web usando transformación de modelos |
spellingShingle |
Generación semiautomática de aplicaciones web usando transformación de modelos Ingeniería dirigida por modelos Transformación de modelos Dominio Metamodelo Marco de modelado de eclipse Maestría en Ciencias de la Información y las Comunicaciones -- Tesis y disertaciones académicas Metamodelo de dominio Model driven engineering (MDE) Transformación de modelos Desarrollo de aplicaciones web Model driven engineering Transformations of models Domain Metamodel Eclipse modeling framework |
title_short |
Generación semiautomática de aplicaciones web usando transformación de modelos |
title_full |
Generación semiautomática de aplicaciones web usando transformación de modelos |
title_fullStr |
Generación semiautomática de aplicaciones web usando transformación de modelos |
title_full_unstemmed |
Generación semiautomática de aplicaciones web usando transformación de modelos |
title_sort |
Generación semiautomática de aplicaciones web usando transformación de modelos |
dc.contributor.advisor.none.fl_str_mv |
Flórez Fernández, Héctor Arturo |
dc.contributor.orcid.spa.fl_str_mv |
0000-0002-5339-4459 |
dc.contributor.orcid.none.fl_str_mv |
Flórez Fernández, Héctor Arturo [0000-0002-5339-4459] |
dc.subject.spa.fl_str_mv |
Ingeniería dirigida por modelos Transformación de modelos Dominio Metamodelo Marco de modelado de eclipse |
topic |
Ingeniería dirigida por modelos Transformación de modelos Dominio Metamodelo Marco de modelado de eclipse Maestría en Ciencias de la Información y las Comunicaciones -- Tesis y disertaciones académicas Metamodelo de dominio Model driven engineering (MDE) Transformación de modelos Desarrollo de aplicaciones web Model driven engineering Transformations of models Domain Metamodel Eclipse modeling framework |
dc.subject.lemb.spa.fl_str_mv |
Maestría en Ciencias de la Información y las Comunicaciones -- Tesis y disertaciones académicas Metamodelo de dominio Model driven engineering (MDE) Transformación de modelos Desarrollo de aplicaciones web |
dc.subject.keyword.spa.fl_str_mv |
Model driven engineering Transformations of models Domain Metamodel Eclipse modeling framework |
description |
Para la elaboración aplicaciones web a través de la programación de software, se requiere el uso de múltiples herramientas de trabajo, por lo cual es importante explorar y comprender completamente estas expresiones, por esta razón es indispensable contar con la ayuda de metodologías nuevas o existentes para seguir avanzando en el desarrollo de software, ofreciendo la oportunidad de continuar desarrollando aplicaciones web. El trabajo muestra el análisis del uso de MDE para la implementación de aplicaciones web semiautomáticas a partir de ciertos elementos del proceso de elaboración de un metamodelo de dominio, es decir, la base de todos los elementos que conforman una aplicación a partir del contexto a desarrollar, adquirir cierta habilidad es imprescindible para lograr la generación del metamodelo de dominio dentro del contexto de aplicaciones Web, MDE de esa manera logra permitir que los modelos puedan ser transformados para obtener el producto final. La propuesta inicial es la construcción de un metamodelo de contexto, por lo que se requieren algunas expresiones que contemplen los aspectos relevantes de las entidades específicas del dominio a solucionar para abstraer los diferentes elementos que pueden ser resueltos para el dominio. A partir del metamodelo de dominio se realizará una transformación para obtener como resultado el código fuente base de la aplicación web requerida. El objetivo de este trabajo es llevar a cabo el análisis y la elaboración de un metamodelo en un lenguaje particular de dominio mediante el uso de Model Driven Engineering (MDE), realizar la implementación en Eclipse Modeling Framework (EMF) y después de llevar a cabo la transformación mediante Acceleo para obtener el código de la aplicación web. El caso de estudio propuesto contempla tres aplicaciones web para la inscripción de matrícula académica, donde la lógica de negocio se mantiene igual en distintas organizaciones, la solución del caso es construir un metamodelo de dominio que permita generar las tres herramientas, cada una con sus características particulares. |
publishDate |
2024 |
dc.date.accessioned.none.fl_str_mv |
2024-05-21T19:48:30Z |
dc.date.available.none.fl_str_mv |
2024-05-21T19:48:30Z |
dc.date.created.none.fl_str_mv |
2024-11 |
dc.type.spa.fl_str_mv |
bachelorThesis |
dc.type.coar.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.degree.spa.fl_str_mv |
Monografía |
dc.identifier.uri.none.fl_str_mv |
http://hdl.handle.net/11349/35325 |
url |
http://hdl.handle.net/11349/35325 |
dc.rights.*.fl_str_mv |
Attribution-NonCommercial-NoDerivatives 4.0 Internacional |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.uri.*.fl_str_mv |
http://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.acceso.spa.fl_str_mv |
Abierto (Texto Completo) |
rights_invalid_str_mv |
Attribution-NonCommercial-NoDerivatives 4.0 Internacional http://creativecommons.org/licenses/by-nc-nd/4.0/ Abierto (Texto Completo) http://purl.org/coar/access_right/c_abf2 |
dc.format.mimetype.spa.fl_str_mv |
pdf |
institution |
Universidad Distrital Francisco José de Caldas |
bitstream.url.fl_str_mv |
http://repository.udistrital.edu.co/bitstream/11349/35325/1/Generaci%c3%b3n_semiautom%c3%a1tica_de_aplicaciones_web_usando_transformaci%c3%b3n_de%20modelos.pdf http://repository.udistrital.edu.co/bitstream/11349/35325/2/Licencia%20de%20uso%20y%20publicacion%20editable.pdf http://repository.udistrital.edu.co/bitstream/11349/35325/3/license_rdf http://repository.udistrital.edu.co/bitstream/11349/35325/4/license.txt http://repository.udistrital.edu.co/bitstream/11349/35325/5/Generaci%c3%b3n_semiautom%c3%a1tica_de_aplicaciones_web_usando_transformaci%c3%b3n_de%20modelos.pdf.jpg http://repository.udistrital.edu.co/bitstream/11349/35325/6/Licencia%20de%20uso%20y%20publicacion%20editable.pdf.jpg |
bitstream.checksum.fl_str_mv |
31f61a6a94b55158eb5827b9587092de a931812bf9becb812aafaa4cb7438b06 4460e5956bc1d1639be9ae6146a50347 997daf6c648c962d566d7b082dac908d 1a32c5589ff9000072765f8be342e4ec f49d0fbe3761e5e0ce66638b2e9c8060 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional Universidad Distrital - RIUD |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1803712755156385792 |
spelling |
Flórez Fernández, Héctor Arturo0000-0002-5339-4459Flórez Fernández, Héctor Arturo [0000-0002-5339-4459]Garay González, Lady Viviana2024-05-21T19:48:30Z2024-05-21T19:48:30Z2024-11http://hdl.handle.net/11349/35325Para la elaboración aplicaciones web a través de la programación de software, se requiere el uso de múltiples herramientas de trabajo, por lo cual es importante explorar y comprender completamente estas expresiones, por esta razón es indispensable contar con la ayuda de metodologías nuevas o existentes para seguir avanzando en el desarrollo de software, ofreciendo la oportunidad de continuar desarrollando aplicaciones web. El trabajo muestra el análisis del uso de MDE para la implementación de aplicaciones web semiautomáticas a partir de ciertos elementos del proceso de elaboración de un metamodelo de dominio, es decir, la base de todos los elementos que conforman una aplicación a partir del contexto a desarrollar, adquirir cierta habilidad es imprescindible para lograr la generación del metamodelo de dominio dentro del contexto de aplicaciones Web, MDE de esa manera logra permitir que los modelos puedan ser transformados para obtener el producto final. La propuesta inicial es la construcción de un metamodelo de contexto, por lo que se requieren algunas expresiones que contemplen los aspectos relevantes de las entidades específicas del dominio a solucionar para abstraer los diferentes elementos que pueden ser resueltos para el dominio. A partir del metamodelo de dominio se realizará una transformación para obtener como resultado el código fuente base de la aplicación web requerida. El objetivo de este trabajo es llevar a cabo el análisis y la elaboración de un metamodelo en un lenguaje particular de dominio mediante el uso de Model Driven Engineering (MDE), realizar la implementación en Eclipse Modeling Framework (EMF) y después de llevar a cabo la transformación mediante Acceleo para obtener el código de la aplicación web. El caso de estudio propuesto contempla tres aplicaciones web para la inscripción de matrícula académica, donde la lógica de negocio se mantiene igual en distintas organizaciones, la solución del caso es construir un metamodelo de dominio que permita generar las tres herramientas, cada una con sus características particulares.For the development of web applications through software programming, the use of multiple work tools is required, so it is important to explore and fully understand these expressions, for this reason it is essential to have the help of new or existing methodologies to continue advancing in software development, offering the opportunity to continue developing web applications. The work shows the analysis of the use of MDE for the implementation of semiautomated web applications from certain elements The use of MDE in the process of developing a domain metamodel, that is, the basis of all the elements that make up an application from the context to be developed, acquiring certain skills is essential to achieve the generation of the domain metamodel within the context of Web applications, MDE thus manages to allow that the models can be transformed to obtain the final product. The initial proposal is the construction of a context metamodel, so some expressions that contemplate the relevant aspects of the specific entities of the domain to be solved are required to abstract the different elements that can be solved for the domain. From the domain metamodel a transformation will be performed to obtain as a result the source code base of the required web application. The objective of this work is to carry out the analysis and elaboration of a metamodel in a particular domain language by using Model Driven Engineering (MDE), perform the implementation in Eclipse Modeling Framework (EMF) and then carry out the transformation using Acceleo to obtain the code of the web application. The proposed case study considers three academic enrollment web applications, where the business logic remains the same for different organizations, The solution of the case is to build a domain metamodel that allows to generate the three tools, each one with its particular characteristics[1].pdfAttribution-NonCommercial-NoDerivatives 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Ingeniería dirigida por modelosTransformación de modelosDominioMetamodeloMarco de modelado de eclipseMaestría en Ciencias de la Información y las Comunicaciones -- Tesis y disertaciones académicasMetamodelo de dominioModel driven engineering (MDE)Transformación de modelosDesarrollo de aplicaciones webModel driven engineeringTransformations of modelsDomainMetamodelEclipse modeling frameworkGeneración semiautomática de aplicaciones web usando transformación de modelosSemi-automatic generation of web applications using model transformationbachelorThesisMonografíahttp://purl.org/coar/resource_type/c_7a1fORIGINALGeneración_semiautomática_de_aplicaciones_web_usando_transformación_de modelos.pdfGeneración_semiautomática_de_aplicaciones_web_usando_transformación_de modelos.pdfTrabajo de gradoapplication/pdf5109990http://repository.udistrital.edu.co/bitstream/11349/35325/1/Generaci%c3%b3n_semiautom%c3%a1tica_de_aplicaciones_web_usando_transformaci%c3%b3n_de%20modelos.pdf31f61a6a94b55158eb5827b9587092deMD51open accessLicencia de uso y publicacion editable.pdfLicencia de uso y publicacion editable.pdfLicencia de uso y publicaciónapplication/pdf271731http://repository.udistrital.edu.co/bitstream/11349/35325/2/Licencia%20de%20uso%20y%20publicacion%20editable.pdfa931812bf9becb812aafaa4cb7438b06MD52metadata only accessCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805http://repository.udistrital.edu.co/bitstream/11349/35325/3/license_rdf4460e5956bc1d1639be9ae6146a50347MD53open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-87167http://repository.udistrital.edu.co/bitstream/11349/35325/4/license.txt997daf6c648c962d566d7b082dac908dMD54open accessTHUMBNAILGeneración_semiautomática_de_aplicaciones_web_usando_transformación_de modelos.pdf.jpgGeneración_semiautomática_de_aplicaciones_web_usando_transformación_de modelos.pdf.jpgIM Thumbnailimage/jpeg6523http://repository.udistrital.edu.co/bitstream/11349/35325/5/Generaci%c3%b3n_semiautom%c3%a1tica_de_aplicaciones_web_usando_transformaci%c3%b3n_de%20modelos.pdf.jpg1a32c5589ff9000072765f8be342e4ecMD55open accessLicencia de uso y publicacion editable.pdf.jpgLicencia de uso y publicacion editable.pdf.jpgIM Thumbnailimage/jpeg13010http://repository.udistrital.edu.co/bitstream/11349/35325/6/Licencia%20de%20uso%20y%20publicacion%20editable.pdf.jpgf49d0fbe3761e5e0ce66638b2e9c8060MD56open access11349/35325oai:repository.udistrital.edu.co:11349/353252024-05-23 01:14:55.457open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |