Notas
Toda la información que se presenta aquí es pública
Los datos corresponden a transacciones del año 2019
La información se extrae directamente de las órdenes de compra (compromisos) de www.mercadopublico.cl y no de pagos (devengos)
Herramienta de selección
La siguiente tabla presenta información de Gobierno Central (no incluye Salud); quedan fuera del análisis: FF.AA, Legislativo y judicial, Municipalidades y Otros (CGR, Congreso, empresas públicas y organismos adheridos voluntariamente); lo que es equivalente a 3.310.006.446 USD:
Donde:
- NombreProducto: indica el nombre del commodity (UNSPSC nivel 4)
- Compradores: cantidad de compradores
- MontoUSD: monto agregado del commodity en valor dólar observado sin IVA
- CantidadOC: cantidad de órdenes de compra en la que se encuentra el commodity
- Proveedores: cantidad de proveedores distintos que recibieron al menos una OC con el commodity
- CM_S: participación de los comvenios marco en el rubro (a nivel de commodity), en términos de monto
- MiPyme: participación de los proveedores MiPyme en el rubro (a nivel de commodity), en términos de monto
- hhi: Hirshman-Herfindahl Index. Indicador de poder de mercado de los proveedores. Se define como \[HHI=\sum_{i=1}^{N}s_{i}^{2}\] donde \(s\) es la participación de mercado de cada proveedor i.
- Montos: muestra la distribución del monto anual, por mes.
LS0tDQp0aXRsZTogPGNlbnRlcj48c3Ryb25nPjxmb250IGNvbG9yPSIjMTc2MzM5Ij5IZXJyYW1pZW50YSBleHBsb3JhdG9yaWEgZGUgbWVyY2Fkb3M8L2ZvbnQ+PC9zdHJvbmc+PC9jZW50ZXI+DQpzdWJ0aXRsZTogPGNlbnRlcj4qKkd1aWxsZXJtbyBCdXJyIE9ydMO6emFyKio8L2NlbnRlcj4NCiMgYXV0aG9yOiAiSW50ZWxpZ2VuY2lhIGRlIE1lcmNhZG8geSBQb2zDrXRpY2FzIGRlIENvbXByYSINCmRhdGU6IDxjZW50ZXI+YHIgZm9ybWF0KFN5cy50aW1lKCksICclZCBkZSAlQiwgJVknKWA8L2NlbnRlcj4NCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQoNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeSh4dGFibGUpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KGZvcm1hdHRhYmxlKQ0KbGlicmFyeSh0cmVlbWFwKQ0KbGlicmFyeShkM1RyZWUpDQpsaWJyYXJ5KE1hdGNoSXQpDQpsaWJyYXJ5KHBzeWNobykNCmxpYnJhcnkoc3RyaW5ncikNCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KbGlicmFyeShicm9vbSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShncmlkRXh0cmEpDQpsaWJyYXJ5KHNoaW55KQ0KbGlicmFyeShST0RCQykNCmxpYnJhcnkoZ2d0aGVtZXMpDQpsaWJyYXJ5KG5ldHdvcmtEMykNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KHNwYXJrbGluZSkNCg0KY29sRm10ID0gZnVuY3Rpb24oeCxjb2xvcil7DQogIG91dHB1dEZvcm1hdCA9IGtuaXRyOjpvcHRzX2tuaXQkZ2V0KCJybWFya2Rvd24ucGFuZG9jLnRvIikNCiAgaWYob3V0cHV0Rm9ybWF0ID09ICdsYXRleCcpDQogICAgcGFzdGUoIlxcdGV4dGNvbG9yeyIsY29sb3IsIn17Iix4LCJ9IixzZXA9IiIpDQogIGVsc2UgaWYob3V0cHV0Rm9ybWF0ID09ICdodG1sJykNCiAgICBwYXN0ZSgiPGZvbnQgY29sb3I9JyIsY29sb3IsIic+Iix4LCI8L2ZvbnQ+IixzZXA9IiIpDQogIGVsc2UNCiAgICB4DQp9DQoNCmNvbiA8LSBvZGJjQ29ubmVjdCgicGFyYXIiKQ0KDQpgYGANCg0KDQpgYGB7ciB0YWJsYTEyMywgaW5jbHVkZT1GQUxTRX0NCg0KdGFibGExPC1zcWxRdWVyeShjb24sIlNFTEVDVCBEaW1Qcm9kdWN0by5JRFByb2R1Y3RvLA0KRGltUHJvZHVjdG8uTm9tYnJlUHJvZHVjdG8sIA0KRGltUnVicm8uUnVicm9OMywgDQpEaW1SdWJyby5SdWJyb04yLCANCkRpbVJ1YnJvLlJ1YnJvTjEsDQpjb3VudChESVNUSU5DVCBEaW1JbnN0aXR1Y2lvbi5lbnRDb2RlKSBDb21wcmFkb3JlcywNCkNBU1QoU1VNKFRIT3JkZW5lc0NvbXByYUxpbmVhLk1vbnRvVVNEKjEuMTkpIEFTIElOVCkgTW9udG9VU0QsIA0KY291bnQoRElTVElOQ1QgVEhPcmRlbmVzQ29tcHJhLkNvZGlnb09DKSBDYW50aWRhZE9DLCANCmNvdW50KERJU1RJTkNUIERpbUVtcHJlc2EuZW50Q29kZSkgQVMgUHJvdmVlZG9yZXMNCkZST00gICAgIERpbUluc3RpdHVjaW9uIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbUNvbXByYWRvciBPTiBEaW1JbnN0aXR1Y2lvbi5lbnRDb2RlID0gRGltQ29tcHJhZG9yLmVudENvZGUgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltU2VjdG9yIE9OIERpbUluc3RpdHVjaW9uLklkU2VjdG9yID0gRGltU2VjdG9yLklkU2VjdG9yIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIFRIT3JkZW5lc0NvbXByYSBPTiBEaW1Db21wcmFkb3IuSURVbmlkYWRkZUNvbXByYSA9IFRIT3JkZW5lc0NvbXByYS5JRFVuaWRhZGRlQ29tcHJhIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbVRpZW1wbyBPTiBUSE9yZGVuZXNDb21wcmEuSURGZWNoYUVudmlvT0MgPSBEaW1UaWVtcG8uRGF0ZUtleSBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBUSE9yZGVuZXNDb21wcmFMaW5lYSBPTiBUSE9yZGVuZXNDb21wcmEucG9ySUQgPSBUSE9yZGVuZXNDb21wcmFMaW5lYS5wb3JJRCBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1Qcm92ZWVkb3IgT04gVEhPcmRlbmVzQ29tcHJhLklEU3VjdXJzYWwgPSBEaW1Qcm92ZWVkb3IuSURTdWN1cnNhbCBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1FbXByZXNhIE9OIERpbVByb3ZlZWRvci5lbnRDb2RlID0gRGltRW1wcmVzYS5lbnRDb2RlIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbVByb2R1Y3RvIE9OIFRIT3JkZW5lc0NvbXByYUxpbmVhLklEUHJvZHVjdG8gPSBEaW1Qcm9kdWN0by5JRFByb2R1Y3RvIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbVJ1YnJvIE9OIERpbVByb2R1Y3RvLklkUnVicm8gPSBEaW1SdWJyby5JZFJ1YnJvDQpXSEVSRSAgRGltVGllbXBvLlllYXI9MjAxOQ0KQU5EIERpbVNlY3Rvci5JZFNlY3RvciBOT1QgSU4gKDEsMyw0LDYsOCwgNykNCkFORCBSdWJyb04xICE9ICdTaW4gSW5mb3JtYWNpw7NuJyBhbmQgW09DRXhjZXBjaW9uYWxdICE9MQ0KR1JPVVAgQlkgRGltUHJvZHVjdG8uSURQcm9kdWN0bywgDQpEaW1Qcm9kdWN0by5Ob21icmVQcm9kdWN0bywgDQpEaW1SdWJyby5SdWJyb04zLCANCkRpbVJ1YnJvLlJ1YnJvTjIsIA0KRGltUnVicm8uUnVicm9OMSIpDQogIA0KdGFibGEyPC1zcWxRdWVyeShjb24sIlNFTEVDVCAqIA0KRlJPTSAgDQooDQpTRUxFQ1QgRGltUHJvZHVjdG8uSURQcm9kdWN0bywNCkRpbVByb2R1Y3RvLk5vbWJyZVByb2R1Y3RvLCANCkRpbVJ1YnJvLlJ1YnJvTjMsIA0KRGltUnVicm8uUnVicm9OMiwgDQpEaW1SdWJyby5SdWJyb04xLA0KQ0FTVChTVU0oVEhPcmRlbmVzQ29tcHJhTGluZWEuTW9udG9VU0QqMS4xOSkgQVMgSU5UKSBNb250b1VTRCwgDQpDQVNFICBXSEVOIElEUHJvY2VkZW5jaWFPQyBJTiAoNzAxLDcwMikgVEhFTiAnTEMnDQpXSEVOIElEUHJvY2VkZW5jaWFPQyBJTiAoNzAzKSBUSEVOICdDTScNCmVsc2UgJ1REJyBlbmQgYXMgUHJvY2VkaW1pZW50bw0KRlJPTSAgICAgRGltSW5zdGl0dWNpb24gSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltQ29tcHJhZG9yIE9OIERpbUluc3RpdHVjaW9uLmVudENvZGUgPSBEaW1Db21wcmFkb3IuZW50Q29kZSBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1TZWN0b3IgT04gRGltSW5zdGl0dWNpb24uSWRTZWN0b3IgPSBEaW1TZWN0b3IuSWRTZWN0b3IgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgVEhPcmRlbmVzQ29tcHJhIE9OIERpbUNvbXByYWRvci5JRFVuaWRhZGRlQ29tcHJhID0gVEhPcmRlbmVzQ29tcHJhLklEVW5pZGFkZGVDb21wcmEgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltVGllbXBvIE9OIFRIT3JkZW5lc0NvbXByYS5JREZlY2hhRW52aW9PQyA9IERpbVRpZW1wby5EYXRlS2V5IElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIFRIT3JkZW5lc0NvbXByYUxpbmVhIE9OIFRIT3JkZW5lc0NvbXByYS5wb3JJRCA9IFRIT3JkZW5lc0NvbXByYUxpbmVhLnBvcklEIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbVByb3ZlZWRvciBPTiBUSE9yZGVuZXNDb21wcmEuSURTdWN1cnNhbCA9IERpbVByb3ZlZWRvci5JRFN1Y3Vyc2FsIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbUVtcHJlc2EgT04gRGltUHJvdmVlZG9yLmVudENvZGUgPSBEaW1FbXByZXNhLmVudENvZGUgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltUHJvZHVjdG8gT04gVEhPcmRlbmVzQ29tcHJhTGluZWEuSURQcm9kdWN0byA9IERpbVByb2R1Y3RvLklEUHJvZHVjdG8gSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltUnVicm8gT04gRGltUHJvZHVjdG8uSWRSdWJybyA9IERpbVJ1YnJvLklkUnVicm8NCldIRVJFICBEaW1UaWVtcG8uWWVhcj0yMDE5DQpBTkQgRGltU2VjdG9yLklkU2VjdG9yIE5PVCBJTiAoMSwzLDQsNiw4LCA3KQ0KQU5EIFJ1YnJvTjEgIT0gJ1NpbiBJbmZvcm1hY2nDs24nIGFuZCBbT0NFeGNlcGNpb25hbF0gIT0xDQpHUk9VUCBCWSBEaW1Qcm9kdWN0by5JRFByb2R1Y3RvLCANCkRpbVByb2R1Y3RvLk5vbWJyZVByb2R1Y3RvLCANCkRpbVJ1YnJvLlJ1YnJvTjMsIA0KRGltUnVicm8uUnVicm9OMiwgDQpEaW1SdWJyby5SdWJyb04xLA0KQ0FTRSAgV0hFTiBJRFByb2NlZGVuY2lhT0MgSU4gKDcwMSw3MDIpIFRIRU4gJ0xDJw0KV0hFTiBJRFByb2NlZGVuY2lhT0MgSU4gKDcwMykgVEhFTiAnQ00nDQplbHNlICdURCcgZW5kDQopIEFTIFNvdXJjZVRhYmxlICANClBJVk9UICANCiggIA0KU1VNKE1vbnRvVVNEKSAgDQpGT1IgUHJvY2VkaW1pZW50byBJTiAoW0xDXSwgW0NNXSwgW1REXSkgIA0KKSBBUyBQaXZvdFRhYmxlOyAiKSAlPiUgbXV0YXRlKENNPWlmZWxzZShpcy5uYShDTSksIDAsIENNKSwgTEM9aWZlbHNlKGlzLm5hKExDKSwgMCwgTEMpLCBURD1pZmVsc2UoaXMubmEoVEQpLCAwLCBURCkpDQoNCnRhYmxhMzwtc3FsUXVlcnkoY29uLCJTRUxFQ1QgKiBGUk9NIEVzdHVkaW9zLi5ISEkyMDIwIikgJT4lIG11dGF0ZShhcy5pbnRlZ2VyKGhoaSkpICU+JSBzZWxlY3QoLWhoaSkgJT4lIHJlbmFtZShoaGk9YGFzLmludGVnZXIoaGhpKWApICU+JSBtdXRhdGUoYXMubnVtZXJpYyhoaGkpKSU+JSBzZWxlY3QoLWhoaSkgJT4lIHJlbmFtZShoaGk9YGFzLm51bWVyaWMoaGhpKWApDQoNCnRhYmxhNDwtc3FsUXVlcnkoY29uLCJTRUxFQ1QgKiANCkZST00gIA0KKA0KU0VMRUNUIERpbVByb2R1Y3RvLklEUHJvZHVjdG8sDQpEaW1Qcm9kdWN0by5Ob21icmVQcm9kdWN0bywgDQpEaW1SdWJyby5SdWJyb04zLCANCkRpbVJ1YnJvLlJ1YnJvTjIsIA0KRGltUnVicm8uUnVicm9OMSwNCkNBU1QoU1VNKFRIT3JkZW5lc0NvbXByYUxpbmVhLk1vbnRvVVNEKjEuMTkpIEFTIElOVCkgTW9udG9VU0QsIA0KQ0FTRSBXSEVOIFtJZFRhbWFub10gSU4gKDIsMyw0LDUpIFRIRU4gJ01pUHltZScgZWxzZSAnR3JhbmRlJyBlbmQgVGFtYW5vDQpGUk9NICAgICBEaW1JbnN0aXR1Y2lvbiBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1Db21wcmFkb3IgT04gRGltSW5zdGl0dWNpb24uZW50Q29kZSA9IERpbUNvbXByYWRvci5lbnRDb2RlIElOTkVSIEpPSU4NCiAgICAgICAgICAgICAgICAgIERpbVNlY3RvciBPTiBEaW1JbnN0aXR1Y2lvbi5JZFNlY3RvciA9IERpbVNlY3Rvci5JZFNlY3RvciBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBUSE9yZGVuZXNDb21wcmEgT04gRGltQ29tcHJhZG9yLklEVW5pZGFkZGVDb21wcmEgPSBUSE9yZGVuZXNDb21wcmEuSURVbmlkYWRkZUNvbXByYSBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1UaWVtcG8gT04gVEhPcmRlbmVzQ29tcHJhLklERmVjaGFFbnZpb09DID0gRGltVGllbXBvLkRhdGVLZXkgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgVEhPcmRlbmVzQ29tcHJhTGluZWEgT04gVEhPcmRlbmVzQ29tcHJhLnBvcklEID0gVEhPcmRlbmVzQ29tcHJhTGluZWEucG9ySUQgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltUHJvdmVlZG9yIE9OIFRIT3JkZW5lc0NvbXByYS5JRFN1Y3Vyc2FsID0gRGltUHJvdmVlZG9yLklEU3VjdXJzYWwgSU5ORVIgSk9JTg0KICAgICAgICAgICAgICAgICAgRGltRW1wcmVzYSBPTiBEaW1Qcm92ZWVkb3IuZW50Q29kZSA9IERpbUVtcHJlc2EuZW50Q29kZSBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1Qcm9kdWN0byBPTiBUSE9yZGVuZXNDb21wcmFMaW5lYS5JRFByb2R1Y3RvID0gRGltUHJvZHVjdG8uSURQcm9kdWN0byBJTk5FUiBKT0lODQogICAgICAgICAgICAgICAgICBEaW1SdWJybyBPTiBEaW1Qcm9kdWN0by5JZFJ1YnJvID0gRGltUnVicm8uSWRSdWJybyANCldIRVJFICBEaW1UaWVtcG8uWWVhcj0yMDE5DQpBTkQgRGltU2VjdG9yLklkU2VjdG9yIE5PVCBJTiAoMSwzLDQsNiw4LCA3KQ0KQU5EIFJ1YnJvTjEgIT0gJ1NpbiBJbmZvcm1hY2nDs24nIGFuZCBbT0NFeGNlcGNpb25hbF0gIT0xDQpHUk9VUCBCWSBEaW1Qcm9kdWN0by5JRFByb2R1Y3RvLCANCkRpbVByb2R1Y3RvLk5vbWJyZVByb2R1Y3RvLCANCkRpbVJ1YnJvLlJ1YnJvTjMsIA0KRGltUnVicm8uUnVicm9OMiwgDQpEaW1SdWJyby5SdWJyb04xLA0KQ0FTRSBXSEVOIFtJZFRhbWFub10gSU4gKDIsMyw0LDUpIFRIRU4gJ01pUHltZScgZWxzZSAnR3JhbmRlJyBlbmQNCikgQVMgU291cmNlVGFibGUgIA0KUElWT1QgIA0KKCAgDQpTVU0oTW9udG9VU0QpICANCkZPUiBUYW1hbm8gSU4gKFtNaVB5bWVdLCBbR3JhbmRlXSkgIA0KKSBBUyBQaXZvdFRhYmxlOyIpICU+JSBtdXRhdGUoTWlQeW1lPWlmZWxzZShpcy5uYShNaVB5bWUpLCAwLCBNaVB5bWUpLEdyYW5kZT1pZmVsc2UoaXMubmEoR3JhbmRlKSwgMCwgR3JhbmRlKSkNCg0KZGYyXzI8LXNxbFF1ZXJ5KGNvbiwiDQogICAgICAgICAgICAgICAgU0VMRUNUIG1lcywgSURQcm9kdWN0bywgTW9udG9VU0QNCiAgICAgICAgICAgICAgICBmcm9tIA0KICAgICAgICAgICAgICAgIEVzdHVkaW9zLi5tZXMyMDIwZmluYWwNCiAgICAgICAgICAgICAgICBvcmRlciBieSBtZXMgYXNjICAgICAgDQogICAgICAgICAgICAgICAgIikNCg0KYV8yMjwtZGYyXzIgJT4lDQogIGdyb3VwX2J5KElEUHJvZHVjdG8pICU+JSANCiAgYXJyYW5nZShtZXMpICU+JQ0KICBzdW1tYXJpc2UoTW9udG9zID0gc3BrX2NocihNb250b1VTRCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNvbG9yID0gJ2JsdWUnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yID0gJyNjY2MnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydFJhbmdlTWluID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRSYW5nZU1heCA9IDgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gODAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDYwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRMaW5lQ29sb3IgPSAnb3JhbmdlJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodFNwb3RDb2xvciA9ICdvcmFuZ2UnKSkNCg0KIyBKdW50YW5kbyB0b2RvOg0KIyBybShyYW5raW5nKQ0KDQpyYW5raW5nPC1pbm5lcl9qb2luKHNlbGVjdCh0YWJsYTEsIElEUHJvZHVjdG8sIE5vbWJyZVByb2R1Y3RvLCBDb21wcmFkb3JlcywgTW9udG9VU0QsIENhbnRpZGFkT0MsUHJvdmVlZG9yZXMpLCBncm91cF9ieSh0YWJsYTIsIElEUHJvZHVjdG8pJT4lc3VtbWFyaXNlKC4sQ01fUz1yb3VuZCgoKHN1bShDTSkvc3VtKENNK0xDK1REKSkqMTAwKSwxKSksIGJ5PSJJRFByb2R1Y3RvIikgJT4lIGlubmVyX2pvaW4oZ3JvdXBfYnkodGFibGE0LCBJRFByb2R1Y3RvKSU+JXN1bW1hcmlzZSguLE1pUHltZT1yb3VuZCgoKHN1bShNaVB5bWUpL3N1bShNaVB5bWUrR3JhbmRlKSkqMTAwKSwxKSksIGJ5PSJJRFByb2R1Y3RvIikgJT4lIGlubmVyX2pvaW4oLixzZWxlY3QodGFibGEzLCBJRFByb2R1Y3RvLCBoaGkpLCBieT0iSURQcm9kdWN0byIpICU+JSAgc2VsZWN0KElEUHJvZHVjdG8sIE5vbWJyZVByb2R1Y3RvLAlDb21wcmFkb3JlcywJTW9udG9VU0QsCUNhbnRpZGFkT0MsCVByb3ZlZWRvcmVzLCBoaGksIENNX1MsIE1pUHltZSApJT4lIGlubmVyX2pvaW4oYV8yMiwgYnk9IklEUHJvZHVjdG8iKSAlPiUgc2VsZWN0KC1JRFByb2R1Y3RvKSAlPiUgIGZpbHRlcihNb250b1VTRD49MTApICU+JSAgYXJyYW5nZSguLGRlc2MoTW9udG9VU0QsIENhbnRpZGFkT0MpKSANCg0KIyU+JSBtdXRhdGUoDQojQ01fUz1wYXN0ZTAoQ01fUywiJSIpLCBNaVB5bWU9cGFzdGUwKE1pUHltZSwiJSIpKSU+JSBmb3JtYXQoLixkZWNpbWFsLm1hcmsgPSAiLCIsIGJpZy5tYXJrID0gIi4iKSANCg0KIyBsYXMgc3BhcmtsaW5lcyBsYXMgaGljZSBhc8OtOg0KDQojIGRyb3AgdGFibGUgI2ENCiMgZHJvcCB0YWJsZSAjYg0KIyBkcm9wIHRhYmxlICNmaW5hbA0KIyANCiMgU0VMRUNUIERpbVByb2R1Y3RvLklEUHJvZHVjdG8sDQojIERpbVByb2R1Y3RvLk5vbWJyZVByb2R1Y3RvLCANCiMgRGltUnVicm8uUnVicm9OMywgDQojIERpbVJ1YnJvLlJ1YnJvTjIsIA0KIyBEaW1SdWJyby5SdWJyb04xLA0KIyBjb3VudChESVNUSU5DVCBEaW1JbnN0aXR1Y2lvbi5lbnRDb2RlKSBDb21wcmFkb3JlcywNCiMgQ0FTVChTVU0oVEhPcmRlbmVzQ29tcHJhTGluZWEuTW9udG9VU0QqMS4xOSkgQVMgSU5UKSBNb250b1VTRCwgDQojIGNvdW50KERJU1RJTkNUIFRIT3JkZW5lc0NvbXByYS5Db2RpZ29PQykgQ2FudGlkYWRPQywgDQojIGNvdW50KERJU1RJTkNUIERpbUVtcHJlc2EuZW50Q29kZSkgQVMgUHJvdmVlZG9yZXMNCiMgLCBtb250aCBhcyBtZXMNCiMgaW50byAjYQ0KIyBGUk9NICAgICBEaW1JbnN0aXR1Y2lvbiBJTk5FUiBKT0lODQojICAgICAgICAgICAgICAgICAgIERpbUNvbXByYWRvciBPTiBEaW1JbnN0aXR1Y2lvbi5lbnRDb2RlID0gRGltQ29tcHJhZG9yLmVudENvZGUgSU5ORVIgSk9JTg0KIyAgICAgICAgICAgICAgICAgICBEaW1TZWN0b3IgT04gRGltSW5zdGl0dWNpb24uSWRTZWN0b3IgPSBEaW1TZWN0b3IuSWRTZWN0b3IgSU5ORVIgSk9JTg0KIyAgICAgICAgICAgICAgICAgICBUSE9yZGVuZXNDb21wcmEgT04gRGltQ29tcHJhZG9yLklEVW5pZGFkZGVDb21wcmEgPSBUSE9yZGVuZXNDb21wcmEuSURVbmlkYWRkZUNvbXByYSBJTk5FUiBKT0lODQojICAgICAgICAgICAgICAgICAgIERpbVRpZW1wbyBPTiBUSE9yZGVuZXNDb21wcmEuSURGZWNoYUVudmlvT0MgPSBEaW1UaWVtcG8uRGF0ZUtleSBJTk5FUiBKT0lODQojICAgICAgICAgICAgICAgICAgIFRIT3JkZW5lc0NvbXByYUxpbmVhIE9OIFRIT3JkZW5lc0NvbXByYS5wb3JJRCA9IFRIT3JkZW5lc0NvbXByYUxpbmVhLnBvcklEIElOTkVSIEpPSU4NCiMgICAgICAgICAgICAgICAgICAgRGltUHJvdmVlZG9yIE9OIFRIT3JkZW5lc0NvbXByYS5JRFN1Y3Vyc2FsID0gRGltUHJvdmVlZG9yLklEU3VjdXJzYWwgSU5ORVIgSk9JTg0KIyAgICAgICAgICAgICAgICAgICBEaW1FbXByZXNhIE9OIERpbVByb3ZlZWRvci5lbnRDb2RlID0gRGltRW1wcmVzYS5lbnRDb2RlIElOTkVSIEpPSU4NCiMgICAgICAgICAgICAgICAgICAgRGltUHJvZHVjdG8gT04gVEhPcmRlbmVzQ29tcHJhTGluZWEuSURQcm9kdWN0byA9IERpbVByb2R1Y3RvLklEUHJvZHVjdG8gSU5ORVIgSk9JTg0KIyAgICAgICAgICAgICAgICAgICBEaW1SdWJybyBPTiBEaW1Qcm9kdWN0by5JZFJ1YnJvID0gRGltUnVicm8uSWRSdWJybw0KIyBXSEVSRSAgRGltVGllbXBvLlllYXI9MjAxOQ0KIyBBTkQgRGltU2VjdG9yLklkU2VjdG9yIE5PVCBJTiAoMSwzLDQsNiw4KQ0KIyBBTkQgUnVicm9OMSAhPSAnU2luIEluZm9ybWFjacOzbicgYW5kIFtPQ0V4Y2VwY2lvbmFsXSAhPTENCiMgR1JPVVAgQlkgRGltUHJvZHVjdG8uSURQcm9kdWN0bywgDQojIERpbVByb2R1Y3RvLk5vbWJyZVByb2R1Y3RvLCANCiMgRGltUnVicm8uUnVicm9OMywgDQojIERpbVJ1YnJvLlJ1YnJvTjIsIA0KIyBEaW1SdWJyby5SdWJyb04xLA0KIyBtb250aA0KIyANCiMgc2VsZWN0IG1lczIwMjAubWVzLCAjYS5JRFByb2R1Y3RvLCAjYS5Nb250b1VTRCBmcm9tICNhIHJpZ2h0IG91dGVyIGpvaW4NCiMgRXN0dWRpb3MuLm1lczIwMjAgb24NCiMgI2EuSURQcm9kdWN0bz1tZXMyMDIwLklEUHJvZHVjdG8NCiMgYW5kDQojICNhLm1lcz1tZXMyMDIwLm1lcw0KIyB3aGVyZSAtLSNhLklEUHJvZHVjdG8gaXMgbm90IG51bGwgYW5kDQojIG1lczIwMjAuSURQcm9kdWN0byBpbiAoc2VsZWN0IElEUHJvZHVjdG8gZnJvbSAjYSkNCiMgb3JkZXIgYnkgI2EuSURQcm9kdWN0byAsIG1lczIwMjAubWVzICBhc2MNCiMgDQojIA0KIyBzZWxlY3QgbWVzMjAyMC5tZXMsIG1lczIwMjAuSURQcm9kdWN0bywgI2EuTW9udG9VU0QgDQojIGludG8gRXN0dWRpb3MuLm1lczIwMjBmaW5hbCAgLS0gc2VsZWN0IGNvdW50KGRpc3RpbmN0IElEUHJvZHVjdG8pIHByb2QgZnJvbSAjZmluYWwNCiMgZnJvbSBFc3R1ZGlvcy4ubWVzMjAyMCAgbGVmdCBvdXRlciBqb2luDQojICNhIG9uDQojICNhLklEUHJvZHVjdG89bWVzMjAyMC5JRFByb2R1Y3RvDQojIGFuZA0KIyAjYS5tZXM9bWVzMjAyMC5tZXMNCiMgd2hlcmUgLS0jYS5JRFByb2R1Y3RvIGlzIG5vdCBudWxsIGFuZA0KIyBtZXMyMDIwLklEUHJvZHVjdG8gaW4gKHNlbGVjdCBJRFByb2R1Y3RvIGZyb20gI2EpDQojIG9yZGVyIGJ5IG1lczIwMjAuSURQcm9kdWN0byAsIG1lczIwMjAubWVzICBhc2MNCg0KDQpgYGANCg0KIyMgPGZvbnQgY29sb3I9IiNhZDI3MWQiPiBOb3RhczwvZm9udD4NCg0KPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+DQo8cD48c3Ryb25nPlRvZGEgbGEgaW5mb3JtYWNpw7NuIHF1ZSBzZSBwcmVzZW50YSBhcXXDrSBlcyBww7pibGljYTwvc3Ryb25nPjwvcD4NCjxwPjxzdHJvbmc+TG9zIGRhdG9zIGNvcnJlc3BvbmRlbiBhIHRyYW5zYWNjaW9uZXMgZGVsIGHDsW8gMjAxOV5bRGViaWRvIGEgbGEgaW5lcmNpYSBlbiBlbCBnYXN0bywgZXMgcmF6b25hYmxlIHN1cG9uZXIgcXVlIDIwMTkgZXMgdW4gYnVlbiBwcm9ub3N0aWNvIGRlIGxvIHF1ZSBkZWJpZXJhIGNvbXByb21ldGVyc2UgZHVyYW50ZSAyMDIwLl0gPC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5MYSBpbmZvcm1hY2nDs24gc2UgZXh0cmFlIGRpcmVjdGFtZW50ZSBkZSBsYXMgw7NyZGVuZXMgZGUgY29tcHJhIChjb21wcm9taXNvcykgZGUgd3d3Lm1lcmNhZG9wdWJsaWNvLmNsIHkgbm8gZGUgcGFnb3MgKGRldmVuZ29zKSA8L3N0cm9uZz48L3A+DQo8L2Rpdj4NCg0KIyMgPGZvbnQgY29sb3I9IiNhZDI3MWQiPkNsYXNpZmljYWNpw7NuIGRlIGxhIGluZm9ybWFjacOzbiBkZSBjb21wcmFzIHDDumJsaWNhcyAoVU5TUFNDKTwvZm9udD4NCg0KVG9kYXMgbGFzIGNvbXByYXMgc2UgZW5jdWVudHJhbiBjbGFzaWZpY2FkYXMgY29uIGxhIGhlcnJhbWllbnRhIG11bmRpYWxtZW50ZSBtw6FzIHV0aWxpemFkYSBwYXJhIGxsZXZhciBhIGNhYm8gZWwgKlNwZW5kIEFuYWx5c2lzKjogZWwgY8OzZGlnbyBkZSBiaWVuZXMgeSBzZXJ2aWNpb3MgZGUgTmFjaW9uZXMgVW5pZGFzIChVTlNQU0MpLg0KDQpFc3RlIGPDs2RpZ28gdGllbmUgY3VhdHJvIG5pdmVsZXM6DQoNCi0gU2VnbWVudG8gKGVqZW1wbG86IEFsaW1lbnRvcywgYmViaWRhcyB5IHRhYmFjbyBJRCA1MCkNCi0gRmFtaWxpYSAoZWplbXBsbzogRnJ1dGFzLCB2ZXJkdXJhcyB5IGZydXRvcyBzZWNvcyBJRCA1MDEwKQ0KLSBDbGFzZSAoZWplbXBsbzogVmVyZHVyYXMgSUQgNTAxMDE1KQ0KLSBDb21tb2RpdHkgKGVqZW1wbG86IENoYW1wacOxb25lcyBJRCA1MDEwMTU0MSkNCg0KRWwgw7psdGltbyBuaXZlbCBlbnRyZWdhIGluZm9ybWFjacOzbiBkZSB0b2RhIGxhIHRheG9ub23DrWEgKD0gNTAxMDE1NDEpLg0KDQpFbiBlc3RlIGNhc28sIGFsIGFuYWxpemFyIGluZm9ybWFjacOzbiBkZSAyMDE5IGVzdGFyZW1vcyByZXZpc2FuZG8gYHIgZm9ybWF0KG5yb3cocmFua2luZyAlPiUgZmlsdGVyKE1vbnRvVVNEPj0xMCkpLCBkZWNpbWFsLm1hcmsgPSAiLCIsIGJpZy5tYXJrID0gIi4iKWAgY29tbW9kaXRpZXMsIGNhZGEgdW5vIGRlIGxvcyBjdWFsZXMgaWRlbnRpZmljYW1vcyBwYXJhIGVzdG9zIGVmZWN0b3MgY29tbyB1biBtZXJjYWRvLg0KDQojIyA8Zm9udCBjb2xvcj0iI2FkMjcxZCI+SGVycmFtaWVudGEgZGUgc2VsZWNjacOzbjwvZm9udD4NCg0KTGEgc2lndWllbnRlIHRhYmxhIHByZXNlbnRhIGluZm9ybWFjacOzbiBkZSBHb2JpZXJubyBDZW50cmFsIChubyBpbmNsdXllIFNhbHVkXltFeGlzdGUgdW4gcGFuZWwgc2VwYXJhZG8gcGFyYSBTYWx1ZC5dKTsgcXVlZGFuIGZ1ZXJhIGRlbCBhbsOhbGlzaXM6ICBGRi5BQSwgTGVnaXNsYXRpdm8geSBqdWRpY2lhbCwgTXVuaWNpcGFsaWRhZGVzIHkgT3Ryb3MgKENHUiwgQ29uZ3Jlc28sIGVtcHJlc2FzIHDDumJsaWNhcyB5IG9yZ2FuaXNtb3MgYWRoZXJpZG9zIHZvbHVudGFyaWFtZW50ZSk7IGxvIHF1ZSBlcyBlcXVpdmFsZW50ZSBhIGByIHN1bSh0YWJsYTEkTW9udG9VU0QpICU+JSBmb3JtYXQoZGVjaW1hbC5tYXJrID0gIiwiLCBiaWcubWFyayA9ICIuIilgIFVTRF5bVVNEIHZhbG9yIG9ic2VydmFkbyBwZXLDrW9kbyBkZSByZWZlcmVuY2lhIDIwMTkuXToNCg0KPGJyPg0KDQoNCmBgYHtyIG9udWwsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpkYXRhdGFibGUoDQogIHJhbmtpbmcgLCBlc2NhcGUgPSBGLCBmaWx0ZXIgPSAndG9wJywNCiAgZXh0ZW5zaW9ucyA9ICdCdXR0b25zJywgb3B0aW9ucyA9IGxpc3QocGFnZUxlbmd0aCA9IDEwLCBhdXRvV2lkdGggPSBUUlVFLCAgICBmbkRyYXdDYWxsYmFjayA9IGh0bWx3aWRnZXRzOjpKUygnZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfScpLA0KICAgIGRvbSA9ICdCZnJ0aXAnLA0KICAgIGJ1dHRvbnMgPSANCiAgICAgIGxpc3QobGlzdCgNCiAgICAgICAgZXh0ZW5kID0gJ2NvbGxlY3Rpb24nLA0KICAgICAgICBidXR0b25zID0gYygnY3N2JywgJ2V4Y2VsJywgJ3BkZicpLA0KICAgICAgICB0ZXh0ID0gJ0Rvd25sb2FkJw0KICAgICAgKSkNCg0KICApLCByb3duYW1lcz0gRkFMU0UNCikgJT4lIA0KICBzcGtfYWRkX2RlcHMoKSAgDQogICAgICAgICAgICAgIA0KDQpgYGANCg0KRG9uZGU6DQoNCg0KLSAqKk5vbWJyZVByb2R1Y3RvKio6IGluZGljYSBlbCBub21icmUgZGVsIGNvbW1vZGl0eSAoVU5TUFNDIG5pdmVsIDQpDQotICoqQ29tcHJhZG9yZXMqKjogY2FudGlkYWQgZGUgY29tcHJhZG9yZXMgDQotICoqTW9udG9VU0QqKjogbW9udG8gYWdyZWdhZG8gZGVsIGNvbW1vZGl0eSBlbiB2YWxvciBkw7NsYXIgb2JzZXJ2YWRvIHNpbiBJVkENCi0gKipDYW50aWRhZE9DKio6IGNhbnRpZGFkIGRlIMOzcmRlbmVzIGRlIGNvbXByYSBlbiBsYSBxdWUgc2UgZW5jdWVudHJhIGVsIGNvbW1vZGl0eQ0KLSAqKlByb3ZlZWRvcmVzKio6IGNhbnRpZGFkIGRlIHByb3ZlZWRvcmVzIGRpc3RpbnRvcyBxdWUgcmVjaWJpZXJvbiBhbCBtZW5vcyB1bmEgT0MgY29uIGVsIGNvbW1vZGl0eQ0KLSAqKkNNX1MqKjogcGFydGljaXBhY2nDs24gZGUgbG9zIGNvbXZlbmlvcyBtYXJjbyBlbiBlbCBydWJybyAoYSBuaXZlbCBkZSBjb21tb2RpdHkpLCBlbiB0w6lybWlub3MgZGUgbW9udG8NCi0gKipNaVB5bWUqKjogIHBhcnRpY2lwYWNpw7NuIGRlIGxvcyBwcm92ZWVkb3JlcyBNaVB5bWUgZW4gZWwgcnVicm8gKGEgbml2ZWwgZGUgY29tbW9kaXR5KSwgZW4gdMOpcm1pbm9zIGRlIG1vbnRvCQ0KLSAqKmhoaSoqOiAqSGlyc2htYW4tSGVyZmluZGFobCBJbmRleCouIEluZGljYWRvciBkZSBwb2RlciBkZSBtZXJjYWRvIGRlIGxvcyBwcm92ZWVkb3Jlcy4gU2UgZGVmaW5lIGNvbW8gJCRISEk9XHN1bV97aT0xfV57Tn1zX3tpfV57Mn0kJA0KZG9uZGUgJHMkIGVzIGxhIHBhcnRpY2lwYWNpw7NuIGRlIG1lcmNhZG8gZGUgY2FkYSBwcm92ZWVkb3IgaS4NCi0gKipNb250b3MqKjogbXVlc3RyYSBsYSBkaXN0cmlidWNpw7NuIGRlbCBtb250byBhbnVhbCwgcG9yIG1lcy4=