
Antecedentes de la
empresa
Visión: “En 2033 seremos una de las cinco mejores
compañías de México que generan valor dentro de la cadena de suministro
de las industrias que más valoran la forma en la que se protegen y
trasladan las cosas.” (Form, 2023).
Misión: “Transformar nuestro entorno y resolver
retos industriales de nuestros clientes a través de la colaboración,
provocando nuevas oportunidades que potencian nuestro modelo de negocio,
para alcanzar nuestros ideales.” (Form, 2023).
Contexto de la
industria:
Socio Formador Form
Introducción de la Empresa
FORM es una empresa con sede principal en Nuevo León, ésta se dedica
al empaque y embalaje de autopartes específicamente de partes interiores
y eléctricas de los vehículos, las cuales es de suma importancia que no
reciban ningún tipo de daño estético en su proceso de transportación
para su ensamblaje.
FORM se centra en abastecer las necesidades de los proveedores Tier 1
(planta automotriz) y Tier 2 (proveen partes a las plantas) de la
industria automotriz, por lo que estos son sus principales clientes.
Productos o Servicios -
Propuesta de Valor
La empresa no ofrece un portafolio de productos fijos o
estandarizados para la industria automotriz. FORM busca generar
soluciones a las necesidades y problemas de sus clientes dentro de la
cadena de suministro, por medio de la innovación ingenieril en el
empaque de las autopartes.
Además, FORM ofrece un servicio de acompañamiento el cual funciona
como un soporte de comunicación en el que empleados de FORM, pueden
asistir directamente en la planta de los clientes para la entrega de los
empaques y ensamblaje hasta tener comunicación continua con la empresa
en caso de cualquier situación.
Las cosas antes mencionadas forman parte de la propuesta de valor de
la empresa, apalancando de la innovación y el servicio al cliente se
busca asegurar la calidad la cual los clientes de FORM están buscando
debido a la importancia y delicadeza que toman las autopartes interiores
y eléctricas dentro de la industria automotriz.
Aunque los productos que ofrece FORM dentro de la industria
automotriz fungen parecido a un commodity, el empaque se llega a
producir en grandes cantidades, estos no entran como tal en la
definición de commodity ya que en el caso de FORM entra una parte clave
la cual es la personalización.
Perspectivas Futuras
Actualmente FORM busca equipar con tecnología para automatizar y
desarrollar todo un ambiente de datos el cual les pueda ayudar a
agilizar procesos y dar certeza a la toma de decisiones en base a datos.
Con esto buscan poder realizar pronósticos para anticipar la demanda de
sus clientes y diversificar dentro de EUA, esto por mencionar alguno de
los ejemplos. En cuanto a temas de cultura organizacional se busca medir
sistemáticamente diferentes KPI´s.
Además de esto, se busca crear un sentido de pertenencia y lealtad de
los empleados hacia la empresa. Buscando continuar con la cultura
organizacional actual, la cual está enfocada en la horizontalidad, la
construcción de equipos y divisiones autónomas a niveles inferiores
dentro de la empresa. Esto, con el fin de permitir una comunicación más
efectiva y fluida entre departamentos.
Expansión
Actualmente FORM busca un crecimiento, desea continuar con la
industria de autopartes, por lo que su principal enfoque se encuentra en
crecer a lo largo de la línea de la industria automotriz que se
encuentra ubicada en el territorio mexicano y estadounidense.
Específicamente, busca crecer en el bajío mexicano y en San Antonio
Texas en el extranjero. Por otra parte, busca explorar otras industrias
las cuales se alineen a su misión, como lo puede ser la aeroespacial y
de equipos médicos.
Además busca expandir sus inversiones en el extranjero tomando como
opción principal a Estados Unidos. Buscando crecer a cualquier parte de
Texas debido a el costo de oportunidad que se tiene, si se busca crecer
más allá de Texas aumenta los costos de fletes y el negocio no sale con
buen margen. FORM no busca ser la empresa mas grande, se concentra en
negocios de PYME con grandes margenes de ganancia
Cultura organizacional y
Recursos Humanos
Hoy en día cuentan con 130 colaboradores dentro de la empresa, sin
embargo existe un tema de rotación de personal por diversas razones, uno
de sus enfoques es crear una cultura organizacional la cual retenga al
capital humano.
Actualmente ofrecen diversas compensaciones y beneficios para incitar
la activa participación de sus colaboradores. Se cuentan con bases de
datos enfocadas al tema de capital humano con las cuales se buscan
identificar las razones de la rotación, sin embargo aún no han logrado
ver un decremento en los porcentajes anuales de rotación.
FORM cuenta con 6 pilares principales, dentro de la empresa se vive
una actitud de honestidad y transparencia dentro de todos los procesos,
se busca cuidar detalladamente los espacios de trabajo con planes para
implementar nuevos baños en el piso.
Análisis de las áreas de la
empresa
Cargar librerias
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(stringr)
library(readr)
library(dplyr)
library(tidyr)
library(grid)
library(psych)
##
## Attaching package: 'psych'
##
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
Cargar bases de datos
#file.choose()
Ventas_1 <- read.csv("/Users/marianamagana/Desktop/Evidencia1/Ventas_1.csv")
#file.choose()
Bajas <-read.csv("/Users/marianamagana/Desktop/Evidencia1/Bajas.csv")
#file.choose()
FDI_df <- read.csv("/Users/marianamagana/Desktop/Evidencia1/FDI_Mexico.csv")
Bajas por Puesto y Genero
(2021) - Gráfico 1
Los ayudantes generales son los que cuentan mayor baja por un margén
altamente considerable, como se puede observar en la grafíca 1. Además
de esto se puede observar que de igual forma la mayoría de personas de
está posición a las que se les da de baja son mujeres.
Por lo que se podría plantear una primer hipótesis la cual es que
esto se puede deber a que la gran parte de personas que se contratan son
para el puesto de ayudante general y de sexo femenino, sin embargo
todavía no se ha realizado el análisis para comprobar la hipótesis antes
mencionada.
options(scipen = 999)
Bajas$PUESTO <- as.factor(Bajas$PUESTO)
ggplot(Bajas, aes(PUESTO)) +
geom_bar(aes(fill=GENERO)) +
theme(axis.text.x = element_text(angle = 90)) +
labs(x = "Puesto", y = "Cantidad", title = "Bajas por puesto ") +
theme(panel.background = element_rect(fill = "gray98"))

Ventas por Línea de Negocio
(2021) - Gráfico 2
Dentro de las ventas por linea de negocio, es decir retornable y
cartón. Se puede observar como la linea de negocios que liderá es la del
cartón, sin embargo se observa como las ventas de retornables y cartón
en los primeros 2 quartiles del año son altamente superiores al resto
del año.
as.Date(Ventas_1$Mes)
## [1] "0028-01-21" "0028-01-21" "0028-02-21" "0028-02-21" "0028-03-21"
## [6] "0028-03-21" "0028-04-21" "0028-04-21" "0028-05-21" "0028-05-21"
## [11] "0028-06-21" "0028-06-21" "0028-07-21" "0028-07-21" "0028-08-21"
## [16] "0028-08-21" "0028-09-21" "0028-09-21" "0028-10-21" "0028-10-21"
## [21] "0028-11-21" "0028-11-21" "0028-12-21" "0028-12-21"
col_per <- c("coral", "orange")
ggplot(Ventas_1, aes(x = Mes, y = Venta, fill = Producto)) +
geom_bar(stat = "identity") +
labs(x = "Mes", y = "Venta", title = "Ventas Mensuales por Producto") +
scale_fill_manual(values = col_per) +
theme(panel.background = element_rect(fill = "gray98") )+
theme(axis.text.x = element_text(angle = 90, hjust = 1))

FODA Cruzado
El objetivo del análisis FODA para FORM es evaluar de manera integral
sus Fortalezas, Oportunidades, Debilidades y Amenazas con el fin de
obtener una comprensión estratégica de su posición en el mercado y
proporcionar una base sólida para la toma de decisiones que potencien su
competitividad y crecimiento en la industria de empaques y
embalajes.

PESTLE
El objetivo del análisis PESTLE para FORM es examinar los factores
que impactan su operación y entorno empresarial. Esto permitirá a la
empresa comprender mejor el contexto en el que opera, anticipar posibles
cambios y ajustar su estrategia para maximizar oportunidades y mitigar
riesgos.

