Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico

La tesis aborda el problema de programación de tareas en el taller de producción (Job Shop Scheduling Problem), considerando el tiempo de procesamiento como una variable que sigue una distribución de probabilidad acercándose a un entorno productivo, lo anterior conlleva a catalogarlo como Stochastic...

Full description

Autores:
Moreno Moreno, Carlos Arturo
Orjuela Valero, Edgar Hernán
Tipo de recurso:
Fecha de publicación:
2022
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/40155
Acceso en línea:
http://hdl.handle.net/11349/40155
Palabra clave:
Modelizado
Algoritmo
Recocido simulado
Metaheurístico
Makespan
Problema de programación del taller de trabajo
Ingeniería de Producción -- Tesis y disertaciones académicas
Problema de programación de tareas en taller
Tiempo de procesamiento estocástico
Recocido simulado
Optimización del makespan
Modeling
Job Shop Scheduling Problem
Algorithm
Metaheuristic
Makespan
Mimulated annealing
Simulated annealing
Rights
License
Attribution-NonCommercial-NoDerivatives 4.0 Internacional
id UDISTRITA2_8ba8942833e07b7550c4bbeca20733ee
oai_identifier_str oai:repository.udistrital.edu.co:11349/40155
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
dc.title.titleenglish.none.fl_str_mv Modeling the job shop scheduling problem with stochastic processing time by reducing the makespan using a metaheuristic algorithm
title Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
spellingShingle Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
Modelizado
Algoritmo
Recocido simulado
Metaheurístico
Makespan
Problema de programación del taller de trabajo
Ingeniería de Producción -- Tesis y disertaciones académicas
Problema de programación de tareas en taller
Tiempo de procesamiento estocástico
Recocido simulado
Optimización del makespan
Modeling
Job Shop Scheduling Problem
Algorithm
Metaheuristic
Makespan
Mimulated annealing
Simulated annealing
title_short Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
title_full Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
title_fullStr Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
title_full_unstemmed Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
title_sort Modelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurístico
dc.creator.fl_str_mv Moreno Moreno, Carlos Arturo
Orjuela Valero, Edgar Hernán
dc.contributor.advisor.none.fl_str_mv Parra Peña, Javier
dc.contributor.author.none.fl_str_mv Moreno Moreno, Carlos Arturo
Orjuela Valero, Edgar Hernán
dc.contributor.orcid.none.fl_str_mv Parra Peña, Javier [0000-0001-9002-8610]
dc.subject.spa.fl_str_mv Modelizado
Algoritmo
Recocido simulado
Metaheurístico
Makespan
Problema de programación del taller de trabajo
topic Modelizado
Algoritmo
Recocido simulado
Metaheurístico
Makespan
Problema de programación del taller de trabajo
Ingeniería de Producción -- Tesis y disertaciones académicas
Problema de programación de tareas en taller
Tiempo de procesamiento estocástico
Recocido simulado
Optimización del makespan
Modeling
Job Shop Scheduling Problem
Algorithm
Metaheuristic
Makespan
Mimulated annealing
Simulated annealing
dc.subject.lemb.none.fl_str_mv Ingeniería de Producción -- Tesis y disertaciones académicas
Problema de programación de tareas en taller
Tiempo de procesamiento estocástico
Recocido simulado
Optimización del makespan
dc.subject.keyword.spa.fl_str_mv Modeling
Job Shop Scheduling Problem
Algorithm
Metaheuristic
Makespan
Mimulated annealing
Simulated annealing
description La tesis aborda el problema de programación de tareas en el taller de producción (Job Shop Scheduling Problem), considerando el tiempo de procesamiento como una variable que sigue una distribución de probabilidad acercándose a un entorno productivo, lo anterior conlleva a catalogarlo como Stochastic Job Shop Scheduling Problem en donde se establece como función objetivo la minimización del tiempo en el cual terminan todos los trabajos (makespan). El SJSSP se trata como un problema de optimización combinatoria de tipo NP-Hard debido a su complejidad, por ende, se utiliza como método de solución el recocido simulado (Simulated annealing) que emula el tratamiento térmico del acero donde la temperatura de determinado estado condiciona la toma de decisiones, todo ello a fin de escapar de óptimos locales. El algoritmo inicia la búsqueda de soluciones factibles almacenándolas y seleccionando (al finalizar la ejecución) el mejor schedule encontrado, es decir, con el menor makespan. En el transcurso del documento se muestra el proceso desde el tratamiento del tiempo de procesamiento, desarrollo del algoritmo, calibración, generación y representación de schedules, análisis de resultados obtenidos, conclusiones y trabajos futuros. Finalmente, el algoritmo planteado ha mostrado un buen desempeño del makespan al comparase con instancias reconocidas del Job Shop Scheduling Problem abordadas por diversos autores.
publishDate 2022
dc.date.created.none.fl_str_mv 2022-12-02
dc.date.accessioned.none.fl_str_mv 2024-08-30T05:52:07Z
dc.date.available.none.fl_str_mv 2024-08-30T05:52:07Z
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.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/40155
url http://hdl.handle.net/11349/40155
dc.language.iso.spa.fl_str_mv spa
language spa
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 https://repository.udistrital.edu.co/bitstreams/f9d22ad2-7e21-4ee3-843c-a644124c028b/download
https://repository.udistrital.edu.co/bitstreams/3b12cb23-6673-491f-b084-d828d0c84656/download
https://repository.udistrital.edu.co/bitstreams/af028d0c-7890-4fbb-bbe5-8005661ab6d9/download
https://repository.udistrital.edu.co/bitstreams/1e7baca5-890c-418f-94d4-332d65ae13d1/download
https://repository.udistrital.edu.co/bitstreams/3c755b4b-34f1-4892-aa33-fe87e7016a99/download
https://repository.udistrital.edu.co/bitstreams/17e8c6c6-5417-4e2a-b41b-06dd4a2ce9f4/download
https://repository.udistrital.edu.co/bitstreams/af360456-a0b4-4bd6-834d-1522a1abd4d8/download
https://repository.udistrital.edu.co/bitstreams/81542618-a8da-4988-9988-75cfe768e0de/download
bitstream.checksum.fl_str_mv 251f0c1f5166270f8776e787b278e170
5d08c90f95b167f8c80e6f2822535560
dd63dedf7dae0d907f5c496c2e1f220f
997daf6c648c962d566d7b082dac908d
4460e5956bc1d1639be9ae6146a50347
43d7aff402667c3d956d4cc6b7ca7593
3c7ab3d7c4c3ff0dc024053c6e06480c
d32b5360311318507b3c9d33c19009ba
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1837006825825763328
spelling Parra Peña, JavierMoreno Moreno, Carlos ArturoOrjuela Valero, Edgar HernánParra Peña, Javier [0000-0001-9002-8610]2024-08-30T05:52:07Z2024-08-30T05:52:07Z2022-12-02http://hdl.handle.net/11349/40155La tesis aborda el problema de programación de tareas en el taller de producción (Job Shop Scheduling Problem), considerando el tiempo de procesamiento como una variable que sigue una distribución de probabilidad acercándose a un entorno productivo, lo anterior conlleva a catalogarlo como Stochastic Job Shop Scheduling Problem en donde se establece como función objetivo la minimización del tiempo en el cual terminan todos los trabajos (makespan). El SJSSP se trata como un problema de optimización combinatoria de tipo NP-Hard debido a su complejidad, por ende, se utiliza como método de solución el recocido simulado (Simulated annealing) que emula el tratamiento térmico del acero donde la temperatura de determinado estado condiciona la toma de decisiones, todo ello a fin de escapar de óptimos locales. El algoritmo inicia la búsqueda de soluciones factibles almacenándolas y seleccionando (al finalizar la ejecución) el mejor schedule encontrado, es decir, con el menor makespan. En el transcurso del documento se muestra el proceso desde el tratamiento del tiempo de procesamiento, desarrollo del algoritmo, calibración, generación y representación de schedules, análisis de resultados obtenidos, conclusiones y trabajos futuros. Finalmente, el algoritmo planteado ha mostrado un buen desempeño del makespan al comparase con instancias reconocidas del Job Shop Scheduling Problem abordadas por diversos autores.The thesis addresses the Job Shop Scheduling Problem (JSSP), considering the processing time as a variable that follows a probability distribution approaching a productive environment, which leads to catalog it as a Stochastic Job Shop Scheduling Problem where the objective function is set as the minimization of the time in which all jobs are finished (makespan). The SJSSP is treated as a combinatorial optimization problem of NP-Hard type due to its complexity, therefore, simulated annealing is used as a solution method that emulates the heat treatment of steel where the temperature of a certain state conditions the decision making, all this to escape from local optima. The algorithm starts the search for feasible solutions by storing them and selecting (at the end of the execution) the best schedule found, i.e. with the lowest makespan. During the paper the process is shown from the treatment of the processing time, algorithm development, calibration, generation and representation of schedules, analysis of obtained results, conclusions and future work. Finally, the proposed algorithm has shown a good makespan performance when compared with recognized instances of the Job Shop Scheduling Problem addressed by several authors.pdfspaAttribution-NonCommercial-NoDerivatives 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2ModelizadoAlgoritmoRecocido simuladoMetaheurísticoMakespanProblema de programación del taller de trabajoIngeniería de Producción -- Tesis y disertaciones académicasProblema de programación de tareas en tallerTiempo de procesamiento estocásticoRecocido simuladoOptimización del makespanModelingJob Shop Scheduling ProblemAlgorithmMetaheuristicMakespanMimulated annealingSimulated annealingModelizado para el job shop scheduling problem con tiempo de procesamiento estocástico reduciendo el makespan empleando un algoritmo metaheurísticoModeling the job shop scheduling problem with stochastic processing time by reducing the makespan using a metaheuristic algorithmbachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALMorenoMorenoCarlosArturo2022.pdfMorenoMorenoCarlosArturo2022.pdfTrabajo de gradoapplication/pdf2349883https://repository.udistrital.edu.co/bitstreams/f9d22ad2-7e21-4ee3-843c-a644124c028b/download251f0c1f5166270f8776e787b278e170MD51MorenoMorenoCarlosArturo2022Anexos.pdfMorenoMorenoCarlosArturo2022Anexos.pdfAnexosapplication/pdf9906807https://repository.udistrital.edu.co/bitstreams/3b12cb23-6673-491f-b084-d828d0c84656/download5d08c90f95b167f8c80e6f2822535560MD52Licencia de uso y publicación.pdfLicencia de uso y publicación.pdfLicencia de uso y publicaciónapplication/pdf231816https://repository.udistrital.edu.co/bitstreams/af028d0c-7890-4fbb-bbe5-8005661ab6d9/downloaddd63dedf7dae0d907f5c496c2e1f220fMD53LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/1e7baca5-890c-418f-94d4-332d65ae13d1/download997daf6c648c962d566d7b082dac908dMD55CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://repository.udistrital.edu.co/bitstreams/3c755b4b-34f1-4892-aa33-fe87e7016a99/download4460e5956bc1d1639be9ae6146a50347MD54THUMBNAILMorenoMorenoCarlosArturo2022.pdf.jpgMorenoMorenoCarlosArturo2022.pdf.jpgIM Thumbnailimage/jpeg2443https://repository.udistrital.edu.co/bitstreams/17e8c6c6-5417-4e2a-b41b-06dd4a2ce9f4/download43d7aff402667c3d956d4cc6b7ca7593MD56MorenoMorenoCarlosArturo2022Anexos.pdf.jpgMorenoMorenoCarlosArturo2022Anexos.pdf.jpgIM Thumbnailimage/jpeg2052https://repository.udistrital.edu.co/bitstreams/af360456-a0b4-4bd6-834d-1522a1abd4d8/download3c7ab3d7c4c3ff0dc024053c6e06480cMD57Licencia de uso y publicación.pdf.jpgLicencia de uso y publicación.pdf.jpgIM Thumbnailimage/jpeg9508https://repository.udistrital.edu.co/bitstreams/81542618-a8da-4988-9988-75cfe768e0de/downloadd32b5360311318507b3c9d33c19009baMD5811349/40155oai:repository.udistrital.edu.co:11349/401552025-01-12 01:11:03.081http://creativecommons.org/licenses/by-nc-nd/4.0/Attribution-NonCommercial-NoDerivatives 4.0 Internacionalopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK