2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme

El alto paralelismo y el bajo costo de las unidades de procesamiento gráfico (GPU) han atraído el interés de científicos e ingenieros que requieren una alta potencia computacional con una modesta inversión. Este trabajo explora el uso de una GPU en la solución del problema de flujo de la cavidad 2D...

Full description

Autores:
Franco Guzmán, Ediguer Enrique
Barrera Cárdenas, Helver Mauricio
Laín Beatove, Santiago
Tipo de recurso:
Article of journal
Fecha de publicación:
2014
Institución:
Universidad Autónoma de Occidente
Repositorio:
RED: Repositorio Educativo Digital UAO
Idioma:
eng
OAI Identifier:
oai:red.uao.edu.co:10614/11908
Acceso en línea:
http://red.uao.edu.co//handle/10614/11908
Palabra clave:
Análisis numérico
Numerical analysis
Navier-Stokes equations
Lid driven cavity flow
GPU
CUDA
Rights
openAccess
License
Derechos Reservados - Universidad Autónoma de Occidente
id REPOUAO2_a445a53bec1371cda2842c96af3672d9
oai_identifier_str oai:red.uao.edu.co:10614/11908
network_acronym_str REPOUAO2
network_name_str RED: Repositorio Educativo Digital UAO
repository_id_str
dc.title.eng.fl_str_mv 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
title 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
spellingShingle 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
Análisis numérico
Numerical analysis
Navier-Stokes equations
Lid driven cavity flow
GPU
CUDA
title_short 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
title_full 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
title_fullStr 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
title_full_unstemmed 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
title_sort 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
dc.creator.fl_str_mv Franco Guzmán, Ediguer Enrique
Barrera Cárdenas, Helver Mauricio
Laín Beatove, Santiago
dc.contributor.author.none.fl_str_mv Franco Guzmán, Ediguer Enrique
Barrera Cárdenas, Helver Mauricio
Laín Beatove, Santiago
dc.subject.armarc.spa.fl_str_mv Análisis numérico
topic Análisis numérico
Numerical analysis
Navier-Stokes equations
Lid driven cavity flow
GPU
CUDA
dc.subject.armarc.eng.fl_str_mv Numerical analysis
dc.subject.proposal.eng.fl_str_mv Navier-Stokes equations
dc.subject.proposal.none.fl_str_mv Lid driven cavity flow
GPU
CUDA
description El alto paralelismo y el bajo costo de las unidades de procesamiento gráfico (GPU) han atraído el interés de científicos e ingenieros que requieren una alta potencia computacional con una modesta inversión. Este trabajo explora el uso de una GPU en la solución del problema de flujo de la cavidad 2D impulsada por la tapa utilizando la formulación de presión-velocidad para números de Reynolds hasta 10,000 y pasando a un esquema de diferencias finitas de cuarto orden para la discretización espacial. Los resultados mostraron una buena concordancia con los reportados en la literatura. El solucionador se implementó tanto en la CPU como en la GPU para comparar su rendimiento, con lo cual este último fue setenta veces más rápido.
publishDate 2014
dc.date.issued.spa.fl_str_mv 2014-10
dc.date.accessioned.none.fl_str_mv 2020-02-17T18:16:45Z
dc.date.available.none.fl_str_mv 2020-02-17T18:16:45Z
dc.type.spa.fl_str_mv Artículo de revista
dc.type.coar.fl_str_mv http://purl.org/coar/resource_type/c_2df8fbb1
dc.type.coarversion.fl_str_mv http://purl.org/coar/version/c_970fb48d4fbd8a85
dc.type.coar.eng.fl_str_mv http://purl.org/coar/resource_type/c_6501
dc.type.content.eng.fl_str_mv Text
dc.type.driver.eng.fl_str_mv info:eu-repo/semantics/article
dc.type.redcol.eng.fl_str_mv http://purl.org/redcol/resource_type/ARTREF
dc.type.version.eng.fl_str_mv info:eu-repo/semantics/publishedVersion
format http://purl.org/coar/resource_type/c_6501
status_str publishedVersion
dc.identifier.uri.none.fl_str_mv http://red.uao.edu.co//handle/10614/11908
url http://red.uao.edu.co//handle/10614/11908
dc.language.iso.eng.fl_str_mv eng
language eng
dc.relation.eng.fl_str_mv Journal of the Brazilian Society of Mechanical Sciences and Engineering. (2014); páginas 1329-1338
dc.relation.citationvolume.none.fl_str_mv 37
dc.relation.cites.spa.fl_str_mv Franco, E.E., Barrera, H.M. & Laín, S. 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme. J Braz. Soc. Mech. Sci. Eng. 37, 1329–1338 . http://red.uao.edu.co//handle/10614/11908
dc.relation.ispartofjournal.eng.fl_str_mv Journal of the Brazilian Society of Mechanical Sciences and Engineering
dc.relation.references.none.fl_str_mv NVIDIA’s (2009) Next Generation CUDA Compute Architecture: Fermi. Technical Report V1.1, NVIDIA Corporation.
Bell, N., & M. Garland 2008. Efficient Sparse Matrix-Vector Multiplication on CUDA. Technical Report NVR-2008-004, NVIDIA Corporation.
Cardoso, N., & P. Bicudo 2009.Time dependent simulation of the Lid Driven Cavity at high Reynolds number. arXiv:0809.3098 [physics.flu-dyn].
Chapra, S. C., & R. P Canale 1995. M´etodos num´ericos para ingenieros. McGrawHill/Interamericana Editores S.A. de C.V., Mexico, 6th edition.
Chorin, Alexandre Joel 1968. Numerical solution of the Navier-Stokes equations. Mathematics of Computation, 22:745–762.
Courtecuisse, H., & J. Alard. Parallel Dense Gauss-Seidel Algorithm on Many-Core Processors. In Proceedings of the 11th IEEE International Conference on High Performance Computing and Comunications.
[Erturk, 2009] Erturk, E. 2009. Discussions on driven cavity flow. International Journal for Numerical Methods in Fluids, 60:275–294.
Erturk, E., T. C. Corke, & C. G¨ok¸c¨ol 2005. Numerical solution of 2-D steady incompressible driven cavity flow at high Reynolds number. International Journal for Numerical Methods in Fluids, 48:747–774.
[Frezzotti et al., 2011] Frezzotti, A., G. P. Ghiroldi, & L. Gibelli 2011. Solving model kinetic equations on GPUs.Computers & Fluids, 50:136–146.
Ghia, U., K. N. Ghia, & C. T. Shin 1982. High-Re Solutions for Incompressible Flow Using the Navier-Stokes Equations and a Multigrid Method. Journal of Computational Physics, 48:387–411.
Markall, G. R., A. Slemmer, D. A.Ham, P. H. J. Kelly, C. D. Cantwell, & S. J. Sherwin 2013. Finite element assembly strategies on multi-core and many-core architectures. International Journal for Numerical Methods in Fluids, 71(1):80–97.
Moreland, K., & E. Angel 2003.The FFT on a GPU. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, HWWS ’03, pages 112–119, Aire-la-Ville, Switzerland, Switzerland. Eurographics Association.
Patankar, S. V. 1980. Numerical Heat Transfer and Fluid Flow. Mc Graw Hill, USA.
Seibold, B. 2008. A compact and fast Matlab code solving the incompressible Navier-Stokes equations on rectangular domains (mit18086 navierstokes.m). Massachusetts Institute of Technology.
Vanka, S. P. 2013. 2012 Freeman Scholar Lecture: Computational Fluid Dynamics on Graphics Processing Units. Journal of Fluids Engineering, 135(6):23.
Versteeg, H. K., & W. Malalasekera 1995. An introduction to computational fluid dynamics. Addyson Wesley Longman Limited,Essex, England.
Zheng, L., H. Zhang, T. Gerya, M. Knepley, D. A. Yuen, & Y. Shi 2013. Implementation of a multigrid solver on a GPU for Stokes equations with strongly variable viscosity based on Matlab and CUDA. International Journal of High Performance Computing Applications, 28(1):50–60.
dc.rights.spa.fl_str_mv Derechos Reservados - Universidad Autónoma de Occidente
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.eng.fl_str_mv https://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.accessrights.eng.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.creativecommons.spa.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
rights_invalid_str_mv Derechos Reservados - Universidad Autónoma de Occidente
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.eng.fl_str_mv application/pdf
dc.format.extent.spa.fl_str_mv 8 páginas
dc.coverage.spatial.none.fl_str_mv Universidad Autónoma de Occidente. Calle 25 115-85. Km 2 vía Cali-Jamundí
dc.publisher.eng.fl_str_mv Springer
institution Universidad Autónoma de Occidente
bitstream.url.fl_str_mv https://red.uao.edu.co/bitstreams/67049321-fc4e-4252-84ff-beac98cec167/download
https://red.uao.edu.co/bitstreams/084f4853-17a9-45af-8d31-a3f8651e5acb/download
https://red.uao.edu.co/bitstreams/940d78d3-7c7a-4280-9321-6478d661308a/download
https://red.uao.edu.co/bitstreams/e956a760-2ed6-46fd-b32a-cdd863e5eb56/download
https://red.uao.edu.co/bitstreams/898374cb-a0fc-4875-939e-e556b80fb485/download
bitstream.checksum.fl_str_mv 4460e5956bc1d1639be9ae6146a50347
20b5ba22b1117f71589c7318baa2c560
7894de0a54f405b85f76692a1063680f
98cc8762dbfc08e8b4aa3f4b1836cebd
571131080fb1ac2bff38bf7f3dbfe976
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Digital Universidad Autonoma de Occidente
repository.mail.fl_str_mv repositorio@uao.edu.co
_version_ 1814260124454223872
spelling Franco Guzmán, Ediguer Enriquevirtual::1048-1Barrera Cárdenas, Helver Mauriciovirtual::1047-1Laín Beatove, Santiagovirtual::1049-1Universidad Autónoma de Occidente. Calle 25 115-85. Km 2 vía Cali-Jamundí2020-02-17T18:16:45Z2020-02-17T18:16:45Z2014-10http://red.uao.edu.co//handle/10614/11908El alto paralelismo y el bajo costo de las unidades de procesamiento gráfico (GPU) han atraído el interés de científicos e ingenieros que requieren una alta potencia computacional con una modesta inversión. Este trabajo explora el uso de una GPU en la solución del problema de flujo de la cavidad 2D impulsada por la tapa utilizando la formulación de presión-velocidad para números de Reynolds hasta 10,000 y pasando a un esquema de diferencias finitas de cuarto orden para la discretización espacial. Los resultados mostraron una buena concordancia con los reportados en la literatura. El solucionador se implementó tanto en la CPU como en la GPU para comparar su rendimiento, con lo cual este último fue setenta veces más rápido.The high parallelism and low cost of the graphic processing units (GPUs) have attracted the interest of scientists and engineers requiring high computational power with a modest investment. This work explores the use of a GPU in the solution of the 2D lid-driven cavity flow problem using the pressure–velocity formulation for Reynolds numbers up to 10,000 and turning to a 4th order finite difference scheme for spatial discretization. Results showed good agreement with those reported in the literature. The solver was implemented in both the CPU and the GPU in order to compare their performance, whereupon the latter was seventy times fasterapplication/pdf8 páginasengSpringerJournal of the Brazilian Society of Mechanical Sciences and Engineering. (2014); páginas 1329-133837Franco, E.E., Barrera, H.M. & Laín, S. 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme. J Braz. Soc. Mech. Sci. Eng. 37, 1329–1338 . http://red.uao.edu.co//handle/10614/11908Journal of the Brazilian Society of Mechanical Sciences and EngineeringNVIDIA’s (2009) Next Generation CUDA Compute Architecture: Fermi. Technical Report V1.1, NVIDIA Corporation.Bell, N., & M. Garland 2008. Efficient Sparse Matrix-Vector Multiplication on CUDA. Technical Report NVR-2008-004, NVIDIA Corporation.Cardoso, N., & P. Bicudo 2009.Time dependent simulation of the Lid Driven Cavity at high Reynolds number. arXiv:0809.3098 [physics.flu-dyn].Chapra, S. C., & R. P Canale 1995. M´etodos num´ericos para ingenieros. McGrawHill/Interamericana Editores S.A. de C.V., Mexico, 6th edition.Chorin, Alexandre Joel 1968. Numerical solution of the Navier-Stokes equations. Mathematics of Computation, 22:745–762.Courtecuisse, H., & J. Alard. Parallel Dense Gauss-Seidel Algorithm on Many-Core Processors. In Proceedings of the 11th IEEE International Conference on High Performance Computing and Comunications.[Erturk, 2009] Erturk, E. 2009. Discussions on driven cavity flow. International Journal for Numerical Methods in Fluids, 60:275–294.Erturk, E., T. C. Corke, & C. G¨ok¸c¨ol 2005. Numerical solution of 2-D steady incompressible driven cavity flow at high Reynolds number. International Journal for Numerical Methods in Fluids, 48:747–774.[Frezzotti et al., 2011] Frezzotti, A., G. P. Ghiroldi, & L. Gibelli 2011. Solving model kinetic equations on GPUs.Computers & Fluids, 50:136–146.Ghia, U., K. N. Ghia, & C. T. Shin 1982. High-Re Solutions for Incompressible Flow Using the Navier-Stokes Equations and a Multigrid Method. Journal of Computational Physics, 48:387–411.Markall, G. R., A. Slemmer, D. A.Ham, P. H. J. Kelly, C. D. Cantwell, & S. J. Sherwin 2013. Finite element assembly strategies on multi-core and many-core architectures. International Journal for Numerical Methods in Fluids, 71(1):80–97.Moreland, K., & E. Angel 2003.The FFT on a GPU. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, HWWS ’03, pages 112–119, Aire-la-Ville, Switzerland, Switzerland. Eurographics Association.Patankar, S. V. 1980. Numerical Heat Transfer and Fluid Flow. Mc Graw Hill, USA.Seibold, B. 2008. A compact and fast Matlab code solving the incompressible Navier-Stokes equations on rectangular domains (mit18086 navierstokes.m). Massachusetts Institute of Technology.Vanka, S. P. 2013. 2012 Freeman Scholar Lecture: Computational Fluid Dynamics on Graphics Processing Units. Journal of Fluids Engineering, 135(6):23.Versteeg, H. K., & W. Malalasekera 1995. An introduction to computational fluid dynamics. Addyson Wesley Longman Limited,Essex, England.Zheng, L., H. Zhang, T. Gerya, M. Knepley, D. A. Yuen, & Y. Shi 2013. Implementation of a multigrid solver on a GPU for Stokes equations with strongly variable viscosity based on Matlab and CUDA. International Journal of High Performance Computing Applications, 28(1):50–60.Derechos Reservados - Universidad Autónoma de Occidentehttps://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessAtribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)http://purl.org/coar/access_right/c_abf22D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference schemeArtículo de revistahttp://purl.org/coar/resource_type/c_6501http://purl.org/coar/resource_type/c_2df8fbb1Textinfo:eu-repo/semantics/articlehttp://purl.org/redcol/resource_type/ARTREFinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/version/c_970fb48d4fbd8a85Análisis numéricoNumerical analysisNavier-Stokes equationsLid driven cavity flowGPUCUDAPublicationff78380a-274b-4973-8760-dee857b38a0dvirtual::1048-1f608b27f-3b11-4041-b07e-40e9f8a7d0cdvirtual::1047-1082b0926-3385-4188-9c6a-bbbed7484a95virtual::1049-1f608b27f-3b11-4041-b07e-40e9f8a7d0cdvirtual::1047-1ff78380a-274b-4973-8760-dee857b38a0dvirtual::1048-1082b0926-3385-4188-9c6a-bbbed7484a95virtual::1049-1https://scholar.google.com/citations?user=4paPIoAAAAAJ&hl=esvirtual::1048-1https://scholar.google.com/citations?hl=de&view_op=list_works&gmla=AP6z3OYgyKNV4SXIsrFCLfeZy4UIrIrbyXxywRNV-C1ZKnpTkio8g9aklz0hJAg7XS_UPdAknPgql5zu89xaKLcx9QI3sN69O6biQQvlg3a_jR_o01ufqXtkz9H6gA&user=u7z3_5IAAAAJvirtual::1047-1https://scholar.google.com/citations?user=g-iBdUkAAAAJ&hl=esvirtual::1049-10000-0001-7518-704Xvirtual::1048-10000-0002-6968-1508virtual::1047-10000-0002-0269-2608virtual::1049-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001243730virtual::1048-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001391726virtual::1047-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000262129virtual::1049-1CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://red.uao.edu.co/bitstreams/67049321-fc4e-4252-84ff-beac98cec167/download4460e5956bc1d1639be9ae6146a50347MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-81665https://red.uao.edu.co/bitstreams/084f4853-17a9-45af-8d31-a3f8651e5acb/download20b5ba22b1117f71589c7318baa2c560MD53ORIGINALA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdfA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdfTexto completo del artículoapplication/pdf1919205https://red.uao.edu.co/bitstreams/940d78d3-7c7a-4280-9321-6478d661308a/download7894de0a54f405b85f76692a1063680fMD54TEXTA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.txtA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.txtExtracted texttext/plain30762https://red.uao.edu.co/bitstreams/e956a760-2ed6-46fd-b32a-cdd863e5eb56/download98cc8762dbfc08e8b4aa3f4b1836cebdMD55THUMBNAILA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.jpgA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.jpgGenerated Thumbnailimage/jpeg13699https://red.uao.edu.co/bitstreams/898374cb-a0fc-4875-939e-e556b80fb485/download571131080fb1ac2bff38bf7f3dbfe976MD5610614/11908oai:red.uao.edu.co:10614/119082024-03-01 09:45:10.24https://creativecommons.org/licenses/by-nc-nd/4.0/Derechos Reservados - Universidad Autónoma de Occidenteopen.accesshttps://red.uao.edu.coRepositorio Digital Universidad Autonoma de Occidenterepositorio@uao.edu.coRUwgQVVUT1IgYXV0b3JpemEgYSBsYSBVbml2ZXJzaWRhZCBBdXTDs25vbWEgZGUgT2NjaWRlbnRlLCBkZSBmb3JtYSBpbmRlZmluaWRhLCBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgbGEgTGV5IDQ0IGRlIDE5OTMsIGxhIERlY2lzacOzbiBhbmRpbmEgMzUxIGRlIDE5OTMsIGVsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbGV5ZXMgeSBqdXJpc3BydWRlbmNpYSB2aWdlbnRlIGFsIHJlc3BlY3RvLCBoYWdhIHB1YmxpY2FjacOzbiBkZSBlc3RlIGNvbiBmaW5lcyBlZHVjYXRpdm9zLiBQQVJBR1JBRk86IEVzdGEgYXV0b3JpemFjacOzbiBhZGVtw6FzIGRlIHNlciB2w6FsaWRhIHBhcmEgbGFzIGZhY3VsdGFkZXMgeSBkZXJlY2hvcyBkZSB1c28gc29icmUgbGEgb2JyYSBlbiBmb3JtYXRvIG8gc29wb3J0ZSBtYXRlcmlhbCwgdGFtYmnDqW4gcGFyYSBmb3JtYXRvIGRpZ2l0YWwsIGVsZWN0csOzbmljbywgdmlydHVhbCwgcGFyYSB1c29zIGVuIHJlZCwgSW50ZXJuZXQsIGV4dHJhbmV0LCBpbnRyYW5ldCwgYmlibGlvdGVjYSBkaWdpdGFsIHkgZGVtw6FzIHBhcmEgY3VhbHF1aWVyIGZvcm1hdG8gY29ub2NpZG8gbyBwb3IgY29ub2Nlci4gRUwgQVVUT1IsIGV4cHJlc2EgcXVlIGVsIGRvY3VtZW50byAodHJhYmFqbyBkZSBncmFkbywgcGFzYW50w61hLCBjYXNvcyBvIHRlc2lzKSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIGVsYWJvcsOzIHNpbiBxdWVicmFudGFyIG5pIHN1cGxhbnRhciBsb3MgZGVyZWNob3MgZGUgYXV0b3IgZGUgdGVyY2Vyb3MsIHkgZGUgdGFsIGZvcm1hLCBlbCBkb2N1bWVudG8gKHRyYWJham8gZGUgZ3JhZG8sIHBhc2FudMOtYSwgY2Fzb3MgbyB0ZXNpcykgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgw6lzdGUuIFBBUkFHUkFGTzogZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBhbGd1bmEgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybywgcmVmZXJlbnRlIGEgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHNvYnJlIGVsIGRvY3VtZW50byAoVHJhYmFqbyBkZSBncmFkbywgUGFzYW50w61hLCBjYXNvcyBvIHRlc2lzKSBlbiBjdWVzdGnDs24sIEVMIEFVVE9SLCBhc3VtaXLDoSBsYSByZXNwb25zYWJpbGlkYWQgdG90YWwsIHkgc2FsZHLDoSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvczsgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgbGEgVW5pdmVyc2lkYWQgIEF1dMOzbm9tYSBkZSBPY2NpZGVudGUgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4gVG9kYSBwZXJzb25hIHF1ZSBjb25zdWx0ZSB5YSBzZWEgZW4gbGEgYmlibGlvdGVjYSBvIGVuIG1lZGlvIGVsZWN0csOzbmljbyBwb2Ryw6EgY29waWFyIGFwYXJ0ZXMgZGVsIHRleHRvIGNpdGFuZG8gc2llbXByZSBsYSBmdWVudGUsIGVzIGRlY2lyIGVsIHTDrXR1bG8gZGVsIHRyYWJham8geSBlbCBhdXRvci4gRXN0YSBhdXRvcml6YWNpw7NuIG5vIGltcGxpY2EgcmVudW5jaWEgYSBsYSBmYWN1bHRhZCBxdWUgdGllbmUgRUwgQVVUT1IgZGUgcHVibGljYXIgdG90YWwgbyBwYXJjaWFsbWVudGUgbGEgb2JyYS4K