Consultor SEO

Consultor SEO en México

Diseñamos una estrategia SEO, GEO y AEO para que su marca aparezca en Google y en las respuestas de IA (ChatGPT, Gemini y Claude), con leads de mayor calidad.

Un consultor SEO audita tu sitio, define qué búsquedas debe ganar tu negocio y lo convierte en un plan con prioridades: qué corregir, qué publicar y cómo medirlo en prospectos, no solo en visitas. Eso es lo que hacemos en JG | SCALE para empresas B2B en México: auditoría técnica y de contenido, estrategia de palabras clave, ejecución en conjunto y medición con Search Console y tu CRM.

LO QUE FRENA TU VISIBILIDAD

Si tu sitio no aparece, tampoco te encuentran los clientes.

01 · Tu competencia aparece primero

Para las búsquedas que importan a tu negocio, otras empresas ocupan los primeros resultados y reciben las visitas y las solicitudes.

02 · Tienes contenido, pero no genera prospectos

Publicas blogs y páginas sin una estrategia de palabras clave ni de enlaces internos, y el tráfico no se convierte en contactos.

03 · No apareces en las respuestas de IA

Cada vez más personas preguntan a ChatGPT, Gemini o Claude. Si tu contenido no es citable ni está estructurado, tu marca queda fuera de esas respuestas.

04 · No sabes qué está funcionando

Sin Search Console ni un tablero conectado a tu CRM, es difícil saber qué trabajo del SEO trae oportunidades reales.

Qué hace un consultor SEO

Funciones clave

01

Arquitectura web

Analizamos el rendimiento de su sitio y sus áreas de mejora.

02

Auditoría SEO y WPO

Revisamos su presencia, velocidad y estructura técnica.

03

Estrategia de posicionamiento

Definimos keywords, contenido y prioridades según su negocio.

Pilares

Por qué nuestra estrategia es distinta

SEO On Page

Enlaces internos, datos estructurados, optimización de carga, títulos, descriptions y keywords.

Contenido y autoridad

Blog, análisis de pain points y long tail, distribución de contenido y crecimiento de autoridad.

Visibilidad en IA (AEO y ARD)

Contenido citable, FAQs con datos estructurados y descubrimiento agéntico (Agentic Resource Discovery).

Cómo trabajamos

De la auditoría a los leads

01

Auditoría

Punto de partida técnico y de contenido.

02

Estrategia

Prioridades y plan de ejecución.

03

Ejecución en conjunto

Trabajamos con su equipo.

04

Medición

Search Console y dashboard de transparencia.

¿Necesitas un sitio nuevo o rediseñar el actual? Conoce nuestra consultoría de diseño web B2B: investigamos a tu comprador y a tu competencia antes de diseñar un sitio hecho desde cero.

ENTREGABLES

Qué recibes con la consultoría SEO.

Entregable Qué incluye
01 · Auditoría técnica y de contenido Diagnóstico de indexación, velocidad, estructura, enlaces internos y contenido, con prioridades claras.
02 · Plan de palabras clave y contenido Palabras clave por intención de búsqueda, mapa de contenidos y calendario de ejecución.
03 · Optimización on page y datos estructurados Títulos, descriptions, encabezados, enlaces internos y datos estructurados aplicados a tus páginas clave.
04 · Medición y transparencia Reportes con Search Console y tu CRM: posiciones, clics, impresiones y prospectos calificados.

¿Para quién es esta consultoría?

Para empresas B2B en México, con o sin equipo de marketing propio.

Si cuentas con equipo interno, el trabajo se plantea en conjunto con tu equipo. Antes de empezar conviene aclarar quién define cada decisión y quién ejecuta cada cambio.

Si no cuentas con equipo interno, conviene aclarar en la sesión de descubrimiento qué partes de la ejecución cubre la consultoría y cuáles quedan de tu lado.

En ambos casos, quién implementa cada cosa debe quedar claro antes de empezar. Si estás comparando formas de contratar, lee la guía: contratar consultor SEO freelance en México.

Para profundizar, lee SEO, GEO y AEO en 2026 para empresas B2B. Si buscas empezar con una revisión general de tu estrategia, la consultoría de marketing se entrega en 10 días hábiles y la inversión se define en una sesión de descubrimiento.

PRESENCIA Y LIDERAZGO EN MEDIOS