LS0tCnRpdGxlOiAiRW50cmVnYWJsZSAxLSBFdmlkZW5jaWEgMSIKYXV0aG9yOiAiVGVjIENvbnN1bHRpbmcgR3JvdXAiCmRhdGU6ICIyMDIzLTA4LTI1IgpvdXRwdXQ6IAogaHRtbF9kb2N1bWVudDoKICAgIHRvYzogVFJVRQogICAgdG9jX2Zsb2F0OiBUUlVFCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFCiAgICB0aGVtZTogInlldGkiCi0tLQoKIVsgXSgvVXNlcnMvbWFyaWFuYW1hZ2FuYS9EZXNrdG9wL0V2aWRlbmNpYTEvbG9nb19GT1JNLnBuZykKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqKkFudGVjZWRlbnRlcyBkZSBsYSBlbXByZXNhKioKCioqVmlzacOzbjoqKiAg4oCcRW4gMjAzMyBzZXJlbW9zIHVuYSBkZSBsYXMgY2luY28gbWVqb3JlcyBjb21wYcOxw61hcyBkZSBNw6l4aWNvIHF1ZSBnZW5lcmFuIHZhbG9yIGRlbnRybyBkZSBsYSBjYWRlbmEgZGUgc3VtaW5pc3RybyBkZSBsYXMgaW5kdXN0cmlhcyBxdWUgbcOhcyB2YWxvcmFuIGxhIGZvcm1hIGVuIGxhIHF1ZSBzZSBwcm90ZWdlbiB5IHRyYXNsYWRhbiBsYXMgY29zYXMu4oCdIChGb3JtLCAyMDIzKS4KCioqTWlzacOzbjoqKiDigJxUcmFuc2Zvcm1hciBudWVzdHJvIGVudG9ybm8geSByZXNvbHZlciByZXRvcyBpbmR1c3RyaWFsZXMgZGUgbnVlc3Ryb3MgY2xpZW50ZXMgYSB0cmF2w6lzIGRlIGxhIGNvbGFib3JhY2nDs24sIHByb3ZvY2FuZG8gbnVldmFzIG9wb3J0dW5pZGFkZXMgcXVlIHBvdGVuY2lhbiBudWVzdHJvIG1vZGVsbyBkZSBuZWdvY2lvLCBwYXJhIGFsY2FuemFyIG51ZXN0cm9zIGlkZWFsZXMu4oCdIChGb3JtLCAyMDIzKS4gCgojIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpkYXJrb3JhbmdlIj4gKipDb250ZXh0byBkZSBsYSBpbmR1c3RyaWEqKjoKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqU29jaW8gRm9ybWFkb3IgRm9ybSoKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiBJbnRyb2R1Y2Npw7NuIGRlIGxhIEVtcHJlc2EKCkZPUk0gZXMgdW5hIGVtcHJlc2EgY29uIHNlZGUgcHJpbmNpcGFsIGVuIE51ZXZvIExlw7NuLCDDqXN0YSBzZSBkZWRpY2EgYWwgZW1wYXF1ZSB5IGVtYmFsYWplIGRlIGF1dG9wYXJ0ZXMgZXNwZWPDrWZpY2FtZW50ZSBkZSBwYXJ0ZXMgaW50ZXJpb3JlcyB5IGVsw6ljdHJpY2FzIGRlIGxvcyB2ZWjDrWN1bG9zLCBsYXMgY3VhbGVzIGVzIGRlIHN1bWEgaW1wb3J0YW5jaWEgcXVlIG5vIHJlY2liYW4gbmluZ8O6biB0aXBvIGRlIGRhw7FvIGVzdMOpdGljbyBlbiBzdSBwcm9jZXNvIGRlIHRyYW5zcG9ydGFjacOzbiBwYXJhIHN1IGVuc2FtYmxhamUuIAoKRk9STSBzZSBjZW50cmEgZW4gYWJhc3RlY2VyIGxhcyBuZWNlc2lkYWRlcyBkZSBsb3MgcHJvdmVlZG9yZXMgVGllciAxIChwbGFudGEgYXV0b21vdHJpeikgeSBUaWVyIDIgKHByb3ZlZW4gcGFydGVzIGEgbGFzIHBsYW50YXMpIGRlIGxhIGluZHVzdHJpYSBhdXRvbW90cml6LCBwb3IgbG8gcXVlIGVzdG9zIHNvbiBzdXMgcHJpbmNpcGFsZXMgY2xpZW50ZXMuCgojIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpkYXJrb3JhbmdlIj4gKlByb2R1Y3RvcyBvIFNlcnZpY2lvcyAtIFByb3B1ZXN0YSBkZSBWYWxvcioKCkxhIGVtcHJlc2Egbm8gb2ZyZWNlIHVuIHBvcnRhZm9saW8gZGUgcHJvZHVjdG9zIGZpam9zIG8gZXN0YW5kYXJpemFkb3MgcGFyYSBsYSBpbmR1c3RyaWEgYXV0b21vdHJpei4gRk9STSBidXNjYSBnZW5lcmFyIHNvbHVjaW9uZXMgYSBsYXMgbmVjZXNpZGFkZXMgeSBwcm9ibGVtYXMgZGUgc3VzIGNsaWVudGVzIGRlbnRybyBkZSBsYSBjYWRlbmEgZGUgc3VtaW5pc3RybywgcG9yIG1lZGlvIGRlIGxhIGlubm92YWNpw7NuIGluZ2VuaWVyaWwgIGVuIGVsIGVtcGFxdWUgZGUgbGFzIGF1dG9wYXJ0ZXMuIAoKQWRlbcOhcywgRk9STSBvZnJlY2UgdW4gc2VydmljaW8gZGUgYWNvbXBhw7FhbWllbnRvIGVsIGN1YWwgZnVuY2lvbmEgY29tbyB1biBzb3BvcnRlIGRlIGNvbXVuaWNhY2nDs24gZW4gZWwgcXVlIGVtcGxlYWRvcyBkZSBGT1JNLCAgcHVlZGVuIGFzaXN0aXIgZGlyZWN0YW1lbnRlIGVuIGxhIHBsYW50YSBkZSBsb3MgY2xpZW50ZXMgcGFyYSBsYSBlbnRyZWdhIGRlIGxvcyBlbXBhcXVlcyB5IGVuc2FtYmxhamUgaGFzdGEgdGVuZXIgY29tdW5pY2FjacOzbiBjb250aW51YSBjb24gbGEgZW1wcmVzYSBlbiBjYXNvIGRlIGN1YWxxdWllciBzaXR1YWNpw7NuLiAKCkxhcyBjb3NhcyBhbnRlcyBtZW5jaW9uYWRhcyBmb3JtYW4gcGFydGUgZGUgbGEgcHJvcHVlc3RhIGRlIHZhbG9yIGRlIGxhIGVtcHJlc2EsIGFwYWxhbmNhbmRvIGRlIGxhIGlubm92YWNpw7NuIHkgZWwgc2VydmljaW8gYWwgY2xpZW50ZSBzZSBidXNjYSBhc2VndXJhciBsYSBjYWxpZGFkIGxhIGN1YWwgbG9zIGNsaWVudGVzIGRlIEZPUk0gZXN0w6FuIGJ1c2NhbmRvIGRlYmlkbyBhIGxhIGltcG9ydGFuY2lhIHkgZGVsaWNhZGV6YSBxdWUgdG9tYW4gbGFzIGF1dG9wYXJ0ZXMgaW50ZXJpb3JlcyB5IGVsw6ljdHJpY2FzIGRlbnRybyBkZSBsYSBpbmR1c3RyaWEgYXV0b21vdHJpei4KCkF1bnF1ZSBsb3MgcHJvZHVjdG9zIHF1ZSBvZnJlY2UgRk9STSBkZW50cm8gZGUgbGEgaW5kdXN0cmlhIGF1dG9tb3RyaXogZnVuZ2VuIHBhcmVjaWRvIGEgdW4gY29tbW9kaXR5LCBlbCBlbXBhcXVlIHNlIGxsZWdhIGEgcHJvZHVjaXIgZW4gZ3JhbmRlcyBjYW50aWRhZGVzLCBlc3RvcyBubyBlbnRyYW4gY29tbyB0YWwgZW4gbGEgZGVmaW5pY2nDs24gZGUgY29tbW9kaXR5IHlhIHF1ZSBlbiBlbCBjYXNvIGRlIEZPUk0gZW50cmEgdW5hIHBhcnRlIGNsYXZlIGxhIGN1YWwgZXMgbGEgcGVyc29uYWxpemFjacOzbi4KCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqUGVyc3BlY3RpdmFzIEZ1dHVyYXMqCgpBY3R1YWxtZW50ZSBGT1JNIGJ1c2NhIGVxdWlwYXIgY29uIHRlY25vbG9nw61hIHBhcmEgYXV0b21hdGl6YXIgeSBkZXNhcnJvbGxhciB0b2RvIHVuIGFtYmllbnRlIGRlIGRhdG9zIGVsIGN1YWwgbGVzIHB1ZWRhIGF5dWRhciBhIGFnaWxpemFyIHByb2Nlc29zIHkgZGFyIGNlcnRlemEgYSBsYSB0b21hIGRlIGRlY2lzaW9uZXMgZW4gYmFzZSBhIGRhdG9zLiBDb24gZXN0byBidXNjYW4gcG9kZXIgcmVhbGl6YXIgcHJvbsOzc3RpY29zIHBhcmEgYW50aWNpcGFyIGxhIGRlbWFuZGEgZGUgc3VzIGNsaWVudGVzIHkgZGl2ZXJzaWZpY2FyIGRlbnRybyBkZSBFVUEsIGVzdG8gcG9yIG1lbmNpb25hciBhbGd1bm8gZGUgbG9zIGVqZW1wbG9zLiAgRW4gY3VhbnRvIGEgdGVtYXMgZGUgY3VsdHVyYSBvcmdhbml6YWNpb25hbCBzZSBidXNjYSBtZWRpciBzaXN0ZW3DoXRpY2FtZW50ZSBkaWZlcmVudGVzIEtQScK0cy4gCgoKQWRlbcOhcyBkZSBlc3RvLCBzZSBidXNjYSBjcmVhciB1biBzZW50aWRvIGRlIHBlcnRlbmVuY2lhIHkgbGVhbHRhZCBkZSBsb3MgZW1wbGVhZG9zIGhhY2lhIGxhIGVtcHJlc2EuIEJ1c2NhbmRvIGNvbnRpbnVhciBjb24gbGEgY3VsdHVyYSBvcmdhbml6YWNpb25hbCBhY3R1YWwsIGxhIGN1YWwgZXN0w6EgZW5mb2NhZGEgZW4gbGEgaG9yaXpvbnRhbGlkYWQsIGxhIGNvbnN0cnVjY2nDs24gZGUgZXF1aXBvcyB5IGRpdmlzaW9uZXMgYXV0w7Nub21hcyBhIG5pdmVsZXMgaW5mZXJpb3JlcyBkZW50cm8gZGUgbGEgZW1wcmVzYS4gRXN0bywgY29uIGVsIGZpbiBkZSBwZXJtaXRpciB1bmEgY29tdW5pY2FjacOzbiBtw6FzIGVmZWN0aXZhIHkgZmx1aWRhIGVudHJlIGRlcGFydGFtZW50b3MuCiAKIyMjIDxzcGFuIHN0eWxlID0iY29sb3I6ZGFya29yYW5nZSI+ICpFeHBhbnNpw7NuKgoKQWN0dWFsbWVudGUgRk9STSBidXNjYSB1biBjcmVjaW1pZW50bywgZGVzZWEgY29udGludWFyIGNvbiBsYSBpbmR1c3RyaWEgZGUgYXV0b3BhcnRlcywgcG9yIGxvIHF1ZSBzdSBwcmluY2lwYWwgZW5mb3F1ZSBzZSBlbmN1ZW50cmEgZW4gY3JlY2VyIGEgbG8gbGFyZ28gZGUgbGEgbMOtbmVhIGRlIGxhIGluZHVzdHJpYSBhdXRvbW90cml6IHF1ZSBzZSBlbmN1ZW50cmEgdWJpY2FkYSBlbiBlbCB0ZXJyaXRvcmlvIG1leGljYW5vIHkgZXN0YWRvdW5pZGVuc2UuIEVzcGVjw61maWNhbWVudGUsIGJ1c2NhIGNyZWNlciBlbiBlbCBiYWrDrW8gbWV4aWNhbm8geSBlbiBTYW4gQW50b25pbyBUZXhhcyBlbiBlbCBleHRyYW5qZXJvLiBQb3Igb3RyYSBwYXJ0ZSwgYnVzY2EgZXhwbG9yYXIgb3RyYXMgaW5kdXN0cmlhcyBsYXMgY3VhbGVzIHNlIGFsaW5lZW4gYSBzdSBtaXNpw7NuLCBjb21vIGxvIHB1ZWRlIHNlciAgbGEgYWVyb2VzcGFjaWFsIHkgZGUgZXF1aXBvcyBtw6lkaWNvcy4gCgpBZGVtw6FzIGJ1c2NhIGV4cGFuZGlyIHN1cyBpbnZlcnNpb25lcyBlbiBlbCBleHRyYW5qZXJvIHRvbWFuZG8gY29tbyBvcGNpw7NuIHByaW5jaXBhbCBhIEVzdGFkb3MgVW5pZG9zLiBCdXNjYW5kbyBjcmVjZXIgYSBjdWFscXVpZXIgcGFydGUgZGUgVGV4YXMgZGViaWRvIGEgZWwgY29zdG8gZGUgb3BvcnR1bmlkYWQgcXVlIHNlIHRpZW5lLCBzaSBzZSBidXNjYSBjcmVjZXIgbcOhcyBhbGzDoSBkZSBUZXhhcyBhdW1lbnRhIGxvcyBjb3N0b3MgZGUgZmxldGVzIHkgZWwgbmVnb2NpbyBubyBzYWxlIGNvbiBidWVuIG1hcmdlbi4gRk9STSBubyBidXNjYSBzZXIgbGEgZW1wcmVzYSBtYXMgZ3JhbmRlLCBzZSBjb25jZW50cmEgZW4gbmVnb2Npb3MgZGUgUFlNRSBjb24gZ3JhbmRlcyBtYXJnZW5lcyBkZSBnYW5hbmNpYQoKIyMjIDxzcGFuIHN0eWxlID0iY29sb3I6ZGFya29yYW5nZSI+ICpDdWx0dXJhIG9yZ2FuaXphY2lvbmFsIHkgUmVjdXJzb3MgSHVtYW5vcyoKCkhveSBlbiBkw61hIGN1ZW50YW4gY29uIDEzMCBjb2xhYm9yYWRvcmVzIGRlbnRybyBkZSBsYSBlbXByZXNhLCBzaW4gZW1iYXJnbyBleGlzdGUgdW4gdGVtYSBkZSByb3RhY2nDs24gZGUgcGVyc29uYWwgcG9yIGRpdmVyc2FzIHJhem9uZXMsIHVubyBkZSBzdXMgZW5mb3F1ZXMgZXMgY3JlYXIgdW5hIGN1bHR1cmEgb3JnYW5pemFjaW9uYWwgbGEgY3VhbCByZXRlbmdhIGFsIGNhcGl0YWwgaHVtYW5vLiAKCkFjdHVhbG1lbnRlIG9mcmVjZW4gZGl2ZXJzYXMgY29tcGVuc2FjaW9uZXMgeSBiZW5lZmljaW9zIHBhcmEgaW5jaXRhciBsYSBhY3RpdmEgcGFydGljaXBhY2nDs24gZGUgc3VzIGNvbGFib3JhZG9yZXMuIFNlIGN1ZW50YW4gY29uIGJhc2VzIGRlIGRhdG9zIGVuZm9jYWRhcyBhbCB0ZW1hIGRlIGNhcGl0YWwgaHVtYW5vIGNvbiBsYXMgY3VhbGVzIHNlIGJ1c2NhbiBpZGVudGlmaWNhciBsYXMgcmF6b25lcyBkZSBsYSByb3RhY2nDs24sIHNpbiBlbWJhcmdvIGHDum4gbm8gaGFuIGxvZ3JhZG8gdmVyIHVuIGRlY3JlbWVudG8gZW4gbG9zIHBvcmNlbnRhamVzIGFudWFsZXMgZGUgcm90YWNpw7NuLgoKRk9STSBjdWVudGEgY29uIDYgcGlsYXJlcyBwcmluY2lwYWxlcywgZGVudHJvIGRlIGxhIGVtcHJlc2Egc2Ugdml2ZSB1bmEgYWN0aXR1ZCBkZSBob25lc3RpZGFkIHkgdHJhbnNwYXJlbmNpYSBkZW50cm8gZGUgdG9kb3MgbG9zIHByb2Nlc29zLCBzZSBidXNjYSBjdWlkYXIgZGV0YWxsYWRhbWVudGUgbG9zIGVzcGFjaW9zIGRlIHRyYWJham8gY29uIHBsYW5lcyBwYXJhIGltcGxlbWVudGFyIG51ZXZvcyBiYcOxb3MgZW4gZWwgcGlzby4KCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqKkFuw6FsaXNpcyBkZSBsYXMgw6FyZWFzIGRlIGxhIGVtcHJlc2EqKgoKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqQ2FyZ2FyIGxpYnJlcmlhcyoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoc3RyaW5ncikKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWR5cikKbGlicmFyeShncmlkKQpsaWJyYXJ5KHBzeWNoKQpgYGAKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqQ2FyZ2FyIGJhc2VzIGRlIGRhdG9zKgpgYGB7cn0KCiNmaWxlLmNob29zZSgpClZlbnRhc18xIDwtIHJlYWQuY3N2KCIvVXNlcnMvbWFyaWFuYW1hZ2FuYS9EZXNrdG9wL0V2aWRlbmNpYTEvVmVudGFzXzEuY3N2IikKCiNmaWxlLmNob29zZSgpCkJhamFzIDwtcmVhZC5jc3YoIi9Vc2Vycy9tYXJpYW5hbWFnYW5hL0Rlc2t0b3AvRXZpZGVuY2lhMS9CYWphcy5jc3YiKQoKI2ZpbGUuY2hvb3NlKCkKRkRJX2RmIDwtIHJlYWQuY3N2KCIvVXNlcnMvbWFyaWFuYW1hZ2FuYS9EZXNrdG9wL0V2aWRlbmNpYTEvRkRJX01leGljby5jc3YiKQoKCmBgYAoKCgojIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpkYXJrb3JhbmdlIj4gKkJhamFzIHBvciBQdWVzdG8geSBHZW5lcm8gKDIwMjEpIC0gR3LDoWZpY28gMSoKTG9zIGF5dWRhbnRlcyBnZW5lcmFsZXMgc29uIGxvcyBxdWUgY3VlbnRhbiBtYXlvciBiYWphIHBvciB1biBtYXJnw6luIGFsdGFtZW50ZSBjb25zaWRlcmFibGUsIGNvbW8gc2UgcHVlZGUgb2JzZXJ2YXIgZW4gbGEgZ3JhZsOtY2EgMS4gQWRlbcOhcyBkZSBlc3RvIHNlIHB1ZWRlIG9ic2VydmFyIHF1ZSBkZSBpZ3VhbCBmb3JtYSBsYSBtYXlvcsOtYSBkZSBwZXJzb25hcyBkZSBlc3TDoSBwb3NpY2nDs24gYSBsYXMgcXVlIHNlIGxlcyBkYSBkZSBiYWphIHNvbiBtdWplcmVzLiAKClBvciBsbyBxdWUgc2UgcG9kcsOtYSBwbGFudGVhciB1bmEgcHJpbWVyIGhpcMOzdGVzaXMgbGEgY3VhbCBlcyBxdWUgZXN0byBzZSBwdWVkZSBkZWJlciBhIHF1ZSBsYSBncmFuIHBhcnRlIGRlIHBlcnNvbmFzIHF1ZSBzZSBjb250cmF0YW4gc29uIHBhcmEgZWwgcHVlc3RvIGRlIGF5dWRhbnRlIGdlbmVyYWwgeSBkZSBzZXhvIGZlbWVuaW5vLCBzaW4gZW1iYXJnbyB0b2RhdsOtYSBubyBzZSBoYSByZWFsaXphZG8gZWwgYW7DoWxpc2lzIHBhcmEgY29tcHJvYmFyIGxhIGhpcMOzdGVzaXMgYW50ZXMgbWVuY2lvbmFkYS4gCgpgYGB7cn0Kb3B0aW9ucyhzY2lwZW4gPSA5OTkpIApCYWphcyRQVUVTVE8gPC0gYXMuZmFjdG9yKEJhamFzJFBVRVNUTykKCmdncGxvdChCYWphcywgYWVzKFBVRVNUTykpICsKICBnZW9tX2JhcihhZXMoZmlsbD1HRU5FUk8pKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpICsKICBsYWJzKHggPSAiUHVlc3RvIiwgeSA9ICJDYW50aWRhZCIsIHRpdGxlID0gIkJhamFzIHBvciBwdWVzdG8gIikgKwogIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJncmF5OTgiKSkKYGBgCgojIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpkYXJrb3JhbmdlIj4gKlZlbnRhcyBwb3IgTMOtbmVhIGRlIE5lZ29jaW8gKDIwMjEpIC0gR3LDoWZpY28gMioKRGVudHJvIGRlIGxhcyB2ZW50YXMgcG9yIGxpbmVhIGRlIG5lZ29jaW8sIGVzIGRlY2lyIHJldG9ybmFibGUgeSBjYXJ0w7NuLiBTZSBwdWVkZSBvYnNlcnZhciBjb21vIGxhIGxpbmVhIGRlIG5lZ29jaW9zIHF1ZSBsaWRlcsOhIGVzIGxhIGRlbCBjYXJ0w7NuLCBzaW4gZW1iYXJnbyBzZSBvYnNlcnZhIGNvbW8gbGFzIHZlbnRhcyBkZSByZXRvcm5hYmxlcyB5IGNhcnTDs24gZW4gbG9zIHByaW1lcm9zIDIgcXVhcnRpbGVzIGRlbCBhw7FvIHNvbiBhbHRhbWVudGUgc3VwZXJpb3JlcyBhbCByZXN0byBkZWwgYcOxby4gCgpgYGB7cn0KYXMuRGF0ZShWZW50YXNfMSRNZXMpCgpjb2xfcGVyIDwtIGMoImNvcmFsIiwgIm9yYW5nZSIpCgpnZ3Bsb3QoVmVudGFzXzEsIGFlcyh4ID0gTWVzLCB5ID0gVmVudGEsIGZpbGwgPSBQcm9kdWN0bykpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKwogIGxhYnMoeCA9ICJNZXMiLCB5ID0gIlZlbnRhIiwgdGl0bGUgPSAiVmVudGFzIE1lbnN1YWxlcyBwb3IgUHJvZHVjdG8iKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29sX3BlcikgKyAKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiZ3JheTk4IikgKSsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKQpgYGAKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqSW52ZXJzacOzbiBFeHRyYW5qZXJhIERpcmVjdGEgYSB0cmF2w6lzIGRlIGxvcyBBw7FvcyAtIEdyYWbDrWNhIDMqCkxhIEludmVyc2nDs24gRXh0cmFuamVyYSAgRGlyZWN0YSBlbiBlbCBtaXNtbyBhw7FvICgyMDIxKSwgdHV2byBmdWVydGVzIGFmZWN0YWNpb25lcyBkZWJpZG8gYWwgQ09WSUQtMTksIHBvciBsbyBxdWUgcG9kcsOtYSBzZXIgdW5hIGRlIGxhcyByYXpvbmVzIHBvciBsYXMgY3VhbGVzIGVuIGxhIEdyYWbDrWNhIDIgbGFzIHZlbnRhcyBkZSBsb3MgdWx0w61tb3MgMiBjdWFydGlsZXMgZGVsIGHDsW8gaGF5YW4gY2HDrWRvIGRlIG1hbmVyYSBjb25zaWRlcmFibGUgYSBjb21wYXJhY2nDs24gZGVsIGluaWNpbyBkZWwgYcOxby4gCgpgYGB7cn0KZGZfRkRJID0gRkRJX2RmCgojU2VwYXJhciBDb2x1bW5hcwpkZl9GREkgPC0gc2VwYXJhdGUoZGZfRkRJLCBRdWFydGlsLCBpbnRvID0gYygiUXVhcnRpbCIsICJBw7FvIiksIHNlcCA9ICIgIikKCiNGREkgc3VtYWRvIHBvciBBw7FvCmHDsW9fc3VtIDwtIGRmX0ZESSAlPiUgZ3JvdXBfYnkoQcOxbykgJT4lIHN1bW1hcml6ZShzdW1hPXN1bShNaWwuTWlsbG9uZXMuZGUuRG9sYXJlcykpCgphw7FvX3N1bSRBw7FvIDwtIGFzLm51bWVyaWMoYcOxb19zdW0kQcOxbykKCmdyYWZpY29fYcOxbyA9IGdncGxvdChhw7FvX3N1bSwgYWVzKHggPSBBw7FvLCB5ID0gc3VtYSkpICsKICBnZW9tX2xpbmUoIGNvbG9yID0gIiNGNDZDMjIiKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICIjRjQ2QzIyIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzdW1hKSwgaGp1c3QgPSAtMC4yLCB2anVzdCA9IDAuNSwgY29sb3IgPSAiIzUwNTA1MCIsIHNpemUgPSA0KSArICAKICBsYWJzKHRpdGxlID0gIkludmVyc2nDs24gRXh0cmFuamVyYSBEaXJlY3RhIHBvciBBw7FvIixzdWJ0aXRsZSA9ICJNaWwgTWlsbG9uZXMgZGUgRMOzbGFyZXMiLCB4ID0gIkHDsW8iLCB5ID0gIkludmVyc2nDs24iLCBjYXB0aW9uID0gIkZ1ZW50ZTogSU5FR0kiKSArIAogIHRoZW1lX21pbmltYWwoKSArIAogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSAiYm9sZCIsIGNvbG9yID0gIiM1MDUwNTAiKSwgcGFuZWwuZ3JpZC5tYWpvciA9ICAgICAgZWxlbWVudF9ibGFuaygpLCBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gLjUsIHNpemUgPSA3KSkgCgpncmFmaWNvX2HDsW8gKyBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gYcOxb19zdW0kQcOxbykKYGBgCgoKIyMjIDxzcGFuIHN0eWxlID0iY29sb3I6ZGFya29yYW5nZSI+ICoqRk9EQSBDcnV6YWRvKioKRWwgb2JqZXRpdm8gZGVsIGFuw6FsaXNpcyBGT0RBIHBhcmEgRk9STSBlcyBldmFsdWFyIGRlIG1hbmVyYSBpbnRlZ3JhbCBzdXMgRm9ydGFsZXphcywgT3BvcnR1bmlkYWRlcywgRGViaWxpZGFkZXMgeSBBbWVuYXphcyBjb24gZWwgZmluIGRlIG9idGVuZXIgdW5hIGNvbXByZW5zacOzbiBlc3RyYXTDqWdpY2EgZGUgc3UgcG9zaWNpw7NuIGVuIGVsIG1lcmNhZG8geSBwcm9wb3JjaW9uYXIgdW5hIGJhc2Ugc8OzbGlkYSBwYXJhIGxhIHRvbWEgZGUgZGVjaXNpb25lcyBxdWUgcG90ZW5jaWVuIHN1IGNvbXBldGl0aXZpZGFkIHkgY3JlY2ltaWVudG8gZW4gbGEgaW5kdXN0cmlhIGRlIGVtcGFxdWVzIHkgZW1iYWxhamVzLgoKIVtdKC9Vc2Vycy9tYXJpYW5hbWFnYW5hL0Rlc2t0b3AvRXZpZGVuY2lhMS8xLnBuZykKCiMjIyA8c3BhbiBzdHlsZSA9ImNvbG9yOmRhcmtvcmFuZ2UiPiAqKlBFU1RMRSoqCkVsIG9iamV0aXZvIGRlbCBhbsOhbGlzaXMgUEVTVExFIHBhcmEgRk9STSBlcyBleGFtaW5hciBsb3MgZmFjdG9yZXMgcXVlIGltcGFjdGFuIHN1IG9wZXJhY2nDs24geSBlbnRvcm5vIGVtcHJlc2FyaWFsLiBFc3RvIHBlcm1pdGlyw6EgYSBsYSBlbXByZXNhIGNvbXByZW5kZXIgbWVqb3IgZWwgY29udGV4dG8gZW4gZWwgcXVlIG9wZXJhLCBhbnRpY2lwYXIgcG9zaWJsZXMgY2FtYmlvcyB5IGFqdXN0YXIgc3UgZXN0cmF0ZWdpYSBwYXJhIG1heGltaXphciBvcG9ydHVuaWRhZGVzIHkgbWl0aWdhciByaWVzZ29zLgoKIVsgXSgvVXNlcnMvbWFyaWFuYW1hZ2FuYS9EZXNrdG9wL0V2aWRlbmNpYTEvUEVTVExFMS5wbmcpCiFbIF0oL1VzZXJzL21hcmlhbmFtYWdhbmEvRGVza3RvcC9FdmlkZW5jaWExL1BFU1RMRTIucG5nKQoK