Logotipo de TV Azteca
Logotipo de adn40
Logotipo de la revista Dinero & Negocios
Logotipo de Canal 77, Cadena Trendy
Logotipo de la revista Con Sentido
Logotipo de la Cámara de Diputados, LXV Legislatura
Logotipo de Online Media

Preguntas frecuentes

Consultoría SEO en México

Diseña la estrategia para que su sitio aparezca donde sus clientes buscan: auditoría técnica, arquitectura web, contenido y medición. Hoy incluye también visibilidad en respuestas de IA (GEO y AEO).
Con Search Console y su CRM: posiciones, clics, impresiones y, sobre todo, leads calificados y oportunidades generadas. Lo vemos en un dashboard de transparencia.
Sí. Trabajamos SEO local y para Ciudad de México dentro de la misma estrategia, según donde estén sus clientes.
Depende de la competencia, del estado actual del sitio y de la ejecución. Lo definimos en el diagnóstico, con prioridades claras.
Depende del alcance. Lo definimos después de un diagnóstico, con entregables claros.

LOS DOLORES DE QUIEN INVIERTE EN SEO

Seis razones por las que el SEO no está dando resultados.

01 · Llevas meses publicando y no ves visitas

Sin una estrategia de palabras clave y de intención de búsqueda, el contenido compite con temas que tu cliente no busca. Definimos primero qué quiere encontrar tu comprador.

02 · Tu proveedor reporta posiciones, pero no prospectos

Las posiciones no pagan las cuentas. Medimos qué páginas traen contactos y qué búsquedas llevan a tus servicios.

03 · Tu sitio tiene problemas técnicos que Google nota

Indexación, velocidad, enlaces rotos, contenido duplicado o páginas sin título. Los ordenamos por impacto para corregir primero lo que más pesa.

04 · Tus páginas de servicio no responden preguntas reales

Un buen posicionamiento combina páginas de servicio claras con contenido que resuelve dudas del comprador antes de contactarte.

05 · No sabes si conviene SEO, Ads o ambos

El SEO acumula resultados con el tiempo y los anuncios dan velocidad. Revisamos tu ciclo de venta y tu presupuesto para decidir la mezcla.

06 · Las respuestas de IA no mencionan tu empresa

Buscadores y asistentes de IA citan fuentes claras y bien estructuradas. Trabajamos contenido, datos estructurados y enlaces internos para que tu empresa sea fácil de entender.

Preguntas relacionadas sobre SEO, GEO y SEO local

Respuestas cortas a dudas frecuentes de empresas B2B sobre posicionamiento, IA y búsqueda local.

CÓMO EMPEZAR

Cómo solicitar tu diagnóstico

01

Escríbenos

Compártenos la dirección de tu sitio web y qué quieres lograr. Puedes escribirnos por WhatsApp o desde el formulario de contacto.

02

Sesión de descubrimiento

Revisamos tu sitio, tus objetivos y tu ciclo de venta para definir juntos el alcance del trabajo.

03

Diagnóstico inicial

Recibes un diagnóstico claro con prioridades y un plan para ganar visibilidad en Google y en la IA.

¿Listo para aparecer donde lo buscan?

Reciba un diagnóstico claro y un plan para ganar visibilidad en Google y en la IA.

Nuestras oficinas: Av. Insurgentes Sur 601, Col. Nápoles, Benito Juárez, 03810 Ciudad de México.

PHN0eWxlPmJvZHkucGFnZS1pZC0zOTM1ICNtYWlue2JhY2tncm91bmQ6I2ZmZn0KYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi10aXRsZSBoMSxib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLXRpdGxlIGgyLGJvZHkucGFnZS1pZC0zOTM1IC5mdXNpb24tdGl0bGUgaDMsYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi10aXRsZSBoNHtmb250LWZhbWlseTpNb250c2VycmF0LHNhbnMtc2VyaWYhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjgwMCFpbXBvcnRhbnQ7Y29sb3I6IzBGMTcyQSFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMmVtIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjEyIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi10aXRsZSBoMXtmb250LXNpemU6Y2xhbXAoMzRweCw1dncsNjBweCkhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLXRpdGxlIGgye2ZvbnQtc2l6ZTpjbGFtcCgyOHB4LDMuNnZ3LDQ0cHgpIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi10aXRsZSBoMyxib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLXRpdGxlIGg0e2ZvbnQtc2l6ZTpjbGFtcCgyMHB4LDIuNHZ3LDI2cHgpIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1ne2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCM0RjQ2RTUsIzIyRDNFRSk7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDtiYWNrZ3JvdW5kLWNsaXA6dGV4dDtjb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudH0KYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi10ZXh0LGJvZHkucGFnZS1pZC0zOTM1IC5mdXNpb24tdGV4dCBwLGJvZHkucGFnZS1pZC0zOTM1IC5mdXNpb24tdGV4dCBsaXtmb250LWZhbWlseTpJbnRlcixzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXdlaWdodDozMDAhaW1wb3J0YW50O2NvbG9yOiM0NzU1NjkhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNjUhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLXRleHQgcHtmb250LXNpemU6Y2xhbXAoMTZweCwxLjV2dywxOXB4KSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24taGVyb3tiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCg5MDBweCA0MjBweCBhdCA1MCUgMCwjRUFFQkZEIDAscmdiYSgyNTUsMjU1LDI1NSwwKSA3MCUpLCNmZmYhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KDkwMHB4IDQyMHB4IGF0IDUwJSAwLCNFQUVCRkQgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDcwJSkhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLWhlcm8gLmZ1c2lvbi10ZXh0LTIgcHtmb250LXNpemU6Y2xhbXAoMThweCwydncsMjRweCkhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24taGVybyAuZnVzaW9uLXRleHQtMXt0ZXh0LWFsaWduOmNlbnRlcn0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1oZXJvIC5mdXNpb24tdGV4dC0xIHB7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjAgMCAxOHB4IWltcG9ydGFudDtwYWRkaW5nOjdweCAxNnB4O2JvcmRlcjoxcHggc29saWQgI0Q2REFGNTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNEY0NkU1IWltcG9ydGFudDtmb250OjYwMCAxMnB4IEludGVyLHNhbnMtc2VyaWYhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1he2JhY2tncm91bmQ6I0YzRjZGQyFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1ie2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1hLGJvZHkucGFnZS1pZC0zOTM1IC5qZ24tYixib2R5LnBhZ2UtaWQtMzkzNSAuamduLWhlcm97cGFkZGluZy10b3A6Y2xhbXAoNDhweCw3dncsOTZweCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOmNsYW1wKDQ4cHgsN3Z3LDk2cHgpIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1jYXJkPi5mdXNpb24tY29sdW1uLXdyYXBwZXIsYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1jYXJkLmZ1c2lvbi1jb2x1bW4td3JhcHBlcntiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgI0U1RTlGNSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoyNHB4IWltcG9ydGFudDtib3gtc2hhZG93OjAgMThweCA0MHB4IC0yMnB4IHJnYmEoNzksNzAsMjI5LC4zNSkhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLWNhcmQgLmZ1c2lvbi10ZXh0IHAsYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1jYXJkIC5mdXNpb24tdGV4dCBsaXtmb250LXNpemU6MTZweCFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5mdXNpb24tZnVsbHdpZHRoOm5vdCguamduLXNraXApIC5mdXNpb24tYnV0dG9ue2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjNEY0NkU1LCM2MzY2RjEpIWltcG9ydGFudDtjb2xvcjojZmZmIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czo5OTlweCFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6SW50ZXIsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NTAwIWltcG9ydGFudDtwYWRkaW5nOjE2cHggMzBweCFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDE0cHggMzBweCAtMTRweCByZ2JhKDc5LDcwLDIyOSwuNykhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLWltYWdlZnJhbWUgaW1ne2JvcmRlci1yYWRpdXM6MjBweH0KYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi1hY2NvcmRpYW4gLmZ1c2lvbi1wYW5lbCxib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLWFjY29yZGlhbiAucGFuZWx7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICNFNUU5RjUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MjBweCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxMnB4IWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDEycHggMzBweCAtMjRweCByZ2JhKDc5LDcwLDIyOSwuMzUpfQpib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLWFjY29yZGlhbiAucGFuZWwtdGl0bGUgYSxib2R5LnBhZ2UtaWQtMzkzNSAuZnVzaW9uLWFjY29yZGlhbiAuZnVzaW9uLXRvZ2dsZS1oZWFkaW5ne2ZvbnQtZmFtaWx5Ok1vbnRzZXJyYXQsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtmb250LXNpemU6MThweCFpbXBvcnRhbnQ7Y29sb3I6IzBGMTcyQSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5mdXNpb24tYWNjb3JkaWFuIC5mYS1mdXNpb24tYm94LGJvZHkucGFnZS1pZC0zOTM1IC5mdXNpb24tYWNjb3JkaWFuIC5mdXNpb24tdG9nZ2xlLWljb24td3JhcHBlciBpe2NvbG9yOiM0RjQ2RTUhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IHNwYW5bc3R5bGUqPSJmNDVjMjAiXSxib2R5LnBhZ2UtaWQtMzkzNSBzcGFuW3N0eWxlKj0iRjQ1QzIwIl0sYm9keS5wYWdlLWlkLTM5MzUgW2NsYXNzKj0iZmEtcGx1cyJde2NvbG9yOiM0RjQ2RTUhaW1wb3J0YW50fQpAbWVkaWEobWF4LXdpZHRoOjgwMHB4KXtib2R5LnBhZ2UtaWQtMzkzNSAuamduLWNhcmR7bWFyZ2luLWJvdHRvbToxOHB4IWltcG9ydGFudH19Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1oZXJve3BhZGRpbmctdG9wOmNsYW1wKDQwcHgsNnZ3LDgwcHgpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTpjbGFtcCg0MHB4LDZ2dyw4MHB4KSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24taGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI0VFRjBGRiAwLCNFQ0ZCRkYgMTAwJSkhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjRUVGMEZGIDAsI0VDRkJGRiAxMDAlKSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24taGVybyAuZnVzaW9uLXRpdGxlLGJvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24taGVybyAuZnVzaW9uLXRleHQsYm9keS5wYWdlLWlkLTM5MzUuamd2LTIgLmpnbi1oZXJvIC5mdXNpb24tdGV4dC0xLGJvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24taGVybyAuZnVzaW9uLXRpdGxlIGgxe3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24taGVybyAuZnVzaW9uLWZ1bGx3aWR0aC1jb2x1bW4sYm9keS5wYWdlLWlkLTM5MzUuamd2LTIgLmpnbi1oZXJvIC5mdXNpb24tY29sdW1uLXdyYXBwZXJ7bWF4LXdpZHRoOjkwMHB4fQpib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMiAuamduLWF7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUuamd2LTIgLmpnbi1ie2JhY2tncm91bmQ6I0YzRjZGQyFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24tY2FyZD4uZnVzaW9uLWNvbHVtbi13cmFwcGVye2JvcmRlcjowIWltcG9ydGFudDtib3JkZXItdG9wOjVweCBzb2xpZCAjNEY0NkU1IWltcG9ydGFudDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCM0RjQ2RTUsIzIyRDNFRSkgMSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czowIDAgMjRweCAyNHB4IWltcG9ydGFudDtib3gtc2hhZG93OjAgMThweCA0MHB4IC0yNnB4IHJnYmEoMTUsMjMsNDIsLjM1KSFpbXBvcnRhbnR9CkBtZWRpYShtaW4td2lkdGg6ODAxcHgpe2JvZHkucGFnZS1pZC0zOTM1Lmpndi0yIC5qZ24taW1nPi5mdXNpb24tYnVpbGRlci1yb3c+LmZ1c2lvbi1yb3csYm9keS5wYWdlLWlkLTM5MzUuamd2LTIgLmpnbi1pbWcgLmZ1c2lvbi1yb3c6Zmlyc3QtY2hpbGR7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9fQpib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMyAuamduLWhlcm97YmFja2dyb3VuZDojRjNGNkZDIWltcG9ydGFudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmUhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMyAuamduLWhlcm86bm90KC5qZ24tZWIyKTpub3QoLmpnbi1zb2xvKSAuZnVzaW9uLXRleHQtMSBwe2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCM0RjQ2RTUsIzIyRDNFRSk7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Ym9yZGVyOjB9CmJvZHkucGFnZS1pZC0zOTM1Lmpndi0zIC5qZ24tYSxib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMyAuamduLWJ7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUuamd2LTMgLmZ1c2lvbi10aXRsZSBoMjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7d2lkdGg6NjRweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NXB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCM0RjQ2RTUsIzIyRDNFRSk7bWFyZ2luLXRvcDoxNHB4fQpib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMyAuamduLWNhcmQ+LmZ1c2lvbi1jb2x1bW4td3JhcHBlcntiYWNrZ3JvdW5kOiNGM0Y2RkMhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MjRweCFpbXBvcnRhbnR9CkBtZWRpYShtaW4td2lkdGg6ODAxcHgpe2JvZHkucGFnZS1pZC0zOTM1Lmpndi0zIC5qZ24taW1nPi5mdXNpb24tYnVpbGRlci1yb3c+LmZ1c2lvbi1yb3d7ZmxleC1kaXJlY3Rpb246cm93fX0KQG1lZGlhKG1heC13aWR0aDo4MDBweCl7Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1oZXJve3BhZGRpbmctdG9wOjM2cHghaW1wb3J0YW50fX0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi10ZXh0LTF7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi10ZXh0LTEgcHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7Zm9udDozMDAgY2xhbXAoMThweCwydncsMjJweCkvMS41NSBJbnRlcixzYW5zLXNlcmlmIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzowIWltcG9ydGFudDt0ZXh0LXRyYW5zZm9ybTpub25lIWltcG9ydGFudDtjb2xvcjojNDc1NTY5IWltcG9ydGFudDttYXJnaW46MCAwIDI0cHghaW1wb3J0YW50O21heC13aWR0aDo3NjBweH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi10aXRsZS0xe3RleHQtYWxpZ246bGVmdH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi10aXRsZS0xIGgxLGJvZHkucGFnZS1pZC0zOTM1IC5qZ24tZWIyIC5mdXNpb24tdGl0bGUtMSBoMixib2R5LnBhZ2UtaWQtMzkzNSAuamduLWViMiAuZnVzaW9uLXRpdGxlLTEgaDMsYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi10aXRsZS0xIGg0LGJvZHkucGFnZS1pZC0zOTM1IC5qZ24tZWIyIC5mdXNpb24tdGl0bGUtMSBwe2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudDtwYWRkaW5nOjdweCAxNnB4IWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICNENkRBRjUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6OTk5cHghaW1wb3J0YW50O2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7Y29sb3I6IzRGNDZFNSFpbXBvcnRhbnQ7Zm9udDo2MDAgMTJweCBJbnRlcixzYW5zLXNlcmlmIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMTRlbSFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlIWltcG9ydGFudDttYXJnaW46MCAwIDE4cHghaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLWViMiAuZnVzaW9uLXRpdGxlIGgxLGJvZHkucGFnZS1pZC0zOTM1IC5qZ24tZWIyIC5mdXNpb24tdGl0bGUtMiBoMSxib2R5LnBhZ2UtaWQtMzkzNSAuamduLWViMiAuZnVzaW9uLXRpdGxlLTIgaDJ7Zm9udC1zaXplOmNsYW1wKDMycHgsNC40dncsNTRweCkhaW1wb3J0YW50O21heC13aWR0aDo5MjBweH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi10ZXh0IHAsYm9keS5wYWdlLWlkLTM5MzUgLmZ1c2lvbi1mdWxsd2lkdGg6bm90KC5qZ24taGVybykgLmZ1c2lvbi10ZXh0IHB7bWF4LXdpZHRoOjgyMHB4fQpib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMyAuamduLWViMiAuZnVzaW9uLXRpdGxlLTEgaDEsYm9keS5wYWdlLWlkLTM5MzUuamd2LTMgLmpnbi1lYjIgLmZ1c2lvbi10aXRsZS0xIGgyLGJvZHkucGFnZS1pZC0zOTM1Lmpndi0zIC5qZ24tZWIyIC5mdXNpb24tdGl0bGUtMSBoMyxib2R5LnBhZ2UtaWQtMzkzNS5qZ3YtMyAuamduLWViMiAuZnVzaW9uLXRpdGxlLTEgaDR7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzRGNDZFNSwjMjJEM0VFKSFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLWViMiAuZnVzaW9uLXRleHQtMSBwICp7Y29sb3I6IzQ3NTU2OSFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IzQ3NTU2OSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24tZWIyIC5mdXNpb24tYnV0dG9uLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50O21hcmdpbjowIDEycHggMTJweCAwIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1lYjIgLmZ1c2lvbi1idXR0b257ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50O21hcmdpbjowIDEycHggMTJweCAwIWltcG9ydGFudH0KQG1lZGlhKG1heC13aWR0aDo4MDBweCl7Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1za2lwe2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lIWltcG9ydGFudDtwYWRkaW5nOjhweCAxOHB4IWltcG9ydGFudDtib3gtc2hhZG93OjAgNnB4IDIwcHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMzUpIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1za2lwIC5mdXNpb24tYnVpbGRlci1yb3csYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1za2lwIC5mdXNpb24tcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24tc2tpcCAuZnVzaW9uLWxheW91dC1jb2x1bW57d2lkdGg6YXV0byFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O2ZsZXg6MCAxIGF1dG8haW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLXNraXAgLmZ1c2lvbi1sYXlvdXQtY29sdW1uIC5mdXNpb24tY29sdW1uLXdyYXBwZXJ7cGFkZGluZzowIWltcG9ydGFudDtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24tc2tpcCAuYXdiLW1lbnVfX20tdG9nZ2xle2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50O3BhZGRpbmc6OHB4IDEwcHghaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLXNraXAgLmZ1c2lvbi1pbWFnZWZyYW1lIGltZ3ttYXgtd2lkdGg6MTUwcHghaW1wb3J0YW50O2hlaWdodDphdXRvfX0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1zb2xvIC5mdXNpb24tdGV4dC0xIHB7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7YmFja2dyb3VuZDpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjAhaW1wb3J0YW50O2ZvbnQ6MzAwIGNsYW1wKDE3cHgsMnZ3LDIycHgpLzEuNTUgSW50ZXIsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6MCFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7Y29sb3I6IzQ3NTU2OSFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAyNHB4IWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1zb2xvIC5mdXNpb24tdGl0bGUgaDJ7Zm9udC1zaXplOmNsYW1wKDMycHgsOHZ3LDU0cHgpIWltcG9ydGFudH0KCmJvZHkucGFnZS1pZC0zOTM1IC5qZ24taXRlbXN7ZGlzcGxheTpncmlkO2dhcDoyMHB4O21hcmdpbjoyOHB4IDAgMDt3aWR0aDoxMDAlfQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLWl0ZW17cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0UzRThGNjtib3JkZXItcmFkaXVzOjI0cHg7cGFkZGluZzoyOHB4O292ZXJmbG93OmhpZGRlbn0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1pdGVtIC5mdXNpb24tdGl0bGV7bWFyZ2luOjAgMCA4cHghaW1wb3J0YW50fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLWl0ZW0gaDN7Zm9udC1zaXplOmNsYW1wKDE4cHgsMnZ3LDIycHgpIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjMhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1pdGVtIC5mdXNpb24tdGV4dHttYXgtd2lkdGg6bm9uZSFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24taXRlbSAuZnVzaW9uLXRleHQgcHtmb250LXNpemU6MTZweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS42IWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnR9CmJvZHkucGFnZS1pZC0zOTM1IC5qZ24tbntmb250LWZhbWlseTpNb250c2VycmF0LHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6ODAwO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCM0RjQ2RTUsIzIyRDNFRSk7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDtiYWNrZ3JvdW5kLWNsaXA6dGV4dDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojNEY0NkU1fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLUwwe2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maXQsbWlubWF4KG1pbigxMDAlLDI2MHB4KSwxZnIpKX0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMCAuamduLWl0ZW17Ym94LXNoYWRvdzowIDEycHggMzJweCByZ2JhKDc5LDcwLDIyOSwuMTApfQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLUwwIC5qZ24tbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTozNHB4O21hcmdpbi1ib3R0b206MTBweH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLUwxIC5qZ24taXRlbXtwYWRkaW5nOjI0cHggMjhweCAyNHB4IDEyMHB4fQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLUwxIC5qZ24tbntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjMwcHg7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtmb250LXNpemU6NDhweDtsaW5lLWhlaWdodDoxfQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLUwye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maXQsbWlubWF4KG1pbigxMDAlLDM0MHB4KSwxZnIpKX0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMiAuamduLWl0ZW17cGFkZGluZy10b3A6MzJweH0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMiAuamduLWl0ZW06YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7aGVpZ2h0OjVweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZywjNEY0NkU1LCMyMkQzRUUpfQpib2R5LnBhZ2UtaWQtMzkzNSAuamduLUwyIC5qZ24tbntkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTVweDtib3JkZXI6MXB4IHNvbGlkICNDN0QyRkU7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IzRGNDZFNTtiYWNrZ3JvdW5kOiNFRUYyRkY7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjNweCAxMnB4O21hcmdpbi1yaWdodDoxMHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0KQG1lZGlhKG1heC13aWR0aDo3MDBweCl7Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMSAuamduLWl0ZW17cGFkZGluZzoyMnB4IDIwcHggMjJweCA3NnB4fWJvZHkucGFnZS1pZC0zOTM1IC5qZ24tTDEgLmpnbi1ue2xlZnQ6MThweDtmb250LXNpemU6MzRweH1ib2R5LnBhZ2UtaWQtMzkzNSAuamduLWl0ZW17cGFkZGluZzoyMnB4fX0KYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1pdGVtcysuZnVzaW9uLXRleHQsYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1pdGVtcysuZnVzaW9uLXRpdGxlLGJvZHkucGFnZS1pZC0zOTM1IC5qZ24taXRlbXMrLmZ1c2lvbi1zZXBhcmF0b3J7bWFyZ2luLXRvcDoyOHB4IWltcG9ydGFudH0KQG1lZGlhKG1pbi13aWR0aDo5MDBweCl7Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMi5qZ24tYzR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLDFmcil9Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMi5qZ24tYzYsYm9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMi5qZ24tYzV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLDFmcil9Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMC5qZ24tYzR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLDFmcil9Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMS5qZ24tYzZ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9Ym9keS5wYWdlLWlkLTM5MzUgLmpnbi1MMS5qZ24tYzYgLmpnbi1pdGVte3BhZGRpbmctbGVmdDo5NnB4fWJvZHkucGFnZS1pZC0zOTM1IC5qZ24tTDEuamduLWM2IC5qZ24tbntmb250LXNpemU6MzhweDtsZWZ0OjI0cHh9fQo8L3N0eWxlPgo8c2NyaXB0PihmdW5jdGlvbigpe3ZhciBWPTI7ZnVuY3Rpb24gZ28oKXt2YXIgZD1kb2N1bWVudCxhbGw9W10uc2xpY2UuY2FsbChkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mdXNpb24tZnVsbHdpZHRoIikpLGZ3PWFsbC5maWx0ZXIoZnVuY3Rpb24oZil7aWYoZi5jbG9zZXN0KCIuZnVzaW9uLXRiLWhlYWRlciwuZnVzaW9uLXRiLWZvb3RlcixoZWFkZXIsZm9vdGVyIikpe2YuY2xhc3NMaXN0LmFkZCgiamduLXNraXAiKTtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9KTtpZighZncubGVuZ3RofHxkLnF1ZXJ5U2VsZWN0b3IoIi5qZ24taGVybyIpKXJldHVybjtkLmJvZHkuY2xhc3NMaXN0LmFkZCgiamd2LSIrVik7dmFyIGhlcm89ZndbMF07aWYoaGVybyloZXJvLmNsYXNzTGlzdC5hZGQoImpnbi1oZXJvIik7dmFyIHQxPWhlcm8mJmhlcm8ucXVlcnlTZWxlY3RvcigiLmZ1c2lvbi10aXRsZSIpO2lmKGhlcm8mJiFoZXJvLnF1ZXJ5U2VsZWN0b3IoImgxIikmJmhlcm8ucXVlcnlTZWxlY3RvckFsbCgiLmZ1c2lvbi10aXRsZSIpLmxlbmd0aDwyKWhlcm8uY2xhc3NMaXN0LmFkZCgiamduLXNvbG8iKTtlbHNlIGlmKHQxJiZ0MS5xdWVyeVNlbGVjdG9yKCJoMSIpPT1udWxsJiZ0MS50ZXh0Q29udGVudC5sZW5ndGg8NzApaGVyby5jbGFzc0xpc3QuYWRkKCJqZ24tZWIyIik7dmFyIG49MDtmb3IodmFyIGk9MTtpPGZ3Lmxlbmd0aDtpKyspe3ZhciBmPWZ3W2ldO2lmKGYuY2xhc3NMaXN0LmNvbnRhaW5zKCJodW5kcmVkLXBlcmNlbnQtZnVsbHdpZHRoIil8fGYub2Zmc2V0SGVpZ2h0PDUpe2YuY2xhc3NMaXN0LmFkZCgiamduLXNraXAiKTtjb250aW51ZX1mLmNsYXNzTGlzdC5hZGQobisrJTI/Impnbi1iIjoiamduLWEiKTtpZihmLnF1ZXJ5U2VsZWN0b3IoIi5mdXNpb24taW1hZ2VmcmFtZSIpKWYuY2xhc3NMaXN0LmFkZCgiamduLWltZyIpfQp2YXIgaD1kLnF1ZXJ5U2VsZWN0b3IoIi5qZ24taGVybyAuZnVzaW9uLXRpdGxlIGgxIil8fGQucXVlcnlTZWxlY3RvcigiLmpnbi1zb2xvIC5mdXNpb24tdGl0bGUgaDIiKTtpZihoJiYhaC5xdWVyeVNlbGVjdG9yKCIuamduLWciKSl7dmFyIHc9aC50ZXh0Q29udGVudC50cmltKCkuc3BsaXQoIiAiKTt2YXIgaz1NYXRoLmNlaWwody5sZW5ndGgvMik7aC5pbm5lckhUTUw9dy5zbGljZSgwLGspLmpvaW4oIiAiKSsnIDxzcGFuIGNsYXNzPSJqZ24tZyI+Jyt3LnNsaWNlKGspLmpvaW4oIiAiKSsiPC9zcGFuPiJ9CmZ3LmZvckVhY2goZnVuY3Rpb24oZil7aWYoZi5jbGFzc0xpc3QuY29udGFpbnMoImpnbi1za2lwIil8fGY9PT1oZXJvKXJldHVybjtmLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mdXNpb24tbGF5b3V0LWNvbHVtbiIpLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIHc9Yy5xdWVyeVNlbGVjdG9yKCIuZnVzaW9uLWNvbHVtbi13cmFwcGVyIik7aWYoIXcpcmV0dXJuO3ZhciBzPWdldENvbXB1dGVkU3R5bGUodykuYm94U2hhZG93O2lmKHMmJnMhPT0ibm9uZSIpYy5jbGFzc0xpc3QuYWRkKCJqZ24tY2FyZCIpfSl9KQp2YXIgb2ZmPVYtMSxzZWM9MDtmdy5mb3JFYWNoKGZ1bmN0aW9uKGYpe2lmKGYuY2xhc3NMaXN0LmNvbnRhaW5zKCJqZ24tc2tpcCIpfHxmPT09aGVyb3x8Zi5xdWVyeVNlbGVjdG9yKCIuZnVzaW9uLWltYWdlZnJhbWUiKSlyZXR1cm47Zi5xdWVyeVNlbGVjdG9yQWxsKCIuZnVzaW9uLWNvbHVtbi13cmFwcGVyIikuZm9yRWFjaChmdW5jdGlvbih3KXtpZih3LnF1ZXJ5U2VsZWN0b3IoIi5qZ24taXRlbXMiKSlyZXR1cm47dmFyIGtpZHM9W10uc2xpY2UuY2FsbCh3LmNoaWxkcmVuKSxjbnQ9MDtraWRzLmZvckVhY2goZnVuY3Rpb24oayl7aWYoay5jbGFzc0xpc3QuY29udGFpbnMoImZ1c2lvbi10aXRsZSIpJiZrLnF1ZXJ5U2VsZWN0b3IoImgzIikpY250Kyt9KTtpZihjbnQ8MilyZXR1cm47dmFyIGJveD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtib3guY2xhc3NOYW1lPSJqZ24taXRlbXMgamduLUwiKygoc2VjK29mZiklMykrIiBqZ24tYyIrY250O3NlYysrO3ZhciBwbGFjZWQ9ZmFsc2U7Zm9yKHZhciBpPTA7aTxraWRzLmxlbmd0aDtpKyspe3ZhciBrPWtpZHNbaV07aWYoay5jbGFzc0xpc3QuY29udGFpbnMoImZ1c2lvbi10aXRsZSIpJiZrLnF1ZXJ5U2VsZWN0b3IoImgzIikpe3ZhciBpdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpdC5jbGFzc05hbWU9Impnbi1pdGVtIjtpZighcGxhY2VkKXt3Lmluc2VydEJlZm9yZShib3gsayk7cGxhY2VkPXRydWV9Ym94LmFwcGVuZENoaWxkKGl0KTtpdC5hcHBlbmRDaGlsZChrKTt2YXIgbng9a2lkc1tpKzFdO2lmKG54JiZueC5jbGFzc0xpc3QuY29udGFpbnMoImZ1c2lvbi10ZXh0Iikpe2l0LmFwcGVuZENoaWxkKG54KTtpKyt9dmFyIGgzPWsucXVlcnlTZWxlY3RvcigiaDMiKSxtPWgzLnRleHRDb250ZW50LnRyaW0oKS5tYXRjaCgvXihcZCspXHMqW1x1MDBiNy5cLV1ccyooLispJC8pO2lmKG0paDMuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0iamduLW4iPicrbVsxXSsnPC9zcGFuPicrbVsyXX19fSl9KX0KaWYoZG9jdW1lbnQucmVhZHlTdGF0ZSE9ImxvYWRpbmciKWdvKCk7ZWxzZSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnbyk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGdvKX0pKCk7PC9zY3JpcHQ+