Content-Type: multipart/related; start=; boundary=----------KiXPWrvk5mnvVYxLCI6WyS Content-Location: https://www.euroresidentes.com/calendario/calendario-laboral-2018.html Subject: =?utf-8?Q?Calendario=20Laboral=202018=20Espa=C3=B1a?= MIME-Version: 1.0 ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=calendario-laboral-2018.html Content-Type: text/html; charset=utf-8; name=calendario-laboral-2018.html Content-ID: Content-Location: https://www.euroresidentes.com/calendario/calendario-laboral-2018.html Content-Transfer-Encoding: 8bit Calendario Laboral 2018 España

CALENDARIO LABORAL ESPAÑA 2018

Calendario laboral España 2017

Consulta el calendario laboral 2018. Fiestas de Comunidades Autónomas y días no laborales

Fiestas Nacionales, Fiestas Autonómicas, Fiestas Locales, Puentes, Semana Santa

¡Consulte el calendario y planifique ya sus puentes y vacaciones en 2018! Viajes, Hoteles...

Si quiere buenas ideas sobre dónde ir en 2018, visite nuestro blog Viajar

x celebraciones tradicionales
x festivo en toda España
x Festivos C. Autónomas

Calendario Laboral y festivos para 2018 - Novedades: día de hoy

Enero 2018

L M M J V S D
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Día 1: Año nuevo
Día 2: Día de la Toma de Granada, en Granada
Día 6: Día de Reyes - Epifanía del Señor
Día 12 Enero hasta el 22 Febrero empieza el Carnaval en Santa Cruz de Tenerife
Día 17: San Antonio: en Mahón (Menorca)
Día 18 Enero al 26 Febrero: Carnaval de Las Palmas
Día 20: San Sebastián - Guipúzcoa, Fiesta - Palma de Mallorca
Día 22: San Vicente Mártir - Patrón de Huesca y de Valencia
Día 23: San Ildefonso - Toledo
Día 29: San Valero - Zaragoza

Febrero 2018

L M M J V S D
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        


Día 2: Virgen de la Candelaria - Santa Cruz de Tenerife y Virgen de la Calle - Palencia
Día 8 al 12: Carnavales de Cadiz
Del 9 al 13: Carnavales de Badajoz
Día 12: Santa Eulalia - Barcelona
Día 13: Carnavales de Galicia: del 13 al 4 de Marzo. Empieza el Martes de Entroido o de Carnaval en Galicia.
Día 13: Carnavales de Gijón, Orense,
Día 14: Miécoles de Ceniza y carnavales en Pontevedra.
Día 14: Día de San Valentín
Día 28: Día de Andalucía

Marzo 2018

L M M J V S D
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Día 1: Día de las Islas Baleares
Día 1: Miércoles de Ceniza - Pontevedra
Día 5: Día de la Cincomarzada - Zaragoza
Día 8: Día de la Mujer, A Coruña
Día 19: San José - Comunidad Valenciana y Murcia.
Día 19: Fallas de Valencia
Día 19: Día del Padre
Día 27: San Cibrán - Pontevedra
Día 28: Virgen de la Magdalena - Castellón

Semana Santa

Día 29 al 1: Semana Santa - Comunidades Autónomas de Andalucía, Aragón, Asturias, Cantabria, Castilla La Mancha, Castilla León, Extremadura, Galicia, Islas Canarias, Madrid, Murcia, Navarra y Melilla, Ceuta.
Día 30/03 al 2/04: Semana Santa - Comunidades Autónomas de Valenciana, Catalana, Cantabria,
Semana Santa: del 29/03 al 2/04: Islas Baleares, Navarra y País Vasco
Día 30: Viernes Santo

 

Abril 2018

L M M J V S D
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            


Día 2: Lunes de Pascua - Cataluña, Comunidad Valenciana, Islas Baleares, La Rioja, Navarra, País Vasco, Galicia.
Día 3: Festividad del Bando de la Huerta, en Murcia
Día 9: San Vicente Ferrer - Patrón Comunidad Valenciana (Festivo Valencia)
Día 12: Santa Faz - Alicante capital
Día 15 al 22: Feria de de Abril -Sevilla
Día 18: miércoles de la Feria, fiesta local Sevilla
Día 18: Sermón de Las Tortillas - Teruel
Día 18: Bando de la Huerta - Murcia
Día 23: Día de Aragón
Día 23: Día de Castilla León
Día 23: San Jorge - Cáceres
Día 28: San Prudencio - Álava


Mayo 2018

L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Día 1: Fiesta del trabajo-San José Obrero, fiesta nacional en toda España.
Día 2: Fiesta de la Comunidad de Madrid
Día 3: Día de la Cruz, Festivo en Santa Cruz de Tenerife (capital), Puerto de la Cruz y Los Realejos...
Día 6 : Primer Domingo de Mayo: Día de la madre.
Día 11: San Anastasi fiesta local en Lérida.
Día 11: Fiesta Patrimonio de la Humanidad en Ibiza
Día 13: San Pedro Regalado, Valladolid
Día 13: 2º Domingo de Mayo: Virgen de los Desamparados, patrona de Valencia.
Día 15: San Isidro, fiesta en Madrid.
Día 17: Día de las Letras Galegas
Día 20:
Fiestas del Rocío en Huelva. Es el domingo de Pentecostés. Empieza la romería el 19.
Día 21
: Martes de Campo en Oviedo, Asturias
Día 21: Lunes de Pascua Granada en Barcelona
Día 21: Virgen de Alarcos, en Ciudad Real
Día 25: Virgen del Mar en Santander. .
Día 30: Día de Canarias
Día 30: Día de San Fernando en Sevilla
Día 31: Día de la Cdad. Castilla-Mancha
Día 31: Corpus Christi en Granada

Junio 2018

L M M J V S D
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

Día 1: Fiesta de San Fernando, Cáceres
Día 4
: Fiestas del Rocío - Huelva
Día 5: Pascua Granada - Barcelona, Girona
Día 6: Martes de Campo - Oviedo
Día 9: Día de la Región de Murcia
Día 9 : Día de La Rioja
Día 11: San Bernabé - Logroño
Día 11: Virgen de la Capilla en Jaén
Día 12: San Juan de Sahagún - Salamanca
Día 13: San Antonio - Ceuta
Día 15: Fiesta del Corpus Christi - Castilla La Mancha y Granada
Día 24: San Juan - Cataluña, Andalucía, Extremadura, Galicia, Islas Canarias, Baleares, Almería (Se traslada al 25).
Día 24: Fiestas de las Hogueras - Alicante (se traslada al lunes 25)
Día 25: Conmemoración de la ciudad en Las Palmas de G. Canaria
Día 29: San Pedro - Asturias, Castellón, Castilla La Mancha, Castilla León, Gijón, Segovia

Julio 2018

L M M J V S D
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Día 4: San Valentín de Berriochoa - Vizcaya
Día 10: Fiesta del Ángel - Teruel
Día 11: San Benito Lérez - Pontevedra
Día 25: Santiago Apóstol - Fiesta Asturias, Cantabria, Galicia, Islas Canarias, Navarra y País Vasco
Día 25: Día Nacional de Galicia, San Santiago, Vitoria
Día 25: San Jaime o Santigo- Girona
Día 28: Día de las Instituciones - Cantabria
Día 31: San Ignacio de Loyola, en Guipúscoa, Vizcaya

Agosto 2018

L M M J V S D
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Día 3: Fiestas Colombinas en Huelva
Día 5:
Ntra. Sra. de los Volcanes en La Palma.; Día 5: Fiesta de la Vírgen Blanca en Vitoria-Gasteiz;
Día 5:
Ntra.Sra. Africa en Ceuta
Día 8:
San Ciriaco en Ibiza
Día 10:
San Lorenzo en: Huesca,
Día 15:
La Asunción de la Vírgen.Fiesta Nacional.
Día 15: Semana Grande de Bilbao (del 17 al 25)
Día 11 al 18: Semana Grande de San Sebastián (del 10 al 17)
Día 15: Fiestas patronales de la Virgen del Sagrario en Toledo
Día 16: San Roque en: Vigo, Palma Mallorca
Día 19
: Sant Magí en Tarragona
Día 19: Fiesta de la Reconquista local en Málaga. (se traslada al 20)
Día 19 al 27: Semana Grande de Bilbao
Día 22: Fiesta de la Octava de la Virgen del Prado en Castilla-La Mancha
Día 22: Virgen del Padro, en Ciudad Real
Día 22: Fiesta del Sacrificio, Festividad de la Pascua del Sacrificio: en Ceuta y Melilla
Día 25: La Virgen del Mar, en Almería.
Día 28: Fiesta San Agustín en Zamora.
Día 30: Santos Mártires, en Santander


Septiembre 2018

L M M J V S D
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Dia 2: Día de la Ciudad Autonónoma de Ceuta
Día 2:
San Antolín en Palencia.
Día 8:
Día de Extremadura.
Día 8: Día de Asturias, la Virgen de Covadonga.
Día 8 : Fiesta Virgen de los Llanos en Albacete.
Dia 8 : Ntra. Sra. de la Peña en Gran Canaria.
Día 8: Ntra. Sra. del Pino en Las Palmas
Día 8: Virgen de la Vega en Salamanca.
Día 8: Virgen de Guadalupe Córdoba.
Día 8: Virgen de la Victoria en Melilla y Málaga.
Día 8: Ntra. Sra. de San Lorenzo, Valladolid
Día 8: Ntra.Sra, de la Cinta en Huelva
Día 8:
Ntra. Sra. de Gracia en Menorca (Mahón)
Día 9:
Ntra. Sra. de Aranzazu Guipúzcoa.
Día 11: Fiesta de la Diada de Catalunya
Día 12: Nuestra Señora de la Fuensanta - Murcia
Día 13: Día de Cantabria
Día 13: San Mateo, fiesta local Oviedo
Día 15: La Bien Aparecida en Cantabria.
Día 14: Ntra. Sra. de la Peña en Fuerteventura
Día 15: Ntra. Sra. de los Dolores en Lanzarote.
Día 15: Sta. Teresa de Jesús en Avila.
Día 17: Día de Melilla
Día 17: Feria de Albacete
Día 19: Día de América en Asturias, declaradas de Interés Turístico Nacional.
Día 21: San Mateo en Oviedo (Asturias), Logroño.
Día 23: Santa Tecla en Tarragona
Día 24: Virgen de La Merçé, Fiesta Mayor (local) en Barcelona, Tarragona
Día 24: Ntra. Sra. de los Reyes, en El Hierro,
Día 29: San Miguel Arcángel en Lleída y en El Hierro.

Octubre 2018

L M M J V S D
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        


Día 3: San Saturio en Soria
Día 5: San Froilán en Lugo, León
Día 7:
Virgen del Rosario en Cádiz (se traslada al 8) y A Coruña
Día 9
: Día de la Comunidad Valenciana.
Día 9: Ntra. Sra. de Guadalupe en La Gomera.
Día 12: Día de la Hispanidad, Fiesta Nacional de España.
Día 12: Fiesta del Pilar en Zaragoza, Asturias
Día 15: Fiesta de la Pascua del Sacrificio en Ceuta.
Día 18: San Lucas en Jaén, Granada
Día 24: San Rafael en Córdoba
Día 25: San Frutos en Segovia
Día 25: Día del País Vasco-Euskadiko Eguna

Noviembre 2018

L M M J V S D
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Día 1: Día de a todos los Santos. Fiesta Nacional.
Día 9
: Virgen de La Almudena, en Madrid
Día 11: San Martín fiesta en Pontevedra, Santiago de Compostela, Orense... Provincia
Día 25: Fiesta local de Santa Catalina de Alejandría en Jaén.
Día 29: San Saturnino en Pamplona.

Diciembre 2018

L M M J V S D
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Día 3: San Francisco Javier: día festivo en Navarra y Pamplona, Formentera
Día 6: Día de la Constitución Española.
Día 8:
Día de la Inmaculada Concepción.
Día 24: Nochebuena
Dia 25: Natividad del Señor. Ver Navidad.
Día 26: San Esteban, segunda fiesta de Navidad: Catalunya, Palma de Mallorca.
Día 27: Fiesta local Palma de Mallorca
Día 28: Día de los Santos Inocentes
Día 31: Nochevieja


Calendario laborales de las Comunidades Autónomas:
Fiestas locales en las islas de El Hierro, Fuerteventura, Gran Canaria, La Gomera, Lanzarote, La Palma y Tenerife la fiesta, a combio del 25 de Julio:
Otros temas relacionados con el Calendario:

Novedades en euroresidentes

Compartir en Facebook
Twitter
Google
LinkedIn
Email
------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=jquery-latest.pack.js Content-Type: application/x-javascript; name=jquery-latest.pack.js Content-Location: https://www.euroresidentes.com/ScriptLibrary/jquery-latest.pack.js Content-Transfer-Encoding: Base64 LyohIGpRdWVyeSB2MS4xMC4xIHwgKGMpIDIwMDUsIDIwMTMgalF1ZXJ5IEZvdW5k YXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UKLy9AIHNvdXJjZU1hcHBp bmdVUkw9anF1ZXJ5LTEuMTAuMS5taW4ubWFwCiovCihmdW5jdGlvbihlLHQpe3Zh ciBuLHIsaT10eXBlb2YgdCxvPWUubG9jYXRpb24sYT1lLmRvY3VtZW50LHM9YS5k b2N1bWVudEVsZW1lbnQsbD1lLmpRdWVyeSx1PWUuJCxjPXt9LHA9W10sZj0iMS4x MC4xIixkPXAuY29uY2F0LGg9cC5wdXNoLGc9cC5zbGljZSxtPXAuaW5kZXhPZix5 PWMudG9TdHJpbmcsdj1jLmhhc093blByb3BlcnR5LGI9Zi50cmltLHg9ZnVuY3Rp b24oZSx0KXtyZXR1cm4gbmV3IHguZm4uaW5pdChlLHQscil9LHc9L1srLV0/KD86 XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD0vXFMrL2csQz0v Xltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csTj0vXig/OlxzKig8 W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLGs9L148KFx3KylccypcLz8+KD86 PFwvXDE+fCkkLyxFPS9eW1xdLDp7fVxzXSokLyxTPS8oPzpefDp8LCkoPzpccypc WykrL2csQT0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csaj0v IlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZCtcLnwpXGQrKD86 W2VFXVsrLV0/XGQrfCkvZyxEPS9eLW1zLS8sTD0vLShbXGRhLXpdKS9naSxIPWZ1 bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0scT1mdW5jdGlvbihl KXsoYS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1lLnR5cGV8fCJjb21wbGV0 ZSI9PT1hLnJlYWR5U3RhdGUpJiYoXygpLHgucmVhZHkoKSl9LF89ZnVuY3Rpb24o KXthLmFkZEV2ZW50TGlzdGVuZXI/KGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9N Q29udGVudExvYWRlZCIscSwhMSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2Fk IixxLCExKSk6KGEuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIscSks ZS5kZXRhY2hFdmVudCgib25sb2FkIixxKSl9O3guZm49eC5wcm90b3R5cGU9e2px dWVyeTpmLGNvbnN0cnVjdG9yOngsaW5pdDpmdW5jdGlvbihlLG4scil7dmFyIGks bztpZighZSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGk9 IjwiPT09ZS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiZl Lmxlbmd0aD49Mz9bbnVsbCxlLG51bGxdOk4uZXhlYyhlKSwhaXx8IWlbMV0mJm4p cmV0dXJuIW58fG4uanF1ZXJ5PyhufHxyKS5maW5kKGUpOnRoaXMuY29uc3RydWN0 b3IobikuZmluZChlKTtpZihpWzFdKXtpZihuPW4gaW5zdGFuY2VvZiB4P25bMF06 bix4Lm1lcmdlKHRoaXMseC5wYXJzZUhUTUwoaVsxXSxuJiZuLm5vZGVUeXBlP24u b3duZXJEb2N1bWVudHx8bjphLCEwKSksay50ZXN0KGlbMV0pJiZ4LmlzUGxhaW5P YmplY3QobikpZm9yKGkgaW4gbil4LmlzRnVuY3Rpb24odGhpc1tpXSk/dGhpc1tp XShuW2ldKTp0aGlzLmF0dHIoaSxuW2ldKTtyZXR1cm4gdGhpc31pZihvPWEuZ2V0 RWxlbWVudEJ5SWQoaVsyXSksbyYmby5wYXJlbnROb2RlKXtpZihvLmlkIT09aVsy XSlyZXR1cm4gci5maW5kKGUpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1vfXJldHVy biB0aGlzLmNvbnRleHQ9YSx0aGlzLnNlbGVjdG9yPWUsdGhpc31yZXR1cm4gZS5u b2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRo aXMpOnguaXNGdW5jdGlvbihlKT9yLnJlYWR5KGUpOihlLnNlbGVjdG9yIT09dCYm KHRoaXMuc2VsZWN0b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0 KSx4Lm1ha2VBcnJheShlLHRoaXMpKX0sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9B cnJheTpmdW5jdGlvbigpe3JldHVybiBnLmNhbGwodGhpcyl9LGdldDpmdW5jdGlv bihlKXtyZXR1cm4gbnVsbD09ZT90aGlzLnRvQXJyYXkoKTowPmU/dGhpc1t0aGlz Lmxlbmd0aCtlXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9 eC5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVj dD10aGlzLHQuY29udGV4dD10aGlzLmNvbnRleHQsdH0sZWFjaDpmdW5jdGlvbihl LHQpe3JldHVybiB4LmVhY2godGhpcyxlLHQpfSxyZWFkeTpmdW5jdGlvbihlKXty ZXR1cm4geC5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSx0aGlzfSxzbGljZTpmdW5j dGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhnLmFwcGx5KHRoaXMsYXJndW1l bnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGUpe3Zh ciB0PXRoaXMubGVuZ3RoLG49K2UrKDA+ZT90OjApO3JldHVybiB0aGlzLnB1c2hT dGFjayhuPj0wJiZ0Pm4/W3RoaXNbbl1dOltdKX0sbWFwOmZ1bmN0aW9uKGUpe3Jl dHVybiB0aGlzLnB1c2hTdGFjayh4Lm1hcCh0aGlzLGZ1bmN0aW9uKHQsbil7cmV0 dXJuIGUuY2FsbCh0LG4sdCl9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlz LnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6aCxzb3J0 OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX0seC5mbi5pbml0LnByb3RvdHlwZT14 LmZuLHguZXh0ZW5kPXguZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsbixyLGks byxhLHM9YXJndW1lbnRzWzBdfHx7fSxsPTEsdT1hcmd1bWVudHMubGVuZ3RoLGM9 ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIHMmJihjPXMscz1hcmd1bWVudHNbMV18 fHt9LGw9MiksIm9iamVjdCI9PXR5cGVvZiBzfHx4LmlzRnVuY3Rpb24ocyl8fChz PXt9KSx1PT09bCYmKHM9dGhpcywtLWwpO3U+bDtsKyspaWYobnVsbCE9KG89YXJn dW1lbnRzW2xdKSlmb3IoaSBpbiBvKWU9c1tpXSxyPW9baV0scyE9PXImJihjJiZy JiYoeC5pc1BsYWluT2JqZWN0KHIpfHwobj14LmlzQXJyYXkocikpKT8obj8obj0h MSxhPWUmJnguaXNBcnJheShlKT9lOltdKTphPWUmJnguaXNQbGFpbk9iamVjdChl KT9lOnt9LHNbaV09eC5leHRlbmQoYyxhLHIpKTpyIT09dCYmKHNbaV09cikpO3Jl dHVybiBzfSx4LmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRv bSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0NvbmZsaWN0OmZ1bmN0aW9uKHQpe3Jl dHVybiBlLiQ9PT14JiYoZS4kPXUpLHQmJmUualF1ZXJ5PT09eCYmKGUualF1ZXJ5 PWwpLHh9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9u KGUpe2U/eC5yZWFkeVdhaXQrKzp4LnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24o ZSl7aWYoZT09PSEwPyEtLXgucmVhZHlXYWl0OiF4LmlzUmVhZHkpe2lmKCFhLmJv ZHkpcmV0dXJuIHNldFRpbWVvdXQoeC5yZWFkeSk7eC5pc1JlYWR5PSEwLGUhPT0h MCYmLS14LnJlYWR5V2FpdD4wfHwobi5yZXNvbHZlV2l0aChhLFt4XSkseC5mbi50 cmlnZ2VyJiZ4KGEpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpKX19LGlz RnVuY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09PXgudHlwZShl KX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iYXJy YXkiPT09eC50eXBlKGUpfSxpc1dpbmRvdzpmdW5jdGlvbihlKXtyZXR1cm4gbnVs bCE9ZSYmZT09ZS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihlKXtyZXR1cm4h aXNOYU4ocGFyc2VGbG9hdChlKSkmJmlzRmluaXRlKGUpfSx0eXBlOmZ1bmN0aW9u KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVu Y3Rpb24iPT10eXBlb2YgZT9jW3kuY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBl fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFlfHwib2JqZWN0 IiE9PXgudHlwZShlKXx8ZS5ub2RlVHlwZXx8eC5pc1dpbmRvdyhlKSlyZXR1cm4h MTt0cnl7aWYoZS5jb25zdHJ1Y3RvciYmIXYuY2FsbChlLCJjb25zdHJ1Y3RvciIp JiYhdi5jYWxsKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9m IikpcmV0dXJuITF9Y2F0Y2gocil7cmV0dXJuITF9aWYoeC5zdXBwb3J0Lm93bkxh c3QpZm9yKG4gaW4gZSlyZXR1cm4gdi5jYWxsKGUsbik7Zm9yKG4gaW4gZSk7cmV0 dXJuIG49PT10fHx2LmNhbGwoZSxuKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihl KXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxlcnJvcjpmdW5j dGlvbihlKXt0aHJvdyBFcnJvcihlKX0scGFyc2VIVE1MOmZ1bmN0aW9uKGUsdCxu KXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsOyJib29sZWFu Ij09dHlwZW9mIHQmJihuPXQsdD0hMSksdD10fHxhO3ZhciByPWsuZXhlYyhlKSxp PSFuJiZbXTtyZXR1cm4gcj9bdC5jcmVhdGVFbGVtZW50KHJbMV0pXToocj14LmJ1 aWxkRnJhZ21lbnQoW2VdLHQsaSksaSYmeChpKS5yZW1vdmUoKSx4Lm1lcmdlKFtd LHIuY2hpbGROb2RlcykpfSxwYXJzZUpTT046ZnVuY3Rpb24obil7cmV0dXJuIGUu SlNPTiYmZS5KU09OLnBhcnNlP2UuSlNPTi5wYXJzZShuKTpudWxsPT09bj9uOiJz dHJpbmciPT10eXBlb2YgbiYmKG49eC50cmltKG4pLG4mJkUudGVzdChuLnJlcGxh Y2UoQSwiQCIpLnJlcGxhY2UoaiwiXSIpLnJlcGxhY2UoUywiIikpKT9GdW5jdGlv bigicmV0dXJuICIrbikoKTooeC5lcnJvcigiSW52YWxpZCBKU09OOiAiK24pLHQp fSxwYXJzZVhNTDpmdW5jdGlvbihuKXt2YXIgcixpO2lmKCFufHwic3RyaW5nIiE9 dHlwZW9mIG4pcmV0dXJuIG51bGw7dHJ5e2UuRE9NUGFyc2VyPyhpPW5ldyBET01Q YXJzZXIscj1pLnBhcnNlRnJvbVN0cmluZyhuLCJ0ZXh0L3htbCIpKToocj1uZXcg QWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLHIuYXN5bmM9ImZhbHNl IixyLmxvYWRYTUwobikpfWNhdGNoKG8pe3I9dH1yZXR1cm4gciYmci5kb2N1bWVu dEVsZW1lbnQmJiFyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIp Lmxlbmd0aHx8eC5lcnJvcigiSW52YWxpZCBYTUw6ICIrbikscn0sbm9vcDpmdW5j dGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbih0KXt0JiZ4LnRyaW0odCkmJihl LmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKHQpe2UuZXZhbC5jYWxsKGUsdCl9KSh0KX0s Y2FtZWxDYXNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoRCwibXMtIiku cmVwbGFjZShMLEgpfSxub2RlTmFtZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLm5v ZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNl KCl9LGVhY2g6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9MCxvPWUubGVuZ3RoLGE9 TShlKTtpZihuKXtpZihhKXtmb3IoO28+aTtpKyspaWYocj10LmFwcGx5KGVbaV0s bikscj09PSExKWJyZWFrfWVsc2UgZm9yKGkgaW4gZSlpZihyPXQuYXBwbHkoZVtp XSxuKSxyPT09ITEpYnJlYWt9ZWxzZSBpZihhKXtmb3IoO28+aTtpKyspaWYocj10 LmNhbGwoZVtpXSxpLGVbaV0pLHI9PT0hMSlicmVha31lbHNlIGZvcihpIGluIGUp aWYocj10LmNhbGwoZVtpXSxpLGVbaV0pLHI9PT0hMSlicmVhaztyZXR1cm4gZX0s dHJpbTpiJiYhYi5jYWxsKCJcdWZlZmZcdTAwYTAiKT9mdW5jdGlvbihlKXtyZXR1 cm4gbnVsbD09ZT8iIjpiLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBudWxs PT1lPyIiOihlKyIiKS5yZXBsYWNlKEMsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24o ZSx0KXt2YXIgbj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKE0oT2JqZWN0KGUpKT94 Lm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTpoLmNhbGwobixlKSks bn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYodCl7aWYobSlyZXR1 cm4gbS5jYWxsKHQsZSxuKTtmb3Iocj10Lmxlbmd0aCxuPW4/MD5uP01hdGgubWF4 KDAscituKTpuOjA7cj5uO24rKylpZihuIGluIHQmJnRbbl09PT1lKXJldHVybiBu fXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihlLG4pe3ZhciByPW4ubGVuZ3RoLGk9 ZS5sZW5ndGgsbz0wO2lmKCJudW1iZXIiPT10eXBlb2Ygcilmb3IoO3I+bztvKysp ZVtpKytdPW5bb107ZWxzZSB3aGlsZShuW29dIT09dCllW2krK109bltvKytdO3Jl dHVybiBlLmxlbmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9 W10sbz0wLGE9ZS5sZW5ndGg7Zm9yKG49ISFuO2E+bztvKyspcj0hIXQoZVtvXSxv KSxuIT09ciYmaS5wdXNoKGVbb10pO3JldHVybiBpfSxtYXA6ZnVuY3Rpb24oZSx0 LG4pe3ZhciByLGk9MCxvPWUubGVuZ3RoLGE9TShlKSxzPVtdO2lmKGEpZm9yKDtv Pmk7aSsrKXI9dChlW2ldLGksbiksbnVsbCE9ciYmKHNbcy5sZW5ndGhdPXIpO2Vs c2UgZm9yKGkgaW4gZSlyPXQoZVtpXSxpLG4pLG51bGwhPXImJihzW3MubGVuZ3Ro XT1yKTtyZXR1cm4gZC5hcHBseShbXSxzKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9u KGUsbil7dmFyIHIsaSxvO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKG89ZVtu XSxuPWUsZT1vKSx4LmlzRnVuY3Rpb24oZSk/KHI9Zy5jYWxsKGFyZ3VtZW50cywy KSxpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnx8dGhpcyxyLmNvbmNhdChn LmNhbGwoYXJndW1lbnRzKSkpfSxpLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8eC5ndWlk KyssaSk6dH0sYWNjZXNzOmZ1bmN0aW9uKGUsbixyLGksbyxhLHMpe3ZhciBsPTAs dT1lLmxlbmd0aCxjPW51bGw9PXI7aWYoIm9iamVjdCI9PT14LnR5cGUocikpe289 ITA7Zm9yKGwgaW4gcil4LmFjY2VzcyhlLG4sbCxyW2xdLCEwLGEscyl9ZWxzZSBp ZihpIT09dCYmKG89ITAseC5pc0Z1bmN0aW9uKGkpfHwocz0hMCksYyYmKHM/KG4u Y2FsbChlLGkpLG49bnVsbCk6KGM9bixuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g Yy5jYWxsKHgoZSksbil9KSksbikpZm9yKDt1Pmw7bCsrKW4oZVtsXSxyLHM/aTpp LmNhbGwoZVtsXSxsLG4oZVtsXSxyKSkpO3JldHVybiBvP2U6Yz9uLmNhbGwoZSk6 dT9uKGVbMF0scik6YX0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5n ZXRUaW1lKCl9LHN3YXA6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhPXt9O2Zv cihvIGluIHQpYVtvXT1lLnN0eWxlW29dLGUuc3R5bGVbb109dFtvXTtpPW4uYXBw bHkoZSxyfHxbXSk7Zm9yKG8gaW4gdCllLnN0eWxlW29dPWFbb107cmV0dXJuIGl9 fSkseC5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKHQpe2lmKCFuKWlmKG49eC5EZWZl cnJlZCgpLCJjb21wbGV0ZSI9PT1hLnJlYWR5U3RhdGUpc2V0VGltZW91dCh4LnJl YWR5KTtlbHNlIGlmKGEuYWRkRXZlbnRMaXN0ZW5lcilhLmFkZEV2ZW50TGlzdGVu ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHEsITEpLGUuYWRkRXZlbnRMaXN0ZW5lcigi bG9hZCIscSwhMSk7ZWxzZXthLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFu Z2UiLHEpLGUuYXR0YWNoRXZlbnQoIm9ubG9hZCIscSk7dmFyIHI9ITE7dHJ5e3I9 bnVsbD09ZS5mcmFtZUVsZW1lbnQmJmEuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGkp e31yJiZyLmRvU2Nyb2xsJiZmdW5jdGlvbiBvKCl7aWYoIXguaXNSZWFkeSl7dHJ5 e3IuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChlKXtyZXR1cm4gc2V0VGltZW91dChv LDUwKX1fKCkseC5yZWFkeSgpfX0oKX1yZXR1cm4gbi5wcm9taXNlKHQpfSx4LmVh Y2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJl Z0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtjWyJb b2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIE0oZSl7 dmFyIHQ9ZS5sZW5ndGgsbj14LnR5cGUoZSk7cmV0dXJuIHguaXNXaW5kb3coZSk/ ITE6MT09PWUubm9kZVR5cGUmJnQ/ITA6ImFycmF5Ij09PW58fCJmdW5jdGlvbiIh PT1uJiYoMD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmdD4wJiZ0LTEgaW4gZSl9 cj14KGEpLGZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLGwsdSxjLHAsZixk LGgsZyxtLHksdixiPSJzaXp6bGUiKy1uZXcgRGF0ZSx3PWUuZG9jdW1lbnQsVD0w LEM9MCxOPWx0KCksaz1sdCgpLEU9bHQoKSxTPSExLEE9ZnVuY3Rpb24oKXtyZXR1 cm4gMH0saj10eXBlb2YgdCxEPTE8PDMxLEw9e30uaGFzT3duUHJvcGVydHksSD1b XSxxPUgucG9wLF89SC5wdXNoLE09SC5wdXNoLE89SC5zbGljZSxGPUguaW5kZXhP Znx8ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPXRoaXMubGVuZ3RoO2Zvcig7bj50O3Qr KylpZih0aGlzW3RdPT09ZSlyZXR1cm4gdDtyZXR1cm4tMX0sQj0iY2hlY2tlZHxz ZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8 ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25s eXxyZXF1aXJlZHxzY29wZWQiLFA9IltcXHgyMFxcdFxcclxcblxcZl0iLFI9Iig/ OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIixXPVIucmVwbGFjZSgidyIs IncjIiksJD0iXFxbIitQKyIqKCIrUisiKSIrUCsiKig/OihbKl4kfCF+XT89KSIr UCsiKig/OihbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCIrVysiKXwp fCkiK1ArIipcXF0iLEk9IjooIitSKyIpKD86XFwoKChbJ1wiXSkoKD86XFxcXC58 W15cXFxcXSkqPylcXDN8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiskLnJlcGxh Y2UoMyw4KSsiKSopfC4qKVxcKXwpIix6PVJlZ0V4cCgiXiIrUCsiK3woKD86Xnxb XlxcXFxdKSg/OlxcXFwuKSopIitQKyIrJCIsImciKSxYPVJlZ0V4cCgiXiIrUCsi KiwiK1ArIioiKSxVPVJlZ0V4cCgiXiIrUCsiKihbPit+XXwiK1ArIikiK1ArIioi KSxWPVJlZ0V4cChQKyIqWyt+XSIpLFk9UmVnRXhwKCI9IitQKyIqKFteXFxdJ1wi XSopIitQKyIqXFxdIiwiZyIpLEo9UmVnRXhwKEkpLEc9UmVnRXhwKCJeIitXKyIk IiksUT17SUQ6UmVnRXhwKCJeIygiK1IrIikiKSxDTEFTUzpSZWdFeHAoIl5cXC4o IitSKyIpIiksVEFHOlJlZ0V4cCgiXigiK1IucmVwbGFjZSgidyIsIncqIikrIiki KSxBVFRSOlJlZ0V4cCgiXiIrJCksUFNFVURPOlJlZ0V4cCgiXiIrSSksQ0hJTEQ6 UmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8 b2YtdHlwZSkoPzpcXCgiK1ArIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCki K1ArIiooPzooWystXXwpIitQKyIqKFxcZCspfCkpIitQKyIqXFwpfCkiLCJpIiks Ym9vbDpSZWdFeHAoIl4oPzoiK0IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpSZWdF eHAoIl4iK1ArIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxs YXN0KSg/OlxcKCIrUCsiKigoPzotXFxkKT9cXGQqKSIrUCsiKlxcKXwpKD89W14t XXwkKSIsImkiKX0sSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMo W1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGV0PS9eKD86aW5wdXR8c2VsZWN0 fHRleHRhcmVhfGJ1dHRvbikkL2ksdHQ9L15oXGQkL2ksbnQ9Lyd8XFwvZyxydD1S ZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIrUCsiP3woIitQKyIpfC4pIiwiaWci KSxpdD1mdW5jdGlvbihlLHQsbil7dmFyIHI9IjB4Iit0LTY1NTM2O3JldHVybiBy IT09cnx8bj90OjA+cj9TdHJpbmcuZnJvbUNoYXJDb2RlKHIrNjU1MzYpOlN0cmlu Zy5mcm9tQ2hhckNvZGUoNTUyOTZ8cj4+MTAsNTYzMjB8MTAyMyZyKX07dHJ5e00u YXBwbHkoSD1PLmNhbGwody5jaGlsZE5vZGVzKSx3LmNoaWxkTm9kZXMpLEhbdy5j aGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2gob3Qpe009e2FwcGx5Okgu bGVuZ3RoP2Z1bmN0aW9uKGUsdCl7Xy5hcHBseShlLE8uY2FsbCh0KSl9OmZ1bmN0 aW9uKGUsdCl7dmFyIG49ZS5sZW5ndGgscj0wO3doaWxlKGVbbisrXT10W3IrK10p O2UubGVuZ3RoPW4tMX19fWZ1bmN0aW9uIGF0KGUsdCxuLGkpe3ZhciBvLGEscyxs LHUsYyxkLG0seSx4O2lmKCh0P3Qub3duZXJEb2N1bWVudHx8dDp3KSE9PWYmJnAo dCksdD10fHxmLG49bnx8W10sIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4g bjtpZigxIT09KGw9dC5ub2RlVHlwZSkmJjkhPT1sKXJldHVybltdO2lmKGgmJiFp KXtpZihvPVouZXhlYyhlKSlpZihzPW9bMV0pe2lmKDk9PT1sKXtpZihhPXQuZ2V0 RWxlbWVudEJ5SWQocyksIWF8fCFhLnBhcmVudE5vZGUpcmV0dXJuIG47aWYoYS5p ZD09PXMpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYodC5vd25lckRvY3VtZW50 JiYoYT10Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocykpJiZ2KHQsYSkm JmEuaWQ9PT1zKXJldHVybiBuLnB1c2goYSksbn1lbHNle2lmKG9bMl0pcmV0dXJu IE0uYXBwbHkobix0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpKSxuO2lmKChzPW9b M10pJiZyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnQuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZSlyZXR1cm4gTS5hcHBseShuLHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt ZShzKSksbn1pZihyLnFzYSYmKCFnfHwhZy50ZXN0KGUpKSl7aWYobT1kPWIseT10 LHg9OT09PWwmJmUsMT09PWwmJiJvYmplY3QiIT09dC5ub2RlTmFtZS50b0xvd2Vy Q2FzZSgpKXtjPWJ0KGUpLChkPXQuZ2V0QXR0cmlidXRlKCJpZCIpKT9tPWQucmVw bGFjZShudCwiXFwkJiIpOnQuc2V0QXR0cmlidXRlKCJpZCIsbSksbT0iW2lkPSci K20rIiddICIsdT1jLmxlbmd0aDt3aGlsZSh1LS0pY1t1XT1tK3h0KGNbdV0pO3k9 Vi50ZXN0KGUpJiZ0LnBhcmVudE5vZGV8fHQseD1jLmpvaW4oIiwiKX1pZih4KXRy eXtyZXR1cm4gTS5hcHBseShuLHkucXVlcnlTZWxlY3RvckFsbCh4KSksbn1jYXRj aChUKXt9ZmluYWxseXtkfHx0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVy biBBdChlLnJlcGxhY2UoeiwiJDEiKSx0LG4saSl9ZnVuY3Rpb24gc3QoZSl7cmV0 dXJuIEsudGVzdChlKyIiKX1mdW5jdGlvbiBsdCgpe3ZhciBlPVtdO2Z1bmN0aW9u IHQobixyKXtyZXR1cm4gZS5wdXNoKG4rPSIgIik+by5jYWNoZUxlbmd0aCYmZGVs ZXRlIHRbZS5zaGlmdCgpXSx0W25dPXJ9cmV0dXJuIHR9ZnVuY3Rpb24gdXQoZSl7 cmV0dXJuIGVbYl09ITAsZX1mdW5jdGlvbiBjdChlKXt2YXIgdD1mLmNyZWF0ZUVs ZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2gobil7cmV0dXJuITF9 ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0 KSx0PW51bGx9fWZ1bmN0aW9uIHB0KGUsdCxuKXtlPWUuc3BsaXQoInwiKTt2YXIg cixpPWUubGVuZ3RoLGE9bj9udWxsOnQ7d2hpbGUoaS0tKShyPW8uYXR0ckhhbmRs ZVtlW2ldXSkmJnIhPT10fHwoby5hdHRySGFuZGxlW2VbaV1dPWEpfWZ1bmN0aW9u IGZ0KGUsdCl7dmFyIG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpO3JldHVybiBuJiZu LnNwZWNpZmllZD9uLnZhbHVlOmVbdF09PT0hMD90LnRvTG93ZXJDYXNlKCk6bnVs bH1mdW5jdGlvbiBkdChlLHQpe3JldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBl Ij09PXQudG9Mb3dlckNhc2UoKT8xOjIpfWZ1bmN0aW9uIGh0KGUpe3JldHVybiJp bnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/ZS5kZWZhdWx0VmFsdWU6 dH1mdW5jdGlvbiBndChlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlw ZSYmMT09PXQubm9kZVR5cGUmJih+dC5zb3VyY2VJbmRleHx8RCktKH5lLnNvdXJj ZUluZGV4fHxEKTtpZihyKXJldHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJs aW5nKWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gbXQo ZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNh c2UoKTtyZXR1cm4iaW5wdXQiPT09biYmdC50eXBlPT09ZX19ZnVuY3Rpb24geXQo ZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNh c2UoKTtyZXR1cm4oImlucHV0Ij09PW58fCJidXR0b24iPT09bikmJnQudHlwZT09 PWV9fWZ1bmN0aW9uIHZ0KGUpe3JldHVybiB1dChmdW5jdGlvbih0KXtyZXR1cm4g dD0rdCx1dChmdW5jdGlvbihuLHIpe3ZhciBpLG89ZShbXSxuLmxlbmd0aCx0KSxh PW8ubGVuZ3RoO3doaWxlKGEtLSluW2k9b1thXV0mJihuW2ldPSEocltpXT1uW2ld KSl9KX0pfXM9YXQuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmKGUub3duZXJE b2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0PyJIVE1MIiE9PXQu bm9kZU5hbWU6ITF9LHI9YXQuc3VwcG9ydD17fSxwPWF0LnNldERvY3VtZW50PWZ1 bmN0aW9uKGUpe3ZhciBuPWU/ZS5vd25lckRvY3VtZW50fHxlOncsaT1uLnBhcmVu dFdpbmRvdztyZXR1cm4gbiE9PWYmJjk9PT1uLm5vZGVUeXBlJiZuLmRvY3VtZW50 RWxlbWVudD8oZj1uLGQ9bi5kb2N1bWVudEVsZW1lbnQsaD0hcyhuKSxpJiZpLmZy YW1lRWxlbWVudCYmaS5hdHRhY2hFdmVudCgib25iZWZvcmV1bmxvYWQiLGZ1bmN0 aW9uKCl7cCgpfSksci5hdHRyaWJ1dGVzPWN0KGZ1bmN0aW9uKGUpe3JldHVybiBl LmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIscHQoInR5cGV8aHJlZnxoZWln aHR8d2lkdGgiLGR0LCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhy ZWYiKSkscHQoQixmdCxudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSks ZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxy LmlucHV0PWN0KGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0 PiIsZS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWUu Zmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KSxwdCgidmFsdWUiLGh0 LHIuYXR0cmlidXRlcyYmci5pbnB1dCksci5nZXRFbGVtZW50c0J5VGFnTmFtZT1j dChmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1l bnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLHIu Z2V0RWxlbWVudHNCeUNsYXNzTmFtZT1jdChmdW5jdGlvbihlKXtyZXR1cm4gZS5p bm5lckhUTUw9IjxkaXYgY2xhc3M9J2EnPjwvZGl2PjxkaXYgY2xhc3M9J2EgaSc+ PC9kaXY+IixlLmZpcnN0Q2hpbGQuY2xhc3NOYW1lPSJpIiwyPT09ZS5nZXRFbGVt ZW50c0J5Q2xhc3NOYW1lKCJpIikubGVuZ3RofSksci5nZXRCeUlkPWN0KGZ1bmN0 aW9uKGUpe3JldHVybiBkLmFwcGVuZENoaWxkKGUpLmlkPWIsIW4uZ2V0RWxlbWVu dHNCeU5hbWV8fCFuLmdldEVsZW1lbnRzQnlOYW1lKGIpLmxlbmd0aH0pLHIuZ2V0 QnlJZD8oby5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxl bWVudEJ5SWQhPT1qJiZoKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVy biBuJiZuLnBhcmVudE5vZGU/W25dOltdfX0sby5maWx0ZXIuSUQ9ZnVuY3Rpb24o ZSl7dmFyIHQ9ZS5yZXBsYWNlKHJ0LGl0KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0 dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpPT09dH19KTooZGVsZXRlIG8uZmluZC5J RCxvLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UocnQsaXQp O3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj10eXBlb2YgZS5nZXRBdHRyaWJ1dGVO b2RlIT09aiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBuJiZuLnZh bHVlPT09dH19KSxvLmZpbmQuVEFHPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWU/ZnVu Y3Rpb24oZSxuKXtyZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUh PT1qP24uZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6dH06ZnVuY3Rpb24oZSx0KXt2 YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioi PT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTty ZXR1cm4gcn1yZXR1cm4gb30sby5maW5kLkNMQVNTPXIuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZSYmZnVuY3Rpb24oZSxuKXtyZXR1cm4gdHlwZW9mIG4uZ2V0RWxlbWVu dHNCeUNsYXNzTmFtZSE9PWomJmg/bi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUp OnR9LG09W10sZz1bXSwoci5xc2E9c3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihj dChmdW5jdGlvbihlKXtlLmlubmVySFRNTD0iPHNlbGVjdD48b3B0aW9uIHNlbGVj dGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJb c2VsZWN0ZWRdIikubGVuZ3RofHxnLnB1c2goIlxcWyIrUCsiKig/OnZhbHVlfCIr QisiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGcu cHVzaCgiOmNoZWNrZWQiKX0pLGN0KGZ1bmN0aW9uKGUpe3ZhciB0PW4uY3JlYXRl RWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIp LGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJ0IiwiIiksZS5xdWVyeVNl bGVjdG9yQWxsKCJbdF49JyddIikubGVuZ3RoJiZnLnB1c2goIlsqXiRdPSIrUCsi Kig/OicnfFwiXCIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxl bmd0aHx8Zy5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGUucXVlcnlTZWxl Y3RvckFsbCgiKiw6eCIpLGcucHVzaCgiLC4qOiIpfSkpLChyLm1hdGNoZXNTZWxl Y3Rvcj1zdCh5PWQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxkLm1vek1hdGNoZXNT ZWxlY3Rvcnx8ZC5vTWF0Y2hlc1NlbGVjdG9yfHxkLm1zTWF0Y2hlc1NlbGVjdG9y KSkmJmN0KGZ1bmN0aW9uKGUpe3IuZGlzY29ubmVjdGVkTWF0Y2g9eS5jYWxsKGUs ImRpdiIpLHkuY2FsbChlLCJbcyE9JyddOngiKSxtLnB1c2goIiE9IixJKX0pLGc9 Zy5sZW5ndGgmJlJlZ0V4cChnLmpvaW4oInwiKSksbT1tLmxlbmd0aCYmUmVnRXhw KG0uam9pbigifCIpKSx2PXN0KGQuY29udGFpbnMpfHxkLmNvbXBhcmVEb2N1bWVu dFBvc2l0aW9uP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5k b2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8 fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhy KTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVu dFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFy ZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sci5zb3J0RGV0YWNo ZWQ9Y3QoZnVuY3Rpb24oZSl7cmV0dXJuIDEmZS5jb21wYXJlRG9jdW1lbnRQb3Np dGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLEE9ZC5jb21wYXJlRG9jdW1l bnRQb3NpdGlvbj9mdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBTPSEwLDA7 dmFyIGk9dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmZS5jb21wYXJlRG9jdW1l bnRQb3NpdGlvbiYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KTtyZXR1cm4g aT8xJml8fCFyLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv bihlKT09PWk/ZT09PW58fHYodyxlKT8tMTp0PT09bnx8dih3LHQpPzE6Yz9GLmNh bGwoYyxlKS1GLmNhbGwoYyx0KTowOjQmaT8tMToxOmUuY29tcGFyZURvY3VtZW50 UG9zaXRpb24/LTE6MX06ZnVuY3Rpb24oZSx0KXt2YXIgcixpPTAsbz1lLnBhcmVu dE5vZGUsYT10LnBhcmVudE5vZGUscz1bZV0sbD1bdF07aWYoZT09PXQpcmV0dXJu IFM9ITAsMDtpZighb3x8IWEpcmV0dXJuIGU9PT1uPy0xOnQ9PT1uPzE6bz8tMTph PzE6Yz9GLmNhbGwoYyxlKS1GLmNhbGwoYyx0KTowO2lmKG89PT1hKXJldHVybiBn dChlLHQpO3I9ZTt3aGlsZShyPXIucGFyZW50Tm9kZSlzLnVuc2hpZnQocik7cj10 O3doaWxlKHI9ci5wYXJlbnROb2RlKWwudW5zaGlmdChyKTt3aGlsZShzW2ldPT09 bFtpXSlpKys7cmV0dXJuIGk/Z3Qoc1tpXSxsW2ldKTpzW2ldPT09dz8tMTpsW2ld PT09dz8xOjB9LG4pOmZ9LGF0Lm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4g YXQoZSxudWxsLG51bGwsdCl9LGF0Lm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihl LHQpe2lmKChlLm93bmVyRG9jdW1lbnR8fGUpIT09ZiYmcChlKSx0PXQucmVwbGFj ZShZLCI9JyQxJ10iKSwhKCFyLm1hdGNoZXNTZWxlY3Rvcnx8IWh8fG0mJm0udGVz dCh0KXx8ZyYmZy50ZXN0KHQpKSl0cnl7dmFyIG49eS5jYWxsKGUsdCk7aWYobnx8 ci5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50 Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGkpe31yZXR1cm4gYXQodCxmLG51bGws W2VdKS5sZW5ndGg+MH0sYXQuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4o ZS5vd25lckRvY3VtZW50fHxlKSE9PWYmJnAoZSksdihlLHQpfSxhdC5hdHRyPWZ1 bmN0aW9uKGUsbil7KGUub3duZXJEb2N1bWVudHx8ZSkhPT1mJiZwKGUpO3ZhciBp PW8uYXR0ckhhbmRsZVtuLnRvTG93ZXJDYXNlKCldLGE9aSYmTC5jYWxsKG8uYXR0 ckhhbmRsZSxuLnRvTG93ZXJDYXNlKCkpP2koZSxuLCFoKTp0O3JldHVybiBhPT09 dD9yLmF0dHJpYnV0ZXN8fCFoP2UuZ2V0QXR0cmlidXRlKG4pOihhPWUuZ2V0QXR0 cmlidXRlTm9kZShuKSkmJmEuc3BlY2lmaWVkP2EudmFsdWU6bnVsbDphfSxhdC5l cnJvcj1mdW5jdGlvbihlKXt0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJl Y29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sYXQudW5pcXVlU29ydD1mdW5jdGlv bihlKXt2YXIgdCxuPVtdLGk9MCxvPTA7aWYoUz0hci5kZXRlY3REdXBsaWNhdGVz LGM9IXIuc29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoQSksUyl7d2hpbGUo dD1lW28rK10pdD09PWVbb10mJihpPW4ucHVzaChvKSk7d2hpbGUoaS0tKWUuc3Bs aWNlKG5baV0sMSl9cmV0dXJuIGV9LGE9YXQuZ2V0VGV4dD1mdW5jdGlvbihlKXt2 YXIgdCxuPSIiLHI9MCxpPWUubm9kZVR5cGU7aWYoaSl7aWYoMT09PWl8fDk9PT1p fHwxMT09PWkpe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0Q29udGVudClyZXR1 cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNp Ymxpbmcpbis9YShlKX1lbHNlIGlmKDM9PT1pfHw0PT09aSlyZXR1cm4gZS5ub2Rl VmFsdWV9ZWxzZSBmb3IoO3Q9ZVtyXTtyKyspbis9YSh0KTtyZXR1cm4gbn0sbz1h dC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzp1dCxtYXRj aDpRLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBh cmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7 ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlv dXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihlKXtyZXR1cm4g ZVsxXT1lWzFdLnJlcGxhY2UocnQsaXQpLGVbM109KGVbNF18fGVbNV18fCIiKS5y ZXBsYWNlKHJ0LGl0KSwifj0iPT09ZVsyXSYmKGVbM109IiAiK2VbM10rIiAiKSxl LnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0u dG9Mb3dlckNhc2UoKSwibnRoIj09PWVbMV0uc2xpY2UoMCwzKT8oZVszXXx8YXQu ZXJyb3IoZVswXSksZVs0XT0rKGVbNF0/ZVs1XSsoZVs2XXx8MSk6MiooImV2ZW4i PT09ZVszXXx8Im9kZCI9PT1lWzNdKSksZVs1XT0rKGVbN10rZVs4XXx8Im9kZCI9 PT1lWzNdKSk6ZVszXSYmYXQuZXJyb3IoZVswXSksZX0sUFNFVURPOmZ1bmN0aW9u KGUpe3ZhciBuLHI9IWVbNV0mJmVbMl07cmV0dXJuIFEuQ0hJTEQudGVzdChlWzBd KT9udWxsOihlWzNdJiZlWzRdIT09dD9lWzJdPWVbNF06ciYmSi50ZXN0KHIpJiYo bj1idChyLCEwKSkmJihuPXIuaW5kZXhPZigiKSIsci5sZW5ndGgtbiktci5sZW5n dGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsbiksZVsyXT1yLnNsaWNlKDAsbikpLGUu c2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJl cGxhY2UocnQsaXQpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlv bigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5u b2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3Zh ciB0PU5bZSsiICJdO3JldHVybiB0fHwodD1SZWdFeHAoIihefCIrUCsiKSIrZSsi KCIrUCsifCQpIikpJiZOKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHQudGVzdCgic3Ry aW5nIj09dHlwZW9mIGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZXx8dHlwZW9mIGUu Z2V0QXR0cmlidXRlIT09aiYmZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0p fSxBVFRSOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9 YXQuYXR0cihyLGUpO3JldHVybiBudWxsPT1pPyIhPSI9PT10OnQ/KGkrPSIiLCI9 Ij09PXQ/aT09PW46IiE9Ij09PXQ/aSE9PW46Il49Ij09PXQ/biYmMD09PWkuaW5k ZXhPZihuKToiKj0iPT09dD9uJiZpLmluZGV4T2Yobik+LTE6IiQ9Ij09PXQ/biYm aS5zbGljZSgtbi5sZW5ndGgpPT09bjoifj0iPT09dD8oIiAiK2krIiAiKS5pbmRl eE9mKG4pPi0xOiJ8PSI9PT10P2k9PT1ufHxpLnNsaWNlKDAsbi5sZW5ndGgrMSk9 PT1uKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBv PSJudGgiIT09ZS5zbGljZSgwLDMpLGE9Imxhc3QiIT09ZS5zbGljZSgtNCkscz0i b2YtdHlwZSI9PT10O3JldHVybiAxPT09ciYmMD09PWk/ZnVuY3Rpb24oZSl7cmV0 dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKHQsbixsKXt2YXIgdSxjLHAsZixk LGgsZz1vIT09YT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLG09dC5w YXJlbnROb2RlLHk9cyYmdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHY9IWwmJiFz O2lmKG0pe2lmKG8pe3doaWxlKGcpe3A9dDt3aGlsZShwPXBbZ10paWYocz9wLm5v ZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT15OjE9PT1wLm5vZGVUeXBlKXJldHVybiEx O2g9Zz0ib25seSI9PT1lJiYhaCYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZiho PVthP20uZmlyc3RDaGlsZDptLmxhc3RDaGlsZF0sYSYmdil7Yz1tW2JdfHwobVti XT17fSksdT1jW2VdfHxbXSxkPXVbMF09PT1UJiZ1WzFdLGY9dVswXT09PVQmJnVb Ml0scD1kJiZtLmNoaWxkTm9kZXNbZF07d2hpbGUocD0rK2QmJnAmJnBbZ118fChm PWQ9MCl8fGgucG9wKCkpaWYoMT09PXAubm9kZVR5cGUmJisrZiYmcD09PXQpe2Nb ZV09W1QsZCxmXTticmVha319ZWxzZSBpZih2JiYodT0odFtiXXx8KHRbYl09e30p KVtlXSkmJnVbMF09PT1UKWY9dVsxXTtlbHNlIHdoaWxlKHA9KytkJiZwJiZwW2dd fHwoZj1kPTApfHxoLnBvcCgpKWlmKChzP3Aubm9kZU5hbWUudG9Mb3dlckNhc2Uo KT09PXk6MT09PXAubm9kZVR5cGUpJiYrK2YmJih2JiYoKHBbYl18fChwW2JdPXt9 KSlbZV09W1QsZl0pLHA9PT10KSlicmVhaztyZXR1cm4gZi09aSxmPT09cnx8MD09 PWYlciYmZi9yPj0wfX19LFBTRVVETzpmdW5jdGlvbihlLHQpe3ZhciBuLHI9by5w c2V1ZG9zW2VdfHxvLnNldEZpbHRlcnNbZS50b0xvd2VyQ2FzZSgpXXx8YXQuZXJy b3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitlKTtyZXR1cm4gcltiXT9yKHQpOnIu bGVuZ3RoPjE/KG49W2UsZSwiIix0XSxvLnNldEZpbHRlcnMuaGFzT3duUHJvcGVy dHkoZS50b0xvd2VyQ2FzZSgpKT91dChmdW5jdGlvbihlLG4pe3ZhciBpLG89cihl LHQpLGE9by5sZW5ndGg7d2hpbGUoYS0tKWk9Ri5jYWxsKGUsb1thXSksZVtpXT0h KG5baV09b1thXSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gcihlLDAsbil9KTpyfX0s cHNldWRvczp7bm90OnV0KGZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W10scj1sKGUu cmVwbGFjZSh6LCIkMSIpKTtyZXR1cm4gcltiXT91dChmdW5jdGlvbihlLHQsbixp KXt2YXIgbyxhPXIoZSxudWxsLGksW10pLHM9ZS5sZW5ndGg7d2hpbGUocy0tKShv PWFbc10pJiYoZVtzXT0hKHRbc109bykpfSk6ZnVuY3Rpb24oZSxpLG8pe3JldHVy biB0WzBdPWUscih0LG51bGwsbyxuKSwhbi5wb3AoKX19KSxoYXM6dXQoZnVuY3Rp b24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBhdChlLHQpLmxlbmd0aD4w fX0pLGNvbnRhaW5zOnV0KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXty ZXR1cm4odC50ZXh0Q29udGVudHx8dC5pbm5lclRleHR8fGEodCkpLmluZGV4T2Yo ZSk+LTF9fSksbGFuZzp1dChmdW5jdGlvbihlKXtyZXR1cm4gRy50ZXN0KGV8fCIi KXx8YXQuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrZSksZT1lLnJlcGxhY2Uo cnQsaXQpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24odCl7dmFyIG47ZG8gaWYobj1o P3QubGFuZzp0LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8dC5nZXRBdHRyaWJ1 dGUoImxhbmciKSlyZXR1cm4gbj1uLnRvTG93ZXJDYXNlKCksbj09PWV8fDA9PT1u LmluZGV4T2YoZSsiLSIpO3doaWxlKCh0PXQucGFyZW50Tm9kZSkmJjE9PT10Lm5v ZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24odCl7dmFyIG49ZS5s b2NhdGlvbiYmZS5sb2NhdGlvbi5oYXNoO3JldHVybiBuJiZuLnNsaWNlKDEpPT09 dC5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWR9LGZvY3VzOmZ1bmN0 aW9uKGUpe3JldHVybiBlPT09Zi5hY3RpdmVFbGVtZW50JiYoIWYuaGFzRm9jdXN8 fGYuaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9 LGVuYWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMX0sZGlz YWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9PT0hMH0sY2hlY2tl ZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0 dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5z ZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9k ZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsZS5zZWxlY3RlZD09PSEwfSxl bXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNp YmxpbmcpaWYoZS5ub2RlTmFtZT4iQCJ8fDM9PT1lLm5vZGVUeXBlfHw0PT09ZS5u b2RlVHlwZSlyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3Jl dHVybiFvLnBzZXVkb3MuZW1wdHkoZSl9LGhlYWRlcjpmdW5jdGlvbihlKXtyZXR1 cm4gdHQudGVzdChlLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJu IGV0LnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1l Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0 b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFy IHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRl eHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8 fHQudG9Mb3dlckNhc2UoKT09PWUudHlwZSl9LGZpcnN0OnZ0KGZ1bmN0aW9uKCl7 cmV0dXJuWzBdfSksbGFzdDp2dChmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSks ZXE6dnQoZnVuY3Rpb24oZSx0LG4pe3JldHVyblswPm4/bit0Om5dfSksZXZlbjp2 dChmdW5jdGlvbihlLHQpe3ZhciBuPTA7Zm9yKDt0Pm47bis9MillLnB1c2gobik7 cmV0dXJuIGV9KSxvZGQ6dnQoZnVuY3Rpb24oZSx0KXt2YXIgbj0xO2Zvcig7dD5u O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6dnQoZnVuY3Rpb24oZSx0LG4p e3ZhciByPTA+bj9uK3Q6bjtmb3IoOy0tcj49MDspZS5wdXNoKHIpO3JldHVybiBl fSksZ3Q6dnQoZnVuY3Rpb24oZSx0LG4pe3ZhciByPTA+bj9uK3Q6bjtmb3IoO3Q+ KytyOyllLnB1c2gocik7cmV0dXJuIGV9KX19O2ZvcihuIGlue3JhZGlvOiEwLGNo ZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KW8ucHNldWRv c1tuXT1tdChuKTtmb3IobiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KW8ucHNldWRv c1tuXT15dChuKTtmdW5jdGlvbiBidChlLHQpe3ZhciBuLHIsaSxhLHMsbCx1LGM9 a1tlKyIgIl07aWYoYylyZXR1cm4gdD8wOmMuc2xpY2UoMCk7cz1lLGw9W10sdT1v LnByZUZpbHRlcjt3aGlsZShzKXsoIW58fChyPVguZXhlYyhzKSkpJiYociYmKHM9 cy5zbGljZShyWzBdLmxlbmd0aCl8fHMpLGwucHVzaChpPVtdKSksbj0hMSwocj1V LmV4ZWMocykpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clsw XS5yZXBsYWNlKHosIiAiKX0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2ZvcihhIGlu IG8uZmlsdGVyKSEocj1RW2FdLmV4ZWMocykpfHx1W2FdJiYhKHI9dVthXShyKSl8 fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTphLG1hdGNoZXM6cn0p LHM9cy5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P3MubGVu Z3RoOnM/YXQuZXJyb3IoZSk6ayhlLGwpLnNsaWNlKDApfWZ1bmN0aW9uIHh0KGUp e3ZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO2Zvcig7bj50O3QrKylyKz1lW3RdLnZh bHVlO3JldHVybiByfWZ1bmN0aW9uIHd0KGUsdCxuKXt2YXIgcj10LmRpcixvPW4m JiJwYXJlbnROb2RlIj09PXIsYT1DKys7cmV0dXJuIHQuZmlyc3Q/ZnVuY3Rpb24o dCxuLGkpe3doaWxlKHQ9dFtyXSlpZigxPT09dC5ub2RlVHlwZXx8bylyZXR1cm4g ZSh0LG4saSl9OmZ1bmN0aW9uKHQsbixzKXt2YXIgbCx1LGMscD1UKyIgIithO2lm KHMpe3doaWxlKHQ9dFtyXSlpZigoMT09PXQubm9kZVR5cGV8fG8pJiZlKHQsbixz KSlyZXR1cm4hMH1lbHNlIHdoaWxlKHQ9dFtyXSlpZigxPT09dC5ub2RlVHlwZXx8 bylpZihjPXRbYl18fCh0W2JdPXt9KSwodT1jW3JdKSYmdVswXT09PXApe2lmKChs PXVbMV0pPT09ITB8fGw9PT1pKXJldHVybiBsPT09ITB9ZWxzZSBpZih1PWNbcl09 W3BdLHVbMV09ZSh0LG4scyl8fGksdVsxXT09PSEwKXJldHVybiEwfX1mdW5jdGlv biBUdChlKXtyZXR1cm4gZS5sZW5ndGg+MT9mdW5jdGlvbih0LG4scil7dmFyIGk9 ZS5sZW5ndGg7d2hpbGUoaS0tKWlmKCFlW2ldKHQsbixyKSlyZXR1cm4hMTtyZXR1 cm4hMH06ZVswXX1mdW5jdGlvbiBDdChlLHQsbixyLGkpe3ZhciBvLGE9W10scz0w LGw9ZS5sZW5ndGgsdT1udWxsIT10O2Zvcig7bD5zO3MrKykobz1lW3NdKSYmKCFu fHxuKG8scixpKSkmJihhLnB1c2gobyksdSYmdC5wdXNoKHMpKTtyZXR1cm4gYX1m dW5jdGlvbiBOdChlLHQsbixyLGksbyl7cmV0dXJuIHImJiFyW2JdJiYocj1OdChy KSksaSYmIWlbYl0mJihpPU50KGksbykpLHV0KGZ1bmN0aW9uKG8sYSxzLGwpe3Zh ciB1LGMscCxmPVtdLGQ9W10saD1hLmxlbmd0aCxnPW98fFN0KHR8fCIqIixzLm5v ZGVUeXBlP1tzXTpzLFtdKSxtPSFlfHwhbyYmdD9nOkN0KGcsZixlLHMsbCkseT1u P2l8fChvP2U6aHx8cik/W106YTptO2lmKG4mJm4obSx5LHMsbCkscil7dT1DdCh5 LGQpLHIodSxbXSxzLGwpLGM9dS5sZW5ndGg7d2hpbGUoYy0tKShwPXVbY10pJiYo eVtkW2NdXT0hKG1bZFtjXV09cCkpfWlmKG8pe2lmKGl8fGUpe2lmKGkpe3U9W10s Yz15Lmxlbmd0aDt3aGlsZShjLS0pKHA9eVtjXSkmJnUucHVzaChtW2NdPXApO2ko bnVsbCx5PVtdLHUsbCl9Yz15Lmxlbmd0aDt3aGlsZShjLS0pKHA9eVtjXSkmJih1 PWk/Ri5jYWxsKG8scCk6ZltjXSk+LTEmJihvW3VdPSEoYVt1XT1wKSl9fWVsc2Ug eT1DdCh5PT09YT95LnNwbGljZShoLHkubGVuZ3RoKTp5KSxpP2kobnVsbCxhLHks bCk6TS5hcHBseShhLHkpfSl9ZnVuY3Rpb24ga3QoZSl7dmFyIHQsbixyLGk9ZS5s ZW5ndGgsYT1vLnJlbGF0aXZlW2VbMF0udHlwZV0scz1hfHxvLnJlbGF0aXZlWyIg Il0sbD1hPzE6MCxjPXd0KGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0scywhMCks cD13dChmdW5jdGlvbihlKXtyZXR1cm4gRi5jYWxsKHQsZSk+LTF9LHMsITApLGY9 W2Z1bmN0aW9uKGUsbixyKXtyZXR1cm4hYSYmKHJ8fG4hPT11KXx8KCh0PW4pLm5v ZGVUeXBlP2MoZSxuLHIpOnAoZSxuLHIpKX1dO2Zvcig7aT5sO2wrKylpZihuPW8u cmVsYXRpdmVbZVtsXS50eXBlXSlmPVt3dChUdChmKSxuKV07ZWxzZXtpZihuPW8u ZmlsdGVyW2VbbF0udHlwZV0uYXBwbHkobnVsbCxlW2xdLm1hdGNoZXMpLG5bYl0p e2ZvcihyPSsrbDtpPnI7cisrKWlmKG8ucmVsYXRpdmVbZVtyXS50eXBlXSlicmVh aztyZXR1cm4gTnQobD4xJiZUdChmKSxsPjEmJnh0KGUuc2xpY2UoMCxsLTEpLmNv bmNhdCh7dmFsdWU6IiAiPT09ZVtsLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2Uo eiwiJDEiKSxuLHI+bCYma3QoZS5zbGljZShsLHIpKSxpPnImJmt0KGU9ZS5zbGlj ZShyKSksaT5yJiZ4dChlKSl9Zi5wdXNoKG4pfXJldHVybiBUdChmKX1mdW5jdGlv biBFdChlLHQpe3ZhciBuPTAscj10Lmxlbmd0aD4wLGE9ZS5sZW5ndGg+MCxzPWZ1 bmN0aW9uKHMsbCxjLHAsZCl7dmFyIGgsZyxtLHk9W10sdj0wLGI9IjAiLHg9cyYm W10sdz1udWxsIT1kLEM9dSxOPXN8fGEmJm8uZmluZC5UQUcoIioiLGQmJmwucGFy ZW50Tm9kZXx8bCksaz1UKz1udWxsPT1DPzE6TWF0aC5yYW5kb20oKXx8LjE7Zm9y KHcmJih1PWwhPT1mJiZsLGk9bik7bnVsbCE9KGg9TltiXSk7YisrKXtpZihhJiZo KXtnPTA7d2hpbGUobT1lW2crK10paWYobShoLGwsYykpe3AucHVzaChoKTticmVh a313JiYoVD1rLGk9KytuKX1yJiYoKGg9IW0mJmgpJiZ2LS0scyYmeC5wdXNoKGgp KX1pZih2Kz1iLHImJmIhPT12KXtnPTA7d2hpbGUobT10W2crK10pbSh4LHksbCxj KTtpZihzKXtpZih2PjApd2hpbGUoYi0tKXhbYl18fHlbYl18fCh5W2JdPXEuY2Fs bChwKSk7eT1DdCh5KX1NLmFwcGx5KHAseSksdyYmIXMmJnkubGVuZ3RoPjAmJnYr dC5sZW5ndGg+MSYmYXQudW5pcXVlU29ydChwKX1yZXR1cm4gdyYmKFQ9ayx1PUMp LHh9O3JldHVybiByP3V0KHMpOnN9bD1hdC5jb21waWxlPWZ1bmN0aW9uKGUsdCl7 dmFyIG4scj1bXSxpPVtdLG89RVtlKyIgIl07aWYoIW8pe3R8fCh0PWJ0KGUpKSxu PXQubGVuZ3RoO3doaWxlKG4tLSlvPWt0KHRbbl0pLG9bYl0/ci5wdXNoKG8pOmku cHVzaChvKTtvPUUoZSxFdChpLHIpKX1yZXR1cm4gb307ZnVuY3Rpb24gU3QoZSx0 LG4pe3ZhciByPTAsaT10Lmxlbmd0aDtmb3IoO2k+cjtyKyspYXQoZSx0W3JdLG4p O3JldHVybiBufWZ1bmN0aW9uIEF0KGUsdCxuLGkpe3ZhciBhLHMsdSxjLHAsZj1i dChlKTtpZighaSYmMT09PWYubGVuZ3RoKXtpZihzPWZbMF09ZlswXS5zbGljZSgw KSxzLmxlbmd0aD4yJiYiSUQiPT09KHU9c1swXSkudHlwZSYmci5nZXRCeUlkJiY5 PT09dC5ub2RlVHlwZSYmaCYmby5yZWxhdGl2ZVtzWzFdLnR5cGVdKXtpZih0PShv LmZpbmQuSUQodS5tYXRjaGVzWzBdLnJlcGxhY2UocnQsaXQpLHQpfHxbXSlbMF0s IXQpcmV0dXJuIG47ZT1lLnNsaWNlKHMuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWE9 US5uZWVkc0NvbnRleHQudGVzdChlKT8wOnMubGVuZ3RoO3doaWxlKGEtLSl7aWYo dT1zW2FdLG8ucmVsYXRpdmVbYz11LnR5cGVdKWJyZWFrO2lmKChwPW8uZmluZFtj XSkmJihpPXAodS5tYXRjaGVzWzBdLnJlcGxhY2UocnQsaXQpLFYudGVzdChzWzBd LnR5cGUpJiZ0LnBhcmVudE5vZGV8fHQpKSl7aWYocy5zcGxpY2UoYSwxKSxlPWku bGVuZ3RoJiZ4dChzKSwhZSlyZXR1cm4gTS5hcHBseShuLGkpLG47YnJlYWt9fX1y ZXR1cm4gbChlLGYpKGksdCwhaCxuLFYudGVzdChlKSksbn1vLnBzZXVkb3MubnRo PW8ucHNldWRvcy5lcTtmdW5jdGlvbiBqdCgpe31qdC5wcm90b3R5cGU9by5maWx0 ZXJzPW8ucHNldWRvcyxvLnNldEZpbHRlcnM9bmV3IGp0LHIuc29ydFN0YWJsZT1i LnNwbGl0KCIiKS5zb3J0KEEpLmpvaW4oIiIpPT09YixwKCksWzAsMF0uc29ydChB KSxyLmRldGVjdER1cGxpY2F0ZXM9Uyx4LmZpbmQ9YXQseC5leHByPWF0LnNlbGVj dG9ycyx4LmV4cHJbIjoiXT14LmV4cHIucHNldWRvcyx4LnVuaXF1ZT1hdC51bmlx dWVTb3J0LHgudGV4dD1hdC5nZXRUZXh0LHguaXNYTUxEb2M9YXQuaXNYTUwseC5j b250YWlucz1hdC5jb250YWluc30oZSk7dmFyIE89e307ZnVuY3Rpb24gRihlKXt2 YXIgdD1PW2VdPXt9O3JldHVybiB4LmVhY2goZS5tYXRjaChUKXx8W10sZnVuY3Rp b24oZSxuKXt0W25dPSEwfSksdH14LkNhbGxiYWNrcz1mdW5jdGlvbihlKXtlPSJz dHJpbmciPT10eXBlb2YgZT9PW2VdfHxGKGUpOnguZXh0ZW5kKHt9LGUpO3ZhciBu LHIsaSxvLGEscyxsPVtdLHU9IWUub25jZSYmW10sYz1mdW5jdGlvbih0KXtmb3Io cj1lLm1lbW9yeSYmdCxpPSEwLGE9c3x8MCxzPTAsbz1sLmxlbmd0aCxuPSEwO2wm Jm8+YTthKyspaWYobFthXS5hcHBseSh0WzBdLHRbMV0pPT09ITEmJmUuc3RvcE9u RmFsc2Upe3I9ITE7YnJlYWt9bj0hMSxsJiYodT91Lmxlbmd0aCYmYyh1LnNoaWZ0 KCkpOnI/bD1bXTpwLmRpc2FibGUoKSl9LHA9e2FkZDpmdW5jdGlvbigpe2lmKGwp e3ZhciB0PWwubGVuZ3RoOyhmdW5jdGlvbiBpKHQpe3guZWFjaCh0LGZ1bmN0aW9u KHQsbil7dmFyIHI9eC50eXBlKG4pOyJmdW5jdGlvbiI9PT1yP2UudW5pcXVlJiZw LmhhcyhuKXx8bC5wdXNoKG4pOm4mJm4ubGVuZ3RoJiYic3RyaW5nIiE9PXImJmko bil9KX0pKGFyZ3VtZW50cyksbj9vPWwubGVuZ3RoOnImJihzPXQsYyhyKSl9cmV0 dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBsJiZ4LmVhY2goYXJn dW1lbnRzLGZ1bmN0aW9uKGUsdCl7dmFyIHI7d2hpbGUoKHI9eC5pbkFycmF5KHQs bCxyKSk+LTEpbC5zcGxpY2UociwxKSxuJiYobz49ciYmby0tLGE+PXImJmEtLSl9 KSx0aGlzfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/eC5pbkFycmF5KGUsbCk+ LTE6ISghbHx8IWwubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gbD1b XSxvPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBsPXU9cj10LHRo aXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWx9LGxvY2s6ZnVuY3Rpb24o KXtyZXR1cm4gdT10LHJ8fHAuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlv bigpe3JldHVybiF1fSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiB0PXR8 fFtdLHQ9W2UsdC5zbGljZT90LnNsaWNlKCk6dF0sIWx8fGkmJiF1fHwobj91LnB1 c2godCk6Yyh0KSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBwLmZpcmVX aXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVy biEhaX19O3JldHVybiBwfSx4LmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZSl7 dmFyIHQ9W1sicmVzb2x2ZSIsImRvbmUiLHguQ2FsbGJhY2tzKCJvbmNlIG1lbW9y eSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIseC5DYWxsYmFja3MoIm9u Y2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIseC5D YWxsYmFja3MoIm1lbW9yeSIpXV0sbj0icGVuZGluZyIscj17c3RhdGU6ZnVuY3Rp b24oKXtyZXR1cm4gbn0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZG9uZShh cmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7 dmFyIGU9YXJndW1lbnRzO3JldHVybiB4LkRlZmVycmVkKGZ1bmN0aW9uKG4pe3gu ZWFjaCh0LGZ1bmN0aW9uKHQsbyl7dmFyIGE9b1swXSxzPXguaXNGdW5jdGlvbihl W3RdKSYmZVt0XTtpW29bMV1dKGZ1bmN0aW9uKCl7dmFyIGU9cyYmcy5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7ZSYmeC5pc0Z1bmN0aW9uKGUucHJvbWlzZSk/ZS5wcm9t aXNlKCkuZG9uZShuLnJlc29sdmUpLmZhaWwobi5yZWplY3QpLnByb2dyZXNzKG4u bm90aWZ5KTpuW2ErIldpdGgiXSh0aGlzPT09cj9uLnByb21pc2UoKTp0aGlzLHM/ W2VdOmFyZ3VtZW50cyl9KX0pLGU9bnVsbH0pLnByb21pc2UoKX0scHJvbWlzZTpm dW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT94LmV4dGVuZChlLHIpOnJ9fSxpPXt9 O3JldHVybiByLnBpcGU9ci50aGVuLHguZWFjaCh0LGZ1bmN0aW9uKGUsbyl7dmFy IGE9b1syXSxzPW9bM107cltvWzFdXT1hLmFkZCxzJiZhLmFkZChmdW5jdGlvbigp e249c30sdFsxXmVdWzJdLmRpc2FibGUsdFsyXVsyXS5sb2NrKSxpW29bMF1dPWZ1 bmN0aW9uKCl7cmV0dXJuIGlbb1swXSsiV2l0aCJdKHRoaXM9PT1pP3I6dGhpcyxh cmd1bWVudHMpLHRoaXN9LGlbb1swXSsiV2l0aCJdPWEuZmlyZVdpdGh9KSxyLnBy b21pc2UoaSksZSYmZS5jYWxsKGksaSksaX0sd2hlbjpmdW5jdGlvbihlKXt2YXIg dD0wLG49Zy5jYWxsKGFyZ3VtZW50cykscj1uLmxlbmd0aCxpPTEhPT1yfHxlJiZ4 LmlzRnVuY3Rpb24oZS5wcm9taXNlKT9yOjAsbz0xPT09aT9lOnguRGVmZXJyZWQo KSxhPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7dFtlXT10aGlz LG5bZV09YXJndW1lbnRzLmxlbmd0aD4xP2cuY2FsbChhcmd1bWVudHMpOnIsbj09 PXM/by5ub3RpZnlXaXRoKHQsbik6LS1pfHxvLnJlc29sdmVXaXRoKHQsbil9fSxz LGwsdTtpZihyPjEpZm9yKHM9QXJyYXkociksbD1BcnJheShyKSx1PUFycmF5KHIp O3I+dDt0Kyspblt0XSYmeC5pc0Z1bmN0aW9uKG5bdF0ucHJvbWlzZSk/blt0XS5w cm9taXNlKCkuZG9uZShhKHQsdSxuKSkuZmFpbChvLnJlamVjdCkucHJvZ3Jlc3Mo YSh0LGwscykpOi0taTtyZXR1cm4gaXx8by5yZXNvbHZlV2l0aCh1LG4pLG8ucHJv bWlzZSgpfX0pLHguc3VwcG9ydD1mdW5jdGlvbih0KXt2YXIgbixyLG8scyxsLHUs YyxwLGYsZD1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGQuc2V0QXR0cmlidXRl KCJjbGFzc05hbWUiLCJ0IiksZC5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48 L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcv PiIsbj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil8fFtdLHI9ZC5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiYSIpWzBdLCFyfHwhci5zdHlsZXx8IW4ubGVuZ3RoKXJl dHVybiB0O3M9YS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSx1PXMuYXBwZW5kQ2hp bGQoYS5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksbz1kLmdldEVsZW1lbnRzQnlU YWdOYW1lKCJpbnB1dCIpWzBdLHIuc3R5bGUuY3NzVGV4dD0idG9wOjFweDtmbG9h dDpsZWZ0O29wYWNpdHk6LjUiLHQuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWQuY2xh c3NOYW1lLHQubGVhZGluZ1doaXRlc3BhY2U9Mz09PWQuZmlyc3RDaGlsZC5ub2Rl VHlwZSx0LnRib2R5PSFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxl bmd0aCx0Lmh0bWxTZXJpYWxpemU9ISFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs aW5rIikubGVuZ3RoLHQuc3R5bGU9L3RvcC8udGVzdChyLmdldEF0dHJpYnV0ZSgi c3R5bGUiKSksdC5ocmVmTm9ybWFsaXplZD0iL2EiPT09ci5nZXRBdHRyaWJ1dGUo ImhyZWYiKSx0Lm9wYWNpdHk9L14wLjUvLnRlc3Qoci5zdHlsZS5vcGFjaXR5KSx0 LmNzc0Zsb2F0PSEhci5zdHlsZS5jc3NGbG9hdCx0LmNoZWNrT249ISFvLnZhbHVl LHQub3B0U2VsZWN0ZWQ9dS5zZWxlY3RlZCx0LmVuY3R5cGU9ISFhLmNyZWF0ZUVs ZW1lbnQoImZvcm0iKS5lbmN0eXBlLHQuaHRtbDVDbG9uZT0iPDpuYXY+PC86bmF2 PiIhPT1hLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJI VE1MLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSx0LnNocmlua1dyYXBCbG9j a3M9ITEsdC5waXhlbFBvc2l0aW9uPSExLHQuZGVsZXRlRXhwYW5kbz0hMCx0Lm5v Q2xvbmVFdmVudD0hMCx0LnJlbGlhYmxlTWFyZ2luUmlnaHQ9ITAsdC5ib3hTaXpp bmdSZWxpYWJsZT0hMCxvLmNoZWNrZWQ9ITAsdC5ub0Nsb25lQ2hlY2tlZD1vLmNs b25lTm9kZSghMCkuY2hlY2tlZCxzLmRpc2FibGVkPSEwLHQub3B0RGlzYWJsZWQ9 IXUuZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBkLnRlc3R9Y2F0Y2goaCl7dC5kZWxldGVF eHBhbmRvPSExfW89YS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLG8uc2V0QXR0cmli dXRlKCJ2YWx1ZSIsIiIpLHQuaW5wdXQ9IiI9PT1vLmdldEF0dHJpYnV0ZSgidmFs dWUiKSxvLnZhbHVlPSJ0IixvLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiks dC5yYWRpb1ZhbHVlPSJ0Ij09PW8udmFsdWUsby5zZXRBdHRyaWJ1dGUoImNoZWNr ZWQiLCJ0Iiksby5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksbD1hLmNyZWF0ZURv Y3VtZW50RnJhZ21lbnQoKSxsLmFwcGVuZENoaWxkKG8pLHQuYXBwZW5kQ2hlY2tl ZD1vLmNoZWNrZWQsdC5jaGVja0Nsb25lPWwuY2xvbmVOb2RlKCEwKS5jbG9uZU5v ZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGQuYXR0YWNoRXZlbnQmJihkLmF0dGFj aEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe3Qubm9DbG9uZUV2ZW50PSExfSks ZC5jbG9uZU5vZGUoITApLmNsaWNrKCkpO2ZvcihmIGlue3N1Ym1pdDohMCxjaGFu Z2U6ITAsZm9jdXNpbjohMH0pZC5zZXRBdHRyaWJ1dGUoYz0ib24iK2YsInQiKSx0 W2YrIkJ1YmJsZXMiXT1jIGluIGV8fGQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09 ITE7ZC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGQuY2xvbmVO b2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix0LmNsZWFyQ2xvbmVTdHls ZT0iY29udGVudC1ib3giPT09ZC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcDtmb3IoZiBp biB4KHQpKWJyZWFrO3JldHVybiB0Lm93bkxhc3Q9IjAiIT09Zix4KGZ1bmN0aW9u KCl7dmFyIG4scixvLHM9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNw bGF5OmJsb2NrO2JveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5n OmNvbnRlbnQtYm94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDsiLGw9 YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO2wmJihuPWEuY3JlYXRl RWxlbWVudCgiZGl2Iiksbi5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDow O2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweDtt YXJnaW4tdG9wOjFweCIsbC5hcHBlbmRDaGlsZChuKS5hcHBlbmRDaGlsZChkKSxk LmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48 L3RhYmxlPiIsbz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLG9bMF0uc3R5 bGUuY3NzVGV4dD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6 bm9uZSIscD0wPT09b1swXS5vZmZzZXRIZWlnaHQsb1swXS5zdHlsZS5kaXNwbGF5 PSIiLG9bMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsdC5yZWxpYWJsZUhpZGRlbk9m ZnNldHM9cCYmMD09PW9bMF0ub2Zmc2V0SGVpZ2h0LGQuaW5uZXJIVE1MPSIiLGQu c3R5bGUuY3NzVGV4dD0iYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNp emluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O3Bh ZGRpbmc6MXB4O2JvcmRlcjoxcHg7ZGlzcGxheTpibG9jazt3aWR0aDo0cHg7bWFy Z2luLXRvcDoxJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MSU7Iix4LnN3YXAobCxu dWxsIT1sLnN0eWxlLnpvb20/e3pvb206MX06e30sZnVuY3Rpb24oKXt0LmJveFNp emluZz00PT09ZC5vZmZzZXRXaWR0aH0pLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQu cGl4ZWxQb3NpdGlvbj0iMSUiIT09KGUuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwp fHx7fSkudG9wLHQuYm94U2l6aW5nUmVsaWFibGU9IjRweCI9PT0oZS5nZXRDb21w dXRlZFN0eWxlKGQsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoLHI9ZC5hcHBl bmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxyLnN0eWxlLmNzc1RleHQ9 ZC5zdHlsZS5jc3NUZXh0PXMsci5zdHlsZS5tYXJnaW5SaWdodD1yLnN0eWxlLndp ZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLHQucmVsaWFibGVNYXJnaW5SaWdo dD0hcGFyc2VGbG9hdCgoZS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCl8fHt9KS5t YXJnaW5SaWdodCkpLHR5cGVvZiBkLnN0eWxlLnpvb20hPT1pJiYoZC5pbm5lckhU TUw9IiIsZC5zdHlsZS5jc3NUZXh0PXMrIndpZHRoOjFweDtwYWRkaW5nOjFweDtk aXNwbGF5OmlubGluZTt6b29tOjEiLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0z PT09ZC5vZmZzZXRXaWR0aCxkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkLmlubmVy SFRNTD0iPGRpdj48L2Rpdj4iLGQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4 Iix0LnNocmlua1dyYXBCbG9ja3M9MyE9PWQub2Zmc2V0V2lkdGgsdC5pbmxpbmVC bG9ja05lZWRzTGF5b3V0JiYobC5zdHlsZS56b29tPTEpKSxsLnJlbW92ZUNoaWxk KG4pLG49ZD1vPXI9bnVsbCkKfSksbj1zPWw9dT1yPW89bnVsbCx0fSh7fSk7dmFy IEI9Lyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLFA9LyhbQS1aXSkvZztm dW5jdGlvbiBSKGUsbixyLGkpe2lmKHguYWNjZXB0RGF0YShlKSl7dmFyIG8sYSxz PXguZXhwYW5kbyxsPWUubm9kZVR5cGUsdT1sP3guY2FjaGU6ZSxjPWw/ZVtzXTpl W3NdJiZzO2lmKGMmJnVbY10mJihpfHx1W2NdLmRhdGEpfHxyIT09dHx8InN0cmlu ZyIhPXR5cGVvZiBuKXJldHVybiBjfHwoYz1sP2Vbc109cC5wb3AoKXx8eC5ndWlk Kys6cyksdVtjXXx8KHVbY109bD97fTp7dG9KU09OOngubm9vcH0pLCgib2JqZWN0 Ij09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSYmKGk/dVtjXT14LmV4 dGVuZCh1W2NdLG4pOnVbY10uZGF0YT14LmV4dGVuZCh1W2NdLmRhdGEsbikpLGE9 dVtjXSxpfHwoYS5kYXRhfHwoYS5kYXRhPXt9KSxhPWEuZGF0YSksciE9PXQmJihh W3guY2FtZWxDYXNlKG4pXT1yKSwic3RyaW5nIj09dHlwZW9mIG4/KG89YVtuXSxu dWxsPT1vJiYobz1hW3guY2FtZWxDYXNlKG4pXSkpOm89YSxvfX1mdW5jdGlvbiBX KGUsdCxuKXtpZih4LmFjY2VwdERhdGEoZSkpe3ZhciByLGksbz1lLm5vZGVUeXBl LGE9bz94LmNhY2hlOmUscz1vP2VbeC5leHBhbmRvXTp4LmV4cGFuZG87aWYoYVtz XSl7aWYodCYmKHI9bj9hW3NdOmFbc10uZGF0YSkpe3guaXNBcnJheSh0KT90PXQu Y29uY2F0KHgubWFwKHQseC5jYW1lbENhc2UpKTp0IGluIHI/dD1bdF06KHQ9eC5j YW1lbENhc2UodCksdD10IGluIHI/W3RdOnQuc3BsaXQoIiAiKSksaT10Lmxlbmd0 aDt3aGlsZShpLS0pZGVsZXRlIHJbdFtpXV07aWYobj8hSShyKToheC5pc0VtcHR5 T2JqZWN0KHIpKXJldHVybn0obnx8KGRlbGV0ZSBhW3NdLmRhdGEsSShhW3NdKSkp JiYobz94LmNsZWFuRGF0YShbZV0sITApOnguc3VwcG9ydC5kZWxldGVFeHBhbmRv fHxhIT1hLndpbmRvdz9kZWxldGUgYVtzXTphW3NdPW51bGwpfX19eC5leHRlbmQo e2NhY2hlOnt9LG5vRGF0YTp7YXBwbGV0OiEwLGVtYmVkOiEwLG9iamVjdDoiY2xz aWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0 YTpmdW5jdGlvbihlKXtyZXR1cm4gZT1lLm5vZGVUeXBlP3guY2FjaGVbZVt4LmV4 cGFuZG9dXTplW3guZXhwYW5kb10sISFlJiYhSShlKX0sZGF0YTpmdW5jdGlvbihl LHQsbil7cmV0dXJuIFIoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7 cmV0dXJuIFcoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBSKGUs dCxuLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVyhlLHQs ITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGUpe2lmKGUubm9kZVR5cGUmJjEhPT1l Lm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZSlyZXR1cm4hMTt2YXIgdD1lLm5vZGVO YW1lJiZ4Lm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO3JldHVybiF0 fHx0IT09ITAmJmUuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT10fX0pLHguZm4u ZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxvPW51bGwsYT0wLHM9 dGhpc1swXTtpZihlPT09dCl7aWYodGhpcy5sZW5ndGgmJihvPXguZGF0YShzKSwx PT09cy5ub2RlVHlwZSYmIXguX2RhdGEocywicGFyc2VkQXR0cnMiKSkpe2Zvcihy PXMuYXR0cmlidXRlcztyLmxlbmd0aD5hO2ErKylpPXJbYV0ubmFtZSwwPT09aS5p bmRleE9mKCJkYXRhLSIpJiYoaT14LmNhbWVsQ2FzZShpLnNsaWNlKDUpKSwkKHMs aSxvW2ldKSk7eC5fZGF0YShzLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBvfXJl dHVybiJvYmplY3QiPT10eXBlb2YgZT90aGlzLmVhY2goZnVuY3Rpb24oKXt4LmRh dGEodGhpcyxlKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rp b24oKXt4LmRhdGEodGhpcyxlLG4pfSk6cz8kKHMsZSx4LmRhdGEocyxlKSk6bnVs bH0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7eC5yZW1vdmVEYXRhKHRoaXMsZSl9KX19KTtmdW5jdGlvbiAkKGUsbixy KXtpZihyPT09dCYmMT09PWUubm9kZVR5cGUpe3ZhciBpPSJkYXRhLSIrbi5yZXBs YWNlKFAsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYocj1lLmdldEF0dHJpYnV0ZShp KSwic3RyaW5nIj09dHlwZW9mIHIpe3RyeXtyPSJ0cnVlIj09PXI/ITA6ImZhbHNl Ij09PXI/ITE6Im51bGwiPT09cj9udWxsOityKyIiPT09cj8rcjpCLnRlc3Qocik/ eC5wYXJzZUpTT04ocik6cn1jYXRjaChvKXt9eC5kYXRhKGUsbixyKX1lbHNlIHI9 dH1yZXR1cm4gcn1mdW5jdGlvbiBJKGUpe3ZhciB0O2Zvcih0IGluIGUpaWYoKCJk YXRhIiE9PXR8fCF4LmlzRW1wdHlPYmplY3QoZVt0XSkpJiYidG9KU09OIiE9PXQp cmV0dXJuITE7cmV0dXJuITB9eC5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsbixy KXt2YXIgaTtyZXR1cm4gZT8obj0obnx8ImZ4IikrInF1ZXVlIixpPXguX2RhdGEo ZSxuKSxyJiYoIWl8fHguaXNBcnJheShyKT9pPXguX2RhdGEoZSxuLHgubWFrZUFy cmF5KHIpKTppLnB1c2gocikpLGl8fFtdKTp0fSxkZXF1ZXVlOmZ1bmN0aW9uKGUs dCl7dD10fHwiZngiO3ZhciBuPXgucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5z aGlmdCgpLG89eC5fcXVldWVIb29rcyhlLHQpLGE9ZnVuY3Rpb24oKXt4LmRlcXVl dWUoZSx0KX07ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYm KCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9w LGkuY2FsbChlLGEsbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9v a3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4geC5f ZGF0YShlLG4pfHx4Ll9kYXRhKGUsbix7ZW1wdHk6eC5DYWxsYmFja3MoIm9uY2Ug bWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7eC5fcmVtb3ZlRGF0YShlLHQrInF1ZXVl IikseC5fcmVtb3ZlRGF0YShlLG4pfSl9KX19KSx4LmZuLmV4dGVuZCh7cXVldWU6 ZnVuY3Rpb24oZSxuKXt2YXIgcj0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYm KG49ZSxlPSJmeCIsci0tKSxyPmFyZ3VtZW50cy5sZW5ndGg/eC5xdWV1ZSh0aGlz WzBdLGUpOm49PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9eC5x dWV1ZSh0aGlzLGUsbik7eC5fcXVldWVIb29rcyh0aGlzLGUpLCJmeCI9PT1lJiYi aW5wcm9ncmVzcyIhPT10WzBdJiZ4LmRlcXVldWUodGhpcyxlKX0pfSxkZXF1ZXVl OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt4LmRlcXVl dWUodGhpcyxlKX0pfSxkZWxheTpmdW5jdGlvbihlLHQpe3JldHVybiBlPXguZng/ eC5meC5zcGVlZHNbZV18fGU6ZSx0PXR8fCJmeCIsdGhpcy5xdWV1ZSh0LGZ1bmN0 aW9uKHQsbil7dmFyIHI9c2V0VGltZW91dCh0LGUpO24uc3RvcD1mdW5jdGlvbigp e2NsZWFyVGltZW91dChyKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihlKXtyZXR1 cm4gdGhpcy5xdWV1ZShlfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLG4p e3ZhciByLGk9MSxvPXguRGVmZXJyZWQoKSxhPXRoaXMscz10aGlzLmxlbmd0aCxs PWZ1bmN0aW9uKCl7LS1pfHxvLnJlc29sdmVXaXRoKGEsW2FdKX07InN0cmluZyIh PXR5cGVvZiBlJiYobj1lLGU9dCksZT1lfHwiZngiO3doaWxlKHMtLSlyPXguX2Rh dGEoYVtzXSxlKyJxdWV1ZUhvb2tzIiksciYmci5lbXB0eSYmKGkrKyxyLmVtcHR5 LmFkZChsKSk7cmV0dXJuIGwoKSxvLnByb21pc2Uobil9fSk7dmFyIHosWCxVPS9b XHRcclxuXGZdL2csVj0vXHIvZyxZPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVh fGJ1dHRvbnxvYmplY3QpJC9pLEo9L14oPzphfGFyZWEpJC9pLEc9L14oPzpjaGVj a2VkfHNlbGVjdGVkKSQvaSxRPXguc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsSz14 LnN1cHBvcnQuaW5wdXQ7eC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXty ZXR1cm4geC5hY2Nlc3ModGhpcyx4LmF0dHIsZSx0LGFyZ3VtZW50cy5sZW5ndGg+ MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbigpe3gucmVtb3ZlQXR0cih0aGlzLGUpfSl9LHByb3A6ZnVuY3Rpb24oZSx0 KXtyZXR1cm4geC5hY2Nlc3ModGhpcyx4LnByb3AsZSx0LGFyZ3VtZW50cy5sZW5n dGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9eC5wcm9wRml4 W2VdfHxlLHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2VdPXQsZGVsZXRl IHRoaXNbZV19Y2F0Y2gobil7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihlKXt2YXIg dCxuLHIsaSxvLGE9MCxzPXRoaXMubGVuZ3RoLGw9InN0cmluZyI9PXR5cGVvZiBl JiZlO2lmKHguaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u KHQpe3godGhpcykuYWRkQ2xhc3MoZS5jYWxsKHRoaXMsdCx0aGlzLmNsYXNzTmFt ZSkpfSk7aWYobClmb3IodD0oZXx8IiIpLm1hdGNoKFQpfHxbXTtzPmE7YSsrKWlm KG49dGhpc1thXSxyPTE9PT1uLm5vZGVUeXBlJiYobi5jbGFzc05hbWU/KCIgIitu LmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoVSwiICIpOiIgIikpe289MDt3aGlsZShp PXRbbysrXSkwPnIuaW5kZXhPZigiICIraSsiICIpJiYocis9aSsiICIpO24uY2xh c3NOYW1lPXgudHJpbShyKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rp b24oZSl7dmFyIHQsbixyLGksbyxhPTAscz10aGlzLmxlbmd0aCxsPTA9PT1hcmd1 bWVudHMubGVuZ3RofHwic3RyaW5nIj09dHlwZW9mIGUmJmU7aWYoeC5pc0Z1bmN0 aW9uKGUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7eCh0aGlzKS5yZW1v dmVDbGFzcyhlLmNhbGwodGhpcyx0LHRoaXMuY2xhc3NOYW1lKSl9KTtpZihsKWZv cih0PShlfHwiIikubWF0Y2goVCl8fFtdO3M+YTthKyspaWYobj10aGlzW2FdLHI9 MT09PW4ubm9kZVR5cGUmJihuLmNsYXNzTmFtZT8oIiAiK24uY2xhc3NOYW1lKyIg IikucmVwbGFjZShVLCIgIik6IiIpKXtvPTA7d2hpbGUoaT10W28rK10pd2hpbGUo ci5pbmRleE9mKCIgIitpKyIgIik+PTApcj1yLnJlcGxhY2UoIiAiK2krIiAiLCIg Iik7bi5jbGFzc05hbWU9ZT94LnRyaW0ocik6IiJ9cmV0dXJuIHRoaXN9LHRvZ2ds ZUNsYXNzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIGUscj0iYm9vbGVhbiI9 PXR5cGVvZiB0O3JldHVybiB4LmlzRnVuY3Rpb24oZSk/dGhpcy5lYWNoKGZ1bmN0 aW9uKG4pe3godGhpcykudG9nZ2xlQ2xhc3MoZS5jYWxsKHRoaXMsbix0aGlzLmNs YXNzTmFtZSx0KSx0KX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCJzdHJpbmci PT09bil7dmFyIG8sYT0wLHM9eCh0aGlzKSxsPXQsdT1lLm1hdGNoKFQpfHxbXTt3 aGlsZShvPXVbYSsrXSlsPXI/bDohcy5oYXNDbGFzcyhvKSxzW2w/ImFkZENsYXNz IjoicmVtb3ZlQ2xhc3MiXShvKX1lbHNlKG49PT1pfHwiYm9vbGVhbiI9PT1uKSYm KHRoaXMuY2xhc3NOYW1lJiZ4Ll9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRo aXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8ZT09 PSExPyIiOnguX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIil9KX0saGFz Q2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9IiAiK2UrIiAiLG49MCxyPXRoaXMubGVu Z3RoO2Zvcig7cj5uO24rKylpZigxPT09dGhpc1tuXS5ub2RlVHlwZSYmKCIgIit0 aGlzW25dLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoVSwiICIpLmluZGV4T2YodCk+ PTApcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihlKXt2YXIgbixyLGks bz10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBpPXguaXNGdW5j dGlvbihlKSx0aGlzLmVhY2goZnVuY3Rpb24obil7dmFyIG87MT09PXRoaXMubm9k ZVR5cGUmJihvPWk/ZS5jYWxsKHRoaXMsbix4KHRoaXMpLnZhbCgpKTplLG51bGw9 PW8/bz0iIjoibnVtYmVyIj09dHlwZW9mIG8/bys9IiI6eC5pc0FycmF5KG8pJiYo bz14Lm1hcChvLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSks cj14LnZhbEhvb2tzW3RoaXMudHlwZV18fHgudmFsSG9va3NbdGhpcy5ub2RlTmFt ZS50b0xvd2VyQ2FzZSgpXSxyJiYic2V0ImluIHImJnIuc2V0KHRoaXMsbywidmFs dWUiKSE9PXR8fCh0aGlzLnZhbHVlPW8pKX0pO2lmKG8pcmV0dXJuIHI9eC52YWxI b29rc1tvLnR5cGVdfHx4LnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNhc2Uo KV0sciYmImdldCJpbiByJiYobj1yLmdldChvLCJ2YWx1ZSIpKSE9PXQ/bjoobj1v LnZhbHVlLCJzdHJpbmciPT10eXBlb2Ygbj9uLnJlcGxhY2UoViwiIik6bnVsbD09 bj8iIjpuKX19fSkseC5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5j dGlvbihlKXt2YXIgdD14LmZpbmQuYXR0cihlLCJ2YWx1ZSIpO3JldHVybiBudWxs IT10P3Q6ZS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixy PWUub3B0aW9ucyxpPWUuc2VsZWN0ZWRJbmRleCxvPSJzZWxlY3Qtb25lIj09PWUu dHlwZXx8MD5pLGE9bz9udWxsOltdLHM9bz9pKzE6ci5sZW5ndGgsbD0wPmk/czpv P2k6MDtmb3IoO3M+bDtsKyspaWYobj1yW2xdLCEoIW4uc2VsZWN0ZWQmJmwhPT1p fHwoeC5zdXBwb3J0Lm9wdERpc2FibGVkP24uZGlzYWJsZWQ6bnVsbCE9PW4uZ2V0 QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8bi5wYXJlbnROb2RlLmRpc2FibGVkJiZ4 Lm5vZGVOYW1lKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9eChuKS52 YWwoKSxvKXJldHVybiB0O2EucHVzaCh0KX1yZXR1cm4gYX0sc2V0OmZ1bmN0aW9u KGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPXgubWFrZUFycmF5KHQpLGE9aS5s ZW5ndGg7d2hpbGUoYS0tKXI9aVthXSwoci5zZWxlY3RlZD14LmluQXJyYXkoeChy KS52YWwoKSxvKT49MCkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRl eD0tMSksb319fSxhdHRyOmZ1bmN0aW9uKGUsbixyKXt2YXIgbyxhLHM9ZS5ub2Rl VHlwZTtpZihlJiYzIT09cyYmOCE9PXMmJjIhPT1zKXJldHVybiB0eXBlb2YgZS5n ZXRBdHRyaWJ1dGU9PT1pP3gucHJvcChlLG4scik6KDE9PT1zJiZ4LmlzWE1MRG9j KGUpfHwobj1uLnRvTG93ZXJDYXNlKCksbz14LmF0dHJIb29rc1tuXXx8KHguZXhw ci5tYXRjaC5ib29sLnRlc3Qobik/WDp6KSkscj09PXQ/byYmImdldCJpbiBvJiZu dWxsIT09KGE9by5nZXQoZSxuKSk/YTooYT14LmZpbmQuYXR0cihlLG4pLG51bGw9 PWE/dDphKTpudWxsIT09cj9vJiYic2V0ImluIG8mJihhPW8uc2V0KGUscixuKSkh PT10P2E6KGUuc2V0QXR0cmlidXRlKG4scisiIikscik6KHgucmVtb3ZlQXR0cihl LG4pLHQpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT0wLG89 dCYmdC5tYXRjaChUKTtpZihvJiYxPT09ZS5ub2RlVHlwZSl3aGlsZShuPW9baSsr XSlyPXgucHJvcEZpeFtuXXx8bix4LmV4cHIubWF0Y2guYm9vbC50ZXN0KG4pP0sm JlF8fCFHLnRlc3Qobik/ZVtyXT0hMTplW3guY2FtZWxDYXNlKCJkZWZhdWx0LSIr bildPWVbcl09ITE6eC5hdHRyKGUsbiwiIiksZS5yZW1vdmVBdHRyaWJ1dGUoUT9u OnIpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlLHQpe2lmKCF4LnN1 cHBvcnQucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJngubm9kZU5hbWUoZSwiaW5w dXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUi LHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9y IiwiY2xhc3MiOiJjbGFzc05hbWUifSxwcm9wOmZ1bmN0aW9uKGUsbixyKXt2YXIg aSxvLGEscz1lLm5vZGVUeXBlO2lmKGUmJjMhPT1zJiY4IT09cyYmMiE9PXMpcmV0 dXJuIGE9MSE9PXN8fCF4LmlzWE1MRG9jKGUpLGEmJihuPXgucHJvcEZpeFtuXXx8 bixvPXgucHJvcEhvb2tzW25dKSxyIT09dD9vJiYic2V0ImluIG8mJihpPW8uc2V0 KGUscixuKSkhPT10P2k6ZVtuXT1yOm8mJiJnZXQiaW4gbyYmbnVsbCE9PShpPW8u Z2V0KGUsbikpP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0 aW9uKGUpe3ZhciB0PXguZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/ cGFyc2VJbnQodCwxMCk6WS50ZXN0KGUubm9kZU5hbWUpfHxKLnRlc3QoZS5ub2Rl TmFtZSkmJmUuaHJlZj8wOi0xfX19fSksWD17c2V0OmZ1bmN0aW9uKGUsdCxuKXty ZXR1cm4gdD09PSExP3gucmVtb3ZlQXR0cihlLG4pOksmJlF8fCFHLnRlc3Qobik/ ZS5zZXRBdHRyaWJ1dGUoIVEmJngucHJvcEZpeFtuXXx8bixuKTplW3guY2FtZWxD YXNlKCJkZWZhdWx0LSIrbildPWVbbl09ITAsbn19LHguZWFjaCh4LmV4cHIubWF0 Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLG4pe3ZhciBy PXguZXhwci5hdHRySGFuZGxlW25dfHx4LmZpbmQuYXR0cjt4LmV4cHIuYXR0ckhh bmRsZVtuXT1LJiZRfHwhRy50ZXN0KG4pP2Z1bmN0aW9uKGUsbixpKXt2YXIgbz14 LmV4cHIuYXR0ckhhbmRsZVtuXSxhPWk/dDooeC5leHByLmF0dHJIYW5kbGVbbl09 dCkhPXIoZSxuLGkpP24udG9Mb3dlckNhc2UoKTpudWxsO3JldHVybiB4LmV4cHIu YXR0ckhhbmRsZVtuXT1vLGF9OmZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gcj90OmVb eC5jYW1lbENhc2UoImRlZmF1bHQtIituKV0/bi50b0xvd2VyQ2FzZSgpOm51bGx9 fSksSyYmUXx8KHguYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oZSxuLHIp e3JldHVybiB4Lm5vZGVOYW1lKGUsImlucHV0Iik/KGUuZGVmYXVsdFZhbHVlPW4s dCk6eiYmei5zZXQoZSxuLHIpfX0pLFF8fCh6PXtzZXQ6ZnVuY3Rpb24oZSxuLHIp e3ZhciBpPWUuZ2V0QXR0cmlidXRlTm9kZShyKTtyZXR1cm4gaXx8ZS5zZXRBdHRy aWJ1dGVOb2RlKGk9ZS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShyKSks aS52YWx1ZT1uKz0iIiwidmFsdWUiPT09cnx8bj09PWUuZ2V0QXR0cmlidXRlKHIp P246dH19LHguZXhwci5hdHRySGFuZGxlLmlkPXguZXhwci5hdHRySGFuZGxlLm5h bWU9eC5leHByLmF0dHJIYW5kbGUuY29vcmRzPWZ1bmN0aW9uKGUsbixyKXt2YXIg aTtyZXR1cm4gcj90OihpPWUuZ2V0QXR0cmlidXRlTm9kZShuKSkmJiIiIT09aS52 YWx1ZT9pLnZhbHVlOm51bGx9LHgudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rp b24oZSxuKXt2YXIgcj1lLmdldEF0dHJpYnV0ZU5vZGUobik7cmV0dXJuIHImJnIu c3BlY2lmaWVkP3IudmFsdWU6dH0sc2V0Onouc2V0fSx4LmF0dHJIb29rcy5jb250 ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihlLHQsbil7ei5zZXQoZSwiIj09PXQ/ ITE6dCxuKX19LHguZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oZSxu KXt4LmF0dHJIb29rc1tuXT17c2V0OmZ1bmN0aW9uKGUscil7cmV0dXJuIiI9PT1y PyhlLnNldEF0dHJpYnV0ZShuLCJhdXRvIikscik6dH19fSkpLHguc3VwcG9ydC5o cmVmTm9ybWFsaXplZHx8eC5lYWNoKFsiaHJlZiIsInNyYyJdLGZ1bmN0aW9uKGUs dCl7eC5wcm9wSG9va3NbdF09e2dldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRB dHRyaWJ1dGUodCw0KX19fSkseC5zdXBwb3J0LnN0eWxlfHwoeC5hdHRySG9va3Mu c3R5bGU9e2dldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZS5jc3NUZXh0fHx0 fSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5jc3NUZXh0PXQrIiJ9 fSkseC5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoeC5wcm9wSG9va3Muc2VsZWN0ZWQ9 e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJih0 LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0 ZWRJbmRleCksbnVsbH19KSx4LmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5Iiwi bWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4i LCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFi bGUiXSxmdW5jdGlvbigpe3gucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRo aXN9KSx4LnN1cHBvcnQuZW5jdHlwZXx8KHgucHJvcEZpeC5lbmN0eXBlPSJlbmNv ZGluZyIpLHguZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3gu dmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLG4pe3JldHVybiB4LmlzQXJy YXkobik/ZS5jaGVja2VkPXguaW5BcnJheSh4KGUpLnZhbCgpLG4pPj0wOnR9fSx4 LnN1cHBvcnQuY2hlY2tPbnx8KHgudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9u KGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjpl LnZhbHVlfSl9KTt2YXIgWj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ks ZXQ9L15rZXkvLHR0PS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxudD0v Xig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8scnQ9L14oW14uXSopKD86 XC4oLispfCkkLztmdW5jdGlvbiBpdCgpe3JldHVybiEwfWZ1bmN0aW9uIG90KCl7 cmV0dXJuITF9ZnVuY3Rpb24gYXQoKXt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVu dH1jYXRjaChlKXt9fXguZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oZSxu LHIsbyxhKXt2YXIgcyxsLHUsYyxwLGYsZCxoLGcsbSx5LHY9eC5fZGF0YShlKTtp Zih2KXtyLmhhbmRsZXImJihjPXIscj1jLmhhbmRsZXIsYT1jLnNlbGVjdG9yKSxy Lmd1aWR8fChyLmd1aWQ9eC5ndWlkKyspLChsPXYuZXZlbnRzKXx8KGw9di5ldmVu dHM9e30pLChmPXYuaGFuZGxlKXx8KGY9di5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0 dXJuIHR5cGVvZiB4PT09aXx8ZSYmeC5ldmVudC50cmlnZ2VyZWQ9PT1lLnR5cGU/ dDp4LmV2ZW50LmRpc3BhdGNoLmFwcGx5KGYuZWxlbSxhcmd1bWVudHMpfSxmLmVs ZW09ZSksbj0obnx8IiIpLm1hdGNoKFQpfHxbIiJdLHU9bi5sZW5ndGg7d2hpbGUo dS0tKXM9cnQuZXhlYyhuW3VdKXx8W10sZz15PXNbMV0sbT0oc1syXXx8IiIpLnNw bGl0KCIuIikuc29ydCgpLGcmJihwPXguZXZlbnQuc3BlY2lhbFtnXXx8e30sZz0o YT9wLmRlbGVnYXRlVHlwZTpwLmJpbmRUeXBlKXx8ZyxwPXguZXZlbnQuc3BlY2lh bFtnXXx8e30sZD14LmV4dGVuZCh7dHlwZTpnLG9yaWdUeXBlOnksZGF0YTpvLGhh bmRsZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjphLG5lZWRzQ29udGV4dDphJiZ4 LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYSksbmFtZXNwYWNlOm0uam9p bigiLiIpfSxjKSwoaD1sW2ddKXx8KGg9bFtnXT1bXSxoLmRlbGVnYXRlQ291bnQ9 MCxwLnNldHVwJiZwLnNldHVwLmNhbGwoZSxvLG0sZikhPT0hMXx8KGUuYWRkRXZl bnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoZyxmLCExKTplLmF0dGFjaEV2 ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrZyxmKSkpLHAuYWRkJiYocC5hZGQuY2Fs bChlLGQpLGQuaGFuZGxlci5ndWlkfHwoZC5oYW5kbGVyLmd1aWQ9ci5ndWlkKSks YT9oLnNwbGljZShoLmRlbGVnYXRlQ291bnQrKywwLGQpOmgucHVzaChkKSx4LmV2 ZW50Lmdsb2JhbFtnXT0hMCk7ZT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCxu LHIsaSl7dmFyIG8sYSxzLGwsdSxjLHAsZixkLGgsZyxtPXguaGFzRGF0YShlKSYm eC5fZGF0YShlKTtpZihtJiYoYz1tLmV2ZW50cykpe3Q9KHR8fCIiKS5tYXRjaChU KXx8WyIiXSx1PXQubGVuZ3RoO3doaWxlKHUtLSlpZihzPXJ0LmV4ZWModFt1XSl8 fFtdLGQ9Zz1zWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtw PXguZXZlbnQuc3BlY2lhbFtkXXx8e30sZD0ocj9wLmRlbGVnYXRlVHlwZTpwLmJp bmRUeXBlKXx8ZCxmPWNbZF18fFtdLHM9c1syXSYmUmVnRXhwKCIoXnxcXC4pIito LmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGw9bz1mLmxlbmd0aDt3 aGlsZShvLS0pYT1mW29dLCFpJiZnIT09YS5vcmlnVHlwZXx8biYmbi5ndWlkIT09 YS5ndWlkfHxzJiYhcy50ZXN0KGEubmFtZXNwYWNlKXx8ciYmciE9PWEuc2VsZWN0 b3ImJigiKioiIT09cnx8IWEuc2VsZWN0b3IpfHwoZi5zcGxpY2UobywxKSxhLnNl bGVjdG9yJiZmLmRlbGVnYXRlQ291bnQtLSxwLnJlbW92ZSYmcC5yZW1vdmUuY2Fs bChlLGEpKTtsJiYhZi5sZW5ndGgmJihwLnRlYXJkb3duJiZwLnRlYXJkb3duLmNh bGwoZSxoLG0uaGFuZGxlKSE9PSExfHx4LnJlbW92ZUV2ZW50KGUsZCxtLmhhbmRs ZSksZGVsZXRlIGNbZF0pfWVsc2UgZm9yKGQgaW4gYyl4LmV2ZW50LnJlbW92ZShl LGQrdFt1XSxuLHIsITApO3guaXNFbXB0eU9iamVjdChjKSYmKGRlbGV0ZSBtLmhh bmRsZSx4Ll9yZW1vdmVEYXRhKGUsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rp b24obixyLGksbyl7dmFyIHMsbCx1LGMscCxmLGQsaD1baXx8YV0sZz12LmNhbGwo biwidHlwZSIpP24udHlwZTpuLG09di5jYWxsKG4sIm5hbWVzcGFjZSIpP24ubmFt ZXNwYWNlLnNwbGl0KCIuIik6W107aWYodT1mPWk9aXx8YSwzIT09aS5ub2RlVHlw ZSYmOCE9PWkubm9kZVR5cGUmJiFudC50ZXN0KGcreC5ldmVudC50cmlnZ2VyZWQp JiYoZy5pbmRleE9mKCIuIik+PTAmJihtPWcuc3BsaXQoIi4iKSxnPW0uc2hpZnQo KSxtLnNvcnQoKSksbD0wPmcuaW5kZXhPZigiOiIpJiYib24iK2csbj1uW3guZXhw YW5kb10/bjpuZXcgeC5FdmVudChnLCJvYmplY3QiPT10eXBlb2YgbiYmbiksbi5p c1RyaWdnZXI9bz8yOjMsbi5uYW1lc3BhY2U9bS5qb2luKCIuIiksbi5uYW1lc3Bh Y2VfcmU9bi5uYW1lc3BhY2U/UmVnRXhwKCIoXnxcXC4pIittLmpvaW4oIlxcLig/ Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsbi5yZXN1bHQ9dCxuLnRhcmdldHx8 KG4udGFyZ2V0PWkpLHI9bnVsbD09cj9bbl06eC5tYWtlQXJyYXkocixbbl0pLHA9 eC5ldmVudC5zcGVjaWFsW2ddfHx7fSxvfHwhcC50cmlnZ2VyfHxwLnRyaWdnZXIu YXBwbHkoaSxyKSE9PSExKSl7aWYoIW8mJiFwLm5vQnViYmxlJiYheC5pc1dpbmRv dyhpKSl7Zm9yKGM9cC5kZWxlZ2F0ZVR5cGV8fGcsbnQudGVzdChjK2cpfHwodT11 LnBhcmVudE5vZGUpO3U7dT11LnBhcmVudE5vZGUpaC5wdXNoKHUpLGY9dTtmPT09 KGkub3duZXJEb2N1bWVudHx8YSkmJmgucHVzaChmLmRlZmF1bHRWaWV3fHxmLnBh cmVudFdpbmRvd3x8ZSl9ZD0wO3doaWxlKCh1PWhbZCsrXSkmJiFuLmlzUHJvcGFn YXRpb25TdG9wcGVkKCkpbi50eXBlPWQ+MT9jOnAuYmluZFR5cGV8fGcscz0oeC5f ZGF0YSh1LCJldmVudHMiKXx8e30pW24udHlwZV0mJnguX2RhdGEodSwiaGFuZGxl IikscyYmcy5hcHBseSh1LHIpLHM9bCYmdVtsXSxzJiZ4LmFjY2VwdERhdGEodSkm JnMuYXBwbHkmJnMuYXBwbHkodSxyKT09PSExJiZuLnByZXZlbnREZWZhdWx0KCk7 aWYobi50eXBlPWcsIW8mJiFuLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIXAuX2Rl ZmF1bHR8fHAuX2RlZmF1bHQuYXBwbHkoaC5wb3AoKSxyKT09PSExKSYmeC5hY2Nl cHREYXRhKGkpJiZsJiZpW2ddJiYheC5pc1dpbmRvdyhpKSl7Zj1pW2xdLGYmJihp W2xdPW51bGwpLHguZXZlbnQudHJpZ2dlcmVkPWc7dHJ5e2lbZ10oKX1jYXRjaCh5 KXt9eC5ldmVudC50cmlnZ2VyZWQ9dCxmJiYoaVtsXT1mKX1yZXR1cm4gbi5yZXN1 bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXtlPXguZXZlbnQuZml4KGUpO3ZhciBu LHIsaSxvLGEscz1bXSxsPWcuY2FsbChhcmd1bWVudHMpLHU9KHguX2RhdGEodGhp cywiZXZlbnRzIil8fHt9KVtlLnR5cGVdfHxbXSxjPXguZXZlbnQuc3BlY2lhbFtl LnR5cGVdfHx7fTtpZihsWzBdPWUsZS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnBy ZURpc3BhdGNofHxjLnByZURpc3BhdGNoLmNhbGwodGhpcyxlKSE9PSExKXtzPXgu ZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGUsdSksbj0wO3doaWxlKChvPXNbbisr XSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2UuY3VycmVudFRhcmdldD1v LmVsZW0sYT0wO3doaWxlKChpPW8uaGFuZGxlcnNbYSsrXSkmJiFlLmlzSW1tZWRp YXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFlLm5hbWVzcGFjZV9yZXx8ZS5uYW1l c3BhY2VfcmUudGVzdChpLm5hbWVzcGFjZSkpJiYoZS5oYW5kbGVPYmo9aSxlLmRh dGE9aS5kYXRhLHI9KCh4LmV2ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV18fHt9KS5o YW5kbGV8fGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLGwpLHIhPT10JiYoZS5yZXN1 bHQ9cik9PT0hMSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlv bigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5jYWxs KHRoaXMsZSksZS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLG4pe3ZhciBy LGksbyxhLHM9W10sbD1uLmRlbGVnYXRlQ291bnQsdT1lLnRhcmdldDtpZihsJiZ1 Lm5vZGVUeXBlJiYoIWUuYnV0dG9ufHwiY2xpY2siIT09ZS50eXBlKSlmb3IoO3Uh PXRoaXM7dT11LnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PXUubm9kZVR5cGUmJih1 LmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1lLnR5cGUpKXtmb3Iobz1bXSxhPTA7 bD5hO2ErKylpPW5bYV0scj1pLnNlbGVjdG9yKyIgIixvW3JdPT09dCYmKG9bcl09 aS5uZWVkc0NvbnRleHQ/eChyLHRoaXMpLmluZGV4KHUpPj0wOnguZmluZChyLHRo aXMsbnVsbCxbdV0pLmxlbmd0aCksb1tyXSYmby5wdXNoKGkpO28ubGVuZ3RoJiZz LnB1c2goe2VsZW06dSxoYW5kbGVyczpvfSl9cmV0dXJuIG4ubGVuZ3RoPmwmJnMu cHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOm4uc2xpY2UobCl9KSxzfSxmaXg6ZnVu Y3Rpb24oZSl7aWYoZVt4LmV4cGFuZG9dKXJldHVybiBlO3ZhciB0LG4scixpPWUu dHlwZSxvPWUscz10aGlzLmZpeEhvb2tzW2ldO3N8fCh0aGlzLmZpeEhvb2tzW2ld PXM9dHQudGVzdChpKT90aGlzLm1vdXNlSG9va3M6ZXQudGVzdChpKT90aGlzLmtl eUhvb2tzOnt9KSxyPXMucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcyk6 dGhpcy5wcm9wcyxlPW5ldyB4LkV2ZW50KG8pLHQ9ci5sZW5ndGg7d2hpbGUodC0t KW49clt0XSxlW25dPW9bbl07cmV0dXJuIGUudGFyZ2V0fHwoZS50YXJnZXQ9by5z cmNFbGVtZW50fHxhKSwzPT09ZS50YXJnZXQubm9kZVR5cGUmJihlLnRhcmdldD1l LnRhcmdldC5wYXJlbnROb2RlKSxlLm1ldGFLZXk9ISFlLm1ldGFLZXkscy5maWx0 ZXI/cy5maWx0ZXIoZSxvKTplfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2Vs YWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJl bGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNo Ii5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBj aGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24o ZSx0KXtyZXR1cm4gbnVsbD09ZS53aGljaCYmKGUud2hpY2g9bnVsbCE9dC5jaGFy Q29kZT90LmNoYXJDb2RlOnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3Bz OiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zm c2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1l bnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxvLHM9 bi5idXR0b24sbD1uLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1lLnBhZ2VYJiZu dWxsIT1uLmNsaWVudFgmJihpPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGEsbz1p LmRvY3VtZW50RWxlbWVudCxyPWkuYm9keSxlLnBhZ2VYPW4uY2xpZW50WCsobyYm by5zY3JvbGxMZWZ0fHxyJiZyLnNjcm9sbExlZnR8fDApLShvJiZvLmNsaWVudExl ZnR8fHImJnIuY2xpZW50TGVmdHx8MCksZS5wYWdlWT1uLmNsaWVudFkrKG8mJm8u c2Nyb2xsVG9wfHxyJiZyLnNjcm9sbFRvcHx8MCktKG8mJm8uY2xpZW50VG9wfHxy JiZyLmNsaWVudFRvcHx8MCkpLCFlLnJlbGF0ZWRUYXJnZXQmJmwmJihlLnJlbGF0 ZWRUYXJnZXQ9bD09PWUudGFyZ2V0P24udG9FbGVtZW50OmwpLGUud2hpY2h8fHM9 PT10fHwoZS53aGljaD0xJnM/MToyJnM/Mzo0JnM/MjowKSxlfX0sc3BlY2lhbDp7 bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYo dGhpcyE9PWF0KCkmJnRoaXMuZm9jdXMpdHJ5e3JldHVybiB0aGlzLmZvY3VzKCks ITF9Y2F0Y2goZSl7fX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJp Z2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09YXQoKSYmdGhpcy5ibHVyPyh0 aGlzLmJsdXIoKSwhMSk6dH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNr Ont0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHgubm9kZU5hbWUodGhpcywiaW5w dXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5j bGljaygpLCExKTp0fSxfZGVmYXVsdDpmdW5jdGlvbihlKXtyZXR1cm4geC5ub2Rl TmFtZShlLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6 ZnVuY3Rpb24oZSl7ZS5yZXN1bHQhPT10JiYoZS5vcmlnaW5hbEV2ZW50LnJldHVy blZhbHVlPWUucmVzdWx0KX19fSxzaW11bGF0ZTpmdW5jdGlvbihlLHQsbixyKXt2 YXIgaT14LmV4dGVuZChuZXcgeC5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6 ITAsb3JpZ2luYWxFdmVudDp7fX0pO3I/eC5ldmVudC50cmlnZ2VyKGksbnVsbCx0 KTp4LmV2ZW50LmRpc3BhdGNoLmNhbGwodCxpKSxpLmlzRGVmYXVsdFByZXZlbnRl ZCgpJiZuLnByZXZlbnREZWZhdWx0KCl9fSx4LnJlbW92ZUV2ZW50PWEucmVtb3Zl RXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3Rl bmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX06ZnVuY3Rpb24oZSx0 LG4pe3ZhciByPSJvbiIrdDtlLmRldGFjaEV2ZW50JiYodHlwZW9mIGVbcl09PT1p JiYoZVtyXT1udWxsKSxlLmRldGFjaEV2ZW50KHIsbikpfSx4LkV2ZW50PWZ1bmN0 aW9uKGUsbil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB4LkV2ZW50PyhlJiZlLnR5 cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5p c0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHxlLnJldHVyblZh bHVlPT09ITF8fGUuZ2V0UHJldmVudERlZmF1bHQmJmUuZ2V0UHJldmVudERlZmF1 bHQoKT9pdDpvdCk6dGhpcy50eXBlPWUsbiYmeC5leHRlbmQodGhpcyxuKSx0aGlz LnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8eC5ub3coKSx0aGlzW3guZXhwYW5k b109ITAsdCk6bmV3IHguRXZlbnQoZSxuKX0seC5FdmVudC5wcm90b3R5cGU9e2lz RGVmYXVsdFByZXZlbnRlZDpvdCxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpvdCxpc0lt bWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpvdCxwcmV2ZW50RGVmYXVsdDpmdW5j dGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFBy ZXZlbnRlZD1pdCxlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0 KCk6ZS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigp e3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9w cGVkPWl0LGUmJihlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24o KSxlLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpm dW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9aXQs dGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHguZWFjaCh7bW91c2VlbnRlcjoibW91 c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGUsdCl7eC5l dmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6dCxiaW5kVHlwZTp0LGhhbmRs ZTpmdW5jdGlvbihlKXt2YXIgbixyPXRoaXMsaT1lLnJlbGF0ZWRUYXJnZXQsbz1l LmhhbmRsZU9iajtyZXR1cm4oIWl8fGkhPT1yJiYheC5jb250YWlucyhyLGkpKSYm KGUudHlwZT1vLm9yaWdUeXBlLG49by5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1l bnRzKSxlLnR5cGU9dCksbn19fSkseC5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fCh4 LmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiB4 Lm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTooeC5ldmVudC5hZGQodGhpcywiY2xp Y2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihlKXt2YXIgbj1l LnRhcmdldCxyPXgubm9kZU5hbWUobiwiaW5wdXQiKXx8eC5ub2RlTmFtZShuLCJi dXR0b24iKT9uLmZvcm06dDtyJiYheC5fZGF0YShyLCJzdWJtaXRCdWJibGVzIikm Jih4LmV2ZW50LmFkZChyLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oZSl7ZS5f c3VibWl0X2J1YmJsZT0hMH0pLHguX2RhdGEociwic3VibWl0QnViYmxlcyIsITAp KX0pLHQpfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7ZS5fc3VibWl0X2J1YmJs ZSYmKGRlbGV0ZSBlLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWUu aXNUcmlnZ2VyJiZ4LmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50 Tm9kZSxlLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIHgubm9kZU5h bWUodGhpcywiZm9ybSIpPyExOih4LmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1p dCIpLHQpfX0pLHguc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoeC5ldmVudC5zcGVj aWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gWi50ZXN0KHRoaXMu bm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXRo aXMudHlwZSkmJih4LmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hh bmdlIixmdW5jdGlvbihlKXsiY2hlY2tlZCI9PT1lLm9yaWdpbmFsRXZlbnQucHJv cGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLHguZXZlbnQuYWRk KHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGUpe3RoaXMuX2p1c3RfY2hh bmdlZCYmIWUuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSx4LmV2 ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsZSwhMCl9KSksITEpOih4LmV2ZW50 LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihlKXt2 YXIgdD1lLnRhcmdldDtaLnRlc3QodC5ub2RlTmFtZSkmJiF4Ll9kYXRhKHQsImNo YW5nZUJ1YmJsZXMiKSYmKHguZXZlbnQuYWRkKHQsImNoYW5nZS5fY2hhbmdlIixm dW5jdGlvbihlKXshdGhpcy5wYXJlbnROb2RlfHxlLmlzU2ltdWxhdGVkfHxlLmlz VHJpZ2dlcnx8eC5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5v ZGUsZSwhMCl9KSx4Ll9kYXRhKHQsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KSx0KX0s aGFuZGxlOmZ1bmN0aW9uKGUpe3ZhciBuPWUudGFyZ2V0O3JldHVybiB0aGlzIT09 bnx8ZS5pc1NpbXVsYXRlZHx8ZS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1uLnR5cGUm JiJjaGVja2JveCIhPT1uLnR5cGU/ZS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0 aGlzLGFyZ3VtZW50cyk6dH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4geC5l dmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhWi50ZXN0KHRoaXMubm9kZU5h bWUpfX0pLHguc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8eC5lYWNoKHtmb2N1czoi Zm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihlLHQpe3ZhciBuPTAs cj1mdW5jdGlvbihlKXt4LmV2ZW50LnNpbXVsYXRlKHQsZS50YXJnZXQseC5ldmVu dC5maXgoZSksITApfTt4LmV2ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9u KCl7MD09PW4rKyYmYS5hZGRFdmVudExpc3RlbmVyKGUsciwhMCl9LHRlYXJkb3du OmZ1bmN0aW9uKCl7MD09PS0tbiYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGUsciwh MCl9fX0pLHguZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLG4scixpLG8pe3ZhciBh LHM7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXsic3RyaW5nIiE9dHlwZW9mIG4mJihy PXJ8fG4sbj10KTtmb3IoYSBpbiBlKXRoaXMub24oYSxuLHIsZVthXSxvKTtyZXR1 cm4gdGhpc31pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXQpOm51bGw9PWkm Jigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXQpOihpPXIscj1uLG49dCkpLGk9 PT0hMSlpPW90O2Vsc2UgaWYoIWkpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1vJiYo cz1pLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIHgoKS5vZmYoZSkscy5hcHBseSh0aGlz LGFyZ3VtZW50cyl9LGkuZ3VpZD1zLmd1aWR8fChzLmd1aWQ9eC5ndWlkKyspKSx0 aGlzLmVhY2goZnVuY3Rpb24oKXt4LmV2ZW50LmFkZCh0aGlzLGUsaSxyLG4pfSl9 LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5vbihlLHQsbixyLDEp fSxvZmY6ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG87aWYoZSYmZS5wcmV2ZW50RGVm YXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIGk9ZS5oYW5kbGVPYmoseChlLmRlbGVn YXRlVGFyZ2V0KS5vZmYoaS5uYW1lc3BhY2U/aS5vcmlnVHlwZSsiLiIraS5uYW1l c3BhY2U6aS5vcmlnVHlwZSxpLnNlbGVjdG9yLGkuaGFuZGxlciksdGhpcztpZigi b2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihvIGluIGUpdGhpcy5vZmYobyxuLGVbb10p O3JldHVybiB0aGlzfXJldHVybihuPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBu KSYmKHI9bixuPXQpLHI9PT0hMSYmKHI9b3QpLHRoaXMuZWFjaChmdW5jdGlvbigp e3guZXZlbnQucmVtb3ZlKHRoaXMsZSxyLG4pfSl9LHRyaWdnZXI6ZnVuY3Rpb24o ZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7eC5ldmVudC50cmlnZ2Vy KGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLG4pe3ZhciBy PXRoaXNbMF07cmV0dXJuIHI/eC5ldmVudC50cmlnZ2VyKGUsbixyLCEwKTp0fX0p O3ZhciBzdD0vXi5bXjojXFtcLixdKiQvLGx0PS9eKD86cGFyZW50c3xwcmV2KD86 VW50aWx8QWxsKSkvLHV0PXguZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsY3Q9e2No aWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07eC5mbi5leHRl bmQoe2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPXRoaXMsaT1yLmxlbmd0 aDtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMucHVzaFN0YWNrKHgo ZSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDtpPnQ7dCsrKWlmKHguY29udGFp bnMoclt0XSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IodD0wO2k+dDt0KyspeC5maW5k KGUsclt0XSxuKTtyZXR1cm4gbj10aGlzLnB1c2hTdGFjayhpPjE/eC51bmlxdWUo bik6biksbi5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAi K2U6ZSxufSxoYXM6ZnVuY3Rpb24oZSl7dmFyIHQsbj14KGUsdGhpcykscj1uLmxl bmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3I+dDt0 KyspaWYoeC5jb250YWlucyh0aGlzLG5bdF0pKXJldHVybiEwfSl9LG5vdDpmdW5j dGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZnQodGhpcyxlfHxbXSwhMCkp fSxmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGZ0KHRo aXMsZXx8W10sITEpKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFmdCh0aGlzLCJz dHJpbmciPT10eXBlb2YgZSYmdXQudGVzdChlKT94KGUpOmV8fFtdLCExKS5sZW5n dGh9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0 aCxvPVtdLGE9dXQudGVzdChlKXx8InN0cmluZyIhPXR5cGVvZiBlP3goZSx0fHx0 aGlzLmNvbnRleHQpOjA7Zm9yKDtpPnI7cisrKWZvcihuPXRoaXNbcl07biYmbiE9 PXQ7bj1uLnBhcmVudE5vZGUpaWYoMTE+bi5ub2RlVHlwZSYmKGE/YS5pbmRleChu KT4tMToxPT09bi5ub2RlVHlwZSYmeC5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUp KSl7bj1vLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubGVu Z3RoPjE/eC51bmlxdWUobyk6byl9LGluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBl PyJzdHJpbmciPT10eXBlb2YgZT94LmluQXJyYXkodGhpc1swXSx4KGUpKTp4Lmlu QXJyYXkoZS5qcXVlcnk/ZVswXTplLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFy ZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1 bmN0aW9uKGUsdCl7dmFyIG49InN0cmluZyI9PXR5cGVvZiBlP3goZSx0KTp4Lm1h a2VBcnJheShlJiZlLm5vZGVUeXBlP1tlXTplKSxyPXgubWVyZ2UodGhpcy5nZXQo KSxuKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeC51bmlxdWUocikpfSxhZGRCYWNr OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZChudWxsPT1lP3RoaXMucHJldk9i amVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKX19KTtmdW5jdGlvbiBwdChl LHQpe2RvIGU9ZVt0XTt3aGlsZShlJiYxIT09ZS5ub2RlVHlwZSk7cmV0dXJuIGV9 eC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3Jl dHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9u KGUpe3JldHVybiB4LmRpcihlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpm dW5jdGlvbihlLHQsbil7cmV0dXJuIHguZGlyKGUsInBhcmVudE5vZGUiLG4pfSxu ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJuZXh0U2libGluZyIpfSxwcmV2 OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4 dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4geC5kaXIoZSwibmV4dFNpYmxpbmciKX0s cHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4geC5kaXIoZSwicHJldmlvdXNTaWJs aW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHguZGlyKGUs Im5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1 cm4geC5kaXIoZSwicHJldmlvdXNTaWJsaW5nIixuKX0sc2libGluZ3M6ZnVuY3Rp b24oZSl7cmV0dXJuIHguc2libGluZygoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RD aGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHguc2libGluZyhl LmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4geC5ub2Rl TmFtZShlLCJpZnJhbWUiKT9lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2lu ZG93LmRvY3VtZW50OngubWVyZ2UoW10sZS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9u KGUsdCl7eC5mbltlXT1mdW5jdGlvbihuLHIpe3ZhciBpPXgubWFwKHRoaXMsdCxu KTtyZXR1cm4iVW50aWwiIT09ZS5zbGljZSgtNSkmJihyPW4pLHImJiJzdHJpbmci PT10eXBlb2YgciYmKGk9eC5maWx0ZXIocixpKSksdGhpcy5sZW5ndGg+MSYmKGN0 W2VdfHwoaT14LnVuaXF1ZShpKSksbHQudGVzdChlKSYmKGk9aS5yZXZlcnNlKCkp KSx0aGlzLnB1c2hTdGFjayhpKX19KSx4LmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9u KGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwx PT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP3guZmluZC5tYXRjaGVzU2VsZWN0 b3IocixlKT9bcl06W106eC5maW5kLm1hdGNoZXMoZSx4LmdyZXAodCxmdW5jdGlv bihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LGRpcjpmdW5jdGlvbihlLG4s cil7dmFyIGk9W10sbz1lW25dO3doaWxlKG8mJjkhPT1vLm5vZGVUeXBlJiYocj09 PXR8fDEhPT1vLm5vZGVUeXBlfHwheChvKS5pcyhyKSkpMT09PW8ubm9kZVR5cGUm JmkucHVzaChvKSxvPW9bbl07cmV0dXJuIGl9LHNpYmxpbmc6ZnVuY3Rpb24oZSx0 KXt2YXIgbj1bXTtmb3IoO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBl JiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufX0pO2Z1bmN0aW9uIGZ0KGUsdCxu KXtpZih4LmlzRnVuY3Rpb24odCkpcmV0dXJuIHguZ3JlcChlLGZ1bmN0aW9uKGUs cil7cmV0dXJuISF0LmNhbGwoZSxyLGUpIT09bn0pO2lmKHQubm9kZVR5cGUpcmV0 dXJuIHguZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dCE9PW59KTtpZigi c3RyaW5nIj09dHlwZW9mIHQpe2lmKHN0LnRlc3QodCkpcmV0dXJuIHguZmlsdGVy KHQsZSxuKTt0PXguZmlsdGVyKHQsZSl9cmV0dXJuIHguZ3JlcChlLGZ1bmN0aW9u KGUpe3JldHVybiB4LmluQXJyYXkoZSx0KT49MCE9PW59KX1mdW5jdGlvbiBkdChl KXt2YXIgdD1odC5zcGxpdCgifCIpLG49ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50 KCk7aWYobi5jcmVhdGVFbGVtZW50KXdoaWxlKHQubGVuZ3RoKW4uY3JlYXRlRWxl bWVudCh0LnBvcCgpKTtyZXR1cm4gbn12YXIgaHQ9ImFiYnJ8YXJ0aWNsZXxhc2lk ZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0 aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxv dXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLGd0PS8g alF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csbXQ9UmVnRXhwKCI8KD86IitodCsi KVtcXHMvPl0iLCJpIikseXQ9L15ccysvLHZ0PS88KD8hYXJlYXxicnxjb2x8ZW1i ZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilc Lz4vZ2ksYnQ9LzwoW1x3Ol0rKS8seHQ9Lzx0Ym9keS9pLHd0PS88fCYjP1x3Kzsv LFR0PS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksQ3Q9L14oPzpjaGVja2JveHxy YWRpbykkL2ksTnQ9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ks a3Q9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLEV0PS9edHJ1ZVwvKC4qKS8s U3Q9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLEF0 PXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3Nl bGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFy ZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9v YmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8 dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJs ZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxl PiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90 YWJsZT4iXSxfZGVmYXVsdDp4LnN1cHBvcnQuaHRtbFNlcmlhbGl6ZT9bMCwiIiwi Il06WzEsIlg8ZGl2PiIsIjwvZGl2PiJdfSxqdD1kdChhKSxEdD1qdC5hcHBlbmRD aGlsZChhLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtBdC5vcHRncm91cD1BdC5vcHRp b24sQXQudGJvZHk9QXQudGZvb3Q9QXQuY29sZ3JvdXA9QXQuY2FwdGlvbj1BdC50 aGVhZCxBdC50aD1BdC50ZCx4LmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihlKXty ZXR1cm4geC5hY2Nlc3ModGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gZT09PXQ/eC50 ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0u b3duZXJEb2N1bWVudHx8YSkuY3JlYXRlVGV4dE5vZGUoZSkpfSxudWxsLGUsYXJn dW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRv bU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlw ZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9 THQodGhpcyxlKTt0LmFwcGVuZENoaWxkKGUpfX0pfSxwcmVwZW5kOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGUpe2lm KDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlz Lm5vZGVUeXBlKXt2YXIgdD1MdCh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5m aXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9t TWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhp cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGUp e3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShl LHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBu LHI9ZT94LmZpbHRlcihlLHRoaXMpOnRoaXMsaT0wO2Zvcig7bnVsbCE9KG49cltp XSk7aSsrKXR8fDEhPT1uLm5vZGVUeXBlfHx4LmNsZWFuRGF0YShGdChuKSksbi5w YXJlbnROb2RlJiYodCYmeC5jb250YWlucyhuLm93bmVyRG9jdW1lbnQsbikmJl90 KEZ0KG4sInNjcmlwdCIpKSxuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobikpO3Jl dHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe3ZhciBlLHQ9MDtmb3IoO251bGwh PShlPXRoaXNbdF0pO3QrKyl7MT09PWUubm9kZVR5cGUmJnguY2xlYW5EYXRhKEZ0 KGUsITEpKTt3aGlsZShlLmZpcnN0Q2hpbGQpZS5yZW1vdmVDaGlsZChlLmZpcnN0 Q2hpbGQpO2Uub3B0aW9ucyYmeC5ub2RlTmFtZShlLCJzZWxlY3QiKSYmKGUub3B0 aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7 cmV0dXJuIGU9bnVsbD09ZT8hMTplLHQ9bnVsbD09dD9lOnQsdGhpcy5tYXAoZnVu Y3Rpb24oKXtyZXR1cm4geC5jbG9uZSh0aGlzLGUsdCl9KX0saHRtbDpmdW5jdGlv bihlKXtyZXR1cm4geC5hY2Nlc3ModGhpcyxmdW5jdGlvbihlKXt2YXIgbj10aGlz WzBdfHx7fSxyPTAsaT10aGlzLmxlbmd0aDtpZihlPT09dClyZXR1cm4gMT09PW4u bm9kZVR5cGU/bi5pbm5lckhUTUwucmVwbGFjZShndCwiIik6dDtpZighKCJzdHJp bmciIT10eXBlb2YgZXx8VHQudGVzdChlKXx8IXguc3VwcG9ydC5odG1sU2VyaWFs aXplJiZtdC50ZXN0KGUpfHwheC5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZ5 dC50ZXN0KGUpfHxBdFsoYnQuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNh c2UoKV0pKXtlPWUucmVwbGFjZSh2dCwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7aT5y O3IrKyluPXRoaXNbcl18fHt9LDE9PT1uLm5vZGVUeXBlJiYoeC5jbGVhbkRhdGEo RnQobiwhMSkpLG4uaW5uZXJIVE1MPWUpO249MH1jYXRjaChvKXt9fW4mJnRoaXMu ZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVw bGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgZT14Lm1hcCh0aGlzLGZ1bmN0aW9uKGUp e3JldHVybltlLm5leHRTaWJsaW5nLGUucGFyZW50Tm9kZV19KSx0PTA7cmV0dXJu IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKG4pe3ZhciByPWVbdCsr XSxpPWVbdCsrXTtpJiYociYmci5wYXJlbnROb2RlIT09aSYmKHI9dGhpcy5uZXh0 U2libGluZykseCh0aGlzKS5yZW1vdmUoKSxpLmluc2VydEJlZm9yZShuLHIpKX0s ITApLHQ/dGhpczp0aGlzLnJlbW92ZSgpfSxkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0 dXJuIHRoaXMucmVtb3ZlKGUsITApfSxkb21NYW5pcDpmdW5jdGlvbihlLHQsbil7 ZT1kLmFwcGx5KFtdLGUpO3ZhciByLGksbyxhLHMsbCx1PTAsYz10aGlzLmxlbmd0 aCxwPXRoaXMsZj1jLTEsaD1lWzBdLGc9eC5pc0Z1bmN0aW9uKGgpO2lmKGd8fCEo MT49Y3x8InN0cmluZyIhPXR5cGVvZiBofHx4LnN1cHBvcnQuY2hlY2tDbG9uZSkm Jk50LnRlc3QoaCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihyKXt2YXIgaT1w LmVxKHIpO2cmJihlWzBdPWguY2FsbCh0aGlzLHIsaS5odG1sKCkpKSxpLmRvbU1h bmlwKGUsdCxuKX0pO2lmKGMmJihsPXguYnVpbGRGcmFnbWVudChlLHRoaXNbMF0u b3duZXJEb2N1bWVudCwhMSwhbiYmdGhpcykscj1sLmZpcnN0Q2hpbGQsMT09PWwu Y2hpbGROb2Rlcy5sZW5ndGgmJihsPXIpLHIpKXtmb3IoYT14Lm1hcChGdChsLCJz Y3JpcHQiKSxIdCksbz1hLmxlbmd0aDtjPnU7dSsrKWk9bCx1IT09ZiYmKGk9eC5j bG9uZShpLCEwLCEwKSxvJiZ4Lm1lcmdlKGEsRnQoaSwic2NyaXB0IikpKSx0LmNh bGwodGhpc1t1XSxpLHUpO2lmKG8pZm9yKHM9YVthLmxlbmd0aC0xXS5vd25lckRv Y3VtZW50LHgubWFwKGEscXQpLHU9MDtvPnU7dSsrKWk9YVt1XSxrdC50ZXN0KGku dHlwZXx8IiIpJiYheC5fZGF0YShpLCJnbG9iYWxFdmFsIikmJnguY29udGFpbnMo cyxpKSYmKGkuc3JjP3guX2V2YWxVcmwoaS5zcmMpOnguZ2xvYmFsRXZhbCgoaS50 ZXh0fHxpLnRleHRDb250ZW50fHxpLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoU3Qs IiIpKSk7bD1yPW51bGx9cmV0dXJuIHRoaXN9fSk7ZnVuY3Rpb24gTHQoZSx0KXty ZXR1cm4geC5ub2RlTmFtZShlLCJ0YWJsZSIpJiZ4Lm5vZGVOYW1lKDE9PT10Lm5v ZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpP2UuZ2V0RWxlbWVudHNCeVRhZ05h bWUoInRib2R5IilbMF18fGUuYXBwZW5kQ2hpbGQoZS5vd25lckRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoInRib2R5IikpOmV9ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIGUu dHlwZT0obnVsbCE9PXguZmluZC5hdHRyKGUsInR5cGUiKSkrIi8iK2UudHlwZSxl fWZ1bmN0aW9uIHF0KGUpe3ZhciB0PUV0LmV4ZWMoZS50eXBlKTtyZXR1cm4gdD9l LnR5cGU9dFsxXTplLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGV9ZnVuY3Rpb24g X3QoZSx0KXt2YXIgbixyPTA7Zm9yKDtudWxsIT0obj1lW3JdKTtyKyspeC5fZGF0 YShuLCJnbG9iYWxFdmFsIiwhdHx8eC5fZGF0YSh0W3JdLCJnbG9iYWxFdmFsIikp fWZ1bmN0aW9uIE10KGUsdCl7aWYoMT09PXQubm9kZVR5cGUmJnguaGFzRGF0YShl KSl7dmFyIG4scixpLG89eC5fZGF0YShlKSxhPXguX2RhdGEodCxvKSxzPW8uZXZl bnRzO2lmKHMpe2RlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fTtmb3IobiBpbiBz KWZvcihyPTAsaT1zW25dLmxlbmd0aDtpPnI7cisrKXguZXZlbnQuYWRkKHQsbixz W25dW3JdKX1hLmRhdGEmJihhLmRhdGE9eC5leHRlbmQoe30sYS5kYXRhKSl9fWZ1 bmN0aW9uIE90KGUsdCl7dmFyIG4scixpO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihu PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwheC5zdXBwb3J0Lm5vQ2xvbmVFdmVu dCYmdFt4LmV4cGFuZG9dKXtpPXguX2RhdGEodCk7Zm9yKHIgaW4gaS5ldmVudHMp eC5yZW1vdmVFdmVudCh0LHIsaS5oYW5kbGUpO3QucmVtb3ZlQXR0cmlidXRlKHgu ZXhwYW5kbyl9InNjcmlwdCI9PT1uJiZ0LnRleHQhPT1lLnRleHQ/KEh0KHQpLnRl eHQ9ZS50ZXh0LHF0KHQpKToib2JqZWN0Ij09PW4/KHQucGFyZW50Tm9kZSYmKHQu b3V0ZXJIVE1MPWUub3V0ZXJIVE1MKSx4LnN1cHBvcnQuaHRtbDVDbG9uZSYmZS5p bm5lckhUTUwmJiF4LnRyaW0odC5pbm5lckhUTUwpJiYodC5pbm5lckhUTUw9ZS5p bm5lckhUTUwpKToiaW5wdXQiPT09biYmQ3QudGVzdChlLnR5cGUpPyh0LmRlZmF1 bHRDaGVja2VkPXQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZSE9PWUudmFsdWUm Jih0LnZhbHVlPWUudmFsdWUpKToib3B0aW9uIj09PW4/dC5kZWZhdWx0U2VsZWN0 ZWQ9dC5zZWxlY3RlZD1lLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PW58fCJ0 ZXh0YXJlYSI9PT1uKSYmKHQuZGVmYXVsdFZhbHVlPWUuZGVmYXVsdFZhbHVlKX19 eC5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGlu c2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VB bGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSx0KXt4LmZuW2VdPWZ1bmN0aW9u KGUpe3ZhciBuLHI9MCxpPVtdLG89eChlKSxhPW8ubGVuZ3RoLTE7Zm9yKDthPj1y O3IrKyluPXI9PT1hP3RoaXM6dGhpcy5jbG9uZSghMCkseChvW3JdKVt0XShuKSxo LmFwcGx5KGksbi5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGkpfX0pO2Z1 bmN0aW9uIEZ0KGUsbil7dmFyIHIsbyxhPTAscz10eXBlb2YgZS5nZXRFbGVtZW50 c0J5VGFnTmFtZSE9PWk/ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShufHwiKiIpOnR5 cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwhPT1pP2UucXVlcnlTZWxlY3RvckFsbChu fHwiKiIpOnQ7aWYoIXMpZm9yKHM9W10scj1lLmNoaWxkTm9kZXN8fGU7bnVsbCE9 KG89clthXSk7YSsrKSFufHx4Lm5vZGVOYW1lKG8sbik/cy5wdXNoKG8pOngubWVy Z2UocyxGdChvLG4pKTtyZXR1cm4gbj09PXR8fG4mJngubm9kZU5hbWUoZSxuKT94 Lm1lcmdlKFtlXSxzKTpzfWZ1bmN0aW9uIEJ0KGUpe0N0LnRlc3QoZS50eXBlKSYm KGUuZGVmYXVsdENoZWNrZWQ9ZS5jaGVja2VkKX14LmV4dGVuZCh7Y2xvbmU6ZnVu Y3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsbD14LmNvbnRhaW5zKGUub3duZXJE b2N1bWVudCxlKTtpZih4LnN1cHBvcnQuaHRtbDVDbG9uZXx8eC5pc1hNTERvYyhl KXx8IW10LnRlc3QoIjwiK2Uubm9kZU5hbWUrIj4iKT9vPWUuY2xvbmVOb2RlKCEw KTooRHQuaW5uZXJIVE1MPWUub3V0ZXJIVE1MLER0LnJlbW92ZUNoaWxkKG89RHQu Zmlyc3RDaGlsZCkpLCEoeC5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmeC5zdXBwb3J0 Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBl fHx4LmlzWE1MRG9jKGUpKSlmb3Iocj1GdChvKSxzPUZ0KGUpLGE9MDtudWxsIT0o aT1zW2FdKTsrK2EpclthXSYmT3QoaSxyW2FdKTtpZih0KWlmKG4pZm9yKHM9c3x8 RnQoZSkscj1yfHxGdChvKSxhPTA7bnVsbCE9KGk9c1thXSk7YSsrKU10KGksclth XSk7ZWxzZSBNdChlLG8pO3JldHVybiByPUZ0KG8sInNjcmlwdCIpLHIubGVuZ3Ro PjAmJl90KHIsIWwmJkZ0KGUsInNjcmlwdCIpKSxyPXM9aT1udWxsLG99LGJ1aWxk RnJhZ21lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsbCx1LGMscD1l Lmxlbmd0aCxmPWR0KHQpLGQ9W10saD0wO2Zvcig7cD5oO2grKylpZihvPWVbaF0s b3x8MD09PW8paWYoIm9iamVjdCI9PT14LnR5cGUobykpeC5tZXJnZShkLG8ubm9k ZVR5cGU/W29dOm8pO2Vsc2UgaWYod3QudGVzdChvKSl7cz1zfHxmLmFwcGVuZENo aWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGw9KGJ0LmV4ZWMobyl8fFsiIiwi Il0pWzFdLnRvTG93ZXJDYXNlKCksYz1BdFtsXXx8QXQuX2RlZmF1bHQscy5pbm5l ckhUTUw9Y1sxXStvLnJlcGxhY2UodnQsIjwkMT48LyQyPiIpK2NbMl0saT1jWzBd O3doaWxlKGktLSlzPXMubGFzdENoaWxkO2lmKCF4LnN1cHBvcnQubGVhZGluZ1do aXRlc3BhY2UmJnl0LnRlc3QobykmJmQucHVzaCh0LmNyZWF0ZVRleHROb2RlKHl0 LmV4ZWMobylbMF0pKSwheC5zdXBwb3J0LnRib2R5KXtvPSJ0YWJsZSIhPT1sfHx4 dC50ZXN0KG8pPyI8dGFibGU+IiE9PWNbMV18fHh0LnRlc3Qobyk/MDpzOnMuZmly c3RDaGlsZCxpPW8mJm8uY2hpbGROb2Rlcy5sZW5ndGg7d2hpbGUoaS0tKXgubm9k ZU5hbWUodT1vLmNoaWxkTm9kZXNbaV0sInRib2R5IikmJiF1LmNoaWxkTm9kZXMu bGVuZ3RoJiZvLnJlbW92ZUNoaWxkKHUpfXgubWVyZ2UoZCxzLmNoaWxkTm9kZXMp LHMudGV4dENvbnRlbnQ9IiI7d2hpbGUocy5maXJzdENoaWxkKXMucmVtb3ZlQ2hp bGQocy5maXJzdENoaWxkKTtzPWYubGFzdENoaWxkfWVsc2UgZC5wdXNoKHQuY3Jl YXRlVGV4dE5vZGUobykpO3MmJmYucmVtb3ZlQ2hpbGQocykseC5zdXBwb3J0LmFw cGVuZENoZWNrZWR8fHguZ3JlcChGdChkLCJpbnB1dCIpLEJ0KSxoPTA7d2hpbGUo bz1kW2grK10paWYoKCFyfHwtMT09PXguaW5BcnJheShvLHIpKSYmKGE9eC5jb250 YWlucyhvLm93bmVyRG9jdW1lbnQsbykscz1GdChmLmFwcGVuZENoaWxkKG8pLCJz Y3JpcHQiKSxhJiZfdChzKSxuKSl7aT0wO3doaWxlKG89c1tpKytdKWt0LnRlc3Qo by50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gcz1udWxsLGZ9LGNsZWFuRGF0 YTpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhLHM9MCxsPXguZXhwYW5kbyx1PXgu Y2FjaGUsYz14LnN1cHBvcnQuZGVsZXRlRXhwYW5kbyxmPXguZXZlbnQuc3BlY2lh bDtmb3IoO251bGwhPShuPWVbc10pO3MrKylpZigodHx8eC5hY2NlcHREYXRhKG4p KSYmKG89bltsXSxhPW8mJnVbb10pKXtpZihhLmV2ZW50cylmb3IociBpbiBhLmV2 ZW50cylmW3JdP3guZXZlbnQucmVtb3ZlKG4scik6eC5yZW1vdmVFdmVudChuLHIs YS5oYW5kbGUpOwp1W29dJiYoZGVsZXRlIHVbb10sYz9kZWxldGUgbltsXTp0eXBl b2Ygbi5yZW1vdmVBdHRyaWJ1dGUhPT1pP24ucmVtb3ZlQXR0cmlidXRlKGwpOm5b bF09bnVsbCxwLnB1c2gobykpfX0sX2V2YWxVcmw6ZnVuY3Rpb24oZSl7cmV0dXJu IHguYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3lu YzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX19KSx4LmZuLmV4dGVuZCh7d3Jh cEFsbDpmdW5jdGlvbihlKXtpZih4LmlzRnVuY3Rpb24oZSkpcmV0dXJuIHRoaXMu ZWFjaChmdW5jdGlvbih0KXt4KHRoaXMpLndyYXBBbGwoZS5jYWxsKHRoaXMsdCkp fSk7aWYodGhpc1swXSl7dmFyIHQ9eChlLHRoaXNbMF0ub3duZXJEb2N1bWVudCku ZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZv cmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUu Zmlyc3RDaGlsZCYmMT09PWUuZmlyc3RDaGlsZC5ub2RlVHlwZSllPWUuZmlyc3RD aGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElu bmVyOmZ1bmN0aW9uKGUpe3JldHVybiB4LmlzRnVuY3Rpb24oZSk/dGhpcy5lYWNo KGZ1bmN0aW9uKHQpe3godGhpcykud3JhcElubmVyKGUuY2FsbCh0aGlzLHQpKX0p OnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXgodGhpcyksbj10LmNvbnRlbnRz KCk7bi5sZW5ndGg/bi53cmFwQWxsKGUpOnQuYXBwZW5kKGUpfSl9LHdyYXA6ZnVu Y3Rpb24oZSl7dmFyIHQ9eC5pc0Z1bmN0aW9uKGUpO3JldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24obil7eCh0aGlzKS53cmFwQWxsKHQ/ZS5jYWxsKHRoaXMsbik6ZSl9 KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChm dW5jdGlvbigpe3gubm9kZU5hbWUodGhpcywiYm9keSIpfHx4KHRoaXMpLnJlcGxh Y2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KTt2YXIgUHQsUnQsV3Qs JHQ9L2FscGhhXChbXildKlwpL2ksSXQ9L29wYWNpdHlccyo9XHMqKFteKV0qKS8s enQ9L14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLFh0PS9eKG5vbmV8dGFibGUo PyEtY1tlYV0pLispLyxVdD0vXm1hcmdpbi8sVnQ9UmVnRXhwKCJeKCIrdysiKSgu KikkIiwiaSIpLFl0PVJlZ0V4cCgiXigiK3crIikoPyFweClbYS16JV0rJCIsImki KSxKdD1SZWdFeHAoIl4oWystXSk9KCIrdysiKSIsImkiKSxHdD17Qk9EWToiYmxv Y2sifSxRdD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4i LGRpc3BsYXk6ImJsb2NrIn0sS3Q9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0 OjQwMH0sWnQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxlbj1bIldl YmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIHRuKGUsdCl7aWYodCBpbiBl KXJldHVybiB0O3ZhciBuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGlj ZSgxKSxyPXQsaT1lbi5sZW5ndGg7d2hpbGUoaS0tKWlmKHQ9ZW5baV0rbix0IGlu IGUpcmV0dXJuIHQ7cmV0dXJuIHJ9ZnVuY3Rpb24gbm4oZSx0KXtyZXR1cm4gZT10 fHxlLCJub25lIj09PXguY3NzKGUsImRpc3BsYXkiKXx8IXguY29udGFpbnMoZS5v d25lckRvY3VtZW50LGUpfWZ1bmN0aW9uIHJuKGUsdCl7dmFyIG4scixpLG89W10s YT0wLHM9ZS5sZW5ndGg7Zm9yKDtzPmE7YSsrKXI9ZVthXSxyLnN0eWxlJiYob1th XT14Ll9kYXRhKHIsIm9sZGRpc3BsYXkiKSxuPXIuc3R5bGUuZGlzcGxheSx0Pyhv W2FdfHwibm9uZSIhPT1ufHwoci5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PXIuc3R5 bGUuZGlzcGxheSYmbm4ocikmJihvW2FdPXguX2RhdGEociwib2xkZGlzcGxheSIs bG4oci5ub2RlTmFtZSkpKSk6b1thXXx8KGk9bm4ociksKG4mJiJub25lIiE9PW58 fCFpKSYmeC5fZGF0YShyLCJvbGRkaXNwbGF5IixpP246eC5jc3MociwiZGlzcGxh eSIpKSkpO2ZvcihhPTA7cz5hO2ErKylyPWVbYV0sci5zdHlsZSYmKHQmJiJub25l IiE9PXIuc3R5bGUuZGlzcGxheSYmIiIhPT1yLnN0eWxlLmRpc3BsYXl8fChyLnN0 eWxlLmRpc3BsYXk9dD9vW2FdfHwiIjoibm9uZSIpKTtyZXR1cm4gZX14LmZuLmV4 dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHguYWNjZXNzKHRoaXMsZnVu Y3Rpb24oZSxuLHIpe3ZhciBpLG8sYT17fSxzPTA7aWYoeC5pc0FycmF5KG4pKXtm b3Iobz1SdChlKSxpPW4ubGVuZ3RoO2k+cztzKyspYVtuW3NdXT14LmNzcyhlLG5b c10sITEsbyk7cmV0dXJuIGF9cmV0dXJuIHIhPT10P3guc3R5bGUoZSxuLHIpOngu Y3NzKGUsbil9LGUsbixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9u KCl7cmV0dXJuIHJuKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHJu KHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ImJvb2xlYW4iPT10eXBl b2YgZTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KHQ/ZTpubih0aGlzKSk/ eCh0aGlzKS5zaG93KCk6eCh0aGlzKS5oaWRlKCl9KX19KSx4LmV4dGVuZCh7Y3Nz SG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVd0 KGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7 Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5l SGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4 OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOnguc3VwcG9ydC5jc3NGbG9h dD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oZSxuLHIs aSl7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxl KXt2YXIgbyxhLHMsbD14LmNhbWVsQ2FzZShuKSx1PWUuc3R5bGU7aWYobj14LmNz c1Byb3BzW2xdfHwoeC5jc3NQcm9wc1tsXT10bih1LGwpKSxzPXguY3NzSG9va3Nb bl18fHguY3NzSG9va3NbbF0scj09PXQpcmV0dXJuIHMmJiJnZXQiaW4gcyYmKG89 cy5nZXQoZSwhMSxpKSkhPT10P286dVtuXTtpZihhPXR5cGVvZiByLCJzdHJpbmci PT09YSYmKG89SnQuZXhlYyhyKSkmJihyPShvWzFdKzEpKm9bMl0rcGFyc2VGbG9h dCh4LmNzcyhlLG4pKSxhPSJudW1iZXIiKSwhKG51bGw9PXJ8fCJudW1iZXIiPT09 YSYmaXNOYU4ocil8fCgibnVtYmVyIiE9PWF8fHguY3NzTnVtYmVyW2xdfHwocis9 InB4IikseC5zdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1yfHwwIT09bi5p bmRleE9mKCJiYWNrZ3JvdW5kIil8fCh1W25dPSJpbmhlcml0IikscyYmInNldCJp biBzJiYocj1zLnNldChlLHIsaSkpPT09dCkpKXRyeXt1W25dPXJ9Y2F0Y2goYyl7 fX19LGNzczpmdW5jdGlvbihlLG4scixpKXt2YXIgbyxhLHMsbD14LmNhbWVsQ2Fz ZShuKTtyZXR1cm4gbj14LmNzc1Byb3BzW2xdfHwoeC5jc3NQcm9wc1tsXT10bihl LnN0eWxlLGwpKSxzPXguY3NzSG9va3Nbbl18fHguY3NzSG9va3NbbF0scyYmImdl dCJpbiBzJiYoYT1zLmdldChlLCEwLHIpKSxhPT09dCYmKGE9V3QoZSxuLGkpKSwi bm9ybWFsIj09PWEmJm4gaW4gS3QmJihhPUt0W25dKSwiIj09PXJ8fHI/KG89cGFy c2VGbG9hdChhKSxyPT09ITB8fHguaXNOdW1lcmljKG8pP298fDA6YSk6YX19KSxl LmdldENvbXB1dGVkU3R5bGU/KFJ0PWZ1bmN0aW9uKHQpe3JldHVybiBlLmdldENv bXB1dGVkU3R5bGUodCxudWxsKX0sV3Q9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG8s YSxzPXJ8fFJ0KGUpLGw9cz9zLmdldFByb3BlcnR5VmFsdWUobil8fHNbbl06dCx1 PWUuc3R5bGU7cmV0dXJuIHMmJigiIiE9PWx8fHguY29udGFpbnMoZS5vd25lckRv Y3VtZW50LGUpfHwobD14LnN0eWxlKGUsbikpLFl0LnRlc3QobCkmJlV0LnRlc3Qo bikmJihpPXUud2lkdGgsbz11Lm1pbldpZHRoLGE9dS5tYXhXaWR0aCx1Lm1pbldp ZHRoPXUubWF4V2lkdGg9dS53aWR0aD1sLGw9cy53aWR0aCx1LndpZHRoPWksdS5t aW5XaWR0aD1vLHUubWF4V2lkdGg9YSkpLGx9KTphLmRvY3VtZW50RWxlbWVudC5j dXJyZW50U3R5bGUmJihSdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5jdXJyZW50U3R5 bGV9LFd0PWZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1yfHxSdChlKSxsPXM/ c1tuXTp0LHU9ZS5zdHlsZTtyZXR1cm4gbnVsbD09bCYmdSYmdVtuXSYmKGw9dVtu XSksWXQudGVzdChsKSYmIXp0LnRlc3QobikmJihpPXUubGVmdCxvPWUucnVudGlt ZVN0eWxlLGE9byYmby5sZWZ0LGEmJihvLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVm dCksdS5sZWZ0PSJmb250U2l6ZSI9PT1uPyIxZW0iOmwsbD11LnBpeGVsTGVmdCsi cHgiLHUubGVmdD1pLGEmJihvLmxlZnQ9YSkpLCIiPT09bD8iYXV0byI6bH0pO2Z1 bmN0aW9uIG9uKGUsdCxuKXt2YXIgcj1WdC5leGVjKHQpO3JldHVybiByP01hdGgu bWF4KDAsclsxXS0obnx8MCkpKyhyWzJdfHwicHgiKTp0fWZ1bmN0aW9uIGFuKGUs dCxuLHIsaSl7dmFyIG89bj09PShyPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lk dGgiPT09dD8xOjAsYT0wO2Zvcig7ND5vO28rPTIpIm1hcmdpbiI9PT1uJiYoYSs9 eC5jc3MoZSxuK1p0W29dLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYoYS09eC5j c3MoZSwicGFkZGluZyIrWnRbb10sITAsaSkpLCJtYXJnaW4iIT09biYmKGEtPXgu Y3NzKGUsImJvcmRlciIrWnRbb10rIldpZHRoIiwhMCxpKSkpOihhKz14LmNzcyhl LCJwYWRkaW5nIitadFtvXSwhMCxpKSwicGFkZGluZyIhPT1uJiYoYSs9eC5jc3Mo ZSwiYm9yZGVyIitadFtvXSsiV2lkdGgiLCEwLGkpKSk7cmV0dXJuIGF9ZnVuY3Rp b24gc24oZSx0LG4pe3ZhciByPSEwLGk9IndpZHRoIj09PXQ/ZS5vZmZzZXRXaWR0 aDplLm9mZnNldEhlaWdodCxvPVJ0KGUpLGE9eC5zdXBwb3J0LmJveFNpemluZyYm ImJvcmRlci1ib3giPT09eC5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKTtpZigwPj1p fHxudWxsPT1pKXtpZihpPVd0KGUsdCxvKSwoMD5pfHxudWxsPT1pKSYmKGk9ZS5z dHlsZVt0XSksWXQudGVzdChpKSlyZXR1cm4gaTtyPWEmJih4LnN1cHBvcnQuYm94 U2l6aW5nUmVsaWFibGV8fGk9PT1lLnN0eWxlW3RdKSxpPXBhcnNlRmxvYXQoaSl8 fDB9cmV0dXJuIGkrYW4oZSx0LG58fChhPyJib3JkZXIiOiJjb250ZW50Iikscixv KSsicHgifWZ1bmN0aW9uIGxuKGUpe3ZhciB0PWEsbj1HdFtlXTtyZXR1cm4gbnx8 KG49dW4oZSx0KSwibm9uZSIhPT1uJiZufHwoUHQ9KFB0fHx4KCI8aWZyYW1lIGZy YW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikuY3NzKCJjc3NU ZXh0IiwiZGlzcGxheTpibG9jayAhaW1wb3J0YW50IikpLmFwcGVuZFRvKHQuZG9j dW1lbnRFbGVtZW50KSx0PShQdFswXS5jb250ZW50V2luZG93fHxQdFswXS5jb250 ZW50RG9jdW1lbnQpLmRvY3VtZW50LHQud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxo dG1sPjxib2R5PiIpLHQuY2xvc2UoKSxuPXVuKGUsdCksUHQuZGV0YWNoKCkpLEd0 W2VdPW4pLG59ZnVuY3Rpb24gdW4oZSx0KXt2YXIgbj14KHQuY3JlYXRlRWxlbWVu dChlKSkuYXBwZW5kVG8odC5ib2R5KSxyPXguY3NzKG5bMF0sImRpc3BsYXkiKTty ZXR1cm4gbi5yZW1vdmUoKSxyfXguZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVu Y3Rpb24oZSxuKXt4LmNzc0hvb2tzW25dPXtnZXQ6ZnVuY3Rpb24oZSxyLGkpe3Jl dHVybiByPzA9PT1lLm9mZnNldFdpZHRoJiZYdC50ZXN0KHguY3NzKGUsImRpc3Bs YXkiKSk/eC5zd2FwKGUsUXQsZnVuY3Rpb24oKXtyZXR1cm4gc24oZSxuLGkpfSk6 c24oZSxuLGkpOnR9LHNldDpmdW5jdGlvbihlLHQscil7dmFyIGk9ciYmUnQoZSk7 cmV0dXJuIG9uKGUsdCxyP2FuKGUsbixyLHguc3VwcG9ydC5ib3hTaXppbmcmJiJi b3JkZXItYm94Ij09PXguY3NzKGUsImJveFNpemluZyIsITEsaSksaSk6MCl9fX0p LHguc3VwcG9ydC5vcGFjaXR5fHwoeC5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVu Y3Rpb24oZSx0KXtyZXR1cm4gSXQudGVzdCgodCYmZS5jdXJyZW50U3R5bGU/ZS5j dXJyZW50U3R5bGUuZmlsdGVyOmUuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJz ZUZsb2F0KFJlZ0V4cC4kMSkrIiI6dD8iMSI6IiJ9LHNldDpmdW5jdGlvbihlLHQp e3ZhciBuPWUuc3R5bGUscj1lLmN1cnJlbnRTdHlsZSxpPXguaXNOdW1lcmljKHQp PyJhbHBoYShvcGFjaXR5PSIrMTAwKnQrIikiOiIiLG89ciYmci5maWx0ZXJ8fG4u ZmlsdGVyfHwiIjtuLnpvb209MSwodD49MXx8IiI9PT10KSYmIiI9PT14LnRyaW0o by5yZXBsYWNlKCR0LCIiKSkmJm4ucmVtb3ZlQXR0cmlidXRlJiYobi5yZW1vdmVB dHRyaWJ1dGUoImZpbHRlciIpLCIiPT09dHx8ciYmIXIuZmlsdGVyKXx8KG4uZmls dGVyPSR0LnRlc3Qobyk/by5yZXBsYWNlKCR0LGkpOm8rIiAiK2kpfX0pLHgoZnVu Y3Rpb24oKXt4LnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KHguY3NzSG9v a3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihlLG4pe3JldHVybiBuP3guc3dh cChlLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxXdCxbZSwibWFyZ2luUmlnaHQi XSk6dH19KSwheC5zdXBwb3J0LnBpeGVsUG9zaXRpb24mJnguZm4ucG9zaXRpb24m JnguZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe3guY3NzSG9va3Nb bl09e2dldDpmdW5jdGlvbihlLHIpe3JldHVybiByPyhyPVd0KGUsbiksWXQudGVz dChyKT94KGUpLnBvc2l0aW9uKClbbl0rInB4IjpyKTp0fX19KX0pLHguZXhwciYm eC5leHByLmZpbHRlcnMmJih4LmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24o ZSl7cmV0dXJuIDA+PWUub2Zmc2V0V2lkdGgmJjA+PWUub2Zmc2V0SGVpZ2h0fHwh eC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyYmIm5vbmUiPT09KGUuc3R5 bGUmJmUuc3R5bGUuZGlzcGxheXx8eC5jc3MoZSwiZGlzcGxheSIpKX0seC5leHBy LmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4heC5leHByLmZpbHRl cnMuaGlkZGVuKGUpfSkseC5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3Jk ZXI6IldpZHRoIn0sZnVuY3Rpb24oZSx0KXt4LmNzc0hvb2tzW2UrdF09e2V4cGFu ZDpmdW5jdGlvbihuKXt2YXIgcj0wLGk9e30sbz0ic3RyaW5nIj09dHlwZW9mIG4/ bi5zcGxpdCgiICIpOltuXTtmb3IoOzQ+cjtyKyspaVtlK1p0W3JdK3RdPW9bcl18 fG9bci0yXXx8b1swXTtyZXR1cm4gaX19LFV0LnRlc3QoZSl8fCh4LmNzc0hvb2tz W2UrdF0uc2V0PW9uKX0pO3ZhciBjbj0vJTIwL2cscG49L1xbXF0kLyxmbj0vXHI/ XG4vZyxkbj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ks aG49L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO3guZm4uZXh0 ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4geC5wYXJhbSh0aGlzLnNl cmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVy biB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXgucHJvcCh0aGlzLCJlbGVtZW50 cyIpO3JldHVybiBlP3gubWFrZUFycmF5KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rp b24oKXt2YXIgZT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXgodGhpcyku aXMoIjpkaXNhYmxlZCIpJiZobi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhZG4udGVz dChlKSYmKHRoaXMuY2hlY2tlZHx8IUN0LnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9u KGUsdCl7dmFyIG49eCh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOngu aXNBcnJheShuKT94Lm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFt ZSx2YWx1ZTplLnJlcGxhY2UoZm4sIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFs dWU6bi5yZXBsYWNlKGZuLCJcclxuIil9fSkuZ2V0KCl9fSkseC5wYXJhbT1mdW5j dGlvbihlLG4pe3ZhciByLGk9W10sbz1mdW5jdGlvbihlLHQpe3Q9eC5pc0Z1bmN0 aW9uKHQpP3QoKTpudWxsPT10PyIiOnQsaVtpLmxlbmd0aF09ZW5jb2RlVVJJQ29t cG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQodCl9O2lmKG49PT10JiYo bj14LmFqYXhTZXR0aW5ncyYmeC5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLHgu aXNBcnJheShlKXx8ZS5qcXVlcnkmJiF4LmlzUGxhaW5PYmplY3QoZSkpeC5lYWNo KGUsZnVuY3Rpb24oKXtvKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9y KHIgaW4gZSlnbihyLGVbcl0sbixvKTtyZXR1cm4gaS5qb2luKCImIikucmVwbGFj ZShjbiwiKyIpfTtmdW5jdGlvbiBnbihlLHQsbixyKXt2YXIgaTtpZih4LmlzQXJy YXkodCkpeC5lYWNoKHQsZnVuY3Rpb24odCxpKXtufHxwbi50ZXN0KGUpP3IoZSxp KTpnbihlKyJbIisoIm9iamVjdCI9PXR5cGVvZiBpP3Q6IiIpKyJdIixpLG4scil9 KTtlbHNlIGlmKG58fCJvYmplY3QiIT09eC50eXBlKHQpKXIoZSx0KTtlbHNlIGZv cihpIGluIHQpZ24oZSsiWyIraSsiXSIsdFtpXSxuLHIpfXguZWFjaCgiYmx1ciBm b2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQg Y2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNl b3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVj dCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVu dSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe3guZm5bdF09ZnVuY3Rpb24oZSxu KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24odCxudWxsLGUsbik6 dGhpcy50cmlnZ2VyKHQpfX0pLHguZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihl LHQpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoZSkubW91c2VsZWF2ZSh0fHxlKX0s YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9 LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9 LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxu LHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3Vt ZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIs bil9fSk7dmFyIG1uLHluLHZuPXgubm93KCksYm49L1w/Lyx4bj0vIy4qJC8sd249 LyhbPyZdKV89W14mXSovLFRuPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQv Z20sQ249L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZp bGV8cmVzfHdpZGdldCk6JC8sTm49L14oPzpHRVR8SEVBRCkkLyxrbj0vXlwvXC8v LEVuPS9eKFtcdy4rLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKyl8KXwp LyxTbj14LmZuLmxvYWQsQW49e30sam49e30sRG49IiovIi5jb25jYXQoIioiKTt0 cnl7eW49by5ocmVmfWNhdGNoKExuKXt5bj1hLmNyZWF0ZUVsZW1lbnQoImEiKSx5 bi5ocmVmPSIiLHluPXluLmhyZWZ9bW49RW4uZXhlYyh5bi50b0xvd2VyQ2FzZSgp KXx8W107ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7InN0cmlu ZyIhPXR5cGVvZiB0JiYobj10LHQ9IioiKTt2YXIgcixpPTAsbz10LnRvTG93ZXJD YXNlKCkubWF0Y2goVCl8fFtdO2lmKHguaXNGdW5jdGlvbihuKSl3aGlsZShyPW9b aSsrXSkiKyI9PT1yWzBdPyhyPXIuc2xpY2UoMSl8fCIqIiwoZVtyXT1lW3JdfHxb XSkudW5zaGlmdChuKSk6KGVbcl09ZVtyXXx8W10pLnB1c2gobil9fWZ1bmN0aW9u IHFuKGUsbixyLGkpe3ZhciBvPXt9LGE9ZT09PWpuO2Z1bmN0aW9uIHMobCl7dmFy IHU7cmV0dXJuIG9bbF09ITAseC5lYWNoKGVbbF18fFtdLGZ1bmN0aW9uKGUsbCl7 dmFyIGM9bChuLHIsaSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBjfHxhfHxvW2Nd P2E/ISh1PWMpOnQ6KG4uZGF0YVR5cGVzLnVuc2hpZnQoYykscyhjKSwhMSl9KSx1 fXJldHVybiBzKG4uZGF0YVR5cGVzWzBdKXx8IW9bIioiXSYmcygiKiIpfWZ1bmN0 aW9uIF9uKGUsbil7dmFyIHIsaSxvPXguYWpheFNldHRpbmdzLmZsYXRPcHRpb25z fHx7fTtmb3IoaSBpbiBuKW5baV0hPT10JiYoKG9baV0/ZTpyfHwocj17fSkpW2ld PW5baV0pO3JldHVybiByJiZ4LmV4dGVuZCghMCxlLHIpLGV9eC5mbi5sb2FkPWZ1 bmN0aW9uKGUsbixyKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJlNuKXJldHVybiBT bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGksbyxhLHM9dGhpcyxsPWUuaW5k ZXhPZigiICIpO3JldHVybiBsPj0wJiYoaT1lLnNsaWNlKGwsZS5sZW5ndGgpLGU9 ZS5zbGljZSgwLGwpKSx4LmlzRnVuY3Rpb24obik/KHI9bixuPXQpOm4mJiJvYmpl Y3QiPT10eXBlb2YgbiYmKGE9IlBPU1QiKSxzLmxlbmd0aD4wJiZ4LmFqYXgoe3Vy bDplLHR5cGU6YSxkYXRhVHlwZToiaHRtbCIsZGF0YTpufSkuZG9uZShmdW5jdGlv bihlKXtvPWFyZ3VtZW50cyxzLmh0bWwoaT94KCI8ZGl2PiIpLmFwcGVuZCh4LnBh cnNlSFRNTChlKSkuZmluZChpKTplKX0pLmNvbXBsZXRlKHImJmZ1bmN0aW9uKGUs dCl7cy5lYWNoKHIsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSksdGhpc30seC5l YWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4 RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXt4 LmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSkseC5leHRl bmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5n czp7dXJsOnluLHR5cGU6IkdFVCIsaXNMb2NhbDpDbi50ZXN0KG1uWzFdKSxnbG9i YWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxp Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNj ZXB0czp7IioiOkRuLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIs eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlv bi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi94bWwvLGh0 bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNw b25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04i fSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRl eHQganNvbiI6eC5wYXJzZUpTT04sInRleHQgeG1sIjp4LnBhcnNlWE1MfSxmbGF0 T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24o ZSx0KXtyZXR1cm4gdD9fbihfbihlLHguYWpheFNldHRpbmdzKSx0KTpfbih4LmFq YXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpIbihBbiksYWpheFRyYW5zcG9y dDpIbihqbiksYWpheDpmdW5jdGlvbihlLG4peyJvYmplY3QiPT10eXBlb2YgZSYm KG49ZSxlPXQpLG49bnx8e307dmFyIHIsaSxvLGEscyxsLHUsYyxwPXguYWpheFNl dHVwKHt9LG4pLGY9cC5jb250ZXh0fHxwLGQ9cC5jb250ZXh0JiYoZi5ub2RlVHlw ZXx8Zi5qcXVlcnkpP3goZik6eC5ldmVudCxoPXguRGVmZXJyZWQoKSxnPXguQ2Fs bGJhY2tzKCJvbmNlIG1lbW9yeSIpLG09cC5zdGF0dXNDb2RlfHx7fSx5PXt9LHY9 e30sYj0wLHc9ImNhbmNlbGVkIixDPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VI ZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoMj09PWIpe2lmKCFjKXtjPXt9O3do aWxlKHQ9VG4uZXhlYyhhKSljW3RbMV0udG9Mb3dlckNhc2UoKV09dFsyXX10PWNb ZS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09dD9udWxsOnR9LGdldEFsbFJl c3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09Yj9hOm51bGx9LHNl dFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRvTG93ZXJDYXNl KCk7cmV0dXJuIGJ8fChlPXZbbl09dltuXXx8ZSx5W2VdPXQpLHRoaXN9LG92ZXJy aWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGJ8fChwLm1pbWVUeXBlPWUp LHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZigyPmIp Zm9yKHQgaW4gZSltW3RdPVttW3RdLGVbdF1dO2Vsc2UgQy5hbHdheXMoZVtDLnN0 YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXt2YXIgdD1lfHx3 O3JldHVybiB1JiZ1LmFib3J0KHQpLGsoMCx0KSx0aGlzfX07aWYoaC5wcm9taXNl KEMpLmNvbXBsZXRlPWcuYWRkLEMuc3VjY2Vzcz1DLmRvbmUsQy5lcnJvcj1DLmZh aWwscC51cmw9KChlfHxwLnVybHx8eW4pKyIiKS5yZXBsYWNlKHhuLCIiKS5yZXBs YWNlKGtuLG1uWzFdKyIvLyIpLHAudHlwZT1uLm1ldGhvZHx8bi50eXBlfHxwLm1l dGhvZHx8cC50eXBlLHAuZGF0YVR5cGVzPXgudHJpbShwLmRhdGFUeXBlfHwiKiIp LnRvTG93ZXJDYXNlKCkubWF0Y2goVCl8fFsiIl0sbnVsbD09cC5jcm9zc0RvbWFp biYmKHI9RW4uZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSxwLmNyb3NzRG9tYWlu PSEoIXJ8fHJbMV09PT1tblsxXSYmclsyXT09PW1uWzJdJiYoclszXXx8KCJodHRw OiI9PT1yWzFdPyI4MCI6IjQ0MyIpKT09PShtblszXXx8KCJodHRwOiI9PT1tblsx XT8iODAiOiI0NDMiKSkpKSxwLmRhdGEmJnAucHJvY2Vzc0RhdGEmJiJzdHJpbmci IT10eXBlb2YgcC5kYXRhJiYocC5kYXRhPXgucGFyYW0ocC5kYXRhLHAudHJhZGl0 aW9uYWwpKSxxbihBbixwLG4sQyksMj09PWIpcmV0dXJuIEM7bD1wLmdsb2JhbCxs JiYwPT09eC5hY3RpdmUrKyYmeC5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxw LnR5cGU9cC50eXBlLnRvVXBwZXJDYXNlKCkscC5oYXNDb250ZW50PSFObi50ZXN0 KHAudHlwZSksbz1wLnVybCxwLmhhc0NvbnRlbnR8fChwLmRhdGEmJihvPXAudXJs Kz0oYm4udGVzdChvKT8iJiI6Ij8iKStwLmRhdGEsZGVsZXRlIHAuZGF0YSkscC5j YWNoZT09PSExJiYocC51cmw9d24udGVzdChvKT9vLnJlcGxhY2Uod24sIiQxXz0i K3ZuKyspOm8rKGJuLnRlc3Qobyk/IiYiOiI/IikrIl89Iit2bisrKSkscC5pZk1v ZGlmaWVkJiYoeC5sYXN0TW9kaWZpZWRbb10mJkMuc2V0UmVxdWVzdEhlYWRlcigi SWYtTW9kaWZpZWQtU2luY2UiLHgubGFzdE1vZGlmaWVkW29dKSx4LmV0YWdbb10m JkMuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIseC5ldGFnW29dKSks KHAuZGF0YSYmcC5oYXNDb250ZW50JiZwLmNvbnRlbnRUeXBlIT09ITF8fG4uY29u dGVudFR5cGUpJiZDLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIscC5j b250ZW50VHlwZSksQy5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHAuZGF0YVR5 cGVzWzBdJiZwLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dP3AuYWNjZXB0c1twLmRh dGFUeXBlc1swXV0rKCIqIiE9PXAuZGF0YVR5cGVzWzBdPyIsICIrRG4rIjsgcT0w LjAxIjoiIik6cC5hY2NlcHRzWyIqIl0pO2ZvcihpIGluIHAuaGVhZGVycylDLnNl dFJlcXVlc3RIZWFkZXIoaSxwLmhlYWRlcnNbaV0pO2lmKHAuYmVmb3JlU2VuZCYm KHAuYmVmb3JlU2VuZC5jYWxsKGYsQyxwKT09PSExfHwyPT09YikpcmV0dXJuIEMu YWJvcnQoKTt3PSJhYm9ydCI7Zm9yKGkgaW57c3VjY2VzczoxLGVycm9yOjEsY29t cGxldGU6MX0pQ1tpXShwW2ldKTtpZih1PXFuKGpuLHAsbixDKSl7Qy5yZWFkeVN0 YXRlPTEsbCYmZC50cmlnZ2VyKCJhamF4U2VuZCIsW0MscF0pLHAuYXN5bmMmJnAu dGltZW91dD4wJiYocz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qy5hYm9ydCgidGlt ZW91dCIpfSxwLnRpbWVvdXQpKTt0cnl7Yj0xLHUuc2VuZCh5LGspfWNhdGNoKE4p e2lmKCEoMj5iKSl0aHJvdyBOO2soLTEsTil9fWVsc2UgaygtMSwiTm8gVHJhbnNw b3J0Iik7ZnVuY3Rpb24gayhlLG4scixpKXt2YXIgYyx5LHYsdyxULE49bjsyIT09 YiYmKGI9MixzJiZjbGVhclRpbWVvdXQocyksdT10LGE9aXx8IiIsQy5yZWFkeVN0 YXRlPWU+MD80OjAsYz1lPj0yMDAmJjMwMD5lfHwzMDQ9PT1lLHImJih3PU1uKHAs QyxyKSksdz1PbihwLHcsQyxjKSxjPyhwLmlmTW9kaWZpZWQmJihUPUMuZ2V0UmVz cG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSxUJiYoeC5sYXN0TW9kaWZpZWRb b109VCksVD1DLmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksVCYmKHguZXRhZ1tv XT1UKSksMjA0PT09ZXx8IkhFQUQiPT09cC50eXBlP049Im5vY29udGVudCI6MzA0 PT09ZT9OPSJub3Rtb2RpZmllZCI6KE49dy5zdGF0ZSx5PXcuZGF0YSx2PXcuZXJy b3IsYz0hdikpOih2PU4sKGV8fCFOKSYmKE49ImVycm9yIiwwPmUmJihlPTApKSks Qy5zdGF0dXM9ZSxDLnN0YXR1c1RleHQ9KG58fE4pKyIiLGM/aC5yZXNvbHZlV2l0 aChmLFt5LE4sQ10pOmgucmVqZWN0V2l0aChmLFtDLE4sdl0pLEMuc3RhdHVzQ29k ZShtKSxtPXQsbCYmZC50cmlnZ2VyKGM/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9y IixbQyxwLGM/eTp2XSksZy5maXJlV2l0aChmLFtDLE5dKSxsJiYoZC50cmlnZ2Vy KCJhamF4Q29tcGxldGUiLFtDLHBdKSwtLXguYWN0aXZlfHx4LmV2ZW50LnRyaWdn ZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gQ30sZ2V0SlNPTjpmdW5jdGlvbihlLHQs bil7cmV0dXJuIHguZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlv bihlLG4pe3JldHVybiB4LmdldChlLHQsbiwic2NyaXB0Iil9fSkseC5lYWNoKFsi Z2V0IiwicG9zdCJdLGZ1bmN0aW9uKGUsbil7eFtuXT1mdW5jdGlvbihlLHIsaSxv KXtyZXR1cm4geC5pc0Z1bmN0aW9uKHIpJiYobz1vfHxpLGk9cixyPXQpLHguYWph eCh7dXJsOmUsdHlwZTpuLGRhdGFUeXBlOm8sZGF0YTpyLHN1Y2Nlc3M6aX0pfX0p O2Z1bmN0aW9uIE1uKGUsbixyKXt2YXIgaSxvLGEscyxsPWUuY29udGVudHMsdT1l LmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSxvPT09dCYmKG89 ZS5taW1lVHlwZXx8bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikp O2lmKG8pZm9yKHMgaW4gbClpZihsW3NdJiZsW3NdLnRlc3Qobykpe3UudW5zaGlm dChzKTticmVha31pZih1WzBdaW4gcilhPXVbMF07ZWxzZXtmb3IocyBpbiByKXtp ZighdVswXXx8ZS5jb252ZXJ0ZXJzW3MrIiAiK3VbMF1dKXthPXM7YnJlYWt9aXx8 KGk9cyl9YT1hfHxpfXJldHVybiBhPyhhIT09dVswXSYmdS51bnNoaWZ0KGEpLHJb YV0pOnR9ZnVuY3Rpb24gT24oZSx0LG4scil7dmFyIGksbyxhLHMsbCx1PXt9LGM9 ZS5kYXRhVHlwZXMuc2xpY2UoKTtpZihjWzFdKWZvcihhIGluIGUuY29udmVydGVy cyl1W2EudG9Mb3dlckNhc2UoKV09ZS5jb252ZXJ0ZXJzW2FdO289Yy5zaGlmdCgp O3doaWxlKG8paWYoZS5yZXNwb25zZUZpZWxkc1tvXSYmKG5bZS5yZXNwb25zZUZp ZWxkc1tvXV09dCksIWwmJnImJmUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVy KHQsZS5kYXRhVHlwZSkpLGw9byxvPWMuc2hpZnQoKSlpZigiKiI9PT1vKW89bDtl bHNlIGlmKCIqIiE9PWwmJmwhPT1vKXtpZihhPXVbbCsiICIrb118fHVbIiogIitv XSwhYSlmb3IoaSBpbiB1KWlmKHM9aS5zcGxpdCgiICIpLHNbMV09PT1vJiYoYT11 W2wrIiAiK3NbMF1dfHx1WyIqICIrc1swXV0pKXthPT09ITA/YT11W2ldOnVbaV0h PT0hMCYmKG89c1swXSxjLnVuc2hpZnQoc1sxXSkpO2JyZWFrfWlmKGEhPT0hMClp ZihhJiZlWyJ0aHJvd3MiXSl0PWEodCk7ZWxzZSB0cnl7dD1hKHQpfWNhdGNoKHAp e3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmE/cDoiTm8gY29udmVy c2lvbiBmcm9tICIrbCsiIHRvICIrb319fXJldHVybntzdGF0ZToic3VjY2VzcyIs ZGF0YTp0fX14LmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFz Y3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFz Y3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3Jp cHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3Jp cHQiOmZ1bmN0aW9uKGUpe3JldHVybiB4Lmdsb2JhbEV2YWwoZSksZX19fSkseC5h amF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2UuY2FjaGU9PT10JiYo ZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIixlLmdsb2Jh bD0hMSl9KSx4LmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oZSl7aWYo ZS5jcm9zc0RvbWFpbil7dmFyIG4scj1hLmhlYWR8fHgoImhlYWQiKVswXXx8YS5k b2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24odCxpKXtuPWEuY3Jl YXRlRWxlbWVudCgic2NyaXB0Iiksbi5hc3luYz0hMCxlLnNjcmlwdENoYXJzZXQm JihuLmNoYXJzZXQ9ZS5zY3JpcHRDaGFyc2V0KSxuLnNyYz1lLnVybCxuLm9ubG9h ZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLHQpeyh0fHwhbi5yZWFk eVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkpJiYo bi5vbmxvYWQ9bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxuLnBhcmVudE5vZGUm Jm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxuPW51bGwsdHx8aSgyMDAsInN1 Y2Nlc3MiKSl9LHIuaW5zZXJ0QmVmb3JlKG4sci5maXJzdENoaWxkKX0sYWJvcnQ6 ZnVuY3Rpb24oKXtuJiZuLm9ubG9hZCh0LCEwKX19fX0pO3ZhciBGbj1bXSxCbj0v KD0pXD8oPz0mfCQpfFw/XD8vO3guYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2si LGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1Gbi5wb3AoKXx8eC5leHBh bmRvKyJfIit2bisrO3JldHVybiB0aGlzW2VdPSEwLGV9fSkseC5hamF4UHJlZmls dGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihuLHIsaSl7dmFyIG8sYSxzLGw9bi5q c29ucCE9PSExJiYoQm4udGVzdChuLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVv ZiBuLmRhdGEmJiEobi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0 aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZCbi50ZXN0KG4uZGF0YSkmJiJk YXRhIik7cmV0dXJuIGx8fCJqc29ucCI9PT1uLmRhdGFUeXBlc1swXT8obz1uLmpz b25wQ2FsbGJhY2s9eC5pc0Z1bmN0aW9uKG4uanNvbnBDYWxsYmFjayk/bi5qc29u cENhbGxiYWNrKCk6bi5qc29ucENhbGxiYWNrLGw/bltsXT1uW2xdLnJlcGxhY2Uo Qm4sIiQxIitvKTpuLmpzb25wIT09ITEmJihuLnVybCs9KGJuLnRlc3Qobi51cmwp PyImIjoiPyIpK24uanNvbnArIj0iK28pLG4uY29udmVydGVyc1sic2NyaXB0IGpz b24iXT1mdW5jdGlvbigpe3JldHVybiBzfHx4LmVycm9yKG8rIiB3YXMgbm90IGNh bGxlZCIpLHNbMF19LG4uZGF0YVR5cGVzWzBdPSJqc29uIixhPWVbb10sZVtvXT1m dW5jdGlvbigpe3M9YXJndW1lbnRzfSxpLmFsd2F5cyhmdW5jdGlvbigpe2Vbb109 YSxuW29dJiYobi5qc29ucENhbGxiYWNrPXIuanNvbnBDYWxsYmFjayxGbi5wdXNo KG8pKSxzJiZ4LmlzRnVuY3Rpb24oYSkmJmEoc1swXSkscz1hPXR9KSwic2NyaXB0 Iik6dH0pO3ZhciBQbixSbixXbj0wLCRuPWUuQWN0aXZlWE9iamVjdCYmZnVuY3Rp b24oKXt2YXIgZTtmb3IoZSBpbiBQbilQbltlXSh0LCEwKX07ZnVuY3Rpb24gSW4o KXt0cnl7cmV0dXJuIG5ldyBlLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKHQpe319ZnVu Y3Rpb24gem4oKXt0cnl7cmV0dXJuIG5ldyBlLkFjdGl2ZVhPYmplY3QoIk1pY3Jv c29mdC5YTUxIVFRQIil9Y2F0Y2godCl7fX14LmFqYXhTZXR0aW5ncy54aHI9ZS5B Y3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmSW4o KXx8em4oKX06SW4sUm49eC5hamF4U2V0dGluZ3MueGhyKCkseC5zdXBwb3J0LmNv cnM9ISFSbiYmIndpdGhDcmVkZW50aWFscyJpbiBSbixSbj14LnN1cHBvcnQuYWph eD0hIVJuLFJuJiZ4LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obil7aWYoIW4uY3Jv c3NEb21haW58fHguc3VwcG9ydC5jb3JzKXt2YXIgcjtyZXR1cm57c2VuZDpmdW5j dGlvbihpLG8pe3ZhciBhLHMsbD1uLnhocigpO2lmKG4udXNlcm5hbWU/bC5vcGVu KG4udHlwZSxuLnVybCxuLmFzeW5jLG4udXNlcm5hbWUsbi5wYXNzd29yZCk6bC5v cGVuKG4udHlwZSxuLnVybCxuLmFzeW5jKSxuLnhockZpZWxkcylmb3IocyBpbiBu LnhockZpZWxkcylsW3NdPW4ueGhyRmllbGRzW3NdO24ubWltZVR5cGUmJmwub3Zl cnJpZGVNaW1lVHlwZSYmbC5vdmVycmlkZU1pbWVUeXBlKG4ubWltZVR5cGUpLG4u Y3Jvc3NEb21haW58fGlbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGlbIlgtUmVxdWVz dGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKHMgaW4gaSlsLnNl dFJlcXVlc3RIZWFkZXIocyxpW3NdKX1jYXRjaCh1KXt9bC5zZW5kKG4uaGFzQ29u dGVudCYmbi5kYXRhfHxudWxsKSxyPWZ1bmN0aW9uKGUsaSl7dmFyIHMsdSxjLHA7 dHJ5e2lmKHImJihpfHw0PT09bC5yZWFkeVN0YXRlKSlpZihyPXQsYSYmKGwub25y ZWFkeXN0YXRlY2hhbmdlPXgubm9vcCwkbiYmZGVsZXRlIFBuW2FdKSxpKTQhPT1s LnJlYWR5U3RhdGUmJmwuYWJvcnQoKTtlbHNle3A9e30scz1sLnN0YXR1cyx1PWwu Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksInN0cmluZyI9PXR5cGVvZiBsLnJlc3Bv bnNlVGV4dCYmKHAudGV4dD1sLnJlc3BvbnNlVGV4dCk7dHJ5e2M9bC5zdGF0dXNU ZXh0fWNhdGNoKGYpe2M9IiJ9c3x8IW4uaXNMb2NhbHx8bi5jcm9zc0RvbWFpbj8x MjIzPT09cyYmKHM9MjA0KTpzPXAudGV4dD8yMDA6NDA0fX1jYXRjaChkKXtpfHxv KC0xLGQpfXAmJm8ocyxjLHAsdSl9LG4uYXN5bmM/ND09PWwucmVhZHlTdGF0ZT9z ZXRUaW1lb3V0KHIpOihhPSsrV24sJG4mJihQbnx8KFBuPXt9LHgoZSkudW5sb2Fk KCRuKSksUG5bYV09ciksbC5vbnJlYWR5c3RhdGVjaGFuZ2U9cik6cigpfSxhYm9y dDpmdW5jdGlvbigpe3ImJnIodCwhMCl9fX19KTt2YXIgWG4sVW4sVm49L14oPzp0 b2dnbGV8c2hvd3xoaWRlKSQvLFluPVJlZ0V4cCgiXig/OihbKy1dKT18KSgiK3cr IikoW2EteiVdKikkIiwiaSIpLEpuPS9xdWV1ZUhvb2tzJC8sR249W25yXSxRbj17 IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KSxy PW4uY3VyKCksaT1Zbi5leGVjKHQpLG89aSYmaVszXXx8KHguY3NzTnVtYmVyW2Vd PyIiOiJweCIpLGE9KHguY3NzTnVtYmVyW2VdfHwicHgiIT09byYmK3IpJiZZbi5l eGVjKHguY3NzKG4uZWxlbSxlKSkscz0xLGw9MjA7aWYoYSYmYVszXSE9PW8pe289 b3x8YVszXSxpPWl8fFtdLGE9K3J8fDE7ZG8gcz1zfHwiLjUiLGEvPXMseC5zdHls ZShuLmVsZW0sZSxhK28pO3doaWxlKHMhPT0ocz1uLmN1cigpL3IpJiYxIT09cyYm LS1sKX1yZXR1cm4gaSYmKGE9bi5zdGFydD0rYXx8K3J8fDAsbi51bml0PW8sbi5l bmQ9aVsxXT9hKyhpWzFdKzEpKmlbMl06K2lbMl0pLG59XX07ZnVuY3Rpb24gS24o KXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1huPXR9KSxYbj14Lm5vdygp fWZ1bmN0aW9uIFpuKGUsdCxuKXt2YXIgcixpPShRblt0XXx8W10pLmNvbmNhdChR blsiKiJdKSxvPTAsYT1pLmxlbmd0aDtmb3IoO2E+bztvKyspaWYocj1pW29dLmNh bGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGVyKGUsdCxuKXt2YXIgcixpLG89 MCxhPUduLmxlbmd0aCxzPXguRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtk ZWxldGUgbC5lbGVtfSksbD1mdW5jdGlvbigpe2lmKGkpcmV0dXJuITE7dmFyIHQ9 WG58fEtuKCksbj1NYXRoLm1heCgwLHUuc3RhcnRUaW1lK3UuZHVyYXRpb24tdCks cj1uL3UuZHVyYXRpb258fDAsbz0xLXIsYT0wLGw9dS50d2VlbnMubGVuZ3RoO2Zv cig7bD5hO2ErKyl1LnR3ZWVuc1thXS5ydW4obyk7cmV0dXJuIHMubm90aWZ5V2l0 aChlLFt1LG8sbl0pLDE+byYmbD9uOihzLnJlc29sdmVXaXRoKGUsW3VdKSwhMSl9 LHU9cy5wcm9taXNlKHtlbGVtOmUscHJvcHM6eC5leHRlbmQoe30sdCksb3B0czp4 LmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0sbiksb3JpZ2luYWxQcm9wZXJ0 aWVzOnQsb3JpZ2luYWxPcHRpb25zOm4sc3RhcnRUaW1lOlhufHxLbigpLGR1cmF0 aW9uOm4uZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKHQs bil7dmFyIHI9eC5Ud2VlbihlLHUub3B0cyx0LG4sdS5vcHRzLnNwZWNpYWxFYXNp bmdbdF18fHUub3B0cy5lYXNpbmcpO3JldHVybiB1LnR3ZWVucy5wdXNoKHIpLHJ9 LHN0b3A6ZnVuY3Rpb24odCl7dmFyIG49MCxyPXQ/dS50d2VlbnMubGVuZ3RoOjA7 aWYoaSlyZXR1cm4gdGhpcztmb3IoaT0hMDtyPm47bisrKXUudHdlZW5zW25dLnJ1 bigxKTtyZXR1cm4gdD9zLnJlc29sdmVXaXRoKGUsW3UsdF0pOnMucmVqZWN0V2l0 aChlLFt1LHRdKSx0aGlzfX0pLGM9dS5wcm9wcztmb3IodHIoYyx1Lm9wdHMuc3Bl Y2lhbEVhc2luZyk7YT5vO28rKylpZihyPUduW29dLmNhbGwodSxlLGMsdS5vcHRz KSlyZXR1cm4gcjtyZXR1cm4geC5tYXAoYyxabix1KSx4LmlzRnVuY3Rpb24odS5v cHRzLnN0YXJ0KSYmdS5vcHRzLnN0YXJ0LmNhbGwoZSx1KSx4LmZ4LnRpbWVyKHgu ZXh0ZW5kKGwse2VsZW06ZSxhbmltOnUscXVldWU6dS5vcHRzLnF1ZXVlfSkpLHUu cHJvZ3Jlc3ModS5vcHRzLnByb2dyZXNzKS5kb25lKHUub3B0cy5kb25lLHUub3B0 cy5jb21wbGV0ZSkuZmFpbCh1Lm9wdHMuZmFpbCkuYWx3YXlzKHUub3B0cy5hbHdh eXMpfWZ1bmN0aW9uIHRyKGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlm KHI9eC5jYW1lbENhc2UobiksaT10W3JdLG89ZVtuXSx4LmlzQXJyYXkobykmJihp PW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSxh PXguY3NzSG9va3Nbcl0sYSYmImV4cGFuZCJpbiBhKXtvPWEuZXhwYW5kKG8pLGRl bGV0ZSBlW3JdO2ZvcihuIGluIG8pbiBpbiBlfHwoZVtuXT1vW25dLHRbbl09aSl9 ZWxzZSB0W3JdPWl9eC5BbmltYXRpb249eC5leHRlbmQoZXIse3R3ZWVuZXI6ZnVu Y3Rpb24oZSx0KXt4LmlzRnVuY3Rpb24oZSk/KHQ9ZSxlPVsiKiJdKTplPWUuc3Bs aXQoIiAiKTt2YXIgbixyPTAsaT1lLmxlbmd0aDtmb3IoO2k+cjtyKyspbj1lW3Jd LFFuW25dPVFuW25dfHxbXSxRbltuXS51bnNoaWZ0KHQpfSxwcmVmaWx0ZXI6ZnVu Y3Rpb24oZSx0KXt0P0duLnVuc2hpZnQoZSk6R24ucHVzaChlKX19KTtmdW5jdGlv biBucihlLHQsbil7dmFyIHIsaSxvLGEscyxsLHU9dGhpcyxjPXt9LHA9ZS5zdHls ZSxmPWUubm9kZVR5cGUmJm5uKGUpLGQ9eC5fZGF0YShlLCJmeHNob3ciKTtuLnF1 ZXVlfHwocz14Ll9xdWV1ZUhvb2tzKGUsImZ4IiksbnVsbD09cy51bnF1ZXVlZCYm KHMudW5xdWV1ZWQ9MCxsPXMuZW1wdHkuZmlyZSxzLmVtcHR5LmZpcmU9ZnVuY3Rp b24oKXtzLnVucXVldWVkfHxsKCl9KSxzLnVucXVldWVkKyssdS5hbHdheXMoZnVu Y3Rpb24oKXt1LmFsd2F5cyhmdW5jdGlvbigpe3MudW5xdWV1ZWQtLSx4LnF1ZXVl KGUsImZ4IikubGVuZ3RofHxzLmVtcHR5LmZpcmUoKX0pfSkpLDE9PT1lLm5vZGVU eXBlJiYoImhlaWdodCJpbiB0fHwid2lkdGgiaW4gdCkmJihuLm92ZXJmbG93PVtw Lm92ZXJmbG93LHAub3ZlcmZsb3dYLHAub3ZlcmZsb3dZXSwiaW5saW5lIj09PXgu Y3NzKGUsImRpc3BsYXkiKSYmIm5vbmUiPT09eC5jc3MoZSwiZmxvYXQiKSYmKHgu c3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiYiaW5saW5lIiE9PWxuKGUu bm9kZU5hbWUpP3Auem9vbT0xOnAuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4u b3ZlcmZsb3cmJihwLm92ZXJmbG93PSJoaWRkZW4iLHguc3VwcG9ydC5zaHJpbmtX cmFwQmxvY2tzfHx1LmFsd2F5cyhmdW5jdGlvbigpe3Aub3ZlcmZsb3c9bi5vdmVy Zmxvd1swXSxwLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLHAub3ZlcmZsb3dZPW4u b3ZlcmZsb3dbMl19KSk7Zm9yKHIgaW4gdClpZihpPXRbcl0sVm4uZXhlYyhpKSl7 aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShmPyJoaWRlIjoi c2hvdyIpKWNvbnRpbnVlO2Nbcl09ZCYmZFtyXXx8eC5zdHlsZShlLHIpfWlmKCF4 LmlzRW1wdHlPYmplY3QoYykpe2Q/ImhpZGRlbiJpbiBkJiYoZj1kLmhpZGRlbik6 ZD14Ll9kYXRhKGUsImZ4c2hvdyIse30pLG8mJihkLmhpZGRlbj0hZiksZj94KGUp LnNob3coKTp1LmRvbmUoZnVuY3Rpb24oKXt4KGUpLmhpZGUoKX0pLHUuZG9uZShm dW5jdGlvbigpe3ZhciB0O3guX3JlbW92ZURhdGEoZSwiZnhzaG93Iik7Zm9yKHQg aW4gYyl4LnN0eWxlKGUsdCxjW3RdKX0pO2ZvcihyIGluIGMpYT1abihmP2Rbcl06 MCxyLHUpLHIgaW4gZHx8KGRbcl09YS5zdGFydCxmJiYoYS5lbmQ9YS5zdGFydCxh LnN0YXJ0PSJ3aWR0aCI9PT1yfHwiaGVpZ2h0Ij09PXI/MTowKSl9fWZ1bmN0aW9u IHJyKGUsdCxuLHIsaSl7cmV0dXJuIG5ldyByci5wcm90b3R5cGUuaW5pdChlLHQs bixyLGkpfXguVHdlZW49cnIscnIucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjpycixp bml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9 bix0aGlzLmVhc2luZz1pfHwic3dpbmciLHRoaXMub3B0aW9ucz10LHRoaXMuc3Rh cnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1yLHRoaXMudW5pdD1vfHwo eC5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPXJy LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlz KTpyci5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24o ZSl7dmFyIHQsbj1yci5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5w b3M9dD10aGlzLm9wdGlvbnMuZHVyYXRpb24/eC5lYXNpbmdbdGhpcy5lYXNpbmdd KGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJh dGlvbik6ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0 YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRo aXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTpyci5w cm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxyci5wcm90b3R5cGUu aW5pdC5wcm90b3R5cGU9cnIucHJvdG90eXBlLHJyLnByb3BIb29rcz17X2RlZmF1 bHQ6e2dldDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09ZS5lbGVtW2Uu cHJvcF18fGUuZWxlbS5zdHlsZSYmbnVsbCE9ZS5lbGVtLnN0eWxlW2UucHJvcF0/ KHQ9eC5jc3MoZS5lbGVtLGUucHJvcCwiIiksdCYmImF1dG8iIT09dD90OjApOmUu ZWxlbVtlLnByb3BdfSxzZXQ6ZnVuY3Rpb24oZSl7eC5meC5zdGVwW2UucHJvcF0/ eC5meC5zdGVwW2UucHJvcF0oZSk6ZS5lbGVtLnN0eWxlJiYobnVsbCE9ZS5lbGVt LnN0eWxlW3guY3NzUHJvcHNbZS5wcm9wXV18fHguY3NzSG9va3NbZS5wcm9wXSk/ eC5zdHlsZShlLmVsZW0sZS5wcm9wLGUubm93K2UudW5pdCk6ZS5lbGVtW2UucHJv cF09ZS5ub3d9fX0scnIucHJvcEhvb2tzLnNjcm9sbFRvcD1yci5wcm9wSG9va3Mu c2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGUpe2UuZWxlbS5ub2RlVHlwZSYmZS5l bGVtLnBhcmVudE5vZGUmJihlLmVsZW1bZS5wcm9wXT1lLm5vdyl9fSx4LmVhY2go WyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUsdCl7dmFyIG49eC5m blt0XTt4LmZuW3RdPWZ1bmN0aW9uKGUscixpKXtyZXR1cm4gbnVsbD09ZXx8ImJv b2xlYW4iPT10eXBlb2YgZT9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFu aW1hdGUoaXIodCwhMCksZSxyLGkpfX0pLHguZm4uZXh0ZW5kKHtmYWRlVG86ZnVu Y3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKG5uKS5jc3MoIm9wYWNp dHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0s YW5pbWF0ZTpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT14LmlzRW1wdHlPYmplY3Qo ZSksbz14LnNwZWVkKHQsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIHQ9ZXIodGhpcyx4 LmV4dGVuZCh7fSxlKSxvKTsoaXx8eC5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJnQu c3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fG8ucXVldWU9PT0hMT90aGlz LmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGUs bixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3Rv cCx0KHIpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihyPW4sbj1lLGU9dCks biYmZSE9PSExJiZ0aGlzLnF1ZXVlKGV8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5j dGlvbigpe3ZhciB0PSEwLG49bnVsbCE9ZSYmZSsicXVldWVIb29rcyIsbz14LnRp bWVycyxhPXguX2RhdGEodGhpcyk7aWYobilhW25dJiZhW25dLnN0b3AmJmkoYVtu XSk7ZWxzZSBmb3IobiBpbiBhKWFbbl0mJmFbbl0uc3RvcCYmSm4udGVzdChuKSYm aShhW25dKTtmb3Iobj1vLmxlbmd0aDtuLS07KW9bbl0uZWxlbSE9PXRoaXN8fG51 bGwhPWUmJm9bbl0ucXVldWUhPT1lfHwob1tuXS5hbmltLnN0b3AociksdD0hMSxv LnNwbGljZShuLDEpKTsodHx8IXIpJiZ4LmRlcXVldWUodGhpcyxlKX0pfSxmaW5p c2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT0hMSYmKGU9ZXx8ImZ4IiksdGhpcy5l YWNoKGZ1bmN0aW9uKCl7dmFyIHQsbj14Ll9kYXRhKHRoaXMpLHI9bltlKyJxdWV1 ZSJdLGk9bltlKyJxdWV1ZUhvb2tzIl0sbz14LnRpbWVycyxhPXI/ci5sZW5ndGg6 MDtmb3Iobi5maW5pc2g9ITAseC5xdWV1ZSh0aGlzLGUsW10pLGkmJmkuc3RvcCYm aS5zdG9wLmNhbGwodGhpcywhMCksdD1vLmxlbmd0aDt0LS07KW9bdF0uZWxlbT09 PXRoaXMmJm9bdF0ucXVldWU9PT1lJiYob1t0XS5hbmltLnN0b3AoITApLG8uc3Bs aWNlKHQsMSkpO2Zvcih0PTA7YT50O3QrKylyW3RdJiZyW3RdLmZpbmlzaCYmclt0 XS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgbi5maW5pc2h9KX19KTtmdW5jdGlv biBpcihlLHQpe3ZhciBuLHI9e2hlaWdodDplfSxpPTA7Zm9yKHQ9dD8xOjA7ND5p O2krPTItdCluPVp0W2ldLHJbIm1hcmdpbiIrbl09clsicGFkZGluZyIrbl09ZTty ZXR1cm4gdCYmKHIub3BhY2l0eT1yLndpZHRoPWUpLHJ9eC5lYWNoKHtzbGlkZURv d246aXIoInNob3ciKSxzbGlkZVVwOmlyKCJoaWRlIiksc2xpZGVUb2dnbGU6aXIo InRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNp dHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rp b24oZSx0KXt4LmZuW2VdPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5hbmlt YXRlKHQsZSxuLHIpfX0pLHguc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUm JiJvYmplY3QiPT10eXBlb2YgZT94LmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8 IW4mJnR8fHguaXNGdW5jdGlvbihlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0 fHx0JiYheC5pc0Z1bmN0aW9uKHQpJiZ0fTtyZXR1cm4gci5kdXJhdGlvbj14LmZ4 Lm9mZj8wOiJudW1iZXIiPT10eXBlb2Ygci5kdXJhdGlvbj9yLmR1cmF0aW9uOnIu ZHVyYXRpb24gaW4geC5meC5zcGVlZHM/eC5meC5zcGVlZHNbci5kdXJhdGlvbl06 eC5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PXIucXVldWV8fHIucXVldWU9PT0h MCkmJihyLnF1ZXVlPSJmeCIpLHIub2xkPXIuY29tcGxldGUsci5jb21wbGV0ZT1m dW5jdGlvbigpe3guaXNGdW5jdGlvbihyLm9sZCkmJnIub2xkLmNhbGwodGhpcyks ci5xdWV1ZSYmeC5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LHguZWFzaW5nPXts aW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3Jl dHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn19LHgudGltZXJzPVtdLHguZng9 cnIucHJvdG90eXBlLmluaXQseC5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsbj14 LnRpbWVycyxyPTA7Zm9yKFhuPXgubm93KCk7bi5sZW5ndGg+cjtyKyspZT1uW3Jd LGUoKXx8bltyXSE9PWV8fG4uc3BsaWNlKHItLSwxKTtuLmxlbmd0aHx8eC5meC5z dG9wKCksWG49dH0seC5meC50aW1lcj1mdW5jdGlvbihlKXtlKCkmJngudGltZXJz LnB1c2goZSkmJnguZnguc3RhcnQoKX0seC5meC5pbnRlcnZhbD0xMyx4LmZ4LnN0 YXJ0PWZ1bmN0aW9uKCl7VW58fChVbj1zZXRJbnRlcnZhbCh4LmZ4LnRpY2sseC5m eC5pbnRlcnZhbCkpfSx4LmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFs KFVuKSxVbj1udWxsfSx4LmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2Rl ZmF1bHQ6NDAwfSx4LmZ4LnN0ZXA9e30seC5leHByJiZ4LmV4cHIuZmlsdGVycyYm KHguZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGUpe3JldHVybiB4Lmdy ZXAoeC50aW1lcnMsZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10LmVsZW19KS5sZW5n dGh9KSx4LmZuLm9mZnNldD1mdW5jdGlvbihlKXtpZihhcmd1bWVudHMubGVuZ3Ro KXJldHVybiBlPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbih0KXt4Lm9mZnNl dC5zZXRPZmZzZXQodGhpcyxlLHQpfSk7dmFyIG4scixvPXt0b3A6MCxsZWZ0OjB9 LGE9dGhpc1swXSxzPWEmJmEub3duZXJEb2N1bWVudDtpZihzKXJldHVybiBuPXMu ZG9jdW1lbnRFbGVtZW50LHguY29udGFpbnMobixhKT8odHlwZW9mIGEuZ2V0Qm91 bmRpbmdDbGllbnRSZWN0IT09aSYmKG89YS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo KSkscj1vcihzKSx7dG9wOm8udG9wKyhyLnBhZ2VZT2Zmc2V0fHxuLnNjcm9sbFRv cCktKG4uY2xpZW50VG9wfHwwKSxsZWZ0Om8ubGVmdCsoci5wYWdlWE9mZnNldHx8 bi5zY3JvbGxMZWZ0KS0obi5jbGllbnRMZWZ0fHwwKX0pOm99LHgub2Zmc2V0PXtz ZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXguY3NzKGUsInBvc2l0aW9u Iik7InN0YXRpYyI9PT1yJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2 YXIgaT14KGUpLG89aS5vZmZzZXQoKSxhPXguY3NzKGUsInRvcCIpLHM9eC5jc3Mo ZSwibGVmdCIpLGw9KCJhYnNvbHV0ZSI9PT1yfHwiZml4ZWQiPT09cikmJnguaW5B cnJheSgiYXV0byIsW2Esc10pPi0xLHU9e30sYz17fSxwLGY7bD8oYz1pLnBvc2l0 aW9uKCkscD1jLnRvcCxmPWMubGVmdCk6KHA9cGFyc2VGbG9hdChhKXx8MCxmPXBh cnNlRmxvYXQocyl8fDApLHguaXNGdW5jdGlvbih0KSYmKHQ9dC5jYWxsKGUsbixv KSksbnVsbCE9dC50b3AmJih1LnRvcD10LnRvcC1vLnRvcCtwKSxudWxsIT10Lmxl ZnQmJih1LmxlZnQ9dC5sZWZ0LW8ubGVmdCtmKSwidXNpbmciaW4gdD90LnVzaW5n LmNhbGwoZSx1KTppLmNzcyh1KX19LHguZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5j dGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbj17dG9wOjAsbGVmdDowfSxyPXRo aXNbMF07cmV0dXJuImZpeGVkIj09PXguY3NzKHIsInBvc2l0aW9uIik/dD1yLmdl dEJvdW5kaW5nQ2xpZW50UmVjdCgpOihlPXRoaXMub2Zmc2V0UGFyZW50KCksdD10 aGlzLm9mZnNldCgpLHgubm9kZU5hbWUoZVswXSwiaHRtbCIpfHwobj1lLm9mZnNl dCgpKSxuLnRvcCs9eC5jc3MoZVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxuLmxl ZnQrPXguY3NzKGVbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOnQudG9w LW4udG9wLXguY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LW4ubGVm dC14LmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZz ZXRQYXJlbnR8fHM7d2hpbGUoZSYmIXgubm9kZU5hbWUoZSwiaHRtbCIpJiYic3Rh dGljIj09PXguY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1 cm4gZXx8c30pfX0pLHguZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNj cm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLG4pe3ZhciByPS9ZLy50 ZXN0KG4pO3guZm5bZV09ZnVuY3Rpb24oaSl7cmV0dXJuIHguYWNjZXNzKHRoaXMs ZnVuY3Rpb24oZSxpLG8pe3ZhciBhPW9yKGUpO3JldHVybiBvPT09dD9hP24gaW4g YT9hW25dOmEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2ldOmVbaV06KGE/YS5z Y3JvbGxUbyhyP3goYSkuc2Nyb2xsTGVmdCgpOm8scj9vOngoYSkuc2Nyb2xsVG9w KCkpOmVbaV09byx0KX0sZSxpLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSk7ZnVu Y3Rpb24gb3IoZSl7cmV0dXJuIHguaXNXaW5kb3coZSk/ZTo5PT09ZS5ub2RlVHlw ZT9lLmRlZmF1bHRWaWV3fHxlLnBhcmVudFdpbmRvdzohMX14LmVhY2goe0hlaWdo dDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihlLG4pe3guZWFjaCh7 cGFkZGluZzoiaW5uZXIiK2UsY29udGVudDpuLCIiOiJvdXRlciIrZX0sZnVuY3Rp b24ocixpKXt4LmZuW2ldPWZ1bmN0aW9uKGksbyl7dmFyIGE9YXJndW1lbnRzLmxl bmd0aCYmKHJ8fCJib29sZWFuIiE9dHlwZW9mIGkpLHM9cnx8KGk9PT0hMHx8bz09 PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4geC5hY2Nlc3ModGhpcyxmdW5j dGlvbihuLHIsaSl7dmFyIG87cmV0dXJuIHguaXNXaW5kb3cobik/bi5kb2N1bWVu dC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrZV06OT09PW4ubm9kZVR5cGU/KG89 bi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgobi5ib2R5WyJzY3JvbGwiK2VdLG9b InNjcm9sbCIrZV0sbi5ib2R5WyJvZmZzZXQiK2VdLG9bIm9mZnNldCIrZV0sb1si Y2xpZW50IitlXSkpOmk9PT10P3guY3NzKG4scixzKTp4LnN0eWxlKG4scixpLHMp fSxuLGE/aTp0LGEsbnVsbCl9fSl9KSx4LmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5sZW5ndGh9LHguZm4uYW5kU2VsZj14LmZuLmFkZEJhY2ssIm9iamVj dCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1 bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz14OihlLmpRdWVyeT1lLiQ9eCwiZnVu Y3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVy eSIsW10sZnVuY3Rpb24oKXtyZXR1cm4geH0pKX0pKHdpbmRvdyk7Cg== ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=bootstrap.css Content-Type: text/css; name=bootstrap.css Content-Location: https://www.euroresidentes.com/bootstrap/css/bootstrap.css Content-Transfer-Encoding: 8bit /*! * Bootstrap v2.3.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; line-height: 0; content: ""; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { width: auto\9; height: auto; max-width: 100%; vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; } #map_canvas img, .google-maps img { max-width: none; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } label, select, button, input[type="button"], input[type="reset"], input[type="submit"], input[type="radio"], input[type="checkbox"] { cursor: pointer; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } @media print { * { color: #000 !important; text-shadow: none !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px; color: #333333; background-color: #ffffff; } a { color: #0088cc; text-decoration: none; } a:hover, a:focus { color: #005580; text-decoration: underline; } .img-rounded { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .img-circle { -webkit-border-radius: 500px; -moz-border-radius: 500px; border-radius: 500px; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .span12 { width: 940px; } .span11 { width: 860px; } .span10 { width: 780px; } .span9 { width: 700px; } .span8 { width: 620px; } .span7 { width: 540px; } .span6 { width: 460px; } .span5 { width: 380px; } .span4 { width: 300px; } .span3 { width: 220px; } .span2 { width: 140px; } .span1 { width: 60px; } .offset12 { margin-left: 980px; } .offset11 { margin-left: 900px; } .offset10 { margin-left: 820px; } .offset9 { margin-left: 740px; } .offset8 { margin-left: 660px; } .offset7 { margin-left: 580px; } .offset6 { margin-left: 500px; } .offset5 { margin-left: 420px; } .offset4 { margin-left: 340px; } .offset3 { margin-left: 260px; } .offset2 { margin-left: 180px; } .offset1 { margin-left: 100px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.127659574468085%; *margin-left: 2.074468085106383%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.127659574468085%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.48936170212765%; *width: 91.43617021276594%; } .row-fluid .span10 { width: 82.97872340425532%; *width: 82.92553191489361%; } .row-fluid .span9 { width: 74.46808510638297%; *width: 74.41489361702126%; } .row-fluid .span8 { width: 65.95744680851064%; *width: 65.90425531914893%; } .row-fluid .span7 { width: 57.44680851063829%; *width: 57.39361702127659%; } .row-fluid .span6 { width: 48.93617021276595%; *width: 48.88297872340425%; } .row-fluid .span5 { width: 40.42553191489362%; *width: 40.37234042553192%; } .row-fluid .span4 { width: 31.914893617021278%; *width: 31.861702127659576%; } .row-fluid .span3 { width: 23.404255319148934%; *width: 23.351063829787233%; } .row-fluid .span2 { width: 14.893617021276595%; *width: 14.840425531914894%; } .row-fluid .span1 { width: 6.382978723404255%; *width: 6.329787234042553%; } .row-fluid .offset12 { margin-left: 104.25531914893617%; *margin-left: 104.14893617021275%; } .row-fluid .offset12:first-child { margin-left: 102.12765957446808%; *margin-left: 102.02127659574467%; } .row-fluid .offset11 { margin-left: 95.74468085106382%; *margin-left: 95.6382978723404%; } .row-fluid .offset11:first-child { margin-left: 93.61702127659574%; *margin-left: 93.51063829787232%; } .row-fluid .offset10 { margin-left: 87.23404255319149%; *margin-left: 87.12765957446807%; } .row-fluid .offset10:first-child { margin-left: 85.1063829787234%; *margin-left: 84.99999999999999%; } .row-fluid .offset9 { margin-left: 78.72340425531914%; *margin-left: 78.61702127659572%; } .row-fluid .offset9:first-child { margin-left: 76.59574468085106%; *margin-left: 76.48936170212764%; } .row-fluid .offset8 { margin-left: 70.2127659574468%; *margin-left: 70.10638297872339%; } .row-fluid .offset8:first-child { margin-left: 68.08510638297872%; *margin-left: 67.9787234042553%; } .row-fluid .offset7 { margin-left: 61.70212765957446%; *margin-left: 61.59574468085106%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106375%; *margin-left: 59.46808510638297%; } .row-fluid .offset6 { margin-left: 53.191489361702125%; *margin-left: 53.085106382978715%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234035%; *margin-left: 50.95744680851063%; } .row-fluid .offset5 { margin-left: 44.68085106382979%; *margin-left: 44.57446808510638%; } .row-fluid .offset5:first-child { margin-left: 42.5531914893617%; *margin-left: 42.4468085106383%; } .row-fluid .offset4 { margin-left: 36.170212765957444%; *margin-left: 36.06382978723405%; } .row-fluid .offset4:first-child { margin-left: 34.04255319148936%; *margin-left: 33.93617021276596%; } .row-fluid .offset3 { margin-left: 27.659574468085104%; *margin-left: 27.5531914893617%; } .row-fluid .offset3:first-child { margin-left: 25.53191489361702%; *margin-left: 25.425531914893618%; } .row-fluid .offset2 { margin-left: 19.148936170212764%; *margin-left: 19.04255319148936%; } .row-fluid .offset2:first-child { margin-left: 17.02127659574468%; *margin-left: 16.914893617021278%; } .row-fluid .offset1 { margin-left: 10.638297872340425%; *margin-left: 10.53191489361702%; } .row-fluid .offset1:first-child { margin-left: 8.51063829787234%; *margin-left: 8.404255319148938%; } [class*="span"].hide, .row-fluid [class*="span"].hide { display: none; } [class*="span"].pull-right, .row-fluid [class*="span"].pull-right { float: right; } .container { margin-right: auto; margin-left: auto; *zoom: 1; } .container:before, .container:after { display: table; line-height: 0; content: ""; } .container:after { clear: both; } .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; line-height: 0; content: ""; } .container-fluid:after { clear: both; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 21px; font-weight: 200; line-height: 30px; } small { font-size: 85%; } strong { font-weight: bold; } em { font-style: italic; } cite { font-style: normal; } .muted { color: #999999; } a.muted:hover, a.muted:focus { color: #808080; } .text-warning { color: #c09853; } a.text-warning:hover, a.text-warning:focus { color: #a47e3c; } .text-error { color: #b94a48; } a.text-error:hover, a.text-error:focus { color: #953b39; } .text-info { color: #3a87ad; } a.text-info:hover, a.text-info:focus { color: #2d6987; } .text-success { color: #468847; } a.text-success:hover, a.text-success:focus { color: #356635; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-family: inherit; font-weight: bold; line-height: 20px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; line-height: 1; color: #999999; } h1, h2, h3 { line-height: 40px; } h1 { font-size: 38.5px; } h2 { font-size: 31.5px; } h3 { font-size: 24.5px; } h4 { font-size: 17.5px; } h5 { font-size: 14px; } h6 { font-size: 11.9px; } h1 small { font-size: 24.5px; } h2 small { font-size: 17.5px; } h3 small { font-size: 14px; } h4 small { font-size: 14px; } .page-header { padding-bottom: 9px; margin: 20px 0 30px; border-bottom: 1px solid #eeeeee; } ul, ol { padding: 0; margin: 0 0 10px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 20px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } ul.inline, ol.inline { margin-left: 0; list-style: none; } ul.inline > li, ol.inline > li { display: inline-block; *display: inline; padding-right: 5px; padding-left: 5px; *zoom: 1; } dl { margin-bottom: 20px; } dt, dd { line-height: 20px; } dt { font-weight: bold; } dd { margin-left: 10px; } .dl-horizontal { *zoom: 1; } .dl-horizontal:before, .dl-horizontal:after { display: table; line-height: 0; content: ""; } .dl-horizontal:after { clear: both; } .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } hr { margin: 20px 0; border: 0; border-top: 1px solid #eeeeee; border-bottom: 1px solid #ffffff; } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 0 0 0 15px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } blockquote p { margin-bottom: 0; font-size: 17.5px; font-weight: 300; line-height: 1.25; } blockquote small { display: block; line-height: 20px; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-right: 15px; padding-left: 0; border-right: 5px solid #eeeeee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 20px; font-style: normal; line-height: 20px; } code, pre { padding: 0 3px 2px; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; color: #333333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 2px 4px; color: #d14; white-space: nowrap; background-color: #f7f7f9; border: 1px solid #e1e1e8; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 20px; word-break: break-all; word-wrap: break-word; white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } pre.prettyprint { margin-bottom: 20px; } pre code { padding: 0; color: inherit; white-space: pre; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } form { margin: 0 0 20px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: 40px; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } legend small { font-size: 15px; color: #999999; } label, input, button, select, textarea { font-size: 14px; font-weight: normal; line-height: 20px; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; margin-bottom: 5px; } select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { display: inline-block; height: 20px; padding: 4px 6px; margin-bottom: 10px; font-size: 14px; line-height: 20px; color: #555555; vertical-align: middle; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } input, textarea, .uneditable-input { width: 206px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { background-color: #ffffff; border: 1px solid #cccccc; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; } textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { border-color: rgba(82, 168, 236, 0.8); outline: 0; outline: thin dotted \9; /* IE6-9 */ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; *margin-top: 0; line-height: normal; } input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { width: auto; } select, input[type="file"] { height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ *margin-top: 4px; /* For IE7, add top margin to align select with labels */ line-height: 30px; } select { width: 220px; background-color: #ffffff; border: 1px solid #cccccc; } select[multiple], select[size] { height: auto; } select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .uneditable-input, .uneditable-textarea { color: #999999; cursor: not-allowed; background-color: #fcfcfc; border-color: #cccccc; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); } .uneditable-input { overflow: hidden; white-space: nowrap; } .uneditable-textarea { width: auto; height: auto; } input:-moz-placeholder, textarea:-moz-placeholder { color: #999999; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999999; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999999; } .radio, .checkbox { min-height: 20px; padding-left: 20px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } .controls-row { *zoom: 1; } .controls-row:before, .controls-row:after { display: table; line-height: 0; content: ""; } .controls-row:after { clear: both; } .controls-row [class*="span"], .row-fluid .controls-row [class*="span"] { float: left; } .controls-row .checkbox[class*="span"], .controls-row .radio[class*="span"] { padding-top: 5px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { cursor: not-allowed; background-color: #eeeeee; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #c09853; } .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #c09853; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #c09853; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #a47e3c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #b94a48; } .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { color: #b94a48; } .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #b94a48; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #953b39; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #468847; } .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { color: #468847; } .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #468847; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #356635; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #468847; background-color: #dff0d8; border-color: #468847; } .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #3a87ad; } .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { color: #3a87ad; } .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #3a87ad; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #2d6987; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; } .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #3a87ad; background-color: #d9edf7; border-color: #3a87ad; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 19px 20px 20px; margin-top: 20px; margin-bottom: 20px; background-color: #f5f5f5; border-top: 1px solid #e5e5e5; *zoom: 1; } .form-actions:before, .form-actions:after { display: table; line-height: 0; content: ""; } .form-actions:after { clear: both; } .help-block, .help-inline { color: #595959; } .help-block { display: block; margin-bottom: 10px; } .help-inline { display: inline-block; *display: inline; padding-left: 5px; vertical-align: middle; *zoom: 1; } .input-append, .input-prepend { display: inline-block; margin-bottom: 10px; font-size: 0; white-space: nowrap; vertical-align: middle; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input, .input-append .dropdown-menu, .input-prepend .dropdown-menu, .input-append .popover, .input-prepend .popover { font-size: 14px; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 20px; min-width: 16px; padding: 4px 5px; font-size: 14px; font-weight: normal; line-height: 20px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn, .input-append .btn-group > .dropdown-toggle, .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append .btn-group:first-child { margin-left: 0; } input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom: 0; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } /* Allow for input prepend/append in search forms */ .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { display: inline-block; *display: inline; margin-bottom: 0; vertical-align: middle; *zoom: 1; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { padding-left: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; margin-right: 3px; margin-left: 0; } .control-group { margin-bottom: 10px; } legend + .control-group { margin-top: 20px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 20px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; line-height: 0; content: ""; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } .form-horizontal .controls:first-child { *padding-left: 180px; } .form-horizontal .help-block { margin-bottom: 0; } .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, .form-horizontal .uneditable-input + .help-block, .form-horizontal .input-prepend + .help-block, .form-horizontal .input-append + .help-block { margin-top: 10px; } .form-horizontal .form-actions { padding-left: 180px; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 20px; } .table th, .table td { padding: 8px; line-height: 20px; text-align: left; vertical-align: top; border-top: 1px solid #dddddd; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #dddddd; } .table .table { background-color: #ffffff; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #dddddd; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .table-bordered th, .table-bordered td { border-left: 1px solid #dddddd; } .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; } .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-topright: 4px; } .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; } .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; } .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; } .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; } .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; } .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-topright: 4px; } .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #f5f5f5; } table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], .row-fluid table th[class*="span"] { display: table-cell; float: none; margin-left: 0; } .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } .table tbody tr.success > td { background-color: #dff0d8; } .table tbody tr.error > td { background-color: #f2dede; } .table tbody tr.warning > td { background-color: #fcf8e3; } .table tbody tr.info > td { background-color: #d9edf7; } .table-hover tbody tr.success:hover > td { background-color: #d0e9c6; } .table-hover tbody tr.error:hover > td { background-color: #ebcccc; } .table-hover tbody tr.warning:hover > td { background-color: #faf2cc; } .table-hover tbody tr.info:hover > td { background-color: #c4e3f3; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; margin-top: 1px; *margin-right: .3em; line-height: 14px; vertical-align: text-top; background-image: url("../img/glyphicons-halflings.png"); background-position: 14px 14px; background-repeat: no-repeat; } /* White icons with optional class, or on hover/focus/active states of certain elements */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:focus > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > li > a:focus > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:focus > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"], .dropdown-submenu:focus > a > [class*=" icon-"] { background-image: url("../img/glyphicons-halflings-white.png"); } .icon-glass { background-position: 0 0; } .icon-music { background-position: -24px 0; } .icon-search { background-position: -48px 0; } .icon-envelope { background-position: -72px 0; } .icon-heart { background-position: -96px 0; } .icon-star { background-position: -120px 0; } .icon-star-empty { background-position: -144px 0; } .icon-user { background-position: -168px 0; } .icon-film { background-position: -192px 0; } .icon-th-large { background-position: -216px 0; } .icon-th { background-position: -240px 0; } .icon-th-list { background-position: -264px 0; } .icon-ok { background-position: -288px 0; } .icon-remove { background-position: -312px 0; } .icon-zoom-in { background-position: -336px 0; } .icon-zoom-out { background-position: -360px 0; } .icon-off { background-position: -384px 0; } .icon-signal { background-position: -408px 0; } .icon-cog { background-position: -432px 0; } .icon-trash { background-position: -456px 0; } .icon-home { background-position: 0 -24px; } .icon-file { background-position: -24px -24px; } .icon-time { background-position: -48px -24px; } .icon-road { background-position: -72px -24px; } .icon-download-alt { background-position: -96px -24px; } .icon-download { background-position: -120px -24px; } .icon-upload { background-position: -144px -24px; } .icon-inbox { background-position: -168px -24px; } .icon-play-circle { background-position: -192px -24px; } .icon-repeat { background-position: -216px -24px; } .icon-refresh { background-position: -240px -24px; } .icon-list-alt { background-position: -264px -24px; } .icon-lock { background-position: -287px -24px; } .icon-flag { background-position: -312px -24px; } .icon-headphones { background-position: -336px -24px; } .icon-volume-off { background-position: -360px -24px; } .icon-volume-down { background-position: -384px -24px; } .icon-volume-up { background-position: -408px -24px; } .icon-qrcode { background-position: -432px -24px; } .icon-barcode { background-position: -456px -24px; } .icon-tag { background-position: 0 -48px; } .icon-tags { background-position: -25px -48px; } .icon-book { background-position: -48px -48px; } .icon-bookmark { background-position: -72px -48px; } .icon-print { background-position: -96px -48px; } .icon-camera { background-position: -120px -48px; } .icon-font { background-position: -144px -48px; } .icon-bold { background-position: -167px -48px; } .icon-italic { background-position: -192px -48px; } .icon-text-height { background-position: -216px -48px; } .icon-text-width { background-position: -240px -48px; } .icon-align-left { background-position: -264px -48px; } .icon-align-center { background-position: -288px -48px; } .icon-align-right { background-position: -312px -48px; } .icon-align-justify { background-position: -336px -48px; } .icon-list { background-position: -360px -48px; } .icon-indent-left { background-position: -384px -48px; } .icon-indent-right { background-position: -408px -48px; } .icon-facetime-video { background-position: -432px -48px; } .icon-picture { background-position: -456px -48px; } .icon-pencil { background-position: 0 -72px; } .icon-map-marker { background-position: -24px -72px; } .icon-adjust { background-position: -48px -72px; } .icon-tint { background-position: -72px -72px; } .icon-edit { background-position: -96px -72px; } .icon-share { background-position: -120px -72px; } .icon-check { background-position: -144px -72px; } .icon-move { background-position: -168px -72px; } .icon-step-backward { background-position: -192px -72px; } .icon-fast-backward { background-position: -216px -72px; } .icon-backward { background-position: -240px -72px; } .icon-play { background-position: -264px -72px; } .icon-pause { background-position: -288px -72px; } .icon-stop { background-position: -312px -72px; } .icon-forward { background-position: -336px -72px; } .icon-fast-forward { background-position: -360px -72px; } .icon-step-forward { background-position: -384px -72px; } .icon-eject { background-position: -408px -72px; } .icon-chevron-left { background-position: -432px -72px; } .icon-chevron-right { background-position: -456px -72px; } .icon-plus-sign { background-position: 0 -96px; } .icon-minus-sign { background-position: -24px -96px; } .icon-remove-sign { background-position: -48px -96px; } .icon-ok-sign { background-position: -72px -96px; } .icon-question-sign { background-position: -96px -96px; } .icon-info-sign { background-position: -120px -96px; } .icon-screenshot { background-position: -144px -96px; } .icon-remove-circle { background-position: -168px -96px; } .icon-ok-circle { background-position: -192px -96px; } .icon-ban-circle { background-position: -216px -96px; } .icon-arrow-left { background-position: -240px -96px; } .icon-arrow-right { background-position: -264px -96px; } .icon-arrow-up { background-position: -289px -96px; } .icon-arrow-down { background-position: -312px -96px; } .icon-share-alt { background-position: -336px -96px; } .icon-resize-full { background-position: -360px -96px; } .icon-resize-small { background-position: -384px -96px; } .icon-plus { background-position: -408px -96px; } .icon-minus { background-position: -433px -96px; } .icon-asterisk { background-position: -456px -96px; } .icon-exclamation-sign { background-position: 0 -120px; } .icon-gift { background-position: -24px -120px; } .icon-leaf { background-position: -48px -120px; } .icon-fire { background-position: -72px -120px; } .icon-eye-open { background-position: -96px -120px; } .icon-eye-close { background-position: -120px -120px; } .icon-warning-sign { background-position: -144px -120px; } .icon-plane { background-position: -168px -120px; } .icon-calendar { background-position: -192px -120px; } .icon-random { width: 16px; background-position: -216px -120px; } .icon-comment { background-position: -240px -120px; } .icon-magnet { background-position: -264px -120px; } .icon-chevron-up { background-position: -288px -120px; } .icon-chevron-down { background-position: -313px -119px; } .icon-retweet { background-position: -336px -120px; } .icon-shopping-cart { background-position: -360px -120px; } .icon-folder-close { width: 16px; background-position: -384px -120px; } .icon-folder-open { width: 16px; background-position: -408px -120px; } .icon-resize-vertical { background-position: -432px -119px; } .icon-resize-horizontal { background-position: -456px -118px; } .icon-hdd { background-position: 0 -144px; } .icon-bullhorn { background-position: -24px -144px; } .icon-bell { background-position: -48px -144px; } .icon-certificate { background-position: -72px -144px; } .icon-thumbs-up { background-position: -96px -144px; } .icon-thumbs-down { background-position: -120px -144px; } .icon-hand-right { background-position: -144px -144px; } .icon-hand-left { background-position: -168px -144px; } .icon-hand-up { background-position: -192px -144px; } .icon-hand-down { background-position: -216px -144px; } .icon-circle-arrow-right { background-position: -240px -144px; } .icon-circle-arrow-left { background-position: -264px -144px; } .icon-circle-arrow-up { background-position: -288px -144px; } .icon-circle-arrow-down { background-position: -312px -144px; } .icon-globe { background-position: -336px -144px; } .icon-wrench { background-position: -360px -144px; } .icon-tasks { background-position: -384px -144px; } .icon-filter { background-position: -408px -144px; } .icon-briefcase { background-position: -432px -144px; } .icon-fullscreen { background-position: -456px -144px; } .dropup, .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; vertical-align: top; border-top: 4px solid #000000; border-right: 4px solid transparent; border-left: 4px solid transparent; content: ""; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 20px; color: #333333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { color: #ffffff; text-decoration: none; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #ffffff; text-decoration: none; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; outline: 0; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: default; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .open { *z-index: 1000; } .open > .dropdown-menu { display: block; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } .dropdown-submenu { position: relative; } .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px 6px; border-radius: 0 6px 6px 6px; } .dropdown-submenu:hover > .dropdown-menu { display: block; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; -moz-border-radius: 5px 5px 5px 0; border-radius: 5px 5px 5px 0; } .dropdown-submenu > a:after { display: block; float: right; width: 0; height: 0; margin-top: 5px; margin-right: -10px; border-color: transparent; border-left-color: #cccccc; border-style: solid; border-width: 5px 0 5px 5px; content: " "; } .dropdown-submenu:hover > a:after { border-left-color: #ffffff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .dropdown .dropdown-menu .nav-header { padding-right: 20px; padding-left: 20px; } .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; -moz-transition: opacity 0.15s linear; -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; -moz-transition: height 0.35s ease; -o-transition: height 0.35s ease; transition: height 0.35s ease; } .collapse.in { height: auto; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 20px; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.4; filter: alpha(opacity=40); } button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .btn { display: inline-block; *display: inline; padding: 4px 12px; margin-bottom: 0; *margin-left: .3em; font-size: 14px; line-height: 20px; color: #333333; text-align: center; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; cursor: pointer; background-color: #f5f5f5; *background-color: #e6e6e6; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; border: 1px solid #cccccc; *border: 0; border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-bottom-color: #b3b3b3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); *zoom: 1; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover, .btn:focus { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 11px 19px; font-size: 17.5px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } .btn-small { padding: 2px 10px; font-size: 11.9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } .btn-mini { padding: 0 6px; font-size: 10.5px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-block { display: block; width: 100%; padding-right: 0; padding-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255, 255, 255, 0.75); } .btn-primary { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; *background-color: #0044cc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); background-repeat: repeat-x; border-color: #0044cc #0044cc #002a80; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { color: #ffffff; background-color: #0044cc; *background-color: #003bb3; } .btn-primary:active, .btn-primary.active { background-color: #003399 \9; } .btn-warning { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #faa732; *background-color: #f89406; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; border-color: #f89406 #f89406 #ad6704; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { color: #ffffff; background-color: #f89406; *background-color: #df8505; } .btn-warning:active, .btn-warning.active { background-color: #c67605 \9; } .btn-danger { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #da4f49; *background-color: #bd362f; background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); background-repeat: repeat-x; border-color: #bd362f #bd362f #802420; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { color: #ffffff; background-color: #bd362f; *background-color: #a9302a; } .btn-danger:active, .btn-danger.active { background-color: #942a25 \9; } .btn-success { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #5bb75b; *background-color: #51a351; background-image: -moz-linear-gradient(top, #62c462, #51a351); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); background-image: -webkit-linear-gradient(top, #62c462, #51a351); background-image: -o-linear-gradient(top, #62c462, #51a351); background-image: linear-gradient(to bottom, #62c462, #51a351); background-repeat: repeat-x; border-color: #51a351 #51a351 #387038; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { color: #ffffff; background-color: #51a351; *background-color: #499249; } .btn-success:active, .btn-success.active { background-color: #408140 \9; } .btn-info { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #49afcd; *background-color: #2f96b4; background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); background-repeat: repeat-x; border-color: #2f96b4 #2f96b4 #1f6377; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { color: #ffffff; background-color: #2f96b4; *background-color: #2a85a0; } .btn-info:active, .btn-info.active { background-color: #24748c \9; } .btn-inverse { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #363636; *background-color: #222222; background-image: -moz-linear-gradient(top, #444444, #222222); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); background-image: -webkit-linear-gradient(top, #444444, #222222); background-image: -o-linear-gradient(top, #444444, #222222); background-image: linear-gradient(to bottom, #444444, #222222); background-repeat: repeat-x; border-color: #222222 #222222 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { color: #ffffff; background-color: #222222; *background-color: #151515; } .btn-inverse:active, .btn-inverse.active { background-color: #080808 \9; } button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-link { color: #0088cc; cursor: pointer; border-color: transparent; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-link:hover, .btn-link:focus { color: #005580; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333333; text-decoration: none; } .btn-group { position: relative; display: inline-block; *display: inline; *margin-left: .3em; font-size: 0; white-space: nowrap; vertical-align: middle; *zoom: 1; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { margin-top: 10px; margin-bottom: 10px; font-size: 0; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 14px; } .btn-group > .btn-mini { font-size: 10.5px; } .btn-group > .btn-small { font-size: 11.9px; } .btn-group > .btn-large { font-size: 17.5px; } .btn-group > .btn:first-child { margin-left: 0; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; } .btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; -moz-border-radius-bottomright: 6px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { *padding-top: 5px; padding-right: 8px; *padding-bottom: 5px; padding-left: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group > .btn-mini + .dropdown-toggle { *padding-top: 2px; padding-right: 5px; *padding-bottom: 2px; padding-left: 5px; } .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { *padding-top: 7px; padding-right: 12px; *padding-bottom: 7px; padding-left: 12px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } .btn-group.open .btn-primary.dropdown-toggle { background-color: #0044cc; } .btn-group.open .btn-warning.dropdown-toggle { background-color: #f89406; } .btn-group.open .btn-danger.dropdown-toggle { background-color: #bd362f; } .btn-group.open .btn-success.dropdown-toggle { background-color: #51a351; } .btn-group.open .btn-info.dropdown-toggle { background-color: #2f96b4; } .btn-group.open .btn-inverse.dropdown-toggle { background-color: #222222; } .btn .caret { margin-top: 8px; margin-left: 0; } .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-top-width: 5px; border-right-width: 5px; border-left-width: 5px; } .btn-mini .caret, .btn-small .caret { margin-top: 8px; } .dropup .btn-large .caret { border-bottom-width: 5px; } .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .btn-group-vertical { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; } .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group-vertical > .btn + .btn { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:first-child { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: 6px 6px 0 0; -moz-border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0; } .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 20px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .alert, .alert h4 { color: #c09853; } .alert h4 { margin: 0; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 20px; } .alert-success { color: #468847; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success h4 { color: #468847; } .alert-danger, .alert-error { color: #b94a48; background-color: #f2dede; border-color: #eed3d7; } .alert-danger h4, .alert-error h4 { color: #b94a48; } .alert-info { color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; } .alert-info h4 { color: #3a87ad; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .nav { margin-bottom: 20px; margin-left: 0; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } .nav > li > a > img { max-width: none; } .nav > .pull-right { float: right; } .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 20px; color: #999999; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-right: 15px; padding-left: 15px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-right: -15px; margin-left: -15px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); background-color: #0088cc; } .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } .nav-list .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { display: table; line-height: 0; content: ""; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 20px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555555; cursor: default; background-color: #ffffff; border: 1px solid #ddd; border-bottom-color: transparent; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #ffffff; background-color: #0088cc; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-topleft: 4px; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; } .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { z-index: 2; border-color: #ddd; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .nav-pills .dropdown-menu { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .nav .dropdown-toggle .caret { margin-top: 6px; border-top-color: #0088cc; border-bottom-color: #0088cc; } .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #005580; border-bottom-color: #005580; } /* move down carets for tabs */ .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, .nav > li.dropdown.open.active > a:focus { color: #ffffff; background-color: #999999; border-color: #999999; } .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, .nav li.dropdown.open a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; line-height: 0; content: ""; } .tabbable:after { clear: both; } .tab-content { overflow: auto; } .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { border-top-color: #ddd; border-bottom-color: transparent; } .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eeeeee #dddddd #eeeeee #eeeeee; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #ffffff; } .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #eeeeee #dddddd; } .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #ffffff; } .nav > .disabled > a { color: #999999; } .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; cursor: default; background-color: transparent; } .navbar { *position: relative; *z-index: 2; margin-bottom: 20px; overflow: visible; } .navbar-inner { min-height: 40px; padding-right: 20px; padding-left: 20px; background-color: #fafafa; background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); background-repeat: repeat-x; border: 1px solid #d4d4d4; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); *zoom: 1; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); } .navbar-inner:before, .navbar-inner:after { display: table; line-height: 0; content: ""; } .navbar-inner:after { clear: both; } .navbar .container { width: auto; } .nav-collapse.collapse { height: auto; overflow: visible; } .navbar .brand { display: block; float: left; padding: 10px 20px 10px; margin-left: -20px; font-size: 20px; font-weight: 200; color: #777777; text-shadow: 0 1px 0 #ffffff; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar-text { margin-bottom: 0; line-height: 40px; color: #777777; } .navbar-link { color: #777777; } .navbar-link:hover, .navbar-link:focus { color: #333333; } .navbar .divider-vertical { height: 40px; margin: 0 9px; border-right: 1px solid #ffffff; border-left: 1px solid #f2f2f2; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, .navbar .input-prepend .btn-group, .navbar .input-append .btn-group { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; line-height: 0; content: ""; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } .navbar-search .search-query { padding: 4px 14px; margin-bottom: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .navbar-static-top { position: static; margin-bottom: 0; } .navbar-static-top .navbar-inner { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; margin-bottom: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding-right: 0; padding-left: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .navbar-fixed-top { top: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; margin-right: 0; } .navbar .nav > li { float: left; } .navbar .nav > li > a { float: none; padding: 10px 15px 10px; color: #777777; text-decoration: none; text-shadow: 0 1px 0 #ffffff; } .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { color: #333333; text-decoration: none; background-color: transparent; } .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: #555555; text-decoration: none; background-color: #e5e5e5; -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); } .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; margin-right: 5px; margin-left: 5px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ededed; *background-color: #e5e5e5; background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); background-repeat: repeat-x; border-color: #e5e5e5 #e5e5e5 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); } .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] { color: #ffffff; background-color: #e5e5e5; *background-color: #d9d9d9; } .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #cccccc \9; } .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .navbar .nav > li > .dropdown-menu:before { position: absolute; top: -7px; left: 9px; display: inline-block; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .navbar .nav > li > .dropdown-menu:after { position: absolute; top: -6px; left: 10px; display: inline-block; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; border-left: 6px solid transparent; content: ''; } .navbar-fixed-bottom .nav > li > .dropdown-menu:before { top: auto; bottom: -7px; border-top: 7px solid #ccc; border-bottom: 0; border-top-color: rgba(0, 0, 0, 0.2); } .navbar-fixed-bottom .nav > li > .dropdown-menu:after { top: auto; bottom: -6px; border-top: 6px solid #ffffff; border-bottom: 0; } .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { color: #555555; background-color: #e5e5e5; } .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #777777; border-bottom-color: #777777; } .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { right: 0; left: auto; } .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { right: 12px; left: auto; } .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { right: 13px; left: auto; } .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { right: 100%; left: auto; margin-right: -1px; margin-left: 0; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .navbar-inverse .navbar-inner { background-color: #1b1b1b; background-image: -moz-linear-gradient(top, #222222, #111111); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); background-image: -webkit-linear-gradient(top, #222222, #111111); background-image: -o-linear-gradient(top, #222222, #111111); background-image: linear-gradient(to bottom, #222222, #111111); background-repeat: repeat-x; border-color: #252525; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); } .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #999999; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:focus { color: #ffffff; } .navbar-inverse .brand { color: #999999; } .navbar-inverse .navbar-text { color: #999999; } .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { color: #ffffff; background-color: transparent; } .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #ffffff; background-color: #111111; } .navbar-inverse .navbar-link { color: #999999; } .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #ffffff; } .navbar-inverse .divider-vertical { border-right-color: #222222; border-left-color: #111111; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { color: #ffffff; background-color: #111111; } .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #999999; border-bottom-color: #999999; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .navbar-search .search-query { color: #ffffff; background-color: #515151; border-color: #111111; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; color: #333333; text-shadow: 0 1px 0 #ffffff; background-color: #ffffff; border: 0; outline: 0; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); } .navbar-inverse .btn-navbar { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e0e0e; *background-color: #040404; background-image: -moz-linear-gradient(top, #151515, #040404); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); background-image: -webkit-linear-gradient(top, #151515, #040404); background-image: -o-linear-gradient(top, #151515, #040404); background-image: linear-gradient(to bottom, #151515, #040404); background-repeat: repeat-x; border-color: #040404 #040404 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { color: #ffffff; background-color: #040404; *background-color: #000000; } .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #000000 \9; } .breadcrumb { padding: 8px 15px; margin: 0 0 20px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .breadcrumb > li { display: inline-block; *display: inline; text-shadow: 0 1px 0 #ffffff; *zoom: 1; } .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } .breadcrumb > .active { color: #999999; } .pagination { margin: 20px 0; } .pagination ul { display: inline-block; *display: inline; margin-bottom: 0; margin-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *zoom: 1; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .pagination ul > li { display: inline; } .pagination ul > li > a, .pagination ul > li > span { float: left; padding: 4px 12px; line-height: 20px; text-decoration: none; background-color: #ffffff; border: 1px solid #dddddd; border-left-width: 0; } .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } .pagination ul > .active > a, .pagination ul > .active > span { color: #999999; cursor: default; } .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999999; cursor: default; background-color: transparent; } .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; } .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 17.5px; } .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; } .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; -moz-border-radius-topright: 6px; -moz-border-radius-bottomright: 6px; } .pagination-mini ul > li:first-child > a, .pagination-small ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > span { -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topleft: 3px; } .pagination-mini ul > li:last-child > a, .pagination-small ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; } .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 11.9px; } .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 0 6px; font-size: 10.5px; } .pager { margin: 20px 0; text-align: center; list-style: none; *zoom: 1; } .pager:before, .pager:after { display: table; line-height: 0; content: ""; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999999; cursor: default; background-color: #fff; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal { position: fixed; top: 10%; left: 50%; z-index: 1050; width: 560px; margin-left: -280px; background-color: #ffffff; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, 0.3); *border: 1px solid #999; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; outline: none; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; } .modal.fade { top: -25%; -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; -moz-transition: opacity 0.3s linear, top 0.3s ease-out; -o-transition: opacity 0.3s linear, top 0.3s ease-out; transition: opacity 0.3s linear, top 0.3s ease-out; } .modal.fade.in { top: 10%; } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-header h3 { margin: 0; line-height: 30px; } .modal-body { position: relative; max-height: 400px; padding: 15px; overflow-y: auto; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; *zoom: 1; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; } .modal-footer:before, .modal-footer:after { display: table; line-height: 0; content: ""; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .tooltip { position: absolute; z-index: 1030; display: block; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); visibility: visible; } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-right-color: #000000; border-width: 5px 5px 5px 0; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-left-color: #000000; border-width: 5px 0 5px 5px; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; white-space: normal; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .popover-title:empty { display: none; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999; border-top-color: rgba(0, 0, 0, 0.25); border-bottom-width: 0; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-top-color: #ffffff; border-bottom-width: 0; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999; border-right-color: rgba(0, 0, 0, 0.25); border-left-width: 0; } .popover.right .arrow:after { bottom: -10px; left: 1px; border-right-color: #ffffff; border-left-width: 0; } .popover.bottom .arrow { top: -11px; left: 50%; margin-left: -11px; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, 0.25); border-top-width: 0; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-bottom-color: #ffffff; border-top-width: 0; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-left-color: #999; border-left-color: rgba(0, 0, 0, 0.25); border-right-width: 0; } .popover.left .arrow:after { right: 1px; bottom: -10px; border-left-color: #ffffff; border-right-width: 0; } .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } .thumbnails:before, .thumbnails:after { display: table; line-height: 0; content: ""; } .thumbnails:after { clear: both; } .row-fluid .thumbnails { margin-left: 0; } .thumbnails > li { float: left; margin-bottom: 20px; margin-left: 20px; } .thumbnail { display: block; padding: 4px; line-height: 20px; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } a.thumbnail:hover, a.thumbnail:focus { border-color: #0088cc; -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); } .thumbnail > img { display: block; max-width: 100%; margin-right: auto; margin-left: auto; } .thumbnail .caption { padding: 9px; color: #555555; } .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { margin-left: 0; list-style: none; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 11.844px; font-weight: bold; line-height: 14px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); white-space: nowrap; vertical-align: baseline; background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-right: 9px; padding-left: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #b94a48; } .label-important[href], .badge-important[href] { background-color: #953b39; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #468847; } .label-success[href], .badge-success[href] { background-color: #356635; } .label-info, .badge-info { background-color: #3a87ad; } .label-info[href], .badge-info[href] { background-color: #2d6987; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); background-repeat: repeat-x; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .progress .bar { float: left; width: 0; height: 100%; font-size: 12px; color: #ffffff; text-align: center; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top, #149bdf, #0480be); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); background-image: -webkit-linear-gradient(top, #149bdf, #0480be); background-image: -o-linear-gradient(top, #149bdf, #0480be); background-image: linear-gradient(to bottom, #149bdf, #0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width 0.6s ease; -moz-transition: width 0.6s ease; -o-transition: width 0.6s ease; transition: width 0.6s ease; } .progress .bar + .bar { -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); } .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-success .bar, .progress .bar-success { background-color: #5eb95e; background-image: -moz-linear-gradient(top, #62c462, #57a957); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); background-image: -webkit-linear-gradient(top, #62c462, #57a957); background-image: -o-linear-gradient(top, #62c462, #57a957); background-image: linear-gradient(to bottom, #62c462, #57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); background-image: -o-linear-gradient(top, #5bc0de, #339bb9); background-image: linear-gradient(to bottom, #5bc0de, #339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-warning .bar, .progress .bar-warning { background-color: #faa732; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); } .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #fbb450; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .accordion { margin-bottom: 20px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-toggle { cursor: pointer; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 20px; line-height: 1; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: 0.6s ease-in-out left; -moz-transition: 0.6s ease-in-out left; -o-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #ffffff; text-align: center; background: #222222; border: 3px solid #ffffff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { right: 15px; left: auto; } .carousel-control:hover, .carousel-control:focus { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-indicators { position: absolute; top: 15px; right: 15px; z-index: 5; margin: 0; list-style: none; } .carousel-indicators li { display: block; float: left; width: 10px; height: 10px; margin-left: 5px; text-indent: -999px; background-color: #ccc; background-color: rgba(255, 255, 255, 0.25); border-radius: 5px; } .carousel-indicators .active { background-color: #fff; } .carousel-caption { position: absolute; right: 0; bottom: 0; left: 0; padding: 15px; background: #333333; background: rgba(0, 0, 0, 0.75); } .carousel-caption h4, .carousel-caption p { line-height: 20px; color: #ffffff; } .carousel-caption h4 { margin: 0 0 5px; } .carousel-caption p { margin-bottom: 0; } .hero-unit { padding: 60px; margin-bottom: 30px; font-size: 18px; font-weight: 200; line-height: 30px; color: inherit; background-color: #eeeeee; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; letter-spacing: -1px; color: inherit; } .hero-unit li { line-height: 30px; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=bootstrap-responsive.css Content-Type: text/css; name=bootstrap-responsive.css Content-Location: https://www.euroresidentes.com/bootstrap/css/bootstrap-responsive.css Content-Transfer-Encoding: 8bit /*! * Bootstrap Responsive v2.3.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; line-height: 0; content: ""; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } @-ms-viewport { width: device-width; } .hidden { display: none; visibility: hidden; } .visible-phone { display: none !important; } .visible-tablet { display: none !important; } .hidden-desktop { display: none !important; } .visible-desktop { display: inherit !important; } @media (min-width: 768px) and (max-width: 979px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important ; } .visible-tablet { display: inherit !important; } .hidden-tablet { display: none !important; } } @media (max-width: 767px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important; } .visible-phone { display: inherit !important; } .hidden-phone { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: inherit !important; } .hidden-print { display: none !important; } } @media (min-width: 1200px) { .row { margin-left: -30px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 30px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 1170px; } .span12 { width: 1170px; } .span11 { width: 1070px; } .span10 { width: 970px; } .span9 { width: 870px; } .span8 { width: 770px; } .span7 { width: 670px; } .span6 { width: 570px; } .span5 { width: 470px; } .span4 { width: 370px; } .span3 { width: 270px; } .span2 { width: 170px; } .span1 { width: 70px; } .offset12 { margin-left: 1230px; } .offset11 { margin-left: 1130px; } .offset10 { margin-left: 1030px; } .offset9 { margin-left: 930px; } .offset8 { margin-left: 830px; } .offset7 { margin-left: 730px; } .offset6 { margin-left: 630px; } .offset5 { margin-left: 530px; } .offset4 { margin-left: 430px; } .offset3 { margin-left: 330px; } .offset2 { margin-left: 230px; } .offset1 { margin-left: 130px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.564102564102564%; *margin-left: 2.5109110747408616%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.564102564102564%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.45299145299145%; *width: 91.39979996362975%; } .row-fluid .span10 { width: 82.90598290598291%; *width: 82.8527914166212%; } .row-fluid .span9 { width: 74.35897435897436%; *width: 74.30578286961266%; } .row-fluid .span8 { width: 65.81196581196582%; *width: 65.75877432260411%; } .row-fluid .span7 { width: 57.26495726495726%; *width: 57.21176577559556%; } .row-fluid .span6 { width: 48.717948717948715%; *width: 48.664757228587014%; } .row-fluid .span5 { width: 40.17094017094017%; *width: 40.11774868157847%; } .row-fluid .span4 { width: 31.623931623931625%; *width: 31.570740134569924%; } .row-fluid .span3 { width: 23.076923076923077%; *width: 23.023731587561375%; } .row-fluid .span2 { width: 14.52991452991453%; *width: 14.476723040552828%; } .row-fluid .span1 { width: 5.982905982905983%; *width: 5.929714493544281%; } .row-fluid .offset12 { margin-left: 105.12820512820512%; *margin-left: 105.02182214948171%; } .row-fluid .offset12:first-child { margin-left: 102.56410256410257%; *margin-left: 102.45771958537915%; } .row-fluid .offset11 { margin-left: 96.58119658119658%; *margin-left: 96.47481360247316%; } .row-fluid .offset11:first-child { margin-left: 94.01709401709402%; *margin-left: 93.91071103837061%; } .row-fluid .offset10 { margin-left: 88.03418803418803%; *margin-left: 87.92780505546462%; } .row-fluid .offset10:first-child { margin-left: 85.47008547008548%; *margin-left: 85.36370249136206%; } .row-fluid .offset9 { margin-left: 79.48717948717949%; *margin-left: 79.38079650845607%; } .row-fluid .offset9:first-child { margin-left: 76.92307692307693%; *margin-left: 76.81669394435352%; } .row-fluid .offset8 { margin-left: 70.94017094017094%; *margin-left: 70.83378796144753%; } .row-fluid .offset8:first-child { margin-left: 68.37606837606839%; *margin-left: 68.26968539734497%; } .row-fluid .offset7 { margin-left: 62.393162393162385%; *margin-left: 62.28677941443899%; } .row-fluid .offset7:first-child { margin-left: 59.82905982905982%; *margin-left: 59.72267685033642%; } .row-fluid .offset6 { margin-left: 53.84615384615384%; *margin-left: 53.739770867430444%; } .row-fluid .offset6:first-child { margin-left: 51.28205128205128%; *margin-left: 51.175668303327875%; } .row-fluid .offset5 { margin-left: 45.299145299145295%; *margin-left: 45.1927623204219%; } .row-fluid .offset5:first-child { margin-left: 42.73504273504273%; *margin-left: 42.62865975631933%; } .row-fluid .offset4 { margin-left: 36.75213675213675%; *margin-left: 36.645753773413354%; } .row-fluid .offset4:first-child { margin-left: 34.18803418803419%; *margin-left: 34.081651209310785%; } .row-fluid .offset3 { margin-left: 28.205128205128204%; *margin-left: 28.0987452264048%; } .row-fluid .offset3:first-child { margin-left: 25.641025641025642%; *margin-left: 25.53464266230224%; } .row-fluid .offset2 { margin-left: 19.65811965811966%; *margin-left: 19.551736679396257%; } .row-fluid .offset2:first-child { margin-left: 17.094017094017094%; *margin-left: 16.98763411529369%; } .row-fluid .offset1 { margin-left: 11.11111111111111%; *margin-left: 11.004728132387708%; } .row-fluid .offset1:first-child { margin-left: 8.547008547008547%; *margin-left: 8.440625568285142%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 30px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 1156px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 1056px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 956px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 856px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 756px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 656px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 556px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 456px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 356px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 256px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 156px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 56px; } .thumbnails { margin-left: -30px; } .thumbnails > li { margin-left: 30px; } .row-fluid .thumbnails { margin-left: 0; } } @media (min-width: 768px) and (max-width: 979px) { .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 724px; } .span12 { width: 724px; } .span11 { width: 662px; } .span10 { width: 600px; } .span9 { width: 538px; } .span8 { width: 476px; } .span7 { width: 414px; } .span6 { width: 352px; } .span5 { width: 290px; } .span4 { width: 228px; } .span3 { width: 166px; } .span2 { width: 104px; } .span1 { width: 42px; } .offset12 { margin-left: 764px; } .offset11 { margin-left: 702px; } .offset10 { margin-left: 640px; } .offset9 { margin-left: 578px; } .offset8 { margin-left: 516px; } .offset7 { margin-left: 454px; } .offset6 { margin-left: 392px; } .offset5 { margin-left: 330px; } .offset4 { margin-left: 268px; } .offset3 { margin-left: 206px; } .offset2 { margin-left: 144px; } .offset1 { margin-left: 82px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.7624309392265194%; *margin-left: 2.709239449864817%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.7624309392265194%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.43646408839778%; *width: 91.38327259903608%; } .row-fluid .span10 { width: 82.87292817679558%; *width: 82.81973668743387%; } .row-fluid .span9 { width: 74.30939226519337%; *width: 74.25620077583166%; } .row-fluid .span8 { width: 65.74585635359117%; *width: 65.69266486422946%; } .row-fluid .span7 { width: 57.18232044198895%; *width: 57.12912895262725%; } .row-fluid .span6 { width: 48.61878453038674%; *width: 48.56559304102504%; } .row-fluid .span5 { width: 40.05524861878453%; *width: 40.00205712942283%; } .row-fluid .span4 { width: 31.491712707182323%; *width: 31.43852121782062%; } .row-fluid .span3 { width: 22.92817679558011%; *width: 22.87498530621841%; } .row-fluid .span2 { width: 14.3646408839779%; *width: 14.311449394616199%; } .row-fluid .span1 { width: 5.801104972375691%; *width: 5.747913483013988%; } .row-fluid .offset12 { margin-left: 105.52486187845304%; *margin-left: 105.41847889972962%; } .row-fluid .offset12:first-child { margin-left: 102.76243093922652%; *margin-left: 102.6560479605031%; } .row-fluid .offset11 { margin-left: 96.96132596685082%; *margin-left: 96.8549429881274%; } .row-fluid .offset11:first-child { margin-left: 94.1988950276243%; *margin-left: 94.09251204890089%; } .row-fluid .offset10 { margin-left: 88.39779005524862%; *margin-left: 88.2914070765252%; } .row-fluid .offset10:first-child { margin-left: 85.6353591160221%; *margin-left: 85.52897613729868%; } .row-fluid .offset9 { margin-left: 79.8342541436464%; *margin-left: 79.72787116492299%; } .row-fluid .offset9:first-child { margin-left: 77.07182320441989%; *margin-left: 76.96544022569647%; } .row-fluid .offset8 { margin-left: 71.2707182320442%; *margin-left: 71.16433525332079%; } .row-fluid .offset8:first-child { margin-left: 68.50828729281768%; *margin-left: 68.40190431409427%; } .row-fluid .offset7 { margin-left: 62.70718232044199%; *margin-left: 62.600799341718584%; } .row-fluid .offset7:first-child { margin-left: 59.94475138121547%; *margin-left: 59.838368402492065%; } .row-fluid .offset6 { margin-left: 54.14364640883978%; *margin-left: 54.037263430116376%; } .row-fluid .offset6:first-child { margin-left: 51.38121546961326%; *margin-left: 51.27483249088986%; } .row-fluid .offset5 { margin-left: 45.58011049723757%; *margin-left: 45.47372751851417%; } .row-fluid .offset5:first-child { margin-left: 42.81767955801105%; *margin-left: 42.71129657928765%; } .row-fluid .offset4 { margin-left: 37.01657458563536%; *margin-left: 36.91019160691196%; } .row-fluid .offset4:first-child { margin-left: 34.25414364640884%; *margin-left: 34.14776066768544%; } .row-fluid .offset3 { margin-left: 28.45303867403315%; *margin-left: 28.346655695309746%; } .row-fluid .offset3:first-child { margin-left: 25.69060773480663%; *margin-left: 25.584224756083227%; } .row-fluid .offset2 { margin-left: 19.88950276243094%; *margin-left: 19.783119783707537%; } .row-fluid .offset2:first-child { margin-left: 17.12707182320442%; *margin-left: 17.02068884448102%; } .row-fluid .offset1 { margin-left: 11.32596685082873%; *margin-left: 11.219583872105325%; } .row-fluid .offset1:first-child { margin-left: 8.56353591160221%; *margin-left: 8.457152932878806%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 710px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 648px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 586px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 524px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 462px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 400px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 338px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 276px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 214px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 152px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 90px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 28px; } } @media (max-width: 767px) { body { padding-right: 20px; padding-left: 20px; } .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { margin-right: -20px; margin-left: -20px; } .container-fluid { padding: 0; } .dl-horizontal dt { float: none; width: auto; clear: none; text-align: left; } .dl-horizontal dd { margin-left: 0; } .container { width: auto; } .row-fluid { width: 100%; } .row, .thumbnails { margin-left: 0; } .thumbnails > li { float: none; margin-left: 0; } [class*="span"], .uneditable-input[class*="span"], .row-fluid [class*="span"] { display: block; float: none; width: 100%; margin-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .span12, .row-fluid .span12 { width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="offset"]:first-child { margin-left: 0; } .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { display: inline-block; width: auto; } .controls-row [class*="span"] + [class*="span"] { margin-left: 0; } .modal { position: fixed; top: 20px; right: 20px; left: 20px; width: auto; margin: 0; } .modal.fade { top: -100px; } .modal.fade.in { top: 20px; } } @media (max-width: 480px) { .nav-collapse { -webkit-transform: translate3d(0, 0, 0); } .page-header h1 small { display: block; line-height: 20px; } input[type="checkbox"], input[type="radio"] { border: 1px solid #ccc; } .form-horizontal .control-label { float: none; width: auto; padding-top: 0; text-align: left; } .form-horizontal .controls { margin-left: 0; } .form-horizontal .control-list { padding-top: 0; } .form-horizontal .form-actions { padding-right: 10px; padding-left: 10px; } .media .pull-left, .media .pull-right { display: block; float: none; margin-bottom: 10px; } .media-object { margin-right: 0; margin-left: 0; } .modal { top: 10px; right: 10px; left: 10px; } .modal-header .close { padding: 10px; margin: -10px; } .carousel-caption { position: static; } } @media (max-width: 979px) { body { padding-top: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: static; } .navbar-fixed-top { margin-bottom: 20px; } .navbar-fixed-bottom { margin-top: 20px; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding: 5px; } .navbar .container { width: auto; padding: 0; } .navbar .brand { padding-right: 10px; padding-left: 10px; margin: 0 0 0 -5px; } .nav-collapse { clear: both; } .nav-collapse .nav { float: none; margin: 0 0 10px; } .nav-collapse .nav > li { float: none; } .nav-collapse .nav > li > a { margin-bottom: 2px; } .nav-collapse .nav > .divider-vertical { display: none; } .nav-collapse .nav .nav-header { color: #777777; text-shadow: none; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { padding: 9px 15px; font-weight: bold; color: #777777; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .nav-collapse .btn { padding: 4px 10px 4px; font-weight: normal; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; } .nav-collapse .nav > li > a:hover, .nav-collapse .nav > li > a:focus, .nav-collapse .dropdown-menu a:hover, .nav-collapse .dropdown-menu a:focus { background-color: #f2f2f2; } .navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .dropdown-menu a { color: #999999; } .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .nav > li > a:focus, .navbar-inverse .nav-collapse .dropdown-menu a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:focus { background-color: #111111; } .nav-collapse.in .btn-group { padding: 0; margin-top: 5px; } .nav-collapse .dropdown-menu { position: static; top: auto; left: auto; display: none; float: none; max-width: none; padding: 0; margin: 0 15px; background-color: transparent; border: none; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .nav-collapse .open > .dropdown-menu { display: block; } .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { display: none; } .nav-collapse .dropdown-menu .divider { display: none; } .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { display: none; } .nav-collapse .navbar-form, .nav-collapse .navbar-search { float: none; padding: 10px 15px; margin: 10px 0; border-top: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); } .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { border-top-color: #111111; border-bottom-color: #111111; } .navbar .nav-collapse .nav.pull-right { float: none; margin-left: 0; } .nav-collapse, .nav-collapse.collapse { height: 0; overflow: hidden; } .navbar .btn-navbar { display: block; } .navbar-static .navbar-inner { padding-right: 10px; padding-left: 10px; } } @media (min-width: 980px) { .nav-collapse.collapse { height: auto !important; overflow: visible !important; } } ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=twb2-col-ordering.css Content-Type: text/css; name=twb2-col-ordering.css Content-Location: https://www.euroresidentes.com/css/twb2-col-ordering.css Content-Transfer-Encoding: 8bit /*Twitter Bootstrap 2 - Colum ordering como version 3*/ @media (min-width: 768px) { .col-md-push-1, .col-md-push-2, .col-md-push-3, .col-md-push-4, .col-md-push-5, .col-md-push-6, .col-md-push-7, .col-md-push-8, .col-md-push-9, .col-md-push-10, .col-md-push-11, .col-md-pull-1, .col-md-pull-2, .col-md-pull-3, .col-md-pull-4, .col-md-pull-5, .col-md-pull-6, .col-md-pull-7, .col-md-pull-8, .col-md-pull-9, .col-md-pull-10, .col-md-pull-11 { position: relative; } .col-md-push-1 { left: 8.333333333333332%; } .col-md-push-2 { left: 16.666666666666664%; } .col-md-push-3 { left: 25%; } .col-md-push-4 { left: 33.33333333333333%; } .col-md-push-5 { left: 41.66666666666667%; } .col-md-push-6 { left: 50%; } .col-md-push-7 { left: 58.333333333333336%; } .col-md-push-8 { left: 66.66666666666666%; } .col-md-push-9 { left: 75%; } .col-md-push-10 { left: 83.33333333333334%; } .col-md-push-11 { left: 91.66666666666666%; } .col-md-pull-0 { right: auto; } .col-md-pull-1 { right: 8.333333333333332%; } .col-md-pull-2 { right: 16.666666666666664%; } .col-md-pull-3 { right: 25%; } .col-md-pull-4 { right: 33.33333333333333%; } .col-md-pull-5 { right: 41.66666666666667%; } .col-md-pull-6 { right: 50%; } .col-md-pull-7 { right: 58.333333333333336%; } .col-md-pull-8 { right: 66.66666666666666%; } .col-md-pull-9 { right: 75%; } .col-md-pull-10 { right: 83.33333333333334%; } .col-md-pull-11 { right: 91.66666666666666%; } } ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=css.css Content-Type: text/css; charset=utf-8; name=css.css Content-Location: http://fonts.googleapis.com/css?family=Nobile Content-Transfer-Encoding: 8bit @font-face { font-family: 'Nobile'; font-style: normal; font-weight: 400; src: local('Nobile'), local('Nobile-Regular'), url(http://fonts.gstatic.com/s/nobile/v9/m8JTjflSeaOVl1iGWa3Q.woff) format('woff'); } ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=home_general.css Content-Type: text/css; charset=utf-8; name=home_general.css Content-Location: https://www.euroresidentes.com/css/home_general.css Content-Transfer-Encoding: 8bit @charset "utf-8"; /* CSS Document */ body {background-color: #ffffff;} a:visited {color: #0088cc;} a:hover {color: #333333;} @media print { a[href]:after { content: "";} } /***************** HEADER *********************/ .bgheader{background-color: #ffffff; background-repeat: repeat-x;background-image: url(http://www.euroresidentes.com/imagenes/home/bg_grey.jpg); } .header {width: 100%;color: #FFFFFF;font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;line-height: 1,5em;font-style: normal;font-size: large;text-align: left;border-radius: 10px 10px 0px 0px;margin-top: 0px;float: left;min-height: 40px;} .header_logo{margin-top: 16px;margin-left:5px;margin-bottom:20px;} .cap_ocio {text-align: left;background-color: #F3F3F3;font-size: 16px;padding: 10px;margin: 0 0 10px 0;} /***************** FIN HEADER *********************/ /*****************varios *********************/ .lista li {margin-bottom:12px;} .social_media{margin-top: 30px;margin-bottom:20px;margin-left: 130px;} .social_media img {margin-right:3px;float:left;} .share_buttons{ margin-top: 10px; margin-right: 5px; margin-bottom: 10px;} .share_buttons img {float:right; min-height: 20px; min-width: 20px; margin-right: 3px;} .buscador{float: left; margin-top: 18px;padding: 5px;display: inline-block;width: 300px;margin-left: -17px;} /***************** Menu izquierda *********************/ .menu_izquierda {color: #333333;border-top-color: #406773;background-color: #F2F2ED;padding: 10px;font-size: small;border-top-style: solid;} .menu_izquierda ul {margin-left: 0;} .menu_izquierda li {padding: 8px;border-bottom: 1px solid #CCCCCC;list-style-position: inside;list-style-type: none;} .menu_izquierda li {padding: 8px;border-bottom: 1px solid #CCCCCC;list-style-position: inside;list-style-type: none;} .menu_izquierda li a.gris {color:#333;text-decoration:none;} .menu_izquierda li a:hover.gris {text-decoration:underline;} /***************** fin Menu izquierda *********************/ /***************** Contenido *********************/ h1 {font-family: 'Nobile', sans-serif;font-size: 32px;margin-left: 10px;margin-bottom: 10px;margin-top: 10px;font-weight: bold;font-style: normal;color: #393636;} h2 {font-family: 'Nobile', sans-serif;font-size:25px;margin-bottom: 10px; font-weight: bold;font-style: normal;line-height: 30px;} h3 {font-family: 'Nobile', sans-serif;font-size: 20px;line-height: 22px;font-weight: bold;font-style: normal; } h4 {font-family: 'Nobile', sans-serif;font-size: 13px;line-height: 18px;font-weight: bold;font-style: normal;line-height:20px;} p {margin-bottom: 20px; } .texto_autor {font-family: 'Nobile', sans-serif;background-color: #f2f2f2; margin-right: 20px; font-size: 10px; padding: 5px; border-radius: 4px;} .enlaceautor {font-family: 'Nobile', sans-serif;font-size: 10px;line-height: 5px; line-height:16px; } .contenido_principal{font-size: small;} .contenido_principal img{float: left;padding: 5px;} .publicidad_cuadro{float: left;margin-right: 2em;padding-top: 15px; } .publi_rectangular {text-align: center;padding: 25px 0 25px 0 ; } .publi_rectangular_sup {text-align: center;padding: 10px 0 25px 0 ;} .publi_rectangular_sup img {vertical-align: top;} .zona_busca {padding: 10px 0 25px 0 ;} hr {height: 1px; border-top: 1px solid grey; margin-bottom: 10px;} .imagen_izquierda {float: left;margin-right:10px;vertical-align: top;} .imagen_derecha {float: right;margin-top:20px;margin-left:20px;margin-right:20px;margin-bottom:30px;} #preview a:hover {text-decoration: underline !important;} .img-responsive{ max-width:100%;display:block;height:auto;} .frases_contenido p {display:block;padding: 5px 10px 20px 8px;} .horoscopos{margin-top: 10px;margin-bottom:20px;} .horoscopos img {margin-right:5px;margin-bottom:10px;} .caja {border: thin solid #CCCCCC;padding: 5px;} .caja_padding_inferior{ padding-bottom: 30px;} .caja_margen_inferior{ margin-bottom: 10px;} a.enlaceautor {font-family: 'Nobile', sans-serif;color: #666;text-decoration:none;} a.enlaceautor:link {font-family: 'Nobile', sans-serif;color: #666;text-decoration:none;} a.enlaceautor:visited {font-family: 'Nobile', sans-serif;color: #666;} a.enlaceautor:hover {font-family: 'Nobile', sans-serif;color: #00CCFF;text-decoration:none;} a.texto_autor {font-family: 'Nobile', sans-serif;color: #666;text-decoration:none;} a.texto_autor:link {font-family: 'Nobile', sans-serif;color: #666;text-decoration:none;} a.texto_autor:visited {font-family: 'Nobile', sans-serif;color: #666;} a.texto_autor:hover {font-family: 'Nobile', sans-serif;color: #666;text-decoration:underline;} .noticia-principal { font-family: 'Nobile', Helvetica, Arial, sans-serif; font-size: 27px; line-height: 30px;margin-bottom: 20px; font-weight: bold;} /***************** fin Contenido *********************/ .intro {padding-bottom: 10px;} /*****************Footer *********************/ .footer {color: #666;background-color: #EFEFEF;text-align: left;padding:20px;} .footer a:link {color: #666;text-decoration: none;} .footer a:visited {text-decoration: none;color: #666;} .footer a:hover {text-decoration: underline;color:#666;} .footer a:active {text-decoration: none;} .pie{ color: #666; background-color: #EFEFEF;text-align: left; float:left;padding: 30px;margin-top: 20px !important;margin-bottom:20px !important;width: 100%;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin-left: auto;margin-right: auto;} .social_media_pie{margin-top: 10px; margin-bottom:60px;} .social_media_pie img {margin-right:3px; float:left;} /***************** fin Footer *********************/ /***************** TABLA *********************/ @media (max-width: 768px) { /*tablet*/ .bgheader {margin-left: -20px;margin-right: -20px;} .bgheader .container {margin-left: 20px;margin-right: 20px;} .table-responsive {width: 100%;margin-bottom: 15px;overflow-x: scroll;overflow-y: hidden;border: 1px solid #dddddd;} .table-responsive > .table {margin-bottom: 0;background-color: #fff;} } /***************** TABLA final *********************/ .diccionario thead th{color: #ffffff;background-color: #406773;} .diccionario th{background-color: #EEE;} /***************** Colores Texto *********************/ .texto-verde{color: #00B200;} .texto-rojo{color: #FF3300; } .texto-resaltado-bg-verde{color: #FFF;background-color: #090;padding:8px;} .texto-resaltado-bg-verde1{color: #333;background-color: #C6FFC6;padding: 8px; } .texto-resaltado-bg-naranja{color: #FFF;background-color: #FF8A00;padding:8px;} .texto-resaltado-bg-rojo{color: #FFF;background-color: #FF3300;padding:8px;} .texto-resaltado-bg-gris{color: #FFF;background-color: #333;padding:8px;} .texto-resaltado-bg-gris1{color: #FFF;background-color: #999;padding:8px;} .texto-resaltado-bg-gris2{color: #393636;background-color: #F2F2F2;padding: 8px; } .texto-resaltado-bg-azul{color: #FFF;background-color: #00BFFF;padding:8px;} .texto-resaltado-bg-amarillo{color: #FFF;background-color: #FFBF00;padding:8px;} .texto-resaltado-bg-morado{color: #FFF;background-color: #300040;padding:8px;} /* BOOTSTRAP OVERRRIDES */ /* A los botones de bootstrap 2 les falta contemplar el caso "visited": */ .btn-success:visited{ color: #ffffff; background-color: #51a351; *background-color: #499249;} /* Video responsive: poner un div con class 'flex-video' que envuelva al iframe Tomado de Zurb Foundation */ .flex-video { position: relative; padding-top: 1.5625em; padding-bottom: 67.5%; height: 0; margin-bottom: 1em; overflow: hidden; } .flex-video.widescreen {padding-bottom: 57.25%; } .flex-video.vimeo {padding-top: 0; }.flex-video iframe, .flex-video object,.flex-video embed,.flex-video video {position: absolute;top: 0;left: 2px;width: 100%;height: 100%;} .navbar-inner { background-size:cover;} .nabvar-logo{ font-family: "Crete Round";} .feedback-box{ background-color: #ACE1F1; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px;padding: 10px;float: left;} .feedback-box a:link { color: #ffffff; text-decoration: none;} .feedback-box a:visited { text-decoration: none; color: #ffffff;} .feedback-box a:hover { text-decoration: underline; color:#ffffff;} .feedback-box a:active { text-decoration: none;} .feedback_title{ font-weight: bold; font-size: 20px; margin:10px;} .contact{ background-color: #3FC3C8; border-radius: 5px 5px 5px 5px; padding:10px; text-align: center; color: white; font-size: 14px;} .box_textarea { border:1px solid #999999; width:91%; color: black; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;} /*Botones COMPARTIR REDES SOCIALES PERSONALIZADOS */ .opacidad:hover { opacity:0.8;} .botones-compartir {margin: 20px 0px 10px;font-size: 30px;text-align: center;} #pageshare {position:fixed; bottom:15%; left:0; float:left; border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#fff;z-index:10; a:hover{opacity: 0.8;} ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=bootstrap.js Content-Type: application/x-javascript; name=bootstrap.js Content-Location: https://www.euroresidentes.com/bootstrap/js/bootstrap.js Content-Transfer-Encoding: Base64 LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQogKiBib290c3RyYXAtdHJhbnNpdGlvbi5qcyB2Mi4zLjENCiAqIGh0 dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRt bCN0cmFuc2l0aW9ucw0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQogKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVy LCBJbmMuDQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1 c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu c2UuDQogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQN CiAqDQogKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y LjANCiAqDQogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQogKiBkaXN0cmlidXRlZCB1 bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB U0lTLA0KICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQogKiBTZWUgdGhlIExp Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz c2lvbnMgYW5kDQogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCiAq ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gKi8NCg0KDQohZnVuY3Rpb24gKCQpIHsNCg0KICAidXNlIHN0 cmljdCI7IC8vIGpzaGludCA7XzsNCg0KDQogIC8qIENTUyBUUkFOU0lUSU9OIFNV UFBPUlQgKGh0dHA6Ly93d3cubW9kZXJuaXpyLmNvbS8pDQogICAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g Ki8NCg0KICAkKGZ1bmN0aW9uICgpIHsNCg0KICAgICQuc3VwcG9ydC50cmFuc2l0 aW9uID0gKGZ1bmN0aW9uICgpIHsNCg0KICAgICAgdmFyIHRyYW5zaXRpb25FbmQg PSAoZnVuY3Rpb24gKCkgew0KDQogICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2Jvb3RzdHJhcCcpDQogICAgICAgICAgLCB0cmFuc0VuZEV2 ZW50TmFtZXMgPSB7DQogICAgICAgICAgICAgICAnV2Via2l0VHJhbnNpdGlvbicg OiAnd2Via2l0VHJhbnNpdGlvbkVuZCcNCiAgICAgICAgICAgICwgICdNb3pUcmFu c2l0aW9uJyAgICA6ICd0cmFuc2l0aW9uZW5kJw0KICAgICAgICAgICAgLCAgJ09U cmFuc2l0aW9uJyAgICAgIDogJ29UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5k Jw0KICAgICAgICAgICAgLCAgJ3RyYW5zaXRpb24nICAgICAgIDogJ3RyYW5zaXRp b25lbmQnDQogICAgICAgICAgICB9DQogICAgICAgICAgLCBuYW1lDQoNCiAgICAg ICAgZm9yIChuYW1lIGluIHRyYW5zRW5kRXZlbnROYW1lcyl7DQogICAgICAgICAg aWYgKGVsLnN0eWxlW25hbWVdICE9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAg IHJldHVybiB0cmFuc0VuZEV2ZW50TmFtZXNbbmFtZV0NCiAgICAgICAgICB9DQog ICAgICAgIH0NCg0KICAgICAgfSgpKQ0KDQogICAgICByZXR1cm4gdHJhbnNpdGlv bkVuZCAmJiB7DQogICAgICAgIGVuZDogdHJhbnNpdGlvbkVuZA0KICAgICAgfQ0K DQogICAgfSkoKQ0KDQogIH0pDQoNCn0od2luZG93LmpRdWVyeSk7LyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KICogYm9vdHN0cmFwLWFsZXJ0LmpzIHYyLjMuMQ0KICogaHR0cDovL3R3 aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2FsZXJ0 cw0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5j Lg0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRo aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0K ICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0K ICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQog Kg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIg dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywN CiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNl IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z IGFuZA0KICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ICovDQoNCg0KIWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3Qi OyAvLyBqc2hpbnQgO187DQoNCg0KIC8qIEFMRVJUIENMQVNTIERFRklOSVRJT04N CiAgKiA9PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIGRpc21pc3Mg PSAnW2RhdGEtZGlzbWlzcz0iYWxlcnQiXScNCiAgICAsIEFsZXJ0ID0gZnVuY3Rp b24gKGVsKSB7DQogICAgICAgICQoZWwpLm9uKCdjbGljaycsIGRpc21pc3MsIHRo aXMuY2xvc2UpDQogICAgICB9DQoNCiAgQWxlcnQucHJvdG90eXBlLmNsb3NlID0g ZnVuY3Rpb24gKGUpIHsNCiAgICB2YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAs IHNlbGVjdG9yID0gJHRoaXMuYXR0cignZGF0YS10YXJnZXQnKQ0KICAgICAgLCAk cGFyZW50DQoNCiAgICBpZiAoIXNlbGVjdG9yKSB7DQogICAgICBzZWxlY3RvciA9 ICR0aGlzLmF0dHIoJ2hyZWYnKQ0KICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvciAm JiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sICcnKSAvL3N0cmlw IGZvciBpZTcNCiAgICB9DQoNCiAgICAkcGFyZW50ID0gJChzZWxlY3RvcikNCg0K ICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpDQoNCiAgICAkcGFyZW50Lmxlbmd0 aCB8fCAoJHBhcmVudCA9ICR0aGlzLmhhc0NsYXNzKCdhbGVydCcpID8gJHRoaXMg OiAkdGhpcy5wYXJlbnQoKSkNCg0KICAgICRwYXJlbnQudHJpZ2dlcihlID0gJC5F dmVudCgnY2xvc2UnKSkNCg0KICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgp KSByZXR1cm4NCg0KICAgICRwYXJlbnQucmVtb3ZlQ2xhc3MoJ2luJykNCg0KICAg IGZ1bmN0aW9uIHJlbW92ZUVsZW1lbnQoKSB7DQogICAgICAkcGFyZW50DQogICAg ICAgIC50cmlnZ2VyKCdjbG9zZWQnKQ0KICAgICAgICAucmVtb3ZlKCkNCiAgICB9 DQoNCiAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiAkcGFyZW50Lmhhc0NsYXNz KCdmYWRlJykgPw0KICAgICAgJHBhcmVudC5vbigkLnN1cHBvcnQudHJhbnNpdGlv bi5lbmQsIHJlbW92ZUVsZW1lbnQpIDoNCiAgICAgIHJlbW92ZUVsZW1lbnQoKQ0K ICB9DQoNCg0KIC8qIEFMRVJUIFBMVUdJTiBERUZJTklUSU9ODQogICogPT09PT09 PT09PT09PT09PT09PT09PT0gKi8NCg0KICB2YXIgb2xkID0gJC5mbi5hbGVydA0K DQogICQuZm4uYWxlcnQgPSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0dXJu IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAkKHRo aXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ2FsZXJ0JykNCiAgICAg IGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYWxlcnQnLCAoZGF0YSA9IG5ldyBBbGVy dCh0aGlzKSkpDQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykg ZGF0YVtvcHRpb25dLmNhbGwoJHRoaXMpDQogICAgfSkNCiAgfQ0KDQogICQuZm4u YWxlcnQuQ29uc3RydWN0b3IgPSBBbGVydA0KDQoNCiAvKiBBTEVSVCBOTyBDT05G TElDVA0KICAqID09PT09PT09PT09PT09PT09ICovDQoNCiAgJC5mbi5hbGVydC5u b0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgew0KICAgICQuZm4uYWxlcnQgPSBvbGQN CiAgICByZXR1cm4gdGhpcw0KICB9DQoNCg0KIC8qIEFMRVJUIERBVEEtQVBJDQog ICogPT09PT09PT09PT09PT0gKi8NCg0KICAkKGRvY3VtZW50KS5vbignY2xpY2su YWxlcnQuZGF0YS1hcGknLCBkaXNtaXNzLCBBbGVydC5wcm90b3R5cGUuY2xvc2Up DQoNCn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBib290c3Ry YXAtYnV0dG9uLmpzIHYyLjMuMQ0KICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNv bS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2J1dHRvbnMNCiAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExp Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo ZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBv YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3 dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNz IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0 aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw cmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGlt aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8N Cg0KDQohZnVuY3Rpb24gKCQpIHsNCg0KICAidXNlIHN0cmljdCI7IC8vIGpzaGlu dCA7XzsNCg0KDQogLyogQlVUVE9OIFBVQkxJQyBDTEFTUyBERUZJTklUSU9ODQog ICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIEJ1 dHRvbiA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAgdGhpcy4k ZWxlbWVudCA9ICQoZWxlbWVudCkNCiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVu ZCh7fSwgJC5mbi5idXR0b24uZGVmYXVsdHMsIG9wdGlvbnMpDQogIH0NCg0KICBC dXR0b24ucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7DQog ICAgdmFyIGQgPSAnZGlzYWJsZWQnDQogICAgICAsICRlbCA9IHRoaXMuJGVsZW1l bnQNCiAgICAgICwgZGF0YSA9ICRlbC5kYXRhKCkNCiAgICAgICwgdmFsID0gJGVs LmlzKCdpbnB1dCcpID8gJ3ZhbCcgOiAnaHRtbCcNCg0KICAgIHN0YXRlID0gc3Rh dGUgKyAnVGV4dCcNCiAgICBkYXRhLnJlc2V0VGV4dCB8fCAkZWwuZGF0YSgncmVz ZXRUZXh0JywgJGVsW3ZhbF0oKSkNCg0KICAgICRlbFt2YWxdKGRhdGFbc3RhdGVd IHx8IHRoaXMub3B0aW9uc1tzdGF0ZV0pDQoNCiAgICAvLyBwdXNoIHRvIGV2ZW50 IGxvb3AgdG8gYWxsb3cgZm9ybXMgdG8gc3VibWl0DQogICAgc2V0VGltZW91dChm dW5jdGlvbiAoKSB7DQogICAgICBzdGF0ZSA9PSAnbG9hZGluZ1RleHQnID8NCiAg ICAgICAgJGVsLmFkZENsYXNzKGQpLmF0dHIoZCwgZCkgOg0KICAgICAgICAkZWwu cmVtb3ZlQ2xhc3MoZCkucmVtb3ZlQXR0cihkKQ0KICAgIH0sIDApDQogIH0NCg0K ICBCdXR0b24ucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uICgpIHsNCiAgICB2 YXIgJHBhcmVudCA9IHRoaXMuJGVsZW1lbnQuY2xvc2VzdCgnW2RhdGEtdG9nZ2xl PSJidXR0b25zLXJhZGlvIl0nKQ0KDQogICAgJHBhcmVudCAmJiAkcGFyZW50DQog ICAgICAuZmluZCgnLmFjdGl2ZScpDQogICAgICAucmVtb3ZlQ2xhc3MoJ2FjdGl2 ZScpDQoNCiAgICB0aGlzLiRlbGVtZW50LnRvZ2dsZUNsYXNzKCdhY3RpdmUnKQ0K ICB9DQoNCg0KIC8qIEJVVFRPTiBQTFVHSU4gREVGSU5JVElPTg0KICAqID09PT09 PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBvbGQgPSAkLmZuLmJ1dHRv bg0KDQogICQuZm4uYnV0dG9uID0gZnVuY3Rpb24gKG9wdGlvbikgew0KICAgIHJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgdmFyICR0aGlzID0g JCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdidXR0b24nKQ0K ICAgICAgICAsIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYm IG9wdGlvbg0KICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdidXR0b24nLCAo ZGF0YSA9IG5ldyBCdXR0b24odGhpcywgb3B0aW9ucykpKQ0KICAgICAgaWYgKG9w dGlvbiA9PSAndG9nZ2xlJykgZGF0YS50b2dnbGUoKQ0KICAgICAgZWxzZSBpZiAo b3B0aW9uKSBkYXRhLnNldFN0YXRlKG9wdGlvbikNCiAgICB9KQ0KICB9DQoNCiAg JC5mbi5idXR0b24uZGVmYXVsdHMgPSB7DQogICAgbG9hZGluZ1RleHQ6ICdsb2Fk aW5nLi4uJw0KICB9DQoNCiAgJC5mbi5idXR0b24uQ29uc3RydWN0b3IgPSBCdXR0 b24NCg0KDQogLyogQlVUVE9OIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09 PT09PT09ICovDQoNCiAgJC5mbi5idXR0b24ubm9Db25mbGljdCA9IGZ1bmN0aW9u ICgpIHsNCiAgICAkLmZuLmJ1dHRvbiA9IG9sZA0KICAgIHJldHVybiB0aGlzDQog IH0NCg0KDQogLyogQlVUVE9OIERBVEEtQVBJDQogICogPT09PT09PT09PT09PT09 ICovDQoNCiAgJChkb2N1bWVudCkub24oJ2NsaWNrLmJ1dHRvbi5kYXRhLWFwaScs ICdbZGF0YS10b2dnbGVePWJ1dHRvbl0nLCBmdW5jdGlvbiAoZSkgew0KICAgIHZh ciAkYnRuID0gJChlLnRhcmdldCkNCiAgICBpZiAoISRidG4uaGFzQ2xhc3MoJ2J0 bicpKSAkYnRuID0gJGJ0bi5jbG9zZXN0KCcuYnRuJykNCiAgICAkYnRuLmJ1dHRv bigndG9nZ2xlJykNCiAgfSkNCg0KfSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQogKiBib290c3RyYXAtY2Fyb3VzZWwuanMgdjIuMy4xDQogKiBodHRwOi8v dHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjY2Fy b3VzZWwNCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIs IEluYy4NCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAqIHlvdSBtYXkgbm90IHVz ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z ZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0K ICoNCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu MA0KICoNCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCiAqIGRpc3RyaWJ1dGVkIHVu ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT SVMsDQogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCiAqIFNlZSB0aGUgTGlj ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz aW9ucyBhbmQNCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSAqLw0KDQoNCiFmdW5jdGlvbiAoJCkgew0KDQogICJ1c2Ugc3Ry aWN0IjsgLy8ganNoaW50IDtfOw0KDQoNCiAvKiBDQVJPVVNFTCBDTEFTUyBERUZJ TklUSU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZh ciBDYXJvdXNlbCA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAg dGhpcy4kZWxlbWVudCA9ICQoZWxlbWVudCkNCiAgICB0aGlzLiRpbmRpY2F0b3Jz ID0gdGhpcy4kZWxlbWVudC5maW5kKCcuY2Fyb3VzZWwtaW5kaWNhdG9ycycpDQog ICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucw0KICAgIHRoaXMub3B0aW9ucy5wYXVz ZSA9PSAnaG92ZXInICYmIHRoaXMuJGVsZW1lbnQNCiAgICAgIC5vbignbW91c2Vl bnRlcicsICQucHJveHkodGhpcy5wYXVzZSwgdGhpcykpDQogICAgICAub24oJ21v dXNlbGVhdmUnLCAkLnByb3h5KHRoaXMuY3ljbGUsIHRoaXMpKQ0KICB9DQoNCiAg Q2Fyb3VzZWwucHJvdG90eXBlID0gew0KDQogICAgY3ljbGU6IGZ1bmN0aW9uIChl KSB7DQogICAgICBpZiAoIWUpIHRoaXMucGF1c2VkID0gZmFsc2UNCiAgICAgIGlm ICh0aGlzLmludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpOw0K ICAgICAgdGhpcy5vcHRpb25zLmludGVydmFsDQogICAgICAgICYmICF0aGlzLnBh dXNlZA0KICAgICAgICAmJiAodGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCQu cHJveHkodGhpcy5uZXh0LCB0aGlzKSwgdGhpcy5vcHRpb25zLmludGVydmFsKSkN CiAgICAgIHJldHVybiB0aGlzDQogICAgfQ0KDQogICwgZ2V0QWN0aXZlSW5kZXg6 IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJGFjdGl2ZSA9IHRoaXMuJGVsZW1l bnQuZmluZCgnLml0ZW0uYWN0aXZlJykNCiAgICAgIHRoaXMuJGl0ZW1zID0gdGhp cy4kYWN0aXZlLnBhcmVudCgpLmNoaWxkcmVuKCkNCiAgICAgIHJldHVybiB0aGlz LiRpdGVtcy5pbmRleCh0aGlzLiRhY3RpdmUpDQogICAgfQ0KDQogICwgdG86IGZ1 bmN0aW9uIChwb3MpIHsNCiAgICAgIHZhciBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0 QWN0aXZlSW5kZXgoKQ0KICAgICAgICAsIHRoYXQgPSB0aGlzDQoNCiAgICAgIGlm IChwb3MgPiAodGhpcy4kaXRlbXMubGVuZ3RoIC0gMSkgfHwgcG9zIDwgMCkgcmV0 dXJuDQoNCiAgICAgIGlmICh0aGlzLnNsaWRpbmcpIHsNCiAgICAgICAgcmV0dXJu IHRoaXMuJGVsZW1lbnQub25lKCdzbGlkJywgZnVuY3Rpb24gKCkgew0KICAgICAg ICAgIHRoYXQudG8ocG9zKQ0KICAgICAgICB9KQ0KICAgICAgfQ0KDQogICAgICBp ZiAoYWN0aXZlSW5kZXggPT0gcG9zKSB7DQogICAgICAgIHJldHVybiB0aGlzLnBh dXNlKCkuY3ljbGUoKQ0KICAgICAgfQ0KDQogICAgICByZXR1cm4gdGhpcy5zbGlk ZShwb3MgPiBhY3RpdmVJbmRleCA/ICduZXh0JyA6ICdwcmV2JywgJCh0aGlzLiRp dGVtc1twb3NdKSkNCiAgICB9DQoNCiAgLCBwYXVzZTogZnVuY3Rpb24gKGUpIHsN CiAgICAgIGlmICghZSkgdGhpcy5wYXVzZWQgPSB0cnVlDQogICAgICBpZiAodGhp cy4kZWxlbWVudC5maW5kKCcubmV4dCwgLnByZXYnKS5sZW5ndGggJiYgJC5zdXBw b3J0LnRyYW5zaXRpb24uZW5kKSB7DQogICAgICAgIHRoaXMuJGVsZW1lbnQudHJp Z2dlcigkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpDQogICAgICAgIHRoaXMuY3lj bGUodHJ1ZSkNCiAgICAgIH0NCiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRl cnZhbCkNCiAgICAgIHRoaXMuaW50ZXJ2YWwgPSBudWxsDQogICAgICByZXR1cm4g dGhpcw0KICAgIH0NCg0KICAsIG5leHQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlm ICh0aGlzLnNsaWRpbmcpIHJldHVybg0KICAgICAgcmV0dXJuIHRoaXMuc2xpZGUo J25leHQnKQ0KICAgIH0NCg0KICAsIHByZXY6IGZ1bmN0aW9uICgpIHsNCiAgICAg IGlmICh0aGlzLnNsaWRpbmcpIHJldHVybg0KICAgICAgcmV0dXJuIHRoaXMuc2xp ZGUoJ3ByZXYnKQ0KICAgIH0NCg0KICAsIHNsaWRlOiBmdW5jdGlvbiAodHlwZSwg bmV4dCkgew0KICAgICAgdmFyICRhY3RpdmUgPSB0aGlzLiRlbGVtZW50LmZpbmQo Jy5pdGVtLmFjdGl2ZScpDQogICAgICAgICwgJG5leHQgPSBuZXh0IHx8ICRhY3Rp dmVbdHlwZV0oKQ0KICAgICAgICAsIGlzQ3ljbGluZyA9IHRoaXMuaW50ZXJ2YWwN CiAgICAgICAgLCBkaXJlY3Rpb24gPSB0eXBlID09ICduZXh0JyA/ICdsZWZ0JyA6 ICdyaWdodCcNCiAgICAgICAgLCBmYWxsYmFjayAgPSB0eXBlID09ICduZXh0JyA/ ICdmaXJzdCcgOiAnbGFzdCcNCiAgICAgICAgLCB0aGF0ID0gdGhpcw0KICAgICAg ICAsIGUNCg0KICAgICAgdGhpcy5zbGlkaW5nID0gdHJ1ZQ0KDQogICAgICBpc0N5 Y2xpbmcgJiYgdGhpcy5wYXVzZSgpDQoNCiAgICAgICRuZXh0ID0gJG5leHQubGVu Z3RoID8gJG5leHQgOiB0aGlzLiRlbGVtZW50LmZpbmQoJy5pdGVtJylbZmFsbGJh Y2tdKCkNCg0KICAgICAgZSA9ICQuRXZlbnQoJ3NsaWRlJywgew0KICAgICAgICBy ZWxhdGVkVGFyZ2V0OiAkbmV4dFswXQ0KICAgICAgLCBkaXJlY3Rpb246IGRpcmVj dGlvbg0KICAgICAgfSkNCg0KICAgICAgaWYgKCRuZXh0Lmhhc0NsYXNzKCdhY3Rp dmUnKSkgcmV0dXJuDQoNCiAgICAgIGlmICh0aGlzLiRpbmRpY2F0b3JzLmxlbmd0 aCkgew0KICAgICAgICB0aGlzLiRpbmRpY2F0b3JzLmZpbmQoJy5hY3RpdmUnKS5y ZW1vdmVDbGFzcygnYWN0aXZlJykNCiAgICAgICAgdGhpcy4kZWxlbWVudC5vbmUo J3NsaWQnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgdmFyICRuZXh0SW5kaWNh dG9yID0gJCh0aGF0LiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhhdC5nZXRBY3Rp dmVJbmRleCgpXSkNCiAgICAgICAgICAkbmV4dEluZGljYXRvciAmJiAkbmV4dElu ZGljYXRvci5hZGRDbGFzcygnYWN0aXZlJykNCiAgICAgICAgfSkNCiAgICAgIH0N Cg0KICAgICAgaWYgKCQuc3VwcG9ydC50cmFuc2l0aW9uICYmIHRoaXMuJGVsZW1l bnQuaGFzQ2xhc3MoJ3NsaWRlJykpIHsNCiAgICAgICAgdGhpcy4kZWxlbWVudC50 cmlnZ2VyKGUpDQogICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSBy ZXR1cm4NCiAgICAgICAgJG5leHQuYWRkQ2xhc3ModHlwZSkNCiAgICAgICAgJG5l eHRbMF0ub2Zmc2V0V2lkdGggLy8gZm9yY2UgcmVmbG93DQogICAgICAgICRhY3Rp dmUuYWRkQ2xhc3MoZGlyZWN0aW9uKQ0KICAgICAgICAkbmV4dC5hZGRDbGFzcyhk aXJlY3Rpb24pDQogICAgICAgIHRoaXMuJGVsZW1lbnQub25lKCQuc3VwcG9ydC50 cmFuc2l0aW9uLmVuZCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICRuZXh0LnJl bW92ZUNsYXNzKFt0eXBlLCBkaXJlY3Rpb25dLmpvaW4oJyAnKSkuYWRkQ2xhc3Mo J2FjdGl2ZScpDQogICAgICAgICAgJGFjdGl2ZS5yZW1vdmVDbGFzcyhbJ2FjdGl2 ZScsIGRpcmVjdGlvbl0uam9pbignICcpKQ0KICAgICAgICAgIHRoYXQuc2xpZGlu ZyA9IGZhbHNlDQogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHRo YXQuJGVsZW1lbnQudHJpZ2dlcignc2xpZCcpIH0sIDApDQogICAgICAgIH0pDQog ICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSkN CiAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybg0KICAg ICAgICAkYWN0aXZlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKQ0KICAgICAgICAkbmV4 dC5hZGRDbGFzcygnYWN0aXZlJykNCiAgICAgICAgdGhpcy5zbGlkaW5nID0gZmFs c2UNCiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdzbGlkJykNCiAgICAg IH0NCg0KICAgICAgaXNDeWNsaW5nICYmIHRoaXMuY3ljbGUoKQ0KDQogICAgICBy ZXR1cm4gdGhpcw0KICAgIH0NCg0KICB9DQoNCg0KIC8qIENBUk9VU0VMIFBMVUdJ TiBERUZJTklUSU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8N Cg0KICB2YXIgb2xkID0gJC5mbi5jYXJvdXNlbA0KDQogICQuZm4uY2Fyb3VzZWwg PSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAgICwg ZGF0YSA9ICR0aGlzLmRhdGEoJ2Nhcm91c2VsJykNCiAgICAgICAgLCBvcHRpb25z ID0gJC5leHRlbmQoe30sICQuZm4uY2Fyb3VzZWwuZGVmYXVsdHMsIHR5cGVvZiBv cHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uKQ0KICAgICAgICAsIGFjdGlvbiA9 IHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycgPyBvcHRpb24gOiBvcHRpb25zLnNs aWRlDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ2Nhcm91c2VsJywgKGRh dGEgPSBuZXcgQ2Fyb3VzZWwodGhpcywgb3B0aW9ucykpKQ0KICAgICAgaWYgKHR5 cGVvZiBvcHRpb24gPT0gJ251bWJlcicpIGRhdGEudG8ob3B0aW9uKQ0KICAgICAg ZWxzZSBpZiAoYWN0aW9uKSBkYXRhW2FjdGlvbl0oKQ0KICAgICAgZWxzZSBpZiAo b3B0aW9ucy5pbnRlcnZhbCkgZGF0YS5wYXVzZSgpLmN5Y2xlKCkNCiAgICB9KQ0K ICB9DQoNCiAgJC5mbi5jYXJvdXNlbC5kZWZhdWx0cyA9IHsNCiAgICBpbnRlcnZh bDogNTAwMA0KICAsIHBhdXNlOiAnaG92ZXInDQogIH0NCg0KICAkLmZuLmNhcm91 c2VsLkNvbnN0cnVjdG9yID0gQ2Fyb3VzZWwNCg0KDQogLyogQ0FST1VTRUwgTk8g Q09ORkxJQ1QNCiAgKiA9PT09PT09PT09PT09PT09PT09PSAqLw0KDQogICQuZm4u Y2Fyb3VzZWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAkLmZuLmNh cm91c2VsID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAgfQ0KDQogLyogQ0FST1VT RUwgREFUQS1BUEkNCiAgKiA9PT09PT09PT09PT09PT09PSAqLw0KDQogICQoZG9j dW1lbnQpLm9uKCdjbGljay5jYXJvdXNlbC5kYXRhLWFwaScsICdbZGF0YS1zbGlk ZV0sIFtkYXRhLXNsaWRlLXRvXScsIGZ1bmN0aW9uIChlKSB7DQogICAgdmFyICR0 aGlzID0gJCh0aGlzKSwgaHJlZg0KICAgICAgLCAkdGFyZ2V0ID0gJCgkdGhpcy5h dHRyKCdkYXRhLXRhcmdldCcpIHx8IChocmVmID0gJHRoaXMuYXR0cignaHJlZicp KSAmJiBocmVmLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywgJycpKSAvL3N0cmlw IGZvciBpZTcNCiAgICAgICwgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkdGFyZ2V0 LmRhdGEoKSwgJHRoaXMuZGF0YSgpKQ0KICAgICAgLCBzbGlkZUluZGV4DQoNCiAg ICAkdGFyZ2V0LmNhcm91c2VsKG9wdGlvbnMpDQoNCiAgICBpZiAoc2xpZGVJbmRl eCA9ICR0aGlzLmF0dHIoJ2RhdGEtc2xpZGUtdG8nKSkgew0KICAgICAgJHRhcmdl dC5kYXRhKCdjYXJvdXNlbCcpLnBhdXNlKCkudG8oc2xpZGVJbmRleCkuY3ljbGUo KQ0KICAgIH0NCg0KICAgIGUucHJldmVudERlZmF1bHQoKQ0KICB9KQ0KDQp9KHdp bmRvdy5qUXVlcnkpOy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3RzdHJhcC1jb2xs YXBzZS5qcyB2Mi4zLjENCiAqIGh0dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9v dHN0cmFwL2phdmFzY3JpcHQuaHRtbCNjb2xsYXBzZQ0KICogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExpY2Vu c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi TGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBvYnRh aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3dy5h cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJl cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n LCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz cyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRh dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0K DQohZnVuY3Rpb24gKCQpIHsNCg0KICAidXNlIHN0cmljdCI7IC8vIGpzaGludCA7 XzsNCg0KDQogLyogQ09MTEFQU0UgUFVCTElDIENMQVNTIERFRklOSVRJT04NCiAg KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBD b2xsYXBzZSA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAgdGhp cy4kZWxlbWVudCA9ICQoZWxlbWVudCkNCiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4 dGVuZCh7fSwgJC5mbi5jb2xsYXBzZS5kZWZhdWx0cywgb3B0aW9ucykNCg0KICAg IGlmICh0aGlzLm9wdGlvbnMucGFyZW50KSB7DQogICAgICB0aGlzLiRwYXJlbnQg PSAkKHRoaXMub3B0aW9ucy5wYXJlbnQpDQogICAgfQ0KDQogICAgdGhpcy5vcHRp b25zLnRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSgpDQogIH0NCg0KICBDb2xsYXBzZS5w cm90b3R5cGUgPSB7DQoNCiAgICBjb25zdHJ1Y3RvcjogQ29sbGFwc2UNCg0KICAs IGRpbWVuc2lvbjogZnVuY3Rpb24gKCkgew0KICAgICAgdmFyIGhhc1dpZHRoID0g dGhpcy4kZWxlbWVudC5oYXNDbGFzcygnd2lkdGgnKQ0KICAgICAgcmV0dXJuIGhh c1dpZHRoID8gJ3dpZHRoJyA6ICdoZWlnaHQnDQogICAgfQ0KDQogICwgc2hvdzog ZnVuY3Rpb24gKCkgew0KICAgICAgdmFyIGRpbWVuc2lvbg0KICAgICAgICAsIHNj cm9sbA0KICAgICAgICAsIGFjdGl2ZXMNCiAgICAgICAgLCBoYXNEYXRhDQoNCiAg ICAgIGlmICh0aGlzLnRyYW5zaXRpb25pbmcgfHwgdGhpcy4kZWxlbWVudC5oYXND bGFzcygnaW4nKSkgcmV0dXJuDQoNCiAgICAgIGRpbWVuc2lvbiA9IHRoaXMuZGlt ZW5zaW9uKCkNCiAgICAgIHNjcm9sbCA9ICQuY2FtZWxDYXNlKFsnc2Nyb2xsJywg ZGltZW5zaW9uXS5qb2luKCctJykpDQogICAgICBhY3RpdmVzID0gdGhpcy4kcGFy ZW50ICYmIHRoaXMuJHBhcmVudC5maW5kKCc+IC5hY2NvcmRpb24tZ3JvdXAgPiAu aW4nKQ0KDQogICAgICBpZiAoYWN0aXZlcyAmJiBhY3RpdmVzLmxlbmd0aCkgew0K ICAgICAgICBoYXNEYXRhID0gYWN0aXZlcy5kYXRhKCdjb2xsYXBzZScpDQogICAg ICAgIGlmIChoYXNEYXRhICYmIGhhc0RhdGEudHJhbnNpdGlvbmluZykgcmV0dXJu DQogICAgICAgIGFjdGl2ZXMuY29sbGFwc2UoJ2hpZGUnKQ0KICAgICAgICBoYXNE YXRhIHx8IGFjdGl2ZXMuZGF0YSgnY29sbGFwc2UnLCBudWxsKQ0KICAgICAgfQ0K DQogICAgICB0aGlzLiRlbGVtZW50W2RpbWVuc2lvbl0oMCkNCiAgICAgIHRoaXMu dHJhbnNpdGlvbignYWRkQ2xhc3MnLCAkLkV2ZW50KCdzaG93JyksICdzaG93bicp DQogICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50W2Rp bWVuc2lvbl0odGhpcy4kZWxlbWVudFswXVtzY3JvbGxdKQ0KICAgIH0NCg0KICAs IGhpZGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciBkaW1lbnNpb24NCiAgICAg IGlmICh0aGlzLnRyYW5zaXRpb25pbmcgfHwgIXRoaXMuJGVsZW1lbnQuaGFzQ2xh c3MoJ2luJykpIHJldHVybg0KICAgICAgZGltZW5zaW9uID0gdGhpcy5kaW1lbnNp b24oKQ0KICAgICAgdGhpcy5yZXNldCh0aGlzLiRlbGVtZW50W2RpbWVuc2lvbl0o KSkNCiAgICAgIHRoaXMudHJhbnNpdGlvbigncmVtb3ZlQ2xhc3MnLCAkLkV2ZW50 KCdoaWRlJyksICdoaWRkZW4nKQ0KICAgICAgdGhpcy4kZWxlbWVudFtkaW1lbnNp b25dKDApDQogICAgfQ0KDQogICwgcmVzZXQ6IGZ1bmN0aW9uIChzaXplKSB7DQog ICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5kaW1lbnNpb24oKQ0KDQogICAgICB0 aGlzLiRlbGVtZW50DQogICAgICAgIC5yZW1vdmVDbGFzcygnY29sbGFwc2UnKQ0K ICAgICAgICBbZGltZW5zaW9uXShzaXplIHx8ICdhdXRvJykNCiAgICAgICAgWzBd Lm9mZnNldFdpZHRoDQoNCiAgICAgIHRoaXMuJGVsZW1lbnRbc2l6ZSAhPT0gbnVs bCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSgnY29sbGFwc2UnKQ0KDQog ICAgICByZXR1cm4gdGhpcw0KICAgIH0NCg0KICAsIHRyYW5zaXRpb246IGZ1bmN0 aW9uIChtZXRob2QsIHN0YXJ0RXZlbnQsIGNvbXBsZXRlRXZlbnQpIHsNCiAgICAg IHZhciB0aGF0ID0gdGhpcw0KICAgICAgICAsIGNvbXBsZXRlID0gZnVuY3Rpb24g KCkgew0KICAgICAgICAgICAgaWYgKHN0YXJ0RXZlbnQudHlwZSA9PSAnc2hvdycp IHRoYXQucmVzZXQoKQ0KICAgICAgICAgICAgdGhhdC50cmFuc2l0aW9uaW5nID0g MA0KICAgICAgICAgICAgdGhhdC4kZWxlbWVudC50cmlnZ2VyKGNvbXBsZXRlRXZl bnQpDQogICAgICAgICAgfQ0KDQogICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIo c3RhcnRFdmVudCkNCg0KICAgICAgaWYgKHN0YXJ0RXZlbnQuaXNEZWZhdWx0UHJl dmVudGVkKCkpIHJldHVybg0KDQogICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSAx DQoNCiAgICAgIHRoaXMuJGVsZW1lbnRbbWV0aG9kXSgnaW4nKQ0KDQogICAgICAk LnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdj b2xsYXBzZScpID8NCiAgICAgICAgdGhpcy4kZWxlbWVudC5vbmUoJC5zdXBwb3J0 LnRyYW5zaXRpb24uZW5kLCBjb21wbGV0ZSkgOg0KICAgICAgICBjb21wbGV0ZSgp DQogICAgfQ0KDQogICwgdG9nZ2xlOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlz W3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJykgPyAnaGlkZScgOiAnc2hvdydd KCkNCiAgICB9DQoNCiAgfQ0KDQoNCiAvKiBDT0xMQVBTRSBQTFVHSU4gREVGSU5J VElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFy IG9sZCA9ICQuZm4uY29sbGFwc2UNCg0KICAkLmZuLmNvbGxhcHNlID0gZnVuY3Rp b24gKG9wdGlvbikgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkg ew0KICAgICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAk dGhpcy5kYXRhKCdjb2xsYXBzZScpDQogICAgICAgICwgb3B0aW9ucyA9ICQuZXh0 ZW5kKHt9LCAkLmZuLmNvbGxhcHNlLmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5 cGVvZiBvcHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uKQ0KICAgICAgaWYgKCFk YXRhKSAkdGhpcy5kYXRhKCdjb2xsYXBzZScsIChkYXRhID0gbmV3IENvbGxhcHNl KHRoaXMsIG9wdGlvbnMpKSkNCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdz dHJpbmcnKSBkYXRhW29wdGlvbl0oKQ0KICAgIH0pDQogIH0NCg0KICAkLmZuLmNv bGxhcHNlLmRlZmF1bHRzID0gew0KICAgIHRvZ2dsZTogdHJ1ZQ0KICB9DQoNCiAg JC5mbi5jb2xsYXBzZS5Db25zdHJ1Y3RvciA9IENvbGxhcHNlDQoNCg0KIC8qIENP TExBUFNFIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09PT09PT0gKi8N Cg0KICAkLmZuLmNvbGxhcHNlLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7DQog ICAgJC5mbi5jb2xsYXBzZSA9IG9sZA0KICAgIHJldHVybiB0aGlzDQogIH0NCg0K DQogLyogQ09MTEFQU0UgREFUQS1BUEkNCiAgKiA9PT09PT09PT09PT09PT09PSAq Lw0KDQogICQoZG9jdW1lbnQpLm9uKCdjbGljay5jb2xsYXBzZS5kYXRhLWFwaScs ICdbZGF0YS10b2dnbGU9Y29sbGFwc2VdJywgZnVuY3Rpb24gKGUpIHsNCiAgICB2 YXIgJHRoaXMgPSAkKHRoaXMpLCBocmVmDQogICAgICAsIHRhcmdldCA9ICR0aGlz LmF0dHIoJ2RhdGEtdGFyZ2V0JykNCiAgICAgICAgfHwgZS5wcmV2ZW50RGVmYXVs dCgpDQogICAgICAgIHx8IChocmVmID0gJHRoaXMuYXR0cignaHJlZicpKSAmJiBo cmVmLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywgJycpIC8vc3RyaXAgZm9yIGll Nw0KICAgICAgLCBvcHRpb24gPSAkKHRhcmdldCkuZGF0YSgnY29sbGFwc2UnKSA/ ICd0b2dnbGUnIDogJHRoaXMuZGF0YSgpDQogICAgJHRoaXNbJCh0YXJnZXQpLmhh c0NsYXNzKCdpbicpID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKCdjb2xs YXBzZWQnKQ0KICAgICQodGFyZ2V0KS5jb2xsYXBzZShvcHRpb24pDQogIH0pDQoN Cn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBib290c3RyYXAt ZHJvcGRvd24uanMgdjIuMy4xDQogKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29t L2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjZHJvcGRvd25zDQogKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy4NCiAqDQogKiBM aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0 aGUgIkxpY2Vuc2UiKTsNCiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCiAqIFlvdSBtYXkg b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KICoNCiAqIGh0dHA6Ly93 d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KICoNCiAqIFVubGVz cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp dGluZywgc29mdHdhcmUNCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQogKiBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4 cHJlc3Mgb3IgaW1wbGllZC4NCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCiAqIGxp bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KICogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICov DQoNCg0KIWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3QiOyAvLyBqc2hp bnQgO187DQoNCg0KIC8qIERST1BET1dOIENMQVNTIERFRklOSVRJT04NCiAgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIHRvZ2dsZSA9ICdb ZGF0YS10b2dnbGU9ZHJvcGRvd25dJw0KICAgICwgRHJvcGRvd24gPSBmdW5jdGlv biAoZWxlbWVudCkgew0KICAgICAgICB2YXIgJGVsID0gJChlbGVtZW50KS5vbign Y2xpY2suZHJvcGRvd24uZGF0YS1hcGknLCB0aGlzLnRvZ2dsZSkNCiAgICAgICAg JCgnaHRtbCcpLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLWFwaScsIGZ1bmN0aW9u ICgpIHsNCiAgICAgICAgICAkZWwucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ29wZW4n KQ0KICAgICAgICB9KQ0KICAgICAgfQ0KDQogIERyb3Bkb3duLnByb3RvdHlwZSA9 IHsNCg0KICAgIGNvbnN0cnVjdG9yOiBEcm9wZG93bg0KDQogICwgdG9nZ2xlOiBm dW5jdGlvbiAoZSkgew0KICAgICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAg ICAsICRwYXJlbnQNCiAgICAgICAgLCBpc0FjdGl2ZQ0KDQogICAgICBpZiAoJHRo aXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHJldHVybg0KDQogICAgICAk cGFyZW50ID0gZ2V0UGFyZW50KCR0aGlzKQ0KDQogICAgICBpc0FjdGl2ZSA9ICRw YXJlbnQuaGFzQ2xhc3MoJ29wZW4nKQ0KDQogICAgICBjbGVhck1lbnVzKCkNCg0K ICAgICAgaWYgKCFpc0FjdGl2ZSkgew0KICAgICAgICAkcGFyZW50LnRvZ2dsZUNs YXNzKCdvcGVuJykNCiAgICAgIH0NCg0KICAgICAgJHRoaXMuZm9jdXMoKQ0KDQog ICAgICByZXR1cm4gZmFsc2UNCiAgICB9DQoNCiAgLCBrZXlkb3duOiBmdW5jdGlv biAoZSkgew0KICAgICAgdmFyICR0aGlzDQogICAgICAgICwgJGl0ZW1zDQogICAg ICAgICwgJGFjdGl2ZQ0KICAgICAgICAsICRwYXJlbnQNCiAgICAgICAgLCBpc0Fj dGl2ZQ0KICAgICAgICAsIGluZGV4DQoNCiAgICAgIGlmICghLygzOHw0MHwyNykv LnRlc3QoZS5rZXlDb2RlKSkgcmV0dXJuDQoNCiAgICAgICR0aGlzID0gJCh0aGlz KQ0KDQogICAgICBlLnByZXZlbnREZWZhdWx0KCkNCiAgICAgIGUuc3RvcFByb3Bh Z2F0aW9uKCkNCg0KICAgICAgaWYgKCR0aGlzLmlzKCcuZGlzYWJsZWQsIDpkaXNh YmxlZCcpKSByZXR1cm4NCg0KICAgICAgJHBhcmVudCA9IGdldFBhcmVudCgkdGhp cykNCg0KICAgICAgaXNBY3RpdmUgPSAkcGFyZW50Lmhhc0NsYXNzKCdvcGVuJykN Cg0KICAgICAgaWYgKCFpc0FjdGl2ZSB8fCAoaXNBY3RpdmUgJiYgZS5rZXlDb2Rl ID09IDI3KSkgew0KICAgICAgICBpZiAoZS53aGljaCA9PSAyNykgJHBhcmVudC5m aW5kKHRvZ2dsZSkuZm9jdXMoKQ0KICAgICAgICByZXR1cm4gJHRoaXMuY2xpY2so KQ0KICAgICAgfQ0KDQogICAgICAkaXRlbXMgPSAkKCdbcm9sZT1tZW51XSBsaTpu b3QoLmRpdmlkZXIpOnZpc2libGUgYScsICRwYXJlbnQpDQoNCiAgICAgIGlmICgh JGl0ZW1zLmxlbmd0aCkgcmV0dXJuDQoNCiAgICAgIGluZGV4ID0gJGl0ZW1zLmlu ZGV4KCRpdGVtcy5maWx0ZXIoJzpmb2N1cycpKQ0KDQogICAgICBpZiAoZS5rZXlD b2RlID09IDM4ICYmIGluZGV4ID4gMCkgaW5kZXgtLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyB1cA0KICAgICAgaWYgKGUua2V5Q29k ZSA9PSA0MCAmJiBpbmRleCA8ICRpdGVtcy5sZW5ndGggLSAxKSBpbmRleCsrICAg ICAgICAgICAgICAgICAgICAgICAgLy8gZG93bg0KICAgICAgaWYgKCF+aW5kZXgp IGluZGV4ID0gMA0KDQogICAgICAkaXRlbXMNCiAgICAgICAgLmVxKGluZGV4KQ0K ICAgICAgICAuZm9jdXMoKQ0KICAgIH0NCg0KICB9DQoNCiAgZnVuY3Rpb24gY2xl YXJNZW51cygpIHsNCiAgICAkKHRvZ2dsZSkuZWFjaChmdW5jdGlvbiAoKSB7DQog ICAgICBnZXRQYXJlbnQoJCh0aGlzKSkucmVtb3ZlQ2xhc3MoJ29wZW4nKQ0KICAg IH0pDQogIH0NCg0KICBmdW5jdGlvbiBnZXRQYXJlbnQoJHRoaXMpIHsNCiAgICB2 YXIgc2VsZWN0b3IgPSAkdGhpcy5hdHRyKCdkYXRhLXRhcmdldCcpDQogICAgICAs ICRwYXJlbnQNCg0KICAgIGlmICghc2VsZWN0b3IpIHsNCiAgICAgIHNlbGVjdG9y ID0gJHRoaXMuYXR0cignaHJlZicpDQogICAgICBzZWxlY3RvciA9IHNlbGVjdG9y ICYmIC8jLy50ZXN0KHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/ PSNbXlxzXSokKS8sICcnKSAvL3N0cmlwIGZvciBpZTcNCiAgICB9DQoNCiAgICAk cGFyZW50ID0gc2VsZWN0b3IgJiYgJChzZWxlY3RvcikNCg0KICAgIGlmICghJHBh cmVudCB8fCAhJHBhcmVudC5sZW5ndGgpICRwYXJlbnQgPSAkdGhpcy5wYXJlbnQo KQ0KDQogICAgcmV0dXJuICRwYXJlbnQNCiAgfQ0KDQoNCiAgLyogRFJPUERPV04g UExVR0lOIERFRklOSVRJT04NCiAgICogPT09PT09PT09PT09PT09PT09PT09PT09 PT0gKi8NCg0KICB2YXIgb2xkID0gJC5mbi5kcm9wZG93bg0KDQogICQuZm4uZHJv cGRvd24gPSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0dXJuIHRoaXMuZWFj aChmdW5jdGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpDQogICAg ICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ2Ryb3Bkb3duJykNCiAgICAgIGlmICgh ZGF0YSkgJHRoaXMuZGF0YSgnZHJvcGRvd24nLCAoZGF0YSA9IG5ldyBEcm9wZG93 bih0aGlzKSkpDQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykg ZGF0YVtvcHRpb25dLmNhbGwoJHRoaXMpDQogICAgfSkNCiAgfQ0KDQogICQuZm4u ZHJvcGRvd24uQ29uc3RydWN0b3IgPSBEcm9wZG93bg0KDQoNCiAvKiBEUk9QRE9X TiBOTyBDT05GTElDVA0KICAqID09PT09PT09PT09PT09PT09PT09ICovDQoNCiAg JC5mbi5kcm9wZG93bi5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgew0KICAgICQu Zm4uZHJvcGRvd24gPSBvbGQNCiAgICByZXR1cm4gdGhpcw0KICB9DQoNCg0KICAv KiBBUFBMWSBUTyBTVEFOREFSRCBEUk9QRE9XTiBFTEVNRU5UUw0KICAgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogICQoZG9jdW1l bnQpDQogICAgLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLWFwaScsIGNsZWFyTWVu dXMpDQogICAgLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLWFwaScsICcuZHJvcGRv d24gZm9ybScsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfSkN CiAgICAub24oJ2NsaWNrLmRyb3Bkb3duLW1lbnUnLCBmdW5jdGlvbiAoZSkgeyBl LnN0b3BQcm9wYWdhdGlvbigpIH0pDQogICAgLm9uKCdjbGljay5kcm9wZG93bi5k YXRhLWFwaScgICwgdG9nZ2xlLCBEcm9wZG93bi5wcm90b3R5cGUudG9nZ2xlKQ0K ICAgIC5vbigna2V5ZG93bi5kcm9wZG93bi5kYXRhLWFwaScsIHRvZ2dsZSArICcs IFtyb2xlPW1lbnVdJyAsIERyb3Bkb3duLnByb3RvdHlwZS5rZXlkb3duKQ0KDQp9 KHdpbmRvdy5qUXVlcnkpOw0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBib290c3RyYXAtbW9k YWwuanMgdjIuMy4xDQogKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3Rz dHJhcC9qYXZhc2NyaXB0Lmh0bWwjbW9kYWxzDQogKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIENv cHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy4NCiAqDQogKiBMaWNlbnNlZCB1bmRl ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui KTsNCiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29w eSBvZiB0aGUgTGljZW5zZSBhdA0KICoNCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9y Zy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KICoNCiAqIFVubGVzcyByZXF1aXJlZCBi eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh cmUNCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1 dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQogKiBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w bGllZC4NCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1 YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCiAqIGxpbWl0YXRpb25zIHVu ZGVyIHRoZSBMaWNlbnNlLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCg0KIWZ1bmN0aW9u ICgkKSB7DQoNCiAgInVzZSBzdHJpY3QiOyAvLyBqc2hpbnQgO187DQoNCg0KIC8q IE1PREFMIENMQVNTIERFRklOSVRJT04NCiAgKiA9PT09PT09PT09PT09PT09PT09 PT09ICovDQoNCiAgdmFyIE1vZGFsID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlv bnMpIHsNCiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zDQogICAgdGhpcy4kZWxl bWVudCA9ICQoZWxlbWVudCkNCiAgICAgIC5kZWxlZ2F0ZSgnW2RhdGEtZGlzbWlz cz0ibW9kYWwiXScsICdjbGljay5kaXNtaXNzLm1vZGFsJywgJC5wcm94eSh0aGlz LmhpZGUsIHRoaXMpKQ0KICAgIHRoaXMub3B0aW9ucy5yZW1vdGUgJiYgdGhpcy4k ZWxlbWVudC5maW5kKCcubW9kYWwtYm9keScpLmxvYWQodGhpcy5vcHRpb25zLnJl bW90ZSkNCiAgfQ0KDQogIE1vZGFsLnByb3RvdHlwZSA9IHsNCg0KICAgICAgY29u c3RydWN0b3I6IE1vZGFsDQoNCiAgICAsIHRvZ2dsZTogZnVuY3Rpb24gKCkgew0K ICAgICAgICByZXR1cm4gdGhpc1shdGhpcy5pc1Nob3duID8gJ3Nob3cnIDogJ2hp ZGUnXSgpDQogICAgICB9DQoNCiAgICAsIHNob3c6IGZ1bmN0aW9uICgpIHsNCiAg ICAgICAgdmFyIHRoYXQgPSB0aGlzDQogICAgICAgICAgLCBlID0gJC5FdmVudCgn c2hvdycpDQoNCiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpDQoNCiAg ICAgICAgaWYgKHRoaXMuaXNTaG93biB8fCBlLmlzRGVmYXVsdFByZXZlbnRlZCgp KSByZXR1cm4NCg0KICAgICAgICB0aGlzLmlzU2hvd24gPSB0cnVlDQoNCiAgICAg ICAgdGhpcy5lc2NhcGUoKQ0KDQogICAgICAgIHRoaXMuYmFja2Ryb3AoZnVuY3Rp b24gKCkgew0KICAgICAgICAgIHZhciB0cmFuc2l0aW9uID0gJC5zdXBwb3J0LnRy YW5zaXRpb24gJiYgdGhhdC4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScpDQoNCiAg ICAgICAgICBpZiAoIXRoYXQuJGVsZW1lbnQucGFyZW50KCkubGVuZ3RoKSB7DQog ICAgICAgICAgICB0aGF0LiRlbGVtZW50LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkp IC8vZG9uJ3QgbW92ZSBtb2RhbHMgZG9tIHBvc2l0aW9uDQogICAgICAgICAgfQ0K DQogICAgICAgICAgdGhhdC4kZWxlbWVudC5zaG93KCkNCg0KICAgICAgICAgIGlm ICh0cmFuc2l0aW9uKSB7DQogICAgICAgICAgICB0aGF0LiRlbGVtZW50WzBdLm9m ZnNldFdpZHRoIC8vIGZvcmNlIHJlZmxvdw0KICAgICAgICAgIH0NCg0KICAgICAg ICAgIHRoYXQuJGVsZW1lbnQNCiAgICAgICAgICAgIC5hZGRDbGFzcygnaW4nKQ0K ICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgZmFsc2UpDQoNCiAgICAg ICAgICB0aGF0LmVuZm9yY2VGb2N1cygpDQoNCiAgICAgICAgICB0cmFuc2l0aW9u ID8NCiAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQub25lKCQuc3VwcG9ydC50cmFu c2l0aW9uLmVuZCwgZnVuY3Rpb24gKCkgeyB0aGF0LiRlbGVtZW50LmZvY3VzKCku dHJpZ2dlcignc2hvd24nKSB9KSA6DQogICAgICAgICAgICB0aGF0LiRlbGVtZW50 LmZvY3VzKCkudHJpZ2dlcignc2hvd24nKQ0KDQogICAgICAgIH0pDQogICAgICB9 DQoNCiAgICAsIGhpZGU6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgIGUgJiYgZS5w cmV2ZW50RGVmYXVsdCgpDQoNCiAgICAgICAgdmFyIHRoYXQgPSB0aGlzDQoNCiAg ICAgICAgZSA9ICQuRXZlbnQoJ2hpZGUnKQ0KDQogICAgICAgIHRoaXMuJGVsZW1l bnQudHJpZ2dlcihlKQ0KDQogICAgICAgIGlmICghdGhpcy5pc1Nob3duIHx8IGUu aXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybg0KDQogICAgICAgIHRoaXMuaXNT aG93biA9IGZhbHNlDQoNCiAgICAgICAgdGhpcy5lc2NhcGUoKQ0KDQogICAgICAg ICQoZG9jdW1lbnQpLm9mZignZm9jdXNpbi5tb2RhbCcpDQoNCiAgICAgICAgdGhp cy4kZWxlbWVudA0KICAgICAgICAgIC5yZW1vdmVDbGFzcygnaW4nKQ0KICAgICAg ICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsIHRydWUpDQoNCiAgICAgICAgJC5zdXBw b3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScp ID8NCiAgICAgICAgICB0aGlzLmhpZGVXaXRoVHJhbnNpdGlvbigpIDoNCiAgICAg ICAgICB0aGlzLmhpZGVNb2RhbCgpDQogICAgICB9DQoNCiAgICAsIGVuZm9yY2VG b2N1czogZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgdGhhdCA9IHRoaXMNCiAg ICAgICAgJChkb2N1bWVudCkub24oJ2ZvY3VzaW4ubW9kYWwnLCBmdW5jdGlvbiAo ZSkgew0KICAgICAgICAgIGlmICh0aGF0LiRlbGVtZW50WzBdICE9PSBlLnRhcmdl dCAmJiAhdGhhdC4kZWxlbWVudC5oYXMoZS50YXJnZXQpLmxlbmd0aCkgew0KICAg ICAgICAgICAgdGhhdC4kZWxlbWVudC5mb2N1cygpDQogICAgICAgICAgfQ0KICAg ICAgICB9KQ0KICAgICAgfQ0KDQogICAgLCBlc2NhcGU6IGZ1bmN0aW9uICgpIHsN CiAgICAgICAgdmFyIHRoYXQgPSB0aGlzDQogICAgICAgIGlmICh0aGlzLmlzU2hv d24gJiYgdGhpcy5vcHRpb25zLmtleWJvYXJkKSB7DQogICAgICAgICAgdGhpcy4k ZWxlbWVudC5vbigna2V5dXAuZGlzbWlzcy5tb2RhbCcsIGZ1bmN0aW9uICggZSAp IHsNCiAgICAgICAgICAgIGUud2hpY2ggPT0gMjcgJiYgdGhhdC5oaWRlKCkNCiAg ICAgICAgICB9KQ0KICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU2hvd24pIHsN CiAgICAgICAgICB0aGlzLiRlbGVtZW50Lm9mZigna2V5dXAuZGlzbWlzcy5tb2Rh bCcpDQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICwgaGlkZVdpdGhUcmFuc2l0 aW9uOiBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciB0aGF0ID0gdGhpcw0KICAg ICAgICAgICwgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAg ICAgICAgICAgICB0aGF0LiRlbGVtZW50Lm9mZigkLnN1cHBvcnQudHJhbnNpdGlv bi5lbmQpDQogICAgICAgICAgICAgIHRoYXQuaGlkZU1vZGFsKCkNCiAgICAgICAg ICAgIH0sIDUwMCkNCg0KICAgICAgICB0aGlzLiRlbGVtZW50Lm9uZSgkLnN1cHBv cnQudHJhbnNpdGlvbi5lbmQsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICBjbGVh clRpbWVvdXQodGltZW91dCkNCiAgICAgICAgICB0aGF0LmhpZGVNb2RhbCgpDQog ICAgICAgIH0pDQogICAgICB9DQoNCiAgICAsIGhpZGVNb2RhbDogZnVuY3Rpb24g KCkgew0KICAgICAgICB2YXIgdGhhdCA9IHRoaXMNCiAgICAgICAgdGhpcy4kZWxl bWVudC5oaWRlKCkNCiAgICAgICAgdGhpcy5iYWNrZHJvcChmdW5jdGlvbiAoKSB7 DQogICAgICAgICAgdGhhdC5yZW1vdmVCYWNrZHJvcCgpDQogICAgICAgICAgdGhh dC4kZWxlbWVudC50cmlnZ2VyKCdoaWRkZW4nKQ0KICAgICAgICB9KQ0KICAgICAg fQ0KDQogICAgLCByZW1vdmVCYWNrZHJvcDogZnVuY3Rpb24gKCkgew0KICAgICAg ICB0aGlzLiRiYWNrZHJvcCAmJiB0aGlzLiRiYWNrZHJvcC5yZW1vdmUoKQ0KICAg ICAgICB0aGlzLiRiYWNrZHJvcCA9IG51bGwNCiAgICAgIH0NCg0KICAgICwgYmFj a2Ryb3A6IGZ1bmN0aW9uIChjYWxsYmFjaykgew0KICAgICAgICB2YXIgdGhhdCA9 IHRoaXMNCiAgICAgICAgICAsIGFuaW1hdGUgPSB0aGlzLiRlbGVtZW50Lmhhc0Ns YXNzKCdmYWRlJykgPyAnZmFkZScgOiAnJw0KDQogICAgICAgIGlmICh0aGlzLmlz U2hvd24gJiYgdGhpcy5vcHRpb25zLmJhY2tkcm9wKSB7DQogICAgICAgICAgdmFy IGRvQW5pbWF0ZSA9ICQuc3VwcG9ydC50cmFuc2l0aW9uICYmIGFuaW1hdGUNCg0K ICAgICAgICAgIHRoaXMuJGJhY2tkcm9wID0gJCgnPGRpdiBjbGFzcz0ibW9kYWwt YmFja2Ryb3AgJyArIGFuaW1hdGUgKyAnIiAvPicpDQogICAgICAgICAgICAuYXBw ZW5kVG8oZG9jdW1lbnQuYm9keSkNCg0KICAgICAgICAgIHRoaXMuJGJhY2tkcm9w LmNsaWNrKA0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmJhY2tkcm9wID09ICdz dGF0aWMnID8NCiAgICAgICAgICAgICAgJC5wcm94eSh0aGlzLiRlbGVtZW50WzBd LmZvY3VzLCB0aGlzLiRlbGVtZW50WzBdKQ0KICAgICAgICAgICAgOiAkLnByb3h5 KHRoaXMuaGlkZSwgdGhpcykNCiAgICAgICAgICApDQoNCiAgICAgICAgICBpZiAo ZG9BbmltYXRlKSB0aGlzLiRiYWNrZHJvcFswXS5vZmZzZXRXaWR0aCAvLyBmb3Jj ZSByZWZsb3cNCg0KICAgICAgICAgIHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCdp bicpDQoNCiAgICAgICAgICBpZiAoIWNhbGxiYWNrKSByZXR1cm4NCg0KICAgICAg ICAgIGRvQW5pbWF0ZSA/DQogICAgICAgICAgICB0aGlzLiRiYWNrZHJvcC5vbmUo JC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCBjYWxsYmFjaykgOg0KICAgICAgICAg ICAgY2FsbGJhY2soKQ0KDQogICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNTaG93 biAmJiB0aGlzLiRiYWNrZHJvcCkgew0KICAgICAgICAgIHRoaXMuJGJhY2tkcm9w LnJlbW92ZUNsYXNzKCdpbicpDQoNCiAgICAgICAgICAkLnN1cHBvcnQudHJhbnNp dGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmYWRlJyk/DQogICAgICAg ICAgICB0aGlzLiRiYWNrZHJvcC5vbmUoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5k LCBjYWxsYmFjaykgOg0KICAgICAgICAgICAgY2FsbGJhY2soKQ0KDQogICAgICAg IH0gZWxzZSBpZiAoY2FsbGJhY2spIHsNCiAgICAgICAgICBjYWxsYmFjaygpDQog ICAgICAgIH0NCiAgICAgIH0NCiAgfQ0KDQoNCiAvKiBNT0RBTCBQTFVHSU4gREVG SU5JVElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFy IG9sZCA9ICQuZm4ubW9kYWwNCg0KICAkLmZuLm1vZGFsID0gZnVuY3Rpb24gKG9w dGlvbikgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAg ICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5k YXRhKCdtb2RhbCcpDQogICAgICAgICwgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAk LmZuLm1vZGFsLmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24g PT0gJ29iamVjdCcgJiYgb3B0aW9uKQ0KICAgICAgaWYgKCFkYXRhKSAkdGhpcy5k YXRhKCdtb2RhbCcsIChkYXRhID0gbmV3IE1vZGFsKHRoaXMsIG9wdGlvbnMpKSkN CiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlv bl0oKQ0KICAgICAgZWxzZSBpZiAob3B0aW9ucy5zaG93KSBkYXRhLnNob3coKQ0K ICAgIH0pDQogIH0NCg0KICAkLmZuLm1vZGFsLmRlZmF1bHRzID0gew0KICAgICAg YmFja2Ryb3A6IHRydWUNCiAgICAsIGtleWJvYXJkOiB0cnVlDQogICAgLCBzaG93 OiB0cnVlDQogIH0NCg0KICAkLmZuLm1vZGFsLkNvbnN0cnVjdG9yID0gTW9kYWwN Cg0KDQogLyogTU9EQUwgTk8gQ09ORkxJQ1QNCiAgKiA9PT09PT09PT09PT09PT09 PSAqLw0KDQogICQuZm4ubW9kYWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsN CiAgICAkLmZuLm1vZGFsID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAgfQ0KDQoN CiAvKiBNT0RBTCBEQVRBLUFQSQ0KICAqID09PT09PT09PT09PT09ICovDQoNCiAg JChkb2N1bWVudCkub24oJ2NsaWNrLm1vZGFsLmRhdGEtYXBpJywgJ1tkYXRhLXRv Z2dsZT0ibW9kYWwiXScsIGZ1bmN0aW9uIChlKSB7DQogICAgdmFyICR0aGlzID0g JCh0aGlzKQ0KICAgICAgLCBocmVmID0gJHRoaXMuYXR0cignaHJlZicpDQogICAg ICAsICR0YXJnZXQgPSAkKCR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JykgfHwgKGhy ZWYgJiYgaHJlZi5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sICcnKSkpIC8vc3Ry aXAgZm9yIGllNw0KICAgICAgLCBvcHRpb24gPSAkdGFyZ2V0LmRhdGEoJ21vZGFs JykgPyAndG9nZ2xlJyA6ICQuZXh0ZW5kKHsgcmVtb3RlOiEvIy8udGVzdChocmVm KSAmJiBocmVmIH0sICR0YXJnZXQuZGF0YSgpLCAkdGhpcy5kYXRhKCkpDQoNCiAg ICBlLnByZXZlbnREZWZhdWx0KCkNCg0KICAgICR0YXJnZXQNCiAgICAgIC5tb2Rh bChvcHRpb24pDQogICAgICAub25lKCdoaWRlJywgZnVuY3Rpb24gKCkgew0KICAg ICAgICAkdGhpcy5mb2N1cygpDQogICAgICB9KQ0KICB9KQ0KDQp9KHdpbmRvdy5q UXVlcnkpOw0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3RzdHJhcC10b29sdGlwLmpz IHYyLjMuMQ0KICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAv amF2YXNjcmlwdC5odG1sI3Rvb2x0aXBzDQogKiBJbnNwaXJlZCBieSB0aGUgb3Jp Z2luYWwgalF1ZXJ5LnRpcHN5IGJ5IEphc29uIEZyYW1lDQogKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExpY2Vu c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi TGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBvYnRh aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3dy5h cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJl cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n LCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz cyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRh dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCg0K IWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3QiOyAvLyBqc2hpbnQgO187 DQoNCg0KIC8qIFRPT0xUSVAgUFVCTElDIENMQVNTIERFRklOSVRJT04NCiAgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIFRvb2x0 aXAgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykgew0KICAgIHRoaXMuaW5p dCgndG9vbHRpcCcsIGVsZW1lbnQsIG9wdGlvbnMpDQogIH0NCg0KICBUb29sdGlw LnByb3RvdHlwZSA9IHsNCg0KICAgIGNvbnN0cnVjdG9yOiBUb29sdGlwDQoNCiAg LCBpbml0OiBmdW5jdGlvbiAodHlwZSwgZWxlbWVudCwgb3B0aW9ucykgew0KICAg ICAgdmFyIGV2ZW50SW4NCiAgICAgICAgLCBldmVudE91dA0KICAgICAgICAsIHRy aWdnZXJzDQogICAgICAgICwgdHJpZ2dlcg0KICAgICAgICAsIGkNCg0KICAgICAg dGhpcy50eXBlID0gdHlwZQ0KICAgICAgdGhpcy4kZWxlbWVudCA9ICQoZWxlbWVu dCkNCiAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucyhvcHRpb25z KQ0KICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZQ0KDQogICAgICB0cmlnZ2VycyA9 IHRoaXMub3B0aW9ucy50cmlnZ2VyLnNwbGl0KCcgJykNCg0KICAgICAgZm9yIChp ID0gdHJpZ2dlcnMubGVuZ3RoOyBpLS07KSB7DQogICAgICAgIHRyaWdnZXIgPSB0 cmlnZ2Vyc1tpXQ0KICAgICAgICBpZiAodHJpZ2dlciA9PSAnY2xpY2snKSB7DQog ICAgICAgICAgdGhpcy4kZWxlbWVudC5vbignY2xpY2suJyArIHRoaXMudHlwZSwg dGhpcy5vcHRpb25zLnNlbGVjdG9yLCAkLnByb3h5KHRoaXMudG9nZ2xlLCB0aGlz KSkNCiAgICAgICAgfSBlbHNlIGlmICh0cmlnZ2VyICE9ICdtYW51YWwnKSB7DQog ICAgICAgICAgZXZlbnRJbiA9IHRyaWdnZXIgPT0gJ2hvdmVyJyA/ICdtb3VzZWVu dGVyJyA6ICdmb2N1cycNCiAgICAgICAgICBldmVudE91dCA9IHRyaWdnZXIgPT0g J2hvdmVyJyA/ICdtb3VzZWxlYXZlJyA6ICdibHVyJw0KICAgICAgICAgIHRoaXMu JGVsZW1lbnQub24oZXZlbnRJbiArICcuJyArIHRoaXMudHlwZSwgdGhpcy5vcHRp b25zLnNlbGVjdG9yLCAkLnByb3h5KHRoaXMuZW50ZXIsIHRoaXMpKQ0KICAgICAg ICAgIHRoaXMuJGVsZW1lbnQub24oZXZlbnRPdXQgKyAnLicgKyB0aGlzLnR5cGUs IHRoaXMub3B0aW9ucy5zZWxlY3RvciwgJC5wcm94eSh0aGlzLmxlYXZlLCB0aGlz KSkNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICB0aGlzLm9wdGlvbnMuc2Vs ZWN0b3IgPw0KICAgICAgICAodGhpcy5fb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0 aGlzLm9wdGlvbnMsIHsgdHJpZ2dlcjogJ21hbnVhbCcsIHNlbGVjdG9yOiAnJyB9 KSkgOg0KICAgICAgICB0aGlzLmZpeFRpdGxlKCkNCiAgICB9DQoNCiAgLCBnZXRP cHRpb25zOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgb3B0aW9ucyA9ICQu ZXh0ZW5kKHt9LCAkLmZuW3RoaXMudHlwZV0uZGVmYXVsdHMsIHRoaXMuJGVsZW1l bnQuZGF0YSgpLCBvcHRpb25zKQ0KDQogICAgICBpZiAob3B0aW9ucy5kZWxheSAm JiB0eXBlb2Ygb3B0aW9ucy5kZWxheSA9PSAnbnVtYmVyJykgew0KICAgICAgICBv cHRpb25zLmRlbGF5ID0gew0KICAgICAgICAgIHNob3c6IG9wdGlvbnMuZGVsYXkN CiAgICAgICAgLCBoaWRlOiBvcHRpb25zLmRlbGF5DQogICAgICAgIH0NCiAgICAg IH0NCg0KICAgICAgcmV0dXJuIG9wdGlvbnMNCiAgICB9DQoNCiAgLCBlbnRlcjog ZnVuY3Rpb24gKGUpIHsNCiAgICAgIHZhciBkZWZhdWx0cyA9ICQuZm5bdGhpcy50 eXBlXS5kZWZhdWx0cw0KICAgICAgICAsIG9wdGlvbnMgPSB7fQ0KICAgICAgICAs IHNlbGYNCg0KICAgICAgdGhpcy5fb3B0aW9ucyAmJiAkLmVhY2godGhpcy5fb3B0 aW9ucywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsNCiAgICAgICAgaWYgKGRlZmF1 bHRzW2tleV0gIT0gdmFsdWUpIG9wdGlvbnNba2V5XSA9IHZhbHVlDQogICAgICB9 LCB0aGlzKQ0KDQogICAgICBzZWxmID0gJChlLmN1cnJlbnRUYXJnZXQpW3RoaXMu dHlwZV0ob3B0aW9ucykuZGF0YSh0aGlzLnR5cGUpDQoNCiAgICAgIGlmICghc2Vs Zi5vcHRpb25zLmRlbGF5IHx8ICFzZWxmLm9wdGlvbnMuZGVsYXkuc2hvdykgcmV0 dXJuIHNlbGYuc2hvdygpDQoNCiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVv dXQpDQogICAgICBzZWxmLmhvdmVyU3RhdGUgPSAnaW4nDQogICAgICB0aGlzLnRp bWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICBpZiAoc2Vs Zi5ob3ZlclN0YXRlID09ICdpbicpIHNlbGYuc2hvdygpDQogICAgICB9LCBzZWxm Lm9wdGlvbnMuZGVsYXkuc2hvdykNCiAgICB9DQoNCiAgLCBsZWF2ZTogZnVuY3Rp b24gKGUpIHsNCiAgICAgIHZhciBzZWxmID0gJChlLmN1cnJlbnRUYXJnZXQpW3Ro aXMudHlwZV0odGhpcy5fb3B0aW9ucykuZGF0YSh0aGlzLnR5cGUpDQoNCiAgICAg IGlmICh0aGlzLnRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpDQog ICAgICBpZiAoIXNlbGYub3B0aW9ucy5kZWxheSB8fCAhc2VsZi5vcHRpb25zLmRl bGF5LmhpZGUpIHJldHVybiBzZWxmLmhpZGUoKQ0KDQogICAgICBzZWxmLmhvdmVy U3RhdGUgPSAnb3V0Jw0KICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChm dW5jdGlvbigpIHsNCiAgICAgICAgaWYgKHNlbGYuaG92ZXJTdGF0ZSA9PSAnb3V0 Jykgc2VsZi5oaWRlKCkNCiAgICAgIH0sIHNlbGYub3B0aW9ucy5kZWxheS5oaWRl KQ0KICAgIH0NCg0KICAsIHNob3c6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciAk dGlwDQogICAgICAgICwgcG9zDQogICAgICAgICwgYWN0dWFsV2lkdGgNCiAgICAg ICAgLCBhY3R1YWxIZWlnaHQNCiAgICAgICAgLCBwbGFjZW1lbnQNCiAgICAgICAg LCB0cA0KICAgICAgICAsIGUgPSAkLkV2ZW50KCdzaG93JykNCg0KICAgICAgaWYg KHRoaXMuaGFzQ29udGVudCgpICYmIHRoaXMuZW5hYmxlZCkgew0KICAgICAgICB0 aGlzLiRlbGVtZW50LnRyaWdnZXIoZSkNCiAgICAgICAgaWYgKGUuaXNEZWZhdWx0 UHJldmVudGVkKCkpIHJldHVybg0KICAgICAgICAkdGlwID0gdGhpcy50aXAoKQ0K ICAgICAgICB0aGlzLnNldENvbnRlbnQoKQ0KDQogICAgICAgIGlmICh0aGlzLm9w dGlvbnMuYW5pbWF0aW9uKSB7DQogICAgICAgICAgJHRpcC5hZGRDbGFzcygnZmFk ZScpDQogICAgICAgIH0NCg0KICAgICAgICBwbGFjZW1lbnQgPSB0eXBlb2YgdGhp cy5vcHRpb25zLnBsYWNlbWVudCA9PSAnZnVuY3Rpb24nID8NCiAgICAgICAgICB0 aGlzLm9wdGlvbnMucGxhY2VtZW50LmNhbGwodGhpcywgJHRpcFswXSwgdGhpcy4k ZWxlbWVudFswXSkgOg0KICAgICAgICAgIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQN Cg0KICAgICAgICAkdGlwDQogICAgICAgICAgLmRldGFjaCgpDQogICAgICAgICAg LmNzcyh7IHRvcDogMCwgbGVmdDogMCwgZGlzcGxheTogJ2Jsb2NrJyB9KQ0KDQog ICAgICAgIHRoaXMub3B0aW9ucy5jb250YWluZXIgPyAkdGlwLmFwcGVuZFRvKHRo aXMub3B0aW9ucy5jb250YWluZXIpIDogJHRpcC5pbnNlcnRBZnRlcih0aGlzLiRl bGVtZW50KQ0KDQogICAgICAgIHBvcyA9IHRoaXMuZ2V0UG9zaXRpb24oKQ0KDQog ICAgICAgIGFjdHVhbFdpZHRoID0gJHRpcFswXS5vZmZzZXRXaWR0aA0KICAgICAg ICBhY3R1YWxIZWlnaHQgPSAkdGlwWzBdLm9mZnNldEhlaWdodA0KDQogICAgICAg IHN3aXRjaCAocGxhY2VtZW50KSB7DQogICAgICAgICAgY2FzZSAnYm90dG9tJzoN CiAgICAgICAgICAgIHRwID0ge3RvcDogcG9zLnRvcCArIHBvcy5oZWlnaHQsIGxl ZnQ6IHBvcy5sZWZ0ICsgcG9zLndpZHRoIC8gMiAtIGFjdHVhbFdpZHRoIC8gMn0N CiAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgY2FzZSAndG9wJzoNCiAgICAg ICAgICAgIHRwID0ge3RvcDogcG9zLnRvcCAtIGFjdHVhbEhlaWdodCwgbGVmdDog cG9zLmxlZnQgKyBwb3Mud2lkdGggLyAyIC0gYWN0dWFsV2lkdGggLyAyfQ0KICAg ICAgICAgICAgYnJlYWsNCiAgICAgICAgICBjYXNlICdsZWZ0JzoNCiAgICAgICAg ICAgIHRwID0ge3RvcDogcG9zLnRvcCArIHBvcy5oZWlnaHQgLyAyIC0gYWN0dWFs SGVpZ2h0IC8gMiwgbGVmdDogcG9zLmxlZnQgLSBhY3R1YWxXaWR0aH0NCiAgICAg ICAgICAgIGJyZWFrDQogICAgICAgICAgY2FzZSAncmlnaHQnOg0KICAgICAgICAg ICAgdHAgPSB7dG9wOiBwb3MudG9wICsgcG9zLmhlaWdodCAvIDIgLSBhY3R1YWxI ZWlnaHQgLyAyLCBsZWZ0OiBwb3MubGVmdCArIHBvcy53aWR0aH0NCiAgICAgICAg ICAgIGJyZWFrDQogICAgICAgIH0NCg0KICAgICAgICB0aGlzLmFwcGx5UGxhY2Vt ZW50KHRwLCBwbGFjZW1lbnQpDQogICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dl cignc2hvd24nKQ0KICAgICAgfQ0KICAgIH0NCg0KICAsIGFwcGx5UGxhY2VtZW50 OiBmdW5jdGlvbihvZmZzZXQsIHBsYWNlbWVudCl7DQogICAgICB2YXIgJHRpcCA9 IHRoaXMudGlwKCkNCiAgICAgICAgLCB3aWR0aCA9ICR0aXBbMF0ub2Zmc2V0V2lk dGgNCiAgICAgICAgLCBoZWlnaHQgPSAkdGlwWzBdLm9mZnNldEhlaWdodA0KICAg ICAgICAsIGFjdHVhbFdpZHRoDQogICAgICAgICwgYWN0dWFsSGVpZ2h0DQogICAg ICAgICwgZGVsdGENCiAgICAgICAgLCByZXBsYWNlDQoNCiAgICAgICR0aXANCiAg ICAgICAgLm9mZnNldChvZmZzZXQpDQogICAgICAgIC5hZGRDbGFzcyhwbGFjZW1l bnQpDQogICAgICAgIC5hZGRDbGFzcygnaW4nKQ0KDQogICAgICBhY3R1YWxXaWR0 aCA9ICR0aXBbMF0ub2Zmc2V0V2lkdGgNCiAgICAgIGFjdHVhbEhlaWdodCA9ICR0 aXBbMF0ub2Zmc2V0SGVpZ2h0DQoNCiAgICAgIGlmIChwbGFjZW1lbnQgPT0gJ3Rv cCcgJiYgYWN0dWFsSGVpZ2h0ICE9IGhlaWdodCkgew0KICAgICAgICBvZmZzZXQu dG9wID0gb2Zmc2V0LnRvcCArIGhlaWdodCAtIGFjdHVhbEhlaWdodA0KICAgICAg ICByZXBsYWNlID0gdHJ1ZQ0KICAgICAgfQ0KDQogICAgICBpZiAocGxhY2VtZW50 ID09ICdib3R0b20nIHx8IHBsYWNlbWVudCA9PSAndG9wJykgew0KICAgICAgICBk ZWx0YSA9IDANCg0KICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCAwKXsNCiAgICAg ICAgICBkZWx0YSA9IG9mZnNldC5sZWZ0ICogLTINCiAgICAgICAgICBvZmZzZXQu bGVmdCA9IDANCiAgICAgICAgICAkdGlwLm9mZnNldChvZmZzZXQpDQogICAgICAg ICAgYWN0dWFsV2lkdGggPSAkdGlwWzBdLm9mZnNldFdpZHRoDQogICAgICAgICAg YWN0dWFsSGVpZ2h0ID0gJHRpcFswXS5vZmZzZXRIZWlnaHQNCiAgICAgICAgfQ0K DQogICAgICAgIHRoaXMucmVwbGFjZUFycm93KGRlbHRhIC0gd2lkdGggKyBhY3R1 YWxXaWR0aCwgYWN0dWFsV2lkdGgsICdsZWZ0JykNCiAgICAgIH0gZWxzZSB7DQog ICAgICAgIHRoaXMucmVwbGFjZUFycm93KGFjdHVhbEhlaWdodCAtIGhlaWdodCwg YWN0dWFsSGVpZ2h0LCAndG9wJykNCiAgICAgIH0NCg0KICAgICAgaWYgKHJlcGxh Y2UpICR0aXAub2Zmc2V0KG9mZnNldCkNCiAgICB9DQoNCiAgLCByZXBsYWNlQXJy b3c6IGZ1bmN0aW9uKGRlbHRhLCBkaW1lbnNpb24sIHBvc2l0aW9uKXsNCiAgICAg IHRoaXMNCiAgICAgICAgLmFycm93KCkNCiAgICAgICAgLmNzcyhwb3NpdGlvbiwg ZGVsdGEgPyAoNTAgKiAoMSAtIGRlbHRhIC8gZGltZW5zaW9uKSArICIlIikgOiAn JykNCiAgICB9DQoNCiAgLCBzZXRDb250ZW50OiBmdW5jdGlvbiAoKSB7DQogICAg ICB2YXIgJHRpcCA9IHRoaXMudGlwKCkNCiAgICAgICAgLCB0aXRsZSA9IHRoaXMu Z2V0VGl0bGUoKQ0KDQogICAgICAkdGlwLmZpbmQoJy50b29sdGlwLWlubmVyJylb dGhpcy5vcHRpb25zLmh0bWwgPyAnaHRtbCcgOiAndGV4dCddKHRpdGxlKQ0KICAg ICAgJHRpcC5yZW1vdmVDbGFzcygnZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmln aHQnKQ0KICAgIH0NCg0KICAsIGhpZGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZh ciB0aGF0ID0gdGhpcw0KICAgICAgICAsICR0aXAgPSB0aGlzLnRpcCgpDQogICAg ICAgICwgZSA9ICQuRXZlbnQoJ2hpZGUnKQ0KDQogICAgICB0aGlzLiRlbGVtZW50 LnRyaWdnZXIoZSkNCiAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSBy ZXR1cm4NCg0KICAgICAgJHRpcC5yZW1vdmVDbGFzcygnaW4nKQ0KDQogICAgICBm dW5jdGlvbiByZW1vdmVXaXRoQW5pbWF0aW9uKCkgew0KICAgICAgICB2YXIgdGlt ZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICR0aXAu b2ZmKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCkuZGV0YWNoKCkNCiAgICAgICAg fSwgNTAwKQ0KDQogICAgICAgICR0aXAub25lKCQuc3VwcG9ydC50cmFuc2l0aW9u LmVuZCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1l b3V0KQ0KICAgICAgICAgICR0aXAuZGV0YWNoKCkNCiAgICAgICAgfSkNCiAgICAg IH0NCg0KICAgICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kdGlwLmhh c0NsYXNzKCdmYWRlJykgPw0KICAgICAgICByZW1vdmVXaXRoQW5pbWF0aW9uKCkg Og0KICAgICAgICAkdGlwLmRldGFjaCgpDQoNCiAgICAgIHRoaXMuJGVsZW1lbnQu dHJpZ2dlcignaGlkZGVuJykNCg0KICAgICAgcmV0dXJuIHRoaXMNCiAgICB9DQoN CiAgLCBmaXhUaXRsZTogZnVuY3Rpb24gKCkgew0KICAgICAgdmFyICRlID0gdGhp cy4kZWxlbWVudA0KICAgICAgaWYgKCRlLmF0dHIoJ3RpdGxlJykgfHwgdHlwZW9m KCRlLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKSkgIT0gJ3N0cmluZycpIHsN CiAgICAgICAgJGUuYXR0cignZGF0YS1vcmlnaW5hbC10aXRsZScsICRlLmF0dHIo J3RpdGxlJykgfHwgJycpLmF0dHIoJ3RpdGxlJywgJycpDQogICAgICB9DQogICAg fQ0KDQogICwgaGFzQ29udGVudDogZnVuY3Rpb24gKCkgew0KICAgICAgcmV0dXJu IHRoaXMuZ2V0VGl0bGUoKQ0KICAgIH0NCg0KICAsIGdldFBvc2l0aW9uOiBmdW5j dGlvbiAoKSB7DQogICAgICB2YXIgZWwgPSB0aGlzLiRlbGVtZW50WzBdDQogICAg ICByZXR1cm4gJC5leHRlbmQoe30sICh0eXBlb2YgZWwuZ2V0Qm91bmRpbmdDbGll bnRSZWN0ID09ICdmdW5jdGlvbicpID8gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0 KCkgOiB7DQogICAgICAgIHdpZHRoOiBlbC5vZmZzZXRXaWR0aA0KICAgICAgLCBo ZWlnaHQ6IGVsLm9mZnNldEhlaWdodA0KICAgICAgfSwgdGhpcy4kZWxlbWVudC5v ZmZzZXQoKSkNCiAgICB9DQoNCiAgLCBnZXRUaXRsZTogZnVuY3Rpb24gKCkgew0K ICAgICAgdmFyIHRpdGxlDQogICAgICAgICwgJGUgPSB0aGlzLiRlbGVtZW50DQog ICAgICAgICwgbyA9IHRoaXMub3B0aW9ucw0KDQogICAgICB0aXRsZSA9ICRlLmF0 dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKQ0KICAgICAgICB8fCAodHlwZW9mIG8u dGl0bGUgPT0gJ2Z1bmN0aW9uJyA/IG8udGl0bGUuY2FsbCgkZVswXSkgOiAgby50 aXRsZSkNCg0KICAgICAgcmV0dXJuIHRpdGxlDQogICAgfQ0KDQogICwgdGlwOiBm dW5jdGlvbiAoKSB7DQogICAgICByZXR1cm4gdGhpcy4kdGlwID0gdGhpcy4kdGlw IHx8ICQodGhpcy5vcHRpb25zLnRlbXBsYXRlKQ0KICAgIH0NCg0KICAsIGFycm93 OiBmdW5jdGlvbigpew0KICAgICAgcmV0dXJuIHRoaXMuJGFycm93ID0gdGhpcy4k YXJyb3cgfHwgdGhpcy50aXAoKS5maW5kKCIudG9vbHRpcC1hcnJvdyIpDQogICAg fQ0KDQogICwgdmFsaWRhdGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICghdGhp cy4kZWxlbWVudFswXS5wYXJlbnROb2RlKSB7DQogICAgICAgIHRoaXMuaGlkZSgp DQogICAgICAgIHRoaXMuJGVsZW1lbnQgPSBudWxsDQogICAgICAgIHRoaXMub3B0 aW9ucyA9IG51bGwNCiAgICAgIH0NCiAgICB9DQoNCiAgLCBlbmFibGU6IGZ1bmN0 aW9uICgpIHsNCiAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWUNCiAgICB9DQoNCiAg LCBkaXNhYmxlOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLmVuYWJsZWQgPSBm YWxzZQ0KICAgIH0NCg0KICAsIHRvZ2dsZUVuYWJsZWQ6IGZ1bmN0aW9uICgpIHsN CiAgICAgIHRoaXMuZW5hYmxlZCA9ICF0aGlzLmVuYWJsZWQNCiAgICB9DQoNCiAg LCB0b2dnbGU6IGZ1bmN0aW9uIChlKSB7DQogICAgICB2YXIgc2VsZiA9IGUgPyAk KGUuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRh KHRoaXMudHlwZSkgOiB0aGlzDQogICAgICBzZWxmLnRpcCgpLmhhc0NsYXNzKCdp bicpID8gc2VsZi5oaWRlKCkgOiBzZWxmLnNob3coKQ0KICAgIH0NCg0KICAsIGRl c3Ryb3k6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuaGlkZSgpLiRlbGVtZW50 Lm9mZignLicgKyB0aGlzLnR5cGUpLnJlbW92ZURhdGEodGhpcy50eXBlKQ0KICAg IH0NCg0KICB9DQoNCg0KIC8qIFRPT0xUSVAgUExVR0lOIERFRklOSVRJT04NCiAg KiA9PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIG9sZCA9ICQu Zm4udG9vbHRpcA0KDQogICQuZm4udG9vbHRpcCA9IGZ1bmN0aW9uICggb3B0aW9u ICkgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAg dmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRh KCd0b29sdGlwJykNCiAgICAgICAgLCBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9 PSAnb2JqZWN0JyAmJiBvcHRpb24NCiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0 YSgndG9vbHRpcCcsIChkYXRhID0gbmV3IFRvb2x0aXAodGhpcywgb3B0aW9ucykp KQ0KICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0 aW9uXSgpDQogICAgfSkNCiAgfQ0KDQogICQuZm4udG9vbHRpcC5Db25zdHJ1Y3Rv ciA9IFRvb2x0aXANCg0KICAkLmZuLnRvb2x0aXAuZGVmYXVsdHMgPSB7DQogICAg YW5pbWF0aW9uOiB0cnVlDQogICwgcGxhY2VtZW50OiAndG9wJw0KICAsIHNlbGVj dG9yOiBmYWxzZQ0KICAsIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz0idG9vbHRpcCI+ PGRpdiBjbGFzcz0idG9vbHRpcC1hcnJvdyI+PC9kaXY+PGRpdiBjbGFzcz0idG9v bHRpcC1pbm5lciI+PC9kaXY+PC9kaXY+Jw0KICAsIHRyaWdnZXI6ICdob3ZlciBm b2N1cycNCiAgLCB0aXRsZTogJycNCiAgLCBkZWxheTogMA0KICAsIGh0bWw6IGZh bHNlDQogICwgY29udGFpbmVyOiBmYWxzZQ0KICB9DQoNCg0KIC8qIFRPT0xUSVAg Tk8gQ09ORkxJQ1QNCiAgKiA9PT09PT09PT09PT09PT09PT09ICovDQoNCiAgJC5m bi50b29sdGlwLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7DQogICAgJC5mbi50 b29sdGlwID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAgfQ0KDQp9KHdpbmRvdy5q UXVlcnkpOw0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3RzdHJhcC1wb3BvdmVyLmpz IHYyLjMuMQ0KICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAv amF2YXNjcmlwdC5odG1sI3BvcG92ZXJzDQogKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICogQ29w eXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAqIExpY2Vuc2VkIHVuZGVy IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp Ow0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp YW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1heSBvYnRhaW4gYSBjb3B5 IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDovL3d3dy5hcGFjaGUub3Jn L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5 IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy ZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0 ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs aWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRhdGlvbnMgdW5k ZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQoNCiFmdW5jdGlv biAoJCkgew0KDQogICJ1c2Ugc3RyaWN0IjsgLy8ganNoaW50IDtfOw0KDQoNCiAv KiBQT1BPVkVSIFBVQkxJQyBDTEFTUyBERUZJTklUSU9ODQogICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBQb3BvdmVyID0gZnVu Y3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsNCiAgICB0aGlzLmluaXQoJ3BvcG92 ZXInLCBlbGVtZW50LCBvcHRpb25zKQ0KICB9DQoNCg0KICAvKiBOT1RFOiBQT1BP VkVSIEVYVEVORFMgQk9PVFNUUkFQLVRPT0xUSVAuanMNCiAgICAgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgUG9wb3Zl ci5wcm90b3R5cGUgPSAkLmV4dGVuZCh7fSwgJC5mbi50b29sdGlwLkNvbnN0cnVj dG9yLnByb3RvdHlwZSwgew0KDQogICAgY29uc3RydWN0b3I6IFBvcG92ZXINCg0K ICAsIHNldENvbnRlbnQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciAkdGlwID0g dGhpcy50aXAoKQ0KICAgICAgICAsIHRpdGxlID0gdGhpcy5nZXRUaXRsZSgpDQog ICAgICAgICwgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpDQoNCiAgICAgICR0 aXAuZmluZCgnLnBvcG92ZXItdGl0bGUnKVt0aGlzLm9wdGlvbnMuaHRtbCA/ICdo dG1sJyA6ICd0ZXh0J10odGl0bGUpDQogICAgICAkdGlwLmZpbmQoJy5wb3BvdmVy LWNvbnRlbnQnKVt0aGlzLm9wdGlvbnMuaHRtbCA/ICdodG1sJyA6ICd0ZXh0J10o Y29udGVudCkNCg0KICAgICAgJHRpcC5yZW1vdmVDbGFzcygnZmFkZSB0b3AgYm90 dG9tIGxlZnQgcmlnaHQgaW4nKQ0KICAgIH0NCg0KICAsIGhhc0NvbnRlbnQ6IGZ1 bmN0aW9uICgpIHsNCiAgICAgIHJldHVybiB0aGlzLmdldFRpdGxlKCkgfHwgdGhp cy5nZXRDb250ZW50KCkNCiAgICB9DQoNCiAgLCBnZXRDb250ZW50OiBmdW5jdGlv biAoKSB7DQogICAgICB2YXIgY29udGVudA0KICAgICAgICAsICRlID0gdGhpcy4k ZWxlbWVudA0KICAgICAgICAsIG8gPSB0aGlzLm9wdGlvbnMNCg0KICAgICAgY29u dGVudCA9ICh0eXBlb2Ygby5jb250ZW50ID09ICdmdW5jdGlvbicgPyBvLmNvbnRl bnQuY2FsbCgkZVswXSkgOiAgby5jb250ZW50KQ0KICAgICAgICB8fCAkZS5hdHRy KCdkYXRhLWNvbnRlbnQnKQ0KDQogICAgICByZXR1cm4gY29udGVudA0KICAgIH0N Cg0KICAsIHRpcDogZnVuY3Rpb24gKCkgew0KICAgICAgaWYgKCF0aGlzLiR0aXAp IHsNCiAgICAgICAgdGhpcy4kdGlwID0gJCh0aGlzLm9wdGlvbnMudGVtcGxhdGUp DQogICAgICB9DQogICAgICByZXR1cm4gdGhpcy4kdGlwDQogICAgfQ0KDQogICwg ZGVzdHJveTogZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy5oaWRlKCkuJGVsZW1l bnQub2ZmKCcuJyArIHRoaXMudHlwZSkucmVtb3ZlRGF0YSh0aGlzLnR5cGUpDQog ICAgfQ0KDQogIH0pDQoNCg0KIC8qIFBPUE9WRVIgUExVR0lOIERFRklOSVRJT04N CiAgKiA9PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBvbGQgPSAk LmZuLnBvcG92ZXINCg0KICAkLmZuLnBvcG92ZXIgPSBmdW5jdGlvbiAob3B0aW9u KSB7DQogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2 YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEo J3BvcG92ZXInKQ0KICAgICAgICAsIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09 ICdvYmplY3QnICYmIG9wdGlvbg0KICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRh KCdwb3BvdmVyJywgKGRhdGEgPSBuZXcgUG9wb3Zlcih0aGlzLCBvcHRpb25zKSkp DQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRp b25dKCkNCiAgICB9KQ0KICB9DQoNCiAgJC5mbi5wb3BvdmVyLkNvbnN0cnVjdG9y ID0gUG9wb3Zlcg0KDQogICQuZm4ucG9wb3Zlci5kZWZhdWx0cyA9ICQuZXh0ZW5k KHt9ICwgJC5mbi50b29sdGlwLmRlZmF1bHRzLCB7DQogICAgcGxhY2VtZW50OiAn cmlnaHQnDQogICwgdHJpZ2dlcjogJ2NsaWNrJw0KICAsIGNvbnRlbnQ6ICcnDQog ICwgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJwb3BvdmVyIj48ZGl2IGNsYXNzPSJh cnJvdyI+PC9kaXY+PGgzIGNsYXNzPSJwb3BvdmVyLXRpdGxlIj48L2gzPjxkaXYg Y2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+Jw0KICB9KQ0KDQoN CiAvKiBQT1BPVkVSIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09PT09 PSAqLw0KDQogICQuZm4ucG9wb3Zlci5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkg ew0KICAgICQuZm4ucG9wb3ZlciA9IG9sZA0KICAgIHJldHVybiB0aGlzDQogIH0N Cg0KfSh3aW5kb3cualF1ZXJ5KTsNCi8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIGJvb3Rz dHJhcC1zY3JvbGxzcHkuanMgdjIuMy4xDQogKiBodHRwOi8vdHdpdHRlci5naXRo dWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjc2Nyb2xsc3B5DQogKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQogKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVyLCBJbmMuDQog Kg0KICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u IDIuMCAodGhlICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQogKiBZ b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCiAqDQogKiBo dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCiAqDQog KiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv IGluIHdyaXRpbmcsIHNvZnR3YXJlDQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUg TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KICog V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp dGhlciBleHByZXNzIG9yIGltcGxpZWQuDQogKiBTZWUgdGhlIExpY2Vuc2UgZm9y IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k DQogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCiAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ICovDQoNCg0KIWZ1bmN0aW9uICgkKSB7DQoNCiAgInVzZSBzdHJpY3Qi OyAvLyBqc2hpbnQgO187DQoNCg0KIC8qIFNDUk9MTFNQWSBDTEFTUyBERUZJTklU SU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KICBmdW5j dGlvbiBTY3JvbGxTcHkoZWxlbWVudCwgb3B0aW9ucykgew0KICAgIHZhciBwcm9j ZXNzID0gJC5wcm94eSh0aGlzLnByb2Nlc3MsIHRoaXMpDQogICAgICAsICRlbGVt ZW50ID0gJChlbGVtZW50KS5pcygnYm9keScpID8gJCh3aW5kb3cpIDogJChlbGVt ZW50KQ0KICAgICAgLCBocmVmDQogICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQo e30sICQuZm4uc2Nyb2xsc3B5LmRlZmF1bHRzLCBvcHRpb25zKQ0KICAgIHRoaXMu JHNjcm9sbEVsZW1lbnQgPSAkZWxlbWVudC5vbignc2Nyb2xsLnNjcm9sbC1zcHku ZGF0YS1hcGknLCBwcm9jZXNzKQ0KICAgIHRoaXMuc2VsZWN0b3IgPSAodGhpcy5v cHRpb25zLnRhcmdldA0KICAgICAgfHwgKChocmVmID0gJChlbGVtZW50KS5hdHRy KCdocmVmJykpICYmIGhyZWYucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCAnJykp IC8vc3RyaXAgZm9yIGllNw0KICAgICAgfHwgJycpICsgJyAubmF2IGxpID4gYScN CiAgICB0aGlzLiRib2R5ID0gJCgnYm9keScpDQogICAgdGhpcy5yZWZyZXNoKCkN CiAgICB0aGlzLnByb2Nlc3MoKQ0KICB9DQoNCiAgU2Nyb2xsU3B5LnByb3RvdHlw ZSA9IHsNCg0KICAgICAgY29uc3RydWN0b3I6IFNjcm9sbFNweQ0KDQogICAgLCBy ZWZyZXNoOiBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBzZWxmID0gdGhpcw0K ICAgICAgICAgICwgJHRhcmdldHMNCg0KICAgICAgICB0aGlzLm9mZnNldHMgPSAk KFtdKQ0KICAgICAgICB0aGlzLnRhcmdldHMgPSAkKFtdKQ0KDQogICAgICAgICR0 YXJnZXRzID0gdGhpcy4kYm9keQ0KICAgICAgICAgIC5maW5kKHRoaXMuc2VsZWN0 b3IpDQogICAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2 YXIgJGVsID0gJCh0aGlzKQ0KICAgICAgICAgICAgICAsIGhyZWYgPSAkZWwuZGF0 YSgndGFyZ2V0JykgfHwgJGVsLmF0dHIoJ2hyZWYnKQ0KICAgICAgICAgICAgICAs ICRocmVmID0gL14jXHcvLnRlc3QoaHJlZikgJiYgJChocmVmKQ0KICAgICAgICAg ICAgcmV0dXJuICggJGhyZWYNCiAgICAgICAgICAgICAgJiYgJGhyZWYubGVuZ3Ro DQogICAgICAgICAgICAgICYmIFtbICRocmVmLnBvc2l0aW9uKCkudG9wICsgKCEk LmlzV2luZG93KHNlbGYuJHNjcm9sbEVsZW1lbnQuZ2V0KDApKSAmJiBzZWxmLiRz Y3JvbGxFbGVtZW50LnNjcm9sbFRvcCgpKSwgaHJlZiBdXSApIHx8IG51bGwNCiAg ICAgICAgICB9KQ0KICAgICAgICAgIC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJl dHVybiBhWzBdIC0gYlswXSB9KQ0KICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uICgp IHsNCiAgICAgICAgICAgIHNlbGYub2Zmc2V0cy5wdXNoKHRoaXNbMF0pDQogICAg ICAgICAgICBzZWxmLnRhcmdldHMucHVzaCh0aGlzWzFdKQ0KICAgICAgICAgIH0p DQogICAgICB9DQoNCiAgICAsIHByb2Nlc3M6IGZ1bmN0aW9uICgpIHsNCiAgICAg ICAgdmFyIHNjcm9sbFRvcCA9IHRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9w KCkgKyB0aGlzLm9wdGlvbnMub2Zmc2V0DQogICAgICAgICAgLCBzY3JvbGxIZWln aHQgPSB0aGlzLiRzY3JvbGxFbGVtZW50WzBdLnNjcm9sbEhlaWdodCB8fCB0aGlz LiRib2R5WzBdLnNjcm9sbEhlaWdodA0KICAgICAgICAgICwgbWF4U2Nyb2xsID0g c2Nyb2xsSGVpZ2h0IC0gdGhpcy4kc2Nyb2xsRWxlbWVudC5oZWlnaHQoKQ0KICAg ICAgICAgICwgb2Zmc2V0cyA9IHRoaXMub2Zmc2V0cw0KICAgICAgICAgICwgdGFy Z2V0cyA9IHRoaXMudGFyZ2V0cw0KICAgICAgICAgICwgYWN0aXZlVGFyZ2V0ID0g dGhpcy5hY3RpdmVUYXJnZXQNCiAgICAgICAgICAsIGkNCg0KICAgICAgICBpZiAo c2Nyb2xsVG9wID49IG1heFNjcm9sbCkgew0KICAgICAgICAgIHJldHVybiBhY3Rp dmVUYXJnZXQgIT0gKGkgPSB0YXJnZXRzLmxhc3QoKVswXSkNCiAgICAgICAgICAg ICYmIHRoaXMuYWN0aXZhdGUgKCBpICkNCiAgICAgICAgfQ0KDQogICAgICAgIGZv ciAoaSA9IG9mZnNldHMubGVuZ3RoOyBpLS07KSB7DQogICAgICAgICAgYWN0aXZl VGFyZ2V0ICE9IHRhcmdldHNbaV0NCiAgICAgICAgICAgICYmIHNjcm9sbFRvcCA+ PSBvZmZzZXRzW2ldDQogICAgICAgICAgICAmJiAoIW9mZnNldHNbaSArIDFdIHx8 IHNjcm9sbFRvcCA8PSBvZmZzZXRzW2kgKyAxXSkNCiAgICAgICAgICAgICYmIHRo aXMuYWN0aXZhdGUoIHRhcmdldHNbaV0gKQ0KICAgICAgICB9DQogICAgICB9DQoN CiAgICAsIGFjdGl2YXRlOiBmdW5jdGlvbiAodGFyZ2V0KSB7DQogICAgICAgIHZh ciBhY3RpdmUNCiAgICAgICAgICAsIHNlbGVjdG9yDQoNCiAgICAgICAgdGhpcy5h Y3RpdmVUYXJnZXQgPSB0YXJnZXQNCg0KICAgICAgICAkKHRoaXMuc2VsZWN0b3Ip DQogICAgICAgICAgLnBhcmVudCgnLmFjdGl2ZScpDQogICAgICAgICAgLnJlbW92 ZUNsYXNzKCdhY3RpdmUnKQ0KDQogICAgICAgIHNlbGVjdG9yID0gdGhpcy5zZWxl Y3Rvcg0KICAgICAgICAgICsgJ1tkYXRhLXRhcmdldD0iJyArIHRhcmdldCArICci XSwnDQogICAgICAgICAgKyB0aGlzLnNlbGVjdG9yICsgJ1tocmVmPSInICsgdGFy Z2V0ICsgJyJdJw0KDQogICAgICAgIGFjdGl2ZSA9ICQoc2VsZWN0b3IpDQogICAg ICAgICAgLnBhcmVudCgnbGknKQ0KICAgICAgICAgIC5hZGRDbGFzcygnYWN0aXZl JykNCg0KICAgICAgICBpZiAoYWN0aXZlLnBhcmVudCgnLmRyb3Bkb3duLW1lbnUn KS5sZW5ndGgpICB7DQogICAgICAgICAgYWN0aXZlID0gYWN0aXZlLmNsb3Nlc3Qo J2xpLmRyb3Bkb3duJykuYWRkQ2xhc3MoJ2FjdGl2ZScpDQogICAgICAgIH0NCg0K ICAgICAgICBhY3RpdmUudHJpZ2dlcignYWN0aXZhdGUnKQ0KICAgICAgfQ0KDQog IH0NCg0KDQogLyogU0NST0xMU1BZIFBMVUdJTiBERUZJTklUSU9ODQogICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFyIG9sZCA9ICQuZm4u c2Nyb2xsc3B5DQoNCiAgJC5mbi5zY3JvbGxzcHkgPSBmdW5jdGlvbiAob3B0aW9u KSB7DQogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2 YXIgJHRoaXMgPSAkKHRoaXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEo J3Njcm9sbHNweScpDQogICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24g PT0gJ29iamVjdCcgJiYgb3B0aW9uDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRh dGEoJ3Njcm9sbHNweScsIChkYXRhID0gbmV3IFNjcm9sbFNweSh0aGlzLCBvcHRp b25zKSkpDQogICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0 YVtvcHRpb25dKCkNCiAgICB9KQ0KICB9DQoNCiAgJC5mbi5zY3JvbGxzcHkuQ29u c3RydWN0b3IgPSBTY3JvbGxTcHkNCg0KICAkLmZuLnNjcm9sbHNweS5kZWZhdWx0 cyA9IHsNCiAgICBvZmZzZXQ6IDEwDQogIH0NCg0KDQogLyogU0NST0xMU1BZIE5P IENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgJC5m bi5zY3JvbGxzcHkubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAkLmZu LnNjcm9sbHNweSA9IG9sZA0KICAgIHJldHVybiB0aGlzDQogIH0NCg0KDQogLyog U0NST0xMU1BZIERBVEEtQVBJDQogICogPT09PT09PT09PT09PT09PT09ICovDQoN CiAgJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkgew0KICAgICQoJ1tk YXRhLXNweT0ic2Nyb2xsIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgIHZh ciAkc3B5ID0gJCh0aGlzKQ0KICAgICAgJHNweS5zY3JvbGxzcHkoJHNweS5kYXRh KCkpDQogICAgfSkNCiAgfSkNCg0KfSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KICogYm9vdHN0cmFwLXRhYi5qcyB2Mi4zLjENCiAqIGh0dHA6Ly90d2l0dGVy LmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRtbCN0YWJzDQogKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLg0KICoNCiAq IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg KHRoZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KICogWW91IG1h eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogaHR0cDov L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5s ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3 cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg ZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICog bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0K DQoNCiFmdW5jdGlvbiAoJCkgew0KDQogICJ1c2Ugc3RyaWN0IjsgLy8ganNoaW50 IDtfOw0KDQoNCiAvKiBUQUIgQ0xBU1MgREVGSU5JVElPTg0KICAqID09PT09PT09 PT09PT09PT09PT09ICovDQoNCiAgdmFyIFRhYiA9IGZ1bmN0aW9uIChlbGVtZW50 KSB7DQogICAgdGhpcy5lbGVtZW50ID0gJChlbGVtZW50KQ0KICB9DQoNCiAgVGFi LnByb3RvdHlwZSA9IHsNCg0KICAgIGNvbnN0cnVjdG9yOiBUYWINCg0KICAsIHNo b3c6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciAkdGhpcyA9IHRoaXMuZWxlbWVu dA0KICAgICAgICAsICR1bCA9ICR0aGlzLmNsb3Nlc3QoJ3VsOm5vdCguZHJvcGRv d24tbWVudSknKQ0KICAgICAgICAsIHNlbGVjdG9yID0gJHRoaXMuYXR0cignZGF0 YS10YXJnZXQnKQ0KICAgICAgICAsIHByZXZpb3VzDQogICAgICAgICwgJHRhcmdl dA0KICAgICAgICAsIGUNCg0KICAgICAgaWYgKCFzZWxlY3Rvcikgew0KICAgICAg ICBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2hyZWYnKQ0KICAgICAgICBzZWxlY3Rv ciA9IHNlbGVjdG9yICYmIHNlbGVjdG9yLnJlcGxhY2UoLy4qKD89I1teXHNdKiQp LywgJycpIC8vc3RyaXAgZm9yIGllNw0KICAgICAgfQ0KDQogICAgICBpZiAoICR0 aGlzLnBhcmVudCgnbGknKS5oYXNDbGFzcygnYWN0aXZlJykgKSByZXR1cm4NCg0K ICAgICAgcHJldmlvdXMgPSAkdWwuZmluZCgnLmFjdGl2ZTpsYXN0IGEnKVswXQ0K DQogICAgICBlID0gJC5FdmVudCgnc2hvdycsIHsNCiAgICAgICAgcmVsYXRlZFRh cmdldDogcHJldmlvdXMNCiAgICAgIH0pDQoNCiAgICAgICR0aGlzLnRyaWdnZXIo ZSkNCg0KICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybg0K DQogICAgICAkdGFyZ2V0ID0gJChzZWxlY3RvcikNCg0KICAgICAgdGhpcy5hY3Rp dmF0ZSgkdGhpcy5wYXJlbnQoJ2xpJyksICR1bCkNCiAgICAgIHRoaXMuYWN0aXZh dGUoJHRhcmdldCwgJHRhcmdldC5wYXJlbnQoKSwgZnVuY3Rpb24gKCkgew0KICAg ICAgICAkdGhpcy50cmlnZ2VyKHsNCiAgICAgICAgICB0eXBlOiAnc2hvd24nDQog ICAgICAgICwgcmVsYXRlZFRhcmdldDogcHJldmlvdXMNCiAgICAgICAgfSkNCiAg ICAgIH0pDQogICAgfQ0KDQogICwgYWN0aXZhdGU6IGZ1bmN0aW9uICggZWxlbWVu dCwgY29udGFpbmVyLCBjYWxsYmFjaykgew0KICAgICAgdmFyICRhY3RpdmUgPSBj b250YWluZXIuZmluZCgnPiAuYWN0aXZlJykNCiAgICAgICAgLCB0cmFuc2l0aW9u ID0gY2FsbGJhY2sNCiAgICAgICAgICAgICYmICQuc3VwcG9ydC50cmFuc2l0aW9u DQogICAgICAgICAgICAmJiAkYWN0aXZlLmhhc0NsYXNzKCdmYWRlJykNCg0KICAg ICAgZnVuY3Rpb24gbmV4dCgpIHsNCiAgICAgICAgJGFjdGl2ZQ0KICAgICAgICAg IC5yZW1vdmVDbGFzcygnYWN0aXZlJykNCiAgICAgICAgICAuZmluZCgnPiAuZHJv cGRvd24tbWVudSA+IC5hY3RpdmUnKQ0KICAgICAgICAgIC5yZW1vdmVDbGFzcygn YWN0aXZlJykNCg0KICAgICAgICBlbGVtZW50LmFkZENsYXNzKCdhY3RpdmUnKQ0K DQogICAgICAgIGlmICh0cmFuc2l0aW9uKSB7DQogICAgICAgICAgZWxlbWVudFsw XS5vZmZzZXRXaWR0aCAvLyByZWZsb3cgZm9yIHRyYW5zaXRpb24NCiAgICAgICAg ICBlbGVtZW50LmFkZENsYXNzKCdpbicpDQogICAgICAgIH0gZWxzZSB7DQogICAg ICAgICAgZWxlbWVudC5yZW1vdmVDbGFzcygnZmFkZScpDQogICAgICAgIH0NCg0K ICAgICAgICBpZiAoIGVsZW1lbnQucGFyZW50KCcuZHJvcGRvd24tbWVudScpICkg ew0KICAgICAgICAgIGVsZW1lbnQuY2xvc2VzdCgnbGkuZHJvcGRvd24nKS5hZGRD bGFzcygnYWN0aXZlJykNCiAgICAgICAgfQ0KDQogICAgICAgIGNhbGxiYWNrICYm IGNhbGxiYWNrKCkNCiAgICAgIH0NCg0KICAgICAgdHJhbnNpdGlvbiA/DQogICAg ICAgICRhY3RpdmUub25lKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCwgbmV4dCkg Og0KICAgICAgICBuZXh0KCkNCg0KICAgICAgJGFjdGl2ZS5yZW1vdmVDbGFzcygn aW4nKQ0KICAgIH0NCiAgfQ0KDQoNCiAvKiBUQUIgUExVR0lOIERFRklOSVRJT04N CiAgKiA9PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KICB2YXIgb2xkID0gJC5m bi50YWINCg0KICAkLmZuLnRhYiA9IGZ1bmN0aW9uICggb3B0aW9uICkgew0KICAg IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgdmFyICR0aGlz ID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCd0YWInKQ0K ICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCd0YWInLCAoZGF0YSA9IG5ldyBU YWIodGhpcykpKQ0KICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycp IGRhdGFbb3B0aW9uXSgpDQogICAgfSkNCiAgfQ0KDQogICQuZm4udGFiLkNvbnN0 cnVjdG9yID0gVGFiDQoNCg0KIC8qIFRBQiBOTyBDT05GTElDVA0KICAqID09PT09 PT09PT09PT09PSAqLw0KDQogICQuZm4udGFiLm5vQ29uZmxpY3QgPSBmdW5jdGlv biAoKSB7DQogICAgJC5mbi50YWIgPSBvbGQNCiAgICByZXR1cm4gdGhpcw0KICB9 DQoNCg0KIC8qIFRBQiBEQVRBLUFQSQ0KICAqID09PT09PT09PT09PSAqLw0KDQog ICQoZG9jdW1lbnQpLm9uKCdjbGljay50YWIuZGF0YS1hcGknLCAnW2RhdGEtdG9n Z2xlPSJ0YWIiXSwgW2RhdGEtdG9nZ2xlPSJwaWxsIl0nLCBmdW5jdGlvbiAoZSkg ew0KICAgIGUucHJldmVudERlZmF1bHQoKQ0KICAgICQodGhpcykudGFiKCdzaG93 JykNCiAgfSkNCg0KfSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQog KiBib290c3RyYXAtdHlwZWFoZWFkLmpzIHYyLjMuMQ0KICogaHR0cDovL3R3aXR0 ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI3R5cGVhaGVh ZA0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwg SW5jLg0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICogeW91IG1heSBub3QgdXNl IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl Lg0KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQog Kg0KICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w DQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5k ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ UywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNl bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np b25zIGFuZA0KICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gKi8NCg0KDQohZnVuY3Rpb24oJCl7DQoNCiAgInVzZSBzdHJp Y3QiOyAvLyBqc2hpbnQgO187DQoNCg0KIC8qIFRZUEVBSEVBRCBQVUJMSUMgQ0xB U1MgREVGSU5JVElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSAqLw0KDQogIHZhciBUeXBlYWhlYWQgPSBmdW5jdGlvbiAoZWxlbWVudCwg b3B0aW9ucykgew0KICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpDQogICAg dGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sICQuZm4udHlwZWFoZWFkLmRlZmF1 bHRzLCBvcHRpb25zKQ0KICAgIHRoaXMubWF0Y2hlciA9IHRoaXMub3B0aW9ucy5t YXRjaGVyIHx8IHRoaXMubWF0Y2hlcg0KICAgIHRoaXMuc29ydGVyID0gdGhpcy5v cHRpb25zLnNvcnRlciB8fCB0aGlzLnNvcnRlcg0KICAgIHRoaXMuaGlnaGxpZ2h0 ZXIgPSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0ZXIgfHwgdGhpcy5oaWdobGlnaHRl cg0KICAgIHRoaXMudXBkYXRlciA9IHRoaXMub3B0aW9ucy51cGRhdGVyIHx8IHRo aXMudXBkYXRlcg0KICAgIHRoaXMuc291cmNlID0gdGhpcy5vcHRpb25zLnNvdXJj ZQ0KICAgIHRoaXMuJG1lbnUgPSAkKHRoaXMub3B0aW9ucy5tZW51KQ0KICAgIHRo aXMuc2hvd24gPSBmYWxzZQ0KICAgIHRoaXMubGlzdGVuKCkNCiAgfQ0KDQogIFR5 cGVhaGVhZC5wcm90b3R5cGUgPSB7DQoNCiAgICBjb25zdHJ1Y3RvcjogVHlwZWFo ZWFkDQoNCiAgLCBzZWxlY3Q6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHZhciB2YWwg PSB0aGlzLiRtZW51LmZpbmQoJy5hY3RpdmUnKS5hdHRyKCdkYXRhLXZhbHVlJykN CiAgICAgIHRoaXMuJGVsZW1lbnQNCiAgICAgICAgLnZhbCh0aGlzLnVwZGF0ZXIo dmFsKSkNCiAgICAgICAgLmNoYW5nZSgpDQogICAgICByZXR1cm4gdGhpcy5oaWRl KCkNCiAgICB9DQoNCiAgLCB1cGRhdGVyOiBmdW5jdGlvbiAoaXRlbSkgew0KICAg ICAgcmV0dXJuIGl0ZW0NCiAgICB9DQoNCiAgLCBzaG93OiBmdW5jdGlvbiAoKSB7 DQogICAgICB2YXIgcG9zID0gJC5leHRlbmQoe30sIHRoaXMuJGVsZW1lbnQucG9z aXRpb24oKSwgew0KICAgICAgICBoZWlnaHQ6IHRoaXMuJGVsZW1lbnRbMF0ub2Zm c2V0SGVpZ2h0DQogICAgICB9KQ0KDQogICAgICB0aGlzLiRtZW51DQogICAgICAg IC5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KQ0KICAgICAgICAuY3NzKHsNCiAg ICAgICAgICB0b3A6IHBvcy50b3AgKyBwb3MuaGVpZ2h0DQogICAgICAgICwgbGVm dDogcG9zLmxlZnQNCiAgICAgICAgfSkNCiAgICAgICAgLnNob3coKQ0KDQogICAg ICB0aGlzLnNob3duID0gdHJ1ZQ0KICAgICAgcmV0dXJuIHRoaXMNCiAgICB9DQoN CiAgLCBoaWRlOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLiRtZW51LmhpZGUo KQ0KICAgICAgdGhpcy5zaG93biA9IGZhbHNlDQogICAgICByZXR1cm4gdGhpcw0K ICAgIH0NCg0KICAsIGxvb2t1cDogZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICB2 YXIgaXRlbXMNCg0KICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuJGVsZW1lbnQudmFs KCkNCg0KICAgICAgaWYgKCF0aGlzLnF1ZXJ5IHx8IHRoaXMucXVlcnkubGVuZ3Ro IDwgdGhpcy5vcHRpb25zLm1pbkxlbmd0aCkgew0KICAgICAgICByZXR1cm4gdGhp cy5zaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcw0KICAgICAgfQ0KDQogICAgICBp dGVtcyA9ICQuaXNGdW5jdGlvbih0aGlzLnNvdXJjZSkgPyB0aGlzLnNvdXJjZSh0 aGlzLnF1ZXJ5LCAkLnByb3h5KHRoaXMucHJvY2VzcywgdGhpcykpIDogdGhpcy5z b3VyY2UNCg0KICAgICAgcmV0dXJuIGl0ZW1zID8gdGhpcy5wcm9jZXNzKGl0ZW1z KSA6IHRoaXMNCiAgICB9DQoNCiAgLCBwcm9jZXNzOiBmdW5jdGlvbiAoaXRlbXMp IHsNCiAgICAgIHZhciB0aGF0ID0gdGhpcw0KDQogICAgICBpdGVtcyA9ICQuZ3Jl cChpdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgcmV0dXJuIHRoYXQu bWF0Y2hlcihpdGVtKQ0KICAgICAgfSkNCg0KICAgICAgaXRlbXMgPSB0aGlzLnNv cnRlcihpdGVtcykNCg0KICAgICAgaWYgKCFpdGVtcy5sZW5ndGgpIHsNCiAgICAg ICAgcmV0dXJuIHRoaXMuc2hvd24gPyB0aGlzLmhpZGUoKSA6IHRoaXMNCiAgICAg IH0NCg0KICAgICAgcmV0dXJuIHRoaXMucmVuZGVyKGl0ZW1zLnNsaWNlKDAsIHRo aXMub3B0aW9ucy5pdGVtcykpLnNob3coKQ0KICAgIH0NCg0KICAsIG1hdGNoZXI6 IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICByZXR1cm4gfml0ZW0udG9Mb3dlckNh c2UoKS5pbmRleE9mKHRoaXMucXVlcnkudG9Mb3dlckNhc2UoKSkNCiAgICB9DQoN CiAgLCBzb3J0ZXI6IGZ1bmN0aW9uIChpdGVtcykgew0KICAgICAgdmFyIGJlZ2lu c3dpdGggPSBbXQ0KICAgICAgICAsIGNhc2VTZW5zaXRpdmUgPSBbXQ0KICAgICAg ICAsIGNhc2VJbnNlbnNpdGl2ZSA9IFtdDQogICAgICAgICwgaXRlbQ0KDQogICAg ICB3aGlsZSAoaXRlbSA9IGl0ZW1zLnNoaWZ0KCkpIHsNCiAgICAgICAgaWYgKCFp dGVtLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnF1ZXJ5LnRvTG93ZXJDYXNl KCkpKSBiZWdpbnN3aXRoLnB1c2goaXRlbSkNCiAgICAgICAgZWxzZSBpZiAofml0 ZW0uaW5kZXhPZih0aGlzLnF1ZXJ5KSkgY2FzZVNlbnNpdGl2ZS5wdXNoKGl0ZW0p DQogICAgICAgIGVsc2UgY2FzZUluc2Vuc2l0aXZlLnB1c2goaXRlbSkNCiAgICAg IH0NCg0KICAgICAgcmV0dXJuIGJlZ2luc3dpdGguY29uY2F0KGNhc2VTZW5zaXRp dmUsIGNhc2VJbnNlbnNpdGl2ZSkNCiAgICB9DQoNCiAgLCBoaWdobGlnaHRlcjog ZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgIHZhciBxdWVyeSA9IHRoaXMucXVlcnku cmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgJ1xcJCYnKQ0K ICAgICAgcmV0dXJuIGl0ZW0ucmVwbGFjZShuZXcgUmVnRXhwKCcoJyArIHF1ZXJ5 ICsgJyknLCAnaWcnKSwgZnVuY3Rpb24gKCQxLCBtYXRjaCkgew0KICAgICAgICBy ZXR1cm4gJzxzdHJvbmc+JyArIG1hdGNoICsgJzwvc3Ryb25nPicNCiAgICAgIH0p DQogICAgfQ0KDQogICwgcmVuZGVyOiBmdW5jdGlvbiAoaXRlbXMpIHsNCiAgICAg IHZhciB0aGF0ID0gdGhpcw0KDQogICAgICBpdGVtcyA9ICQoaXRlbXMpLm1hcChm dW5jdGlvbiAoaSwgaXRlbSkgew0KICAgICAgICBpID0gJCh0aGF0Lm9wdGlvbnMu aXRlbSkuYXR0cignZGF0YS12YWx1ZScsIGl0ZW0pDQogICAgICAgIGkuZmluZCgn YScpLmh0bWwodGhhdC5oaWdobGlnaHRlcihpdGVtKSkNCiAgICAgICAgcmV0dXJu IGlbMF0NCiAgICAgIH0pDQoNCiAgICAgIGl0ZW1zLmZpcnN0KCkuYWRkQ2xhc3Mo J2FjdGl2ZScpDQogICAgICB0aGlzLiRtZW51Lmh0bWwoaXRlbXMpDQogICAgICBy ZXR1cm4gdGhpcw0KICAgIH0NCg0KICAsIG5leHQ6IGZ1bmN0aW9uIChldmVudCkg ew0KICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuJG1lbnUuZmluZCgnLmFjdGl2ZScp LnJlbW92ZUNsYXNzKCdhY3RpdmUnKQ0KICAgICAgICAsIG5leHQgPSBhY3RpdmUu bmV4dCgpDQoNCiAgICAgIGlmICghbmV4dC5sZW5ndGgpIHsNCiAgICAgICAgbmV4 dCA9ICQodGhpcy4kbWVudS5maW5kKCdsaScpWzBdKQ0KICAgICAgfQ0KDQogICAg ICBuZXh0LmFkZENsYXNzKCdhY3RpdmUnKQ0KICAgIH0NCg0KICAsIHByZXY6IGZ1 bmN0aW9uIChldmVudCkgew0KICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuJG1lbnUu ZmluZCgnLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKQ0KICAgICAgICAs IHByZXYgPSBhY3RpdmUucHJldigpDQoNCiAgICAgIGlmICghcHJldi5sZW5ndGgp IHsNCiAgICAgICAgcHJldiA9IHRoaXMuJG1lbnUuZmluZCgnbGknKS5sYXN0KCkN CiAgICAgIH0NCg0KICAgICAgcHJldi5hZGRDbGFzcygnYWN0aXZlJykNCiAgICB9 DQoNCiAgLCBsaXN0ZW46IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJGVsZW1l bnQNCiAgICAgICAgLm9uKCdmb2N1cycsICAgICQucHJveHkodGhpcy5mb2N1cywg dGhpcykpDQogICAgICAgIC5vbignYmx1cicsICAgICAkLnByb3h5KHRoaXMuYmx1 ciwgdGhpcykpDQogICAgICAgIC5vbigna2V5cHJlc3MnLCAkLnByb3h5KHRoaXMu a2V5cHJlc3MsIHRoaXMpKQ0KICAgICAgICAub24oJ2tleXVwJywgICAgJC5wcm94 eSh0aGlzLmtleXVwLCB0aGlzKSkNCg0KICAgICAgaWYgKHRoaXMuZXZlbnRTdXBw b3J0ZWQoJ2tleWRvd24nKSkgew0KICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKCdr ZXlkb3duJywgJC5wcm94eSh0aGlzLmtleWRvd24sIHRoaXMpKQ0KICAgICAgfQ0K DQogICAgICB0aGlzLiRtZW51DQogICAgICAgIC5vbignY2xpY2snLCAkLnByb3h5 KHRoaXMuY2xpY2ssIHRoaXMpKQ0KICAgICAgICAub24oJ21vdXNlZW50ZXInLCAn bGknLCAkLnByb3h5KHRoaXMubW91c2VlbnRlciwgdGhpcykpDQogICAgICAgIC5v bignbW91c2VsZWF2ZScsICdsaScsICQucHJveHkodGhpcy5tb3VzZWxlYXZlLCB0 aGlzKSkNCiAgICB9DQoNCiAgLCBldmVudFN1cHBvcnRlZDogZnVuY3Rpb24oZXZl bnROYW1lKSB7DQogICAgICB2YXIgaXNTdXBwb3J0ZWQgPSBldmVudE5hbWUgaW4g dGhpcy4kZWxlbWVudA0KICAgICAgaWYgKCFpc1N1cHBvcnRlZCkgew0KICAgICAg ICB0aGlzLiRlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47 JykNCiAgICAgICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2YgdGhpcy4kZWxlbWVudFtl dmVudE5hbWVdID09PSAnZnVuY3Rpb24nDQogICAgICB9DQogICAgICByZXR1cm4g aXNTdXBwb3J0ZWQNCiAgICB9DQoNCiAgLCBtb3ZlOiBmdW5jdGlvbiAoZSkgew0K ICAgICAgaWYgKCF0aGlzLnNob3duKSByZXR1cm4NCg0KICAgICAgc3dpdGNoKGUu a2V5Q29kZSkgew0KICAgICAgICBjYXNlIDk6IC8vIHRhYg0KICAgICAgICBjYXNl IDEzOiAvLyBlbnRlcg0KICAgICAgICBjYXNlIDI3OiAvLyBlc2NhcGUNCiAgICAg ICAgICBlLnByZXZlbnREZWZhdWx0KCkNCiAgICAgICAgICBicmVhaw0KDQogICAg ICAgIGNhc2UgMzg6IC8vIHVwIGFycm93DQogICAgICAgICAgZS5wcmV2ZW50RGVm YXVsdCgpDQogICAgICAgICAgdGhpcy5wcmV2KCkNCiAgICAgICAgICBicmVhaw0K DQogICAgICAgIGNhc2UgNDA6IC8vIGRvd24gYXJyb3cNCiAgICAgICAgICBlLnBy ZXZlbnREZWZhdWx0KCkNCiAgICAgICAgICB0aGlzLm5leHQoKQ0KICAgICAgICAg IGJyZWFrDQogICAgICB9DQoNCiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkNCiAg ICB9DQoNCiAgLCBrZXlkb3duOiBmdW5jdGlvbiAoZSkgew0KICAgICAgdGhpcy5z dXBwcmVzc0tleVByZXNzUmVwZWF0ID0gfiQuaW5BcnJheShlLmtleUNvZGUsIFs0 MCwzOCw5LDEzLDI3XSkNCiAgICAgIHRoaXMubW92ZShlKQ0KICAgIH0NCg0KICAs IGtleXByZXNzOiBmdW5jdGlvbiAoZSkgew0KICAgICAgaWYgKHRoaXMuc3VwcHJl c3NLZXlQcmVzc1JlcGVhdCkgcmV0dXJuDQogICAgICB0aGlzLm1vdmUoZSkNCiAg ICB9DQoNCiAgLCBrZXl1cDogZnVuY3Rpb24gKGUpIHsNCiAgICAgIHN3aXRjaChl LmtleUNvZGUpIHsNCiAgICAgICAgY2FzZSA0MDogLy8gZG93biBhcnJvdw0KICAg ICAgICBjYXNlIDM4OiAvLyB1cCBhcnJvdw0KICAgICAgICBjYXNlIDE2OiAvLyBz aGlmdA0KICAgICAgICBjYXNlIDE3OiAvLyBjdHJsDQogICAgICAgIGNhc2UgMTg6 IC8vIGFsdA0KICAgICAgICAgIGJyZWFrDQoNCiAgICAgICAgY2FzZSA5OiAvLyB0 YWINCiAgICAgICAgY2FzZSAxMzogLy8gZW50ZXINCiAgICAgICAgICBpZiAoIXRo aXMuc2hvd24pIHJldHVybg0KICAgICAgICAgIHRoaXMuc2VsZWN0KCkNCiAgICAg ICAgICBicmVhaw0KDQogICAgICAgIGNhc2UgMjc6IC8vIGVzY2FwZQ0KICAgICAg ICAgIGlmICghdGhpcy5zaG93bikgcmV0dXJuDQogICAgICAgICAgdGhpcy5oaWRl KCkNCiAgICAgICAgICBicmVhaw0KDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAg ICAgdGhpcy5sb29rdXAoKQ0KICAgICAgfQ0KDQogICAgICBlLnN0b3BQcm9wYWdh dGlvbigpDQogICAgICBlLnByZXZlbnREZWZhdWx0KCkNCiAgfQ0KDQogICwgZm9j dXM6IGZ1bmN0aW9uIChlKSB7DQogICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlDQog ICAgfQ0KDQogICwgYmx1cjogZnVuY3Rpb24gKGUpIHsNCiAgICAgIHRoaXMuZm9j dXNlZCA9IGZhbHNlDQogICAgICBpZiAoIXRoaXMubW91c2Vkb3ZlciAmJiB0aGlz LnNob3duKSB0aGlzLmhpZGUoKQ0KICAgIH0NCg0KICAsIGNsaWNrOiBmdW5jdGlv biAoZSkgew0KICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKQ0KICAgICAgZS5wcmV2 ZW50RGVmYXVsdCgpDQogICAgICB0aGlzLnNlbGVjdCgpDQogICAgICB0aGlzLiRl bGVtZW50LmZvY3VzKCkNCiAgICB9DQoNCiAgLCBtb3VzZWVudGVyOiBmdW5jdGlv biAoZSkgew0KICAgICAgdGhpcy5tb3VzZWRvdmVyID0gdHJ1ZQ0KICAgICAgdGhp cy4kbWVudS5maW5kKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpDQog ICAgICAkKGUuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoJ2FjdGl2ZScpDQogICAg fQ0KDQogICwgbW91c2VsZWF2ZTogZnVuY3Rpb24gKGUpIHsNCiAgICAgIHRoaXMu bW91c2Vkb3ZlciA9IGZhbHNlDQogICAgICBpZiAoIXRoaXMuZm9jdXNlZCAmJiB0 aGlzLnNob3duKSB0aGlzLmhpZGUoKQ0KICAgIH0NCg0KICB9DQoNCg0KICAvKiBU WVBFQUhFQUQgUExVR0lOIERFRklOSVRJT04NCiAgICogPT09PT09PT09PT09PT09 PT09PT09PT09PT09ICovDQoNCiAgdmFyIG9sZCA9ICQuZm4udHlwZWFoZWFkDQoN CiAgJC5mbi50eXBlYWhlYWQgPSBmdW5jdGlvbiAob3B0aW9uKSB7DQogICAgcmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICB2YXIgJHRoaXMgPSAk KHRoaXMpDQogICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ3R5cGVhaGVhZCcp DQogICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24gPT0gJ29iamVjdCcg JiYgb3B0aW9uDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ3R5cGVhaGVh ZCcsIChkYXRhID0gbmV3IFR5cGVhaGVhZCh0aGlzLCBvcHRpb25zKSkpDQogICAg ICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKCkN CiAgICB9KQ0KICB9DQoNCiAgJC5mbi50eXBlYWhlYWQuZGVmYXVsdHMgPSB7DQog ICAgc291cmNlOiBbXQ0KICAsIGl0ZW1zOiA4DQogICwgbWVudTogJzx1bCBjbGFz cz0idHlwZWFoZWFkIGRyb3Bkb3duLW1lbnUiPjwvdWw+Jw0KICAsIGl0ZW06ICc8 bGk+PGEgaHJlZj0iIyI+PC9hPjwvbGk+Jw0KICAsIG1pbkxlbmd0aDogMQ0KICB9 DQoNCiAgJC5mbi50eXBlYWhlYWQuQ29uc3RydWN0b3IgPSBUeXBlYWhlYWQNCg0K DQogLyogVFlQRUFIRUFEIE5PIENPTkZMSUNUDQogICogPT09PT09PT09PT09PT09 PT09PSAqLw0KDQogICQuZm4udHlwZWFoZWFkLm5vQ29uZmxpY3QgPSBmdW5jdGlv biAoKSB7DQogICAgJC5mbi50eXBlYWhlYWQgPSBvbGQNCiAgICByZXR1cm4gdGhp cw0KICB9DQoNCg0KIC8qIFRZUEVBSEVBRCBEQVRBLUFQSQ0KICAqID09PT09PT09 PT09PT09PT09PSAqLw0KDQogICQoZG9jdW1lbnQpLm9uKCdmb2N1cy50eXBlYWhl YWQuZGF0YS1hcGknLCAnW2RhdGEtcHJvdmlkZT0idHlwZWFoZWFkIl0nLCBmdW5j dGlvbiAoZSkgew0KICAgIHZhciAkdGhpcyA9ICQodGhpcykNCiAgICBpZiAoJHRo aXMuZGF0YSgndHlwZWFoZWFkJykpIHJldHVybg0KICAgICR0aGlzLnR5cGVhaGVh ZCgkdGhpcy5kYXRhKCkpDQogIH0pDQoNCn0od2luZG93LmpRdWVyeSk7DQovKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQogKiBib290c3RyYXAtYWZmaXguanMgdjIuMy4xDQogKiBodHRw Oi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwj YWZmaXgNCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIs IEluYy4NCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAqIHlvdSBtYXkgbm90IHVz ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z ZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0K ICoNCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu MA0KICoNCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCiAqIGRpc3RyaWJ1dGVkIHVu ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT SVMsDQogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCiAqIFNlZSB0aGUgTGlj ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz aW9ucyBhbmQNCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSAqLw0KDQoNCiFmdW5jdGlvbiAoJCkgew0KDQogICJ1c2Ugc3Ry aWN0IjsgLy8ganNoaW50IDtfOw0KDQoNCiAvKiBBRkZJWCBDTEFTUyBERUZJTklU SU9ODQogICogPT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQogIHZhciBBZmZp eCA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7DQogICAgdGhpcy5vcHRp b25zID0gJC5leHRlbmQoe30sICQuZm4uYWZmaXguZGVmYXVsdHMsIG9wdGlvbnMp DQogICAgdGhpcy4kd2luZG93ID0gJCh3aW5kb3cpDQogICAgICAub24oJ3Njcm9s bC5hZmZpeC5kYXRhLWFwaScsICQucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLCB0 aGlzKSkNCiAgICAgIC5vbignY2xpY2suYWZmaXguZGF0YS1hcGknLCAgJC5wcm94 eShmdW5jdGlvbiAoKSB7IHNldFRpbWVvdXQoJC5wcm94eSh0aGlzLmNoZWNrUG9z aXRpb24sIHRoaXMpLCAxKSB9LCB0aGlzKSkNCiAgICB0aGlzLiRlbGVtZW50ID0g JChlbGVtZW50KQ0KICAgIHRoaXMuY2hlY2tQb3NpdGlvbigpDQogIH0NCg0KICBB ZmZpeC5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHsNCiAg ICBpZiAoIXRoaXMuJGVsZW1lbnQuaXMoJzp2aXNpYmxlJykpIHJldHVybg0KDQog ICAgdmFyIHNjcm9sbEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpDQogICAg ICAsIHNjcm9sbFRvcCA9IHRoaXMuJHdpbmRvdy5zY3JvbGxUb3AoKQ0KICAgICAg LCBwb3NpdGlvbiA9IHRoaXMuJGVsZW1lbnQub2Zmc2V0KCkNCiAgICAgICwgb2Zm c2V0ID0gdGhpcy5vcHRpb25zLm9mZnNldA0KICAgICAgLCBvZmZzZXRCb3R0b20g PSBvZmZzZXQuYm90dG9tDQogICAgICAsIG9mZnNldFRvcCA9IG9mZnNldC50b3AN CiAgICAgICwgcmVzZXQgPSAnYWZmaXggYWZmaXgtdG9wIGFmZml4LWJvdHRvbScN CiAgICAgICwgYWZmaXgNCg0KICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9ICdvYmpl Y3QnKSBvZmZzZXRCb3R0b20gPSBvZmZzZXRUb3AgPSBvZmZzZXQNCiAgICBpZiAo dHlwZW9mIG9mZnNldFRvcCA9PSAnZnVuY3Rpb24nKSBvZmZzZXRUb3AgPSBvZmZz ZXQudG9wKCkNCiAgICBpZiAodHlwZW9mIG9mZnNldEJvdHRvbSA9PSAnZnVuY3Rp b24nKSBvZmZzZXRCb3R0b20gPSBvZmZzZXQuYm90dG9tKCkNCg0KICAgIGFmZml4 ID0gdGhpcy51bnBpbiAhPSBudWxsICYmIChzY3JvbGxUb3AgKyB0aGlzLnVucGlu IDw9IHBvc2l0aW9uLnRvcCkgPw0KICAgICAgZmFsc2UgICAgOiBvZmZzZXRCb3R0 b20gIT0gbnVsbCAmJiAocG9zaXRpb24udG9wICsgdGhpcy4kZWxlbWVudC5oZWln aHQoKSA+PSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRCb3R0b20pID8NCiAgICAgICdi b3R0b20nIDogb2Zmc2V0VG9wICE9IG51bGwgJiYgc2Nyb2xsVG9wIDw9IG9mZnNl dFRvcCA/DQogICAgICAndG9wJyAgICA6IGZhbHNlDQoNCiAgICBpZiAodGhpcy5h ZmZpeGVkID09PSBhZmZpeCkgcmV0dXJuDQoNCiAgICB0aGlzLmFmZml4ZWQgPSBh ZmZpeA0KICAgIHRoaXMudW5waW4gPSBhZmZpeCA9PSAnYm90dG9tJyA/IHBvc2l0 aW9uLnRvcCAtIHNjcm9sbFRvcCA6IG51bGwNCg0KICAgIHRoaXMuJGVsZW1lbnQu cmVtb3ZlQ2xhc3MocmVzZXQpLmFkZENsYXNzKCdhZmZpeCcgKyAoYWZmaXggPyAn LScgKyBhZmZpeCA6ICcnKSkNCiAgfQ0KDQoNCiAvKiBBRkZJWCBQTFVHSU4gREVG SU5JVElPTg0KICAqID09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCiAgdmFy IG9sZCA9ICQuZm4uYWZmaXgNCg0KICAkLmZuLmFmZml4ID0gZnVuY3Rpb24gKG9w dGlvbikgew0KICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAg ICAgdmFyICR0aGlzID0gJCh0aGlzKQ0KICAgICAgICAsIGRhdGEgPSAkdGhpcy5k YXRhKCdhZmZpeCcpDQogICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24g PT0gJ29iamVjdCcgJiYgb3B0aW9uDQogICAgICBpZiAoIWRhdGEpICR0aGlzLmRh dGEoJ2FmZml4JywgKGRhdGEgPSBuZXcgQWZmaXgodGhpcywgb3B0aW9ucykpKQ0K ICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0aW9u XSgpDQogICAgfSkNCiAgfQ0KDQogICQuZm4uYWZmaXguQ29uc3RydWN0b3IgPSBB ZmZpeA0KDQogICQuZm4uYWZmaXguZGVmYXVsdHMgPSB7DQogICAgb2Zmc2V0OiAw DQogIH0NCg0KDQogLyogQUZGSVggTk8gQ09ORkxJQ1QNCiAgKiA9PT09PT09PT09 PT09PT09PSAqLw0KDQogICQuZm4uYWZmaXgubm9Db25mbGljdCA9IGZ1bmN0aW9u ICgpIHsNCiAgICAkLmZuLmFmZml4ID0gb2xkDQogICAgcmV0dXJuIHRoaXMNCiAg fQ0KDQoNCiAvKiBBRkZJWCBEQVRBLUFQSQ0KICAqID09PT09PT09PT09PT09ICov DQoNCiAgJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkgew0KICAgICQo J1tkYXRhLXNweT0iYWZmaXgiXScpLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAg dmFyICRzcHkgPSAkKHRoaXMpDQogICAgICAgICwgZGF0YSA9ICRzcHkuZGF0YSgp DQoNCiAgICAgIGRhdGEub2Zmc2V0ID0gZGF0YS5vZmZzZXQgfHwge30NCg0KICAg ICAgZGF0YS5vZmZzZXRCb3R0b20gJiYgKGRhdGEub2Zmc2V0LmJvdHRvbSA9IGRh dGEub2Zmc2V0Qm90dG9tKQ0KICAgICAgZGF0YS5vZmZzZXRUb3AgJiYgKGRhdGEu b2Zmc2V0LnRvcCA9IGRhdGEub2Zmc2V0VG9wKQ0KDQogICAgICAkc3B5LmFmZml4 KGRhdGEpDQogICAgfSkNCiAgfSkNCg0KDQp9KHdpbmRvdy5qUXVlcnkpOw== ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=addthis_widget.js Content-Type: application/javascript; name=addthis_widget.js Content-Location: https://s7.addthis.com/js/300/addthis_widget.js Content-Transfer-Encoding: Base64 IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7aWYoYVtuXSlyZXR1cm4gYVtuXS5l eHBvcnRzO3ZhciBpPWFbbl09e2V4cG9ydHM6e30saWQ6bixsb2FkZWQ6ITF9O3Jl dHVybiBlW25dLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLHQpLGkubG9hZGVk PSEwLGkuZXhwb3J0c312YXIgbj13aW5kb3cuYXR3cGpwO3dpbmRvdy5hdHdwanA9 ZnVuY3Rpb24oYSxvKXtmb3IodmFyIHIscyxkPTAsdT1bXTtkPGEubGVuZ3RoO2Qr KylzPWFbZF0saVtzXSYmdS5wdXNoLmFwcGx5KHUsaVtzXSksaVtzXT0wO2Zvcihy IGluIG8paWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8s cikpe3ZhciBjPW9bcl07c3dpdGNoKHR5cGVvZiBjKXtjYXNlIm9iamVjdCI6ZVty XT1mdW5jdGlvbih0KXt2YXIgbj10LnNsaWNlKDEpLGE9dFswXTtyZXR1cm4gZnVu Y3Rpb24odCxpLG8pe2VbYV0uYXBwbHkodGhpcyxbdCxpLG9dLmNvbmNhdChuKSl9 fShjKTticmVhaztjYXNlImZ1bmN0aW9uIjplW3JdPWM7YnJlYWs7ZGVmYXVsdDpl W3JdPWVbY119fWZvcihuJiZuKGEsbyk7dS5sZW5ndGg7KXUuc2hpZnQoKS5jYWxs KG51bGwsdCl9O3ZhciBhPXt9LGk9ezA6MH07cmV0dXJuIHQuZT1mdW5jdGlvbihl LG4pe2lmKDA9PT1pW2VdKXJldHVybiBuLmNhbGwobnVsbCx0KTtpZih2b2lkIDAh PT1pW2VdKWlbZV0ucHVzaChuKTtlbHNle2lbZV09W25dO3ZhciBhPWRvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sbz1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJzY3JpcHQiKTtvLnR5cGU9InRleHQvamF2YXNjcmlwdCIsby5j aGFyc2V0PSJ1dGYtOCIsby5hc3luYz0hMCxvLnNyYz10LnArIiIrKHsxOiJjdXN0 b20tbWVzc2FnZXMiLDIyMjoibWVudSIsMjI0OiJjdXN0b20tbWVzc2FnZXMtcHJl dmlldyIsMjI2OiJmbG9hdGluZy1jc3MiLDIyODoibGF5ZXJzIiwyMjk6ImdldGNv dW50cyIsMjMwOiJjb3VudGVyIn1bZV18fGUpKyIuIit7MToiZTg2MDIwMGU3NDgy OWMyYjkzMmIiLDI6IjM3ZTllMjJmYjM4YmEwNTU1MWE1IiwzOiI5MWY0Y2M4ZjNl ZGQ1MDFhYWQzYSIsNDoiYTNiY2E3NGI4MjhkYzNiM2I4NmIiLDU6IjE3OTU4OTQ0 MGU3NWZkYjNkOTlhIiw2OiI1Y2FjMjhmOTQxZTgzYjkzNWEyOSIsNzoiY2MwMmJm NzRjNDQ2Yzk5ZmMyNzQiLDg6Ijk2MzM5YWJlYTBmYTEwNDViNjk2Iiw5OiIzZjJm MDc5YzJjNjk4OWFlNWJmZCIsMTA6ImI5OThiZjYzNWYzNjI5YmM4NTE1IiwxMToi YmY3NzIwNjBmNmRlYTUyODJmYzUiLDEyOiIwZGM4ZGU5Y2Y2OTQ1YmYxMmQyYyIs MTM6IjIzOTUyYzRkYWYwZmVjMDMyMDUyIiwxNDoiNWE0YTRlNTQzZTY5OThjNzky MjAiLDE1OiIyYjUzMTQwMzE5Y2Q4MWQ5MzBiMiIsMTY6Ijk4ZTk1ODM4NGVkMTk0 NmI1YWQzIiwxNzoiZDVmZTk3ZGFlMWI5YmFiZGUwYTkiLDE4OiJmMDk4NTE5ZGE5 ZWFjNWQ0ODAzNSIsMTk6ImFiMWEwOGIyNmJjYmNiNmU0MmIwIiwyMDoiNDI3ZTcz YjFlOWMwODU1YjdhNjQiLDIxOiJhYmQzMGY4OWY1YjNlOWVhZmQxNyIsMjI6ImEx ZmIyYmJhOTY5NTY2OGE0NDA4IiwyMzoiMmUxOTZmYzdiYmE1ODE3MGZkZGIiLDI0 OiI0NmVjMTQ3OTBiZDcwNjIxNzdkNCIsMjU6ImNjMGI4ZWIwOTZkYzVjMDJiZWE4 IiwyNjoiZGI3M2MyZDk5ZmEzOTYzMDI3NDIiLDI3OiIwOTg1MmQ5MzM2MjE1NmZk YjMyNyIsMjg6Ijc1NTFmOGE2ZTg2NmFmZDQ2NmRiIiwyOToiMjVmNmVkY2NlZDhi ZjNiZmY1NWQiLDMwOiJkODIyYzhmZTVlYzc2NWFhMTM1YiIsMzE6ImI5ODQ5ODc1 YWU2Y2VkMjNkZGFkIiwzMjoiMmQ3OTdlNWU5ZGMyMTg1MzZjYjAiLDMzOiJhNGFh ZGM4OGYzMzQ0NGZmY2IyMyIsMzQ6IjMwYWRmYzk2MGQzNTNmMjdjM2I3IiwzNToi Y2FkMTk3YzY1OTc2MTcxNTljNTUiLDM2OiJlMGE1ZTE1NWZhYTI0NDhlZmZhMSIs Mzc6IjAyOTcxMDM0MzI1NzkwMmIwYjdhIiwzODoiYjY5ZmE1MmE2NjBlOTljZTll MWQiLDM5OiIzNDdkY2EwN2I1OGFiYjVlY2ZiYiIsNDA6ImFkNTBmMDIzOWMwZTVi MzlmMDA0Iiw0MToiYzIyODNiNTkxOTU2MWQ2ZDQ1Y2YiLDQyOiI3NjgwNmE2ZGIz MTJjYjExZjcyYSIsNDM6IjA4YjUyMGViNzY4MjAwY2MxZjM0Iiw0NDoiNGQ5YzY5 NWZhNzgxYTZkMzZkODYiLDQ1OiJiZTBjNmU4OGM3NTQ5NWY5YjNkZCIsNDY6Ijcx OGNmMzI0YWQyZWE0Yjk0MTU0Iiw0NzoiYjM1N2QwMzNmM2M2ZWMwNTAzYTkiLDQ4 OiJkMmZhZjMzNGUyNDUwMzRiNDViMiIsNDk6IjQ3MjdlODg1NjI1ODNjMWU4NDg3 Iiw1MDoiZTJjOTE4NTQzYjhlYzI4ZTI5OWMiLDUxOiIyMjM0MGYyM2ZkMWM0ZjNl MjAxMiIsNTI6IjE5Zjc4OTkyOGJmNDM2Yzc4OTI2Iiw1MzoiZmIyYThhZjFmODNi OWRmYjUxYTciLDU0OiJiYmM3MGVlODEwMDFiNDI5NzkwZiIsNTU6ImIwNzI2Y2Qy OTMxYjJlNTZjZGU0Iiw1NjoiNmY4NjcyZDNhMDMzZTU3NTEzODMiLDU3OiIyN2Y1 ZDRkNGYyYTEyYzY2ZGI4MiIsNTg6IjNkM2NhMzkwMmI2NWExNzIwNzI0Iiw1OToi YzFmODM3NDYxZDcyZTE0YThkMmQiLDYwOiI3ZWE0ZDlkZDU3OWJlOTIzOGVhZiIs NjE6IjUzZjQ0MjNkZjgzNjk1NjUyNjIyIiw2MjoiMWU2ZWRjYWZhMGQ0MmE1YTdm MWMiLDYzOiI1Mzg3NmVmYjI0NWRhOWYwNjQ2NSIsNjQ6ImMyZjdkNDMyMjg4NTM4 YjBkZDJiIiw2NToiMzdjZmUyYzUwNmYzNzM5YTI4OTEiLDY2OiJkYTM0MWUwYThi YTMyNmY5NzdkZCIsNjc6ImY1OThlMDdkNjAyOTM5NjhjMjdmIiw2ODoiNWI1YzYy ZDQ2NjFhODhmMTU3YzEiLDY5OiJhNWYxZjdjZTUzOTNlNmFjMjc2NSIsNzA6ImVk ZGNlZTVhZDU2YWUwZWFmMzhiIiw3MToiMTIxNjI4N2Q4ZWE3OWMyMDcwZDAiLDcy OiI1NjRiZTQzMjZjNmM0ZmU3YTNkNiIsNzM6IjM4OTcyOTIzMTY1NDgyNzc3MGQ2 Iiw3NDoiOGEwMzZmNmJlZjYwZDMxYTk3YzYiLDc1OiI5MjRhMWVlM2UxZDM0ZDRh ZTc3NiIsNzY6Ijk4N2E1NjlkYzk5Y2IwYTFjYmU3Iiw3NzoiODg3YjFhYTllNmU2 ZmQ5MzVkMzAiLDc4OiI0NzZmZDY5OGIwMTEyNGQzMjYyMiIsNzk6ImRlMmQ3OTU2 ZWMzMTVhYjZjMzk1Iiw4MDoiM2ZjZDg1OWRlMjY4YzVmM2ZlMGEiLDgxOiI2NWRh OTQxYWZiNDZiZmE2MWRmNCIsODI6IjY4NjYzNDIzZWY4NjdmYmZiZGI1Iiw4Mzoi ZTY2MmFkNTcyZjg2MGNiY2VkZWQiLDg0OiI1NDg3MzlhMjcxMDA0ZWQ4NWNjMyIs ODU6IjFmMzI4NGFmOTIxM2E1NWIzNDEzIiw4NjoiOWUzMWIyYmI3YTJkMzYzZjJl ZjEiLDg3OiIxOTRmNDE4ZDZmOTM3MWFjMjYzMSIsODg6Ijg1MTM5YzIxOTQzYTc0 YzU5MWYwIiw4OToiM2NkMzVkNTU0MzU5NWE4ZmIxOGQiLDkwOiI0ZmNiYjJhY2Q0 YzlhMzc0MzZhMSIsOTE6IjExZDg0Y2Y1YTI3NWVmMjEyZDlkIiw5MjoiNWFiYWU5 N2IzMGY0ZTMyYTVlYTYiLDkzOiJlZDE1NjRlZTU1NGI5NzVjOGM5ZSIsOTQ6ImEw M2IxZTA3MmYyMDA2NzI5YmVlIiw5NToiOTRlYmRiNWY3MDc2ZjQ2ZTdhNTIiLDk2 OiI0MDZlZjZlYTQ3YjcxNzIzN2U3YSIsOTc6IjgzMzM5ODgxMjI5M2U1NjY2MTMw Iiw5ODoiN2IzM2M2ZGM3ZmZiMGUxNThlYmEiLDk5OiI4NDBjZWFiODNiNDE1YjA5 ZjFkYSIsMTAwOiIzOTRiZmNkNmI4ZDk5NzE4ZjNiNCIsMTAxOiI0MzliMWRmYzEz YzMyYzk1MDMxNiIsMTAyOiJkMmZmMTVhOGQyZjVjYzA5OWY0NSIsMTAzOiJjMmMw YWUwMWVkNGU2MmM0YTY1ZiIsMTA0OiIxNTU1YTFkNTNiMGIzOGRlMmNhMSIsMTA1 OiIwNTY4MDc3NjlkZGNhODFkNzhhNSIsMTA2OiJhNTVmNjNmMWE3OGM3YmZkYjRl NSIsMTA3OiI5ZjQyNGE4NjUwM2YwZTc2N2EzMSIsMTA4OiI5NWI0ZmM2NDczNjEy ZDVmMzNjYSIsMTA5OiI2YTk1OTRmYmIzYjMwNGEyNjM0MyIsMTEwOiIzYjA3Yzky MGUxMmMzNmZmNDQ3MiIsMTExOiIxYjg3ZTNkNWJlNzMwYjgzOTk3MyIsMTEyOiI0 ODZkYzI1Y2RkYzFmZWE3ZjJmNyIsMTEzOiIxODYwMzYyNWU0YzcxNWMyM2U2MSIs MTE0OiI3MGNmZTkxZmEyNWI1ZDdlOWUxMSIsMTE1OiJkOTcyYWM0YzEwZGQ2Yjlm NzI2YSIsMTE2OiI2Mzk5OGYyYzA5ZTE2YmVkZTZjMyIsMTE3OiI3NWI1ODZmZmRm YTUyOGQ1MTU3YiIsMTE4OiI3NzBhZWQ1ZDlhOTk5YTk0NThmNyIsMTE5OiJlMWNh YzdhZDlhODk0MDY1NzBhNSIsMTIwOiIxYmE1MjMyNzQ0NzFmYTc0NmQ0MCIsMTIx OiI4NThkMGY5Y2JmZjRhN2RjMDk5MiIsMTIyOiJjMjk5ZjY5MTdmOWE5YTlhZmVj ZSIsMTIzOiI1MzIzMDI0ZWQ4MmE3ZTg1NjQ3MCIsMTI0OiIxMTRiNDZhNzA2OTY1 Yzc4NDZhMCIsMTI1OiI0ZDU0YWNlMzlkZjA3YjgwNTYxNCIsMTI2OiI5YjQzZDE2 OWY1ZjYxNzBjODExMCIsMTI3OiI3NmU2YzcyYTZiNTUxNDkyNTcyYSIsMTI4OiJj MTU4MzQ2ZWU2ZjJkNDA5ZTM4NiIsMTI5OiI1ZTlhNGQ5MTIwOWFhMDFhMjc0NiIs MTMwOiI5YTBhYjNhNDgzZDJlYmEzNjRlYSIsMTMxOiI3ZTIzZjMyYTk2OTgyNDMy ZDhjMyIsMTMyOiI0M2M3MzY1YjZkMGI1N2E4YjQxZiIsMTMzOiI5YmRhYzY1NmM3 ODg0ZjQ3NzU4MSIsMTM0OiIwMWQ5OGMyMjZmYTAzMDY4YTQ5ZiIsMTM1OiI3YmU0 YWU0Y2U3YzE4ZDlhZmJhOCIsMTM2OiIxZWI0YjJiMDA1Mzc5MTIwNjAyZiIsMTM3 OiI0YTM5Mjg4MTk5MGMzZDVkMjk0NyIsMTM4OiJhMGM5ZmI0ZTA3N2U5MmM2OWEz ZiIsMTM5OiJhNjRkMTc0NmY3YzgwOWJjN2NkNyIsMTQwOiJjNjA4NjdhMzIzYzA0 MzcwM2IxOSIsMTQxOiI5NjJkZGY2NjE3YTJkMThjZjJkMiIsMTQyOiIwZTBmMjQ3 ZjEzOGVkZWRjMWUzYSIsMTQzOiJhMGM2YWI0Zjc0ZjMxODY5ODU5OSIsMTQ0OiJk MWM2Y2Q5MmE0OTVmYmFkODUwNyIsMTQ1OiI4MDc0YTFiMzk3YzMxNzQ1M2RiNSIs MTQ2OiJlMzFhNWI1ZDkzMTg1MzBkMDcyMyIsMTQ3OiJjZDRjOTQzNmUxNWY5YjVk NDRkZCIsMTQ4OiJlMmZlMDJlYjMyMDVmYTllOGViNyIsMTQ5OiI3ZmU2NWMzZWU0 ZTc0ZWEyYzg5ZCIsMTUwOiI2ZmYyYzQ5YTM3ZTIxYTY4NTI4MyIsMTUxOiJlMTMw NTkyOTM1NmMyNjZkNDJiZSIsMTUyOiI3M2Q3MTNkYWM2ODRhNDVhZmJkMSIsMTUz OiIwOWU0OTM4ZDZmN2JmNTRjODAyZCIsMTU0OiJhMjQ4ZWVjOTI3YmEyZDkxNzU2 YSIsMTU1OiI2MjU4OGFjZjEyYTJhYjIxMWJlZCIsMTU2OiJkY2U5N2VmZTZhZjAy YzQzMzFkZiIsMTU3OiJlYTdlNTYwMmQxNDAzMGMxOWM5ZiIsMTU4OiIyODIzM2Vh NTlhMmM5OWRhZTk3NCIsMTU5OiJkOTI0YzIzZWNiNzQ3NjI1YWQ5MyIsMTYwOiJj Y2M5ZGM2OWMyNjkxZTA0ZWY3MCIsMTYxOiI1ZjU1ZDRhNDliNWFkMGE1YjlhYiIs MTYyOiI2ZGM3ZjExMTViZWRiNzA0ZTJlNyIsMTYzOiI1YWYzNDc1ZWIwNmM5M2Qw ZTY2YyIsMTY0OiJkZTY3MGM5ODM0NDIzYmViOTdiNSIsMTY1OiJkN2EzNTJhYzM3 YTY4ZjNjYWIwMyIsMTY2OiJiZjIwMTQ4MGUxOGE5OWY4MDMzMyIsMTY3OiI1ZDM3 N2RmZjNlNGMzYmNkYTY0NSIsMTY4OiIzOGNlMTczYjlmN2M0MTgzZTA2YSIsMTY5 OiI1MmY2OTFiN2ZiYjE2YzQwMWRiMyIsMTcwOiJjMjI1YWFiZTU5ZDM1NDUxYmFi NSIsMTcxOiJmYmIzMjE4ZWNlMzVkZWIwZjMwZCIsMTcyOiJjYTNiOTcyZjJkYjM0 NWY1ZTQ3ZCIsMTczOiIzNzhlYzA2ZTZiNjQ4MjQ5ZTc5NyIsMTc0OiJkN2E4NGI3 NjUwNjgxMDY1NjZlNSIsMTc1OiI0YmEwN2UyNWExYTRiNzgwMDM1YyIsMTc2OiJj MmE2NmJjNzc5NWYyYmE0MjAxOSIsMTc3OiI5NGUzMjg4YzdkYmNmMGE0YWFhNCIs MTc4OiI4MjQ0N2VjMmI4ZjQ2NGI4MGIyMyIsMTc5OiJmYjZlY2UyMWQ5ODI0MmVj MTk1OSIsMTgwOiI0ZjBlYWMyMzM1ZjFlMmYwMzUxNSIsMTgxOiJiNWJiYjEwY2U2 NjQ0MDllN2UxYiIsMTgyOiIxZjI0MWFhNzBiMmIxMTBlOWFhMiIsMTgzOiJkMDc4 ZDk2MjRjMmIyNzgzOTA2YiIsMTg0OiJhZWYwY2FhOWE5ZjY3NDVkODllMiIsMTg1 OiJjNWQ2Y2FiYzkwYTY3MzlkNTk3MSIsMTg2OiIyNjc5ZDJjODJkMmNmYmIxYTFk YSIsMTg3OiJkZjJmMmQ2OTE3Nzk4ZDI5OWEyNyIsMTg4OiI0MWQzNDllYzI2Nzcw MTk1Y2ZkNSIsMTg5OiI3YWEyZDk2ZjkwMjBiOTA4Mzg0NSIsMTkwOiJkMzhjNjZh YTQ4ODJjZjY1MGExMyIsMTkxOiIyMWZmOWQyOTMzMmVhODgzYjBmOCIsMTkyOiI3 OWUzNWYzZTc0ODU1M2JmMDM4OSIsMTkzOiI0NDRmOGI4YTI2M2NiMGE4OGM2OCIs MTk0OiI0ZTZmMzc2ZGE2NTM0NzQxOWU2ZSIsMTk1OiI1Y2RkM2EzODI5MGZmZTAz MWJiOCIsMTk2OiJmMjAwOWY5ZTY3M2JhMGRhMGFlYiIsMTk3OiI3ZDNiOGUzZjRl NjFjMjgwZDRkMyIsMTk4OiIyZDc2OTFmYmY4ZWNiYjVhNTFiYiIsMTk5OiI4NjM0 MDRmZTE0YzE5NWZmYWUzYyIsMjAwOiI2YjY4MDliYmI1NzE5ODk4YzQ4OCIsMjAx OiIzNTM0MTc0MGU2YjY2MTdkNTgyYiIsMjAyOiJhYWIxMGY2NmE1ZTlkODE0YTg4 NyIsMjAzOiI2YTAzOTRiOTVjZTA5Mjk5ZTYxNyIsMjA0OiI3ZGU4MDYxMWQyOGVh OWM0NjU5NyIsMjA1OiI0YzY0ZDQyMzM5ZWZiN2E2ZjNlNyIsMjA2OiJhNTkwZDlh MWRhYTg4YzhmMzZmYiIsMjA3OiI3NGE1ZTAwY2JhYjBmNGRhNjRhMCIsMjA4OiJj ZGYzODM4ZWU3OTUyMTUzMTZlYSIsMjA5OiJmOGFkOWYxZmNlM2FkZmE1NjBkNCIs MjEwOiI0MTRhNDI1ZTdiZGQ4ZjQzZTNjMCIsMjExOiJlMGY2ZTM0ZDdhY2U2ZDVk N2FiOSIsMjEyOiJhZTBkYmUwYzdmOWYyMDJmNzkzYiIsMjEzOiI3YmFlYWRmYmIy MmEwYTYzOWM5NCIsMjE0OiJmN2U2MTMyZjIwNmNjNWExMDRmYSIsMjE1OiIyMTYy MWMwMDY3YjM1MjFiMjQ2NyIsMjE2OiJhNjM4ODJjZjFkOThmOWJiN2I5OCIsMjE3 OiIxNmE4NzRlNjc0NDkzMTdkZDhlNSIsMjE4OiIxZTRmNzFmNWQwMzYzNDk5N2Vj OCIsMjE5OiIzMDQwYzk1ODk2NmRmMGE0NDYxYyIsMjIwOiI2NTIwZTYxMGZiZjlh NDY4N2QwNyIsMjIxOiI0YzNhNzA1MjNlNDhkNTdlNjM5NyIsMjIyOiJiNjFiZjE4 ODBkZWQyMTY0ZDk0MCIsMjIzOiIxOWYyMDgyOTgyNmJhMThhYzNjYyIsMjI0OiI2 NDI4OTQxMGU3ZmI1ODFkZDZlOCIsMjI1OiJhZjYwOGEyOTM3Yzc0ODI2YjlmZiIs MjI2OiI4ZmY0MzNiM2I5YjIxMzA3NTBhZCIsMjI3OiJmOWVkN2JhM2QxODNkMDBk NzNiNiIsMjI4OiJiMDFiYWNmMzAzZTJjZjVjODFhMCIsMjI5OiIzZDZlODkzM2Y3 N2I0NDE1OGZhNSIsMjMwOiIzYWQzOGU0ODZhOTAwZTE3MzI1YyJ9W2VdKyIuanMi LGEuYXBwZW5kQ2hpbGQobyl9fSx0Lm09ZSx0LmM9YSx0LnA9Ii8vczcuYWRkdGhp cy5jb20vc3RhdGljLyIsdCgwKX0oZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUp aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkpc3dp dGNoKHR5cGVvZiBlW3RdKXtjYXNlImZ1bmN0aW9uIjpicmVhaztjYXNlIm9iamVj dCI6ZVt0XT1mdW5jdGlvbih0KXt2YXIgbj10LnNsaWNlKDEpLGE9ZVt0WzBdXTty ZXR1cm4gZnVuY3Rpb24oZSx0LGkpe2EuYXBwbHkodGhpcyxbZSx0LGldLmNvbmNh dChuKSl9fShlW3RdKTticmVhaztkZWZhdWx0OmVbdF09ZVtlW3RdXX1yZXR1cm4g ZX0oW2Z1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxKX0sZnVuY3Rpb24oZSx0 LG4pey8qISBBZGRUaGlzOiBzNy5hZGR0aGlzLmNvbS9zdGF0aWMvbGljZW5zZXMu aHRtbCAqLwp2YXIgYT1uKDIpO2Eod2luZG93LmxvY2F0aW9uLmhyZWYpJiZ3aW5k b3cuaXNBZGRUaGlzVHJhY2tpbmdGcmFtZXx8IWZ1bmN0aW9uKCl7ZnVuY3Rpb24g ZShlLHQsbixhKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnFzfHwodGhpcy5xcz0w KSxfYXRjLnFzKyssdGhpcy5xcysrPjAmJmF8fF9hdGMucXM+MWUzfHwhcy5hZGR0 aGlzfHxvKHtjYWxsOmUsYXJnczphcmd1bWVudHMsbnM6dCxjdHg6bn0pfX1mdW5j dGlvbiB0KGUpe3ZhciB0PXRoaXMsbj10aGlzLnF1ZXVlPVtdO3RoaXMubmFtZT1l LHRoaXMuY2FsbD1mdW5jdGlvbigpe24ucHVzaChhcmd1bWVudHMpfSx0aGlzLmNh bGwucXVldWVyPXRoaXMsdGhpcy5mbHVzaD1mdW5jdGlvbihlLGEpe3RoaXMuZmx1 c2hlZD0xO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKWUuYXBwbHkoYXx8dCxu W2ldKTtyZXR1cm4gZX19ZnVuY3Rpb24gYShlKXtlJiYhKGUuZGF0YXx8e30pLmFk ZHRoaXN4ZiYmcy5hZGR0aGlzJiYoYWRkdGhpcy5fcG1oLmZsdXNoZWQ/X2F0ZS5w bWgoZSk6YWRkdGhpcy5fcG1oLmNhbGwoZSkpfXZhciBpLG89bigzKSxyPW4oNSks cz13aW5kb3csZD1kb2N1bWVudDsocy5fYXRjfHx7fSkudmVyfHwocy5fYXRkPSJ3 d3cuYWRkdGhpcy5jb20vIixzLl9ldWM9ZW5jb2RlVVJJQ29tcG9uZW50LHMuX2R1 Yz1kZWNvZGVVUklDb21wb25lbnQscy5fYXRjPXtkYmc6MCxkcjowLHZlcjozMDAs cmV2OiJ2OC4zLjI2LXdwIixsb2M6MCxlbm90ZToiIixjd2FpdDo1MDAsYmFtcDou MjUsZmFtcDouMDEsbHRqOjEsYWJmOiExLHFzOjAsY2RuOjAscnNyY3M6e2Jvb2tt YXJrOiJzdGF0aWMvYm9va21hcmsuaHRtbCIsbGlua2VkaW46InN0YXRpYy9saW5r ZWRpbi5odG1sIixwaW5pdDoic3RhdGljL3Bpbml0Lmh0bWwiLGZic2hhcmU6InN0 YXRpYy9mYnNoYXJlLmh0bWwiLHR3ZWV0OiJzdGF0aWMvdHdlZXQuaHRtbCJ9fSks cy5fYXRyPSIvL3M3LmFkZHRoaXMuY29tLyI7Zm9yKHZhciB1IGluIHMuX2F0Yy5y c3JjcylpZihzLl9hdGMucnNyY3MuaGFzT3duUHJvcGVydHkodSkpe3ZhciBjPXMu X2F0Yy5yc3Jjc1t1XTtjLmluZGV4T2YoX2F0cik9PT0tMSYmKHMuX2F0Yy5yc3Jj c1t1XT1fYXRyK2MpfXZhciBsPWQuYm9keXx8ZC5nZXRFbGVtZW50c0J5VGFnTmFt ZSgiaGVhZCIpWzBdO2lmKCFzLmFkZHRoaXN8fHMuYWRkdGhpcy5ub2RlVHlwZSE9 PWkpe2lmKHMuYWRkdGhpcz17b3N0OjAsY2FjaGU6e30scGxvOltdLGxpbmtzOltd LGVtczpbXSx0aW1lcjp7bG9hZDoobmV3IERhdGUpLmdldFRpbWUoKX0sX1F1ZXVl cjp0LF9xdWV1ZUZvcjplLGRhdGE6e2dldFNoYXJlQ291bnQ6ZSgiZ2V0U2hhcmVD b3VudCIsImRhdGEiKX0sbGF5ZXJzOmUoImxheWVycyIpLGNvbmZpZ3VyZTpmdW5j dGlvbihlKXtzLmFkZHRoaXNfY29uZmlnfHwocy5hZGR0aGlzX2NvbmZpZz17fSks cy5hZGR0aGlzX3NoYXJlfHwocy5hZGR0aGlzX3NoYXJlPXt9KTtmb3IodmFyIHQg aW4gZSlpZigic2hhcmUiPT09dCYmIm9iamVjdCI9PXR5cGVvZiBlW3RdKWZvcih2 YXIgbiBpbiBlW3RdKWVbdF0uaGFzT3duUHJvcGVydHkobikmJihhZGR0aGlzLm9z dD9hZGR0aGlzLnVwZGF0ZSgic2hhcmUiLG4sZVt0XVtuXSk6cy5hZGR0aGlzX3No YXJlW25dPWVbdF1bbl0pO2Vsc2UgZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKGFkZHRo aXMub3N0P2FkZHRoaXMudXBkYXRlKCJjb25maWciLHQsZVt0XSk6cy5hZGR0aGlz X2NvbmZpZ1t0XT1lW3RdKX0sYnV0dG9uOmUoImJ1dHRvbiIpLGNvdW50ZXI6ZSgi Y291bnRlciIpLGNvdW50OmUoImNvdW50IiksdG9vbGJveDplKCJ0b29sYm94Iiks dXBkYXRlOmUoInVwZGF0ZSIpLGluaXQ6ZSgiaW5pdCIpLGFkOntldmVudDplKCJl dmVudCIsImFkIiksZ2V0UGl4ZWxzOmUoImdldFBpeGVscyIsImFkIil9LHV0aWw6 e2dldFNlcnZpY2VOYW1lOmUoImdldFNlcnZpY2VOYW1lIil9LHJlYWR5OmUoInJl YWR5IiksYWRkRXZlbnRMaXN0ZW5lcjplKCJhZGRFdmVudExpc3RlbmVyIiwiZWQi LCJlZCIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6ZSgicmVtb3ZlRXZlbnRMaXN0ZW5l ciIsImVkIiwiZWQiKSx1c2VyOntnZXRJRDplKCJnZXRJRCIsInVzZXIiKSxnZXRH ZW9sb2NhdGlvbjplKCJnZXRHZW9sb2NhdGlvbiIsInVzZXIiLG51bGwsITApLGdl dFByZWZlcnJlZFNlcnZpY2VzOmUoImdldFByZWZlcnJlZFNlcnZpY2VzIiwidXNl ciIsbnVsbCwhMCksZ2V0U2VydmljZVNoYXJlSGlzdG9yeTplKCJnZXRTZXJ2aWNl U2hhcmVIaXN0b3J5IiwidXNlciIsbnVsbCwhMCkscmVhZHk6ZSgicmVhZHkiLCJ1 c2VyIiksaXNSZXR1cm5pbmc6ZSgiaXNSZXR1cm5pbmciLCJ1c2VyIiksaXNPcHRl ZE91dDplKCJpc09wdGVkT3V0IiwidXNlciIpLGlzVXNlck9mOmUoImlzVXNlck9m IiwidXNlciIpLGhhc0ludGVyZXN0OmUoImhhc0ludGVyZXN0IiwidXNlciIpLGlz TG9jYXRlZEluOmUoImlzTG9jYXRlZEluIiwidXNlciIpLGludGVyZXN0czplKCJn ZXRJbnRlcmVzdHMiLCJ1c2VyIiksc2VydmljZXM6ZSgiZ2V0U2VydmljZXMiLCJ1 c2VyIiksbG9jYXRpb246ZSgiZ2V0TG9jYXRpb24iLCJ1c2VyIil9LHNlc3Npb246 e3NvdXJjZTplKCJnZXRTb3VyY2UiLCJzZXNzaW9uIiksaXNTb2NpYWw6ZSgiaXNT b2NpYWwiLCJzZXNzaW9uIiksaXNTZWFyY2g6ZSgiaXNTZWFyY2giLCJzZXNzaW9u Iil9LF9wbWg6bmV3IHQoInBtaCIpLF9wbWw6W119LHIoImllOCIpfHxyKCJpZTki KSlyZXR1cm47dmFyIGY9big2KSxwPW4oNjk1KSxoPW4oNjkwKS5zZWxlY3QsbT1u KDY5NiksZz1uKDMyKSxfPW4oNjk3KSx2PW4oNTYyKSxiPW4oNjk4KSx3PW4oMjMp Lmxpc3Rlbix4PW4oNjA5KSx5PWcoImFkZHRoaXNfd2lkZ2V0Iik7aWYoeS5wcm92 aWRlcnx8eS51c2VyYXBpKXt2YXIgaz1uKDY5OSksQz1uKDcwMCksTT1uKDcwNCks QT1fKHkpLE89YihBKTtsLmFwcGVuZENoaWxkKEEpLHkudXNlcmFwaSYmKHMuYWRk dGhpcy5Vc2VyQVBJPW5ldyBrKCJ1c2VyIixDLm1ldGhvZHMsQy5vblJlYWR5LE0p KSx5LnByb3ZpZGVyJiYocy5hZGR0aGlzLlByb3ZpZGVyQVBJPW5ldyBPKCJwcm92 aWRlciIpKX1pZigheS5oZWFkbGVzcyl7aWYoZC5sb2NhdGlvbi5ocmVmLmluZGV4 T2YoX2F0cik9PT0tMSl7dmFyIEU9ZC5nZXRFbGVtZW50QnlJZCgiX2F0c3NoIik7 aWYoRXx8KEU9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxFLnN0eWxlLnZpc2liaWxp dHk9ImhpZGRlbiIsRS5pZD0iX2F0c3NoIix2KEUpLGwuYXBwZW5kQ2hpbGQoRSkp LHMucG9zdE1lc3NhZ2UmJih3KHMsIm1lc3NhZ2UiLGEpLGFkZHRoaXMuX3BtbC5w dXNoKGEpKSwhRS5maXJzdENoaWxkKXt2YXIgUyxJPU1hdGguZmxvb3IoMWUzKk1h dGgucmFuZG9tKCkpO1M9ZC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxTLmlkPSJf YXRzc2giK0ksUy50aXRsZT0iQWRkVGhpcyB1dGlsaXR5IGZyYW1lIixFLmFwcGVu ZENoaWxkKFMpLHYoUyksUy5mcmFtZWJvcmRlcj1TLnN0eWxlLmJvcmRlcj0wLFMu c3R5bGUudG9wPVMuc3R5bGUubGVmdD0wLF9hdGMuX2F0Zj1TfX1mb3IodmFyIFQs TixqLEQ9LTEsej17c2hhcmU6InNtbHNoLTEuMCIsZm9sbG93OiJzbWxmdy0xLjAi LHJlY29tbWVuZGVkOiJzbWxyZS0xLjAiLHdoYXRzbmV4dDoic21sd24tMS4wIixy ZWNvbW1lbmRlZGJveDoic21scmViLTEuMCJ9LEw9ITE7KytEPGFkZHRoaXMucGxv Lmxlbmd0aDspaWYoTj1hZGR0aGlzLnBsb1tEXSwibGF5ZXJzIj09PU4uY2FsbCl7 aj1OLmFyZ3NbMF07Zm9yKFQgaW4gail6W1RdJiZfYXRlLnRyYWNrLmFwYyh6W1Rd KTtfYXRlLnRyYWNrLmFwYygic21sLTEuMCIpfW0uYXBwZW5kKGZ1bmN0aW9uKCl7 dmFyIGU9eyIuYWRkdGhpcy1yZWNvbW1lbmRlZGJveCI6InJlY29tbWVuZGVkYm94 In07Zm9yKHZhciB0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49 aCh0KSxhPXt9O24ubGVuZ3RoJiYoYVtlW3RdXT0hMCxhLnBpPSExLGFkZHRoaXMu bGF5ZXJzKGEpLEw9ITApfUwmJmFkZHRoaXMubGF5ZXJzKHtwaWk6ITB9KX0pLGFk ZHRoaXMubGF5ZXJzPWZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNs aWNlLmNhbGwoYXJndW1lbnRzLDApO3guc2V0TW9kdWxlTG9hZGVkKCJtZW51Iiks bi5lKDIyOCxmdW5jdGlvbigpe24oNjEwKSxuKDgzMyksbig4NDEpLG4oODQ0KSxu KDg0Nyksbig4NTApLG4oODU2KSxuKDg1OSksbig4NjApLG4oODYzKSxuKDgzOCks big4MzYpLG4oODY2KSxuKDg2OSksbig4NzIpLG4oODc1KSxuKDg3OCksbig4ODEp LG4oODg1KSxuKDg4OCksbig4OTYpLG4oODk5KSxuKDkwNCksbig4MDcpKGZ1bmN0 aW9uKCl7big4MDQpLGFkZHRoaXMubGF5ZXJzLmFwcGx5KGFkZHRoaXMsZSl9KX0p fSxhZGR0aGlzLm1lc3NhZ2VzPWYsYWRkdGhpcy5ldmVudHM9cCxhZGR0aGlzLm1l bnU9ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh cmd1bWVudHMsMCk7eC5sb2FkTWVudShmdW5jdGlvbigpe3dpbmRvdy5fYXRlJiZ3 aW5kb3cuX2F0ZS5tZW51JiZ3aW5kb3cuX2F0ZS5tZW51Lm9wZW4mJndpbmRvdy5f YXRlLm1lbnUub3Blbi5hcHBseSh3aW5kb3cuX2F0ZS5tZW51LGUpfSl9LGFkZHRo aXMubWVudS5jbG9zZT1mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5z bGljZS5jYWxsKGFyZ3VtZW50cywwKTt4LmxvYWRNZW51KGZ1bmN0aW9uKCl7d2lu ZG93Ll9hdGUmJndpbmRvdy5fYXRlLm1lbnUmJndpbmRvdy5fYXRlLm1lbnUuY2xv c2UmJndpbmRvdy5fYXRlLm1lbnUuY2xvc2UuYXBwbHkod2luZG93Ll9hdGUubWVu dS5jbG9zZSxlKX0pfSxhZGR0aGlzLnNoYXJlY291bnRlcnM9e2dldFNoYXJlQ291 bnRzOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO24uZSgyMjksZnVuY3Rpb24o KXtuKDkwNSksYWRkdGhpcy5zaGFyZWNvdW50ZXJzLmdldFNoYXJlQ291bnRzLmFw cGx5KGFkZHRoaXMuc2hhcmVjb3VudGVycyxlKX0pfX07dmFyIFI9ZnVuY3Rpb24o KXt2YXIgZT1hcmd1bWVudHM7bi5lKDIzMCxmdW5jdGlvbigpe24oOTA1KSxuKDkw NiksYWRkdGhpcy5jb3VudGVyLmFwcGx5KGFkZHRoaXMuc2hhcmVjb3VudGVycyxl KX0pfSxQPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4sYSl7dmFyIGk9 aCh0KTtpLmxlbmd0aCYmZShpLG4sYSl9fTthZGR0aGlzLmNvdW50PVAoUiksYWRk dGhpcy5jb3VudGVyPVAoUiksYWRkdGhpcy5kYXRhLmdldFNoYXJlQ291bnQ9Uixu KDcwNyl9fX0oKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7 cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYvaHR0cHM/OlwvXC9bXj8jXSo/XC5h ZGR0aGlzXC5jb20vLnRlc3QoZSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9big0 KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7YSgpLnB1c2goZSl9fSxmdW5jdGlvbihl LHQpe3ZhciBuO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBufHwod2luZG93 LmFkZHRoaXM/KHdpbmRvdy5hZGR0aGlzLnBsb3x8KHdpbmRvdy5hZGR0aGlzLnBs bz1bXSksbj13aW5kb3cuYWRkdGhpcy5wbG8pOiJ1bmRlZmluZWQiIT10eXBlb2Yg X2F0ZSYmKF9hdGUucGxvfHwoX2F0ZS5wbG89W10pLG49X2F0ZS5wbG8pKSxufX0s ZnVuY3Rpb24oZSx0KXt2YXIgbj1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJD YXNlKCksYT17d2luOmZ1bmN0aW9uKGUpe3JldHVybi93aW5kb3dzLy50ZXN0KGUp fSx4cDpmdW5jdGlvbihlKXtyZXR1cm4vd2luZG93cyBudCA1LjEvLnRlc3QoZSl8 fC93aW5kb3dzIG50IDUuMi8udGVzdChlKX0sb3N4OmZ1bmN0aW9uKGUpe3JldHVy bi9vcyB4Ly50ZXN0KGUpfSxjaGI6ZnVuY3Rpb24oZSl7cmV0dXJuL2Nocm9tZS8u dGVzdChlKSYmcGFyc2VJbnQoL2Nocm9tZVwvKC4rPylcLi8uZXhlYyhlKS5wb3Ao KSwxMCk+MTMmJiFhLm1zZWRnZShlKX0sY2hyOmZ1bmN0aW9uKGUpe3JldHVybi9j aHJvbWUvLnRlc3QoZSkmJiEvcm9ja21lbHQvLnRlc3QoZSkmJiFhLm1zZWRnZShl KX0saXBoOmZ1bmN0aW9uKGUpe3JldHVybi9pcGhvbmUvLnRlc3QoZSl8fC9pcG9k Ly50ZXN0KGUpfSxkcm86ZnVuY3Rpb24oZSl7cmV0dXJuL2FuZHJvaWQvLnRlc3Qo ZSl9LHdwaDpmdW5jdGlvbihlKXtyZXR1cm4vd2luZG93cyBwaG9uZS8udGVzdChl KX0sYmIxMDpmdW5jdGlvbigpe3JldHVybi9iYjEwLy50ZXN0KG4pfSxpcGE6ZnVu Y3Rpb24oZSl7cmV0dXJuL2lwYWQvLnRlc3QoZSl9LHNhZjpmdW5jdGlvbihlKXty ZXR1cm4vc2FmYXJpLy50ZXN0KGUpJiYhL2Nocm9tZS8udGVzdChlKX0sb3ByOmZ1 bmN0aW9uKGUpe3JldHVybi9vcGVyYS8udGVzdChlKX0sZmZ4OmZ1bmN0aW9uKGUp e3JldHVybi9maXJlZm94Ly50ZXN0KGUpfSxmZjI6ZnVuY3Rpb24oZSl7cmV0dXJu L2ZpcmVmb3hcLzIvLnRlc3QoZSl9LGZmbjpmdW5jdGlvbihlKXtyZXR1cm4vZmly ZWZveFwvKCgzLls2Nzg5XVswLTlhLXpdKil8KDQuWzAtOWEtel0qKSkvLnRlc3Qo ZSl9LGllNjpmdW5jdGlvbihlKXtyZXR1cm4vbXNpZSA2XC4wLy50ZXN0KGUpfSxp ZTc6ZnVuY3Rpb24oZSl7cmV0dXJuL21zaWUgN1wuMC8udGVzdChlKX0saWU4OmZ1 bmN0aW9uKGUpe3JldHVybi9tc2llIDhcLjAvLnRlc3QoZSl9LGllOTpmdW5jdGlv bihlKXtyZXR1cm4vbXNpZSA5XC4wLy50ZXN0KGUpfSxpZTEwOmZ1bmN0aW9uKGUp e3JldHVybi9tc2llIDEwXC4wLy50ZXN0KGUpfSxpZTExOmZ1bmN0aW9uKGUpe3Jl dHVybi90cmlkZW50XC83XC4wLy50ZXN0KGUpfSxtc2VkZ2U6ZnVuY3Rpb24oZSl7 cmV0dXJuL2VkZ2VcL1xkK1wuLy50ZXN0KGUpfSxtc2k6ZnVuY3Rpb24oZSl7cmV0 dXJuL21zaWUvLnRlc3QoZSkmJiEvb3BlcmEvLnRlc3QoZSl9LG1vYjpmdW5jdGlv bihlKXtyZXR1cm4hKCF3aW5kb3cuYWRkdGhpc19jb25maWd8fCF3aW5kb3cuYWRk dGhpc19jb25maWcuX2ZvcmNlQ2xpZW50TW9iaWxlKXx8L21vYmlsZXxpcChob25l fG9kfGFkKXxhbmRyb2lkfGJsYWNrYmVycnl8aWVtb2JpbGV8a2luZGxlfG5ldGZy b250fHNpbGstYWNjZWxlcmF0ZWR8KGhwd3x3ZWIpb3N8ZmVubmVjfG1pbmltb3xv cGVyYSBtKG9iaXxpbmkpfGJsYXplcnxkb2xmaW58ZG9scGhpbnxza3lmaXJlfHp1 bmUvLnRlc3QoZSl9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10 P3QudG9Mb3dlckNhc2UoKTpuLGFbZV0odCl9O2Zvcih2YXIgaSBpbiBhKWlmKGEu aGFzT3duUHJvcGVydHkoaSkpe3ZhciBvPWFbaV07ZS5leHBvcnRzW2ldPW8obil9 IWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY29tcGF0TW9kZSxuPTE7IkJhY2tD b21wYXQiPT09dD9uPTI6IkNTUzFDb21wYXQiPT09dCYmKG49MCksZS5leHBvcnRz Lm1vZGU9bixlLmV4cG9ydHMubXNpJiYoZS5leHBvcnRzLm1vZD1uKX0oKX0sZnVu Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBl JiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUpe24uZSgx LGZ1bmN0aW9uKCl7dmFyIHQ9bigzNTcpLGE9bigzNjApO2d8fChuKDY5Mykuc2V0 dXAoKSxuKDIyKS5zZXR1cCgpLG4oMjQpLnNldHVwKCksbigyNSksbigzNDgpLG4o MzUxKSxhLmluY3JlbWVudFBhZ2VWaWV3cygpLGc9ITApLG0uZGVmYXVsdChmdW5j dGlvbigpe3AuZGVmYXVsdC5vblJlYWR5KGZ1bmN0aW9uKCl7dC5jcmVhdGVDdXN0 b21NZXNzYWdlcyhlLGEpfSl9KX0pfWZ1bmN0aW9uIG8oZSl7bi5lKDIyNCxmdW5j dGlvbigpe3ZhciB0PW4oNjk0KTtnfHwobigyNSksbigzNDgpLG4oMzUxKSxnPSEw KSxtLmRlZmF1bHQoZnVuY3Rpb24oKXtwLmRlZmF1bHQub25SZWFkeShmdW5jdGlv bigpe3Quc2V0Q3VzdG9tTWVzc2FnZXMoZSl9KX0pfSl9dC5fX2VzTW9kdWxlPSEw O3ZhciByPW4oNykscz1hKHIpLGQ9big1KSx1PWEoZCksYz1uKDEzKSxsPWEoYyks Zj1uKDE0KSxwPWEoZiksaD1uKDE3KSxtPWEoaCksZz0hMSxfPWZ1bmN0aW9uKGUs dCl7cmV0dXJuIHUuZGVmYXVsdCgiaWU4Iik/KGwuZGVmYXVsdC5lcnJvcigiQWRk VGhpcyBjdXN0b20gbWVzc2FnZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSUU4Iiks ITEpOnZvaWQodD9vKGUpOmkoZSkpfTtzLmRlZmF1bHQoXywibWVzc2FnZXMiKSx0 LmRlZmF1bHQ9XyxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7 InVzZSBzdHJpY3QiO3ZhciBhPW4oOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7 dmFyIG49ImFkZHRoaXMuIit0KyIuIjthKGUse29uOmZ1bmN0aW9uKGUsdCl7YWRk dGhpcy5lZC5hZGRFdmVudExpc3RlbmVyKG4rZSx0KX0sb2ZmOmZ1bmN0aW9uKGUs dCl7YWRkdGhpcy5lZC5yZW1vdmVFdmVudExpc3RlbmVyKG4rZSx0KX0sb25jZTpm dW5jdGlvbihlLHQpe2FkZHRoaXMuZWQub25jZShuK2UsdCl9LF9maXJlOmZ1bmN0 aW9uKGUsdCxhKXthZGR0aGlzLmVkLmZpcmUobitlLHQsYSl9fSl9fSxmdW5jdGlv bihlLHQsbil7dmFyIGE9big5KSxpPW4oMTApLG89bigxMSkuYXJyYXk7ZS5leHBv cnRzPWZ1bmN0aW9uIGUodCxuLHIpe3ZhciBzO2lmKCJib29sZWFuIiE9dHlwZW9m IHQ/KHM9aShhcmd1bWVudHMsMSksbj10LHQ9ITEpOnM9aShhcmd1bWVudHMsMiks bil7aWYoIXNbMF0pe2lmKHNbMF09bi5vYmplY3R8fG4ub2JqLCFzWzBdKXJldHVy biBuO249bi5zdWJqZWN0fHxuLnN1Ymp9cmV0dXJuIGEocyxmdW5jdGlvbihuLGkp e3ZhciByPSExO3RyeXtKU09OLnN0cmluZ2lmeShpKX1jYXRjaChlKXtyPSEwfXJl dHVybiBhKGksZnVuY3Rpb24obixhLGkpe2lmKG4pcmV0dXJuIHJ8fCF0fHwib2Jq ZWN0IiE9dHlwZW9mIGF8fHZvaWQgMD09YT9uW2ldPWE6bltpXT1lKCEwLG8oYSk/ W106e30sYSksbn0sbil9LG4pfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1 bmN0aW9uKGUsdCxuLGEpe2lmKCFlKXJldHVybiBuO2lmKGUgaW5zdGFuY2VvZiBB cnJheSlmb3IodmFyIGk9MCxvPWUubGVuZ3RoLHI9ZVswXTtpPG87cj1lWysraV0p bj10LmNhbGwoYXx8ZSxuLHIsaSxlKTtlbHNlIGZvcih2YXIgcyBpbiBlKWUgaW5z dGFuY2VvZiBPYmplY3Q/ZS5oYXNPd25Qcm9wZXJ0eShzKSYmKG49dC5jYWxsKGF8 fGUsbixlW3NdLHMsZSkpOnZvaWQgMCE9PWVbc10mJihuPXQuY2FsbChhfHxlLG4s ZVtzXSxzLGUpKTtyZXR1cm4gbn19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1 bmN0aW9uKGUpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZTtyZXR1cm4gdC5h cHBseShlLHQuY2FsbChhcmd1bWVudHMsMSkpfX0sZnVuY3Rpb24oZSx0LG4pe2Z1 bmN0aW9uIGEoZSl7cmV0dXJuIGU9PT1PYmplY3QoZSl9ZnVuY3Rpb24gaShlKXty ZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu Zy5jYWxsKGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlpZihlLmhh c093blByb3BlcnR5KHQpKXJldHVybiExO3JldHVybiEwfXZhciByPW4oMTIpLHM9 e307WyJBcmd1bWVudHMiLCJGdW5jdGlvbiIsIlN0cmluZyIsIk51bWJlciIsIkRh dGUiLCJSZWdFeHAiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3NbZS50b0xvd2VyQ2Fz ZSgpXT1mdW5jdGlvbih0KXtyZXR1cm4gcih0KT09PSJbb2JqZWN0ICIrZSsiXSJ9 fSkscy5mdW5jdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl b2YgZX0sZS5leHBvcnRzPXtzdHJpbmc6cy5zdHJpbmcsZnVuY3Rpb246cy5mdW5j dGlvbixudW1iZXI6cy5udW1iZXIsZW1wdHlPYmo6byxvYmplY3Q6YSxhcnJheTpB cnJheS5pc0FycmF5fHxpfX0sZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3QucHJv dG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbi5j YWxsKGUpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhLGk9d2luZG93LG89aS5jb25z b2xlLHI9MCxzPSFvfHwidW5kZWZpbmVkIj09dHlwZW9mIG8ubG9nLGQ9KEFycmF5 LnByb3RvdHlwZS5zbGljZSxbImVycm9yIiwid2FybiIsImluZm8iLCJkZWJ1ZyJd KSx1PWQubGVuZ3RoO3RyeXshcyYmaS5sb2NhdGlvbi5oYXNoLmluZGV4T2YoImF0 bG9nPTEiKT4tMSYmKHI9MSl9Y2F0Y2goZSl7fWZvcihhPXtsZXZlbDpyfTstLXU+ PTA7KSFmdW5jdGlvbihlLHQpe2FbdF09cz9mdW5jdGlvbigpe306ZnVuY3Rpb24o KXt9fSh1LGRbdV0pO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBz dHJpY3QiO2Z1bmN0aW9uIGEoKXt0aGlzLmluaXRpYWxpemVkPSExLHRoaXMubG9j YXRpb249bnVsbCx0aGlzLnJlYWR5Q2FsbGJhY2tzPVtdfXZhciBpPW4oMTUpLmRl Y29kZUdlbzthLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oZSl7aWYoIXRoaXMu aW5pdGlhbGl6ZWQpe3RoaXMuaW5pdGlhbGl6ZWQ9ITA7dmFyIHQ9dGhpcztlLmVk LmFkZEV2ZW50TGlzdGVuZXIoImFkZHRoaXMubG9qc29uLnJlc3BvbnNlIixmdW5j dGlvbihlKXt0LnNldChlLmRhdGEubG9jKX0pfX0sZ2V0OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubG9jYXRpb259LHNldDpmdW5jdGlvbihlKXt0aGlzLmxvY2F0aW9u PWkoZSk7Zm9yKHZhciB0PTA7dDx0aGlzLnJlYWR5Q2FsbGJhY2tzLmxlbmd0aDt0 KyspdGhpcy5yZWFkeUNhbGxiYWNrc1t0XSh0aGlzLmxvY2F0aW9uKX0sbG9hZGVk OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmxvY2F0aW9ufSxvblJlYWR5OmZ1bmN0 aW9uKGUpe3JldHVybiB0aGlzLmxvYWRlZCgpP2UodGhpcy5sb2NhdGlvbik6dm9p ZCB0aGlzLnJlYWR5Q2FsbGJhY2tzLnB1c2goZSl9fSxlLmV4cG9ydHM9bmV3IGF9 LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1 cm4gZT8oZS5pbmRleE9mKCIlIik+LTEmJihlPXdpbmRvdy5kZWNvZGVVUklDb21w b25lbnQoZSkpLGUuaW5kZXhPZigiLCIpPi0xJiYoZT1lLnNwbGl0KCIsIilbMV0p LGU9cy5hdG9iKGUpKToiIn1mdW5jdGlvbiBpKGUpe3ZhciB0LG4sYT17fTtyZXR1 cm4gZT1lLnRvVXBwZXJDYXNlKCksYS56aXA9ZS5zdWJzdHJpbmcoMCw1KSxhLmNv bnRpbmVudD1lLnN1YnN0cmluZyg1LDcpLGEuY291bnRyeT1lLnN1YnN0cmluZyg3 LDkpLGEucHJvdmluY2U9ZS5zdWJzdHJpbmcoOSwxMSksdD1lLnN1YnN0cmluZygx MSwxNSksIjAwMDAiIT09dCYmKGEubGF0PShwYXJzZUludCh0KS8xMC0xODApLnRv Rml4ZWQoMSkpLG49ZS5zdWJzdHJpbmcoMTUsMTkpLCIwMDAwIiE9PW4mJihhLmxv bj0ocGFyc2VJbnQobikvMTAtMTgwKS50b0ZpeGVkKDEpKSxhLmRtYT1lLnN1YnN0 cmluZygxOSwyMiksYS5tc2E9ZS5zdWJzdHJpbmcoMjIsMjYpLGEubmV0d29ya1R5 cGU9ZS5zdWJzdHJpbmcoMjYsMjcpLGEudGhyb3VnaHB1dD1lLnN1YnN0cmluZygy NywyOCksYX1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIGUudG9VcHBlckNhc2UoKS5z cGxpdCgiLCIpLnNvbWUoZnVuY3Rpb24oZSl7dmFyIG49ZS50cmltKCk7cmV0dXJu IHQuemlwPT09bnx8dC5jb250aW5lbnQ9PT1ufHx0LmNvdW50cnk9PT1ufHx0LnBy b3ZpbmNlPT09bn0pfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5 KGUpfXZhciBzPW4oMTYpO2UuZXhwb3J0cz17ZGVjb2RlR2VvOmEscGFyc2VHZW86 aSxpc0xvY2F0ZWRJbjpvLHRvU3RyaW5nOnJ9fSxmdW5jdGlvbihlLHQpe2Z1bmN0 aW9uIG4oZSl7Zm9yKHZhciB0LG4sYSxpLG8scyxkLHU9IiIsYz0wO2M8ZS5sZW5n dGg7KXQ9ZS5jaGFyQ29kZUF0KGMrKyksbj1lLmNoYXJDb2RlQXQoYysrKSxhPWUu Y2hhckNvZGVBdChjKyspLGk9dD4+MixvPSgzJnQpPDw0fG4+PjQscz0oMTUmbik8 PDJ8YT4+NixkPTYzJmEsaXNOYU4obik/cz1kPTY0OmlzTmFOKGEpJiYoZD02NCks dSs9ci5jaGFyQXQoaSkrci5jaGFyQXQobykrci5jaGFyQXQocykrci5jaGFyQXQo ZCk7cmV0dXJuIHV9ZnVuY3Rpb24gYShlKXt2YXIgdCxuLGEsaSxvLHMsZCx1PSIi LGM9MDtmb3IoZT1lLnJlcGxhY2UoL1teQS1aYS16MC05XC1fXD1dL2csIiIpO2M8 ZS5sZW5ndGg7KWk9ci5pbmRleE9mKGUuY2hhckF0KGMrKykpLG89ci5pbmRleE9m KGUuY2hhckF0KGMrKykpLHM9ci5pbmRleE9mKGUuY2hhckF0KGMrKykpLGQ9ci5p bmRleE9mKGUuY2hhckF0KGMrKykpLHQ9aTw8MnxvPj40LG49KDE1Jm8pPDw0fHM+ PjIsYT0oMyZzKTw8NnxkLHUrPVN0cmluZy5mcm9tQ2hhckNvZGUodCksNjQhPXMm Jih1Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSw2NCE9ZCYmKHUrPVN0cmluZy5m cm9tQ2hhckNvZGUoYSkpO3JldHVybiB1fWZ1bmN0aW9uIGkoZSl7dmFyIHQsbixh LGksbyxzPSIiLGQ9MDtpZigvXlswLTlhLWZBLUZdKyQvLnRlc3QoZSkpZm9yKDtk PGUubGVuZ3RoOyl0PXBhcnNlSW50KGUuY2hhckF0KGQrKyksMTYpLG49cGFyc2VJ bnQoZS5jaGFyQXQoZCsrKSwxNiksYT1wYXJzZUludChlLmNoYXJBdChkKyspLDE2 KSxpPXQ8PDJ8KGlzTmFOKGEpPzMmbjpuPj4yKSxvPSgzJm4pPDw0fGEscys9ci5j aGFyQXQoaSkrKGlzTmFOKGEpPyIiOnIuY2hhckF0KG8pKTtyZXR1cm4gc31mdW5j dGlvbiBvKGUpe2Zvcih2YXIgdCxuLGEsaSxvLHM9IiIsZD0wO2Q8ZS5sZW5ndGg7 KWk9ci5pbmRleE9mKGUuY2hhckF0KGQrKykpLG89ZD49ZS5sZW5ndGg/TmFOOnIu aW5kZXhPZihlLmNoYXJBdChkKyspKSx0PWk+PjIsbj1pc05hTihvKT8zJmk6KDMm aSk8PDJ8bz4+NCxhPTE1Jm8scys9dC50b1N0cmluZygxNikrbi50b1N0cmluZygx NikrKGlzTmFOKG8pPyIiOmEudG9TdHJpbmcoMTYpKTtyZXR1cm4gc312YXIgcj0i QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2 d3h5ejAxMjM0NTY3ODktXz0iLHM9d2luZG93O2UuZXhwb3J0cz17YXRvYjpzLmF0 b2I/ZnVuY3Rpb24oKXtyZXR1cm4gcy5hdG9iLmFwcGx5KHMsYXJndW1lbnRzKX06 YSxidG9hOnMuYnRvYT9mdW5jdGlvbigpe3JldHVybiBzLmJ0b2EuYXBwbHkocyxh cmd1bWVudHMpfTpuLGhidG9hOmksYXRvaGI6b319LGZ1bmN0aW9uKGUsdCxuKXt2 YXIgYT1uKDE4KSxpPW4oMjEpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQpe3ZhciBu PXdpbmRvdy5hZGR0aGlzX3RyYW5zbGF0aW9ucztpKHQgaW5zdGFuY2VvZiBGdW5j dGlvbiwiY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIiksMD09PWEoKS5pbmRl eE9mKCJlbiIpP3QoKTpuP3Qobik6c2V0VGltZW91dChmdW5jdGlvbigpe2UodCl9 LDEwMCl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPW4oMTkp LGk9big1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZSx0LG47YSh3aW5kb3cu YWRkdGhpc19sYW5ndWFnZSk/ZT13aW5kb3cuYWRkdGhpc19sYW5ndWFnZTp3aW5k b3cuYWRkdGhpc19jb25maWcmJmEod2luZG93LmFkZHRoaXNfY29uZmlnLnVpX2xh bmd1YWdlKT9lPXdpbmRvdy5hZGR0aGlzX2NvbmZpZy51aV9sYW5ndWFnZTp3aW5k b3cuYWRkdGhpc19jb25maWcmJmEod2luZG93LmFkZHRoaXNfY29uZmlnLmxhbmcp P2U9d2luZG93LmFkZHRoaXNfY29uZmlnLmxhbmc6YShkb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQubGFuZykmJihlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5n KTt2YXIgbz1hKGUpO3JldHVybiAxPT09bz9uPWU6InN0cmluZyI9PXR5cGVvZiBv JiYobj1vKSxufHwodD1pKCJtc2kiKT9uYXZpZ2F0b3IudXNlckxhbmd1YWdlOm5h dmlnYXRvci5sYW5ndWFnZSxvPWEodCksMT09PW8/bj10OiJzdHJpbmciPT10eXBl b2YgbyYmKG49bykpLG58fChuPSJlbiIpLG59fSxmdW5jdGlvbihlLHQsbil7dmFy IGE9bigyMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiJbb2Jq ZWN0IFN0cmluZ10iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUp PzA6KHQ9ZS5zcGxpdCgiLSIpLnNoaWZ0KCksYS5oYXNPd25Qcm9wZXJ0eShlKT9h W2VdOmEuaGFzT3duUHJvcGVydHkodCk/MT09PWFbdF0/dDphW3RdOjApfX0sZnVu Y3Rpb24oZSx0KXtlLmV4cG9ydHM9e2FmOjEsYWZyOiJhZiIsYXI6MSxhcmE6ImFy IixhejoxLGF6ZToiYXoiLGJlOjEsYnllOiJiZSIsYmc6MSxidWw6ImJnIixibjox LGJlbjoiYm4iLGJzOjEsYm9zOiJicyIsY2E6MSxjYXQ6ImNhIixjczoxLGNlczoi Y3MiLGN6ZToiY3MiLGN5OjEsY3ltOiJjeSIsZGE6MSxkYW46ImRhIixkZToxLGRl dToiZGUiLGdlcjoiZGUiLGVsOjEsZ3JlOiJlbCIsZWxsOiJlbCIsZW46MSxlbzox LGVzOjEsZXNsOiJlcyIsc3BhOiJlcyIsZXQ6MSxlc3Q6ImV0IixldToxLGZhOjEs ZmFzOiJmYSIscGVyOiJmYSIsZmk6MSxmaW46ImZpIixmbzoxLGZhbzoiZm8iLGZy OjEsZnJhOiJmciIsZnJlOiJmciIsZ2E6MSxnYWU6ImdhIixnZGg6ImdhIixnbDox LGdsZzoiZ2wiLGd1OjEsaGU6MSxoZWI6ImhlIixoaToxLGhpbjoiaGkiLGhyOjEs aHQ6MSxoeToxLGNybzoiaHIiLGh1OjEsaHVuOiJodSIsaWQ6MSxpbmQ6ImlkIixp czoxLGljZToiaXMiLGl0OjEsaXRhOiJpdCIsaXU6MSxpa2U6Iml1Iixpa3U6Iml1 IixqYToxLGpwbjoiamEiLGttOjEsa286MSxrb3I6ImtvIixrdToxLGxiOjEsbHR6 OiJsYiIsbHQ6MSxsaXQ6Imx0IixsdjoxLGxhdjoibHYiLG1rOjEsbWFjOiJtayIs bWFrOiJtayIsbWw6MSxtbjoxLG1zOjEsbXNhOiJtcyIsbWF5OiJtcyIsbXk6MSxi dXI6Im15IixteWE6Im15IixuYjoxLG5sOjEsbmxhOiJubCIsZHV0OiJubCIsbm86 MSxuZHM6MSxubjoxLG5ubzoibm8iLG9jOjEsb2NpOiJvYyIscGw6MSxwb2w6InBs IixwczoxLHB0OjEscG9yOiJwdCIscm86MSxyb246InJvIixydW06InJvIixydTox LHJ1czoicnUiLHNrOjEsc2xrOiJzayIsc2xvOiJzayIsc2w6MSxzbHY6InNsIixz cToxLGFsYjoic3EiLHNyOjEsc2U6MSxzaToxLHNlcjoic3IiLHN1OjEsc3Y6MSxz dmU6InN2IixzdzoxLHN3ZToic3YiLHRhOjEsdGFtOiJ0YSIsdGU6MSx0ZWc6InRl Iix0aDoxLHRoYToidGgiLHRsOjEsdGdsOiJ0bCIsdG46MSx0cjoxLHR1cjoidHIi LHRwaToxLHR0OjEsdWs6MSx1a3I6InVrIix1cjoxLHVyZDoidXIiLHZpOjEsdmVj OjEsdmllOiJ2aSIsInpoLWNuIjoxLCJ6aC1oayI6MSwiY2hpLWhrIjoiemgtaGsi LCJ6aG8taGsiOiJ6aC1oayIsInpoLXR3IjoxLCJjaGktdHciOiJ6aC10dyIsInpo by10dyI6InpoLXR3Iix6aDoxLGNoaToiemgiLHpobzoiemgiLCJ6aC10ciI6Inpo IiwiY2hpLXRyIjoiemgiLCJ6aG8tdHIiOiJ6aCJ9fSxmdW5jdGlvbihlLHQsbil7 InVzZSBzdHJpY3QiO3ZhciBhPWZ1bmN0aW9uKGUsdCxuLGEsaSxvLHIscyl7aWYo IWUpe3ZhciBkO2lmKHZvaWQgMD09PXQpZD1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4 Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmly b25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs IGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgdT1bbixhLGksbyxyLHNdLGM9 MDtkPW5ldyBFcnJvcigiSW52YXJpYW50IFZpb2xhdGlvbjogIit0LnJlcGxhY2Uo LyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gdVtjKytdfSkpfXRocm93IGQuZnJhbWVz VG9Qb3A9MSxkfX07ZS5leHBvcnRzPWF9LCxmdW5jdGlvbihlLHQpe2Z1bmN0aW9u IG4oZSx0LG4sYSl7dCYmKHQuYXR0YWNoRXZlbnQ/dFsoZT8iZGV0YWNoIjoiYXR0 YWNoIikrIkV2ZW50Il0oIm9uIituLGEpOnRbKGU/InJlbW92ZSI6ImFkZCIpKyJF dmVudExpc3RlbmVyIl0obixhLCExKSl9ZnVuY3Rpb24gYShlLHQsYSl7bighMSxl LHQsYSl9ZnVuY3Rpb24gaShlLHQsYSl7bighMCxlLHQsYSl9ZS5leHBvcnRzPXts aXN0ZW46YSx1bmxpc3RlbjppfX0sLCwsLCxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry aWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKCl7fSxlLmV4 cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1 bmN0aW9uIGEoKXt0aGlzLl9sb2FkKCl9dmFyIGksbz1uKDMxKSxyPW4oMTMpLHM9 bigxNCksZD0obigxNiksbigxMSkpO2EucHJvdG90eXBlPXtfZ2V0S2V5OmZ1bmN0 aW9uKCl7cmV0dXJuImF0LWxvanNvbi1jYWNoZS0iKyhvKCl8fCIqbm9wdWIqIil9 LF9zYXZlOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPUpTT04uc3RyaW5naWZ5KHRoaXMu X2xvanNvblJlc3BvbnNlKTt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhp cy5fZ2V0S2V5KCksZSl9Y2F0Y2goZSl7ci5lcnJvcihlKX19LF9sb2FkOmZ1bmN0 aW9uKCl7dHJ5e3ZhciBlPUpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5n ZXRJdGVtKHRoaXMuX2dldEtleSgpKSk7dGhpcy5fbG9qc29uUmVzcG9uc2U9dGhp cy5fc2V0TG9Kc29uUmVzcG9uc2UoZSl9Y2F0Y2goZSl7ci5lcnJvcihlKSx0aGlz Ll9sb2pzb25SZXNwb25zZT1udWxsfX0sX3NldExvSnNvblJlc3BvbnNlOmZ1bmN0 aW9uKGUpe3ZhciB0PXdpbmRvdy5NT0NLX0xPSlNPTl9SRVNQT05TRTtpZih0JiZl KWZvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX0sZXhpc3RzOmZ1bmN0 aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fbG9qc29uUmVzcG9uc2UpfSxoYXNU b29sQ29uZmlnczpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuZ2V0TGF5 ZXJzQ29uZmlnKCl8fHRoaXMuZ2V0Q3VzdG9tTWVzc2FnZUNvbmZpZygpKX0sdXBk YXRlQ2FjaGU6ZnVuY3Rpb24oZSl7dGhpcy5fbG9qc29uUmVzcG9uc2U9dGhpcy5f c2V0TG9Kc29uUmVzcG9uc2UoZSksdGhpcy5fc2F2ZSgpfSxnZXRMYXllcnNDb25m aWc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYWZlbHlHZXQoImNvbmZpZyIpfSxp c0JyYW5kaW5nUmVkdWNlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNhZmVseUdl dCgic3Vic2NyaXB0aW9uIiwicmVkdWNlZEJyYW5kaW5nIil9LGlzUGF5aW5nQ3Vz dG9tZXI6ZnVuY3Rpb24oKXtyZXR1cm4iUFJPIj09PXRoaXMuc2FmZWx5R2V0KCJz dWJzY3JpcHRpb24iLCJlZGl0aW9uIil9LGdldExvY2F0aW9uOmZ1bmN0aW9uKCl7 cmV0dXJuIHMuZ2V0KCl9LGdldEN1c3RvbU1lc3NhZ2VDb25maWc6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5zYWZlbHlHZXQoImN1c3RvbU1lc3NhZ2VzIil9LGdldFBv c2l0aW9uVGVtcGxhdGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2FmZWx5R2V0 KCJjdXN0b21NZXNzYWdlVGVtcGxhdGVzIil9LGdldEZlZWRzVGVzdENlbGxzOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2FmZWx5R2V0KCJwZXJDb25maWciKX0sc2Fm ZWx5R2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbG9qc29uUmVzcG9uc2U7dHJ5 e2Zvcih2YXIgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZT1lW2FyZ3VtZW50 c1t0XV07cmV0dXJuIGV9Y2F0Y2goZSl7cmV0dXJufX0sc2V0TG9qc29uUmVxdWVz dE9iamVjdDpmdW5jdGlvbihlKXtkLm9iamVjdChlKSYmKGk9ZSl9LGdldExvanNv blJlcXVlc3RPYmplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gaX19LGUuZXhwb3J0cz1u ZXcgYX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYT1uKDMyKSxp PW4oMzcpLG89YSgiYWRkdGhpc193aWRnZXQiKSxyPW8ucHViaWR8fG8ucHVifHxv LnVzZXJuYW1lO3ImJih3aW5kb3cuYWRkdGhpc19wdWI9d2luZG93LmRlY29kZVVS SUNvbXBvbmVudChyKSksd2luZG93LmFkZHRoaXNfcHViJiZ3aW5kb3cuYWRkdGhp c19jb25maWcmJih3aW5kb3cuYWRkdGhpc19jb25maWcudXNlcm5hbWU9d2luZG93 LmFkZHRoaXNfcHViKSxlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cs dD1lLmFkZHRoaXNfY29uZmlnX21zZ3x8e30sbj1lLmFkZHRoaXNfY29uZmlnfHx7 fTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGkodC5wdWJpZHx8dC51c2VybmFt ZXx8dC5wdWJ8fG4ucHViaWR8fG4udXNlcm5hbWV8fGUuYWRkdGhpc19wdWJ8fCIi KSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9bigzMyksaT1uKDM1KSxvPW4oMzYp O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1vKGUpO3JldHVybiB0JiZ0LnNy Yz90LnNyYy5pbmRleE9mKCIjIik+LTE/YSh0LnNyYyk6aSh0LnNyYyk6e319fSxm dW5jdGlvbihlLHQsbil7dmFyIGE9bigzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUp e3ZhciB0LG49ZS5pbmRleE9mKCIjIik7cmV0dXJuIHQ9biE9PS0xP2Uuc3Vic3Ry aW5nKG4pOiIiLGEodC5yZXBsYWNlKC9eW15cI10rXCM/fF5cIz8vLCIiKSl9fSxm dW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPXZvaWQg MCE9PXQ/dDoiJiIsYT12b2lkIDAhPT1lP2U6IiI7cmV0dXJuIGEuc3BsaXQobiku cmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpO3RyeXtuPXQuc3BsaXQoIj0i KSxhPXdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQoblswXSkudHJpbSgpLGk9d2lu ZG93LmRlY29kZVVSSUNvbXBvbmVudChuLnNsaWNlKDEpLmpvaW4oIj0iKSkudHJp bSgpLGEmJihlW2FdPWkpfWNhdGNoKGUpe31yZXR1cm4gZX0se30pfX0sZnVuY3Rp b24oZSx0LG4pe3ZhciBhPW4oMzQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIg dCxuPWUuaW5kZXhPZigiPyIpO3JldHVybiB0PW4hPT0tMT9lLnN1YnN0cmluZyhu KToiIixhKHQucmVwbGFjZSgvXlteXD9dK1w/P3xeXD8/LywiIikpfX0sZnVuY3Rp b24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWRvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxuPXQubGVuZ3RoLTE7bj49 MDtuLS0paWYodFtuXS5zcmMuaW5kZXhPZihlKSE9PS0xKXJldHVybiB0W25dfX0s ZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtlJiZlLnRyaW0m JiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRyaW0mJihlPWUudHJpbSgpKTt0cnl7ZT1l LnJlcGxhY2UoL15bXHNcdTMwMDBdKy8sIiIpLnJlcGxhY2UoL1tcc1x1MzAwMF0r JC8sIiIpfWNhdGNoKGUpe31yZXR1cm4gZSYmdCYmKGU9d2luZG93LmVuY29kZVVS SUNvbXBvbmVudChlKSksZXx8IiJ9fSwsLCwsLGZ1bmN0aW9uKGUsdCxuKXsidXNl IHN0cmljdCI7dmFyIGE9big0NCksaT1uKDQ1KSxvPW4oNDYpLHI9big0OSkscz1u KDUwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e3V0bV9zb3VyY2U6IkFk ZFRoaXMgVG9vbHMiLHV0bV9tZWRpdW06ImltYWdlIix1dG1fY2FtcGFpZ246ZX0s bj0iLy93d3cuYWRkdGhpcy5jb20vd2Vic2l0ZS10b29scy9vdmVydmlldyIsZD1z KCksdT1vKCksYz0vXihkZXxlc3xmcnxqYSkvLmV4ZWMoZCk7aWYobnVsbCE9PWMm JnUmJiFyKHUpKXt2YXIgbD1wYXJzZUludCh1LnNsaWNlKC0xKSwxNiklMj09PTAs Zj0iamEiPT09Y1sxXT8ianAiOmNbMV07dC5jZWxsPWw/ImVuIjpmLG49Imh0dHBz Oi8vd3d3LmFkZHRoaXMuY29tL2dldC1zaGFyaW5nLXNpZGViYXIvIitmfXZhciBw PWkodCxmdW5jdGlvbihlLHQpe3JldHVybiB0fSksaD1hKHAsZnVuY3Rpb24oZSx0 KXtyZXR1cm4gd2luZG93LmVuY29kZVVSSUNvbXBvbmVudCh0KSsiPSIrd2luZG93 LmVuY29kZVVSSUNvbXBvbmVudChlKX0pLmpvaW4oIiYiKTtyZXR1cm4gbisiPyIr aH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIg YSxpPVtdO2lmKG49dm9pZCAwIT09bj9uOnRoaXMsbnVsbD09PWV8fHZvaWQgMD09 PWUpcmV0dXJuIGk7Zm9yKGEgaW4gZSllLmhhc093blByb3BlcnR5KGEpJiZpLnB1 c2godC5jYWxsKG4sZVthXSxhKSk7cmV0dXJuIGl9fSxmdW5jdGlvbihlLHQsbil7 ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxhKXt2YXIgaT1uKDExKSxvPWkuYXJyYXks cj1pLm9iamVjdCxzPWkuZnVuY3Rpb24sZD1yKGUpLHU9byhlKSxjPXU/W106e30s bD1hfHx0aGlzO2lmKCFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IodCsiIGlzIG5v dCBhIGZ1bmN0aW9uIik7aWYodSlyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24obixh KXtyZXR1cm4gdCYmdC5jYWxsKGwsYSxuLGUpfSk7aWYoZCl7Zm9yKHZhciBmIGlu IGUpZS5oYXNPd25Qcm9wZXJ0eShmKSYmdCYmdC5jYWxsKGwsZixlW2ZdLGUpJiYo Y1tmXT1lW2ZdKTtyZXR1cm4gY31yZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxuKXt2 YXIgYSxpPW4oNDcpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlO3JldHVybiBh P2E6KCJ1bmRlZmluZWQiIT10eXBlb2YgX2F0ZSYmX2F0ZS51aWQ/YT1fYXRlLnVp ZDooZT1pLnJlYWQoInVpZCIpLGUmJihhPWUpKSxhKX19LGZ1bmN0aW9uKGUsdCxu KXtmdW5jdGlvbiBhKGUpe3ZhciB0PXIod2luZG93LmRvY3VtZW50LmNvb2tpZSwi OyIpO3JldHVybiB0W2VdfWZ1bmN0aW9uIGkoZSx0LG4saSxvKXtpZighZChhLGUp KXt2YXIgcj1vLHU9ZSsiPSIrdDtyfHwocj1uZXcgRGF0ZSxyLnNldE1vbnRoKHIu Z2V0TW9udGgoKSsxMykpLG58fCh1Kz0iOyBleHBpcmVzPSIrci50b1VUQ1N0cmlu ZygpKSx1Kz0iOyBwYXRoPS87IixpfHwodSs9IiBkb21haW49Iix1Kz1zKCJtc2ki KT8iLmFkZHRoaXMuY29tIjoiYWRkdGhpcy5jb20iKSxkb2N1bWVudC5jb29raWU9 dX19ZnVuY3Rpb24gbyhlLHQpe2koZSwiIiwhMSwhQm9vbGVhbih0KSxuZXcgRGF0 ZSgwKSl9dmFyIHI9bigzNCkscz1uKDUpLGQ9big0OCk7ZS5leHBvcnRzPXtyZWFk OmEsd3JpdGU6aSxraWxsOm99fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0 LG4pe3ZhciBhPWUodCk7cmV0dXJuIGEmJmE9PT1ufWZ1bmN0aW9uIGEoZSl7cmV0 dXJuIG4oZSwidWlkIiwiMDAwMDAwMDAwMDAwMDAwMCIpfHxuKGUsIm9wdG91dCIs IjEiKX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuISFvLmZpbHRlcihmdW5jdGlvbihl KXtyZXR1cm4gZT09PXR9KS5sZW5ndGgmJmEoZSl9dmFyIG89WyJsb2MiLCJ1dmMi LCJfX2F0dXZjIiwiX19hdHV2cyJdO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQp eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlPWV8fF9hdGUudWlk LCIwMDAwMDAwMDAwMDAwMDAwIj09PWV9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVs dD1uLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1u KDE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fGEoKSkuc3BsaXQo Ii0iKS5zaGlmdCgpfX0sLCwsZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rp b24oKXt2YXIgZT13aW5kb3csdD1lLmFkZHRoaXNfY29uZmlnX21zZ3x8e30sbj1l LmFkZHRoaXNfY29uZmlnfHx7fTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQu cHViaWR8fHQudXNlcm5hbWV8fHQucHVifHxuLnB1YmlkfHxuLnVzZXJuYW1lfHxl LmFkZHRoaXNfcHVifHwiIil9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi O2Z1bmN0aW9uIGEoZSl7dmFyIHQ9ZS5wYXJhbXN8fHt9O3JldHVybiBlLnNlbmRW aXNpdElEJiYodC51dnM9aS5nZXRJRCgpKSxlLnNlbmRQdWJJRCYmKHQucHViPXIo KSksZS5zZW5kRG9tYWluUG9ydCYmKHQuZHA9byhkLmR1KSksZS5zZW5kQ2xpZW50 VmVyc2lvbiYmd2luZG93Ll9hdGMucmV2JiYodC5yZXY9d2luZG93Ll9hdGMucmV2 KSx0fXZhciBpPW4oNTYpLG89big1OCkuZ2V0RG9tYWluTm9Qcm90b2NvbCxyPW4o MzEpLHM9big2MSksZD1uKDYzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3Zh ciBpLG8scj1hKHR8fHt9KTtyZXR1cm4gaT1zKHIpLG89bmV3IEltYWdlKDEsMSks biYmKG8ub25sb2FkPW4sby5vbmVycm9yPW4pLGk/ZS5pbmRleE9mKCI/Iik+LTE/ by5zcmM9ZSsiJiIraTpvLnNyYz1lKyI/IitpOm8uc3JjPWUsb319LGZ1bmN0aW9u KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXt2YXIgdDtyZXR1cm4g eChlKSYmKHQ9ZS50b1N0cmluZygxNikpLCghdHx8dC5pbmRleE9mKCJOYU4iKT4t MXx8dC5sZW5ndGg+M3x8dD09PWUpJiYodD0iIiksKCIwMDAiK3QpLnNsaWNlKC0z KX1mdW5jdGlvbiBpKGUpe3ZhciB0O3JldHVybiB5KGUpJiYodD1wYXJzZUludChl LDE2KSksKCF0fHx0IT09dHx8dDwwKSYmKHQ9MCksdH1mdW5jdGlvbiBvKCl7cmV0 dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9ZnVuY3Rpb24gcigpe3JldHVybiBrKCl9 ZnVuY3Rpb24gcygpe3ZhciBlPW5ldyBEYXRlLHQ9bmV3IERhdGUobygpKzE4ZTUp O3JldHVybiBlLmdldEhvdXJzKCk+MCYmMD09PXQuZ2V0SG91cnMoKX1mdW5jdGlv biBkKCl7cmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKChuZXcgRGF0ZSkuc2V0SG91 cnMoMjQsMCwwLDApKS5zZXRTZWNvbmRzKC0xKSl9ZnVuY3Rpb24gdSgpe3JldHVy biBzKCk/ZCgpOm5ldyBEYXRlKG8oKSsxOGU1KX1mdW5jdGlvbiBjKGUpe2lmKCF2 fHxlKXt2YXIgdD13LnJjayxuPXQoTSl8fCIiO24/KGI9cChuKSxiLmNvdW50ZXIr PTEpOmI9e2lkOnIoKSxjb3VudGVyOjB9LHY9MX19ZnVuY3Rpb24gbCgpe2MoKSx3 LnNjayhNLGgoKSwhMSwhMCx1KCkpfWZ1bmN0aW9uIGYoKXtsKCl9ZnVuY3Rpb24g cChlKXt2YXIgdD1lLnN1YnN0cigwLDE2KSxuPWUuc3Vic3RyKDE2LDE5KTtyZXR1 cm57aWQ6dCxjb3VudGVyOmkobil9fWZ1bmN0aW9uIGgoKXtyZXR1cm4gYi5pZCth KGIuY291bnRlcil9ZnVuY3Rpb24gbSgpe3JldHVybiBjKCksMD09PWIuY291bnRl cn1mdW5jdGlvbiBnKCl7cmV0dXJuIGMoKSxiLmlkfWZ1bmN0aW9uIF8oKXt2YXIg ZT1fYXRlLmNvb2tpZS5yZWFkKCJfX2F0dXZzIikuc3Vic3RyaW5nKDE2KTtyZXR1 cm4gcGFyc2VJbnQoZSwxNil9dmFyIHYsYix3PW4oNTcpLHg9bigxMSkubnVtYmVy LHk9bigxMSkuc3RyaW5nLGs9big1OSkubWFrZUNVSUQsQz1uKDYwKSxNPSh3aW5k b3cuZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKEMoKSk9PT0tMT8iX19h dCI6IiIpKyJ1dnMiO2UuZXhwb3J0cz17dXBkYXRlOmYsaXNOZXc6bSxnZXRJRDpn LHJlYWRWaXNpdENvdW50Ol99fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gYShl KXtyZXR1cm4gdSh3aW5kb3cuZG9jdW1lbnQuY29va2llLCI7IilbZV19ZnVuY3Rp b24gaShlLHQpe3dpbmRvdy5kb2N1bWVudC5jb29raWUmJih3aW5kb3cuZG9jdW1l bnQuY29va2llPWUrIj07IGV4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDow MSBHTVQ7IHBhdGg9LyIrKHQ/IjsgZG9tYWluPSIrKGMoIm1zaSIpPyIiOiIuIikr ImFkZHRoaXMuY29tIjoiIikpfWZ1bmN0aW9uIG8oZSl7dmFyIHQsbixhLGk9ZXx8 d2luZG93JiZ3aW5kb3cuX2F0ZSYmd2luZG93Ll9hdGUuZGh8fHdpbmRvdyYmd2lu ZG93Ll9hdGUmJndpbmRvdy5fYXRlLmR1fHwod2luZG93JiZ3aW5kb3cuX2F0ZSYm d2luZG93Ll9hdGUuZGw/d2luZG93Ll9hdGUuZGwuaG9zdG5hbWU6IiIpLG89Zi5n ZXREb21haW4oaSk7aWYoaC50ZXN0KG8pKXJldHVybiEwO249bCgpLGE9WyJ1c2Fy bXltZWRpYSIsImdvdmRlbGl2ZXJ5Il07Zm9yKHQgaW4gYSlpZihuPT1hW3RdKXJl dHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHIoZSx0LG4saSxyKXt2YXIgcz1yO3Ao YSxlKXx8KHdpbmRvdy5hdF9zdWJ8fG8oKSx3aW5kb3cuX2F0Yy54Y2t8fGkmJih3 aW5kb3cuYWRkdGhpc19jb25maWd8fHt9KS5kYXRhX3VzZV9jb29raWVzX29uZG9t YWluPT09ITF8fCh3aW5kb3cuYWRkdGhpc19jb25maWd8fHt9KS5kYXRhX3VzZV9j b29raWVzPT09ITF8fChzfHwocz1uZXcgRGF0ZSxzLnNldE1vbnRoKHMuZ2V0TW9u dGgoKSsxMykpLGRvY3VtZW50LmNvb2tpZT1lKyI9Iit0KyhuPyIiOiI7IGV4cGly ZXM9IitzLnRvVVRDU3RyaW5nKCkpKyI7IHBhdGg9LzsiKyhpPyIiOiIgZG9tYWlu PSIrKGMoIm1zaSIpPyIiOiIuIikrImFkZHRoaXMuY29tIikpKX1mdW5jdGlvbiBz KCl7cmV0dXJuIG0/MToocigieHRjIiwxKSwxPT1hKCJ4dGMiKSYmKG09MSksaSgi eHRjIiwxKSxtKX1mdW5jdGlvbiBkKGUpe3dpbmRvdyYmd2luZG93Ll9hdGMmJndp bmRvdy5fYXRjLnhja3x8byhlKSYmKHdpbmRvdy5fYXRjLnhjaz0xKX12YXIgdT1u KDM0KSxjPW4oNSksbD1uKDU0KSxmPW4oNTgpLHA9big0OCksaD0vKD86XC5taWx8 XC5nb3YpJC8sbT0wO2UuZXhwb3J0cz17cmNrOmEsc2NrOnIsa2NrOmksY3d3OnMs Z292OmQsaXNndjpvfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0 PWUubWF0Y2goLygoW15cL1wvXSopXC9cL3xcL1wvKT8oW15cLz8mI10rKS9pKTtp Zih0JiZ0WzBdKXJldHVybiB0WzBdfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGUucmVw bGFjZShuKGUpLCIiKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlLnJlcGxhY2UoL14o aHR0cHxodHRwcyk6XC9cLy8sIiIpLnNwbGl0KCIvIikuc2hpZnQoKX1mdW5jdGlv biBvKGUpe3ZhciB0LG47aWYoZSl7aWYoZS5zZWFyY2goLyg/Olw6fFwvXC8pLykh PT0tMSlyZXR1cm4gZTtpZihlLnNlYXJjaCgvXlwvLykhPT0tMSlyZXR1cm4gd2lu ZG93LmxvY2F0aW9uLm9yaWdpbitlO2lmKGUuc2VhcmNoKC8oPzpeXC5cL3xeXC5c LlwvKS8pIT09LTEpe3Q9L1wuXC5cLy9nO3ZhciBhPTA9PT1lLnNlYXJjaCh0KSYm ZS5tYXRjaCh0KS5sZW5ndGh8fDEsaT13aW5kb3cubG9jYXRpb24uaHJlZi5yZXBs YWNlKC9cLyQvLCIiKS5zcGxpdCgiLyIpO3JldHVybiBlPWUucmVwbGFjZSh0LCIi KS5yZXBsYWNlKG4sIiIpLGkuc2xpY2UoMCxpLmxlbmd0aC1hKS5qb2luKCIvIikr Ii8iK2V9cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLm1hdGNoKC8oLipcLykv KVswXStlfX1mdW5jdGlvbiByKGUpe3JldHVybiBlLnNwbGl0KCIvLyIpLnBvcCgp LnNwbGl0KCIvIikuc2hpZnQoKS5zcGxpdCgiIyIpLnNoaWZ0KCkuc3BsaXQoIj8i KS5zaGlmdCgpLnNwbGl0KCIuIikuc2xpY2UoLTIpLmpvaW4oIi4iKX1lLmV4cG9y dHM9e2dldERvbWFpbjpuLGdldFF1ZXJ5U3RyaW5nOmEsZ2V0RG9tYWluTm9Qcm90 b2NvbDppLGdldEFic29sdXRlRnJvbVJlbGF0aXZlOm8sZ2V0SG9zdDpyfX0sZnVu Y3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7cmV0dXJuKGQvMWUzJnMpLnRvU3RyaW5n KDE2KSsoIjAwMDAwMDAwIitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKHMrMSkp LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTgpfWZ1bmN0aW9uIGEoZSl7dmFyIHQ7dHJ5 e3Q9bmV3IERhdGUoMWUzKnBhcnNlSW50KGUuc3Vic3RyKDAsOCksMTYpKX1jYXRj aChlKXt0PW5ldyBEYXRlfXJldHVybiB0fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9YShl KTtyZXR1cm4gdC5nZXRUaW1lKCktODY0ZTU+KG5ldyBEYXRlKS5nZXRUaW1lKCl9 ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWEoZSk7cmV0dXJuKG5ldyBEYXRlKS5nZXRU aW1lKCktbi5nZXRUaW1lKCk+MWUzKnR9ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9p ZCAwIT09ZSYmIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRv U3RyaW5nLmNhbGwoZSkmJigvXlswLTlhLWZdezE2fSQvLnRlc3QoZSkmJiFpKGUp KX1lLmV4cG9ydHM9e21ha2VDVUlEOm4saXNWYWxpZENVSUQ6cixpc0NVSURPbGRl clRoYW46b307dmFyIHM9NDI5NDk2NzI5NSxkPShuZXcgRGF0ZSkuZ2V0VGltZSgp fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiB3aW5k b3cuYWRkdGhpc19jZG58fHdpbmRvdy5fYXRyfX0sZnVuY3Rpb24oZSx0LG4pe3Zh ciBhPW4oOSksaT1uKDYyKTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LG4sbyl7dmFy IHI9d2luZG93LmVuY29kZVVSSUNvbXBvbmVudDtyZXR1cm4gbj1ufHwiJiIsbz1v fHwiPSIsYSh0LGZ1bmN0aW9uKHQsYSxzKXtyZXR1cm4gcz1pKHMpLHMmJnQucHVz aChyKHMpK28rcihpKCJvYmplY3QiPT10eXBlb2YgYT9lKGEsbixvKTphKSkpLHR9 LFtdKS5qb2luKG4pfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24o ZSl7cmV0dXJuIGUrPSIiLGUucmVwbGFjZSgvKF5ccyt8XHMrJCkvZywiIil9fSxm dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPWRvY3VtZW50LGk9bigz NSksbz17fTtvLnJlc2Nhbj1mdW5jdGlvbigpe28uZHU9YS5sb2NhdGlvbi5ocmVm LG8uZGg9YS5sb2NhdGlvbi5ob3N0bmFtZSxvLmRyPWEucmVmZXJyZXIsby5zZWFy Y2g9YS5sb2NhdGlvbi5zZWFyY2gsby5wYXRobmFtZT1hLmxvY2F0aW9uLnBhdGhu YW1lLG8ucXVlcnk9aShhLmxvY2F0aW9uLnNlYXJjaCksby50aXRsZT1kb2N1bWVu dC50aXRsZSxvLmhhc2g9YS5sb2NhdGlvbi5oYXNofSxvLnJlc2NhbigpLGUuZXhw b3J0cz1vfSwsZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNTApLGk9big2Nik7ZS5l eHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxyLHMsZD13aW5kb3cuYWRkdGhp c190cmFuc2xhdGlvbnM7aWYobj1ufHxhKCksaS5pc1NldCh0KSlyZXR1cm4gcz1p LmdldCh0KTtpZigiZW4iPT09bnx8IWQpcmV0dXJuIGU7Zm9yKG8gaW4gZClmb3Io ciBpbiBkW29dWzBdKWlmKGRbb11bMF1bcl09PT1uJiZkW29dLmxlbmd0aD50JiZk W29dW3RdKXJldHVybiBzPWRbb11bdF07cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQp e3ZhciBuPXt9LGE9ezE6InNoYXJlX2NhcHRpb24iLDI6Im1vcmUiLDM6ImVtYWls X2NhcHRpb24iLDQ6ImVtYWlsIiw1OiJmYXZvcml0ZXMiLDY6ImVtYWlsX2luc3Ry dWN0aW9ucyIsNzoiZW1haWxfdG8iLDg6ImVtYWlsX2Zyb20iLDk6ImVtYWlsX21l c3NhZ2UiLDEwOiJlbWFpbF9wcml2YWN5IiwxMToiZW1haWxfc2VuZCIsMTI6ImVt YWlsX3ZhbGlkIiwxMzoiZW1haWxfc2VudCIsMTQ6InJzc19jYXB0aW9uIiwxNToi cnNzX2luc3RydWN0aW9ucyIsMTY6InJzc19yZW1lbWJlciIsMTc6ImRvbmUiLDE4 OiJnZXRfeW91cl9vd24iLDE5OiJlbWFpbF9hZGRyZXNzIiwyMDoib3B0aW9uYWwi LDIxOiJtYXhfY2hhcmFjdGVycyIsMjI6InByaW50IiwyMzoid2hhdHNfdGhpcyIs MjQ6InByaXZhY3kiLDI1OiJ1c2VfYWRkcmVzc19ib29rIiwyNjoiY2FuY2VsIiwy Nzoic2lnbl9pbl9jb250YWN0cyIsMjg6InVzZXJuYW1lIiwyOToicGFzc3dvcmQi LDMwOiJyZW1lbWJlcl9tZSIsMzE6InNpZ25faW4iLDMyOiJzZWxlY3RfYWRkcmVz c19ib29rIiwzMzoiZXJyb3JfYXV0aCIsMzQ6ImVtYWlsX3JlY2lwaWVudHMiLDM1 OiJmaW5kX2Ffc2VydmljZSIsMzY6Im5vX3NlcnZpY2VzIiwzNzoic2hhcmVfYWdh aW4iLDM4OiJzaWduX291dCIsMzk6ImdldHRpbmdfY29udGFjdHMiLDQwOiJzdWdn ZXN0X2Ffc2VydmljZSIsNDE6InNoYXJlX3N1Y2Nlc3NmdWwiLDQyOiJ0b29sYmFy X3Byb21vIiw0MzoiZG93bmxvYWQiLDQ0OiJkb250X3Nob3dfdGhlc2UiLDQ1OiJz ZW5kaW5nIiw0NjoiY2FwdGNoYSIsNDc6InNldHRpbmdzIiw0ODoiZW1haWxfZXJy b3IiLDQ5OiJjYXB0Y2hhX2hlYWRlciIsNTA6ImNhcHRjaGFfaW5zdHIiLDUxOiJj YXB0Y2hhX21pc3NpbmciLDUyOiJjYXB0Y2hhX2Vycm9yIiw1Mzoic2lnbmluX2N1 c3RvbWl6ZSIsMTA2OiJkb21haW50b29sc3dob2lzIiwxMDc6InczdmFsaWRhdG9y IiwxMDg6Im1haWx0byIsMTA5OiJjbGVhbnNhdmUiLDExMDoibGluayIsMTExOiJ0 b3Bfc2VydmljZXMiLDExMjoibG9hZF9tb3JlIiwxMTM6ImVtYWlsX2NvbmZpcm1f cGVybWl0dGVkX3RvX3NlbmQifSxpPWZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVy biBhW2VdJiYodD1hW2VdKSx0fSxvPWZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJu Im9iamVjdCI9PXR5cGVvZiBhZGR0aGlzX2NvbmZpZyYmIm9iamVjdCI9PXR5cGVv ZiBhZGR0aGlzX2NvbmZpZy51aV9sb2NhbGl6ZT9lPWFkZHRoaXNfY29uZmlnLnVp X2xvY2FsaXplOiJvYmplY3QiPT10eXBlb2YgYWRkdGhpc19sb2NhbGl6ZSYmKGU9 YWRkdGhpc19sb2NhbGl6ZSksZX0scj1mdW5jdGlvbihlKXt2YXIgdD1vKCksbj1p KGUpO3JldHVybiEoIW58fCF0W25dKX0scz1mdW5jdGlvbihlKXt2YXIgdD1vKCks bj1pKGUpO2lmKHIoZSkpe3ZhciBhPXRbbl07cmV0dXJuIGF9cmV0dXJuITF9O24u aXNTZXQ9cixuLmdldD1zLGUuZXhwb3J0cz1ufSwsLCxmdW5jdGlvbihlLHQsbil7 InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7dmFyIHQ9ZS5jb2RlLG49ZS5hbHQs YT1lLnRpdGxlLGk9ZS5zaXplLGQ9ZS5iYWNrZ3JvdW5kQ29sb3IsdT1lLmNvbG9y LGM9ZS5idXR0b25IZWlnaHQsbD1lLmJ1dHRvbldpZHRoLGY9ZS5ib3JkZXJSYWRp dXMscD1lLmJvcmRlcldpZHRoLGg9ZS5ib3JkZXJTdHlsZSxtPWUuYm9yZGVyQ29s b3IsZz0oZS50eXBlLGUubGFiZWwpO3JldHVybiBuPXZvaWQgMCE9PW4/bjpvKHQp LGE9dm9pZCAwIT09YT9hOm4sZz12b2lkIDAhPT1nP2c6bnVsbCxjPXZvaWQgMCE9 PWM/YzppLGw9dm9pZCAwIT09bD9sOmksZD12b2lkIDAhPT1kP2Q6cih0KSxzKHQs bixhLGksZCx1LGMsbCxmLHAsaCxtLGcsZS5sb2FkZWRDYWxsYmFjayl9ZnVuY3Rp b24gaShlLHQsbixpLG8scixzLGQsdSxjLGwsZixwKXtyZXR1cm4gYSh7Y29kZTpl LGFsdDp0LHRpdGxlOm4sc2l6ZTppLGJhY2tncm91bmRDb2xvcjpvLGNvbG9yOnIs YnV0dG9uSGVpZ2h0OnMsYnV0dG9uV2lkdGg6ZCxib3JkZXJSYWRpdXM6dSxib3Jk ZXJXaWR0aDpjLGJvcmRlclN0eWxlOmwsYm9yZGVyQ29sb3I6ZixsYWJlbDpwfSl9 dmFyIG89big3MSkscj1uKDc3KSxzPShuKDgwKSxuKDgxKSk7ZS5leHBvcnRzPWZ1 bmN0aW9uKGUpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aCYmZSBpbnN0YW5j ZW9mIE9iamVjdD9hKGUpOmkuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xp Y2UuY2FsbChhcmd1bWVudHMsMCkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry aWN0Ijt2YXIgYT1uKDcyKSxpPW4oNzMpLG89big3NCkscj1uKDc1KSxzPW4oNzYp O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBuPWFbZV0mJmFb ZV0ubmFtZT9hW2VdLm5hbWU6aVtlXSYmaVtlXS5uYW1lP2lbZV0ubmFtZTpvW2Vd JiZvW2VdLm5hbWU/b1tlXS5uYW1lOnJbZV0/cltlXTpzKGUsdCksKG58fCIiKS5y ZXBsYWNlKC8mbmJzcDsvZywiICIpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9 eyIxMDB6YWtsYWRvayI6e3VybDoiMTAwemFrbGFkb2sucnUifSxhZGZ0eTp7fSxh ZGlmbmk6e30sYWR2cXI6e25hbWU6IkFEViBRUiIsdXJsOiJxci1hZHYuY29tIn0s YWltOntuYW1lOiJBT0wgTGlmZXN0cmVhbSIsdXJsOiJsaWZlc3RyZWFtLmFvbC5j b20ifSxhbWF6b253aXNobGlzdDp7bmFtZToiQW1hem9uIix1cmw6ImFtYXpvbi5j b20ifSxhbWVubWU6e25hbWU6IkFtZW4gTWUhIn0sYW9sbWFpbDp7bmFtZToiQU9M IE1haWwiLHVybDoid2VibWFpbC5hb2wuY29tIn0sYXBzZW5zZTp7bmFtZToiQVBT ZW5zZSJ9LGF0YXZpOnt9LGJhaWR1Ont1cmw6InNoYXJlLmJhaWR1LmNvbSJ9LGJh bGF0YXJpbjp7fSxiZWF0MTAwOnt9LGJpdGx5OntuYW1lOiJCaXQubHkiLHVybDoi Yml0Lmx5In0sYml6c3VnYXI6e25hbWU6IkJpelN1Z2FyIn0sYmxhbmQ6e25hbWU6 IkJsYW5kIHRha2tpbm4iLHVybDoiYmxhbmQuaXMifSxibG9nZ2VyOnt0b3A6MX0s YmxvZ2tlZW46e30sYmxvZ21hcmtzOnt1cmw6ImJsb2dtYXJrcy5uZXQifSxib2Jy ZG9icjp7dXJsOiJib2JyZG9ici5ydSJ9LGJvbnpvYm94OntuYW1lOiJCb256b0Jv eCJ9LGJvb2ttYXJreWN6OntuYW1lOiJCb29rbWFya3kuY3oiLHVybDoiYm9va21h cmt5LmN6In0sYm9va21lcmtlbmRlOntuYW1lOiJCb29rbWVya2VuIix1cmw6ImJv b2ttZXJrZW4uZGUifSxib3g6e3VybDoiYm94Lm5ldCJ9LGJ1ZmZlcjp7fSxjYW15 b286e30sY2FyZTI6e30sY2l0ZXVsaWtlOntuYW1lOiJDaXRlVUxpa2UiLHVybDoi Y2l0ZXVsaWtlLm9yZyJ9LGNsZWFucHJpbnQ6e25hbWU6IkNsZWFuUHJpbnQiLHVy bDoiZm9ybWF0ZHluYW1pY3MuY29tIn0sY2xlYW5zYXZlOntuYW1lOiJDbGVhblNh dmUiLHVybDoiZm9ybWF0ZHluYW1pY3MuY29tIn0sY29zbWlxOntuYW1lOiJDT1NN aVEiLHVybDoiY29zbWlxLmRlIn0sY3NzYmFzZWQ6e25hbWU6IkNTUyBCYXNlZCJ9 LGRpYXJ5X3J1OntuYW1lOiJEaWFyeS5ydSIsdXJsOiJkaWFyeS5ydSJ9LGRpZ2c6 e3RvcDoxfSxkaWdnaXRhOnt1cmw6ImRpZ2dpdGEuaXQifSxkaWlnbzp7fSxkb21h aW50b29sc3dob2lzOntuYW1lOiJXaG9pcyBMb29rdXAiLHVybDoid2hvaXMuZG9t YWludG9vbHMuY29tIn0sZG91YmFuOnt9LGRyYXVnaWVtOntuYW1lOiJEcmF1Z2ll bS5sdiIsdXJsOiJkcmF1Z2llbS5sdiJ9LGVkY2FzdDp7bmFtZToiRWRDYXN0In0s ZW1haWw6e3N1cHBvcnRzSW1hZ2U6ITAsdG9wOjF9LGV2ZXJub3RlOnt9LGV4Y2hh bmdsZTp7fSxmYWJ1bG91c2x5NDA6e30sZmFjZWJvb2s6e3N1cHBvcnRzSW1hZ2U6 ITAsdG9wOjF9LGZhY2VuYW1hOnt9LGZhc2hpb2xpc3RhOnt9LGZhdmFibGU6e25h bWU6IkZBVmFibGUifSxmYXZvcml0ZXM6e3RvcDoxfSxmYXZvcml0dXM6e30sZmlu YW5jaWFsanVpY2U6e25hbWU6IkZpbmFuY2lhbCBKdWljZSJ9LGZsaXBib2FyZDp7 fSxmb2xrZDp7fSxnZzp7bmFtZToiR0ciLHVybDoiZ2cucGwifSxnbWFpbDp7dXJs OiJtYWlsLmdvb2dsZS5jb20ifSxnb29nbGU6e25hbWU6Ikdvb2dsZSBCb29rbWFy ayIsdG9wOjF9LGdvb2dsZV9jbGFzc3Jvb206e25hbWU6Ikdvb2dsZSBDbGFzc3Jv b20iLHVybDoiY2xhc3Nyb29tLmdvb2dsZS5jb20ifSxnb29nbGVfcGx1c29uZV9z aGFyZTp7bmFtZToiR29vZ2xlKyIsdXJsOiJwbHVzLmdvb2dsZS5jb20ifSxnb29n bGV0cmFuc2xhdGU6e25hbWU6Ikdvb2dsZSBUcmFuc2xhdGUiLHVybDoidHJhbnNs YXRlLmdvb2dsZS5jb20ifSxnb3ZuOntuYW1lOiJHby52biIsdXJsOiJnby52biJ9 LGhhY2tlcm5ld3M6e25hbWU6IkhhY2tlciBOZXdzIix1cmw6Im5ld3MueWNvbWJp bmF0b3IuY29tIn0saGF0ZW5hOnt1cmw6ImIuaGF0ZW5hLm5lLmpwIn0saGVkZ2Vo b2dzOnt1cmw6ImhlZGdlaG9ncy5uZXQifSxoaXN0b3Jpb3VzOntuYW1lOiJoaXN0 b3Jpb3VzIix1cmw6Imhpc3RvcmlvLnVzIn0saG9vdHN1aXRlOnt9LGhvdG1haWw6 e25hbWU6Ik91dGxvb2siLHVybDoibWFpbC5saXZlLmNvbSJ9LGhvdXp6OntzdXBw b3J0c0ltYWdlOiEwfSxpbmRleG9yOnt1cmw6ImluZGV4b3IuY28udWsifSxpbmZv cm1hemlvbmU6e25hbWU6IkZhaSBJbmZvcm1hemlvbmUiLHVybDoiZmFpLmluZm9y bWF6aW9uZS5pdCJ9LGluc3RhcGFwZXI6e30saW50ZXJuZXRhcmNoaXZlOntuYW1l OiJXYXliYWNrIE1hY2hpbmUiLHVybDoiYXJjaGl2ZS5vcmcifSxpb3JiaXg6e25h bWU6ImlPcmJpeCJ9LGphcHB5OntuYW1lOiJKYXBweSBUaWNrZXIiLHVybDoiamFw cHkuZGUifSxrYWl4aW46e25hbWU6IkthaXhpbiBSZXBhc3RlIix1cmw6ImthaXhp bjAwMS5jb20ifSxrYWthbzp7fSxrYWthb3RhbGs6e25hbWU6Iktha2FvIFRhbGsi LHVybDoia2FrYW8uY29tIn0sa2V0bm9vaTp7dXJsOiJwbGF5Lmdvb2dsZS5jb20i fSxraW5kbGVpdDp7bmFtZToiS2luZGxlIEl0Iix1cmw6ImZpdmVmaWx0ZXJzLm9y ZyJ9LGtsZWR5Ont1cmw6ImtsZWR5LmRlIn0sbGlkYXI6e25hbWU6IkxpREFSIE9u bGluZSIsdXJsOiJsaWRhci1vbmxpbmUuY29tIn0sbGluZW1lOntuYW1lOiJMSU5F Iix1cmw6ImxpbmUubWUifSxsaW5rOntuYW1lOiJDb3B5IExpbmsiLHN1cHBvcnRz SW1hZ2U6ITB9LGxpbmtlZGluOntuYW1lOiJMaW5rZWRJbiIsdG9wOjF9LGxpbmt1 ajp7bmFtZToiTGlua3VqLmN6Iix1cmw6Imxpbmt1ai5jeiJ9LGxpdmVqb3VybmFs OntuYW1lOiJMaXZlSm91cm5hbCJ9LG1haWx0bzp7bmFtZToiRW1haWwgQXBwIix0 b3A6MX0sbWFyZ2FyaW46e25hbWU6Im1hci5nYXIuaW4iLHVybDoibWFyLmdhci5p biJ9LG1hcmttZTp7dXJsOiJtYXJrbWUubWUifSxtZWludno6e25hbWU6Im1laW5W WiIsdXJsOiJtZWludnoubmV0In0sbWVtb25pYzp7fSxtZW1vcmk6e25hbWU6Ik1l bW9yaS5ydSIsdXJsOiJtZW1vcmkucnUifSxtZW5kZWxleTp7fSxtZW5lYW1lOnt1 cmw6Im1lbmVhbWUubmV0In0sbWVzc2VuZ2VyOnt9LG1peGk6e3VybDoibWl4aS5q cCJ9LG1vZW1lc3RvOntuYW1lOiJNb2VtZXN0by5ydSIsdXJsOiJtb2VtZXN0by5y dSJ9LG1yY25ldHdvcmtpdDp7bmFtZToibVJjTkV0d09SSyIsdXJsOiJtcmNuZXR3 b3JrLml0In0sbXltYWlscnU6e25hbWU6Ik1haWwucnUiLHN1cHBvcnRzSW1hZ2U6 ITAsdXJsOiJteS5tYWlsLnJ1In0sbXlzcGFjZTp7dG9wOjF9LG15dmlkc3Rlcjp7 bmFtZToibXlWaWRzdGVyIn0sbjRnOntuYW1lOiJONEcifSxuYXN6YWtsYXNhOntu YW1lOiJOYXN6YS1rbGFzYSIsdXJsOiJuYXN6YS1rbGFzYS5wbCJ9LG5ldHZpYmVz Ont9LG5ldHZvdXo6e30sbmV3c21lYmFjazp7bmFtZToiTmV3c01lQmFjayJ9LG5l d3N2aW5lOnt9LG51amlqOnt1cmw6Im51amlqLm5sIn0sbnVyc2VzX2xvdW5nZTp7 bmFtZToiTnVyc2VzIExvdW5nZSIsdXJsOiJudXJzZXNsb3VuZ2UuY29tIn0sb2Ru b2tsYXNzbmlraV9ydTp7bmFtZToiT2Rub2tsYXNzbmlraSIsc3VwcG9ydHNJbWFn ZTohMCx1cmw6Im9kbm9rbGFzc25pa2kucnUifSxva25vdGl6aWU6e25hbWU6Ik9L Tk90aXppZSIsdXJsOiJva25vdGl6aWUudmlyZ2lsaW8uaXQifSxvbmVub3RlOntu YW1lOiJPbmVOb3RlIixzdXBwb3J0c0ltYWdlOiEwfSxvcGVudGhlZG9vcjp7bmFt ZToiT3BlblRoZURvb3IiLHVybDoib3RkLnRvIn0sb3l5bGE6e30scGFmbmV0ZGU6 e25hbWU6InBhZm5ldC5kZSIsdXJsOiJwYWZuZXQuZGUifSxwZGZteXVybDp7bmFt ZToiUERGbXlVUkwifSxwaW5ib2FyZDp7dXJsOiJwaW5ib2FyZC5pbiJ9LHBpbnRl cmVzdF9zaGFyZTp7bmFtZToiUGludGVyZXN0IixzdXBwb3J0c0ltYWdlOiEwLHRv cDoxLHVybDoicGludGVyZXN0LmNvbSJ9LHBsdXJrOnt9LHBvY2tldDp7dXJsOiJn ZXRwb2NrZXQuY29tIn0scG9zdGVlenk6e30scHJpbnQ6e3RvcDoxfSxwcmludGZy aWVuZGx5OntuYW1lOiJQcmludEZyaWVuZGx5In0scHVzaGE6e3VybDoicHVzaGEu c2UifSxxcnNyYzp7bmFtZToiUVJTcmMuY29tIn0scXVhbnRjYXN0Ont9LHF6b25l OntzdXBwb3J0c0ltYWdlOiEwLHVybDoicXpvbmUucXEuY29tIn0scmVkZGl0Ont0 b3A6MX0scmVkaWZmOntuYW1lOiJSZWRpZmYgTXlQYWdlIix1cmw6Im15cGFnZS5y ZWRpZmYuY29tIn0scmVucmVuOntzdXBwb3J0c0ltYWdlOiEwfSxyZXNlYXJjaGdh dGU6e25hbWU6IlJlc2VhcmNoR2F0ZSIsdXJsOiJyZXNlYXJjaGdhdGUubmV0In0s cmV0ZWxsaXR5Ont9LHNhZmVsaW5raW5nOnt1cmw6InNhZmVsaW5raW5nLm5ldCJ9 LHNjb29waXQ6e25hbWU6IlNjb29wLml0Iix1cmw6InNjb29wLml0In0sc2hhcmVy OntuYW1lOiJXZWJNb25leSIsdXJsOiJldmVudHMud2VibW9uZXkucnUifSxzaW5h d2VpYm86e25hbWU6IlNpbmEgV2VpYm8iLHN1cHBvcnRzSW1hZ2U6ITAsdG9wOjEs dXJsOiJ0LnNpbmEuY29tLmNuIn0sc2t5cGU6e30sc2t5cm9jazp7bmFtZToiU2t5 cm9jayBCbG9nIn0sc2xhY2s6e30sc21pcnU6e25hbWU6IlNNSSIsdXJsOiJzbWku cnUifSxzbXM6e25hbWU6IlNNUyJ9LHNvZGFoZWFkOntuYW1lOiJTb2RhSGVhZCJ9 LHNwaW5zbmFwOntuYW1lOiJTcGluU25hcCJ9LHN0YXJ0YWlkOnt9LHN0YXJ0bGFw Ont1cmw6InN0YXJ0bGFwLmh1In0sc3R1ZGl2ejp7bmFtZToic3R1ZGlWWiIsdXJs OiJzdHVkaXZ6Lm5ldCJ9LHN0dWZmcGl0Ont9LHN0dW1ibGV1cG9uOntuYW1lOiJT dHVtYmxlVXBvbiIsdG9wOjF9LHN0dW1wZWRpYTp7fSxzdHlsaXNoaG9tZTp7bmFt ZToiRmFiRGVzaWduIn0sc3VyZmluZ2JpcmQ6e3VybDoic3VyZmluZ2JpcmQucnUi fSxzdmVqbzp7dXJsOiJzdmVqby5uZXQifSxzeW1iYWxvbzp7fSx0YXJpbmdhOntu YW1lOiJUYXJpbmdhISIsdXJsOiJ0YXJpbmdhLm5ldCJ9LHRlY2huZXJkOntuYW1l OiJDb21tdW5pY2F0ZSJ9LHRlbGVncmFtOnt1cmw6InRlbGVncmFtLm9yZyJ9LHRl bmNlbnRxcTp7bmFtZToiVGVuY2VudCBRUSIsc3VwcG9ydHNJbWFnZTohMCx1cmw6 ImltLnFxLmNvbSJ9LHRlbmNlbnR3ZWlibzp7bmFtZToiVGVuY2VudCBXZWlibyIs dXJsOiJ0LnFxLmNvbSJ9LHRoZWZhbmN5OntuYW1lOiJGYW5jeSJ9LHRoZWZyZWVk aWN0aW9uYXJ5OntuYW1lOiJGcmVlRGljdGlvbmFyeSJ9LHRoaXNuZXh0OntuYW1l OiJUaGlzTmV4dCJ9LHRyZWxsbzp7fSx0dWVudGk6e30sdHVtYmxyOnt0b3A6MX0s dHdpdHRlcjp7dG9wOjEscmVmZXJyZXJzOlsidC5jbyJdfSx0eXBlcGFkOnt9LHVy bGF1YnN3ZXJrZGU6e25hbWU6IlVybGF1YnN3ZXJrIix1cmw6InVybGF1YnN3ZXJr LmRlIn0sdmlhZGVvOnt9LHZpYmVyOnt9LHZpcmI6e30sdmlzaXRlem1vbnNpdGU6 e25hbWU6IlZpc2l0ZXogTW9uIFNpdGUifSx2azp7bmFtZToiVmtvbnRha3RlIixz dXBwb3J0c0ltYWdlOiEwLHRvcDoxfSx2a3J1Z3VkcnV6ZWk6e25hbWU6InZLcnVn dURydXplaSIsdXJsOiJ2a3J1Z3VkcnV6ZWkucnUifSx2eWJyYWxpc21lOntuYW1l OiJ2eWJyYWxpIFNNRSIsdXJsOiJ2eWJyYWxpLnNtZS5zayJ9LHczdmFsaWRhdG9y OntuYW1lOiJIVE1MIFZhbGlkYXRvciIsdXJsOiJ2YWxpZGF0b3IudzMub3JnIn0s d2FuZWxvOnt9LHdlY2hhdDp7bmFtZToiV2VDaGF0In0sd2VoZWFydGl0OntuYW1l OiJXZSBIZWFydCBJdCIsc3VwcG9ydHNJbWFnZTohMH0sd2hhdHNhcHA6e25hbWU6 IldoYXRzQXBwIix0b3A6MX0sd2lzaG1pbmRyOntuYW1lOiJXaXNoTWluZHIifSx3 b3JkcHJlc3M6e25hbWU6IldvcmRQcmVzcyJ9LHd5a29wOnt0b3A6MSx1cmw6Ind5 a29wLnBsIn0seGluZzp7bmFtZToiWElORyJ9LHlhaG9vbWFpbDp7bmFtZToiWWFo b28gTWFpbCIsdXJsOiJtYWlsLnlhaG9vLmNvbSJ9LHlhbW1lcjp7fSx5b29rb3M6 e30seW9vbGluazp7dXJsOiJ5b29saW5rLmZyIn0seW9ydW1jdXl1bTp7fSx5dW1t bHk6e3N1cHBvcnRzSW1hZ2U6ITB9LHl1dWJ5Ont9LHpha2xhZG9rbmV0OntuYW1l OiJaYWtsYWRvay5uZXQiLHVybDoiemFrbGFkb2submV0In0semljemFjOntuYW1l OiJaaWNaYWMiLHVybDoiemljemFjLml0In0semluZ21lOntuYW1lOiJaaW5nTWUi LHVybDoibWUuemluZy52biJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9eyI1 MDBweCI6e30sYWJvdXRtZTp7bmFtZToiQWJvdXQubWUifSxiYW5kY2FtcDp7fSxi ZWhhbmNlOnt9LGJpdGJ1Y2tldDp7bmFtZToiQml0QnVja2V0In0sYmxvZ2dlcjp7 dG9wOjF9LGRldmlhbnRhcnQ6e25hbWU6IkRldmlhbnRBcnQifSxkaWdnOnt0b3A6 MX0sZGlzcXVzOnt9LGRyaWJiYmxlOnt9LGVsbG86e30sZXRzeTp7fSxmYWNlYm9v azp7dG9wOjF9LGZsaWNrcjp7fSxmb3Vyc3F1YXJlOnt9LGdpdGh1Yjp7bmFtZToi R2l0SHViIn0sZ2l0bGFiOntuYW1lOiJHaXRMYWIifSxnb29kcmVhZHM6e30sZ29v Z2xlX2ZvbGxvdzp7bmFtZToiR29vZ2xlIEZvbGxvdyJ9LGhhY2tlcm5ld3M6e25h bWU6IkhhY2tlciBOZXdzIn0saG91eno6e30saW5zdGFncmFtOnt9LGpzZmlkZGxl OntuYW1lOiJKU0ZpZGRsZSJ9LGxldHRlcmJveGQ6e30sbGlua2VkaW46e25hbWU6 IkxpbmtlZEluIix0b3A6MX0sbWFpbHRvOntuYW1lOiJFbWFpbCBBcHAiLHRvcDox fSxtZWRpdW06e30sbWVldHZpYmU6e25hbWU6Ik1lZXRWaWJlIn0sbWVzc2VuZ2Vy Ont9LG1peGNsb3VkOntuYW1lOiJNaXhDbG91ZCJ9LG15c3BhY2U6e3RvcDoxfSxv ZG5va2xhc3NuaWtpX3J1OntuYW1lOiJPZG5va2xhc3NuaWtpIn0scGVyaXNjb3Bl Ont9LHBpbnRlcmVzdDp7fSxwb2NrZXQ6e30scXVvcmE6e30scmF2ZWxyeTp7fSxy ZWRkaXQ6e3RvcDoxfSxyZW5yZW46e30scnNzOntuYW1lOiJSU1MifSxzY29vcGl0 OntuYW1lOiJTY29vcC5pdCJ9LHNpbmF3ZWlibzp7bmFtZToiU2luYSBXZWlibyIs dG9wOjF9LHNreXBlOnt9LHNsYXNoZG90OntuYW1lOiJTbGFzaERvdCJ9LHNsaWRl c2hhcmU6e25hbWU6IlNsaWRlU2hhcmUifSxzbmFwY2hhdDp7fSxzb3VuZGNsb3Vk OntuYW1lOiJTb3VuZENsb3VkIn0sc3BvdGlmeTp7fSxzdGFja19leGNoYW5nZTp7 bmFtZToiU3RhY2sgRXhjaGFuZ2UifSxzdGFja19vdmVyZmxvdzp7bmFtZToiU3Rh Y2sgT3ZlcmZsb3cifSxzdGVhbTp7fSxzdHVtYmxldXBvbjp7bmFtZToiU3R1bWJs ZVVwb24iLHRvcDoxfSx0ZWxlZ3JhbTp7fSx0dW1ibHI6e3RvcDoxfSx0d2l0Y2g6 e30sdHdpdHRlcjp7dG9wOjF9LHVudGFwcGQ6e30sdmltZW86e30sdmluZTp7fSx2 azp7bmFtZToiVmtvbnRha3RlIix0b3A6MX0sd2VjaGF0OntuYW1lOiJXZUNoYXQi fSx3ZWhlYXJ0aXQ6e25hbWU6IldlIEhlYXJ0IEl0In0sd29yZHByZXNzOntuYW1l OiJXb3JkUHJlc3MifSx4aW5nOntuYW1lOiJYSU5HIn0seWVscDp7fSx5b3V0dWJl OntuYW1lOiJZb3VUdWJlIn0seXVtbWx5Ont9fX0sZnVuY3Rpb24oZSx0KXtlLmV4 cG9ydHM9e2FkZHRoaXM6e3RvcDoxLGxpc3Q6ITF9LGNvbXBhY3Q6e3RvcDoxLG5h bWU6Ik1vcmUiLGxpc3Q6ITF9LGV4cGFuZGVkOntsaXN0OiExfSxtZW51Ont1cmw6 ImFwaS5hZGR0aGlzLmNvbSIsbGlzdDohMX0sbW9yZTp7dG9wOjEsbGlzdDohMX19 LGUuZXhwb3J0cy5zaGFyZVNlcnZpY2U9ImNvbXBhY3QifSxmdW5jdGlvbihlLHQp e2UuZXhwb3J0cz17YWRkcmVzc2JhcjoiQWRkcmVzcyBCYXIiLGNvdW50ZXI6IkFk ZFRoaXMiLGdvb2dsZV9wbHVzb25lOiJHb29nbGUgKzEiLHN0dW1ibGV1cG9uX2Jh ZGdlOiJTdHVtYmxlVXBvbiIsdHdlZXQ6IlR3ZWV0Iix0d2l0dGVyX2ZvbGxvd19u YXRpdmU6IlR3aXR0ZXIiLGxpbmtlZGluX2NvdW50ZXI6IkxpbmtlZEluIixmYWNl Ym9va19saWtlOiJGYWNlYm9vayBMaWtlIixmYWNlYm9va19zaGFyZToiRmFjZWJv b2sgU2hhcmUiLGZhY2Vib29rX3NlbmQ6IkZhY2Vib29rIFNlbmQiLHBpbnRlcmVz dF9waW5pdDoiUGludGVyZXN0IFBpbiBJdCJ9fSxmdW5jdGlvbihlLHQpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lOmUuc3Vi c3RyKDAsMSkudG9VcHBlckNhc2UoKStlLnN1YnN0cigxKX19LGZ1bmN0aW9uKGUs dCxuKXsidXNlIHN0cmljdCI7dmFyIGE9big3OCksaT1uKDc5KSxvPSI1ODU4NTgi O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hW2VdfHxlLG49aVt0XXx8bzty ZXR1cm4oIiMiK24pLnRvTG93ZXJDYXNlKCl9fSxmdW5jdGlvbihlLHQpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e3BpbnRlcmVzdDoicGludGVyZXN0X3NoYXJlIixw aW50ZXJlc3RfZm9sbG93OiJwaW50ZXJlc3Rfc2hhcmUiLGZvdXJzcXVhcmVfZm9s bG93OiJmb3Vyc3F1YXJlIixnb29nbGVfcGx1c29uZToiZ29vZ2xlX3BsdXNvbmVf c2hhcmUiLGdvb2dsZXBsdXM6Imdvb2dsZV9wbHVzb25lX3NoYXJlIixnb29nbGVf Zm9sbG93OiJnb29nbGVfcGx1c29uZV9zaGFyZSIsUlNTOiJyc3MiLGNvbXBhY3Q6 ImFkZHRoaXMiLGV4cGFuZGVkOiJhZGR0aGlzIixtZW51OiJhZGR0aGlzIixtb3Jl OiJhZGR0aGlzIixjb3VudGVyOiJhZGR0aGlzIixmYWNlYm9va19saWtlOiJmYWNl Ym9vayIsZmFjZWJvb2tfc2hhcmU6ImZhY2Vib29rIixmYWNlYm9va19zZW5kOiJm YWNlYm9vayIsbGlua2VkaW5fY291bnRlcjoibGlua2VkaW4iLHBpbnRlcmVzdF9w aW5pdDoicGludGVyZXN0X3NoYXJlIixzdHVtYmxldXBvbl9iYWRnZToic3R1bWJs ZXVwb24iLHR3ZWV0OiJ0d2l0dGVyIn19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRz PXsiNTAwcHgiOiIyMjIyMjIiLCIxMDB6YWtsYWRvayI6IjZDOERCRSIsYWJvdXRt ZToiMDU0QTc2IixhZGR0aGlzOiJGRjY1NTAiLGFkZnR5OiI5ZGNiNDMiLGFkaWZu aToiMzg4OGM4IixhZHZxcjoiRUM1OTIzIixhaW06IjhkYjgxZCIsYW1hem9uc21p bGU6IkZGOTkwMCIsYW1hem9ud2lzaGxpc3Q6IkZGOTkwMCIsYW1lbm1lOiIwODcy ZDgiLGFvbG1haWw6IjI4MjgyOCIsYXBzZW5zZToiZDc4ODE4IixhdGF2aToiRjI2 NzQ3IixiYWlkdToiMWQyZmUzIixiYWxhdGFyaW46IjAxOTk0OSIsYmFuZGNhbXA6 IjYwOTI5QyIsYmVhdDEwMDoiMzM5OUNBIixiZWhhbmNlOiIxNzZBRkYiLGJpdGJ1 Y2tldDoiMjE1MDgxIixiaXRseToiZjI2ZTJhIixiaXpzdWdhcjoiMUY3MkVBIixi bGFuZDoiZjA3YjE2IixibG9nZ2VyOiJGNTdEMDAiLGJsb2drZWVuOiJkYjY5YjYi LGJsb2dtYXJrczoiQTNERTM4Iixib2JyZG9icjoiMjg3NEM3Iixib256b2JveDoi YzgzODI4Iixib29rbWFya3ljejoiYTgxODE4Iixib29rbWVya2VuZGU6IjU1OGMx NSIsYm94OiIzMDg4YjEiLGJ1ZmZlcjoiMDAwMDAwIixjYW15b286ImFjZThmNyIs Y2FyZTI6IjZDQjQ0MCIsY2FzaG1lOiIyOEMxMDEiLGNpdGV1bGlrZToiMDg4OGM4 IixjbGVhbnByaW50OiI5N2JhN2EiLGNsZWFuc2F2ZToiNUJBNzQxIixjbG9vYjoi M0JCNDRCIixjb3NtaXE6IjRjYThkOCIsY3NzYmFzZWQ6IjM5NDkxOCIsZGVsaWNp b3VzOiIzMzk5RkYiLGRldmlhbnRhcnQ6IjA1Q0M0NyIsZGlhcnlfcnU6IjkzMkMy RSIsZGlnZzoiMjIxRTFFIixkaWdnaXRhOiI4OGI3NDgiLGRpaWdvOiIwODg4ZDgi LGRpc3F1czoiMkU5RkZGIixkcmliYmJsZToiRUE0Qzg5Iixkb21haW50b29sc3do b2lzOiIzMDU4OTEiLGRvdWJhbjoiMGU3NTEyIixkcmF1Z2llbToiZjQ3MzEyIixl ZGNhc3Q6IkUwM0U3QyIsZWZhY3RvcjoiNzc5N2I3IixlbGxvOiIwMDAwMDAiLGVt YWlsOiI4NDg0ODQiLGV0c3k6IkVBNkQyNCIsZXZlcm5vdGU6IjdmY2UyYyIsZXhj aGFuZ2xlOiJjYzAwMzMiLGZhYnVsb3VzbHk0MDoiNjIwZTE4IixmYWNlYm9vazoi M0I1OTk4IixmYWNlbmFtYToiMDA2OTlEIixmYXNoaW9saXN0YToiMzgzODM4Iixm YXZhYmxlOiIwMDljZTkiLGZhdmVzOiIwOGFlZDkiLGZhdm9yaXRlczoiZjVjYTU5 IixmYXZvcml0dXM6Ijk3NDYyZSIsZmluYW5jaWFsanVpY2U6IjI0MkQzOCIsZmxp Y2tyOiIyODI4MjgiLGZsaXBib2FyZDoiZjUyODI4Iixmb2xrZDoiMTc1Y2E2Iixm b29kbHZlOiJkNTFlNDgiLGZvdXJzcXVhcmU6IjJENUJFMyIsZ2c6IkQ3MjMyRCIs Z2l0aHViOiIxNzE1MTUiLGdpdGxhYjoiRTM0MjFDIixnbWFpbDoiREI0NDM3Iixn b29kcmVhZHM6IjM5MjEwRCIsZ29vZ2xlOiI0Mjg1RjQiLGdvb2dsZV9jbGFzc3Jv b206IjI1QTY2NyIsZ29vZ2xlX2ZvbGxvdzoiQ0Y0ODMyIixnb29nbGVfcGx1c29u ZV9zaGFyZToiREM0RTQxIixnb29nbGV0cmFuc2xhdGU6IjJjNzJjOCIsZ292bjoi MGNhOGVjIixoYWNrZXJuZXdzOiJGRjY2MDAiLGhhdGVuYToiMDhhZWQ5IixoZWRn ZWhvZ3M6IjA4MDgwOCIsaGlzdG9yaW91czoiYjg0OTQ5Iixob290c3VpdGU6IjAw MDAwMCIsaG90bWFpbDoiZjg5ODM5Iixob3V6ejoiNzRCOTQzIixpbmRleG9yOiI4 YmQ4NzgiLGluZm9ybWF6aW9uZToiMTA0RjZFIixpbnN0YWdyYW06IkUwMzU2NiIs aW5zdGFwYXBlcjoiMDAwMDAwIixpbnRlcm5ldGFyY2hpdmU6IjZlNmU2ZSIsaW9y Yml4OiIzODQ4NTMiLGphcHB5OiJmNTkyMTYiLGpzZmlkZGxlOiI0NDc4QTYiLGth a2FvOiJGQUI5MDAiLGtha2FvdGFsazoiRkFCOTAwIixrYWl4aW46ImRkMzk0ZSIs a2V0bm9vaToiMTg4OGI5IixraW5kbGVpdDoiMjgyODI4IixrbGVkeToiOGRiODFk IixsZXR0ZXJib3hkOiI3M0Q0NDgiLGxpZGFyOiIyY2E4ZDIiLGxpbmVtZToiMDBD MzAwIixsaW5rOiIxNzhCRjQiLGxpbmtlZGluOiIwMDc3QjUiLGxpbmt1ajoiNTg5 OGQ5IixsaXZlam91cm5hbDoiMGNhOGVjIixtYXJnYXJpbjoiRkQ5MzRBIixtYXJr bWU6ImQ4MDgwOCIsbWVkaXVtOiIyNzI3MjciLG1lZXR2aWJlOiJFQjMwNEIiLG1l aW52ejoiRkY3ODFFIixtZW1vbmljOiIwODM1NjgiLG1lbW9yaToiZWUyMjcxIixt ZW5lYW1lOiJmZjY0MDAiLG1lbmRlbGV5OiJhZjEyMmIiLG1lc3NlbmdlcjoiMDA4 NEZGIixtaXhjbG91ZDoiMzE0MzU5IixtaXhpOiJjZmFiNTkiLG1vZW1lc3RvOiIz QjVFODAiLG1yY25ldHdvcmtpdDoiYWJkNGVjIixteW1haWxydToiMTY1NDk2Iixt eXNwYWNlOiIyODI4MjgiLG15dmlkc3RlcjoiOTNGMjE3IixuNGc6ImQ4MDgwOCIs bmFzemFrbGFzYToiNDA3N2E3IixuZXR2aWJlczoiNDhkODI4IixuZXR2b3V6OiI0 RUJEMDgiLG5ld3NtZWJhY2s6IjMxNjg5NiIsbmV3c3ZpbmU6IjY0YTU1NiIsbnVq aWo6ImM4MDgwYSIsbnVyc2VzX2xvdW5nZToiMDk3MUJBIixvZG5va2xhc3NuaWtp X3J1OiJkNTc4MTkiLG9rbm90aXppZToiOEJDNTNFIixvbmVub3RlOiI3MzIxQTYi LG9wZW50aGVkb29yOiIyMjc3QkIiLG95eWxhOiJmNmNmMGUiLHBhZm5ldGRlOiJm NDA4MGQiLHBhdHJlb246IjIzMmQzMiIscGF5cGFsbWU6IjAwNzBiYSIscGRmbXl1 cmw6ImY4OTgyMyIscGVyaXNjb3BlOiIzRkE0QzQiLHBpbmJvYXJkOiIxMTExQUEi LHBpbnRlcmVzdDoiQ0IyMDI3IixwaW50ZXJlc3Rfc2hhcmU6IkNCMjAyNyIscGx1 cms6ImQ1NmEzMiIscG9ja2V0OiJFRTQwNTYiLHBvc3RlZXp5OiJmOGNlMmMiLHBy aW50OiI3MzhhOGQiLHByaW50ZnJpZW5kbHk6Ijg4Yjc0OCIscHVzaGE6IjA4Nzhi YSIscXVhbnRjYXN0OiIwODc4YmEiLHF1b3JhOiJCOTJCMjciLHFyc3JjOiI0QThC RjYiLHF6b25lOiIwOTg1REQiLHJhdmVscnk6IkREMEY1NiIscmVkZGl0OiJmZjU3 MDAiLHJlZGlmZjoiZDgwODA4IixyZW5yZW46IjAwNThBRSIscmVzZWFyY2hnYXRl OiIwMENDQkIiLHJldGVsbGl0eToiQjcwMTAwIixyc3M6IkVGODY0NyIsc2FmZWxp bmtpbmc6IjM4ODhjOCIsc2Nvb3BpdDoiOWRjYjQzIixzbGFzaGRvdDoiNzhENEI2 IixzbGlkZXNoYXJlOiIwMEE3QUEiLHNuYXBjaGF0OiJGRkREMDAiLHNoYXJlcjoi MDg4OEM4IixzaW5hd2VpYm86IkU2MTYyRCIsc2t5cm9jazoiMjgyODI4Iixza3lw ZToiMDBBRkYwIixzbGFjazoiNzhENEI2IixzbWlydToiYWYxMjJiIixzbXM6IjFF Q0U4RSIsc29kYWhlYWQ6ImZmOGMwMCIsc291bmRjbG91ZDoiRkY3NzAwIixzcGlu c25hcDoiOWRjYjQzIixzcG90aWZ5OiIyM0NGNUYiLHN0YWNrX292ZXJmbG93OiJF RjgyMzYiLHN0YWNrX2V4Y2hhbmdlOiIxRTUyOTYiLHN0YXJ0YWlkOiI0NDk4Yzgi LHN0YXJ0bGFwOiI0ODkxYjciLHN0ZWFtOiIwMTAxMDMiLHN0dWRpdno6IkRBMDYw RCIsc3R1ZmZwaXQ6IjJjNzJjOCIsc3R1bWJsZXVwb246IkVCNDkyNCIsc3R1bXBl ZGlhOiJGQzk3MDciLHN0eWxpc2hob21lOiJiZmQwOGQiLHN1cGJybzoiMzgzODM4 IixzdXJmaW5nYmlyZDoiMGNhOGVjIixzdmVqbzoiZjg5ODIzIixzeW1iYWxvbzoi NDA3N2E3Iix0YXJpbmdhOiIxNjU0OTYiLHRlY2huZXJkOiIzMTY4OTYiLHRlbGVn cmFtOiIwMDg4Q0MiLHRlbmNlbnRxcToiMDAwMDAwIix0ZW5jZW50d2VpYm86IjMx OUVERCIsdGhlZmFuY3k6IjRjYThkOCIsdGhlZnJlZWRpY3Rpb25hcnk6IjQ4OTFi NyIsdGhpc25leHQ6IjI4MjgyOCIsdHJlbGxvOiIwMDc5QkYiLHR1ZW50aToiNWY3 MjlkIix0dW1ibHI6IjM3NDU1QyIsdHdpdGNoOiI2NDQxQTUiLHR3aXR0ZXI6IjFE QTFGMiIsdHlwZXBhZDoiMDgwODA4Iix1bnRhcHBkOiJGRkNEMDAiLHVybGF1YnN3 ZXJrZGU6ImY4OTgyMyIsdmVubW86IjNEOTVDRSIsdmlhZGVvOiJmMDczNTUiLHZp YmVyOiI3QjUxOUQiLHZpbWVvOiIxQUI3RUEiLHZpbmU6IjAxQjQ4OCIsdmlyYjoi MDhhZWQ5Iix2aXNpdGV6bW9uc2l0ZToiN0RENkVBIix2azoiNjM4M0E4Iix2a3J1 Z3VkcnV6ZWk6ImU2NTIyOSIsdm94b3BvbGlzOiIxMDk3ZWIiLHZ5YnJhbGlzbWU6 IjMxOGVmNiIsdzN2YWxpZGF0b3I6IjE2NTQ5NiIsd2FuZWxvOiJDQ0NDQ0MiLHdl Y2hhdDoiMkRDMTAwIix3ZWhlYXJ0aXQ6IkZGNDQ3NyIsd2hhdHNhcHA6IjREQzI0 NyIsd2lzaG1pbmRyOiJFRjQ3NEYiLHdvcmRwcmVzczoiNTg1ODU4Iix3eWtvcDoi RkI4MDNGIix4aW5nOiIxYTc1NzYiLHlhaG9vbWFpbDoiM2EyMzRmIix5YW1tZXI6 IjJjYThkMiIseWVscDoiQzYwRDAwIix5b29rb3M6IjA4OThkOCIseW9vbGluazoi QTVDNzM2Iix5b3J1bWN1eXVtOiI1OTdEQTMiLHlvdW1vYjoiMTkxODQ3Iix5b3V0 dWJlOiJDRDIwMUYiLHl1bW1seToiRTI2MjIxIix5dXVieToiMjkwODM4Iix6YWts YWRva25ldDoiOUNDQzAwIix6aWN6YWM6IkZGODkxRiIsemluZ21lOiJGMDI5NzIi fX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWRvY3VtZW50 LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RS L1NWRzExL2ZlYXR1cmUjSW1hZ2UiLCIxLjEiKX0sZnVuY3Rpb24oZSx0LG4peyJ1 c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCxuLGEsaSxvLHMsdSxsLGYscCxo LG0sZyl7dmFyIF8sdixiLHcseCx5PXIuZGVmYXVsdChlLGcpO2lmKCF5KXJldHVy biBudWxsO189e2ZpbGw6byx3aWR0aDphLGhlaWdodDphfSx2PXt0aXRsZTpuLGFs dDp0fSxiPXtiYWNrZ3JvdW5kQ29sb3I6aSxsaW5lSGVpZ2h0OnMsaGVpZ2h0OnMs d2lkdGg6dSxib3JkZXJSYWRpdXM6bCxib3JkZXJXaWR0aDpmLGJvcmRlclN0eWxl OnAsYm9yZGVyQ29sb3I6aH0sdz1kLmRlZmF1bHQoeSxfKSx3PWMuZGVmYXVsdCh3 LHYpO3ZhciBrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyZXR1cm4g ay5jbGFzc05hbWU9ImF0LWljb24td3JhcHBlciIsay5hcHBlbmRDaGlsZCh3KSxt JiZrLmFwcGVuZENoaWxkKG0pLHg9ZC5kZWZhdWx0KGssYil9dC5fX2VzTW9kdWxl PSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oODIpLHI9YShvKSxzPW4oMzMwKSxkPWEo cyksdT1uKDMzMSksYz1hKHUpO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9u KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5f X2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaShlLHQpe3MuZGVmYXVs dCgic3RyaW5nIj09dHlwZW9mIGUsIkludmFsaWQgcmVxdWlyZWQgYXJndW1lbnQg YHNlcnZpY2VgLiBHb3QgJXMsIGV4cGVjdGVkIHN0cmluZy4iLGUpO3ZhciBuPWMo ZSk7cmV0dXJuIGhbbl09MSx1LmRlZmF1bHQobix0KX1mdW5jdGlvbiBvKCl7dmFy IGU9W107Zm9yKHZhciB0IGluIGgpZS5wdXNoKHQpO3JldHVybiBlfXQuX19lc01v ZHVsZT0hMCx0LmRlZmF1bHQ9aSx0LmdldEluY2x1ZGVkSWNvbnM9bzt2YXIgcj0o big4MyksbigyMSkpLHM9YShyKSxkPW4oODQpLHU9YShkKSxjPW4oMzI2KS5nZXRJ Y29uQ29kZSxsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksZj1kb2N1 bWVudC5ib2R5fHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIp WzBdLHA9MCxoPXt9O2wuaWQ9InNlcnZpY2UtaWNvbnMtIitwKyssZi5hcHBlbmRD aGlsZChsKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxl PSEwO3ZhciBuPSJTVkciO3QuRklMRV9GT1JNQVRfU1ZHPW59LGZ1bmN0aW9uKGUs dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2Vz TW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaShlKXtpZihlJiZlLl9fZXNN b2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4g ZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRb bl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9ZnVuY3Rpb24gbyhlLHQpe3Zh ciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRpdGxlIik7cmV0dXJuIG4uaWQ9 dCxuLnRleHRDb250ZW50PWIuZGVmYXVsdChlKSxufWZ1bmN0aW9uIHIoZSl7dmFy IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHksInN2ZyIpO3Quc2V0QXR0cmli dXRlKCJ4bWxucyIseSksdC5zZXRBdHRyaWJ1dGUoInhtbG5zOnhsaW5rIiwiaHR0 cDovL3d3dy53My5vcmcvMTk5OS94bGluayIpLHQuc2V0QXR0cmlidXRlKCJ2aWV3 Qm94IiwiMCAwIDMyIDMyIiksKytrO3ZhciBuPSJhdC1zdmctIitlKyItIitrO3Jl dHVybiB0LnNldEF0dHJpYnV0ZSgidmVyc2lvbiIsIjEuMSIpLHQuc2V0QXR0cmli dXRlKCJyb2xlIiwiaW1nIiksdC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRi eSIsbiksdC5hcHBlbmRDaGlsZChvKGUsbikpLHR9ZnVuY3Rpb24gcyhlLHQpe2lm KCJzdmciIT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe2Zvcih2YXIgbj10Lm93 bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHksZS50YWdOYW1lKSxhPTA7YTxl LmF0dHJpYnV0ZXMubGVuZ3RoO2ErKyl7dmFyIGk9ZS5hdHRyaWJ1dGVzW2FdLG89 aS5uYW1lLHI9aS52YWx1ZTtuLnNldEF0dHJpYnV0ZShvLHIpfXQuYXBwZW5kQ2hp bGQobil9Zm9yKHZhciBhPTA7YTxlLmNoaWxkTm9kZXMubGVuZ3RoO2ErKyl7dmFy IGQ9ZS5jaGlsZE5vZGVzW2FdO3MoZCx0KX1yZXR1cm4gdH1mdW5jdGlvbiBkKGUp e2Zvcig7MT09PWUuY2hpbGROb2Rlcy5sZW5ndGg7KWU9ZS5jaGlsZE5vZGVzWzBd O3JldHVybiBlfWZ1bmN0aW9uIHUoZSx0LG4pe3hbZV0/eFtlXS5wdXNoKHQpOnhb ZV09W3RdLG0uc3ZnW2VdKGZ1bmN0aW9uKGEpe3dbZV09cyhkKF8uZGVmYXVsdChh KSksdC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh5LCJnIikpO2Zvcih2 YXIgaT0wO2k8eFtlXS5sZW5ndGg7aSsrKXt2YXIgbz14W2VdW2ldO2MoZSxvKX14 W2VdPVtdLG4mJm4oKX0pfWZ1bmN0aW9uIGMoZSx0KXt0LmFwcGVuZENoaWxkKHdb ZV0uY2xvbmVOb2RlKCEwKSl9ZnVuY3Rpb24gbChlLHQpe3ZhciBuPXIoZSk7cmV0 dXJuIHdbZV0/KGMoZSxuKSx0JiZ0KCkpOnUoZSxuLHQpLG4uY2xhc3NOYW1lLmJh c2VWYWw9ImF0LWljb24gYXQtaWNvbi0iK2Usbn1mdW5jdGlvbiBmKGUsdCl7bS5z dmdbZV0mJm0uc3ZnW2VdKHQpfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gbS5zdmdb ZV18fChlPSJ1bmtub3duIiksbChlLHQpfXQuX19lc01vZHVsZT0hMCx0LmdldElj b25NYXJrdXA9Zix0LmRlZmF1bHQ9cDt2YXIgaD1uKDg1KSxtPWkoaCksZz1uKDMy NSksXz1hKGcpLHY9big3MSksYj1hKHYpLHc9e30seD17fSx5PSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwL3N2ZyIsaz0wfSxmdW5jdGlvbihlLHQsbil7dmFyIGE9e307 YS5kaWdnPWZ1bmN0aW9uKGUpe2Uobig4NikpfSxhLmZhY2Vib29rPWZ1bmN0aW9u KGUpe2Uobig4NykpfSxhLmdvb2dsZT1mdW5jdGlvbihlKXtlKG4oODgpKX0sYS5s aW5rZWRpbj1mdW5jdGlvbihlKXtlKG4oODkpKX0sYS5yZWRkaXQ9ZnVuY3Rpb24o ZSl7ZShuKDkwKSl9LGEuc3R1bWJsZXVwb249ZnVuY3Rpb24oZSl7ZShuKDkxKSl9 LGEudHVtYmxyPWZ1bmN0aW9uKGUpe2Uobig5MikpfSxhLnR3aXR0ZXI9ZnVuY3Rp b24oZSl7ZShuKDkzKSl9LGEubXlzcGFjZT1mdW5jdGlvbihlKXtlKG4oOTQpKX0s YS5ibG9nZ2VyPWZ1bmN0aW9uKGUpe2Uobig5NSkpfSxhLnByaW50PWZ1bmN0aW9u KGUpe2Uobig5NikpfSxhLmZhdm9yaXRlcz1mdW5jdGlvbihlKXtlKG4oOTcpKX0s YS5lbWFpbD1mdW5jdGlvbihlKXtlKG4oOTgpKX0sYS53eWtvcD1mdW5jdGlvbihl KXtlKG4oOTkpKX0sYS5tYWlsdG89ZnVuY3Rpb24oZSl7ZShuKDEwMCkpfSxhLnNp bmF3ZWlibz1mdW5jdGlvbihlKXtlKG4oMTAxKSl9LGEudms9ZnVuY3Rpb24oZSl7 ZShuKDEwMikpfSxhLnBpbnRlcmVzdF9zaGFyZT1mdW5jdGlvbihlKXtlKG4oMTAz KSl9LGEud2hhdHNhcHA9ZnVuY3Rpb24oZSl7ZShuKDEwNCkpfSxhLmFkZHRoaXM9 ZnVuY3Rpb24oZSl7ZShuKDEwNSkpfSxhLmFpbT1mdW5jdGlvbihlKXtuLmUoMixm dW5jdGlvbigpe2UobigxMDYpKX0pfSxhLmFtYXpvbndpc2hsaXN0PWZ1bmN0aW9u KGUpe24uZSgzLGZ1bmN0aW9uKCl7ZShuKDEwNykpfSl9LGEuYml0bHk9ZnVuY3Rp b24oZSl7bi5lKDQsZnVuY3Rpb24oKXtlKG4oMTA4KSl9KX0sYS5ibG9nbWFya3M9 ZnVuY3Rpb24oZSl7bi5lKDUsZnVuY3Rpb24oKXtlKG4oMTA5KSl9KX0sYS5kaWln bz1mdW5jdGlvbihlKXtuLmUoNixmdW5jdGlvbigpe2UobigxMTApKX0pfSxhLmhh dGVuYT1mdW5jdGlvbihlKXtuLmUoNyxmdW5jdGlvbigpe2UobigxMTEpKX0pfSxh Lm1lbmVhbWU9ZnVuY3Rpb24oZSl7bi5lKDgsZnVuY3Rpb24oKXtlKG4oMTEyKSl9 KX0sYS5uZXR2aWJlcz1mdW5jdGlvbihlKXtuLmUoOSxmdW5jdGlvbigpe2Uobigx MTMpKX0pfSxhLm5ldHZvdXo9ZnVuY3Rpb24oZSl7bi5lKDEwLGZ1bmN0aW9uKCl7 ZShuKDExNCkpfSl9LGEubmV3c3ZpbmU9ZnVuY3Rpb24oZSl7bi5lKDExLGZ1bmN0 aW9uKCl7ZShuKDExNSkpfSl9LGEubnVqaWo9ZnVuY3Rpb24oZSl7bi5lKDEyLGZ1 bmN0aW9uKCl7ZShuKDExNikpfSl9LGEudGhpc25leHQ9ZnVuY3Rpb24oZSl7bi5l KDEzLGZ1bmN0aW9uKCl7ZShuKDExNykpfSl9LGEubGl2ZWpvdXJuYWw9ZnVuY3Rp b24oZSl7bi5lKDE0LGZ1bmN0aW9uKCl7ZShuKDExOCkpfSl9LGEuZ21haWw9ZnVu Y3Rpb24oZSl7bi5lKDE1LGZ1bmN0aW9uKCl7ZShuKDExOSkpfSl9LGEuaG90bWFp bD1mdW5jdGlvbihlKXtuLmUoMTYsZnVuY3Rpb24oKXtlKG4oMTIwKSl9KX0sYS55 YWhvb21haWw9ZnVuY3Rpb24oZSl7bi5lKDE3LGZ1bmN0aW9uKCl7ZShuKDEyMSkp fSl9LGEuYW9sbWFpbD1mdW5jdGlvbihlKXtuLmUoMTgsZnVuY3Rpb24oKXtlKG4o MTIyKSl9KX0sYS5nb29nbGV0cmFuc2xhdGU9ZnVuY3Rpb24oZSl7bi5lKDE5LGZ1 bmN0aW9uKCl7ZShuKDEyMykpfSl9LGEud29yZHByZXNzPWZ1bmN0aW9uKGUpe24u ZSgyMCxmdW5jdGlvbigpe2UobigxMjQpKX0pfSxhLnR5cGVwYWQ9ZnVuY3Rpb24o ZSl7bi5lKDIxLGZ1bmN0aW9uKCl7ZShuKDEyNSkpfSl9LGEueWFtbWVyPWZ1bmN0 aW9uKGUpe24uZSgyMixmdW5jdGlvbigpe2UobigxMjYpKX0pfSxhLm9rbm90aXpp ZT1mdW5jdGlvbihlKXtuLmUoMjMsZnVuY3Rpb24oKXtlKG4oMTI3KSl9KX0sYS5v eXlsYT1mdW5jdGlvbihlKXtuLmUoMjQsZnVuY3Rpb24oKXtlKG4oMTI4KSl9KX0s YS5mYXZvcml0dXM9ZnVuY3Rpb24oZSl7bi5lKDI1LGZ1bmN0aW9uKCl7ZShuKDEy OSkpfSl9LGEuc3RhcnRhaWQ9ZnVuY3Rpb24oZSl7bi5lKDI2LGZ1bmN0aW9uKCl7 ZShuKDEzMCkpfSl9LGEuc3Zlam89ZnVuY3Rpb24oZSl7bi5lKDI3LGZ1bmN0aW9u KCl7ZShuKDEzMSkpfSl9LGEuc3ltYmFsb289ZnVuY3Rpb24oZSl7bi5lKDI4LGZ1 bmN0aW9uKCl7ZShuKDEzMikpfSl9LGEueW9vbGluaz1mdW5jdGlvbihlKXtuLmUo MjksZnVuY3Rpb24oKXtlKG4oMTMzKSl9KX0sYS5uNGc9ZnVuY3Rpb24oZSl7bi5l KDMwLGZ1bmN0aW9uKCl7ZShuKDEzNCkpfSl9LGEuZm9sa2Q9ZnVuY3Rpb24oZSl7 bi5lKDMxLGZ1bmN0aW9uKCl7ZShuKDEzNSkpfSl9LGEuZXZlcm5vdGU9ZnVuY3Rp b24oZSl7bi5lKDMyLGZ1bmN0aW9uKCl7ZShuKDEzNikpfSl9LGEuc3R1bXBlZGlh PWZ1bmN0aW9uKGUpe24uZSgzMyxmdW5jdGlvbigpe2UobigxMzcpKX0pfSxhLnN0 dWRpdno9ZnVuY3Rpb24oZSl7bi5lKDM0LGZ1bmN0aW9uKCl7ZShuKDEzOCkpfSl9 LGEucHVzaGE9ZnVuY3Rpb24oZSl7bi5lKDM1LGZ1bmN0aW9uKCl7ZShuKDEzOSkp fSl9LGEua2xlZHk9ZnVuY3Rpb24oZSl7bi5lKDM2LGZ1bmN0aW9uKCl7ZShuKDE0 MCkpfSl9LGEucGx1cms9ZnVuY3Rpb24oZSl7bi5lKDM3LGZ1bmN0aW9uKCl7ZShu KDE0MSkpfSl9LGEuY2l0ZXVsaWtlPWZ1bmN0aW9uKGUpe24uZSgzOCxmdW5jdGlv bigpe2UobigxNDIpKX0pfSxhLmNhcmUyPWZ1bmN0aW9uKGUpe24uZSgzOSxmdW5j dGlvbigpe2UobigxNDMpKX0pfSxhLmJhaWR1PWZ1bmN0aW9uKGUpe24uZSg0MCxm dW5jdGlvbigpe2UobigxNDQpKX0pfSxhLnByaW50ZnJpZW5kbHk9ZnVuY3Rpb24o ZSl7bi5lKDQxLGZ1bmN0aW9uKCl7ZShuKDE0NSkpfSl9LGEuc29kYWhlYWQ9ZnVu Y3Rpb24oZSl7bi5lKDQyLGZ1bmN0aW9uKCl7ZShuKDE0NikpfSl9LGEudmlhZGVv PWZ1bmN0aW9uKGUpe24uZSg0MyxmdW5jdGlvbigpe2UobigxNDcpKX0pfSxhLmFt ZW5tZT1mdW5jdGlvbihlKXtuLmUoNDQsZnVuY3Rpb24oKXtlKG4oMTQ4KSl9KX0s YS52aXJiPWZ1bmN0aW9uKGUpe24uZSg0NSxmdW5jdGlvbigpe2UobigxNDkpKX0p fSxhLmJpenN1Z2FyPWZ1bmN0aW9uKGUpe24uZSg0NixmdW5jdGlvbigpe2Uobigx NTApKX0pfSxhLmJvYnJkb2JyPWZ1bmN0aW9uKGUpe24uZSg0NyxmdW5jdGlvbigp e2UobigxNTEpKX0pfSxhLnNtaXJ1PWZ1bmN0aW9uKGUpe24uZSg0OCxmdW5jdGlv bigpe2UobigxNTIpKX0pfSxhLnN0dWZmcGl0PWZ1bmN0aW9uKGUpe24uZSg0OSxm dW5jdGlvbigpe2UobigxNTMpKX0pfSxhLmZhYnVsb3VzbHk0MD1mdW5jdGlvbihl KXtuLmUoNTAsZnVuY3Rpb24oKXtlKG4oMTU0KSl9KX0sYS55b3J1bWN1eXVtPWZ1 bmN0aW9uKGUpe24uZSg1MSxmdW5jdGlvbigpe2UobigxNTUpKX0pfSxhLmhhY2tl cm5ld3M9ZnVuY3Rpb24oZSl7bi5lKDUyLGZ1bmN0aW9uKCl7ZShuKDE1NikpfSl9 LGEuYm9uem9ib3g9ZnVuY3Rpb24oZSl7bi5lKDUzLGZ1bmN0aW9uKCl7ZShuKDE1 NykpfSl9LGEubWVpbnZ6PWZ1bmN0aW9uKGUpe24uZSg1NCxmdW5jdGlvbigpe2Uo bigxNTgpKX0pfSxhLnZpc2l0ZXptb25zaXRlPWZ1bmN0aW9uKGUpe24uZSg1NSxm dW5jdGlvbigpe2UobigxNTkpKX0pfSxhLm1lbW9yaT1mdW5jdGlvbihlKXtuLmUo NTYsZnVuY3Rpb24oKXtlKG4oMTYwKSl9KX0sYS5kaWdnaXRhPWZ1bmN0aW9uKGUp e24uZSg1NyxmdW5jdGlvbigpe2UobigxNjEpKX0pfSxhLmxpbmt1aj1mdW5jdGlv bihlKXtuLmUoNTgsZnVuY3Rpb24oKXtlKG4oMTYyKSl9KX0sYS50dWVudGk9ZnVu Y3Rpb24oZSl7bi5lKDU5LGZ1bmN0aW9uKCl7ZShuKDE2MykpfSl9LGEuaW5mb3Jt YXppb25lPWZ1bmN0aW9uKGUpe24uZSg2MCxmdW5jdGlvbigpe2UobigxNjQpKX0p fSxhLnN0YXJ0bGFwPWZ1bmN0aW9uKGUpe24uZSg2MSxmdW5jdGlvbigpe2Uobigx NjUpKX0pfSxhLm1vZW1lc3RvPWZ1bmN0aW9uKGUpe24uZSg2MixmdW5jdGlvbigp e2UobigxNjYpKX0pfSxhWyIxMDB6YWtsYWRvayJdPWZ1bmN0aW9uKGUpe24uZSg2 MyxmdW5jdGlvbigpe2UobigxNjcpKX0pfSxhLmRvbWFpbnRvb2xzd2hvaXM9ZnVu Y3Rpb24oZSl7bi5lKDY0LGZ1bmN0aW9uKCl7ZShuKDE2OCkpfSl9LGEucXVhbnRj YXN0PWZ1bmN0aW9uKGUpe24uZSg2NSxmdW5jdGlvbigpe2UobigxNjkpKX0pfSxh LnczdmFsaWRhdG9yPWZ1bmN0aW9uKGUpe24uZSg2NixmdW5jdGlvbigpe2Uobigx NzApKX0pfSxhLmhlZGdlaG9ncz1mdW5jdGlvbihlKXtuLmUoNjcsZnVuY3Rpb24o KXtlKG4oMTcxKSl9KX0sYS5jb3NtaXE9ZnVuY3Rpb24oZSl7bi5lKDY4LGZ1bmN0 aW9uKCl7ZShuKDE3MikpfSl9LGEuaW5zdGFwYXBlcj1mdW5jdGlvbihlKXtuLmUo NjksZnVuY3Rpb24oKXtlKG4oMTczKSl9KX0sYS56aWN6YWM9ZnVuY3Rpb24oZSl7 bi5lKDcwLGZ1bmN0aW9uKCl7ZShuKDE3NCkpfSl9LGEuYWRpZm5pPWZ1bmN0aW9u KGUpe24uZSg3MSxmdW5jdGlvbigpe2UobigxNzUpKX0pfSxhLmZhdmFibGU9ZnVu Y3Rpb24oZSl7bi5lKDcyLGZ1bmN0aW9uKCl7ZShuKDE3NikpfSl9LGEuY2FteW9v PWZ1bmN0aW9uKGUpe24uZSg3MyxmdW5jdGlvbigpe2UobigxNzcpKX0pfSxhLmJv eD1mdW5jdGlvbihlKXtuLmUoNzQsZnVuY3Rpb24oKXtlKG4oMTc4KSl9KX0sYS5i b29rbWFya3ljej1mdW5jdGlvbihlKXtuLmUoNzUsZnVuY3Rpb24oKXtlKG4oMTc5 KSl9KX0sYS5ldHN5PWZ1bmN0aW9uKGUpe24uZSg3NixmdW5jdGlvbigpe2Uobigx ODApKX0pfSxhLmJvb2ttZXJrZW5kZT1mdW5jdGlvbihlKXtuLmUoNzcsZnVuY3Rp b24oKXtlKG4oMTgxKSl9KX0sYS5wb3N0ZWV6eT1mdW5jdGlvbihlKXtuLmUoNzgs ZnVuY3Rpb24oKXtlKG4oMTgyKSl9KX0sYS56YWtsYWRva25ldD1mdW5jdGlvbihl KXtuLmUoNzksZnVuY3Rpb24oKXtlKG4oMTgzKSl9KX0sYS5kb3ViYW49ZnVuY3Rp b24oZSl7bi5lKDgwLGZ1bmN0aW9uKCl7ZShuKDE4NCkpfSl9LGEucGRmbXl1cmw9 ZnVuY3Rpb24oZSl7bi5lKDgxLGZ1bmN0aW9uKCl7ZShuKDE4NSkpfSl9LGEucmVk aWZmPWZ1bmN0aW9uKGUpe24uZSg4MixmdW5jdGlvbigpe2UobigxODYpKX0pfSxh Lm1hcmttZT1mdW5jdGlvbihlKXtuLmUoODMsZnVuY3Rpb24oKXtlKG4oMTg3KSl9 KX0sYS5uYXN6YWtsYXNhPWZ1bmN0aW9uKGUpe24uZSg4NCxmdW5jdGlvbigpe2Uo bigxODgpKX0pfSxhLnZ5YnJhbGlzbWU9ZnVuY3Rpb24oZSl7bi5lKDg1LGZ1bmN0 aW9uKCl7ZShuKDE4OSkpfSl9LGEubXltYWlscnU9ZnVuY3Rpb24oZSl7bi5lKDg2 LGZ1bmN0aW9uKCl7ZShuKDE5MCkpfSl9LGEucXpvbmU9ZnVuY3Rpb24oZSl7bi5l KDg3LGZ1bmN0aW9uKCl7ZShuKDE5MSkpfSl9LGEueGluZz1mdW5jdGlvbihlKXtu LmUoODgsZnVuY3Rpb24oKXtlKG4oMTkyKSl9KX0sYS5mYXNoaW9saXN0YT1mdW5j dGlvbihlKXtuLmUoODksZnVuY3Rpb24oKXtlKG4oMTkzKSl9KX0sYS5uZXdzbWVi YWNrPWZ1bmN0aW9uKGUpe24uZSg5MCxmdW5jdGlvbigpe2UobigxOTQpKX0pfSxh LmlvcmJpeD1mdW5jdGlvbihlKXtuLmUoOTEsZnVuY3Rpb24oKXtlKG4oMTk1KSl9 KX0sYS51cmxhdWJzd2Vya2RlPWZ1bmN0aW9uKGUpe24uZSg5MixmdW5jdGlvbigp e2UobigxOTYpKX0pfSxhLm1yY25ldHdvcmtpdD1mdW5jdGlvbihlKXtuLmUoOTMs ZnVuY3Rpb24oKXtlKG4oMTk3KSl9KX0sYS5wYWZuZXRkZT1mdW5jdGlvbihlKXtu LmUoOTQsZnVuY3Rpb24oKXtlKG4oMTk4KSl9KX0sYS5zcGluc25hcD1mdW5jdGlv bihlKXtuLmUoOTUsZnVuY3Rpb24oKXtlKG4oMTk5KSl9KX0sYS50ZWNobmVyZD1m dW5jdGlvbihlKXtuLmUoOTYsZnVuY3Rpb24oKXtlKG4oMjAwKSl9KX0sYS50aGVm cmVlZGljdGlvbmFyeT1mdW5jdGlvbihlKXtuLmUoOTcsZnVuY3Rpb24oKXtlKG4o MjAxKSl9KX0sYS55dXVieT1mdW5jdGlvbihlKXtuLmUoOTgsZnVuY3Rpb24oKXtl KG4oMjAyKSl9KX0sYS5hZGZ0eT1mdW5jdGlvbihlKXtuLmUoOTksZnVuY3Rpb24o KXtlKG4oMjAzKSl9KX0sYS5kcmF1Z2llbT1mdW5jdGlvbihlKXtuLmUoMTAwLGZ1 bmN0aW9uKCl7ZShuKDIwNCkpfSl9LGEuaGlzdG9yaW91cz1mdW5jdGlvbihlKXtu LmUoMTAxLGZ1bmN0aW9uKCl7ZShuKDIwNSkpfSl9LGEuaW5kZXhvcj1mdW5jdGlv bihlKXtuLmUoMTAyLGZ1bmN0aW9uKCl7ZShuKDIwNikpfSl9LGEubWVtb25pYz1m dW5jdGlvbihlKXtuLmUoMTAzLGZ1bmN0aW9uKCl7ZShuKDIwNykpfSl9LGEuYWRk cmVzc2Jhcj1mdW5jdGlvbihlKXtuLmUoMTA0LGZ1bmN0aW9uKCl7ZShuKDIwOCkp fSl9LGEua2FpeGluPWZ1bmN0aW9uKGUpe24uZSgxMDUsZnVuY3Rpb24oKXtlKG4o MjA5KSl9KX0sYS5vZG5va2xhc3NuaWtpX3J1PWZ1bmN0aW9uKGUpe24uZSgxMDYs ZnVuY3Rpb24oKXtlKG4oMjEwKSl9KX0sYS56aW5nbWU9ZnVuY3Rpb24oZSl7bi5l KDEwNyxmdW5jdGlvbigpe2UobigyMTEpKX0pfSxhLmphcHB5PWZ1bmN0aW9uKGUp e24uZSgxMDgsZnVuY3Rpb24oKXtlKG4oMjEyKSl9KX0sYS52a3J1Z3VkcnV6ZWk9 ZnVuY3Rpb24oZSl7bi5lKDEwOSxmdW5jdGlvbigpe2UobigyMTMpKX0pfSxhLnN0 eWxpc2hob21lPWZ1bmN0aW9uKGUpe24uZSgxMTAsZnVuY3Rpb24oKXtlKG4oMjE0 KSl9KX0sYS5raW5kbGVpdD1mdW5jdGlvbihlKXtuLmUoMTExLGZ1bmN0aW9uKCl7 ZShuKDIxNSkpfSl9LGEuc2Nvb3BpdD1mdW5jdGlvbihlKXtuLmUoMTEyLGZ1bmN0 aW9uKCl7ZShuKDIxNikpfSl9LGEuZ292bj1mdW5jdGlvbihlKXtuLmUoMTEzLGZ1 bmN0aW9uKCl7ZShuKDIxNykpfSl9LGEuc2t5cm9jaz1mdW5jdGlvbihlKXtuLmUo MTE0LGZ1bmN0aW9uKCl7ZShuKDIxOCkpfSl9LGEua2V0bm9vaT1mdW5jdGlvbihl KXtuLmUoMTE1LGZ1bmN0aW9uKCl7ZShuKDIxOSkpfSl9LGEudGFyaW5nYT1mdW5j dGlvbihlKXtuLmUoMTE2LGZ1bmN0aW9uKCl7ZShuKDIyMCkpfSl9LGEucmVzZWFy Y2hnYXRlPWZ1bmN0aW9uKGUpe24uZSgxMTcsZnVuY3Rpb24oKXtlKG4oMjIxKSl9 KX0sYS5ibG9na2Vlbj1mdW5jdGlvbihlKXtuLmUoMTE4LGZ1bmN0aW9uKCl7ZShu KDIyMikpfSl9LGEubWVuZGVsZXk9ZnVuY3Rpb24oZSl7bi5lKDExOSxmdW5jdGlv bigpe2UobigyMjMpKX0pfSxhLnFyc3JjPWZ1bmN0aW9uKGUpe24uZSgxMjAsZnVu Y3Rpb24oKXtlKG4oMjI0KSl9KX0sYS5ibGFuZD1mdW5jdGlvbihlKXtuLmUoMTIx LGZ1bmN0aW9uKCl7ZShuKDIyNSkpfSl9LGEuc2hhcmVyPWZ1bmN0aW9uKGUpe24u ZSgxMjIsZnVuY3Rpb24oKXtlKG4oMjI2KSl9KX0sYS5zYWZlbGlua2luZz1mdW5j dGlvbihlKXtuLmUoMTIzLGZ1bmN0aW9uKCl7ZShuKDIyNykpfSl9LGEuY2xlYW5w cmludD1mdW5jdGlvbihlKXtuLmUoMTI0LGZ1bmN0aW9uKCl7ZShuKDIyOCkpfSl9 LGEuZGlzcXVzPWZ1bmN0aW9uKGUpe24uZSgxMjUsZnVuY3Rpb24oKXtlKG4oMjI5 KSl9KX0sYS5zdXJmaW5nYmlyZD1mdW5jdGlvbihlKXtuLmUoMTI2LGZ1bmN0aW9u KCl7ZShuKDIzMCkpfSl9LGEubGlkYXI9ZnVuY3Rpb24oZSl7bi5lKDEyNyxmdW5j dGlvbigpe2UobigyMzEpKX0pfSxhLmJ1ZmZlcj1mdW5jdGlvbihlKXtuLmUoMTI4 LGZ1bmN0aW9uKCl7ZShuKDIzMikpfSl9LGEuYmVhdDEwMD1mdW5jdGlvbihlKXtu LmUoMTI5LGZ1bmN0aW9uKCl7ZShuKDIzMykpfSl9LGEuY3NzYmFzZWQ9ZnVuY3Rp b24oZSl7bi5lKDEzMCxmdW5jdGlvbigpe2UobigyMzQpKX0pfSxhLnlvb2tvcz1m dW5jdGlvbihlKXtuLmUoMTMxLGZ1bmN0aW9uKCl7ZShuKDIzNSkpfSl9LGEuZ29v Z2xlX3BsdXNvbmVfc2hhcmU9ZnVuY3Rpb24oZSl7bi5lKDEzMixmdW5jdGlvbigp e2UobigyMzYpKX0pfSxhLmFwc2Vuc2U9ZnVuY3Rpb24oZSl7bi5lKDEzMyxmdW5j dGlvbigpe2UobigyMzcpKX0pfSxhLmNsZWFuc2F2ZT1mdW5jdGlvbihlKXtuLmUo MTM0LGZ1bmN0aW9uKCl7ZShuKDIzOCkpfSl9LGEub3BlbnRoZWRvb3I9ZnVuY3Rp b24oZSl7bi5lKDEzNSxmdW5jdGlvbigpe2UobigyMzkpKX0pfSxhLmFkdnFyPWZ1 bmN0aW9uKGUpe24uZSgxMzYsZnVuY3Rpb24oKXtlKG4oMjQwKSl9KX0sYS5wb2Nr ZXQ9ZnVuY3Rpb24oZSl7bi5lKDEzNyxmdW5jdGlvbigpe2UobigyNDEpKX0pfSxh Lm1hcmdhcmluPWZ1bmN0aW9uKGUpe24uZSgxMzgsZnVuY3Rpb24oKXtlKG4oMjQy KSl9KX0sYS5nZz1mdW5jdGlvbihlKXtuLmUoMTM5LGZ1bmN0aW9uKCl7ZShuKDI0 MykpfSl9LGEudGhlZmFuY3k9ZnVuY3Rpb24oZSl7bi5lKDE0MCxmdW5jdGlvbigp e2UobigyNDQpKX0pfSxhLm1peGk9ZnVuY3Rpb24oZSl7bi5lKDE0MSxmdW5jdGlv bigpe2UobigyNDUpKX0pfSxhLndpc2htaW5kcj1mdW5jdGlvbihlKXtuLmUoMTQy LGZ1bmN0aW9uKCl7ZShuKDI0NikpfSl9LGEuZmluYW5jaWFsanVpY2U9ZnVuY3Rp b24oZSl7bi5lKDE0MyxmdW5jdGlvbigpe2UobigyNDcpKX0pfSxhLm15dmlkc3Rl cj1mdW5jdGlvbihlKXtuLmUoMTQ0LGZ1bmN0aW9uKCl7ZShuKDI0OCkpfSl9LGEu ZXhjaGFuZ2xlPWZ1bmN0aW9uKGUpe24uZSgxNDUsZnVuY3Rpb24oKXtlKG4oMjQ5 KSl9KX0sYS53YW5lbG89ZnVuY3Rpb24oZSl7bi5lKDE0NixmdW5jdGlvbigpe2Uo bigyNTApKX0pfSxhLmhvb3RzdWl0ZT1mdW5jdGlvbihlKXtuLmUoMTQ3LGZ1bmN0 aW9uKCl7ZShuKDI1MSkpfSl9LGEuaW50ZXJuZXRhcmNoaXZlPWZ1bmN0aW9uKGUp e24uZSgxNDgsZnVuY3Rpb24oKXtlKG4oMjUyKSl9KX0sYS5iZWhhbmNlPWZ1bmN0 aW9uKGUpe24uZSgxNDksZnVuY3Rpb24oKXtlKG4oMjUzKSl9KX0sYS52aW1lbz1m dW5jdGlvbihlKXtuLmUoMTUwLGZ1bmN0aW9uKCl7ZShuKDI1NCkpfSl9LGEuZmxp Y2tyPWZ1bmN0aW9uKGUpe24uZSgxNTEsZnVuY3Rpb24oKXtlKG4oMjU1KSl9KX0s YS5pbnN0YWdyYW09ZnVuY3Rpb24oZSl7bi5lKDE1MixmdW5jdGlvbigpe2Uobigy NTYpKX0pfSxhLmZvdXJzcXVhcmU9ZnVuY3Rpb24oZSl7bi5lKDE1MyxmdW5jdGlv bigpe2UobigyNTcpKX0pfSxhLnJzcz1mdW5jdGlvbihlKXtuLmUoMTU0LGZ1bmN0 aW9uKCl7ZShuKDI1OCkpfSl9LGEueW91dHViZT1mdW5jdGlvbihlKXtuLmUoMTU1 LGZ1bmN0aW9uKCl7ZShuKDI1OSkpfSl9LGEuZmxpcGJvYXJkPWZ1bmN0aW9uKGUp e24uZSgxNTYsZnVuY3Rpb24oKXtlKG4oMjYwKSl9KX0sYS5yZXRlbGxpdHk9ZnVu Y3Rpb24oZSl7bi5lKDE1NyxmdW5jdGlvbigpe2UobigyNjEpKX0pfSxhLm51cnNl c19sb3VuZ2U9ZnVuY3Rpb24oZSl7bi5lKDE1OCxmdW5jdGlvbigpe2UobigyNjIp KX0pfSxhLnl1bW1seT1mdW5jdGlvbihlKXtuLmUoMTU5LGZ1bmN0aW9uKCl7ZShu KDI2MykpfSl9LGEudmliZXI9ZnVuY3Rpb24oZSl7bi5lKDE2MCxmdW5jdGlvbigp e2UobigyNjQpKX0pfSxhLmVkY2FzdD1mdW5jdGlvbihlKXtuLmUoMTYxLGZ1bmN0 aW9uKCl7ZShuKDI2NSkpfSl9LGEuc2xhY2s9ZnVuY3Rpb24oZSl7bi5lKDE2Mixm dW5jdGlvbigpe2UobigyNjYpKX0pfSxhLnNreXBlPWZ1bmN0aW9uKGUpe24uZSgx NjMsZnVuY3Rpb24oKXtlKG4oMjY3KSl9KX0sYS5saW5rPWZ1bmN0aW9uKGUpe24u ZSgxNjQsZnVuY3Rpb24oKXtlKG4oMjY4KSl9KX0sYS5ob3V6ej1mdW5jdGlvbihl KXtuLmUoMTY1LGZ1bmN0aW9uKCl7ZShuKDI2OSkpfSl9LGEud2VoZWFydGl0PWZ1 bmN0aW9uKGUpe24uZSgxNjYsZnVuY3Rpb24oKXtlKG4oMjcwKSl9KX0sYS5nb29n bGVfY2xhc3Nyb29tPWZ1bmN0aW9uKGUpe24uZSgxNjcsZnVuY3Rpb24oKXtlKG4o MjcxKSl9KX0sYS5yZW5yZW49ZnVuY3Rpb24oZSl7bi5lKDE2OCxmdW5jdGlvbigp e2UobigyNzIpKX0pfSxhLnRlbmNlbnR3ZWlibz1mdW5jdGlvbihlKXtuLmUoMTY5 LGZ1bmN0aW9uKCl7ZShuKDI3MykpfSl9LGEubGluZW1lPWZ1bmN0aW9uKGUpe24u ZSgxNzAsZnVuY3Rpb24oKXtlKG4oMjc0KSl9KX0sYS5rYWthbz1mdW5jdGlvbihl KXtuLmUoMTcxLGZ1bmN0aW9uKCl7ZShuKDI3NSkpfSl9LGEudGVsZWdyYW09ZnVu Y3Rpb24oZSl7bi5lKDE3MixmdW5jdGlvbigpe2UobigyNzYpKX0pfSxhLmJhbGF0 YXJpbj1mdW5jdGlvbihlKXtuLmUoMTczLGZ1bmN0aW9uKCl7ZShuKDI3NykpfSl9 LGEucGluYm9hcmQ9ZnVuY3Rpb24oZSl7bi5lKDE3NCxmdW5jdGlvbigpe2Uobigy NzgpKX0pfSxhLmRpYXJ5X3J1PWZ1bmN0aW9uKGUpe24uZSgxNzUsZnVuY3Rpb24o KXtlKG4oMjc5KSl9KX0sYVsiNTAwcHgiXT1mdW5jdGlvbihlKXtuLmUoMTc2LGZ1 bmN0aW9uKCl7ZShuKDI4MCkpfSl9LGEuYWJvdXRtZT1mdW5jdGlvbihlKXtuLmUo MTc3LGZ1bmN0aW9uKCl7ZShuKDI4MSkpfSl9LGEuYmFuZGNhbXA9ZnVuY3Rpb24o ZSl7bi5lKDE3OCxmdW5jdGlvbigpe2UobigyODIpKX0pfSxhLmJpdGJ1Y2tldD1m dW5jdGlvbihlKXtuLmUoMTc5LGZ1bmN0aW9uKCl7ZShuKDI4MykpfSl9LGEuZHJp YmJibGU9ZnVuY3Rpb24oZSl7bi5lKDE4MCxmdW5jdGlvbigpe2UobigyODQpKX0p fSxhLmdpdGh1Yj1mdW5jdGlvbihlKXtuLmUoMTgxLGZ1bmN0aW9uKCl7ZShuKDI4 NSkpfSl9O2EuZ2l0bGFiPWZ1bmN0aW9uKGUpe24uZSgxODIsZnVuY3Rpb24oKXtl KG4oMjg2KSl9KX07YS5tZWRpdW09ZnVuY3Rpb24oZSl7bi5lKDE4MyxmdW5jdGlv bigpe2UobigyODcpKX0pfSxhLm1peGNsb3VkPWZ1bmN0aW9uKGUpe24uZSgxODQs ZnVuY3Rpb24oKXtlKG4oMjg4KSl9KX0sYS5wZXJpc2NvcGU9ZnVuY3Rpb24oZSl7 bi5lKDE4NSxmdW5jdGlvbigpe2UobigyODkpKX0pfSxhLnF1b3JhPWZ1bmN0aW9u KGUpe24uZSgxODYsZnVuY3Rpb24oKXtlKG4oMjkwKSl9KX0sYS5zbGFzaGRvdD1m dW5jdGlvbihlKXtuLmUoMTg3LGZ1bmN0aW9uKCl7ZShuKDI5MSkpfSl9LGEuc2xp ZGVzaGFyZT1mdW5jdGlvbihlKXtuLmUoMTg4LGZ1bmN0aW9uKCl7ZShuKDI5Mikp fSl9LGEuc25hcGNoYXQ9ZnVuY3Rpb24oZSl7bi5lKDE4OSxmdW5jdGlvbigpe2Uo bigyOTMpKX0pfSxhLnNvdW5kY2xvdWQ9ZnVuY3Rpb24oZSl7bi5lKDE5MCxmdW5j dGlvbigpe2UobigyOTQpKX0pfSxhLnNwb3RpZnk9ZnVuY3Rpb24oZSl7bi5lKDE5 MSxmdW5jdGlvbigpe2UobigyOTUpKX0pfSxhLnN0YWNrX292ZXJmbG93PWZ1bmN0 aW9uKGUpe24uZSgxOTIsZnVuY3Rpb24oKXtlKG4oMjk2KSl9KX0sYS5zdGVhbT1m dW5jdGlvbihlKXtuLmUoMTkzLGZ1bmN0aW9uKCl7ZShuKDI5NykpfSl9LGEudHdp dGNoPWZ1bmN0aW9uKGUpe24uZSgxOTQsZnVuY3Rpb24oKXtlKG4oMjk4KSl9KX0s YS52aW5lPWZ1bmN0aW9uKGUpe24uZSgxOTUsZnVuY3Rpb24oKXtlKG4oMjk5KSl9 KX0sYS50cmVsbG89ZnVuY3Rpb24oZSl7bi5lKDE5NixmdW5jdGlvbigpe2Uobigz MDApKX0pfSxhLndlY2hhdD1mdW5jdGlvbihlKXtuLmUoMTk3LGZ1bmN0aW9uKCl7 ZShuKDMwMSkpfSl9LGEudGVuY2VudHFxPWZ1bmN0aW9uKGUpe24uZSgxOTgsZnVu Y3Rpb24oKXtlKG4oMzAyKSl9KX0sYS5kZXZpYW50YXJ0PWZ1bmN0aW9uKGUpe24u ZSgxOTksZnVuY3Rpb24oKXtlKG4oMzAzKSl9KX0sYS5lbGxvPWZ1bmN0aW9uKGUp e24uZSgyMDAsZnVuY3Rpb24oKXtlKG4oMzA0KSl9KX0sYS5nb29kcmVhZHM9ZnVu Y3Rpb24oZSl7bi5lKDIwMSxmdW5jdGlvbigpe2UobigzMDUpKX0pfSxhLmpzZmlk ZGxlPWZ1bmN0aW9uKGUpe24uZSgyMDIsZnVuY3Rpb24oKXtlKG4oMzA2KSl9KX0s YS5sZXR0ZXJib3hkPWZ1bmN0aW9uKGUpe24uZSgyMDMsZnVuY3Rpb24oKXtlKG4o MzA3KSl9KX0sYS5yYXZlbHJ5PWZ1bmN0aW9uKGUpe24uZSgyMDQsZnVuY3Rpb24o KXtlKG4oMzA4KSl9KX0sYS5zdGFja19leGNoYW5nZT1mdW5jdGlvbihlKXtuLmUo MjA1LGZ1bmN0aW9uKCl7ZShuKDMwOSkpfSl9LGEudW50YXBwZD1mdW5jdGlvbihl KXtuLmUoMjA2LGZ1bmN0aW9uKCl7ZShuKDMxMCkpfSl9LGEueWVscD1mdW5jdGlv bihlKXtuLmUoMjA3LGZ1bmN0aW9uKCl7ZShuKDMxMSkpfSl9LGEubWVzc2VuZ2Vy PWZ1bmN0aW9uKGUpe24uZSgyMDgsZnVuY3Rpb24oKXtlKG4oMzEyKSl9KX0sYS5m YWNlbmFtYT1mdW5jdGlvbihlKXtuLmUoMjA5LGZ1bmN0aW9uKCl7ZShuKDMxMykp fSl9LGEuc21zPWZ1bmN0aW9uKGUpe24uZSgyMTAsZnVuY3Rpb24oKXtlKG4oMzE0 KSl9KX0sYS5hdGF2aT1mdW5jdGlvbihlKXtuLmUoMjExLGZ1bmN0aW9uKCl7ZShu KDMxNSkpfSl9LGEucGF5cGFsbWU9ZnVuY3Rpb24oZSl7bi5lKDIxMixmdW5jdGlv bigpe2UobigzMTYpKX0pfSxhLnZlbm1vPWZ1bmN0aW9uKGUpe24uZSgyMTMsZnVu Y3Rpb24oKXtlKG4oMzE3KSl9KX0sYS5hbWF6b25zbWlsZT1mdW5jdGlvbihlKXtu LmUoMjE0LGZ1bmN0aW9uKCl7ZShuKDMxOCkpfSl9LGEuY2FzaG1lPWZ1bmN0aW9u KGUpe24uZSgyMTUsZnVuY3Rpb24oKXtlKG4oMzE5KSl9KX0sYS5wYXRyZW9uPWZ1 bmN0aW9uKGUpe24uZSgyMTYsZnVuY3Rpb24oKXtlKG4oMzIwKSl9KX0sYS5vbmVu b3RlPWZ1bmN0aW9uKGUpe24uZSgyMTcsZnVuY3Rpb24oKXtlKG4oMzIxKSl9KX0s YS5tZWV0dmliZT1mdW5jdGlvbihlKXtuLmUoMjE4LGZ1bmN0aW9uKCl7ZShuKDMy MikpfSl9LGEua2FrYW90YWxrPWZ1bmN0aW9uKGUpe24uZSgyMTksZnVuY3Rpb24o KXtlKG4oMzIzKSl9KX0sYS51bmtub3duPWZ1bmN0aW9uKGUpe24uZSgyMjAsZnVu Y3Rpb24oKXtlKG4oMzI0KSl9KX0sZS5leHBvcnRzPXtzdmc6YX19LGZ1bmN0aW9u KGUsdCl7ZS5leHBvcnRzPSc8c3ZnIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgeG1s bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC41MjMg MTBoMi4xOXYxMC41NThINXYtNy40ODZoMy41MjNWMTB6bTAgOC43OTZ2LTMuOTYz aC0xLjMydjMuOTYzaDEuMzJ6bTUuMjczLTUuNzI0djcuNDg2aC0yLjJ2LTcuNDg2 aDIuMnptMC0zLjA3MnYyLjE5aC0yLjJWMTBoMi4yem0uODggMy4wNzJoNS43MjZW MjMuMTloLTUuNzI1di0xLjc1SDE4LjJ2LS44ODJoLTMuNTIzdi03LjQ4NnptMy41 MjQgNS43MjR2LTMuOTYzaC0xLjMydjMuOTYzaDEuMzJ6bTMuMDgyLTUuNzI0aDUu NzE0VjIzLjE5aC01LjcxNHYtMS43NWgzLjUxM3YtLjg4MmgtMy41MTN2LTcuNDg2 em0zLjUxMyA1LjcyNHYtMy45NjNoLTEuMzIydjMuOTYzaDEuMzIyeiIgZmlsbC1y dWxlPSJldmVub2RkIi8+PC9zdmc+J30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9 Jzxzdmcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB4bWxucz0iaHR0cDovL3d3dy53 My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0yMiA1LjE2Yy0uNDA2LS4wNTQtMS44 MDYtLjE2LTMuNDMtLjE2LTMuNCAwLTUuNzMzIDEuODI1LTUuNzMzIDUuMTd2Mi44 ODJIOXYzLjkxM2gzLjgzN1YyN2g0LjYwNFYxNi45NjVoMy44MjNsLjU4Ny0zLjkx M2gtNC40MXYtMi41YzAtMS4xMjMuMzQ3LTEuOTAzIDIuMTk4LTEuOTAzSDIyVjUu MTZ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nfSxmdW5jdGlvbihlLHQp e2UuZXhwb3J0cz0nPHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJo dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE2LjIxMyAxMy45 OThIMjYuNzJjLjE1Ny42OTMuMjggMS4zNDIuMjggMi4yNTVDMjcgMjIuNTMzIDIy LjcgMjcgMTYuMjI0IDI3IDEwLjAzIDI3IDUgMjIuMDcyIDUgMTZTMTAuMDMgNSAx Ni4yMjQgNWMzLjAzIDAgNS41NjggMS4wOSA3LjUxIDIuODdsLTMuMTg4IDMuMDM3 Yy0uODA4LS43NDgtMi4yMjMtMS42MjgtNC4zMjItMS42MjgtMy43MTUgMC02Ljc0 NSAzLjAyNC02Ljc0NSA2LjczIDAgMy43MDggMy4wMyA2LjczMyA2Ljc0NCA2Ljcz MyA0LjMgMCA1Ljg4Mi0yLjkxNSA2LjE3NC00LjY0MmgtNi4xODVWMTR6IiBmaWxs LXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0 cz0nPHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI2IDI1Ljk2M2gtNC4xODV2LTYu NTVjMC0xLjU2LS4wMjctMy41Ny0yLjE3NS0zLjU3LTIuMTggMC0yLjUxIDEuNy0y LjUxIDMuNDZ2Ni42NmgtNC4xODJWMTIuNDk1aDQuMDEydjEuODRoLjA1OGMuNTU4 LTEuMDU4IDEuOTI0LTIuMTc0IDMuOTYtMi4xNzQgNC4yNCAwIDUuMDIyIDIuNzkg NS4wMjIgNi40MTd2Ny4zODZ6TTguMjMgMTAuNjU1YTIuNDI2IDIuNDI2IDAgMCAx IDAtNC44NTUgMi40MjcgMi40MjcgMCAwIDEgMCA0Ljg1NXptLTIuMDk4IDEuODRo NC4xOXYxMy40NjhoLTQuMTlWMTIuNDk1eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+ PC9zdmc+J30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Jzxzdmcgd2lkdGg9IjMy IiBoZWlnaHQ9IjMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci PjxwYXRoIGQ9Ik0yNyAxNS41YTIuNDUyIDIuNDUyIDAgMCAxLTEuMzM4IDIuMjFj LjA5OC4zOC4xNDcuNzc3LjE0NyAxLjE5IDAgMS4yODMtLjQzNyAyLjQ3LTEuMzA4 IDMuNTYzLS44NzIgMS4wOTItMi4wNiAxLjk1NS0zLjU2NyAyLjU4OC0xLjUwNi42 MzQtMy4xNDMuOTUtNC45MS45NS0xLjc2OCAwLTMuNDAzLS4zMTYtNC45MDUtLjk1 LTEuNTAyLS42MzItMi42OS0xLjQ5NS0zLjU2LTIuNTg3LS44NzItMS4wOTItMS4z MDgtMi4yOC0xLjMwOC0zLjU2MiAwLS4zODguMDQ1LS43NzcuMTM1LTEuMTY2YTIu NDcgMi40NyAwIDAgMS0xLjAwNi0uOTEyYy0uMjUzLS40LS4zOC0uODQyLS4zOC0x LjMyMiAwLS42NzguMjM3LTEuMjYuNzEyLTEuNzQ0YTIuMzM0IDIuMzM0IDAgMCAx IDEuNzMtLjcyNmMuNjk3IDAgMS4yOS4yNiAxLjc4Ljc4MiAxLjc4NS0xLjI1OCAz Ljg5My0xLjkyOCA2LjMyNC0yLjAxbDEuNDI0LTYuNDY3YS40Mi40MiAwIDAgMSAu MTg0LS4yNi40LjQgMCAwIDEgLjMyLS4wNjNsNC41MyAxLjAwNmMuMTQ3LS4zMDYu MzY4LS41NTMuNjYyLS43NGExLjc4IDEuNzggMCAwIDEgLjk3LS4yNzhjLjUwOCAw IC45NC4xOCAxLjMwMi41NC4zNi4zNi41NC43OTYuNTQgMS4zMSAwIC41MTItLjE4 Ljk1LS41NCAxLjMxNS0uMzYuMzY0LS43OTQuNTQ2LTEuMzAyLjU0Ni0uNTA3IDAt Ljk0LS4xOC0xLjI5NS0uNTRhMS43OTMgMS43OTMgMCAwIDEtLjUzMy0xLjMwOGwt NC4xLS45Mi0xLjI3NyA1Ljg2YzIuNDU1LjA3NCA0LjU4LjczNiA2LjM3IDEuOTg1 YTIuMzE1IDIuMzE1IDAgMCAxIDEuNzU3LS43NTdjLjY4IDAgMS4yNTYuMjQyIDEu NzMuNzI2LjQ3Ni40ODQuNzEzIDEuMDY2LjcxMyAxLjc0NHptLTE2Ljg2OCAyLjQ3 YzAgLjUxMy4xNzguOTUuNTM0IDEuMzE1LjM1Ni4zNjUuNzg3LjU0NyAxLjI5NS41 NDcuNTA4IDAgLjk0Mi0uMTgyIDEuMzAyLS41NDcuMzYtLjM2NC41NC0uODAyLjU0 LTEuMzE1IDAtLjUxMy0uMTgtLjk1LS41NC0xLjMxLS4zNi0uMzYtLjc5NC0uNTQt MS4zLS41NC0uNSAwLS45My4xODMtMS4yOS41NDdhMS43OSAxLjc5IDAgMCAwLS41 NCAxLjMwM3ptOS45NDQgNC40MDZjLjA5LS4wOS4xMzUtLjIuMTM1LS4zMjNhLjQ0 NC40NDQgMCAwIDAtLjQ0LS40NDdjLS4xMjQgMC0uMjMuMDQyLS4zMi4xMjQtLjMz Ni4zNDgtLjgzLjYwNS0xLjQ4Ni43N2E3Ljk5IDcuOTkgMCAwIDEtMS45NjQuMjQ4 IDcuOTkgNy45OSAwIDAgMS0xLjk2NC0uMjQ4Yy0uNjU1LS4xNjUtMS4xNS0uNDIy LTEuNDg2LS43N2EuNDU2LjQ1NiAwIDAgMC0uMzItLjEyNC40MTQuNDE0IDAgMCAw LS4zMDYuMTI0LjQxLjQxIDAgMCAwLS4xMzUuMzE3LjQ1LjQ1IDAgMCAwIC4xMzQu MzNjLjM1Mi4zNTUuODM3LjYzNiAxLjQ1NS44NDMuNjE3LjIwNyAxLjExOC4zMyAx LjUwMy4zNjZhMTEuNiAxMS42IDAgMCAwIDEuMTE3LjA1NmMuMzYgMCAuNzMzLS4w MiAxLjExNy0uMDU2LjM4NS0uMDM3Ljg4Ni0uMTYgMS41MDQtLjM2Ni42Mi0uMjA3 IDEuMTA0LS40ODggMS40NTYtLjg0NHptLS4wMzctMi41NDRjLjUwNyAwIC45Mzgt LjE4MiAxLjI5NC0uNTQ3LjM1Ni0uMzY0LjUzNC0uODAyLjUzNC0xLjMxNSAwLS41 MDUtLjE4LS45NC0uNTQtMS4zMDNhMS43NSAxLjc1IDAgMCAwLTEuMjktLjU0NmMt LjUwNiAwLS45NC4xOC0xLjMuNTQtLjM2LjM2LS41NC43OTctLjU0IDEuMzFzLjE4 Ljk1LjU0IDEuMzE1Yy4zNi4zNjUuNzk0LjU0NyAxLjMuNTQ3eiIgZmlsbC1ydWxl PSJldmVub2RkIi8+PC9zdmc+J30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Jzxz dmcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB4bWxucz0iaHR0cDovL3d3dy53My5v cmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNy4xNyAxNC4yOWwxLjUuNyAyLjIzNC0u NjY1di0xLjU1OEMyMC45MDQgMTAuMTIgMTguNjcgOCAxNiA4Yy0yLjY1OCAwLTQu OTA0IDIuMTA4LTQuOTA0IDQuNzMydjcuMTA0YzAgLjY1NC0uNTI3IDEuMTctMS4x NyAxLjE3LS42NCAwLTEuMTY4LS41MTYtMS4xNjgtMS4xN3YtMy4wMDJINXYzLjA0 OGMwIDIuNzE2IDIuMiA0LjkxNiA0LjkxNiA0LjkxNiAyLjY5MiAwIDQuOTE1LTIu MTY2IDQuOTE1LTQuODQ3di03LjAxYzAtLjY0My41MjgtMS4xNyAxLjE3LTEuMTcu NjQyIDAgMS4xNy41MjcgMS4xNyAxLjE3djEuMzV6bTYuMDcyIDIuNTQ0djMuMTVj MCAuNjQzLS41MjcgMS4xNi0xLjE3IDEuMTYtLjY0IDAtMS4xNjgtLjUxNy0xLjE2 OC0xLjE2di0zLjA5MmwtMi4yMzQuNjY0LTEuNS0uN3YzLjA3MmMwIDIuNjkzIDIu MjEgNC44NyA0LjkxNCA0Ljg3IDIuNzE2IDAgNC45MTYtMi4yIDQuOTE2LTQuOTE2 di0zLjA0OGgtMy43NTh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nfSxm dW5jdGlvbihlLHQpe2UuZXhwb3J0cz0nPHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0i MzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0i TTE5LjU5IDIyLjE3NmMtLjM5Mi4xODYtMS4xNC4zNDgtMS42OTUuMzYyLTEuNjgy LjA0NS0yLjAwOC0xLjE4LTIuMDIyLTIuMDdWMTMuOTNoNC4yMTh2LTMuMThIMTUu ODlWNS40MDNoLTMuMDc2Yy0uMDUgMC0uMTM4LjA0NC0uMTUuMTU3LS4xOCAxLjYz Ni0uOTQ3IDQuNTEtNC4xMzMgNS42NnYyLjcxaDIuMTI0djYuODYyYzAgMi4zNSAx LjczMyA1LjY4OCA2LjMwOCA1LjYxIDEuNTQ0LS4wMjggMy4yNTgtLjY3NCAzLjYz Ny0xLjIzbC0xLjAxLTIuOTk2IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4n fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0nPHN2ZyB3aWR0aD0iMzIiIGhlaWdo dD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGgg ZD0iTTI3Ljk5NiAxMC4xMTZjLS44MS4zNi0xLjY4LjYwMi0yLjU5Mi43MWE0LjUy NiA0LjUyNiAwIDAgMCAxLjk4NC0yLjQ5NiA5LjAzNyA5LjAzNyAwIDAgMS0yLjg2 NiAxLjA5NSA0LjUxMyA0LjUxMyAwIDAgMC03LjY5IDQuMTE2IDEyLjgxIDEyLjgx IDAgMCAxLTkuMy00LjcxNSA0LjQ5IDQuNDkgMCAwIDAtLjYxMiAyLjI3IDQuNTEg NC41MSAwIDAgMCAyLjAwOCAzLjc1NSA0LjQ5NSA0LjQ5NSAwIDAgMS0yLjA0NC0u NTY0di4wNTdhNC41MTUgNC41MTUgMCAwIDAgMy42MiA0LjQyNSA0LjUyIDQuNTIg MCAwIDEtMi4wNC4wNzcgNC41MTcgNC41MTcgMCAwIDAgNC4yMTcgMy4xMzQgOS4w NTUgOS4wNTUgMCAwIDEtNS42MDQgMS45M0E5LjE4IDkuMTggMCAwIDEgNiAyMy44 NWExMi43NzMgMTIuNzczIDAgMCAwIDYuOTE4IDIuMDI3YzguMyAwIDEyLjg0LTYu ODc2IDEyLjg0LTEyLjg0IDAtLjE5NS0uMDA1LS4zOS0uMDE0LS41ODNhOS4xNzIg OS4xNzIgMCAwIDAgMi4yNTItMi4zMzYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwv c3ZnPid9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPSc8c3ZnIHdpZHRoPSIzMiIg aGVpZ2h0PSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48 cGF0aCBkPSJNMTkuOTk2IDExLjc1N2MxLjkwNSAwIDMuNDUtMS41MTMgMy40NS0z LjM4QzIzLjQ0NSA2LjUxMyAyMS45IDUgMTkuOTk1IDVjLTEuOTAzIDAtMy40NDgg MS41MTItMy40NDggMy4zNzhzMS41NDUgMy4zOCAzLjQ0OCAzLjM4em00Ljk5NSA1 LjIzM2MtLjA5LTIuNTc0LTIuMjQyLTQuNjM4LTQuODkzLTQuNjM4YTQuOTM0IDQu OTM0IDAgMCAwLTMuMjQgMS4yMDYgMy42MiAzLjYyIDAgMCAwLTMuMzE4LTIuMTMz Yy0uOTQ0IDAtMS44LjM1Ni0yLjQ0My45MzVhMi41OTYgMi41OTYgMCAwIDAtMi40 OTQtMS44MmMtMS40MDcgMC0yLjU1IDEuMDkzLTIuNiAyLjQ2Mkg2djQuNzgzaDMu OTJ2My43MTJoNS4yNzZWMjZIMjV2LTkuMDFoLS4wMXptLTExLjUyNi02LjAwNmMx LjQwNSAwIDIuNTQ1LTEuMTE2IDIuNTQ1LTIuNDkyQzE2LjAxIDcuMTE1IDE0Ljg3 IDYgMTMuNDYzIDYgMTIuMDYgNiAxMC45MiA3LjExNCAxMC45MiA4LjQ5YzAgMS4z NzYgMS4xNCAyLjQ5MiAyLjU0NCAyLjQ5MnptLTQuOTE0LS43NjJjMS4wMTIgMCAx LjgzLS44MDMgMS44My0xLjc5NCAwLS45OTItLjgxOC0xLjc5NS0xLjgzLTEuNzk1 LTEuMDEgMC0xLjgzLjgwNC0xLjgzIDEuNzk1IDAgLjk5LjgyIDEuNzk0IDEuODMg MS43OTR6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nfSxmdW5jdGlvbihl LHQpe2UuZXhwb3J0cz0nPHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5z PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE5Ljg2NCAy MS4zOEgxMS44NGExLjcxMiAxLjcxMiAwIDAgMSAwLTMuNDI1aDguMDI0YTEuNzEy IDEuNzEyIDAgMCAxIDAgMy40MjV6bS03LjU0Mi0xMS4yN2w0LjAxMi4wNjNhMS43 MTIgMS43MTIgMCAwIDEtLjA1NCAzLjQyNGwtNC4wMTItLjA2NGExLjcxMiAxLjcx MiAwIDAgMSAuMDU0LTMuNDI0em0xMy40IDkuNDA0Yy0uMDA3LS4zNzQtLjAwOC0u NzEtLjAxLTEuMDE0LS4wMDYtMS41OC0uMDEyLTIuODMtMS4wMTYtMy44MDMtLjcx Ni0uNjk0LTEuNTY1LS45MTQtMi44NTUtLjk2Mi4xNzYtLjc0Ny4yMjYtMS41NzUu MTQ1LTIuNDctLjAyLTIuOTczLTIuMjM0LTUuMTgtNS4zMDQtNS4yNjRoLS4wNDNs LTQuNjkyLjA3MmMtMS44NDQtLjAwNy0zLjMuNTMtNC4zMzIgMS42MDYtLjYzOC42 NjYtMS4zNjIgMS44My0xLjQ1IDMuNzJINi4xNnYuMDU3YTguNiA4LjYgMCAwIDAt LjAwNi4zOTNsLS4xMiA3LjEyNWMtLjAwOC4xNDMtLjAxNS4yODgtLjAxNi40Mzct LjEyIDIuMDg4LjM3MiAzLjcyOCAxLjQ2MyA0Ljg3NiAxLjA3OCAxLjEzMiAyLjY2 NCAxLjcwNiA0LjcxNSAxLjcwNkgxOS41MTZjMS44NC0uMDE3IDMuMzkzLS42MjQg NC40OTQtMS43NTcgMS4xLTEuMTMyIDEuNjkyLTIuNzQzIDEuNzEzLTQuNjZ2LS4w NnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPid9LGZ1bmN0aW9uKGUsdCl7 ZS5leHBvcnRzPSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2 ZyIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBkPSJNMjQuNjcgMTAuNjJo LTIuODZWNy40OUgxMC44MnYzLjEySDcuOTVjLS41IDAtLjkuNC0uOS45djcuNjZo My43N3YxLjMxTDE1IDI0LjY2aDYuODF2LTUuNDRoMy43N3YtNy43Yy0uMDEtLjUt LjQxLS45LS45MS0uOXpNMTEuODggOC41Nmg4Ljg2djIuMDZoLTguODZWOC41Nnpt MTAuOTggOS4xOGgtMS4wNXYtMi4xaC0xLjA2djcuOTZIMTYuNGMtMS41OCAwLS44 Mi0zLjc0LS44Mi0zLjc0cy0zLjY1Ljg5LTMuNjktLjc4di0zLjQzaC0xLjA2djIu MDZIOS43N3YtMy41OGgxMy4wOXYzLjYxem0uNzUtNC45MWMtLjQgMC0uNzItLjMy LS43Mi0uNzJzLjMyLS43Mi43Mi0uNzJjLjQgMCAuNzIuMzIuNzIuNzJzLS4zMi43 Mi0uNzIuNzJ6bS00LjEyIDIuOTZoLTYuMXYxLjA2aDYuMXYtMS4wNnptLTYuMTEg My4xNWg2LjF2LTEuMDZoLTYuMXYxLjA2eiIvPjwvc3ZnPid9LGZ1bmN0aW9uKGUs dCl7ZS5leHBvcnRzPSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw L3N2ZyIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIj48cGF0aCBkPSJNMjYuNTYgMTMu NTZhLjQzMi40MzIgMCAwIDAtLjQtLjI5aC03LjUxbC0yLjMyLTcuMTRjLS4wNi0u MTctLjIyLS4yOC0uMzktLjI4cy0uMzQuMTEtLjM5LjI4bC0yLjM0IDcuMTRINS43 MmMtLjE4IDAtLjM0LjEyLS4zOS4yOS0uMDYuMTcuMDEuMzUuMTUuNDZsNi4wNiA0 LjQyLTIuMzQgNy4xN2MtLjA2LjE3LjAxLjM1LjE1LjQ2LjE0LjExLjM0LjEuNDkg MGw2LjEtNC40MyA2LjA5IDQuNDNjLjA3LjA1LjE2LjA4LjI0LjA4cy4xNy0uMDMu MjQtLjA4Yy4xNS0uMS4yLS4yOS4xNS0uNDZsLTIuMzQtNy4xOCA2LjA4LTQuNDJh LjM3LjM3IDAgMCAwIC4xNi0uNDV6Ii8+PC9zdmc+J30sZnVuY3Rpb24oZSx0KXtl LmV4cG9ydHM9Jzxzdmcgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB4bWxucz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+ PHBhdGggZD0iTTI3IDIyLjc1N2MwIDEuMjQtLjk4OCAyLjI0My0yLjE5IDIuMjQz SDcuMTlDNS45OCAyNSA1IDIzLjk5NCA1IDIyLjc1N1YxMy42N2MwLS41NTYuMzkt Ljc3My44NTUtLjQ5Nmw4Ljc4IDUuMjM4Yy43ODIuNDY3IDEuOTUuNDY3IDIuNzMg MGw4Ljc4LTUuMjM4Yy40NzItLjI4Ljg1NS0uMDYzLjg1NS40OTV2OS4wODd6Ii8+ PHBhdGggZD0iTTI3IDkuMjQzQzI3IDguMDA2IDI2LjAyIDcgMjQuODEgN0g3LjE5 QzUuOTg4IDcgNSA4LjAwNCA1IDkuMjQzdi40NjVjMCAuNTU0LjM4NSAxLjIzMi44 NTcgMS41MTRsOS42MSA1LjczM2MuMjY3LjE2LjguMTYgMS4wNjcgMGw5LjYxLTUu NzMzYy40NzMtLjI4My44NTYtLjk2Ljg1Ni0xLjUxNHYtLjQ2NXoiLz48L2c+PC9z dmc+J30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9Jzxzdmcgd2lkdGg9IjMyIiBo ZWlnaHQ9IjMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxn IGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTE0LjcyMiAxOS43ODRsLTMu NDgtNi44MzItMi42NjcgMS4zNiAzLjgyIDcuNDk3LjA1Ni0uMDMuMzEzLjYxIDEw LjYwOC01LjQwNC0uNDgtLjk0NC0zLjY1LTcuMTY1LTIuNjY3IDEuMzYgMy40OCA2 LjgzLTEuMzMyLjY4LTMuNDgtNi44MzItMi42NjYgMS4zNTggMy40OCA2LjgzMi0x LjMzMi42OHoiLz48cGF0aCBkPSJNNy4zNzIgMTIuNzdjMC0yLjM4IDEuODYtNC4z MDggNC4xNTItNC4zMDhoOC45NTJjMi4yOTQgMCA0LjE1MiAxLjkyOCA0LjE1MiA0 LjMwOHY2LjQ2YzAgMi4zOC0xLjg2IDQuMzA4LTQuMTUyIDQuMzA4aC04Ljk1MmMt Mi4yOTQgMC00LjE1Mi0xLjkyOC00LjE1Mi00LjMwOHYtNi40NnpNNSAxMi43N3Y2 LjQ2QzUgMjIuOTcgNy45MiAyNiAxMS41MjQgMjZoOC45NTJDMjQuMDggMjYgMjcg MjIuOTcgMjcgMTkuMjN2LTYuNDZDMjcgOS4wMyAyNC4wOCA2IDIwLjQ3NiA2aC04 Ljk1MkM3LjkyIDYgNSA5LjAzIDUgMTIuNzd6Ii8+PC9nPjwvc3ZnPid9LGZ1bmN0 aW9uKGUsdCl7ZS5leHBvcnRzPSc8c3ZnIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIg eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsLXJ1bGU9 ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yNi42ODQgMjMuMjY0SDQuOTQ4di0xMi44OGwu Mi0uMWMuMzAzLS4yMDIgNy4wNDYtNC43MyA4LjE1Mi01LjQzNSAxLjQxLS45MDcg My4yMi0uODA2IDQuNjMuMSAxLjMwOC44MDQgOC40NTMgNS4zMzMgOC40NTMgNS4z MzNsLjIuMS4xIDEyLjg4em0tMjAuNjMtMS4wMDZIMjUuNjh2LTExLjI3Yy0xLjIw Ny0uODA2LTcuMDQ0LTQuNTMtOC4yNTItNS4xMzMtMS4xMDctLjcwNC0yLjUxNS0u NzA0LTMuNjIyLS4xLTEuMDA3LjYwMy02Ljc0MyA0LjUyOC03Ljk1IDUuMjMyLjIu MS4yIDExLjI3LjIgMTEuMjd6Ii8+PHBhdGggZD0iTTIxLjc1MyAxNi42MjJIMTAu MDhhMS41OSAxLjU5IDAgMCAxLTEuNjEtMS42MXYtMy4wMmMwLS45MDUuNzA0LTEu NjEgMS42MS0xLjYxaDExLjY3M2MuOTA2IDAgMS42MS43MDUgMS42MSAxLjYxdjMu MDJhMS41OSAxLjU5IDAgMCAxLTEuNjEgMS42MXpNOS45OCAxMS40OWMtLjQwNCAw LS42MDUuMzAyLS42MDUuNjA0djMuMDJjMCAuNC4zMDIuNjAzLjYwNC42MDNIMjEu NjVjLjQwMyAwIC42MDQtLjMwMi42MDQtLjYwNHYtMy4wMmMwLS40MDItLjMwMi0u NjAzLS42MDQtLjYwM0g5Ljk4eiIvPjxwYXRoIGQ9Ik0yNS43NzggMjEuOTU2di0x MC45N2wtNS44MzcgNC41MyA1LjgzOCA2LjQ0ek01Ljk1NCAyMS45NTZ2LTEwLjk3 bDUuODM3IDQuNTMtNS44MzYgNi40NHoiLz48cGF0aCBkPSJNMjUuNzc4IDIyLjc2 bC02LjEzOC02Ljc0aC03LjU0OGwtNi4xMzcgNi43NC0uODA2LS42MDMgNi41NC03 LjE0NWg4LjM1M2w2LjU0IDcuMTQ1LS44MDUuNjA0eiIvPjxwYXRoIGQ9Ik0yNS45 NDUgMTAuMzM0bC42MS44LTYuMzIgNC44MjMtLjYxLS44ek01LjkwMiAxMC4zODZs Ni4zMjYgNC44MTQtLjYxLjgwMi02LjMyNi00LjgxNXpNMTUuODE2IDE3LjgzbC4z MDIgOC4yNTIgMi4wMTMtMi41MTYgMi4wMTMgNC4yMjYgMS4xMDctLjUwMy0yLjEx My00LjIyNyAzLjIyLS4yLTYuNTQtNS4wMzN6Ii8+PC9nPjwvc3ZnPid9LGZ1bmN0 aW9uKGUsdCl7ZS5leHBvcnRzPSc8c3ZnIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIg eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsLXJ1bGU9 ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xNC4yNCAyMy44MDhjLTMuNjQuMzY3LTYuNzg1 LTEuMzA3LTcuMDIyLTMuNzM0LS4yMzYtMi40MyAyLjUyNS00LjY5MyA2LjE2NC01 LjA2IDMuNjQyLS4zNjcgNi43ODYgMS4zMDcgNy4wMiAzLjczNC4yNCAyLjQzLTIu NTIyIDQuNjk2LTYuMTYgNS4wNm03LjI4LTguMDYzYy0uMzEtLjA5Ni0uNTIzLS4x NTctLjM2Mi0uNTcuMzUyLS44OTguMzktMS42NzIuMDA2LTIuMjI3LS43MTMtMS4w MzYtMi42NjctLjk4LTQuOTA3LS4wMjggMCAwLS43MDUuMzEyLS41MjMtLjI1My4z NDMtMS4xMjUuMjktMi4wNjUtLjI0My0yLjYxLTEuMjE0LTEuMjM4LTQuNDQ2LjA0 NS03LjIxNiAyLjg2QzYuMjA1IDE1LjAyMyA1IDE3LjI2IDUgMTkuMTkyYzAgMy42 OTQgNC42NjQgNS45NDIgOS4yMjYgNS45NDIgNS45OCAwIDkuOTYtMy41MyA5Ljk2 LTYuMzMzLjAwMy0xLjY5NS0xLjQwMi0yLjY1Ny0yLjY2NS0zLjA1NU0yNS40OTQg OC45ODNhNS43NiA1Ljc2IDAgMCAwLTUuNTQyLTEuODIzLjg1NS44NTUgMCAwIDAt LjY0NiAxLjAxNS44NC44NCAwIDAgMCAxIC42NTdjMS4zOTgtLjMwMyAyLjkxMi4x MzggMy45MzggMS4yOTVhNC4yNTQgNC4yNTQgMCAwIDEgLjg2NSA0LjExM2MtLjE0 NC40NS4xLjkzLjU0MiAxLjA3NmEuODQuODQgMCAwIDAgMS4wNi0uNTV2LS4wMDJh NS45NzMgNS45NzMgMCAwIDAtMS4yMTgtNS43OCIvPjxwYXRoIGQ9Ik0yMy4yNzYg MTEuMDE4YTIuOCAyLjggMCAwIDAtMi42OTgtLjg4NS43NC43NCAwIDAgMC0uNTYu ODc2Yy4wODYuMzk2LjQ3Mi42NS44Ni41NjMuNDY3LS4xMDIuOTc3LjA0NiAxLjMy LjQzMi4zNDMuMzg4LjQzNy45MTUuMjkgMS4zNzhhLjc0Mi43NDIgMCAwIDAgLjQ2 Ni45MjguNzI0LjcyNCAwIDAgMCAuOTEzLS40NzRjLjMtLjk0Ny4xMTMtMi4wMjYt LjU5LTIuODE4TTE0LjQ0IDE5LjQxYy0uMTI2LjIyMy0uNDA4LjMyOC0uNjI3LjIz NS0uMjE4LS4wOS0uMjg1LS4zNC0uMTYtLjU1NS4xMjctLjIxNS4zOTctLjMyLjYx Mi0uMjM0LjIyLjA4LjI5OC4zMy4xNzYuNTU1bS0xLjE2IDEuNTEyYy0uMzUzLjU3 LTEuMTEuODItMS42NzYuNTU4LS41Ni0uMjYtLjcyNi0uOTIyLS4zNzQtMS40OC4z NS0uNTU1IDEuMDc4LS44MDIgMS42NDItLjU2LjU3LjI1Ljc1My45MDUuNDA3IDEu NDgybTEuMzIyLTQuMDRjLTEuNzMzLS40Ni0zLjY5LjQyLTQuNDQzIDEuOTctLjc3 IDEuNTgzLS4wMjUgMy4zNCAxLjcyMyAzLjkxNCAxLjgxNS41OTUgMy45NS0uMzE4 IDQuNjk1LTIuMDIzLjczNC0xLjY3LS4xODItMy4zOS0xLjk3Ni0zLjg2Ii8+PC9n Pjwvc3ZnPid9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPSc8c3ZnIHdpZHRoPSIz MiIgaGVpZ2h0PSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn Ij48cGF0aCBkPSJNMjYuNzEyIDEwLjk2cy0uMTY3LS40OC0xLjIxLS4zNDhsLTMu NDQ3LjAyNGEuNzg1Ljc4NSAwIDAgMC0uNDU1LjA3MnMtLjIwNC4xMDgtLjMuMzdh MjIuMSAyMi4xIDAgMCAxLTEuMjggMi42OTVjLTEuNTMzIDIuNjEtMi4xNTYgMi43 NTQtMi40MDcgMi41ODctLjU4Ny0uMzcyLS40My0xLjUxLS40My0yLjMyMyAwLTIu NTQuMzgyLTMuNTkyLS43NTYtMy44NjgtLjM3LS4wODQtLjY0Ni0uMTQ0LTEuNjE2 LS4xNTYtMS4yMzItLjAxMi0yLjI3NCAwLTIuODYuMjg3LS4zOTYuMTkzLS42OTUu NjI0LS41MTUuNjQ4LjIyNy4wMzYuNzQyLjE0MyAxLjAxNy41MTUgMCAwIC4zLjQ5 LjM0NyAxLjU2OC4xMyAyLjk4Mi0uNDggMy4zNTMtLjQ4IDMuMzUzLS40NjYuMjUy LTEuMjgtLjE2Ny0yLjQ3OC0yLjYzNCAwIDAtLjY5NC0xLjIyMi0xLjIzMy0yLjU2 My0uMDk3LS4yNS0uMjg4LS4zODMtLjI4OC0uMzgzcy0uMjE2LS4xNjgtLjUyNy0u MjE2bC0zLjI4LjAyNGMtLjUwNCAwLS42ODMuMjI4LS42ODMuMjI4cy0uMTguMTkt LjAxMi41ODdjMi41NjIgNi4wMjIgNS40ODMgOS4wNCA1LjQ4MyA5LjA0czIuNjcg Mi43OSA1LjcgMi41OTdoMS4zNzZjLjQxOC0uMDM1LjYzNC0uMjYzLjYzNC0uMjYz cy4xOTItLjIxNC4xOC0uNjFjLS4wMjQtMS44NDMuODM4LTIuMTIuODM4LTIuMTIu ODM4LS4yNjIgMS45MTUgMS43ODUgMy4wNjUgMi41NzUgMCAwIC44NzQuNiAxLjUz Mi40NjdsMy4wNjQtLjA0OGMxLjYxNy0uMDEuODUtMS4zNTIuODUtMS4zNTItLjA2 LS4xMDgtLjQ0Mi0uOTM0LTIuMjg2LTIuNjQ3LTEuOTE2LTEuNzg0LTEuNjY1LTEu NDk2LjY1OC00LjU4NSAxLjQxMy0xLjg4IDEuOTc2LTMuMDMgMS43OTYtMy41Mnoi IGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPid9LGZ1bmN0aW9uKGUsdCl7ZS5l eHBvcnRzPSc8c3ZnIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgeG1sbnM9Imh0dHA6 Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNyAxMy4yNTJjMCAxLjgx Ljc3MiA0LjQ1IDIuODk1IDUuMDQ1LjA3NC4wMTQuMTc4LjA0LjI1Mi4wNC40OSAw IC43NzItMS4yNy43NzItMS42MyAwLS40MjgtMS4xNzQtMS4zNC0xLjE3NC0zLjEy MyAwLTMuNzA1IDMuMDI4LTYuMzMgNi45NDctNi4zMyAzLjM3IDAgNS44NjMgMS43 ODIgNS44NjMgNS4wNTggMCAyLjQ0Ni0xLjA1NCA3LjAzNS00LjQ2OCA3LjAzNS0x LjIzMiAwLTIuMjg2LS44My0yLjI4Ni0yLjAxOCAwLTEuNzQyIDEuMzA3LTMuNDMg MS4zMDctNS4yMjUgMC0xLjA5Mi0uNjctMS45NzctMS45MTYtMS45NzctMS42OTIg MC0yLjczMiAxLjc3LTIuNzMyIDMuMTY1IDAgLjc3NC4xMDQgMS42My40NzYgMi4z MzYtLjY4MyAyLjczNi0yLjA4IDYuODE0LTIuMDggOS42MzMgMCAuODcuMTM1IDEu NzI4LjIyNCAyLjZsLjEzNC4xMzcuMjA3LS4wN2MyLjQ5NC0zLjE3OCAyLjQwNS0z LjggMy41MzMtNy45Ni42MSAxLjA3NyAyLjE4MiAxLjY1OCAzLjQzIDEuNjU4IDUu MjU0IDAgNy42MTQtNC43NyA3LjYxNC05LjA2N0MyNiA3Ljk4NyAyMS43NTUgNSAx Ny4wOTQgNSAxMi4wMTcgNSA3IDguMTUgNyAxMy4yNTJ6IiBmaWxsLXJ1bGU9ImV2 ZW5vZGQiLz48L3N2Zz4nfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0nPHN2ZyB3 aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y MDAwL3N2ZyI+PHBhdGggZD0iTTE5LjExIDE3LjIwNWMtLjM3MiAwLTEuMDg4IDEu MzktMS41MTggMS4zOWEuNjMuNjMgMCAwIDEtLjMxNS0uMWMtLjgwMi0uNDAyLTEu NTA0LS44MTctMi4xNjMtMS40NDctLjU0NS0uNTE2LTEuMTQ2LTEuMjktMS40Ni0x Ljk2M2EuNDI2LjQyNiAwIDAgMS0uMDczLS4yMTVjMC0uMzMuOTktLjk0NS45OS0x LjQ5IDAtLjE0My0uNzMtMi4wOS0uODMyLTIuMzM1LS4xNDMtLjM3Mi0uMjE0LS40 ODctLjYtLjQ4Ny0uMTg3IDAtLjM2LS4wNDMtLjUzLS4wNDMtLjMwMiAwLS41My4x MTUtLjc0Ni4zMTUtLjY4OC42NDUtMS4wMzIgMS4zMTgtMS4wNiAyLjI2NHYuMTE0 Yy0uMDE1Ljk5LjQ3MiAxLjk3NyAxLjAxNyAyLjc4IDEuMjMgMS44MiAyLjUwNiAz LjQxIDQuNTU0IDQuMzQuNjE2LjI4NyAyLjAzNS44ODggMi43MjIuODg4LjgxNyAw IDIuMTUtLjUxNSAyLjQ3OC0xLjMxOC4xMy0uMzMuMjQ0LS43My4yNDQtMS4wODgg MC0uMDU4IDAtLjE0NC0uMDMtLjIxNS0uMS0uMTcyLTIuNDM0LTEuMzktMi42Nzgt MS4zOXptLTIuOTA4IDcuNTkzYy0xLjc0NyAwLTMuNDgtLjUzLTQuOTQyLTEuNDlM Ny43OTMgMjQuNDFsMS4xMzItMy4zMzdhOC45NTUgOC45NTUgMCAwIDEtMS43Mi01 LjI3MmMwLTQuOTU1IDQuMDQtOC45OTUgOC45OTctOC45OTVTMjUuMiAxMC44NDUg MjUuMiAxNS44YzAgNC45NTgtNC4wNCA4Ljk5OC04Ljk5OCA4Ljk5OHptMC0xOS43 OThjLTUuOTYgMC0xMC44IDQuODQyLTEwLjggMTAuOCAwIDEuOTY0LjUzIDMuODk4 IDEuNTQ2IDUuNTc0TDUgMjcuMTc2bDUuOTc0LTEuOTJhMTAuODA3IDEwLjgwNyAw IDAgMCAxNi4wMy05LjQ1NWMwLTUuOTU4LTQuODQyLTEwLjgtMTAuODAyLTEwLjh6 IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nfSxmdW5jdGlvbihlLHQpe2Uu ZXhwb3J0cz0nPHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRw Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE4IDE0VjhoLTR2Nkg4 djRoNnY2aDR2LTZoNnYtNGgtNnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3Zn Pid9LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLGZ1bmN0aW9uKGUsdCl7InVz ZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIgbj12b2lkIDA7aWYoInVuZGVm aW5lZCIhPXR5cGVvZiB3aW5kb3cuRE9NUGFyc2VyKW49ZnVuY3Rpb24oZSl7cmV0 dXJuKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4 dC94bWwiKX07ZWxzZXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5BY3Rp dmVYT2JqZWN0fHwhbmV3IHdpbmRvdy5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQu WE1MRE9NIikpdGhyb3cgbmV3IEVycm9yKCJObyBYTUwgcGFyc2VyIGZvdW5kIik7 bj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgd2luZG93LkFjdGl2ZVhPYmplY3QoIk1p Y3Jvc29mdC5YTUxET00iKTtyZXR1cm4gdC5hc3luYz0iZmFsc2UiLHQubG9hZFhN TChlKSx0fX10LmRlZmF1bHQ9bixlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlv bihlLHQsbil7ZnVuY3Rpb24gYShlKXtyZXR1cm4gcFtlXXx8ZX1mdW5jdGlvbiBp KGUpe3ZhciB0PWgoZSk7dGhpcy5jYWNoZWFibGUmJnRoaXMuY2FjaGVhYmxlKCks dGhpcy52YWx1ZT1lO3ZhciBuPSJ2YXIgc3ZnID0ge307XG4iK20rbCh0KSsiXG4i K2crYyh0KSsiXG5tb2R1bGUuZXhwb3J0cyA9IHtzdmc6IHN2Z30iO3JldHVybiBu fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZihlLmNvZGUpO3JldHVybiJzdmdbJyIrZS5j b2RlKyInXSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuY2FsbGJhY2socmVxdWly ZSgiK3QrIikpO1xufTtcbiJ9ZnVuY3Rpb24gcihlKXtyZXR1cm4gcyhlKX1mdW5j dGlvbiBzKGUpe3ZhciB0PWYoZS5jb2RlKTtyZXR1cm4ic3ZnWyciK2UuY29kZSsi J10gPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbnJlcXVpcmUuZW5zdXJlKCIrdCsi LCBmdW5jdGlvbiAoKSB7XG5jYWxsYmFjayhyZXF1aXJlKCIrdCsiKSk7XG59KVxu fTtcbiJ9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7 cmV0dXJuIGUudG9wU2VydmljZX0pfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGUuZmls dGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLnRvcFNlcnZpY2V9KX1mdW5jdGlvbiBj KGUpe3JldHVybiB1KGUpLm1hcChyKS5qb2luKCJcbiIpfWZ1bmN0aW9uIGwoZSl7 cmV0dXJuIGQoZSkubWFwKG8pLmpvaW4oIlxuIil9dmFyIGY9bigzMjcpLHA9KG4o MzI4KSxuKDc4KSksaD1uKDMyOSksbT0iXG4vLyBUT1AgU0VSVklDRVNcbiIsZz0i XG4vLyBCT1RUT00gU0VSVklDRVNcbiI7ZS5leHBvcnRzPWksZS5leHBvcnRzLmdl dEljb25Db2RlPWF9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbihlKXtyZXR1cm4iJy4uLy4uL2ljb25zL3N2Zy8iK2UrIi5zdmcn In19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9big3OCk7ZS5l eHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PSJSRUxFQVNFRCIhPT1lLnN0YXRlJiYi VkVSSUZJRUQiIT09ZS5zdGF0ZXx8ZS5oaWRkZW58fGFbZS5jb2RlXTtyZXR1cm4g dH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9bigzMjgpO2Uu ZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9SlNPTi5wYXJzZShlKS5zZXJ2 aWNlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWEoZSl9KTtyZXR1cm4gdC5w dXNoKHtjb2RlOiJhZGR0aGlzIix0b3BTZXJ2aWNlOiEwfSksdC5wdXNoKHtjb2Rl OiJ1bmtub3duIn0pLHR9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKCJwYXJzZS1z ZXJ2aWNlczogZmFpbGVkIHRvIHBhcnNlIGZpbGUgLSAiK2UubWVzc2FnZSl9fX0s ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUs dCl7aWYoIWUuc3R5bGV8fCF0KXJldHVybiBlO3ZhciBuLGE7Zm9yKG4gaW4gdClh PXRbbl0sYSYmKGUuc3R5bGVbbl09YSk7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighZS5zdHls ZXx8IXQpcmV0dXJuIGU7dmFyIG4sYTtmb3IobiBpbiB0KWE9dFtuXSxhJiZlLnNl dEF0dHJpYnV0ZShuLGEpO3JldHVybiBlfX0sLGZ1bmN0aW9uKGUsdCxuKXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6 e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8 PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT8iIjphcmd1bWVudHNbMF0sdD1hcmd1 bWVudHMubGVuZ3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/IiI6YXJndW1l bnRzWzFdLG49KF9hdGV8fHt9KS5kYXR8fHt9O2U9ZXx8bi51c3N8fGwuZGVmYXVs dC5yZWFkKCJ1c3MiKSx0PXR8fG4uc3Noc3x8bC5kZWZhdWx0LnJlYWQoInNzaHMi KTt2YXIgYT1lP2Uuc3BsaXQoIiwiKTpbXSxpPXQ/dC5zcGxpdCgiLCIpLm1hcChm dW5jdGlvbihlKXtyZXR1cm4icGludGVyZXN0Ij09PWU/InBpbnRlcmVzdF9zaGFy ZSI6ZX0pOltdO3JldHVybiByLmRlZmF1bHQoYSxpLHMuZ2V0UG9wU2VydmljZXNB cnJheSgpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHUuZGVmYXVsdChlKX0p fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIgbz1uKDMzNCkscj1hKG8p LHM9bigzMzUpLGQ9bigzMzYpLHU9YShkKSxjPW4oNDcpLGw9YShjKTtlLmV4cG9y dHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv biBuKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMsYT0hMDthOyl7dmFyIGk9ZTthPSEx O2Zvcih2YXIgbz10Lmxlbmd0aCxyPUFycmF5KG8+MT9vLTE6MCkscz0xO3M8bztz KyspcltzLTFdPXRbc107aWYoci5sZW5ndGg8MSlyZXR1cm4gaTt7aWYoIShyLmxl bmd0aD4xKSl7dmFyIGQ9aS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0 XT0hMCxlfSx7fSk7cmV0dXJuIHJbMF0uZm9yRWFjaChmdW5jdGlvbihlKXtkW2Vd fHwoZFtlXT0hMCxpLnB1c2goZSkpfSksaX10PVtlPWksbi5hcHBseSh2b2lkIDAs W3JbMF1dLmNvbmNhdChyLnNsaWNlKDEpKSldLGE9ITAsbz1yPXM9dm9pZCAwfX19 dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1uLGUuZXhwb3J0cz10LmRlZmF1bHR9 LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1 cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEw O3ZhciBpPW4oNSksbz1hKGkpLHI9ImZhY2Vib29rLHR3aXR0ZXIscHJpbnQsZW1h aWwscGludGVyZXN0X3NoYXJlLGdtYWlsLGdvb2dsZV9wbHVzb25lX3NoYXJlLGxp bmtlZGluLG1haWx0byx0dW1ibHIiLHM9ImZhY2Vib29rLHR3aXR0ZXIsbWFpbHRv LHBpbnRlcmVzdF9zaGFyZSx3aGF0c2FwcCxnb29nbGVfcGx1c29uZV9zaGFyZSxw cmludCxnbWFpbCxsaW5rZWRpbixnb29nbGUiLGQ9d2luZG93LHU9ZnVuY3Rpb24o KXtyZXR1cm4gZC5hZGR0aGlzX3NlcnZpY2VzX2xvY19tb2I/ZC5hZGR0aGlzX3Nl cnZpY2VzX2xvY19tb2I6c30sYz1mdW5jdGlvbigpe3JldHVybiBkLmFkZHRoaXNf c2VydmljZXNfbG9jP2QuYWRkdGhpc19zZXJ2aWNlc19sb2M6cn0sbD1mdW5jdGlv bigpe3ZhciBlPW8uZGVmYXVsdCgibW9iIik/dSgpOmMoKTtyZXR1cm4gby5kZWZh dWx0KCJ4cCIpfHxvLmRlZmF1bHQoIm1vYiIpP2UucmVwbGFjZSgvZW1haWwvZywi bWFpbHRvIik6ZX07dC5nZXRQb3BTZXJ2aWNlcz1sO3ZhciBmPWZ1bmN0aW9uKCl7 cmV0dXJuIGwoKS5zcGxpdCgiLCIpfTt0LmdldFBvcFNlcnZpY2VzQXJyYXk9Zn0s ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYT1uKDcyKTtlLmV4cG9y dHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWFbZV19fSxmdW5jdGlvbihl LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19l c01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGkoKXt2YXIgZT1hcmd1bWVu dHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/IiI6YXJndW1lbnRz WzBdLHQ9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFd P3t9OmFyZ3VtZW50c1sxXSxuPXQuYWx3YXlzU2hvd01vcmVCdXR0b24sYT12b2lk IDA9PT1ufHxuLGk9dC5zc2hzQ29va2llLG89dm9pZCAwPT09aT9yLmRlZmF1bHQu cmVhZCgic3NocyIpOmkscz10LmF2YWlsYWJsZVNlcnZpY2VzLGQ9dm9pZCAwPT09 cz9bXTpzLHU9dC5tYXhTZXJ2aWNlcyxjPXZvaWQgMD09PXU/NTp1O2lmKCFlKXJl dHVybiBkO2EmJmMtLTt2YXIgbD1vP28uc3BsaXQoIiwiKTpbXSxmPWQuc2xpY2Uo MCxjKTtpZihmLmluZGV4T2YoZSk+LTF8fGwubGVuZ3RoPj1jKXJldHVybiBkO3Zh ciBwPWQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZX0pO3JldHVybiBw LnNwbGljZShjLTEsMCxlKSxwfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2 YXIgbz1uKDQ3KSxyPWEobyk7ZS5leHBvcnRzPXQuZGVmYXVsdH0sLCxmdW5jdGlv bihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiBlLnRv U3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PHRoaXMubGVuZ3Ro O3QrKyl7dmFyIG49dGhpc1t0XTtuWzJdP2UucHVzaCgiQG1lZGlhICIrblsyXSsi eyIrblsxXSsifSIpOmUucHVzaChuWzFdKX1yZXR1cm4gZS5qb2luKCIiKX0sZS5p PWZ1bmN0aW9uKHQsbil7InN0cmluZyI9PXR5cGVvZiB0JiYodD1bW251bGwsdCwi Il1dKTtmb3IodmFyIGE9e30saT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt2YXIgbz10 aGlzW2ldWzBdOyJudW1iZXIiPT10eXBlb2YgbyYmKGFbb109ITApfWZvcihpPTA7 aTx0Lmxlbmd0aDtpKyspe3ZhciByPXRbaV07Im51bWJlciI9PXR5cGVvZiByWzBd JiZhW3JbMF1dfHwobiYmIXJbMl0/clsyXT1uOm4mJihyWzJdPSIoIityWzJdKyIp IGFuZCAoIituKyIpIiksZS5wdXNoKHIpKX19LGV9fSxmdW5jdGlvbihlLHQsbil7 ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIg YT1lW25dLGk9cFthLmlkXTtpZihpKXtpLnJlZnMrKztmb3IodmFyIG89MDtvPGku cGFydHMubGVuZ3RoO28rKylpLnBhcnRzW29dKGEucGFydHNbb10pO2Zvcig7bzxh LnBhcnRzLmxlbmd0aDtvKyspaS5wYXJ0cy5wdXNoKHUoYS5wYXJ0c1tvXSx0KSl9 ZWxzZXtmb3IodmFyIHI9W10sbz0wO288YS5wYXJ0cy5sZW5ndGg7bysrKXIucHVz aCh1KGEucGFydHNbb10sdCkpO3BbYS5pZF09e2lkOmEuaWQscmVmczoxLHBhcnRz OnJ9fX19ZnVuY3Rpb24gaShlKXtmb3IodmFyIHQ9W10sbj17fSxhPTA7YTxlLmxl bmd0aDthKyspe3ZhciBpPWVbYV0sbz1pWzBdLHI9aVsxXSxzPWlbMl0sZD1pWzNd LHU9e2NzczpyLG1lZGlhOnMsc291cmNlTWFwOmR9O25bb10/bltvXS5wYXJ0cy5w dXNoKHUpOnQucHVzaChuW29dPXtpZDpvLHBhcnRzOlt1XX0pfXJldHVybiB0fWZ1 bmN0aW9uIG8oZSx0KXt2YXIgbj1nKCksYT1iW2IubGVuZ3RoLTFdO2lmKCJ0b3Ai PT09ZS5pbnNlcnRBdClhP2EubmV4dFNpYmxpbmc/bi5pbnNlcnRCZWZvcmUodCxh Lm5leHRTaWJsaW5nKTpuLmFwcGVuZENoaWxkKHQpOm4uaW5zZXJ0QmVmb3JlKHQs bi5maXJzdENoaWxkKSxiLnB1c2godCk7ZWxzZXtpZigiYm90dG9tIiE9PWUuaW5z ZXJ0QXQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0 ZXIgJ2luc2VydEF0Jy4gTXVzdCBiZSAndG9wJyBvciAnYm90dG9tJy4iKTtuLmFw cGVuZENoaWxkKHQpfX1mdW5jdGlvbiByKGUpe2UucGFyZW50Tm9kZS5yZW1vdmVD aGlsZChlKTt2YXIgdD1iLmluZGV4T2YoZSk7dD49MCYmYi5zcGxpY2UodCwxKX1m dW5jdGlvbiBzKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxl Iik7cmV0dXJuIHQudHlwZT0idGV4dC9jc3MiLG8oZSx0KSx0fWZ1bmN0aW9uIGQo ZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3JldHVybiB0 LnJlbD0ic3R5bGVzaGVldCIsbyhlLHQpLHR9ZnVuY3Rpb24gdShlLHQpe3ZhciBu LGEsaTtpZih0LnNpbmdsZXRvbil7dmFyIG89disrO249X3x8KF89cyh0KSksYT1j LmJpbmQobnVsbCxuLG8sITEpLGk9Yy5iaW5kKG51bGwsbixvLCEwKX1lbHNlIGUu c291cmNlTWFwJiYiZnVuY3Rpb24iPT10eXBlb2YgVVJMJiYiZnVuY3Rpb24iPT10 eXBlb2YgVVJMLmNyZWF0ZU9iamVjdFVSTCYmImZ1bmN0aW9uIj09dHlwZW9mIFVS TC5yZXZva2VPYmplY3RVUkwmJiJmdW5jdGlvbiI9PXR5cGVvZiBCbG9iJiYiZnVu Y3Rpb24iPT10eXBlb2YgYnRvYT8obj1kKHQpLGE9Zi5iaW5kKG51bGwsbiksaT1m dW5jdGlvbigpe3Iobiksbi5ocmVmJiZVUkwucmV2b2tlT2JqZWN0VVJMKG4uaHJl Zil9KToobj1zKHQpLGE9bC5iaW5kKG51bGwsbiksaT1mdW5jdGlvbigpe3Iobil9 KTtyZXR1cm4gYShlKSxmdW5jdGlvbih0KXtpZih0KXtpZih0LmNzcz09PWUuY3Nz JiZ0Lm1lZGlhPT09ZS5tZWRpYSYmdC5zb3VyY2VNYXA9PT1lLnNvdXJjZU1hcCly ZXR1cm47YShlPXQpfWVsc2UgaSgpfX1mdW5jdGlvbiBjKGUsdCxuLGEpe3ZhciBp PW4/IiI6YS5jc3M7aWYoZS5zdHlsZVNoZWV0KWUuc3R5bGVTaGVldC5jc3NUZXh0 PXcodCxpKTtlbHNle3ZhciBvPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGkpLHI9 ZS5jaGlsZE5vZGVzO3JbdF0mJmUucmVtb3ZlQ2hpbGQoclt0XSksci5sZW5ndGg/ ZS5pbnNlcnRCZWZvcmUobyxyW3RdKTplLmFwcGVuZENoaWxkKG8pfX1mdW5jdGlv biBsKGUsdCl7dmFyIG49dC5jc3MsYT10Lm1lZGlhO2lmKGEmJmUuc2V0QXR0cmli dXRlKCJtZWRpYSIsYSksZS5zdHlsZVNoZWV0KWUuc3R5bGVTaGVldC5jc3NUZXh0 PW47ZWxzZXtmb3IoO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0 Q2hpbGQpO2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobikp fX1mdW5jdGlvbiBmKGUsdCl7dmFyIG49dC5jc3MsYT10LnNvdXJjZU1hcDthJiYo bis9IlxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29u O2Jhc2U2NCwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04u c3RyaW5naWZ5KGEpKSkpKyIgKi8iKTt2YXIgaT1uZXcgQmxvYihbbl0se3R5cGU6 InRleHQvY3NzIn0pLG89ZS5ocmVmO2UuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJM KGkpLG8mJlVSTC5yZXZva2VPYmplY3RVUkwobyl9dmFyIHA9e30saD1mdW5jdGlv bihlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09 dHlwZW9mIHQmJih0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKSx0fX0sbT1oKGZ1 bmN0aW9uKCl7cmV0dXJuL21zaWUgWzYtOV1cYi8udGVzdCh3aW5kb3cubmF2aWdh dG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKX0pLGc9aChmdW5jdGlvbigpe3Jl dHVybiBkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt ZSgiaGVhZCIpWzBdfSksXz1udWxsLHY9MCxiPVtdO2UuZXhwb3J0cz1mdW5jdGlv bihlLHQpe3Q9dHx8e30sInVuZGVmaW5lZCI9PXR5cGVvZiB0LnNpbmdsZXRvbiYm KHQuc2luZ2xldG9uPW0oKSksInVuZGVmaW5lZCI9PXR5cGVvZiB0Lmluc2VydEF0 JiYodC5pbnNlcnRBdD0iYm90dG9tIik7dmFyIG49aShlKTtyZXR1cm4gYShuLHQp LGZ1bmN0aW9uKGUpe2Zvcih2YXIgbz1bXSxyPTA7cjxuLmxlbmd0aDtyKyspe3Zh ciBzPW5bcl0sZD1wW3MuaWRdO2QucmVmcy0tLG8ucHVzaChkKX1pZihlKXt2YXIg dT1pKGUpO2EodSx0KX1mb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIGQ9 b1tyXTtpZigwPT09ZC5yZWZzKXtmb3IodmFyIGM9MDtjPGQucGFydHMubGVuZ3Ro O2MrKylkLnBhcnRzW2NdKCk7ZGVsZXRlIHBbZC5pZF19fX19O3ZhciB3PWZ1bmN0 aW9uKCl7dmFyIGU9W107cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGVbdF09 bixlLmZpbHRlcihCb29sZWFuKS5qb2luKCJcbiIpfX0oKX0sZnVuY3Rpb24oZSx0 LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNN b2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1lbnRz Lmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1sw XTtyZXR1cm4gZS5fdkRPTUNvbXBvbmVudD9lLl9jcmVhdGVFbGVtZW50Rm4/byhl KTooYy5kZWZhdWx0LmVycm9yKCJHZW5lcmF0aW5nIGJyYW5kaW5nIHdpdGggYSB2 aXJ0dWFsIERPTSBjb21wb25lbnQgcmVxdWlyZXMgYSBgX2NyZWF0ZUVsZW1lbnRG bmAuIiksbnVsbCk6cihlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUuY2FtcGFpZ24s bj1lLl9jcmVhdGVFbGVtZW50Rm4sYT1lLl92RE9NQ29tcG9uZW50LGk9Zi5kZWZh dWx0KHQpO3JldHVybntnZW5lcmF0ZUJyYW5kaW5nOmZ1bmN0aW9uKGUsbyxyKXty ZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLG4oYSx7Y2FtcGFpZ246dCxjb2xvcjpy LGNvbnRhaW5lckNsYXNzOm8saXNCcmFuZGluZ1JlZHVjZWQ6ZSx1cmw6aX0sbnVs bCl9fX1mdW5jdGlvbiByKGUpe3ZhciB0PWUuY2FtcGFpZ24sbj1mLmRlZmF1bHQo dCk7cmV0dXJue2dlbmVyYXRlQnJhbmRpbmc6ZnVuY3Rpb24oKXt2YXIgZT0hKGFy Z3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXSkmJmFyZ3Vt ZW50c1swXTtyZXR1cm4gQm9vbGVhbihlKT90aGlzLl9nZW5lcmF0ZVJlZHVjZWRC cmFuZGluZygpOnRoaXMuX2dlbmVyYXRlQWRkVGhpc0JyYW5kaW5nKCl9LF9nZW5l cmF0ZVJlZHVjZWRCcmFuZGluZzpmdW5jdGlvbigpe3JldHVybiBkLmRlZmF1bHQu ZGl2KGQuZGVmYXVsdC5hKGQuZGVmYXVsdC5zcGFuKCJBZGRUaGlzIikpLmNzcygi YXQtYnJhbmRpbmctaW5mbyIpLmhyZWYobikudGl0bGUoIlBvd2VyZWQgYnkgQWRk VGhpcyIpLnRhcmdldCgiX2JsYW5rIikpfSxfZ2VuZXJhdGVBZGRUaGlzQnJhbmRp bmc6ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0LmRpdihkLmRlZmF1bHQuYShk LmRlZmF1bHQuZGl2KCkuY3NzKCJhdC1icmFuZGluZy1pY29uIiksZC5kZWZhdWx0 LnNwYW4oIkFkZFRoaXMiKS5jc3MoImF0LWJyYW5kaW5nLWFkZHRoaXMiKSkuY3Nz KCJhdC1icmFuZGluZy1sb2dvIikuaHJlZihuKS50aXRsZSgiUG93ZXJlZCBieSBB ZGRUaGlzIikudGFyZ2V0KCJfYmxhbmsiKSl9fX10Ll9fZXNNb2R1bGU9ITAsdC5k ZWZhdWx0PWk7dmFyIHM9bigzNDMpLGQ9YShzKSx1PW4oMTMpLGM9YSh1KSxsPW4o NDMpLGY9YShsKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7 dmFyIGEsaTthPVtdLGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe2lmKGUmJjEh PT1lLm5vZGVUeXBlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyYXAgbm9uLWVs ZW1lbnQgaW4gRW1kb3QiKTt0aGlzLmVsZW1lbnQ9ZSx0aGlzLmVsZW1lbnQuc3R5 bGV8fCh0aGlzLmVsZW1lbnQuc3R5bGU9e30pfWZ1bmN0aW9uIHQoZSl7cmV0dXJu IGZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdGhpcy5hdHRyKGUsdCl9Y2F0Y2gobil7 cmV0dXJuIHRoaXMuZWxlbWVudFtlXT10LHRoaXN9fX1mdW5jdGlvbiBuKHQpe3Jl dHVybiBmdW5jdGlvbigpe3ZhciBuLGksbyxyPUFycmF5LnByb3RvdHlwZS5zbGlj ZS5jYWxsKGFyZ3VtZW50cywwKTtmb3Iobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KHQpLG89MDtvPHIubGVuZ3RoO28rKylpPXJbb10sYShuLGkpO3JldHVybiBuZXcg ZShuKX19ZnVuY3Rpb24gYSh0LG4pe2lmKG51bGwhPT1uKXtpZih2b2lkIDA9PT1u KXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKTtlbHNl IGlmKG4uY29uc3RydWN0b3I9PT1TdHJpbmd8fG4uY29uc3RydWN0b3I9PT1OdW1i ZXIpdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSk7ZWxz ZSBpZihuJiYxPT09bi5ub2RlVHlwZSl0LmFwcGVuZENoaWxkKG4pO2Vsc2UgaWYo biBpbnN0YW5jZW9mIGUpdC5hcHBlbmRDaGlsZChuLmVsZW1lbnQpO2Vsc2V7aWYo IShuIGluc3RhbmNlb2YgQXJyYXkpKXtpZihuKXRocm93IG5ldyBFcnJvcigiQ291 bGQgbm90IHR1cm4gdHJ1dGh5IGFyZ3VtZW50IGludG8gZWxlbWVudCIpO3JldHVy biExfWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKWEodCxuW2ldKX1yZXR1cm4h MH19dmFyIGk9Imh0bWwsaGVhZCx0aXRsZSxiYXNlLGxpbmssbWV0YSxzdHlsZSxz Y3JpcHQsbm9zY3JpcHQsdGVtcGxhdGUsYm9keSxzZWN0aW9uLG5hdixhcnRpY2xl LGFzaWRlLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixmb290ZXIsYWRkcmVzcyxt YWluLHAsaHIscHJlLGJsb2NrcXVvdGUsb2wsdWwsbGksZGwsZHQsZGQsZmlndXJl LGZpZ2NhcHRpb24sZGl2LGEsZW0sc3Ryb25nLHNtYWxsLHMsY2l0ZSxxLGRmbixh YmJyLGRhdGEsdGltZSxjb2RlLHZhcixzYW1wLGtiZCxzdWIsc3VwLGksYix1LG1h cmsscnVieSxydCxycCxiZGksYmRvLHNwYW4sYnIsd2JyLGlucyxkZWwsaW1nLGlm cmFtZSxlbWJlZCxvYmplY3QscGFyYW0sdmlkZW8sYXVkaW8sc291cmNlLHRyYWNr LGNhbnZhcyxtYXAsYXJlYSxzdmcsdGFibGUsY2FwdGlvbixjb2xncm91cCxjb2ws dGJvZHksdGhlYWQsdGZvb3QsdHIsdGQsdGgsZm9ybSxmaWVsZHNldCxsZWdlbmQs bGFiZWwsaW5wdXQsYnV0dG9uLHNlbGVjdCxkYXRhbGlzdCxvcHRncm91cCxvcHRp b24sdGV4dGFyZWEsa2V5Z2VuLG91dHB1dCxwcm9ncmVzcyxtZXRlcixkZXRhaWxz LHN1bW1hcnksbWVudWl0ZW0sbWVudSIuc3BsaXQoIiwiKSxvPSJ2YWx1ZSxuYW1l LGlkLGhyZWYsc3JjLHRpdGxlLGFsdCx0YXJnZXQsdHlwZSxyb2xlLHBsYWNlaG9s ZGVyLGFjdGlvbixtZXRob2QsYXV0b2NvcnJlY3QsYXV0b2NhcGl0YWxpemUscmVx dWlyZWQiLnNwbGl0KCIsIikscj1lLnByb3RvdHlwZTtmb3Ioci5zdHlsZT1mdW5j dGlvbihlKXtpZihlKWZvcih2YXIgdD1lLnJlcGxhY2UoL15ccysvLCIiKS5yZXBs YWNlKC9bO1xzXSskLywiIikuc3BsaXQoIjsiKSxuPTAsYT10Lmxlbmd0aDtuPGE7 bisrKXt2YXIgaT10W25dLnNwbGl0KCI6Iiksbz1pWzBdLnJlcGxhY2UoL1xzKy9n LCIiKSxyPWlbMV0ucmVwbGFjZSgvXlxzKy8sIiIpLnJlcGxhY2UoL1xzKyQvLCIi KTtpZighb3x8IXIpdGhyb3cgbmV3IEVycm9yKCJFbWRvdDogTWFsZm9ybWVkIHN0 eWxlIHN0cmluZyAtICIrZSk7dHJ5e3IucmVwbGFjZSgvXHMrL2csIiIpLHRoaXMu ZWxlbWVudC5zdHlsZVtvXT1yfWNhdGNoKHQpe3dpbmRvdy5jb25zb2xlJiZjb25z b2xlLmxvZyYmY29uc29sZS5sb2codC50b1N0cmluZygpKyIgLSAiK2UpfX1yZXR1 cm4gdGhpc30sci5jc3M9ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoKXt2 YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7dGhp cy5lbGVtZW50LmNsYXNzTmFtZT1lLmpvaW4oIiAiKX1yZXR1cm4gdGhpc30sci5k YXRhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PT10fHwiIj09PXQ/dGhpcy5l bGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS0iK2UsdCk6ZSYmdGhpcy5lbGVt ZW50LnNldEF0dHJpYnV0ZSgiZGF0YS0iK2UsdCksdGhpc30sci5hdHRyPWZ1bmN0 aW9uKGUsdCl7cmV0dXJuIG51bGw9PT10fHwiIj09PXQ/dGhpcy5lbGVtZW50LnJl bW92ZUF0dHJpYnV0ZShlLHQpOmUmJnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo ZSx0KSx0aGlzfSxyLmFyaWE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5hdHRy KCJhcmlhLSIrZSx0KX0sci5odG1sPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVs ZW1lbnQuaW5uZXJIVE1MPWUsdGhpc30sZW1kb3Q9ZnVuY3Rpb24oZSx0LG4pe3Zh ciBhLGk9W10sbj1ufHx0aGlzO2ZvcihhPTAsbGVuPWUubGVuZ3RoO2E8bGVuO2Er KylpW2kubGVuZ3RoXT10LmNhbGwobixlW2FdLGEsZSk7cmV0dXJuIGl9LGQ9aS5s ZW5ndGgtMTtkPj0wO2QtLSl7dmFyIHM9aVtkXTtlbWRvdFtzXT1uKHMpfWZvcih2 YXIgZD1vLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgdT1vW2RdO3JbdV09dCh1KX1y ZXR1cm4gZW1kb3R9LmFwcGx5KHQsYSksISh2b2lkIDAhPT1pJiYoZS5leHBvcnRz PWkpKX0sLCwsLCwsLCxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBh PW4oMzUzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXthKGUsdCl8fChlLmNsYXNz TmFtZT9lLmNsYXNzTmFtZSs9IiAiK3Q6ZS5jbGFzc05hbWU9dCl9fSxmdW5jdGlv bihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1 cm4gbmV3IFJlZ0V4cCgiICIrdCsiICIpLnRlc3QoIiAiK2UuY2xhc3NOYW1lKyIg Iil9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPW4oMzUzKTtl LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj0iKD86XFxzfF4pIit0KyJcXGIi LGk9bmV3IFJlZ0V4cChuLCJnIik7YShlLHQpJiYoZS5jbGFzc05hbWU9ZS5jbGFz c05hbWUucmVwbGFjZShpLCIiKS5yZXBsYWNlKC9ccysvZywiICIpLnJlcGxhY2Uo L15ccyt8XHMrJC9nLCIiKSl9fSwsLCwsLCxmdW5jdGlvbihlLHQsbil7ZnVuY3Rp b24gYShlKXt2YXIgdCxuLGEsaTtmb3IoZT1rKGUpLGU9ZS50b0xvd2VyQ2FzZSgp LGU9ZS5yZXBsYWNlKC9bLDs6XCtcfF0vZywiICIpLGU9ZS5yZXBsYWNlKC9bXmEt ejAtOS4gJ1wtXS9nLCIiKSxlPWUucmVwbGFjZSgvXHMrL2csIiAiKSxlPWUucmVw bGFjZSgvXHMrJC9nLCIiKSxuPVtdLGE9ZS5zcGxpdCgiICIpLGk9MDtpPGEubGVu Z3RoO2krKyl0PWFbaV0sIi0iIT09dC5jaGFyQXQoMCkmJigvJ3MkLy50ZXN0KHQp P24ucHVzaCh0LnN1YnN0cmluZygwLHQubGVuZ3RoLTIpLnJlcGxhY2UoL1stJ10v ZywiIikrIidzIik6bj1uLmNvbmNhdCh0LnJlcGxhY2UoLycvZywiIikuc3BsaXQo Ii0iKSkpO3JldHVybiBufWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gbyh2b2lkIDA9 PT1lfHxlLHQpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbixpLG8scz1yKGUpLGQ9ZT9w LmRyOnMuZHJ8fHAuZHIsdT1fKGQpLGM9e307cmV0dXJuIHgmJmwuZGVidWcoIm9w PSIscywicmVmPSIrZCwiY2xhPSIrdSwiY2FjaGU9IitDKSxzLnJzYz8oYy50eXBl PSJzb2NpYWwiLGMuc2VydmljZT1zLnJzYyxjLmNsaWNrPSEwLEM9YyxjKTpDJiYh dD9DOiJ1bmRlZmluZWQiPT10eXBlb2YgZHx8IiI9PT1kPyhjLnR5cGU9ImRpcmVj dCIsQz1jLGMpOihuPWYuZ2V0SG9zdChkKSxpPXYobikseCYmbC5kZWJ1ZygicmVm PSIrZCwiaXNzPSIraChkKSksInVuZGVmaW5lZCIhPXR5cGVvZiBpJiZpPyh4JiZs LmRlYnVnKCJzZXJ2aWNlQ29kZSIsaSksYy50eXBlPSJzb2NpYWwiLGMuc2Vydmlj ZT1pKTpoKGQpPyhjLnR5cGU9InNlYXJjaCIsYy5kb21haW49Zi5nZXRIb3N0KGQp LG89ZyhkKSxjLnRlcm1zPWEobykpOnUmbS5PTl9ET01BSU4/KGMudHlwZT0iaW50 ZXJuYWwiLGMuZG9tYWluPWRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lKTp1Jm0u T0ZGX0RPTUFJTj8oYy50eXBlPSJyZWZlcnJlZCIsYy5kb21haW49Zi5nZXRIb3N0 KGQpKTpjLnR5cGU9ImRpcmVjdCIsQz1jLGMpfWZ1bmN0aW9uIHIoZSl7cmV0dXJu IGU/Yjp3fHxifHx7fX1mdW5jdGlvbiBzKGUpe2I9e30sT2JqZWN0LmtleXMoZSku Zm9yRWFjaChmdW5jdGlvbih0KXtiW3RdPWVbdF19KSxiLmRyPXAuZHJ9ZnVuY3Rp b24gZChlKXt3PXt9LChlLnJzaXx8ZS5yc2N8fGUuZHIpJiYoT2JqZWN0LmtleXMo ZSkuZm9yRWFjaChmdW5jdGlvbih0KXt3W3RdPWVbdF0seS5hZGQodCxlW3RdKX0p LHkuc2F2ZSgpLHgmJmwuZGVidWcoInNldHRpbmciLHcpKX1mdW5jdGlvbiB1KGUs dCl7dmFyIG49dD9udWxsOnkuZ2V0KCk7eCYmbC5kZWJ1ZygicmVzZXQgY2FsbGVk OyBwYWdlU3RhdGU9IixlLCIgc3RvcmVkIHN0YXRlPSIsbikscyhlKSxuP2UucnNj PyhlLmRyPXAuZHIsZChlKSx4JiZsLmRlYnVnKCJmb3JtYWwgcmVmZXJyYWwiLHcp KTpkb2N1bWVudC5yZWZlcnJlcj8oZChuKSx4JiZsLmRlYnVnKCJyZWZlcnJhbCAt IHVzZSBzdG9yZWQgc3RhdGUiLHcpKTooeCYmbC5kZWJ1Zygibm8gcmVmZXJyYWwg LSBraWxsIGNvb2tpZSwgdGhlbiBzdGFydCBhIG5ldyBzZXNzaW9uIikseS5yZXNl dCgpLGUuZHI9cC5kcixkKGUpLGI9dyx4JiZsLmRlYnVnKCJzZXNzaW9uIHN0YXRl Iix3KSk6KGUuZHI9cC5kcixkKGUpLGI9dyx4JiZsLmRlYnVnKCJzZXNzaW9uIHN0 YXRlIix3KSl9dmFyIGM9bigzNjIpLGw9bigxMyksZj1uKDU4KSxwPW4oNjMpLGg9 bigzNjMpLG09bigzNjUpLGc9bigzNjQpLF89bigzNjYpLHY9bigzNjcpLGI9e30s dz17fSx4PTAseT1uZXcgYygicmZzIiwxKSxrPXdpbmRvdy5kZWNvZGVVUklDb21w b25lbnQsQz1udWxsO2UuZXhwb3J0cz17Z2V0VHJhZmZpY1NvdXJjZTppLGdldFNl YXJjaFRlcm1zOmEsc2V0U3RhdGU6ZCxyZXNldFN0YXRlOnV9fSxmdW5jdGlvbihl LHQsbil7ZnVuY3Rpb24gYShlLHQpe3ZhciBuPXRoaXMsYT0wLHU9MCxjPSEhdCxs PShjP3I6IiIpK2UsZj17fSxwPW8uZW5jb2RlVVJJQ29tcG9uZW50LGg9by5kZWNv ZGVVUklDb21wb25lbnQ7dGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBP YmplY3Qua2V5cyhmKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9ZltlXTtyZXR1cm4g cChlKStkKyh2b2lkIDA9PT10fHxudWxsPT09dD8iIjpwKHQpKX0pLmpvaW4ocyl9 LHRoaXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG4ubG9hZCgpLGZ9LHRoaXMubG9h ZD1mdW5jdGlvbigpe2lmKCFhKXt2YXIgZT1pLnJjayhsKXx8IiI7aWYoZSl7dmFy IHQ9ZS5zcGxpdChzKTt0LmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxp dChkKTsyPT09dC5sZW5ndGgmJih1KyssZltoKHRbMF0pXT1oKHRbMV0pKX0pfWE9 MX1yZXR1cm4gZn0sdGhpcy5zYXZlPWZ1bmN0aW9uKCl7dGhpcy5sb2FkKCksdT9p LnNjayhsLG4udG9TdHJpbmcoKSxjLGMpOmkua2NrKGwpfSx0aGlzLmFkZD1mdW5j dGlvbihlLHQpe24ubG9hZCgpLHUrKyxmW2VdPXQsbi5zYXZlKCl9LHRoaXMucmVt b3ZlPWZ1bmN0aW9uKGUpe24ubG9hZCgpLGZbZV0mJihkZWxldGUgZltlXSx1LS0p LG4uc2F2ZSgpfSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7Zj17fSx1PTAsbi5zYXZl KCl9fXZhciBpPW4oNTcpO2UuZXhwb3J0cz1hO3ZhciBvPXdpbmRvdyxyPSJfX2F0 IixzPSJ8IixkPSIvIn0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oMzY0KTtlLmV4 cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Ii5jb20vIixuPSIub3JnLyIsaT0oZXx8 IiIpLnRvTG93ZXJDYXNlKCksbz0wO3JldHVybiBpJiZpLm1hdGNoKC93c1wvcmVz dWx0c1wvKHdlYnxpbWFnZXN8dmlkZW98bmV3cykvKT9vPTE6aSYmaS5pbmRleE9m KCExKSYmKGkubWF0Y2goL2dvb2dsZS4qXC8oc2VhcmNofHVybHxhY2xrfG1cPykv KXx8aS5pbmRleE9mKCIvcGFnZWFkL2FjbGs/Iik+LTF8fGkuaW5kZXhPZih0KyJ1 cmwiKT4tMXx8aS5pbmRleE9mKHQrImwucGhwIik+LTF8fGkuaW5kZXhPZigiL3Nl YXJjaD8iKT4tMXx8aS5pbmRleE9mKCIvc2VhcmNoLz8iKT4tMXx8aS5pbmRleE9m KCJzZWFyY2g/Iik+LTF8fGkuaW5kZXhPZigieWFuZGV4LnJ1L2NsY2svanNyZWRp cj8iKT4tMXx8aS5pbmRleE9mKHQrInNlYXJjaCIpPi0xfHxpLmluZGV4T2Yobisi c2VhcmNoIik+LTF8fGkuaW5kZXhPZigiL3NlYXJjaC5odG1sPyIpPi0xfHxpLmlu ZGV4T2YoInNlYXJjaC9yZXN1bHRzLiIpPi0xfHxpLmluZGV4T2YodCsicz9icyIp Pi0xfHxpLmluZGV4T2YodCsicz93ZCIpPi0xfHxpLmluZGV4T2YodCsibWI/c2Vh cmNoIik+LTF8fGkuaW5kZXhPZih0KyJtdmMvc2VhcmNoIik+LTF8fGkuaW5kZXhP Zih0KyJ3ZWIiKT4tMXx8aS5tYXRjaCgvYW9sLipcL2FvbC8pfHxpLmluZGV4T2Yo ImhvdGJvdCIrdCk+LTEpJiYwIT1hKGUpJiYobz0xKSxCb29sZWFuKG8pfX0sZnVu Y3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixhPWUuc3Bs aXQoIj8iKS5wb3AoKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCImIiksaT0vXig/OnF8 c2VhcmNofGJzfHdkfHB8a3d8a2V5d29yZHxxdWVyeXxxcnl8cXVlcnl0ZXh0fHRl eHR8c2VhcmNoY3JpdGVyaWF8c2VhcmNoc3RyaW5nfHNlYXJjaHRleHR8c3BfcSk9 KC4qKS9pO2ZvcihuPTA7bjxhLmxlbmd0aDtuKyspaWYodD1pLmV4ZWMoYVtuXSkp cmV0dXJuIHRbMV07cmV0dXJuITF9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17 RElSRUNUOjAsU0VBUkNIOjEsT05fRE9NQUlOOjIsT0ZGX0RPTUFJTjo0fX0sZnVu Y3Rpb24oZSx0LG4pe3ZhciBhPW4oNTgpLmdldEhvc3QsaT1uKDM2NSksbz1uKDM2 Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLkRJUkVDVDtyZXR1 cm4gbj12b2lkIDA9PT1ufHxufHwiaHR0cHM6Ij09d2luZG93LmxvY2F0aW9uLnBy b3RvY29sLHQ9YSh2b2lkIDA9PT10P3dpbmRvdy5sb2NhdGlvbi5ocmVmOnQpLGUm JihyfD10PT09YShlKT9pLk9OX0RPTUFJTjppLk9GRl9ET01BSU4pLCFuJiZvKGUp JiYocnw9aS5TRUFSQ0gpLHJ9fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9bigzNjgp Lm1hcDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoInQuY28iPT09ZSlyZXR1cm4i dHdpdHRlciI7dmFyIHQsbjtmb3IodCBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHko dCkmJihuPWFbdF0sIiI9PT1uJiYobj10KyIuY29tIiksZS5pbmRleE9mKG4pIT09 LTEpKXJldHVybiB0O3JldHVybiBudWxsfX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0 aW9uIGEoZSx0KXt2YXIgbixhLGk9e307Zm9yKGEgaW4gZSluPWVbYV0saVthXT12 b2lkIDAhPT1uP246dChhKTtyZXR1cm4gaX1mdW5jdGlvbiBpKCl7cmV0dXJuIGEo cigibmFtZSIsImxpc3QiKSx1KX1mdW5jdGlvbiBvKCl7ZnVuY3Rpb24gZSgpe3Jl dHVybiIifXJldHVybiBhKHMoInVybCIpLGUpfWZ1bmN0aW9uIHIoZSx0KXt2YXIg bixhLGksbyxyPWxbZV0sZD17fTtpZihyJiZyW3RdKXJldHVybiByW3RdO249cyhl KSxhPXModCk7Zm9yKGkgaW4gbilvPW5baV0sYVtpXSE9PSExJiYoZFtpXT1vKTty ZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLHJbdF09ZCxkfWZ1bmN0aW9uIHMoZSl7 dmFyIHQsbixhPXt9O2lmKGNbZV0pcmV0dXJuIGNbZV07Zm9yKHQgaW4gZCluPWRb dF0sYVt0XT1uW2VdO3JldHVybiBjW2VdPWEsYX12YXIgZD1uKDcyKSx1PW4oNzEp LGM9e30sbD17fTtlLmV4cG9ydHM9e2dldE9iamVjdFdpdGhQcm9wOnMsbGlzdDpp KCksbWFwOm8oKX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKCl7cmV0dXJu IE0uc2xpY2UoLTUpLmpvaW4oeCl9ZnVuY3Rpb24gaShlKXtpZigheXx8ZSl7dmFy IHQ9aC5yY2soYil8fCIiO3QmJihNPWcodCkuc3BsaXQoeCkpLHk9MX19ZnVuY3Rp b24gbyhlKXt2YXIgdCxuLGEsaSxvLHI9bmV3IERhdGUoZS5nZXRGdWxsWWVhcigp LDAsMSk7cmV0dXJuIHQ9ci5nZXREYXkoKSx0PXQ+PTA/dDp0Kzcsbj1NYXRoLmZs b29yKChlLmdldFRpbWUoKS1yLmdldFRpbWUoKS02ZTQqKGUuZ2V0VGltZXpvbmVP ZmZzZXQoKS1yLmdldFRpbWV6b25lT2Zmc2V0KCkpKS84NjRlNSkrMSx0PDQ/KG89 TWF0aC5mbG9vcigobit0LTEpLzcpKzEsbz41MiYmKGE9bmV3IERhdGUoZS5nZXRG dWxsWWVhcigpKzEsMCwxKSxpPWEuZ2V0RGF5KGUpLGk9aT49MD9pOmkrNyxvPWk8 ND8xOjUzKSk6bz1NYXRoLmZsb29yKChuK3QtMSkvNyksb31mdW5jdGlvbiByKGUs dCxuKXtmb3IodmFyIGE9MDthPHQ7YSsrKXt2YXIgaT1uK2E7aT49NTEmJihpPTEp LGUucHVzaCgiMCIrdytpKX19ZnVuY3Rpb24gcygpe2lmKCFrKXt2YXIgZT1vKHYp O2koKSxkKGUpLGs9MX19ZnVuY3Rpb24gZChlKXt2YXIgdCxuO00ubGVuZ3RoPyh0 PU1bTS5sZW5ndGgtMV0sbj1wYXJzZUludCh0LnNwbGl0KHcpLnBvcCgpLDEwKSxu PT1lP01bTS5sZW5ndGgtMV09cGFyc2VJbnQodC5zcGxpdCh3KS5zaGlmdCgpLDEw KSsxK3crZTpuKzE9PWV8fG4+PTUxP00ucHVzaCgiMSIrdytlKTpuPGU/KHIoTSxl LW4tMSxuKzEpLE0ucHVzaCgiMSIrdytlKSk6bj5lJiYoTT1bXSxNLnB1c2goIjEi K3crZSkpLE0ubGVuZ3RoPjUmJk0uc2xpY2UoLTUpKTpNLnB1c2goIjEiK3crZSl9 ZnVuY3Rpb24gdShlKXtpKCksTS5sZW5ndGgmJmguc2NrKGIsXyhhKCkpLDAsZSl9 ZnVuY3Rpb24gYyhlKXtpKCkscygpLHUoZSl9ZnVuY3Rpb24gbCgpe3ZhciBlPVtd O2koKTtmb3IodmFyIHQ9MDt0PE0ubGVuZ3RoO3QrKyllLnB1c2goTVt0XS5zcGxp dCh3KS5zaGlmdCgpKTtyZXR1cm4gZS5zbGljZSgtNSl9ZnVuY3Rpb24gZigpe2Zv cih2YXIgZT1sKCksdD0wLG49MDtuPGUubGVuZ3RoO24rKyl0Kz1wYXJzZUludChl W25dLDEwKXx8MDtyZXR1cm4gdD5DLmhpZ2g/Mzp0PkMubWVkPzI6dD5rPzE6MH1m dW5jdGlvbiBwKCl7eT0wLGs9MCxNPVtdfXZhciBoPW4oNTcpLG09big2MCk7ZS5l eHBvcnRzPXtyZXNldDpwLHVwZGF0ZTpjLGdldDpsLGNsYTpmLHRvS1Y6YX07dmFy IGc9d2luZG93LmRlY29kZVVSSUNvbXBvbmVudCxfPXdpbmRvdy5lbmNvZGVVUklD b21wb25lbnQsdj1uZXcgRGF0ZSxiPShkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmlu ZGV4T2YobSgpKT09PS0xPyJfX2F0IjoiIikrInV2YyIsdz0ifCIseD0iLCIseT0w LGs9MCxDPXtoaWdoOjI1MCxtZWQ6NzV9LE09W119LCwsLCwsLCxmdW5jdGlvbihl LHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuLGE9MjkxO2Zvcih0PXR8 fDMyLG49MDtlJiZuPGUubGVuZ3RoO24rKylhPWEqKGUuY2hhckNvZGVBdChuKStu KSszJjEwNDg1NzU7cmV0dXJuKDE2Nzc3MjE1JmEpLnRvU3RyaW5nKHQpfX0sLCws LCwsLCwsLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShl KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24g aShlKXtyZXR1cm4gci5kZWZhdWx0KGUpfHwiYmttb3JlIj09PWV8fCJsaW5rIj09 PWV8fCJlbWFpbCI9PT1lfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIg bz1uKDM4OSkscj1hKG8pO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUs dCxuKXsidXNlIHN0cmljdCI7dmFyIGE9big3NCk7ZS5leHBvcnRzPWZ1bmN0aW9u KGUpe3JldHVybiB2b2lkIDAhPT1hW2VdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug c3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7 ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCl7aWYoIXYuZGVmYXVsdCgpKXt2YXIg YT1uKDYxNCkoKTthLl9oYXNMb2FkZWRSZXNvdXJjZXM/dCYmc2V0VGltZW91dCh0 LDApOiFmdW5jdGlvbigpe2U9ZXx8e30sbig2MzUpO3ZhciBpPWMuZGVmYXVsdCh7 Y2FtcGFpZ246IkFkZFRoaXMgZXhwYW5kZWQgbWVudSJ9KS5nZW5lcmF0ZUJyYW5k aW5nKGYuZGVmYXVsdC5pc0JyYW5kaW5nUmVkdWNlZCgpKSxvPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImRpdiIpLHM9ImF0LWV4cGFuZGVkLW1lbnUtaG9zdCIsdT1p LmVsZW1lbnQuaW5uZXJIVE1MLGw9e3NoYXJlSGVhZGluZzpoLmRlZmF1bHQoIlNo YXJlIiw5MSksc2hhcmVUaXRsZTplLnRpdGxlfHxnLmRlZmF1bHQudGl0bGV8fCIi LHNoYXJlVVJMOmUudXJsfHxnLmRlZmF1bHQuZHV8fCIiLHJlZHVjZWRCcmFuZGlu Z0lubmVySFRNTDp1fSxwPXIuZGVmYXVsdC5yZXBsYWNlKC9ce1x7KFx3Kz8pXH1c fS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHcuZGVmYXVsdChsW3RdKX0pO28uaWQ9 cyxvLmlubmVySFRNTD1wLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyksZC5k ZWZhdWx0KHQpLGEuX2hhc0xvYWRlZFJlc291cmNlcz0hMH0oKX19dC5fX2VzTW9k dWxlPSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oMzkxKSxyPWEobykscz1uKDM5Miks ZD1hKHMpLHU9bigzNDIpLGM9YSh1KSxsPW4oMzApLGY9YShsKSxwPW4oNjUpLGg9 YShwKSxtPW4oNjMpLGc9YShtKSxfPW4oNTU4KSx2PWEoXyksYj1uKDYzNCksdz1h KGIpO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRz PSc8ZGl2IGlkPSJhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lciIgY2xhc3M9IiBh dC1leHBhbmRlZC1tZW51LWhpZGRlbiIgcm9sZT0iZGlhbG9nIiB0YWJpbmRleD0i MCI+PGJ1dHRvbiBjbGFzcz0iYXQtZXhwYW5kZWQtbWVudS1jbG9zZSIgYXJpYS1s YWJlbD0iQ2xvc2UiPjxzcGFuPsOXPC9zcGFuPjwvYnV0dG9uPjxkaXYgY2xhc3M9 ImF0LXdpbi1tYXNrIGF0LWV4cGFuZGVkLW1lbnUtbWFzayI+PC9kaXY+PGRpdiBj bGFzcz0iYXQtZXhwYW5kZWQtbWVudSBhdC1leHBhbmRlZC1tZW51LXJvdW5kIj48 ZGl2IGlkPSJhdC1leHBhbmRlZC1tZW51LWhkIiBjbGFzcz0iYXQtZXhwYW5kZWQt bWVudS1oZCI+PHNwYW4gaWQ9ImF0LWV4cGFuZGVkLW1lbnUtdGl0bGUiIGNsYXNz PSJhdC1leHBhbmRlZC1tZW51LXRpdGxlIj57e3NoYXJlSGVhZGluZ319PC9zcGFu PjxkaXY+PHNwYW4gY2xhc3M9ImF0LWV4cGFuZGVkLW1lbnUtcGFnZS10aXRsZSI+ e3tzaGFyZVRpdGxlfX08L3NwYW4+PHNwYW4gY2xhc3M9ImF0LWV4cGFuZGVkLW1l bnUtcGFnZS11cmwiPnt7c2hhcmVVUkx9fTwvc3Bhbj48L2Rpdj48Zm9ybSBpZD0i YXQtZXhwYW5kZWQtbWVudS1maWx0ZXItZm9ybSI+PGRpdiBpZD0iYXQtZXhwYW5k ZWQtbWVudS1maWx0ZXIiIHJvbGU9InNlYXJjaCIgY2xhc3M9ImF0LWV4cGFuZGVk LW1lbnUtc2VhcmNoIj48aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMzAiIG1heGxl bmd0aD0iNTAiIGF1dG9jb21wbGV0ZT0ib2ZmIiBpZD0iYXQtZXhwYW5kZWQtbWVu dS1zZXJ2aWNlLWZpbHRlciIgY2xhc3M9ImF0LWV4cGFuZGVkLW1lbnUtc2VhcmNo LWlucHV0IGluaXRpYWwtcmVuZGVyIiB2YWx1ZT0iIi8+PGxhYmVsIGZvcj0iYXQt ZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWZpbHRlciIgY2xhc3M9ImF0LWV4cGFuZGVk LW1lbnUtc2VhcmNoLWxhYmVsIj48c3BhbiBjbGFzcz0iYXQtZXhwYW5kZWQtbWVu dS1zZWFyY2gtbGFiZWwtY29udGVudCI+PC9zcGFuPjwvbGFiZWw+PHNwYW4gY2xh c3M9ImF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWljb24iPjwvc3Bhbj48L2Rpdj48 L2Zvcm0+PC9kaXY+PGRpdiBpZD0iYXQtZXhwYW5kZWQtbWVudS1iZCI+PGg0IGNs YXNzPSJhdC1leHBhbmRlZC1tZW51LXRvcC1zZXJ2aWNlcy1oZWFkZXIiPjwvaDQ+ PHVsIGlkPSJhdC1leHBhbmRlZC1tZW51LXRvcC1zZXJ2aWNlLWxpc3QtY29udGFp bmVyIiBjbGFzcz0iYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QiIHJvbGU9 Im1lbnUiPjxsaSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojODQ4NDg0O2hlaWdo dDo4NHB4O29wYWNpdHk6MC42OyI+PGJ1dHRvbiBjbGFzcz0iYXQtZXhwYW5kZWQt bWVudS1idXR0b24iPjwvYnV0dG9uPjxzcGFuIGNsYXNzPSJhdC1leHBhbmRlZC1t ZW51LWJ1dHRvbi1sYWJlbCI+PC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJiYWNrZ3Jv dW5kLWNvbG9yOiM4NDg0ODQ7aGVpZ2h0Ojg0cHg7b3BhY2l0eTowLjY7Ij48YnV0 dG9uIGNsYXNzPSJhdC1leHBhbmRlZC1tZW51LWJ1dHRvbiI+PC9idXR0b24+PHNw YW4gY2xhc3M9ImF0LWV4cGFuZGVkLW1lbnUtYnV0dG9uLWxhYmVsIj48L3NwYW4+ PC9saT48bGkgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Izg0ODQ4NDtoZWlnaHQ6 ODRweDtvcGFjaXR5OjAuNjsiPjxidXR0b24gY2xhc3M9ImF0LWV4cGFuZGVkLW1l bnUtYnV0dG9uIj48L2J1dHRvbj48c3BhbiBjbGFzcz0iYXQtZXhwYW5kZWQtbWVu dS1idXR0b24tbGFiZWwiPjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0iYmFja2dyb3Vu ZC1jb2xvcjojODQ4NDg0O2hlaWdodDo4NHB4O29wYWNpdHk6MC42OyI+PGJ1dHRv biBjbGFzcz0iYXQtZXhwYW5kZWQtbWVudS1idXR0b24iPjwvYnV0dG9uPjxzcGFu IGNsYXNzPSJhdC1leHBhbmRlZC1tZW51LWJ1dHRvbi1sYWJlbCI+PC9zcGFuPjwv bGk+PGxpIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiM4NDg0ODQ7aGVpZ2h0Ojg0 cHg7b3BhY2l0eTowLjY7Ij48YnV0dG9uIGNsYXNzPSJhdC1leHBhbmRlZC1tZW51 LWJ1dHRvbiI+PC9idXR0b24+PHNwYW4gY2xhc3M9ImF0LWV4cGFuZGVkLW1lbnUt YnV0dG9uLWxhYmVsIj48L3NwYW4+PC9saT48bGkgc3R5bGU9ImJhY2tncm91bmQt Y29sb3I6Izg0ODQ4NDtoZWlnaHQ6ODRweDtvcGFjaXR5OjAuNjsiPjxidXR0b24g Y2xhc3M9ImF0LWV4cGFuZGVkLW1lbnUtYnV0dG9uIj48L2J1dHRvbj48c3BhbiBj bGFzcz0iYXQtZXhwYW5kZWQtbWVudS1idXR0b24tbGFiZWwiPjwvc3Bhbj48L2xp PjxsaSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojODQ4NDg0O2hlaWdodDo4NHB4 O29wYWNpdHk6MC42OyI+PGJ1dHRvbiBjbGFzcz0iYXQtZXhwYW5kZWQtbWVudS1i dXR0b24iPjwvYnV0dG9uPjxzcGFuIGNsYXNzPSJhdC1leHBhbmRlZC1tZW51LWJ1 dHRvbi1sYWJlbCI+PC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJiYWNrZ3JvdW5kLWNv bG9yOiM4NDg0ODQ7aGVpZ2h0Ojg0cHg7b3BhY2l0eTowLjY7Ij48YnV0dG9uIGNs YXNzPSJhdC1leHBhbmRlZC1tZW51LWJ1dHRvbiI+PC9idXR0b24+PHNwYW4gY2xh c3M9ImF0LWV4cGFuZGVkLW1lbnUtYnV0dG9uLWxhYmVsIj48L3NwYW4+PC9saT48 bGkgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Izg0ODQ4NDtoZWlnaHQ6ODRweDtv cGFjaXR5OjAuNjsiPjxidXR0b24gY2xhc3M9ImF0LWV4cGFuZGVkLW1lbnUtYnV0 dG9uIj48L2J1dHRvbj48c3BhbiBjbGFzcz0iYXQtZXhwYW5kZWQtbWVudS1idXR0 b24tbGFiZWwiPjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0iYmFja2dyb3VuZC1jb2xv cjojODQ4NDg0O2hlaWdodDo4NHB4O29wYWNpdHk6MC42OyI+PGJ1dHRvbiBjbGFz cz0iYXQtZXhwYW5kZWQtbWVudS1idXR0b24iPjwvYnV0dG9uPjxzcGFuIGNsYXNz PSJhdC1leHBhbmRlZC1tZW51LWJ1dHRvbi1sYWJlbCI+PC9zcGFuPjwvbGk+PC91 bD48ZGl2IGNsYXNzPSJhdC1leHBhbmRlZC1tZW51LWZ0Ij48c3BhbiBjbGFzcz0i YXQtZXhwYW5kZWQtbWVudS1mdC1sb2FkaW5nIj5Mb2FkaW5nIFNlcnZpY2VzPC9z cGFuPjxkaXYgY2xhc3M9ImxvYWRpbmctY29udGFpbmVyICI+PGRpdiBjbGFzcz0i bG9hZGluZy1zcGlubmVyIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48 ZGl2IGNsYXNzPSIiPnt7cmVkdWNlZEJyYW5kaW5nSW5uZXJIVE1MfX08L2Rpdj48 ZGl2IGNsYXNzPSJhdC1leHBhbmRlZC1tZW51LWZhZGUiPjwvZGl2PjwvZGl2Pid9 LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtlPWV8 fGZ1bmN0aW9uKCl7fSxuLmUoMjIxLGZ1bmN0aW9uKHQpe3ZhciBhPXtjcmVhdGVF eHBhbmRlZE1lbnU6bigzOTMpLEV4cGFuZGVkTWVudUNvbnRyb2xsZXJWaWV3Om4o NTQ2KX07big2MTUpKGUuYmluZChudWxsLGEpKX0pfXQuX19lc01vZHVsZT0hMCx0 LmRlZmF1bHQ9YSxlLmV4cG9ydHM9dC5kZWZhdWx0fSwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsZnVuY3Rp b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUsdCxuLGEsaSl7dmFy IG87cmV0dXJuIHgoZSk/ayhlLHQsbik6YS5kZWZhdWx0U2hhcmVUb05ld1RhYj8o aT1sKGUsMCx0LG4pLG89TyhpLCJfYmxhbmsiKSk6d2luZG93LmxvY2F0aW9uLmhy ZWYuc2VhcmNoKF9hdGMucnNyY3MuYm9va21hcmspPi0xP3dpbmRvdy5sb2NhdGlv bj1sKGUsMCx0LG4pOmEuZGVmYXVsdFNoYXJlVG9OZXdUYWI/KGk9bChlLDAsdCxu KSxvPU8oaSwiX2JsYW5rIikpOkMoZSx0LG4pLG99dmFyIGk9big1NDgpLG89big1 ODIpLHI9big1ODMpLHM9big1ODQpLGQ9big1ODUpLHU9big1ODYpLmNvbmZSZXF1 aXJlc0ZhY2Vib29rU0RLLGM9big1ODcpLGw9big1NTcpLGY9big1ODEpLHA9big1 OTApLGg9big2MzkpLG09big2NDApLGc9big2NDEpLF89big2NDMpLHY9big2NDQp LGI9big2NDUpLHc9big1NjYpLHg9big2NDYpLHk9big2MTcpLGs9big2NDcpLEM9 big2NDgpLE09big1OTEpLEE9big1KSxPPW4oNjMxKSxFPW4oNTY3KSxTPW4oMzEp LEk9big2NDkpLFQ9big1NTkpLE49bigzNyksaj1uKDM4OSksRD1uKDE4KSx6PUEo Im1zZWRnZSIpfHxBKCJpZTExIil8fEEoImllMTAiKTtlLmV4cG9ydHM9ZnVuY3Rp b24oZSx0KXt2YXIgbixsLHg9d2luZG93LmFkZHRoaXNfY29uZmlnP1Qod2luZG93 LmFkZHRoaXNfY29uZmlnKTp7fSxrPXdpbmRvdy5hZGR0aGlzX3NoYXJlP1Qod2lu ZG93LmFkZHRoaXNfc2hhcmUpOnt9O3N3aXRjaCh0PXR8fHt9LHgucHJvZHVjdD10 LnByb2R1Y3QseC53aWRnZXRJZD10LndpZGdldElkLGsuaGlkZUVtYWlsU2hhcmlu Z0NvbmZpcm1hdGlvbj10LmhpZGVFbWFpbFNoYXJpbmdDb25maXJtYXRpb24seC5w dWJpZD1TKCksay5zZXJ2aWNlPWUsay5tZWRpYT12b2lkIDAhPT10Lm1lZGlhP3Qu bWVkaWE6ay5tZWRpYSxrLnVybD12b2lkIDAhPT10LnVybD90LnVybDprLnVybCxr LnRpdGxlPXZvaWQgMCE9PXQudGl0bGU/dC50aXRsZTprLnRpdGxlLGsuZGVzY3Jp cHRpb249dm9pZCAwIT09dC5kZXNjcmlwdGlvbj90LmRlc2NyaXB0aW9uOmsuZGVz Y3JpcHRpb24say5wYXNzdGhyb3VnaD12b2lkIDAhPT10LnBhc3N0aHJvdWdoP3Qu cGFzc3Rocm91Z2g6ay5wYXNzdGhyb3VnaCxlKXtjYXNlImFkZHRoaXMiOmNhc2Ui bW9yZSI6Y2FzZSJia21vcmUiOmNhc2UiY29tcGFjdCI6eC51aV9wYW5lPSIiLE0o ZG9jdW1lbnQuYm9keSwibW9yZSIsIiIsIiIseCxrKTticmVhaztjYXNlIm1haWx0 byI6d2luZG93LmxvY2F0aW9uLmhyZWY9YihrLHgsMSk7YnJlYWs7Y2FzZSJlbWFp bCI6ay5lbWFpbF90ZW1wbGF0ZT10LmVtYWlsX3RlbXBsYXRlfHxrLmVtYWlsX3Rl bXBsYXRlLGsuZW1haWxfdmFycz10LmVtYWlsX3ZhcnN8fGsuZW1haWxfdmFycyxs PXAoayx4KTticmVhaztjYXNlImZhdm9yaXRlcyI6dmFyIEM9ay51cmwsTz1rLnRp dGxlLEw9QSgid2luIik/IkNvbnRyb2wiOiJDb21tYW5kIixSPWsuc2hhcmVfdXJs X3RyYW5zZm9ybXN8fGsudXJsX3RyYW5zZm9ybXMsUD0iUHJlc3MgPCIrTCsiPitE IHRvIGJvb2ttYXJrIGluICI7Tz1OKE8pLEM9dyhDKSxDPUUoQyxSLGssZSksQz15 KGUsayx4LEMsMSksQSgiaXBhIik/YWxlcnQoIlRhcCB0aGUgPHBsdXM+IHRvIGJv b2ttYXJrIGluIFNhZmFyaSIpOmFsZXJ0KFArKEkoKXx8InlvdXIgYnJvd3NlciIp KTticmVhaztjYXNlInByaW50IjpmKGUsayx4KSxtKCk7YnJlYWs7Y2FzZSJsaW5r IjpoKGsseCk7YnJlYWs7Y2FzZSJzbGFjayI6bD1nKGsseCk7YnJlYWs7Y2FzZSJz a3lwZSI6bD1fKGsseCk7YnJlYWs7Y2FzZSJzbXMiOnYoayx4KTticmVhaztjYXNl ImJhaWR1IjpkKGsseCk7YnJlYWs7Y2FzZSJrYWthb3RhbGsiOmw9QSgibW9iIik/ YShlLGsseCx0LG4pOnAoayx4KTticmVhaztjYXNlInBpbnRlcmVzdCI6Y2FzZSJw aW50ZXJlc3Rfc2hhcmUiOmw9aShrLHgpLGFkZHRoaXMubWVudS5jbG9zZSgpO2Jy ZWFrO2Nhc2UidGhlZmFuY3kiOmYoZSxrLHgpLG8oKSxhZGR0aGlzLm1lbnUuY2xv c2UoKTticmVhaztjYXNlImZhY2Vib29rIjp1KGspPyhmKGUsayx4KSxjKEQoKSxm dW5jdGlvbihpKXtpZihpKXJldHVybiB2b2lkIGEoZSxrLHgsdCxuKTt0cnl7d2lu ZG93LkZCLnVpKHttZXRob2Q6InNoYXJlX29wZW5fZ3JhcGgiLGFjdGlvbl90eXBl OiJvZy5zaGFyZXMiLGFjdGlvbl9wcm9wZXJ0aWVzOkpTT04uc3RyaW5naWZ5KHtv YmplY3Q6eyJvZzp1cmwiOmsudXJsLCJvZzp0aXRsZSI6ay50aXRsZSwib2c6ZGVz Y3JpcHRpb24iOmsuZGVzY3JpcHRpb24sIm9nOmltYWdlIjprLm1lZGlhfX0pfSl9 Y2F0Y2goaSl7YShlLGsseCx0LG4pfX0seikpOmw9YShlLGsseCx0LG4pO2JyZWFr O2Nhc2UiaG91enoiOmlmKCFrLm1lZGlhKXtmKGUsayx4KSxyKCksYWRkdGhpcy5t ZW51LmNsb3NlKCk7YnJlYWt9Y2FzZSJ3ZWhlYXJ0aXQiOmlmKCFrLm1lZGlhKXtm KGUsayx4KSxzKCksYWRkdGhpcy5tZW51LmNsb3NlKCk7YnJlYWt9ZGVmYXVsdDps PWEoZSxrLHgsdCxuKX1yZXR1cm4gaihrLnNlcnZpY2UpfHxhZGR0aGlzLmVkLmZp cmUoImFkZHRoaXMubWVudS5zaGFyZSIsYWRkdGhpcyxrKSxfYXRlLmdhdChlLGsu dXJsLHgsayksbH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9 big1NDkpLGk9big1NTUpLG89big1ODEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQp e3ZhciBuO3JldHVybiBlLm1lZGlhP249aShlLHQpOihvKCJwaW50ZXJlc3Rfc2hh cmUiLGUsdCksdm9pZCBhKCkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0 Ijt2YXIgYT1uKDU1MCksaT1uKDU1MykuUElOVEVSRVNUO2UuZXhwb3J0cz1mdW5j dGlvbigpe2EoaSsiP3I9Iis5OTk5OTk5OSpNYXRoLnJhbmRvbSgpKX19LGZ1bmN0 aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUsdCl7dmFyIG49cyhlLDAsMSwwLDAsMSk7 ZT09PXIuUElOVEVSRVNUJiYoaSgpLG4uc2V0QXR0cmlidXRlKCJ2aWEiLCJhZGR0 aGlzIikpfXZhciBpPW4oNTUxKSxvPW4oNTUyKSxyPW4oNTUzKSxzPW4oNTU0KSxk PW4oMjMpLmxpc3Rlbix1PXdpbmRvdy5wYXJlbnQ9PT13aW5kb3c7ZS5leHBvcnRz PWZ1bmN0aW9uKGUpe3U/YShlKTpvP3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uo ImF0LXNoYXJlLWJvb2ttYXJrbGV0OiIrZSwiKiIpOmEoZSl9LHUmJmQod2luZG93 LCJtZXNzYWdlIixmdW5jdGlvbihlKXtpZihlKXt2YXIgdD1fYXRyLnN1YnN0cmlu ZygwLF9hdHIubGVuZ3RoLTEpLG49ZS5vcmlnaW4ucmVwbGFjZSgvXmh0dHBzPzov LCIiKSxpPW49PT10fHwvXlwvXC9sb2NhbGhvc3QoOlxkKyk/JC8udGVzdChuKSxv PSJzdHJpbmciPT10eXBlb2YgZS5kYXRhO2lmKG8mJmkpe3ZhciByPWUuZGF0YS5t YXRjaCgvYXRcLXNoYXJlXC1ib29rbWFya2xldFw6KC4rPykkLyl8fFtdLHM9clsx XTtpZihzKXt0cnl7X2F0ZS5tZW51LmNsb3NlKCl9Y2F0Y2goZSl7fWEocyl9fX19 KX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIiksdD13aW5kb3cuYWRkdGhp c19jb25maWcmJmFkZHRoaXNfY29uZmlnLmltYWdlX2V4Y2x1ZGUsbj1uZXcgUmVn RXhwKCIoXFxzfF4pIit0KyIoXFxzfCQpIik7aWYodClmb3IodmFyIGE9MDthPGUu bGVuZ3RoO2ErKyl7dmFyIGk9ZVthXS5jbGFzc05hbWV8fCIiO2kubWF0Y2gobikm JmVbYV0uc2V0QXR0cmlidXRlKCJub3BpbiIsIm5vcGluIil9fX0sZnVuY3Rpb24o ZSx0KXt2YXIgbj13aW5kb3csYT0hIW4ucG9zdE1lc3NhZ2UmJigiIituLnBvc3RN ZXNzYWdlKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSE9 PS0xO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9f ZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXtIT1VaWjoiLy93d3cuaG91enouY29tL2pz L2NsaXBwZXJCb29rbWFya2xldC5qcyIsRkFOQ1k6Ii8vZmFuY3kuY29tL2Jvb2tt YXJrbGV0L2ZhbmN5X3RhZ2dlci5qcyIsUElOVEVSRVNUOiIvL2Fzc2V0cy5waW50 ZXJlc3QuY29tL2pzL3Bpbm1hcmtsZXQuanMiLFdFSEVBUlRJVDoiLy93ZWhlYXJ0 aXQuY29tL2Jvb2ttYXJrbGV0LmpzIixCQUlEVToiLy9zd2VuemhhbmcuYmFpZHUu Y29tL2pzL3BqdC9jb250ZW50X2V4L3BhZ2UvYm9va21hcmsuanMifSxlLmV4cG9y dHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9big2MCksaT17fTtl LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sbyxyLHMpe2lmKCFpW2VdfHxzKXt2YXIg ZD13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksdT0iaHR0 cHM6Ij09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCxjPSIiLGw9cj9yOndpbmRv dy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHx3aW5k b3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybiBkLnNldEF0dHJpYnV0 ZSgidHlwZSIsInRleHQvamF2YXNjcmlwdCIpLG4mJmQuc2V0QXR0cmlidXRlKCJh c3luYyIsImFzeW5jIiksbyYmZC5zZXRBdHRyaWJ1dGUoImlkIixvKSwod2luZG93 LmNocm9tZSYmd2luZG93LmNocm9tZS5zZWxmfHx3aW5kb3cuc2FmYXJpJiZ3aW5k b3cuc2FmYXJpLmV4dGVuc2lvbikmJihjPXU/Imh0dHBzOiI6Imh0dHA6IiwwPT09 ZS5pbmRleE9mKCIvLyIpJiYoZT1jK2UpKSxkLnNyYz0odHx8MD09PWUuaW5kZXhP ZigiLy8iKT8iIjpjK2EoKSkrZSxsLmluc2VydEJlZm9yZShkLGwuZmlyc3RDaGls ZCksaVtlXT0xLGR9cmV0dXJuIDF9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp Y3QiO3ZhciBhPW4oNTU2KSxpPW4oNTc5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0 KXtyZXR1cm4gaShhKGUsdCksNzUwLDUzNiwiU2hhcmUgdG8gUGludGVyZXN0Iiwh MCl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPW4oNTU3KTtl LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSgicGludGVyZXN0X3NoYXJl IiwhMSxlLHQpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYT1u KDUpLGk9big1NTgpLG89big1NTkpLHI9big2MSkscz1uKDU2MCksZD1uKDYzKSx1 PW4oNTYxKSxjPW4oNTc1KSxsPW4oMzEpLGY9big0NikscD13aW5kb3cuZW5jb2Rl VVJJQ29tcG9uZW50O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixoLG0pe3ZhciBn PXUoX2F0ZSkuY2xlYXJPdXJGcmFnbWVudDtpZigibW9yZSI9PT1lJiYhYSgibW9i IikmJiFpKCkpe3ZhciBfPW8obnx8KCJ1bmRlZmluZWQiPT10eXBlb2YgX2F0dz93 aW5kb3cuYWRkdGhpc19zaGFyZTpfYXR3LnNoYXJlKSk7Xy51cmw9cChfLnVybCks Xy50aXRsZT1wKF8udGl0bGV8fCh3aW5kb3cuYWRkdGhpc19zaGFyZXx8e30pLnRp dGxlfHwiIiksaD0idW5kZWZpbmVkIj09dHlwZW9mIF9hdHc/aDpfYXR3LmNvbmY7 dmFyIHY9d2luZG93Ll9hdGMucnNyY3MuYm9va21hcmsrIiNhdHM9IitwKHIoXykp KyImYXRjPSIrcChyKGgpKTtpZihhKCJtc2kiKSYmdi5sZW5ndGg+MmUzKXt2PXYu c3BsaXQoIiZhdGMiKVswXTt2YXIgYj17cHJvZHVjdDpoLnByb2R1Y3QsZGF0YV90 cmFja19jbGlja2JhY2s6aC5kYXRhX3RyYWNrX2NsaWNrYmFjayxwdWJpZDpoLnB1 YmlkLHVzZXJuYW1lOmgudXNlcm5hbWUscHViOmgucHViLHVpX2VtYWlsX3RvOmgu dWlfZW1haWxfdG8sdWlfZW1haWxfZnJvbTpoLnVpX2VtYWlsX2Zyb20sdWlfZW1h aWxfbm90ZTpoLnVpX2VtYWlsX25vdGV9O19hdHcuaWNzKGUpJiYoYi5zZXJ2aWNl c19jdXN0b209X2F0dy5pY3MoZSkpLHYrPSImYXRjPSIrcChyKGIpKX1yZXR1cm4g dn1yZXR1cm4gcyhtfHwhMSkrKHQ/ImZlZWQucGhwIjoiZW1haWwiPT09ZT8idGVs bGZyaWVuZF92Mi5waHAiOiJib29rbWFyay5waHAiKSsiP3Y9MzAwJndpbm5hbWU9 YWRkdGhpcyYiK2Moe3N2YzplLGZlZWQ6dCxzaGFyZTpuLGNvbmZpZzpoLGNsYXNz aWZpY2F0aW9uQml0bWFzazpfYXRlLmNiLHNlY29uZGFyeVByb2R1Y3RDb2RlOl9h dGUudHJhY2smJl9hdGUudHJhY2suc3BjLHVpZDpmKCksc2Vzc2lvbklEOl9hdGUu dHJhY2smJl9hdGUudHJhY2suc3NpZCgpLHB1YklEOmwoKSxmZWVkc0FCQ2VsbDpf YXRlLmFiLHVzZXNGYWNlYm9va0xpYnJhcnk6X2F0ZS51ZmJsLHVzZXNVc2VyQVBJ Ol9hdGUudXVkfSkrKGQuZHI/IiZwcmU9IitwKGcoZC5kcikpOiIiKSsiJnR0PTAi KygibW9yZSI9PT1lJiZhKCJpcGEiKT8iJmltb3JlPTEiOiIiKSsiJmNhcHRjaGFf cHJvdmlkZXI9cmVjYXB0Y2hhMiZwcm89IisoX2F0ZS5wcm89PT0hMD8xOjApfX0s ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVy biBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKCl7cmV0 dXJuKHIuZGVmYXVsdCgiaWUxMSIpfHxyLmRlZmF1bHQoImllMTAiKSkmJih3aW5k b3cuYWRkdGhpc19jb25maWd8fHt9KS51aV81MDhfY29tcGxpYW50fXQuX19lc01v ZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIgbz1uKDUpLHI9YShvKTtlLmV4cG9ydHM9 dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQp e2lmKG51bGw9PXR8fCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4gdDtpZih0IGlu c3RhbmNlb2YgT2JqZWN0KXt2YXIgbj17fTtpZigiZnVuY3Rpb24iPT10eXBlb2Yg dC5oYXNPd25Qcm9wZXJ0eSlmb3IodmFyIGEgaW4gdCluW2FdIT09dCYmdC5oYXNP d25Qcm9wZXJ0eShhKSYmdm9pZCAwIT09dFthXSYmKG5bYV09ZSh0W2FdKSk7cmV0 dXJuIG59cmV0dXJuIG51bGx9fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9ZG9jdW1l bnQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWU/Imh0dHBzOiI6YS5sb2Nh dGlvbi5wcm90b2NvbDtyZXR1cm4iZmlsZToiPT09dCYmKHQ9Imh0dHA6IiksdCsi Ly93d3cuYWRkdGhpcy5jb20vIn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj dCI7dmFyIGE9big1NSksaT1uKDU2Miksbz1uKDU5KS5tYWtlQ1VJRCxyPW4oNTYz KSxzPW4oMzEpLGQ9bigxMyksdT1uKDU1NCksYz1uKDU2NCksbD1uKDU2NSksZj1u KDU2NikscD1uKDU2NyksaD1uKDU3NCksbT0obmV3IERhdGUpLmdldFRpbWUoKSxn PTAsXz1udWxsLHY9d2luZG93LmVuY29kZVVSSUNvbXBvbmVudDtlLmV4cG9ydHM9 ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBNYXRoLmZsb29yKCgobmV3 IERhdGUpLmdldFRpbWUoKS1tKS8xMDApLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBu KGUpe3JldHVybiAwPT09ZyYmKGc9ZXx8bygpKSxnfWZ1bmN0aW9uIGIoZSx0LG4p e251bGwhPT1fJiZjbGVhclRpbWVvdXQoXyksZSYmKF89c2V0VGltZW91dChmdW5j dGlvbigpe3QoISFuKX0scikpfWZ1bmN0aW9uIHcoZSxuKXtyZXR1cm4gdihlKSsi PSIrdihuKSsiOyIrdCgpfWZ1bmN0aW9uIHgoKXtyZXR1cm4gaCh7dWlkOmUudWlk LHNlc3Npb25JRDpuKCkscHViSUQ6cygpLGZlZWRzQUJDZWxsOmUuYWJ9KX1mdW5j dGlvbiB5KHQpe3Q9dC5zcGxpdCgiLyIpLHQuc2hpZnQoKSx0LnNoaWZ0KCk7dmFy IG49dC5zaGlmdCgpLGE9dC5zaGlmdCgpLGk9dC5zaGlmdCgpO24mJihlLmFiPWUu YWIpLGEmJihlLnNpZD1nPWEpLGkmJihoLnNlcT1pKX1mdW5jdGlvbiBrKGUsdCl7 InN0cmluZyI9PXR5cGVvZiBlJiYoZT17dXJsOmV9KTt2YXIgbj1lLnVybCxvPWUu cGFyYW1zLHI9ZS5qcyxzPWUucmFuZCxsPWUuY2xvc2UsZj1uKyhvPyI/Iisocz9j KCkrKDI9PXM/IiZjb2xjPSIrKG5ldyBEYXRlKS5nZXRUaW1lKCk6IiIpOiIiKSsi JiIrbzoiIik7aWYocil0JiZkLmVycm9yKCJsb2FkUGl4ZWwgY2FsbGJhY2sgaXMg bm90IHlldCBzdXBwb3J0ZWQgZm9yIHNjcmlwdHMiKSx1KGYsMSk7ZWxzZSBpZihs KXt0JiZkLmVycm9yKCJsb2FkUGl4ZWwgY2FsbGJhY2sgaXMgbm90IHlldCBzdXBw b3J0ZWQgZm9yIGlmcmFtZXMiKTt2YXIgcD1kb2N1bWVudCxoPXAuY3JlYXRlRWxl bWVudCgiaWZyYW1lIik7aC5pZD0iX2F0ZiIsaC5zcmM9ZixpKGgpLHAuYm9keS5h cHBlbmRDaGlsZChoKSxoPXAuZ2V0RWxlbWVudEJ5SWQoIl9hdGYiKX1lbHNlIGEo ZixudWxsLHQpO2QuZGVidWcoInU9IitmKX1yZXR1cm57Zm9ybWF0Q3VzdG9tRXZl bnQ6dyxjbGVhck91ckZyYWdtZW50OmYsZ2V0T3VyRnJhZ21lbnQ6bCxtdW5nZVVS TDpwLHNzaWQ6bixzdGE6eCx1bnM6eSxsb2FkUGl4ZWw6ayxzY2hlZHVsZVRyYW5z bWl0OmJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5z dHlsZSYmKGUuc3R5bGUud2lkdGg9ZS5zdHlsZS5oZWlnaHQ9IjFweCIsZS5zdHls ZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuc3R5bGUudG9wPSItOTk5OXB4IixlLnN0 eWxlLnpJbmRleD0xZTUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9NTAwfSxm dW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZs b29yKDQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpfX0sZnVu Y3Rpb24oZSx0LG4pe3ZhciBhPW4oNTkpLmlzVmFsaWRDVUlELGk9big1KTtlLmV4 cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGU9ZXx8IiIsaSgibXNpIikm JmUgaW5zdGFuY2VvZiBPYmplY3QmJiFlLmxlbmd0aCYmKGU9T2JqZWN0LmtleXMo ZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0KyI9IitlW3RdfSkuam9pbigiJiIp KSx0PWUuc3BsaXQoIiMiKS5wb3AoKS5zcGxpdCgiLCIpLnNoaWZ0KCkuc3BsaXQo Ij0iKS5wb3AoKSxhKHQpP2Uuc3BsaXQoIiMiKS5wb3AoKS5zcGxpdCgiLCIpOlsi Il19fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9big1OSkuaXNWYWxpZENVSUQsaT1u KDU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBlPWV8fCIi LHQ9aShlKS5zaGlmdCgpLnNwbGl0KCI9IikucG9wKCksYSh0KXx8ZS5pbmRleE9m KCIjYXRfcGNvPSIpPi0xP2Uuc3BsaXQoIiMiKS5zaGlmdCgpOih0PWUuc3BsaXQo IiMiKS5zbGljZSgxKS5qb2luKCIjIikuc3BsaXQoIjsiKS5zaGlmdCgpLDM9PT10 LnNwbGl0KCIuIikubGVuZ3RoJiYodD10LnNwbGl0KCIuIikuc2xpY2UoMCwtMSku am9pbigiLiIpKSwxMj09PXQubGVuZ3RoJiYiLiI9PT10LnN1YnN0cigwLDEpJiYv W2EtekEtWjAtOVwtX117MTF9Ly50ZXN0KHQuc3Vic3RyKDEpKT9lLnNwbGl0KCIj Iikuc2hpZnQoKTplKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDU2OCksaT1u KDU3MSksbz1uKDU2Nikscj1uKDU3Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxu LHMpe3JldHVybiB0fHwodD17fSksdC5yZW1vdmV8fCh0LnJlbW92ZT1bXSksdC5y ZW1vdmUucHVzaCYmKHQucmVtb3ZlLnB1c2goInNtc19zcyIpLHQucmVtb3ZlLnB1 c2goImF0X3h0IiksdC5yZW1vdmUucHVzaCgiYXRfcGNvIiksdC5yZW1vdmUucHVz aCgiZmJfcmVmIiksdC5yZW1vdmUucHVzaCgiZmJfc291cmNlIikpLHQucmVtb3Zl JiYoZT1hKGUsdC5yZW1vdmUpKSx0LmNsZWFuJiYoZT1pKGUpKSx0LmRlZnJhZyYm KGU9byhlKSksdC5hZGQmJihlPXIoZSx0LmFkZCxuLHMpKSxlfX0sZnVuY3Rpb24o ZSx0LG4pe3ZhciBhPW4oNTY5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIg bixpPXt9LG89dHx8W107Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylpW29bbl1dPTE7 cmV0dXJuIGEoZSxmdW5jdGlvbihlLHQpe3ZhciBuLGEsbz1bXTtpZih0KXtmb3Io biBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJiJzdHJpbmciPT10eXBlb2Yg dFtuXSlpZihhPSh0W25dfHwiIikuc3BsaXQoIj0iKSwyIT09YS5sZW5ndGgmJnRb bl0pby5wdXNoKHRbbl0pO2Vsc2V7aWYoaVthWzBdXSljb250aW51ZTt0W25dJiZv LnB1c2godFtuXSl9ZSs9by5sZW5ndGg/Ij8iK28uam9pbigiJiIpOiIifXJldHVy biBlfSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9big1NzApO2UuZXhwb3J0cz1m dW5jdGlvbihlLHQpe3ZhciBuLGksbztyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUm JihlPWEoZSkpLG49KGV8fCIiKS5zcGxpdCgiPyIpLGk9bi5zaGlmdCgpLG89bi5q b2luKCI/Iikuc3BsaXQoIiYiKSx0KGksbyl9fSxmdW5jdGlvbihlLHQsbil7dmFy IGE9big5KSxpPW4oNjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiB0 PXZvaWQgMCE9PXQ/dDoiJiIsYShlLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1p KG4pLG4mJmUucHVzaCh3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KG4pKyI9Iit3 aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KGkodCkpKSxlfSxbXSkuam9pbih0KX19 LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDU2OSk7ZS5leHBvcnRzPWZ1bmN0aW9u KGUpe3JldHVybiBlPWV8fCIiLGEoZSxmdW5jdGlvbihlLHQpe3ZhciBuLGEsaT1l LmluZGV4T2YoIjtqc2Vzc2lvbmlkIiksbz1bXTtpZihpPi0xJiYoZT1lLnN1YnN0 cigwLGkpKSx0KXtmb3IobiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJiJz dHJpbmciPT10eXBlb2YgdFtuXSl7aWYoYT0odFtuXXx8IiIpLnNwbGl0KCI9Iiks Mj09PWEubGVuZ3RoJiYoMD09PWFbMF0uaW5kZXhPZigidXRtXyIpfHwiZ2NsaWQi PT09YVswXXx8InNtc19zcyI9PT1hWzBdfHwiYXRfeHQiPT09YVswXXx8ImZiX3Jl ZiI9PT1hWzBdfHwiZmJfc291cmNlIj09PWFbMF0pKWNvbnRpbnVlO3Rbbl0mJm8u cHVzaCh0W25dKX1lKz1vLmxlbmd0aD8iPyIrby5qb2luKCImIik6IiJ9cmV0dXJu IGV9KX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDU3MCksaT1uKDU3Myk7ZS5l eHBvcnRzPWZ1bmN0aW9uKGUsdCxuLG8pe2Z1bmN0aW9uIHIoYSl7ZS5pbmRleE9m KGErIj0iKT09PS0xJiYoc1thXT1pKHRbYV0sZSxuLG8pKX12YXIgcz17fTtyZXR1 cm4gdCYmKE9iamVjdC5rZXlzKHQpLmZvckVhY2gociksdD1hKHMpKSxlKyh0Lmxl bmd0aD8oZS5pbmRleE9mKCI/Iik+LTE/IiYiOiI/IikrdDoiIil9fSxmdW5jdGlv bihlLHQpe3ZhciBuPXdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQ7ZS5leHBvcnRz PWZ1bmN0aW9uKGUsdCxhLGkpe3JldHVybiBlLnJlcGxhY2UoL1x7XHtzZXJ2aWNl XH1cfS9nLG4oaXx8ImFkZHRoaXMtc2VydmljZS1jb2RlIikpLnJlcGxhY2UoL1x7 XHtjb2RlXH1cfS9nLG4oaXx8ImFkZHRoaXMtc2VydmljZS1jb2RlIikpLnJlcGxh Y2UoL1x7XHt0aXRsZVx9XH0vZyxuKChhfHx3aW5kb3cuYWRkdGhpc19zaGFyZSku dGl0bGUpKS5yZXBsYWNlKC9ce1x7dXJsXH1cfS9nLG4odCkpfX0sZnVuY3Rpb24o ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQsbixpKXtyZXR1cm4gbj1u fHwidW5rbm93biIsIkFULSIrbisiLy0vIitpKyIvIit0KyIvIithKyt9dmFyIGE9 MTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS51aWQsZS5zZXNzaW9u SUQsZS5wdWJJRCxlLmZlZWRzQUJDZWxsKX0sZS5leHBvcnRzLnNlcT1hfSxmdW5j dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoKXt2YXIgZSx0LG49 ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxhPXt9O2Zvcihl PTA7ZTxuLmxlbmd0aDtlKyspdD1uW2VdLHQuaHJlZiYmdC5yZWwmJihhW3QucmVs XT10LmhyZWYpO3JldHVybiBhfWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj17cGludGVy ZXN0X3NoYXJlOiJwaW50ZXJlc3QiLHBpbnRlcmVzdF9waW5pdDoicGludGVyZXN0 In0sYT1udWxsO3JldHVybiBuW3RdPygoZXx8e30pLnBhc3N0aHJvdWdofHx7fSlb dF0/YT1lLnBhc3N0aHJvdWdoW3RdOigoZXx8e30pLnBhc3N0aHJvdWdofHx7fSlb blt0XV0mJihhPWUucGFzc3Rocm91Z2hbblt0XV0pOmE9KChlfHx7fSkucGFzc3Ro cm91Z2h8fHt9KVt0XSxhPyImcGFzc3Rocm91Z2g9IitsKCJvYmplY3QiPT10eXBl b2YgYT9wKGEpOmEsMSk6IiJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5sZW5n dGg+MmUzP2Uuc3Vic3RyKDAsMTk5NykrIi4uLiI6ZX1mdW5jdGlvbiByKGUsdCxu LHIscCx2LGIsdyx4LHksayxDLE0pe3ZhciBBLE8sRSxTLEk7d2luZG93Ll9hdHc9 d2luZG93Ll9hdHd8fHt9O3ZhciBULE49biYmbi51cmw/bi51cmw6X2F0dy5zaGFy ZSYmX2F0dy5zaGFyZS51cmw/X2F0dy5zaGFyZS51cmw6d2luZG93LmFkZHRoaXNf dXJsfHx3aW5kb3cubG9jYXRpb24uaHJlZixqPWEoKTtyPXJ8fHt9LG49bnx8e307 dmFyIEQ9ZnVuY3Rpb24oZSl7TiYmKFM9Ti5pbmRleE9mKCIjYXQiK2UpLFM+LTEm JihOPU4uc3Vic3RyKDAsUykpKX07aWYoYygiY29uZmlnIixyKSxjKCJzaGFyZSIs bikscygpJiYobi5kYXRhVXJsfHwobi51cmw9d2luZG93LmFkZHRoaXNfdXJsKSxu LmRhdGFUaXRsZXx8KG4udGl0bGU9d2luZG93LmFkZHRoaXNfdGl0bGUpLE49bi51 cmwpLGouY2Fub25pY2FsJiYhbi50cmFja3VybCYmbi5pbXBfdXJsJiYobi50cmFj a3VybD1qLmNhbm9uaWNhbCkseCYmInVuZGVmaW5lZCIhPT14fHwoeD0idW5rbm93 biIpLFQ9ci5zZXJ2aWNlc19jdXN0b20sRCgicHJvIiksRCgib3BwIiksRCgiY2xl IiksRCgiY2xiIiksRCgiYWJjIiksRCgiX3BjbyIpLE4uaW5kZXhPZigiLy9zNy5h ZGR0aGlzLmNvbS9zdGF0aWMvcjA3L2FiIik+LTEpZm9yKE49Ti5zcGxpdCgiJiIp LFM9MDtTPE4ubGVuZ3RoO1MrKylpZihJPU5bU10uc3BsaXQoIj0iKSwyPT09SS5s ZW5ndGgmJiJ1cmwiPT09SVswXSl7Tj1JWzFdO2JyZWFrfWlmKFQgaW5zdGFuY2Vv ZiBPYmplY3QmJiIwImluIFQpZm9yKFMgaW4gVClpZihUW1NdLmNvZGU9PWUpe1Q9 VFtTXTticmVha312YXIgej1uLnRlbXBsYXRlcyYmbi50ZW1wbGF0ZXNbZV0/bi50 ZW1wbGF0ZXNbZV06IiIsTD1uLnNtZHx8TSxSPW4ubW9kdWxlcyYmbi5tb2R1bGVz W2VdP24ubW9kdWxlc1tlXToiIixQPW4uc2hhcmVfdXJsX3RyYW5zZm9ybXN8fG4u dXJsX3RyYW5zZm9ybXN8fHt9LEI9bi50cmFja191cmxfdHJhbnNmb3Jtc3x8bi51 cmxfdHJhbnNmb3JtcyxGPVAmJlAuc2hvcnRlbiYmZS5pbmRleE9mKCJwaW50ZXJl c3QiKT09PS0xPyJzdHJpbmciPT10eXBlb2YgUC5zaG9ydGVuP1Auc2hvcnRlbjpQ LnNob3J0ZW5bZV18fFAuc2hvcnRlbi5kZWZhdWx0fHwiIjoiIixVPSIiLFc9ci5w cm9kdWN0fHx3aW5kb3cuYWRkdGhpc19wcm9kdWN0fHwibWVuLTMwMCIsSD13aW5k b3cuY3JzLHE9bi5lbWFpbF92YXJzfHxyLmVtYWlsX3ZhcnMsVj0iIixHPWQoTiks Wj0yPT1HLmxlbmd0aD9HLnNoaWZ0KCkuc3BsaXQoIj0iKS5wb3AoKToiIixLPTI9 PUcubGVuZ3RoP0cucG9wKCk6IiIsSj1yLmRhdGFfdHJhY2tfY2xpY2tiYWNrfHxy LmRhdGFfdHJhY2tfbGlua2JhY2t8fCF4fHwiQWRkVGhpcyI9PXh8fHIuZGF0YV90 cmFja19jbGlja2JhY2shPT0hMSYmITA7aWYoci5kYXRhX3RyYWNrX2NsaWNrYmFj az09PSExJiYoSj0hMSkscSlmb3IoQSBpbiBxKVYrPSgiIj09Vj8iIjoiJiIpK18o QSkrIj0iK18ocVtBXSk7aWYodiYmVy5pbmRleE9mKHYpPT09LTEmJihXKz0iLCIr diksUCYmUC5zaG9ydGVuJiZuLnNob3J0ZW5lcnMmJmUuaW5kZXhPZigicGludGVy ZXN0Iik9PS0xKWZvcihBIGluIG4uc2hvcnRlbmVycylmb3IoTyBpbiBuLnNob3J0 ZW5lcnNbQV0pVSs9KFUubGVuZ3RoPyImIjoiIikrXyhBKyIuIitPKSsiPSIrXyhu LnNob3J0ZW5lcnNbQV1bT10pO3JldHVybiBOPXUoTiksTj1mKE4sUCxuLGUpLEIm JihuLnRyYWNrdXJsPWYobi50cmFja3VybHx8TixCLG4sZSkpLEU9InB1Yj0iK3gr IiZzb3VyY2U9IitXKyImbG5nPSIraCgpKyImcz0iK2UrKHIud2lkZ2V0SWQ/IiZ3 aWQ9IityLndpZGdldElkOiIiKSsoci51aV81MDhfY29tcGxpYW50PyImdTUwOD0x IjoiIikrKHQ/IiZoMT0iK2woKG4uZmVlZHx8bi51cmx8fCIiKS5yZXBsYWNlKCJm ZWVkOi8vIiwiIiksMSkrIiZ0MT0iOiImdXJsPSIrbChOLDEpKyImdGl0bGU9Iits KG4udGl0bGV8fCh3aW5kb3cuYWRkdGhpc190aXRsZXx8IiIpLnJlcGxhY2UoL0Fk ZFRoaXNcc1NvY2lhbFxzQm9va21hcmtpbmdcc1NoYXJpbmdcc0J1dHRvblxzV2lk Z2V0LywiIiksMSkpKyh0JiZuLnVzZXJpZD8iJmZpZD0iK2wobi51c2VyaWQpOiIi KSsiJmF0ZT0iK20oe3Nlc3Npb25JRDp3LHB1YklEOngsZmVlZHNBQkNlbGw6eX0p KygiZW1haWwiIT09ZT8iJmZyb21tZW51PTEiOiIiKSsobi5oaWRlRW1haWxTaGFy aW5nQ29uZmlybWF0aW9uPyImaGlkZUVtYWlsU2hhcmluZ0NvbmZpcm1hdGlvbj10 cnVlIjoiIikrKCF3aW5kb3cuYWRkdGhpc19zc2h8fEgmJmFkZHRoaXNfc3NoPT1I fHwhKGFkZHRoaXNfc3NoPT1lfHxhZGR0aGlzX3NzaC5zZWFyY2gobmV3IFJlZ0V4 cCgiKD86XnwsKSgiK2UrIikoPzokfCwpIikpPi0xKT8iIjoiJmlwcz0xIikrKEg/ IiZjcj0iKyhlPT09SD8xOjApOiIiKSsiJnVpZD0iK18oYiYmIngiIT09Yj9iOmco KSkrKG4uZW1haWxfdGVtcGxhdGU/IiZlbWFpbF90ZW1wbGF0ZT0iK18obi5lbWFp bF90ZW1wbGF0ZSk6IiIpKyhWPyImZW1haWxfdmFycz0iK18oVik6IiIpKyhGPyIm c2hvcnRlbmVyPSIrXygiYXJyYXkiPT10eXBlb2YgRj9GLmpvaW4oIiwiKTpGKToi IikrKEYmJlU/IiYiK1U6IiIpK2kobixlKSsobi5kZXNjcmlwdGlvbj8iJmRlc2Ny aXB0aW9uPSIrbyhsKG4uZGVzY3JpcHRpb24sMSkpOiIiKSsobi5odG1sPyImaHRt bD0iK2wobi5odG1sLDEpOm4uY29udGVudD8iJmh0bWw9IitsKG4uY29udGVudCwx KToiIikrKG4udHJhY2t1cmwmJm4udHJhY2t1cmwhPU4/IiZ0cmFja3VybD0iK2wo bi50cmFja3VybCwxKToiIikrKG4ubWVkaWE/IiZzY3JlZW5zaG90PSIrbChuLm1l ZGlhLDEpOiIiKSsobi5zY3JlZW5zaG90X3NlY3VyZT8iJnNjcmVlbnNob3Rfc2Vj dXJlPSIrbChuLnNjcmVlbnNob3Rfc2VjdXJlLDEpOiIiKSsobi5zd2Z1cmw/IiZz d2Z1cmw9IitsKG4uc3dmdXJsLDEpOiIiKSsobi5zd2Z1cmxfc2VjdXJlPyImc3dm dXJsX3NlY3VyZT0iK2wobi5zd2Z1cmxfc2VjdXJlLDEpOiIiKSsoci5oZGw/IiZo ZGw9MSI6IiIpKyhwPyImY2I9IitwOiIiKSsoaz8iJnVmYmw9MSI6IiIpKyhDPyIm dXVkPTEiOiIiKSsobi5pZnJhbWV1cmw/IiZpZnJhbWV1cmw9IitsKG4uaWZyYW1l dXJsLDEpOiIiKSsobi53aWR0aD8iJndpZHRoPSIrbi53aWR0aDoiIikrKG4uaGVp Z2h0PyImaGVpZ2h0PSIrbi5oZWlnaHQ6IiIpKyhyLmRhdGFfdHJhY2tfcDMyPyIm cDMyPSIrci5kYXRhX3RyYWNrX3AzMjoiIikrKEp8fF9hdGUudHJhY2suY3RwKHIu cHJvZHVjdCxyKT8iJmN0PTEiOiImY3Q9MCIpKygoSnx8X2F0ZS50cmFjay5jdHAo ci5wcm9kdWN0LHIpKSYmTi5pbmRleE9mKCIjIik+LTE/IiZ1Y3Q9MSI6IiIpKyhU JiZULnVybD8iJmFjbj0iK18oVC5uYW1lKSsiJmFjYz0iK18oVC5jb2RlKSsiJmFj dT0iK18oVC51cmwpOiIiKSsoTD8oTC5yeGk/IiZyeGk9IitMLnJ4aToiIikrKEwu cnNpPyImcnNpPSIrTC5yc2k6IiIpKyhMLmdlbj8iJmdlbj0iK0wuZ2VuOiIiKToo Wj8iJnJzaT0iK1o6IiIpKyhLPyImZ2VuPSIrSzoiIikpKyhuLnhpZD8iJnhpZD0i K2wobi54aWQsMSk6IiIpKyh6PyImdGVtcGxhdGU9IitsKHosMSk6IiIpKyhSPyIm bW9kdWxlPSIrbChSLDEpOiIiKSsoci51aV9jb2JyYW5kPyImdWlfY29icmFuZD0i K2woci51aV9jb2JyYW5kLDEpOiIiKSsoImVtYWlsIj09PWU/IiZ1aV9lbWFpbF90 bz0iK2woci51aV9lbWFpbF90bywxKSsiJnVpX2VtYWlsX2Zyb209IitsKHIudWlf ZW1haWxfZnJvbSwxKSsiJnVpX2VtYWlsX25vdGU9IitsKHIudWlfZW1haWxfbm90 ZSwxKToiIil9dmFyIHM9big1NzYpLGQ9big1NjUpLHU9big1NjYpLGM9big1Nzgp LGw9bigzNyksZj1uKDU2NykscD1uKDU3MCksaD1uKDE4KSxtPW4oNTc0KSxnPW4o NTkpLm1ha2VDVUlELF89d2luZG93LmVuY29kZVVSSUNvbXBvbmVudDtlLmV4cG9y dHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5zdmMsZS5mZWVkLGUuc2hhcmUsZS5j b25maWcsZS5jbGFzc2lmaWNhdGlvbkJpdG1hc2ssZS5zZWNvbmRhcnlQcm9kdWN0 Q29kZSxlLnVpZCxlLnNlc3Npb25JRCxlLnB1YklELGUuZmVlZHNBQkNlbGwsZS51 c2VzRmFjZWJvb2tMaWJyYXJ5LGUudXNlc1VzZXJBUEksZS5zaGFyZU1ldGFkYXRh KX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9big1NzcpLGk9 KGRvY3VtZW50LHdpbmRvdyksbz1uKDYzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtv LnJlc2NhbigpO3ZhciBlPW8uZHUsdD1vLmR1LnNwbGl0KCIjIik7dC5wb3AoKTty ZXR1cm4gYShvLmRoKSYmKGU9dC5qb2luKCIjIikpLGkuYWRkdGhpc19zaGFyZSYm aS5hZGR0aGlzX3NoYXJlLmltcF91cmwmJmUmJmUhPT1pLmFkZHRoaXNfc2hhcmUu dXJsPyhpLmFkZHRoaXNfc2hhcmUudXJsPWkuYWRkdGhpc191cmw9ZSxpLmFkZHRo aXNfc2hhcmUudGl0bGU9aS5hZGR0aGlzX3RpdGxlPW8udGl0bGUsMSk6MH19LGZ1 bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBl PygiIyI9PT1lLmNoYXJBdCgwKSYmKGU9ZS5zdWJzdHIoMSkpLHQ9ZS5zcGxpdCgi OyIpLnNoaWZ0KCksMz09PXQuc3BsaXQoIi4iKS5sZW5ndGgmJih0PXQuc3BsaXQo Ii4iKS5zbGljZSgwLC0xKS5qb2luKCIuIikpLDEyPT09dC5sZW5ndGgmJiIuIj09 PXQuc3Vic3RyKDAsMSkmJi9bYS16QS1aMC05XC1fXXsxMX0vLnRlc3QodC5zdWJz dHIoMSkpPzE6MCk6MH19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0 aW9uIG4oZSx0KXtmb3IodmFyIG49YVtlXXx8W10saT17fSxvPTA7bzxuLmxlbmd0 aDtvKyspe3ZhciByPW5bb107aWYod2luZG93W3JdJiYhKHdpbmRvd1tyXWluc3Rh bmNlb2YgRWxlbWVudCkpe2k9d2luZG93W3JdO2JyZWFrfX1PYmplY3Qua2V5cyhp KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV18fCh0W2VdPWlbZV0pfSl9dC5fX2Vz TW9kdWxlPSEwLHQuZGVmYXVsdD1uO3ZhciBhPXtzaGFyZTpbInNoYXJlIiwiYWRk dGhpc19zaGFyZSJdLGNvbmZpZzpbImNvbmYiLCJhZGR0aGlzX2NvbmZpZyJdfTtl LmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi O3ZhciBhPW4oNSksaT1uKDU4MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLG8s cil7dmFyIHM9dHx8NTUwLGQ9bnx8NDUwLHU9c2NyZWVuLndpZHRoLGM9c2NyZWVu LmhlaWdodCxsPU1hdGgucm91bmQodS8yLXMvMiksZj0wO2M+ZCYmKGY9TWF0aC5y b3VuZChjLzItZC8yKSk7dmFyIHA9d2luZG93Lm9wZW4oZSxhKCJtc2kiKT8iIjpv fHwiYWRkdGhpc19zaGFyZSIsImxlZnQ9IitsKyIsdG9wPSIrZisiLHdpZHRoPSIr cysiLGhlaWdodD0iK2QrIixwZXJzb25hbGJhcj1ubyx0b29sYmFyPW5vLHNjcm9s bGJhcnM9eWVzLGxvY2F0aW9uPXllcyxyZXNpemFibGU9eWVzIik7cmV0dXJuIGku cHVzaChwKSwhIXImJnB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1bXX0sZnVu Y3Rpb24oZSx0LG4pe3ZhciBhPW4oNTU3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0 LG4pe3ZhciBpPW5ldyBJbWFnZTtyZXR1cm4gaS5zcmM9YShlLDAsdCxuKSxpfX0s ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNTUwKSxpPW4oNTUzKS5GQU5DWTtlLmV4 cG9ydHM9ZnVuY3Rpb24oKXthKGkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry aWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm YXVsdDplfX1mdW5jdGlvbiBpKCl7ci5kZWZhdWx0KHMuSE9VWlopfXQuX19lc01v ZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIgbz1uKDU1MCkscj1hKG8pLHM9big1NTMp O2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj dCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1 bHQ6ZX19ZnVuY3Rpb24gaSgpe3IuZGVmYXVsdChzLldFSEVBUlRJVCl9dC5fX2Vz TW9kdWxlPSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oNTUwKSxyPWEobykscz1uKDU1 Myk7ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry aWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm YXVsdDplfX1mdW5jdGlvbiBpKGUsdCl7ci5kZWZhdWx0KCJiYWlkdSIsZSx0KSxk LmRlZmF1bHQobCsiP3M9Ym0mdD0iK25ldyBEYXRlKX10Ll9fZXNNb2R1bGU9ITAs dC5kZWZhdWx0PWk7dmFyIG89big1ODEpLHI9YShvKSxzPW4oNTUwKSxkPWEocyks dT1uKDU1MyksYz1hKHUpLGw9Yy5kZWZhdWx0LkJBSURVO2UuZXhwb3J0cz10LmRl ZmF1bHR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXth cmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJn dW1lbnRzWzBdO3JldHVybiExfWZ1bmN0aW9uIGEoZSl7cmV0dXJuITF9dC5fX2Vz TW9kdWxlPSEwLHQuY29uZlJlcXVpcmVzRmFjZWJvb2tTREs9bix0LmVsZW1lbnRS ZXF1aXJlc0ZhY2Vib29rU0RLPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj dCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1 bHQ6ZX19ZnVuY3Rpb24gaSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZv aWQgMD09PWFyZ3VtZW50c1swXT8iZW4iOmFyZ3VtZW50c1swXSx0PWFyZ3VtZW50 cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT9mLmRlZmF1bHQ6YXJn dW1lbnRzWzFdLG49IShhcmd1bWVudHMubGVuZ3RoPD0yfHx2b2lkIDA9PT1hcmd1 bWVudHNbMl0pJiZhcmd1bWVudHNbMl07aWYodygpKXJldHVybiB2b2lkKG4/dChu dWxsKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQobnVsbCl9LDApKTtp ZihuKXJldHVybiB2b2lkIHQobmV3IEVycm9yKCJDYW5ub3QgY2FsbCB0aGUgY2Fs bGJhY2sgc3luY2hyb25vdXNseSAod2l0aG91dCBlcnJvcikgd2hlbiB0aGUgU0RL IGlzIG5vdCBhbHJlYWR5IGluaXRpYWxpemVkISIpKTt2YXIgYT1kLmRlZmF1bHQo d2luZG93LG0pO2lmKCFhKXJldHVybiB2b2lkIHNldFRpbWVvdXQoZnVuY3Rpb24o KXtyZXR1cm4gdChuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIEZhY2Vib29rIFNESzog bWlzc2luZyBhcHBfaWQiKSl9LDApO3ZhciBpPWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKGgpLG89d2luZG93LmZiQXN5bmNJbml0O2lmKGkpIWZ1bmN0aW9uKCl7dmFy IGU9MTtiPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4geChlKX0sZSpfKX0o KTtlbHNle3ZhciBzPXAucmVwbGFjZSgie0ZBQ0VCT09LX0xBTkd9IixyLmRlZmF1 bHQoZSkpO2MuZGVmYXVsdChzLCEwLCExLGgpfXdpbmRvdy5mYkFzeW5jSW5pdD1m dW5jdGlvbigpe2lmKGImJihjbGVhclRpbWVvdXQoYiksYj1udWxsKSxvKXtpZihv KCksIXdpbmRvdy5GQi51aSl0cnl7d2luZG93LkZCLmluaXQoe2FwcElkOmEseGZi bWw6ITAsdmVyc2lvbjpnfSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgdChlKX19ZWxz ZSB0cnl7d2luZG93LkZCLmluaXQoe2FwcElkOmEseGZibWw6ITAsdmVyc2lvbjpn fSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgdChlKX10KG51bGwpfX10Ll9fZXNNb2R1 bGU9ITAsdC5kZWZhdWx0PWk7dmFyIG89big1ODgpLHI9YShvKSxzPW4oNTg5KSxk PWEocyksdT1uKDU1NCksYz1hKHUpLGw9bigyOSksZj1hKGwpLHA9Ii8vY29ubmVj dC5mYWNlYm9vay5uZXQve0ZBQ0VCT09LX0xBTkd9L3Nkay5qcyIsaD0iZmFjZWJv b2stanNzZGsiLG09ImFkZHRoaXNfc2hhcmUucGFzc3Rocm91Z2guZmFjZWJvb2su YXBwX2lkIixnPSJ2Mi4xMCIsXz0xZTMsdj00LGI9bnVsbCx3PWZ1bmN0aW9uKCl7 cmV0dXJuIEJvb2xlYW4od2luZG93LkZCJiZ3aW5kb3cuRkIudWkpfSx4PWZ1bmN0 aW9uIGUodCl7cmV0dXJuIHcoKT92b2lkKGI9bnVsbCk6KHQrKyx0PnY/KGI9bnVs bCx2b2lkIHdpbmRvdy5mYkFzeW5jSW5pdCgpKTp2b2lkKGI9c2V0VGltZW91dChm dW5jdGlvbigpe3JldHVybiBlKHQpfSx0Kl8pKSl9O2UuZXhwb3J0cz10LmRlZmF1 bHR9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXtj YToiZXMiLGNzOiJDWiIsY3k6IkdCIixkYToiREsiLGRlOiJERSIsZXU6IkVTIixj azoiVVMiLGVuOiJVUyIsZXM6IkxBIixnbDoiRVMiLGphOiJKUCIsa286IktSIixu YjoiTk8iLG5uOiJOTyIsc3Y6IlNFIixrdToiVFIiLHpoOiJDTiIsInpoLXRyIjoi Q04iLCJ6aC1oayI6IkhLIiwiemgtdHciOiJUVyIsZm86IkZPIixmYjoiTFQiLGFm OiJaQSIsc3E6IkFMIixoeToiQU0iLGJlOiJCWSIsYm46IklOIixiczoiQkEiLG5s OiJOTCIsZXQ6IkVFIixmcjoiRlIiLGthOiJHRSIsZWw6IkdSIixndToiSU4iLGhp OiJJTiIsZ2E6IklFIixqdjoiSUQiLGtuOiJJTiIsa2s6IktaIixsYToiVkEiLGxp OiJOTCIsbXM6Ik1ZIixtcjoiSU4iLG5lOiJOUCIscGE6IklOIixwdDoiUFQiLHJt OiJDSCIsc2E6IklOIixzcjoiUlMiLHN3OiJLRSIsdGE6IklOIixwbDoiUEwiLHR0 OiJSVSIsdGU6IklOIixtbDoiSU4iLHVrOiJVQSIsdmk6IlZOIix0cjoiVFIiLHho OiJaQSIsenU6IlpBIixrbToiS0giLHRnOiJUSiIsaGU6IklMIix1cjoiUEsiLGZh OiJJUiIseWk6IkRFIixnbjoiUFkiLHF1OiJQRSIsYXk6IkJPIixzZToiTk8iLHBz OiJBRiIsdGw6IlNUIn0sbj10W2VdfHx0W2Uuc3BsaXQoIi0iKS5zaGlmdCgpXTty ZXR1cm4gbj9lLnNwbGl0KCItIikuc2hpZnQoKSsiXyIrbjoiZW5fVVMifX0sZnVu Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe2lmKGUmJnQp e0FycmF5LmlzQXJyYXkodCl8fCh0PXQuc3BsaXQoIi4iKSk7Zm9yKHZhciBuPXQu bGVuZ3RoLGE9MDthPG4mJihlPWVbdFthXV0sInVuZGVmaW5lZCIhPXR5cGVvZiBl KTthKyspO3JldHVybiBlfX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW4sZS5l eHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm dW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDpl fX1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgYT14LmRlZmF1bHQoZSk7cmV0dXJuW2su ZGVmYXVsdCh0LGEpLGsuZGVmYXVsdChuLGEpXX1mdW5jdGlvbiBvKGUpe3JldHVy biBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4iZnVu Y3Rpb24iIT10eXBlb2YgZVtuXSYmKHRbbl09ZVtuXSksdH0se30pfXZhciByPW4o NTkxKSxzPWEociksZD1uKDU4MSksdT1hKGQpLGM9big2MzEpLGw9YShjKSxmPW4o NTU3KSxwPWEoZiksaD1uKDM5MCksbT1hKGgpLGc9big2MSksXz1hKGcpLHY9bigz MCksYj1hKHYpLHc9bigzNSkseD1hKHcpLHk9big2MzgpLGs9YSh5KSxDPWZ1bmN0 aW9uKGUsdCl7dmFyIG49cC5kZWZhdWx0KCJlbWFpbCIsMCxlLHQsITApLGE9aShu LGUsdCkscj1hWzBdLHM9YVsxXTtyZXR1cm4gbisiJmF0cz0iK2VuY29kZVVSSUNv bXBvbmVudChfLmRlZmF1bHQobyhyKSkpKyImYXRjPSIrZW5jb2RlVVJJQ29tcG9u ZW50KF8uZGVmYXVsdChvKHMpKSkrIiZyYj0iK2VuY29kZVVSSUNvbXBvbmVudChi LmRlZmF1bHQuaXNCcmFuZGluZ1JlZHVjZWQoKSl9O2UuZXhwb3J0cz1mdW5jdGlv bihlLHQpe2lmKHQudWlfcGFuZT0iZW1haWwiLGRvY3VtZW50LmxvY2F0aW9uLmhy ZWYuc2VhcmNoKC9ib29rbWFya1wucGhwLyk9PT0tMSl7dmFyIG49QyhlLHQpLGE9 bC5kZWZhdWx0KG4sIkVtYWlsQUZyaWVuZFdpbiIsIiIpO3JldHVybiBhfXUuZGVm YXVsdChlLnNlcnZpY2UsZSx0KSxtLmRlZmF1bHQoZSkscy5kZWZhdWx0KGRvY3Vt ZW50LmJvZHksIm1vcmUiLCIiLCIiLHQsZSl9LGUuZXhwb3J0cy5nZXRFbWFpbFVS TD1DfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPW4oMyksaT1u KDU5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uIGUodCxuLG8scixzLGQsdSl7X2F0ZS5h by50b1N0cmluZygpPT09ZS50b1N0cmluZygpPyhhKFsib3BlbiIsdCxuLG8scixz LGQsdV0pLGkoKSk6X2F0ZS5hby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxmdW5j dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPW4oNTkzKS53YXNSZXF1ZXN0 TWFkZSxpPW4oNTkzKS5nZXQsbz1uKDYwOSkscj13aW5kb3c7ZS5leHBvcnRzPWZ1 bmN0aW9uKCl7dHJ5e2koKSxvLmlzTW9kdWxlTG9hZGVkKCJtZW51Iil8fChhKCkm JiFyLmFkZHRoaXNfdHJhbnNsYXRpb25zP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtv LmxvYWRNZW51KCl9KTpvLmxvYWRNZW51KCkpfWNhdGNoKGUpe319fSxmdW5jdGlv bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7dmFyIHQ9cigoZXx8 bygpKS50b0xvd2VyQ2FzZSgpKTtpZihkLmluZGV4T2YoIiwiK3QrIiwiKT09PS0x JiYwIT09dC5pbmRleE9mKCJlbiIpKXtkKz10KyIsIjt2YXIgbj17bGFuZzp0fTt1 LmdvKG4pLHM9ITB9fWZ1bmN0aW9uIGkoKXtyZXR1cm4gc312YXIgbz1uKDE4KSxy PW4oNTk0KSxzPSExLGQ9IiwiLHU9big1OTUpO2UuZXhwb3J0cz17Z2V0OmEsd2Fz UmVxdWVzdE1hZGU6aX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDE5KTtlLmV4 cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKXx8ImVuIjtyZXR1cm4gMT09PXQm Jih0PWUpLHR9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u IGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuX19l c01vZHVsZT0hMDt2YXIgaT1uKDU5Niksbz1hKGkpLHI9ZnVuY3Rpb24oZSx0KXt2 YXIgbj12b2lkIDA7cmV0dXJuIG49dCYmInN0cmluZyI9PXR5cGVvZiB0Lmxhbmc/ dC5sYW5nOiJlbiIsIi8vczcuYWRkdGhpcy5jb20vbDEwbi9jbGllbnQuIituKyIu bWluLmpzb24ifSxzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dm9pZCAwO3RyeXtuPXdp bmRvdy5KU09OLnBhcnNlKGUpfWNhdGNoKGUpe310KG4pfSxkPWZ1bmN0aW9uKGUp e3N3aXRjaChlKXtjYXNlInJ0bCI6big2MDEpO2JyZWFrO2Nhc2UidHRiIjpuKDYw Myk7YnJlYWs7Y2FzZSJ0dGJydGwiOm4oNjA1KTticmVhaztkZWZhdWx0Om4oNjA3 KX19O3QuZGVmYXVsdD1uZXcgby5kZWZhdWx0KHIpLm9wdGlvbmFsKCJsYW5nIiku Y29ycygiR0VUIikub25Mb2FkKGZ1bmN0aW9uKGUpe3MoZS5yZXNwb25zZVRleHQs ZnVuY3Rpb24oZSl7Im9iamVjdCI9PXR5cGVvZiBlLnRvcF9zZXJ2aWNlcyYmKCJv YmplY3QiPT10eXBlb2YgZS50b3Bfc2VydmljZXMuZGVza3RvcCYmKHdpbmRvdy5h ZGR0aGlzX3NlcnZpY2VzX2xvYz1lLnRvcF9zZXJ2aWNlcy5kZXNrdG9wLmpvaW4o IiwiKSksIm9iamVjdCI9PXR5cGVvZiBlLnRvcF9zZXJ2aWNlcy5tb2JpbGUmJih3 aW5kb3cuYWRkdGhpc19zZXJ2aWNlc19sb2NfbW9iPWUudG9wX3NlcnZpY2VzLm1v YmlsZS5qb2luKCIsIikpKSxkKGUubGFuZ3VhZ2VfY29kZXMuZGlyZWN0aW9uKSx3 aW5kb3cuYWRkdGhpc190cmFuc2xhdGlvbnM9W1tlLmxhbmd1YWdlX2NvZGVzLmFs dGVybmF0ZV0uY29uY2F0KGUuc3RyaW5ncyldO3ZhciB0PXtsbmc6ZS5sYW5ndWFn ZV9jb2Rlcy5jbGllbnR9O3dpbmRvdy5fYXRlJiZ3aW5kb3cuX2F0ZS5lZC5maXJl KCJhZGR0aGlzLmkxOG4ucmVhZHkiLHdpbmRvdy5hZGR0aGlzLHQpfSl9KSxlLmV4 cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1 bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9 fWZ1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcg VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1m dW5jdGlvbiBvKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lk IDA9PT1hcmd1bWVudHNbMV0/W106YXJndW1lbnRzWzFdO2UubGVuZ3RoOyllLnBv cCgpLmFwcGx5KG51bGwsdCl9ZnVuY3Rpb24gcigpe3ZhciBlPWFyZ3VtZW50cy5s ZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT8iIjphcmd1bWVudHNbMF0s dD0iL2xpdmUvcmVkX2xvanNvbi8zMDBsby5qc29uPyI7cmV0dXJuIGUuaW5kZXhP Zih0KT4tMX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9big1OTcpLGQ9YShzKSx1PW4o NTU0KSxjPWEodSksbD1uKDM3NyksZj1hKGwpLHA9bigyMSksaD1hKHApLG09big1 OTkpLGc9YShtKSxfPW4oNjAwKSx2PWEoXyksYj0wLHc9MSx4PTIseT0zLGs9MCxD PTEsTT0yLEE9MyxPPSExLEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2kodGhp cyxlKSwiZnVuY3Rpb24iPT10eXBlb2YgdD90aGlzLl91cmxDYWxsYmFjaz10OnRo aXMuX3VybD10LHRoaXMuX2ZvcmNlPSExLHRoaXMuX211bHRpPXt9LHRoaXMuX2xh c3RLZXk9bnVsbCx0aGlzLl90eXBlPUMsdGhpcy5fcGFyYW1zPVtdLHRoaXMuX3Bh cmFtTmFtZXM9e30sdGhpcy5fcGFyYW1WYWx1ZXM9e30sdGhpcy5fcmVxdWVzdENv dW50PTAsdGhpcy5fcmVzcG9uc2VDb3VudD0wLHRoaXMuX2xvYWRDYWxsYmFja3M9 W10sdGhpcy5fZXJyb3JDYWxsYmFja3M9W10sdGhpcy5fZGF0YUVycm9yQ2FsbGJh Y2tzPVtdfXJldHVybiBlLnByb3RvdHlwZS5qc29ucD1mdW5jdGlvbigpe3ZhciBl PWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT8iY2Fs bGJhY2siOmFyZ3VtZW50c1swXSx0PWQuZGVmYXVsdCh3aW5kb3cuX2F0ZSksbj10 LnN0b3JlQ2FsbGJhY2ssYT1uKGYuZGVmYXVsdCh0aGlzLl91cmwpLE1hdGgucmFu ZG9tKCkudG9TdHJpbmcoKS5zbGljZSgyKSxmdW5jdGlvbigpe3RoaXMuX3Jlc3Bv bnNlQ291bnQrKyxvKHRoaXMuX2xvYWRDYWxsYmFja3MsYXJndW1lbnRzKX0uYmlu ZCh0aGlzKSk7cmV0dXJuIHRoaXMuX2FkZFBhcmFtKHt0eXBlOnksa2V5OmUsdmFs dWU6YX0pLHRoaXMuX3R5cGU9ayx0aGlzfSxlLnByb3RvdHlwZS5waXhlbD1mdW5j dGlvbigpe3JldHVybiB0aGlzLl90eXBlPUMsdGhpc30sZS5wcm90b3R5cGUuYmVh Y29uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R5cGU9TSx0aGlzfSxlLnByb3Rv dHlwZS5jb3JzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl90eXBlPUEsIlBPU1Qi PT09ZS50b1VwcGVyQ2FzZSgpP3RoaXMuX21ldGhvZD0iUE9TVCI6dGhpcy5fbWV0 aG9kPSJHRVQiLHRoaXN9LGUucHJvdG90eXBlLmdvPWZ1bmN0aW9uKGUpe3RoaXMu X3BhcmFtVmFsdWVzPWU7dmFyIHQ9dGhpcy5fcHJvY2Vzc1ZhbHVlcyhlKSxuPXQu ZXJyb3JzLGE9dC5xdWVyeTtuLmxlbmd0aD8odGhpcy5fZGF0YUVycm9yQ2FsbGJh Y2tzLmxlbmd0aD9vKHRoaXMuX2RhdGFFcnJvckNhbGxiYWNrcyxuKTpuLmZvckVh Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoZSl9KSx0aGlzLl9m b3JjZSYmdGhpcy5fcmVxdWVzdChhKSk6dGhpcy5fcmVxdWVzdChhKX0sZS5wcm90 b3R5cGUuZ2V0UmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jl cXVlc3RDb3VudH0sZS5wcm90b3R5cGUuZ2V0UmVzcG9uc2VDb3VudD1mdW5jdGlv bigpe3JldHVybiB0aGlzLl9yZXNwb25zZUNvdW50fSxlLnByb3RvdHlwZS5yZXF1 aXJlZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0xfHx2b2lk IDA9PT1hcmd1bWVudHNbMV0/bnVsbDphcmd1bWVudHNbMV07cmV0dXJuIHRoaXMu X2FkZFBhcmFtKHt0eXBlOmIsa2V5OmUsdGVzdDp0fSksdGhpc30sZS5wcm90b3R5 cGUub3B0aW9uYWw9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9 MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP251bGw6YXJndW1lbnRzWzFdO3JldHVy biB0aGlzLl9hZGRQYXJhbSh7dHlwZTp3LGtleTplLHRlc3Q6dH0pLHRoaXN9LGUu cHJvdG90eXBlLmFsd2F5cz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVu Z3RoPD0xfHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/bnVsbDphcmd1bWVudHNbMV07 cmV0dXJuIHRoaXMuX2FkZFBhcmFtKHt0eXBlOngsa2V5OmUsdGVzdDp0fSksdGhp c30sZS5wcm90b3R5cGUuY29uc3RhbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaC5k ZWZhdWx0KHZvaWQgMCE9PXQsIiVzOiB0aGUgY29uc3RhbnQgcXVlcnkgcGFyYW0g JXMgbWlzc2luZyB2YWx1ZSIsdGhpcy5fdXJsLGUpLHRoaXMuX2FkZFBhcmFtKHt0 eXBlOnksa2V5OmUsdmFsdWU6dH0pLHRoaXN9LGUucHJvdG90eXBlLm11bHRpcGxl PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhc3RLZXkmJih0aGlzLl9tdWx0aVt0 aGlzLl9sYXN0S2V5XT0hMCksdGhpc30sZS5wcm90b3R5cGUub25EYXRhRXJyb3I9 ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RhdGFFcnJvckNhbGxiYWNrcy5wdXNo KGUpLHRoaXN9LGUucHJvdG90eXBlLm9uRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJu IHRoaXMuX2Vycm9yQ2FsbGJhY2tzLnB1c2goZSksdGhpc30sZS5wcm90b3R5cGUu b25Mb2FkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9sb2FkQ2FsbGJhY2tzLnB1 c2goZSksdGhpc30sZS5wcm90b3R5cGUuZm9yY2U9ZnVuY3Rpb24oZSl7cmV0dXJu IHRoaXMuX2ZvcmNlPUJvb2xlYW4oZSksdGhpc30sZS5wcm90b3R5cGUuX2FkZFBh cmFtPWZ1bmN0aW9uKGUpe3ZhciB0PWUudHlwZSxuPWUua2V5LGE9ZS50ZXN0LGk9 ZS52YWx1ZTtoLmRlZmF1bHQoIXRoaXMuX3BhcmFtTmFtZXNbbl0sIiVzOiB0aGUg cGFyYW0gJXMgd2FzIGFscmVhZHkgYWRkZWQgdG8gdGhlIHJlcXVlc3QgYW5kIGNh bm5vdCBiZSBvdmVycmlkZGVuISIsdGhpcy5fdXJsLG4pLHRoaXMuX3BhcmFtTmFt ZXNbbl09ITAsdGhpcy5fbGFzdEtleT1uLHRoaXMuX3BhcmFtcy5wdXNoKHt0eXBl OnQsa2V5Om4sdGVzdDphLHZhbHVlOml9KX0sZS5wcm90b3R5cGUuX3Rlc3RQYXNz ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rZXksbj1lLnZhbHVlLGE9ZS50ZXN0LGk9 ZS5tdWx0aTtpZihpKXtoLmRlZmF1bHQobiBpbnN0YW5jZW9mIEFycmF5LCIlczog dGhlIG11bHRpIHBhcmFtICVzIG5lZWRzIHRvIGJlIGFuIGFycmF5LCBnb3QgJXMi LHRoaXMuX3VybCx0LG4pO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKWlmKHRo aXMuX3Rlc3RQYXNzZXMoe2tleTp0LHZhbHVlOm5bb10sdGVzdDphLG11bHRpOiEx fSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWdFeHA/ YS50ZXN0KG4pOiEoYSBpbnN0YW5jZW9mIEZ1bmN0aW9uKXx8YShuKX0sZS5wcm90 b3R5cGUuX2VuY29kZVBhaXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCBpbnN0YW5j ZW9mIE9iamVjdCYmbnVsbCE9PXQmJih0PUpTT04uc3RyaW5naWZ5KHQpKSxlbmNv ZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KX0sZS5w cm90b3R5cGUuX3Byb2Nlc3NWYWx1ZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtd LG49W10sYT0wO2E8dGhpcy5fcGFyYW1zLmxlbmd0aDthKyspe3ZhciBpPXRoaXMu X3BhcmFtc1thXSxvPWkudHlwZSxyPWkua2V5LHM9aS50ZXN0LGQ9Qm9vbGVhbih0 aGlzLl9tdWx0aVtyXSksdT12b2lkIDAhPT10aGlzLl9wYXJhbXNbYV0udmFsdWU/ dGhpcy5fcGFyYW1zW2FdLnZhbHVlOmVbcl07dHJ5e3N3aXRjaChvKXtjYXNlIHk6 aC5kZWZhdWx0KGR8fHZvaWQgMD09PWVbcl0sIiVzOiB0aGUgY29uc3RhbnQgcGFy YW0gJXMgY2Fubm90IGJlIG92ZXJyaWRkZW4gYW5kIG11bHRpcGxlIHZhbHVlcyBh cmUgbm90IGFsbG93ZWQiLHRoaXMuX3VybCxyKSxuLnB1c2godGhpcy5fZW5jb2Rl UGFpcihyLHUpKTticmVhaztjYXNlIGI6aC5kZWZhdWx0KHRoaXMuX3Rlc3RQYXNz ZXMoe3Rlc3Q6cyx2YWx1ZTp1LGtleTpyLG11bHRpOmR9KSwiJXM6IHRoZSByZXF1 aXJlZCBwYXJhbSAlcyB3YXMgcHJvdmlkZWQgYW4gaW52YWxpZCB2YWx1ZSBvZiAl cyIsdGhpcy5fdXJsLHIsdSksbi5wdXNoKHRoaXMuX2VuY29kZVBhaXIocix1KSk7 YnJlYWs7Y2FzZSB3OmguZGVmYXVsdCh2b2lkIDA9PT11fHx0aGlzLl90ZXN0UGFz c2VzKHt0ZXN0OnMsdmFsdWU6dSxrZXk6cixtdWx0aTpkfSksIiVzOiB0aGUgb3B0 aW9uYWwgcGFyYW0gJXMgd2FzIHByb3ZpZGVkIGFuIGludmFsaWQgdmFsdWUgb2Yg JXMiLHRoaXMuX3VybCxyLHUpLHZvaWQgMCE9PXUmJm4ucHVzaCh0aGlzLl9lbmNv ZGVQYWlyKHIsdSkpO2JyZWFrO2Nhc2UgeDpoLmRlZmF1bHQodm9pZCAwPT09dXx8 dGhpcy5fdGVzdFBhc3Nlcyh7dGVzdDpzLHZhbHVlOnUsa2V5OnIsbXVsdGk6ZH0p LCIlczogdGhlIGFsd2F5cyBpbmNsdWRlZCBwYXJhbSAlcyB3YXMgcHJvdmlkZWQg YW4gaW52YWxpZCB2YWx1ZSBvZiAlcyIsdGhpcy5fdXJsLHIsdSksbi5wdXNoKHRo aXMuX2VuY29kZVBhaXIocix2b2lkIDAhPT11P3U6IiIpKX19Y2F0Y2goZSl7dC5w dXNoKGUpfX1yZXR1cm57cXVlcnk6bi5qb2luKCImIiksZXJyb3JzOnR9fSxlLnBy b3RvdHlwZS5nZXRVcmw9ZnVuY3Rpb24oZSl7dmFyIHQ9dm9pZCAwO3JldHVybiJm dW5jdGlvbiI9PXR5cGVvZiB0aGlzLl91cmxDYWxsYmFjaz8odD10aGlzLl91cmxD YWxsYmFjayhlLHRoaXMuX3BhcmFtVmFsdWVzKSx0aGlzLl91cmw9dCk6dD10aGlz Ll91cmwrIj8iK2UsdH0sZS5wcm90b3R5cGUuX3JlcXVlc3Q9ZnVuY3Rpb24oZSl7 dmFyIHQ9dGhpcyxuPXRoaXMuZ2V0VXJsKGUpLGE9dm9pZCAwO2lmKGguZGVmYXVs dCh0aGlzLl90eXBlPT09Q3x8dGhpcy5fdHlwZT09PWt8fHRoaXMuX3R5cGU9PT1N fHx0aGlzLl90eXBlPT09QSwiJXM6IHVucmVjb2duaXplZCB0eXBlICVzLCBhYm9y dGluZyIsdGhpcy5fdXJsLHRoaXMuX3R5cGUpLHRoaXMuX3R5cGU9PT1DKWE9bmV3 IEltYWdlLGEuc3JjPW4sYS5vbmxvYWQ9ZnVuY3Rpb24oKXt0Ll9yZXNwb25zZUNv dW50Kyssbyh0Ll9sb2FkQ2FsbGJhY2tzKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7 byh0Ll9lcnJvckNhbGxiYWNrcyl9O2Vsc2UgaWYodGhpcy5fdHlwZT09PWspe3Zh ciBpPXIobik7TyYmaT9hPWMuZGVmYXVsdChuLDEsdm9pZCAwLHZvaWQgMCx2b2lk IDAsITApOihhPWMuZGVmYXVsdChuLDEpLGkmJihPPSEwKSksIm51bWJlciIhPXR5 cGVvZiBhJiYoYS5vbmVycm9yPWZ1bmN0aW9uKCl7byh0Ll9lcnJvckNhbGxiYWNr cyl9KX1lbHNlIGlmKHRoaXMuX3R5cGU9PT1NKWcuZGVmYXVsdChuLCJ7fSIpO2Vs c2UgaWYodGhpcy5fdHlwZT09PUEpe3ZhciBzPXt1cmw6bixtZXRob2Q6dGhpcy5f bWV0aG9kLG9uU3VjY2VzczpmdW5jdGlvbihlKXtvKHQuX2xvYWRDYWxsYmFja3Ms W2VdKX0sb25GYWlsdXJlOmZ1bmN0aW9uKCl7byh0Ll9lcnJvckNhbGxiYWNrcyl9 fTt2LmRlZmF1bHQocyl9dGhpcy5fcmVxdWVzdENvdW50Kyt9LGV9KCk7dC5kZWZh dWx0PUUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug c3RyaWN0Ijt2YXIgYT1uKDU5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVy biBlPyhlLmNicz1lLmNic3x8e30sYSgiX2F0ZS5jYnMiKSk6d2luZG93LmFkZHRo aXM/KGFkZHRoaXMuY2JzPWFkZHRoaXMuY2JzfHx7fSxhKCJhZGR0aGlzLmNicyIp KTp2b2lkIDB9fSxmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7dmFyIHc9d2luZG93 LGV1Yz13LmVuY29kZVVSSUNvbXBvbmVudCx0aW1lcz17fSx0aW1lb3V0cz17fSxj YWxsYmFja3MscGFnZUNhbGxiYWNrcz17fTttb2R1bGUuZXhwb3J0cz1mdW5jdGlv bihnbG9iYWxPYmplY3RTdHJpbmcpe2Z1bmN0aW9uIHN0b3JlQ2FsbGJhY2soZSx0 LG4sYSxpKXt0PWV1Yyh0KS5yZXBsYWNlKC9bMC0zXVtBLVpdfFteYS16QS1aMC05 XS9nLCIiKS50b0xvd2VyQ2FzZSgpLHBhZ2VDYWxsYmFja3NbdF09cGFnZUNhbGxi YWNrc1t0XXx8MDt2YXIgbz1wYWdlQ2FsbGJhY2tzW3RdKysscj1lKyJfIit0Kyhp PyIiOm8pO3JldHVybiBjYWxsYmFja3Nbcl18fChjYWxsYmFja3Nbcl09ZnVuY3Rp b24oKXt0aW1lb3V0c1tyXSYmY2xlYXJUaW1lb3V0KHRpbWVvdXRzW3JdKSxuLmFw cGx5KHRoaXMsYXJndW1lbnRzKX0pLHRpbWVzW3JdPShuZXcgRGF0ZSkuZ2V0VGlt ZSgpLGEmJihjbGVhclRpbWVvdXQodGltZW91dHNbcl0pLHRpbWVvdXRzW3JdPXNl dFRpbWVvdXQoYSwxZTQpKSxnbG9iYWxPYmplY3RTdHJpbmcrIi4iK2V1YyhyKX1m dW5jdGlvbiBnZXRDYWxsYmFja0NhbGxUaW1lKGUpe3JldHVybiB0aW1lc1tlXX10 cnl7Y2FsbGJhY2tzPWV2YWwoZ2xvYmFsT2JqZWN0U3RyaW5nKX1jYXRjaChlKXt0 aHJvdyBuZXcgRXJyb3IoIk11c3QgcGFzcyBhIHN0cmluZyB3aGljaCB3aWxsIGV2 YWwgdG8gYSBnbG9iYWxseSBhY2Nlc3NpYmxlIG9iamVjdCB3aGVyZSBjYWxsYmFj a3Mgd2lsbCBiZSBzdG9yZWQiKX1yZXR1cm57c3RvcmVDYWxsYmFjazpzdG9yZUNh bGxiYWNrLGdldENhbGxiYWNrQ2FsbFRpbWU6Z2V0Q2FsbGJhY2tDYWxsVGltZX19 fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1bZnVuY3Rpb24oZSx0 KXtyZXR1cm4gbmF2aWdhdG9yLnNlbmRCZWFjb24oZSx0KX0sZnVuY3Rpb24oZSl7 dmFyIHQ9bmV3IEltYWdlO3JldHVybiB0LnNyYz1lLCEwfV0sYT1uYXZpZ2F0b3Iu c2VuZEJlYWNvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uPzA6TWF0aC5mbG9vcihNYXRo LnJhbmRvbSgpKihuLmxlbmd0aC0xKSsxKTtlLmV4cG9ydHM9blthXSxlLmV4cG9y dHMucG9seWZpbGxNZXRob2RJRD1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp Y3QiO2Z1bmN0aW9uIGEoKXt9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBzZXRUaW1l b3V0KGZ1bmN0aW9uKCl7dCh7c3RhdHVzVGV4dDplfHwiU29tZXRoaW5nIHdlbnQg d3JvbmcuIn0pfSwwKSxudWxsfWZ1bmN0aW9uIG8oZSl7ZT1lfHx7fTt2YXIgdCxv LHI9ZS5vbkZhaWx1cmV8fGEscz1lLm9uU3VjY2Vzc3x8YSxkPSJQT1NUIj09PShl Lm1ldGhvZHx8IiIpLnRvVXBwZXJDYXNlKCk/IlBPU1QiOiJHRVQiLHU9ZS53aXRo Q3JlZGVudGlhbHM9PT0hMCxjPWUudGltZW91dE1zfHwxZTQ7aWYoInVuZGVmaW5l ZCI9PXR5cGVvZiBYTUxIdHRwUmVxdWVzdClyZXR1cm4gaSgiWW91ciBicm93c2Vy IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtZXRob2QuIixyKTtpZigiR0VUIiE9PWQm JiJQT1NUIiE9PWQpcmV0dXJuIGkoIlRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0 ZWQuIixyKTtpZih0PW5ldyBYTUxIdHRwUmVxdWVzdCxvPSJ3aXRoQ3JlZGVudGlh bHMiaW4gdClyZXR1cm4gdC5vcGVuKGQsZS51cmx8fCIiLCEwKSwiUE9TVCI9PT1k JiZ0LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtdHlwZSIsZS5jb250ZW50VHlw ZXx8ImFwcGxpY2F0aW9uL2pzb24iKSx0LnRpbWVvdXQ9Yyx0LndpdGhDcmVkZW50 aWFscz11LHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXQucmVh ZHlTdGF0ZSYmKHQuc3RhdHVzPj00MDB8fDA9PT10LnN0YXR1cz9yKHQpOnModCkp fSx0LnNlbmQoZS5kYXRhfHxudWxsKTtpZighdSYmd2luZG93LlhEb21haW5SZXF1 ZXN0KXt0PW5ldyBYRG9tYWluUmVxdWVzdDt2YXIgbDtpZihlLnVybCl7dmFyIGY9 big2MykscD1mLmR1LnNwbGl0KCIvLyIpWzBdO2w9cCsiLy8iK2UudXJsLnNwbGl0 KCIvLyIpWzFdfXJldHVybiB0Lm9wZW4oZCxsfHwiIiksdC5vbmxvYWQ9ZnVuY3Rp b24oKXtzKHQpfSx0Lm9uZXJyb3I9ZnVuY3Rpb24oKXtyKHQpfSx0Lm9ucHJvZ3Jl c3M9YSx0Lm9udGltZW91dD1hLHQudGltZW91dD1jLHQuc2VuZChlLmRhdGF8fG51 bGwpfXJldHVybiBpKCJZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcm9z cy1vcmlnaW4gcmVxdWVzdHMuIixyKX1lLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0 LG4pe3ZhciBhPW4oNjAyKTsic3RyaW5nIj09dHlwZW9mIGEmJihhPVtbZS5pZCxh LCIiXV0pO24oMzQxKShhLHt9KTthLmxvY2FscyYmKGUuZXhwb3J0cz1hLmxvY2Fs cyl9LGZ1bmN0aW9uKGUsdCxuKXt0PWUuZXhwb3J0cz1uKDM0MCkoKSx0LnB1c2go W2UuaWQsIiNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFuZGVkLW1lbnUt Y29udGFpbmVyIC5hdC1leHBhbmRlZC1tZW51e2xlZnQ6MDtwYWRkaW5nLWxlZnQ6 NTAlfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFuZGVkLW1lbnUtY29u dGFpbmVyIC5hdC1icmFuZGluZy1pbmZvLmF0LWV4cGFuZGVkLW1lbnUtYnJhbmRp bmcsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5kZWQtbWVudS1jb250 YWluZXIgLmF0LWJyYW5kaW5nLWxvZ28uYXQtZXhwYW5kZWQtbWVudS1icmFuZGlu Z3tsZWZ0OjIwcHg7cmlnaHQ6YXV0b30jYXQtZXhwYW5kZWQtbWVudS1ob3N0ICNh dC1leHBhbmRlZC1tZW51LWNvbnRhaW5lciAuYXQtZXhwYW5kZWQtbWVudS1zZWFy Y2gtbGFiZWx7dGV4dC1hbGlnbjpyaWdodH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0 ICNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lciAuYXQtZXhwYW5kZWQtbWVudS1z ZWFyY2gtaWNvbntsZWZ0OjMwcHg7cmlnaHQ6YXV0b30jYXQtZXhwYW5kZWQtbWVu dS1ob3N0ICNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lciAuYXQtZXhwYW5kZWQt bWVudS1jbG9zZXtsZWZ0OjIwcHg7cmlnaHQ6YXV0b30jYXQtZXhwYW5kZWQtbWVu dS1ob3N0ICNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lciAjYXQtZXhwYW5kZWQt bWVudS1lbWFpbC1mb3JtIC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLWZpZWxkIGxh YmVse3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyOjIwcHggc29saWQgcmVkfSIsIiJd KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNjA0KTsic3RyaW5nIj09dHlwZW9m IGEmJihhPVtbZS5pZCxhLCIiXV0pO24oMzQxKShhLHt9KTthLmxvY2FscyYmKGUu ZXhwb3J0cz1hLmxvY2Fscyl9LGZ1bmN0aW9uKGUsdCxuKXt0PWUuZXhwb3J0cz1u KDM0MCkoKSx0LnB1c2goW2UuaWQsIiIsIiJdKX0sZnVuY3Rpb24oZSx0LG4pe3Zh ciBhPW4oNjA2KTsic3RyaW5nIj09dHlwZW9mIGEmJihhPVtbZS5pZCxhLCIiXV0p O24oMzQxKShhLHt9KTthLmxvY2FscyYmKGUuZXhwb3J0cz1hLmxvY2Fscyl9LDYw NCxmdW5jdGlvbihlLHQsbil7dmFyIGE9big2MDgpOyJzdHJpbmciPT10eXBlb2Yg YSYmKGE9W1tlLmlkLGEsIiJdXSk7bigzNDEpKGEse30pO2EubG9jYWxzJiYoZS5l eHBvcnRzPWEubG9jYWxzKX0sNjA0LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj dCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBhPXt9LGk9ZnVuY3Rpb24oZSl7cmV0dXJu ISFhW2VdfTt0LmlzTW9kdWxlTG9hZGVkPWk7dmFyIG89ZnVuY3Rpb24oZSl7YVtl XT0hMH07dC5zZXRNb2R1bGVMb2FkZWQ9bzt2YXIgcj1mdW5jdGlvbihlKXthLm1l bnV8fChvKCJtZW51Iiksbi5lKDIyMixmdW5jdGlvbigpe24oNjEwKSxlJiZlKCl9 KSl9O3QubG9hZE1lbnU9cn0sLGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0 aW9uKGUpe2UucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0 dXJuVmFsdWU9ITF9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBh PW4oMzMwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIG4uY2xhc3NOYW1lPSJhdC1pY29u LXdyYXBwZXIgYXQzMDBicyIsbj1hKG4sdCl9LGUuZXhwb3J0cy5jcmVhdGVDc3NT ZXJ2aWNlSWNvbj1mdW5jdGlvbihlLHQsbil7cmV0dXJueyJiYWNrZ3JvdW5kLWlt YWdlIjoidXJsKCIrdCsiKSIsImJhY2tncm91bmQtcmVwZWF0Ijoibm8tcmVwZWF0 IiwiYmFja2dyb3VuZC1wb3NpdGlvbiI6InRvcCBsZWZ0IiwiYmFja2dyb3VuZC1j b2xvciI6InRyYW5zcGFyZW50ICFpbXBvcnRhbnQiLCJsaW5lLWhlaWdodCI6biwi YmFja2dyb3VuZC1zaXplIjpuLHdpZHRoOm4saGVpZ2h0Om59fX0sLGZ1bmN0aW9u KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZS5yZWR1 Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj0odHx8e30pLnNlcnZpY2U7cmV0dXJuIG4m JihlW25dPXYobikpLGV9LHt9KX1mdW5jdGlvbiBpKGUsdCxuLGkpe3ZhciBvPXtj dXN0b21TZXJ2aWNlc0NzczpfYXR3LmNzcyxkb2N1bWVudEJvZHlDbGFzc05hbWU6 ZG9jdW1lbnQuYm9keS5jbGFzc05hbWUsZG9jdW1lbnRFbGVtZW50Q2xhc3NOYW1l OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUsaXNCcmFuZGluZ1Jl ZHVjZWQ6Xy5pc0JyYW5kaW5nUmVkdWNlZCgpLGluaXRpYWxJbm5lclBhbmU6ZSxp bml0aWFsTWVudVNoYXJlOnQsaW5pdGlhbE1lbnVDb25maWc6bix0b3BTZXJ2aWNl czpsKCl9O3JldHVybiBpPyhvLmluaXRpYWxNZW51VHlwZT0iZm9sbG93IixvLmlu aXRpYWxUb3RhbFNlcnZpY2VzPWEodC5fZXhwYW5kZWRNZW51Rm9sbG93U2Vydmlj ZXN8fFtdKSk6KG8uaW5pdGlhbE1lbnVUeXBlPSJzaGFyZSIsby5pbml0aWFsVG90 YWxTZXJ2aWNlcz1fYXR3Lmxpc3QpLG99ZnVuY3Rpb24gbygpe3RoaXMuX2hhc01v dW50ZWRFeHBhbmRlZE1lbnU9ITEsdGhpcy5fbWVudUNvbmZpZz17fSx0aGlzLl9t ZW51U2hhcmU9e30sdGhpcy5fY3Jvc3NXaW5kb3dDb21tdW5pY2F0b3I9bnVsbCx0 aGlzLl9vbldpbmRvd0Nsb3NlPW51bGwsdGhpcy5sYXN0T3BlbmVkPW51bGx9dmFy IHI9big1KSxzPW4oOCksZD1uKDEzKSx1PW4oMjMpLGM9bigzOTIpLGw9bigzMzMp LGY9big2MTcpLHA9big2MjEpLGg9big2MjMpLG09big2MzIpLGc9big2NDUpLF89 KG4oMzM3KSxuKDMwKSksdj1uKDcxKSxiPW51bGwsdz1yKCJtb2IiKTtvLnByb3Rv dHlwZT17cmVuZGVyRGVza3RvcEV4cGFuZGVkTWVudTpmdW5jdGlvbihlLHQsbixh LG8pe2MoZnVuY3Rpb24ocil7dmFyIHM9ci5jcmVhdGVFeHBhbmRlZE1lbnUsZD1y LkV4cGFuZGVkTWVudUNvbnRyb2xsZXJWaWV3LHU9aSh0LG4sYSxvKTt1Lmhvc3RO b2RlSWQ9ZSx1LmV2ZW50RGlzcGF0Y2hlcj1hZGR0aGlzLmVkLHMoZCx1KX0pfSxv cGVuOmZ1bmN0aW9uKGUsdCxuLGEsaSxvKXt2YXIgcixkO3AodCxuKSxyPXMoITAs e30sX2F0ZS5tZW51Ll9tZW51Q29uZmlnKSxkPXMoITAse30sX2F0ZS5tZW51Ll9t ZW51U2hhcmUpLHd8fHIudWlfNTA4X2NvbXBsaWFudD9fYXRlLm1lbnUub3Blbk1v YmlsZVZlcnNpb24oZCxyLGEsaSxvKTpfYXRlLm1lbnUub3BlbkRlc2t0b3BWZXJz aW9uKGQscixhKSxfYXRlLm1lbnUudHJhY2tNZW51T3BlbmVkKG4sdCxkLHIpfSxv cGVuTW9iaWxlVmVyc2lvbjpmdW5jdGlvbihlLHQsbixhLG8pe3ZhciByPWkodC51 aV9wYW5lfHwiZXhwYW5kZWQiLGUsdCxuKTtpZihyLmlzTW9iaWxlPSEwLHIubWFp bHRvVXJsPWcoZSx0LCExKSxyLnRyYWNrVXJsRm9yQ29weUxpbms9ZigibGluayIs ZSx0KSx0aGlzLl9jcm9zc1dpbmRvd0NvbW11bmljYXRvcil7aWYoIWF8fCFvKXRy eXt0aGlzLl9jcm9zc1dpbmRvd0NvbW11bmljYXRvci50ZWxsVGFyZ2V0Q2xvc2VX aW5kb3coKX1jYXRjaChlKXtkLndhcm4oZSl9dGhpcy5fY3Jvc3NXaW5kb3dDb21t dW5pY2F0b3IuZGlzY29ubmVjdCgpfXRoaXMuX2Nyb3NzV2luZG93Q29tbXVuaWNh dG9yPWgocixhLG8pLHRoaXMuX2Nyb3NzV2luZG93Q29tbXVuaWNhdG9yLm9uKCJk aXNjb25uZWN0IixmdW5jdGlvbigpe3RoaXMuX2Nyb3NzV2luZG93Q29tbXVuaWNh dG9yLmRpc2Nvbm5lY3QoKSxfYXRlLm1lbnUuY2xvc2UoKX0uYmluZCh0aGlzKSks dGhpcy5fY3Jvc3NXaW5kb3dDb21tdW5pY2F0b3Iub24oInJlaW5pdGlhbGl6ZSIs ZnVuY3Rpb24oYSl7X2F0ZS5tZW51Lm9wZW4obnVsbCx0LGUsbixhLnNvdXJjZSxh Lm9yaWdpbil9KSx0aGlzLl9jcm9zc1dpbmRvd0NvbW11bmljYXRvci5vbigibWVz c2FnZSIsbSh0aGlzLl9jcm9zc1dpbmRvd0NvbW11bmljYXRvcixfYXRlLmVkLGFk ZHRoaXMpKSx0aGlzLl9vbldpbmRvd0Nsb3NlfHwodGhpcy5fb25XaW5kb3dDbG9z ZT10aGlzLl93aW5kb3dDbG9zZUhhbmRsZXIuYmluZCh0aGlzKSx1Lmxpc3Rlbih3 aW5kb3csImJlZm9yZXVubG9hZCIsdGhpcy5fb25XaW5kb3dDbG9zZSksdS5saXN0 ZW4od2luZG93LCJ1bmxvYWQiLHRoaXMuX29uV2luZG93Q2xvc2UpKX0sb3BlbkRl c2t0b3BWZXJzaW9uOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl9oYXNNb3VudGVkRXhw YW5kZWRNZW51P19hdGUuZWQuZmlyZSgiYWRkdGhpcy5leHBhbmRlZC5yZW9wZW4i LG51bGwse3BhbmU6dC51aV9wYW5lfHwiZXhwYW5kZWQiLG1lbnVTaGFyZTplLG1l bnVDb25maWc6dCxtZW51VHlwZTpuPyJmb2xsb3ciOiJzaGFyZSIsdG90YWxTZXJ2 aWNlczpuP2EoZS5fZXhwYW5kZWRNZW51Rm9sbG93U2VydmljZXMpOl9hdHcubGlz dH0pOih0aGlzLl9oYXNNb3VudGVkRXhwYW5kZWRNZW51PSEwLHRoaXMucmVuZGVy RGVza3RvcEV4cGFuZGVkTWVudSgiYXQtZXhwYW5kZWQtbWVudS1ob3N0Iix0LnVp X3BhbmV8fCJleHBhbmRlZCIsZSx0LG4pKX0sdHJhY2tNZW51T3BlbmVkOmZ1bmN0 aW9uKGUsdCxuLGEpe24uc21kJiZuLnNtZC5zdGEmJl9hdGUudHJhY2sudW5zKG4u c21kLnN0YSksdGhpcy5sYXN0T3BlbmVkPWUmJmUuc2VydmljZSYmImVtYWlsIj09 PWUuc2VydmljZXx8YSYmImVtYWlsIj09PWEudWlfcGFuZT8iZW1haWwiOiJleHBh bmRlZCIsX2F0ZS5lZC5maXJlKCJhZGR0aGlzLm1lbnUub3BlbiIsd2luZG93LmFk ZHRoaXN8fHt9LHtwYW5lOnRoaXMubGFzdE9wZW5lZCx1cmw6dCYmdC51cmx8fG4m Jm4udXJsfHwiIix0aXRsZTp0JiZ0LnRpdGxlfHxuJiZuLnRpdGxlfHwiIixjb25m OnQsc2hhcmU6ZX0pfSxjbG9zZTpmdW5jdGlvbigpe19hdGUubWVudS5fY3Jvc3NX aW5kb3dDb21tdW5pY2F0b3I9bnVsbCxfYXRlLmVkLmZpcmUoImFkZHRoaXMubWVu dS5jbG9zZSIsd2luZG93LmFkZHRoaXN8fHt9LHtwYW5lOl9hdGUubWVudS5sYXN0 T3BlbmVkfSksX2F0ZS5tZW51Lmxhc3RPcGVuZWQ9dm9pZCAwfSxfd2luZG93Q2xv c2VIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fY3Jvc3NXaW5kb3dDb21tdW5pY2F0 b3ImJih0aGlzLl9jcm9zc1dpbmRvd0NvbW11bmljYXRvci50ZWxsVGFyZ2V0Q2xv c2VXaW5kb3coKSx0aGlzLmNsb3NlKCkpLHUudW5saXN0ZW4od2luZG93LCJiZWZv cmV1bmxvYWQiLHRoaXMuX29uV2luZG93Q2xvc2UpLHUudW5saXN0ZW4od2luZG93 LCJ1bmxvYWQiLHRoaXMuX29uV2luZG93Q2xvc2UpLHRoaXMuX29uV2luZG93Q2xv c2U9bnVsbH19LGUuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBifHwoYj1uZXcg byksYn19LCwsZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNTU3KSxpPW4oNjE4KS5j bGlja2lmeVVSTCxvPW4oMzEpLHI9big1OSkubWFrZUNVSUQscz1uKDU1OSk7ZS5l eHBvcnRzPWZ1bmN0aW9uKGUsdCxuLGQsdSxjKXt2YXIgbD1vKCksZj1kfHx0LnVy bHx8IiIscD10LnhpZHx8cigpLGg9cyh0KSxtPW4uZGF0YV90cmFja19jbGlja2Jh Y2shPT0hMXx8bi5kYXRhX3RyYWNrX2xpbmtiYWNrfHwiQWRkVGhpcyI9PT1sfHwh bDtyZXR1cm4gMD09PWYudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRwJTNhJTJm JTJmIikmJihmPXdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQoZikpLHUmJihoLnhp ZD1wLHNldFRpbWVvdXQoZnVuY3Rpb24oKXsobmV3IEltYWdlKS5zcmM9YSgidHdp dHRlciI9PT1lJiZjPyJ0d2VldCI6ZSwwLGgsbil9LDEwMCkpLG0/aShmLGUscCk6 Zn19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUpe2lmKCFlKXJldHVybiAw OyIjIj09PWUuY2hhckF0KDApJiYoZT1lLnN1YnN0cigxKSk7dmFyIHQ9ZS5zcGxp dCgiOyIpLnNoaWZ0KCk7cmV0dXJuIDM9PT10LnNwbGl0KCIuIikubGVuZ3RoJiYo dD10LnNwbGl0KCIuIikuc2xpY2UoMCwtMSkuam9pbigiLiIpKSwxMj09PXQubGVu Z3RoJiYiLiI9PT10LnN1YnN0cigwLDEpJiYvW2EtekEtWjAtOVwtX117MTF9Ly50 ZXN0KHQuc3Vic3RyKDEpKT8xOjB9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5sZW5n dGg9PT0xMStrJiZlLnN1YnN0cigwLGspPT09YiYmL1thLXpBLVowLTlcLV9dezEx fS8udGVzdChlLnN1YnN0cihrKSl9ZnVuY3Rpb24gbyhlKXtlfHwoZT12LmRyfHwi Iik7dmFyIHQsbixhLG8scixzLGQsdSxjLHAsbSxnLF8sYj0wLHc9MCxDPXYuZHV8 fCIiLE09KHYuZHV8fCIiKS5zcGxpdCgiIyIpLnNoaWZ0KCksQT12Lmhhc2guc3Vi c3RyKDEpLE89di5xdWVyeSxFPWwodi5oYXNoKSxTPUUuYXRfc3QsST1FLmF0X3Bj byxUPUUuYXRfYWIsTj1FLmF0X3BvcyxqPUUuYXRfdG90LEQ9RS5hdF9zaSx6PU8u c21zX3NzLEw9Ty5mYl9yZWYsUj1PLmF0X3h0LFA9Ty5hdF9zdDtTfHxpKEEpJiYo ZD1mKEEuc3Vic3RyKGspKSxyPWQuc3Vic3RyKDgsOCksUz1kLnN1YnN0cigwLDgp KyIwMDAwMDAwMCwiLFMrPXBhcnNlSW50KGQuc3Vic3RyKDE2KSwxMCkpLEwmJiFT JiYodT15LHA9TC5zcGxpdCh1KSxwLmxlbmd0aDwyJiZMLmluZGV4T2YoIl8iKT4t MSYmKHU9Il8iLHA9TC5zcGxpdCh1KSksbT1wLmxlbmd0aD4xP3AucG9wKCk6IiIs Zz1wLmpvaW4odSksaShnKXx8KGc9TCxtPSIiKSxpKGcpPyhkPWYoZy5zdWJzdHIo aykpLFI9ZC5zdWJzdHIoMCwxNikrIiwiK3BhcnNlSW50KGQuc3Vic3RyKDE2KSwx MCksej0iZmFjZWJvb2tfIisobXx8Imxpa2UiKSk6KHM9TC5zcGxpdCgiPSIpLnBv cCgpLnNwbGl0KHkpLDI9PXMubGVuZ3RoJiZoKHNbMF0pJiYoUj1zLmpvaW4oIiwi KSx6PSJmYWNlYm9va18iKyhtfHwibGlrZSIpKSkpLFM9UyYmaChTLnNwbGl0KCIs Iikuc2hpZnQoKSk/UzoiIixSfHwodT1BLmluZGV4T2YoeCk+LTE/eDp5LGM9QS5z dWJzdHIoaykuc3BsaXQodSksMj09Yy5sZW5ndGgmJmkoQS5zdWJzdHIoMCwxKStj WzBdKSYmKGQ9ZihjWzBdKSxSPWQuc3Vic3RyKDAsMTYpKyIsIitwYXJzZUludChk LnN1YnN0cigxNiksMTApLHo9Y1sxXSxiPTEpKSxJJiYoYT1JKSxTPyh3PXBhcnNl SW50KFMuc3BsaXQoIiwiKS5wb3AoKSkrMSxuPVMuc3BsaXQoIiwiKS5zaGlmdCgp KTpDLmluZGV4T2YoX2F0ZCsiYm9vayIpPT0tMSYmTSE9ZSYmKFI/KF89Ui5zcGxp dCgiLCIpLHQ9X2R1YyhfLnNoaWZ0KCkpLHQuaW5kZXhPZigiLCIpPi0xJiYoXz10 LnNwbGl0KCIsIiksdD1fLnNoaWZ0KCkpKTpQJiYoXz1QLnNwbGl0KCIsIiksbz1f ZHVjKF8uc2hpZnQoKSksby5pbmRleE9mKCIsIik+LTEmJihfPW8uc3BsaXQoIiwi KSxvPV8uc2hpZnQoKSkpLF8mJl8ubGVuZ3RoJiYodz1NYXRoLm1pbigzLHBhcnNl SW50KF8ucG9wKCkpKzEpKSksaChuKXx8KG49bnVsbCksaChvKXx8KG89bnVsbCks ej0oenx8IiIpLnNwbGl0KCIjIikuc2hpZnQoKS5zcGxpdCgiPyIpLnNoaWZ0KCk7 dmFyIEI9e2FiOlR8fG51bGwscG9zOk4sdG90OmoscnNpOm4sY2ZjOmEsaGFzaDpi LHJzaXE6byxmdWlkOnIscnhpOnQscnNjOnosZ2VuOncsY3NpOkR9O3JldHVybiBC fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGU9ZXx8d2luZG93LmFkZHRoaXNfY29uZmln LCFlfHxlLmRhdGFfdHJhY2tfY2xpY2tiYWNrIT09ITEmJmUuZGF0YV90cmFja19s aW5rYmFjayE9PSExfWZ1bmN0aW9uIHMoZSx0KXtpZighdHx8dC5kYXRhX3RyYWNr X2NsaWNrYmFjayE9PSExJiZ0LmRhdGFfdHJhY2tfbGlua2JhY2shPT0hMSl7aWYo QylyZXR1cm4hMDtpZihnKCk+PTI1MClyZXR1cm4gQz0hMDtlPShlfHx3LmFkZHRo aXNfcHJvZHVjdHx8IiIpLnNwbGl0KCIsIik7Zm9yKHZhciBuPTA7bjxlLmxlbmd0 aDtuKyspaWYoTVtlW25dLnNwbGl0KCItIikuc2hpZnQoKV0pcmV0dXJuIEM9ITB9 cmV0dXJuITF9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBlPWV8fG0oKSxiK3AoZStN YXRoLm1pbigzLHR8fDApKX1mdW5jdGlvbiB1KGUsdCxuKXtyZXR1cm4gbj1ufHxt KCksZS5pbmRleE9mKCIjIik+LTE/ZTplKyIjIitkKHQ/bjpuLnN1YnN0cigwLDgp K18oKSxvKCkuZ2VuKSsodD95K3Q6IiIpfWZ1bmN0aW9uIGMoZSl7dmFyIHQsbixp LG8scixzLGQ7cmV0dXJuIGUuaW5kZXhPZigiIyIpPi0xJiYocj1lLnNwbGl0KCIj Iikuc2xpY2UoMSkuc2hpZnQoKSxhKHIpJiYocz1yLnN1YnN0cigxKS5zcGxpdCgi LiIpLGQ9cy5sZW5ndGg/cy5zaGlmdCgpOiIiLG49cy5sZW5ndGg/cy5wb3AoKToi IixkJiYoZD1mKGQpLHQ9ZC5zdWJzdHIoMCwxNiksaT1wYXJzZUludChkLnN1YnN0 cigxNiksMTApLGlzTmFOKGkpfHwobz1vfHx7fSxvLmdlbj1pKSksaCh0KSYmKG89 b3x8e30sby54aWQ9dCksbi5zZWFyY2goL15bYS16QS1aMC05X10rJC8pIT0tMSYm KG89b3x8e30sby5yc2M9bikpKSxvfXZhciBsPShuKDM1KSxuKDMzKSksZj1uKDE2 KS5hdG9oYixwPW4oMTYpLmhidG9hLGg9big1OSkuaXNWYWxpZENVSUQsbT1uKDU5 KS5tYWtlQ1VJRCxnPW4oNjE5KSxfPW4oNjIwKSx2PW4oNjMpLGI9Ii4iLHg9Ijsi LHk9Ii4iLGs9Yi5sZW5ndGgsQz0wLE09e3dwcDoxLGJsZzoxfTtlLmV4cG9ydHM9 e2NsaWNraWZ5VVJMOnUsZGVjbGlja2lmeVVSTDpjLGdlbmVyYXRlQ2xpY2tiYWNr Q29kZTpkLGNsaWNrUHJlZml4OmIsY2xpY2tUcmFja2FibGVQcm9kdWN0OnMsZXh0 cmFjdE91clBhcmFtZXRlcnM6byxpc0NsaWNrSGFzaDphLGlzQ2xpY2tUcmFja2lu Z0VuYWJsZWQ6cn19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7 cmV0dXJuIV9hdGN8fCFfYXRjLm5vdXAmJl9hdGMudmVyPj0xNTI/MzAwOl9hdGMu dmVyfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oMzc3KSxpPXdpbmRvdztlLmV4 cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZSx0PWEobmF2aWdhdG9yLnVzZXJBZ2VudCwx Niksbj0obmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkrIiIrbmF2aWdhdG9y LmphdmFFbmFibGVkKCkrKG5hdmlnYXRvci51c2VyTGFuZ3VhZ2V8fG5hdmlnYXRv ci5sYW5ndWFnZSksbz1pLnNjcmVlbi5jb2xvckRlcHRoKyIiK2kuc2NyZWVuLndp ZHRoK2kuc2NyZWVuLmhlaWdodCtpLnNjcmVlbi5hdmFpbFdpZHRoK2kuc2NyZWVu LmF2YWlsSGVpZ2h0LHI9bmF2aWdhdG9yLnBsdWdpbnM7dHJ5e2lmKGU9ci5sZW5n dGgsZT4wKWZvcih2YXIgcz0wO3M8TWF0aC5taW4oMTAsZSk7cysrKXM8NT9uKz1y W3NdLm5hbWUrcltzXS5kZXNjcmlwdGlvbjpvKz1yW3NdLm5hbWUrcltzXS5kZXNj cmlwdGlvbn1jYXRjaChlKXt9cmV0dXJuIHQuc3Vic3RyKDAsMikrYShuLDE2KS5z dWJzdHIoMCwzKSthKG8sMTYpLnN1YnN0cigwLDMpfX0sZnVuY3Rpb24oZSx0LG4p eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1 bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCl7ZT1lfHx7fSxfYXR3PV9h dHd8fHt9LF9hdHcuY29uZj1fYXR3LmNvbmZ8fHt9LF9hdGU9X2F0ZXx8e30sX2F0 ZS5tZW51PV9hdGUubWVudXx8e307dmFyIG49ZS51aV9sYW5ndWFnZXx8Yy5kZWZh dWx0KCk7X2F0ZS5tZW51Ll9tZW51U2hhcmU9ZC5kZWZhdWx0KGFkZHRoaXNfc2hh cmUpLF9hdGUubWVudS5fbWVudUNvbmZpZz1kLmRlZmF1bHQoYWRkdGhpc19jb25m aWcpLHIuZGVmYXVsdChfYXRlLm1lbnUuX21lbnVDb25maWcsZSksInVuZGVmaW5l ZCIhPXR5cGVvZiB0JiYoX2F0ZS5tZW51Ll9tZW51U2hhcmUudXJsPXQudXJsfHxf YXRlLm1lbnUuX21lbnVTaGFyZS51cmwsX2F0ZS5tZW51Ll9tZW51U2hhcmUudGl0 bGU9dC50aXRsZXx8X2F0ZS5tZW51Ll9tZW51U2hhcmUudGl0bGUsX2F0ZS5tZW51 Ll9tZW51U2hhcmUuZGVzY3JpcHRpb249dC5kZXNjcmlwdGlvbnx8X2F0ZS5tZW51 Ll9tZW51U2hhcmUuZGVzY3JpcHRpb24sX2F0ZS5tZW51Ll9tZW51U2hhcmUubWVk aWE9dC5tZWRpYXx8X2F0ZS5tZW51Ll9tZW51U2hhcmUubWVkaWEsX2F0ZS5tZW51 Ll9tZW51U2hhcmUudXJsX3RyYW5zZm9ybXM9dC51cmxfdHJhbnNmb3Jtc3x8X2F0 ZS5tZW51Ll9tZW51U2hhcmUudXJsX3RyYW5zZm9ybXN8fHt9LF9hdGUubWVudS5f bWVudVNoYXJlLmhpZGVFbWFpbFNoYXJpbmdDb25maXJtYXRpb249dC5oaWRlRW1h aWxTaGFyaW5nQ29uZmlybWF0aW9ufHxfYXRlLm1lbnUuX21lbnVTaGFyZS5oaWRl RW1haWxTaGFyaW5nQ29uZmlybWF0aW9uLF9hdGUubWVudS5fbWVudVNoYXJlLl9l eHBhbmRlZE1lbnVGb2xsb3dTZXJ2aWNlcz10Ll9leHBhbmRlZE1lbnVGb2xsb3dT ZXJ2aWNlcywiZW1haWwiPT09ZS51aV9wYW5lJiYoX2F0ZS5tZW51Ll9tZW51U2hh cmUuZW1haWxfdGVtcGxhdGU9dC5lbWFpbF90ZW1wbGF0ZXx8X2F0ZS5tZW51Ll9t ZW51U2hhcmUuZW1haWxfdGVtcGxhdGUsX2F0ZS5tZW51Ll9tZW51U2hhcmUuZW1h aWxfdmFycz10LmVtYWlsX3ZhcnN8fF9hdGUubWVudS5fbWVudVNoYXJlLmVtYWls X3ZhcnMpKSxfYXRlLm1lbnUuX21lbnVDb25maWcudWlfcGFuZT0oZXx8e30pLnVp X3BhbmV8fG51bGwsX2F0ZS5tZW51Ll9tZW51Q29uZmlnLnVpX2xpZ2h0Ym94PShl fHx7fSkudWlfbGlnaHRib3h8fChhZGR0aGlzX2NvbmZpZ3x8e30pLnVpX2xpZ2h0 Ym94fHwibGlnaHQiLF9hdGUubWVudS5fbWVudUNvbmZpZy5pbWFnZV9zZXJ2aWNl PShlfHx7fSkuaW1hZ2Vfc2VydmljZXx8bnVsbCxfYXRlLm1lbnUuX21lbnVDb25m aWcuaW1hZ2VfY29udGFpbmVyPShlfHx7fSkuaW1hZ2VfY29udGFpbmVyfHxudWxs LF9hdGUubWVudS5fbWVudUNvbmZpZy5pbWFnZV9pbmNsdWRlPShlfHx7fSkuaW1h Z2VfaW5jbHVkZXx8bnVsbCxfYXRlLm1lbnUuX21lbnVDb25maWcuaW1hZ2VfZXhj bHVkZT0oZXx8e30pLmltYWdlX2V4Y2x1ZGV8fG51bGwsX2F0ZS5tZW51Ll9tZW51 Q29uZmlnLnVpX2xhbmd1YWdlPW59dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1p O3ZhciBvPW4oNjIyKSxyPWEobykscz1uKDU1OSksZD1hKHMpLHU9bigxOCksYz1h KHUpO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7aWYodCYmZSE9PXQpZm9yKHZh ciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHZvaWQgMD09PWVbYV18fG4p JiYoZVthXT10W2FdKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu Y3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19 ZnVuY3Rpb24gaShlLHQsbil7dmFyIGE9bG9jYXRpb24ucHJvdG9jb2x8fCJodHRw OiIsaT0iLy9zNy5hZGR0aGlzLmNvbS8iLnNsaWNlKDAsLTEpLG89YStpLGQ9dHx8 cC5kZWZhdWx0KG8rIi9zdGF0aWMvc3RhbmRhbG9uZUV4cGFuZGVkTWVudS5odG1s IiksYz1sb2NhdGlvbi5wcm90b2NvbCsiLy8iK2xvY2F0aW9uLmhvc3RuYW1lKyhs b2NhdGlvbi5wb3J0PyI6Iitsb2NhdGlvbi5wb3J0OiIiKSxsPW5ldyByLmRlZmF1 bHQoe3RhcmdldDpkLHRhcmdldE9yaWdpbjpufHxvLGV2ZW50TmFtZXNwYWNlOnMu Q1JPU1NfV0lORE9XX05BTUVTUEFDRX0pO3JldHVybiBsLm9uY2UoImNvbm5lY3Rp b25lc3RhYmxpc2hlZCIsZnVuY3Rpb24oKXtsLnBvc3QodS5kZWZhdWx0KHt9LGUs e3RyYW5zbGF0aW9uczpofSkpfSksbC5jb25uZWN0KGMpLGx9dC5fX2VzTW9kdWxl PSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oNjI0KSxyPWEobykscz1uKDYzMCksZD1u KDgpLHU9YShkKSxjPW4oNjUpLGw9YShjKSxmPW4oNjMxKSxwPWEoZiksaD17ZW1h aWw6bC5kZWZhdWx0KCJFbWFpbCIsNCksZmF2b3JpdGVzOmwuZGVmYXVsdCgiRmF2 b3JpdGVzIiw1KSxwcmludDpsLmRlZmF1bHQoIlByaW50IiwyMikscHJpdmFjeTps LmRlZmF1bHQoIlByaW50IiwyNCksZmluZEFTZXJ2aWNlOmwuZGVmYXVsdCgiRmlu ZCBhIHNlcnZpY2UiLDM1KSxzaGFyZTpsLmRlZmF1bHQoIlNoYXJlIiw5MSksZm9s bG93OmwuZGVmYXVsdCgiRm9sbG93Iiw5NiksZG9tYWludG9vbHN3aG9pczpsLmRl ZmF1bHQoIldob2lzIExvb2t1cCIsMTA2KSx3M3ZhbGlkYXRvcjpsLmRlZmF1bHQo IkhUTUwgVmFsaWRhdG9yIiwxMDcpLG1haWx0bzpsLmRlZmF1bHQoIkVtYWlsIEFw cCIsMTA4KSxjbGVhbnNhdmU6bC5kZWZhdWx0KCJTYXZlIiwxMDkpLGxpbms6bC5k ZWZhdWx0KCJDb3B5IExpbmsiLDExMCksdG9wU2VydmljZXM6bC5kZWZhdWx0KCJU b3AgU2VydmljZXMiLDExMSksbG9hZE1vcmU6bC5kZWZhdWx0KCJMb2FkIE1vcmUi LDExMiksZW1haWxDb25maXJtUGVybWl0dGVkVG9TZW5kOmwuZGVmYXVsdCgiQnkg c2VuZGluZywgSSBhZmZpcm0gSSBhbSBwZXJtaXR0ZWQgdG8gc2VuZCB0aGlzIGVt YWlsLiIsMTEzKX07ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4p eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1 bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUpe2Z1bmN0aW9uIHQoKXt0aGlz LnRhcmdldD1uLHRoaXMudGFyZ2V0T3JpZ2luPWEsdGhpcy5ldmVudE5hbWVzcGFj ZT1pLHRoaXMuY29tbXVuaWNhdGlvbk1lZGl1bT1kLHRoaXMuaXNJbml0aWF0b3I9 Zix0aGlzLnVzZVBvbGxpbmc9ZD09PXUuQ29tbXVuaWNhdGlvbk1lZGlhLkNST1NT X1dJTkRPV19DT09LSUVTfHxsLHRoaXMuX2xpc3RlbmVycz17fSx0aGlzLnByb3h5 TGlzdGVuZXI9dGhpcy5wcm94eUxpc3RlbmVyLmJpbmQodGhpcyksZj90aGlzLmxp c3RlbkZvckFjaygpOnRoaXMubGlzdGVuRm9ySGFuZHNoYWtlKCl9dmFyIG49ZS50 YXJnZXQsYT1lLnRhcmdldE9yaWdpbixpPWUuZXZlbnROYW1lc3BhY2Usbz1lLmFj dGl2aXR5RGVzY3JpcHRvcixyPXZvaWQgMD09PW8/dS5BY3Rpdml0eURlc2NyaXB0 b3JzLkNST1NTX1dJTkRPV19JTklUSUFUT1I6byxzPWUuY29tbXVuaWNhdGlvbk1l ZGl1bSxkPXZvaWQgMD09PXM/dS5Db21tdW5pY2F0aW9uTWVkaWEuQ1JPU1NfV0lO RE9XX1BPU1RNRVNTQUdFOnMsYz1lLnVzZVBvbGxpbmcsbD12b2lkIDAhPT1jJiZj LGY9cj09PXUuQWN0aXZpdHlEZXNjcmlwdG9ycy5DUk9TU19XSU5ET1dfSU5JVElB VE9SO3JldHVybiB0LnByb3RvdHlwZT1mP3Y6YixuZXcgdH10Ll9fZXNNb2R1bGU9 ITA7dmFyIG89bigxMykscj1hKG8pLHM9big4KSxkPWEocyksdT1uKDYyNSksYz1u KDYyNiksbD1hKGMpLGY9big2MjcpLHA9YShmKSxoPW4oNjI4KSxtPWEoaCksZz1u KDYyOSksXz1hKGcpLHY9ZC5kZWZhdWx0KHt9LGwuZGVmYXVsdCxwLmRlZmF1bHQs Xy5kZWZhdWx0KSxiPWQuZGVmYXVsdCh7fSxsLmRlZmF1bHQsbS5kZWZhdWx0LF8u ZGVmYXVsdCk7aS5sb2FkQ29tbXVuaWNhdG9yVXNpbmdTdG9yYWdlPWZ1bmN0aW9u KGUpe3ZhciB0PXZvaWQgMDtpZighZSlyZXR1cm4gdm9pZCByLmRlZmF1bHQuZXJy b3IoIkxvYWRpbmcgYSBjb21tdW5pY2F0b3IgZnJvbSBzdG9yYWdlIHJlcXVpcmVz IHN1cHBseWluZyB0aGUgb3JpZ2luYWwgb3BlbmluZyB3aW5kb3cuIik7dHJ5e3Q9 SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHUuS2V5cy5DUk9TU19X SU5ET1dfU1RPUkFHRV9LRVkpKX1jYXRjaChlKXtyZXR1cm4gdm9pZCByLmRlZmF1 bHQuZXJyb3IoIkZvdW5kIHVucGFyc2VhYmxlIGRhdGEgZm9yIGNyb3NzLXdpbmRv dyBjb21tdW5pY2F0aW9uIGluIHNlc3Npb25TdG9yYWdlLiBJZ25vcmluZy4iKX1p Zih0KXt2YXIgbj10LGE9bi50YXJnZXRPcmlnaW4sbz1uLmV2ZW50TmFtZXNwYWNl LHM9bi5hY3Rpdml0eURlc2NyaXB0b3IsZD1uLnVzZVBvbGxpbmcsYz1uLmNvbW11 bmljYXRpb25NZWRpdW07cmV0dXJuIG5ldyBpKHt0YXJnZXQ6ZSx0YXJnZXRPcmln aW46YSxldmVudE5hbWVzcGFjZTpvLGFjdGl2aXR5RGVzY3JpcHRvcjpzLHVzZVBv bGxpbmc6ZCxjb21tdW5pY2F0aW9uTWVkaXVtOmN9KX19LHQuZGVmYXVsdD1pLGUu ZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3Qu X19lc01vZHVsZT0hMDt2YXIgbj1bIkNST1NTX1dJTkRPV19KT0lORVIiLCJDUk9T U19XSU5ET1dfSU5JVElBVE9SIl0sYT1bIkNST1NTX1dJTkRPV19UQVJHRVRfQ0xP U0VfV0lORE9XIiwiQ1JPU1NfV0lORE9XX1RBUkdFVF9SRUlOSVRJQUxJWkVfV0lU SF9PUklHSU4iLCJDUk9TU19XSU5ET1dfVEFSR0VUX0RJU0NPTk5FQ1QiXSxpPVsi Q1JPU1NfV0lORE9XX1NUT1JBR0VfS0VZIiwiQ1JPU1NfV0lORE9XX0hBTkRTSEFL RV9LRVkiXSxvPVsiQ1JPU1NfV0lORE9XX1BPU1RNRVNTQUdFIiwiQ1JPU1NfV0lO RE9XX0xPQ0FMU1RPUkFHRSIsIkNST1NTX1dJTkRPV19DT09LSUVTIl0scj1mdW5j dGlvbihlLHQpe3JldHVybiBlW3RdPXQsZX07dC5kZWZhdWx0PXtBY3Rpdml0eURl c2NyaXB0b3JzOm4ucmVkdWNlKHIse30pLENvbW1hbmRzOmEucmVkdWNlKHIse30p LEtleXM6aS5yZWR1Y2Uocix7fSksQ29tbXVuaWNhdGlvbk1lZGlhOm8ucmVkdWNl KHIse30pfSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l OntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMDt2YXIgaT1uKDEzKSxvPWEoaSks cj1uKDYyNSkscz1mdW5jdGlvbigpe3ZhciBlPXtyZW1vdmVBbGxMaXN0ZW5lcnM6 ZnVuY3Rpb24oKXt2YXIgZT10aGlzO09iamVjdC5rZXlzKHRoaXMuX2xpc3RlbmVy cykuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlzdGVuZXJzW3RdLmZv ckVhY2goZnVuY3Rpb24obil7cmV0dXJuIGUub2ZmKHQsbil9KX0pfX07cmV0dXJu IE9iamVjdC5mcmVlemUoe29uOmZ1bmN0aW9uKGUsdCl7aWYoInN0cmluZyIhPXR5 cGVvZiBlfHwiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9y KCJUaGUgYG9uYCBtZXRob2QgZm9yIHRoaXMgY29tbXVuaWNhdG9yIGV4cGVjdHMg YSBzdHJpbmcgZXZlbnQgbmFtZSBhbmQgYSBsaXN0ZW5lciBmdW5jdGlvbi4iKTt0 aGlzLl9saXN0ZW5lcnNbZV09KHRoaXMuX2xpc3RlbmVyc1tlXXx8W10pLmNvbmNh dCh0KX0sb2ZmOmZ1bmN0aW9uKGUsdCl7dGhpcy5fbGlzdGVuZXJzW2VdJiYiZnVu Y3Rpb24iPT10eXBlb2YgdCYmKHRoaXMuX2xpc3RlbmVyc1tlXT10aGlzLl9saXN0 ZW5lcnNbZV0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dH0pKX0sb25j ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBl fHwiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUg YG9uY2VgIG1ldGhvZCBmb3IgdGhpcyBjb21tdW5pY2F0b3IgZXhwZWN0cyBhIHN0 cmluZyBldmVudCBuYW1lIGFuZCBhIGxpc3RlbmVyIGZ1bmN0aW9uLiIpO3ZhciBh PWZ1bmN0aW9uKCl7dC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSxuLm9mZihlLGEp LGE9bnVsbH07dGhpcy5vbihlLGEpfSxlbWl0OmZ1bmN0aW9uKGUpe2Zvcih2YXIg dD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodD4xP3QtMTowKSxhPTE7YTx0O2Er KyluW2EtMV09YXJndW1lbnRzW2FdO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJv dyBuZXcgVHlwZUVycm9yKCJUaGUgYGVtaXRgIG1ldGhvZCBmb3IgdGhpcyBjb21t dW5pY2F0b3IgZXhwZWN0cyBhIHN0cmluZyBldmVudCBuYW1lIGFzIHRoZSBmaXJz dCBhcmd1bWVudC4iKTt2YXIgaT10aGlzLl9saXN0ZW5lcnNbZV07aSYmaS5mb3JF YWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHZvaWQgMCxuKX0pfSxkaXNj b25uZWN0OmZ1bmN0aW9uKCl7dGhpcy51c2VQb2xsaW5nPyhjbGVhclRpbWVvdXQo dGhpcy5faGFuZHNoYWtlUG9sbFRpbWVvdXRJZCksY2xlYXJUaW1lb3V0KHRoaXMu X2Fja1BvbGxUaW1lb3V0SWQpLGNsZWFySW50ZXJ2YWwodGhpcy5fcG9sbEZvck1l c3NhZ2VzSW50ZXJ2YWxJZCksdGhpcy5faGFuZHNoYWtlUG9sbFRpbWVvdXRJZD1u dWxsLHRoaXMuX2Fja1BvbGxUaW1lb3V0SWQ9bnVsbCx0aGlzLl9wb2xsRm9yTWVz c2FnZXNJbnRlcnZhbElkPW51bGwpOnRoaXMuY29tbXVuaWNhdGlvbk1lZGl1bT09 PXIuQ29tbXVuaWNhdGlvbk1lZGlhLkNST1NTX1dJTkRPV19MT0NBTFNUT1JBR0U/ KHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzdG9yYWdlIix0aGlzLnByb3h5 TGlzdGVuZXIpLHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmV2 ZW50TmFtZXNwYWNlKSk6dGhpcy5jb21tdW5pY2F0aW9uTWVkaXVtPT09ci5Db21t dW5pY2F0aW9uTWVkaWEuQ1JPU1NfV0lORE9XX1BPU1RNRVNTQUdFJiZ3aW5kb3cu cmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5wcm94eUxpc3RlbmVy KSxjbGVhclRpbWVvdXQodGhpcy5fY29ubmVjdGlvblRpbWVvdXRJZCksdGhpcy5f Y29ubmVjdGlvblRpbWVvdXRJZD1udWxsLHRoaXMuY29ubmVjdGlvbkVzdGFibGlz aGVkPSExLGUucmVtb3ZlQWxsTGlzdGVuZXJzLmNhbGwodGhpcyl9LHRlbGxUYXJn ZXRDbG9zZVdpbmRvdzpmdW5jdGlvbigpe3RoaXMucG9zdChyLkNvbW1hbmRzLkNS T1NTX1dJTkRPV19UQVJHRVRfQ0xPU0VfV0lORE9XKX0sdGVsbFRhcmdldFJlaW5p dGlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgdDt0aGlzLnBvc3QoKHQ9e30sdFtyLkNv bW1hbmRzLkNST1NTX1dJTkRPV19UQVJHRVRfUkVJTklUSUFMSVpFX1dJVEhfT1JJ R0lOXT1lLHQpKX0sdGVsbFRhcmdldERpc2Nvbm5lY3Q6ZnVuY3Rpb24oKXt0aGlz LnBvc3Qoci5Db21tYW5kcy5DUk9TU19XSU5ET1dfVEFSR0VUX0RJU0NPTk5FQ1Qp fSxzYXZlU2Vzc2lvbjpmdW5jdGlvbigpe3ZhciBlPXZvaWQgMDt0cnl7ZT1KU09O LnN0cmluZ2lmeSh7dGFyZ2V0T3JpZ2luOnRoaXMudGFyZ2V0T3JpZ2luLGV2ZW50 TmFtZXNwYWNlOnRoaXMuZXZlbnROYW1lc3BhY2UsdXNlUG9sbGluZzp0aGlzLnVz ZVBvbGxpbmcsY29tbXVuaWNhdGlvbk1lZGl1bTp0aGlzLmNvbW11bmljYXRpb25N ZWRpdW0sYWN0aXZpdHlEZXNjcmlwdG9yOnRoaXMuaXNJbml0YXRvcj9yLkFjdGl2 aXR5RGVzY3JpcHRvcnMuQ1JPU1NfV0lORE9XX0lOSVRJQVRPUjpyLkFjdGl2aXR5 RGVzY3JpcHRvcnMuQ1JPU1NfV0lORE9XX0pPSU5FUn0pfWNhdGNoKGUpe3Rocm93 IG5ldyBFcnJvcigiQ3Jvc3NXaW5kb3dDb21tdW5pY2F0b3IgY291bGQgbm90IHN0 cmluZ2lmeSB0YXJnZXQgZGF0YSBmb3Igc2F2aW5nLiIpfXRyeXtzZXNzaW9uU3Rv cmFnZS5zZXRJdGVtKHIuS2V5cy5DUk9TU19XSU5ET1dfU1RPUkFHRV9LRVksZSl9 Y2F0Y2goZSl7dGhyb3cgby5kZWZhdWx0LmVycm9yKCJDcm9zc1dpbmRvd0NvbW11 bmljYXRvciBjb3VsZCBub3Qgc3RvcmUgZGF0YSBpbiBzZXNzaW9uU3RvcmFnZS4g IitlKSxlfX0scHJveHlMaXN0ZW5lcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdl dFByb3h5TWVzc2FnZShlKTtpZih0KXtpZih0aGlzLmNvbm5lY3Rpb25Fc3RhYmxp c2hlZHx8KHRoaXMuY29ubmVjdGlvbkVzdGFibGlzaGVkPSEwLHRoaXMuZW1pdCgi Y29ubmVjdGlvbmVzdGFibGlzaGVkIiksdGhpcy51c2VQb2xsaW5nPyhjbGVhclRp bWVvdXQodGhpcy5faGFuZHNoYWtlUG9sbFRpbWVvdXRJZCksY2xlYXJUaW1lb3V0 KHRoaXMuX2Fja1BvbGxUaW1lb3V0SWQpLHRoaXMuX2hhbmRzaGFrZVBvbGxUaW1l b3V0SWQ9bnVsbCx0aGlzLl9hY2tQb2xsVGltZW91dElkPW51bGwpOihjbGVhclRp bWVvdXQodGhpcy5fY29ubmVjdGlvblRpbWVvdXRJZCksdGhpcy5fY29ubmVjdGlv blRpbWVvdXRJZD1udWxsKSksdD09PXIuQ29tbWFuZHMuQ1JPU1NfV0lORE9XX1RB UkdFVF9DTE9TRV9XSU5ET1cpcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJjbG9zZXdp bmRvdyIpO2lmKHQ9PT1yLkNvbW1hbmRzLkNST1NTX1dJTkRPV19UQVJHRVRfRElT Q09OTkVDVClyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImRpc2Nvbm5lY3QiKTt2YXIg bj17b3JpZ2luOnRoaXMudGFyZ2V0T3JpZ2luLHNvdXJjZTplP2Uuc291cmNlOm51 bGwsbWVzc2FnZTp0fTt0aGlzLmVtaXQodFtyLkNvbW1hbmRzLkNST1NTX1dJTkRP V19UQVJHRVRfUkVJTklUSUFMSVpFX1dJVEhfT1JJR0lOXT8icmVpbml0aWFsaXpl IjoibWVzc2FnZSIsbil9fX0pfSgpO3QuZGVmYXVsdD1zLGUuZXhwb3J0cz10LmRl ZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxl PSEwO3ZhciBhPW4oNjI1KSxpPWZ1bmN0aW9uKCl7dmFyIGU9e3NldENvbm5lY3Rp b25TdGF0dXM6ZnVuY3Rpb24oZSl7dGhpcy5jb25uZWN0aW9uRXN0YWJsaXNoZWQ9 ZSxjbGVhclRpbWVvdXQodGhpcy5fY29ubmVjdGlvblRpbWVvdXRJZCksdGhpcy5f Y29ubmVjdGlvblRpbWVvdXRJZD1udWxsfSxvbkhhbmRzaGFrZUFja25vd2xlZGdl ZDpmdW5jdGlvbigpe2Uuc2V0Q29ubmVjdGlvblN0YXR1cy5jYWxsKHRoaXMsITAp LHRoaXMuZW1pdCgiY29ubmVjdGlvbmVzdGFibGlzaGVkIil9LG9uSGFuZHNoYWtl VGltZW91dDpmdW5jdGlvbigpe2Uuc2V0Q29ubmVjdGlvblN0YXR1cy5jYWxsKHRo aXMsITEpLHRoaXMuZW1pdCgiY29ubmVjdGlvbmZhaWxlZCIpfSxoYW5kc2hha2VB Y2tMaXN0ZW5lcjpmdW5jdGlvbih0KXt2YXIgbj1lLmdldEFja01lc3NhZ2UuY2Fs bCh0aGlzLHQpO2lmKG4pe2lmKCF0aGlzLnVzZVBvbGxpbmcpe3ZhciBpPXRoaXMu Y29tbXVuaWNhdGlvbk1lZGl1bT09PWEuQ29tbXVuaWNhdGlvbk1lZGlhLkNST1NT X1dJTkRPV19MT0NBTFNUT1JBR0U/InN0b3JhZ2UiOiJtZXNzYWdlIjt3aW5kb3cu cmVtb3ZlRXZlbnRMaXN0ZW5lcihpLHRoaXMuX2hhbmRzaGFrZUFja0xpc3RlbmVy KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihpLHRoaXMucHJveHlMaXN0ZW5lcil9 ZS5vbkhhbmRzaGFrZUFja25vd2xlZGdlZC5jYWxsKHRoaXMpfX0sZ2V0QWNrTWVz c2FnZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFVud3JhcHBlZERhdGEoZSks bj10Lm1lc3NhZ2UsaT10LnJlY2lwaWVudDtpZighbilyZXR1cm4gbnVsbDt2YXIg bz0hMTtyZXR1cm4gbz10aGlzLmNvbW11bmljYXRpb25NZWRpdW0hPT1hLkNvbW11 bmljYXRpb25NZWRpYS5DUk9TU19XSU5ET1dfUE9TVE1FU1NBR0U/dGhpcy5pc0lu aXRpYXRvciYmaT09PWEuQWN0aXZpdHlEZXNjcmlwdG9ycy5DUk9TU19XSU5ET1df SU5JVElBVE9SfHwhdGhpcy5pc0luaXRpYXRvciYmaT09PWEuQWN0aXZpdHlEZXNj cmlwdG9ycy5DUk9TU19XSU5ET1dfSk9JTkVSOmUuc291cmNlPT09dGhpcy50YXJn ZXQmJmUub3JpZ2luPT09dGhpcy50YXJnZXRPcmlnaW4sbz9uOm51bGx9LHBvbGxG b3JBY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMuY29tbXVuaWNhdGlv bk1lZGl1bT09PWEuQ29tbXVuaWNhdGlvbk1lZGlhLkNST1NTX1dJTkRPV19QT1NU TUVTU0FHRSl0aHJvdyBuZXcgRXJyb3IoIlBvbGxpbmcgbGlzdGVuZXJzIGNhbm5v dCBiZSB1c2VkIHdpdGggcG9zdE1lc3NhZ2UgY29tbXVuaWNhdG9ycy4iKTtpZigh dGhpcy5fYWNrUG9sbFRpbWVvdXRJZCl7dmFyIG49ZnVuY3Rpb24gbigpe2UuaGFu ZHNoYWtlQWNrTGlzdGVuZXIuY2FsbCh0KSxjbGVhclRpbWVvdXQodC5fYWNrUG9s bFRpbWVvdXRJZCksdC5jb25uZWN0aW9uRXN0YWJsaXNoZWQ/KGRlbGV0ZSB0Ll9h Y2tQb2xsVGltZW91dElkLHQucG9sbEZvck1lc3NhZ2VzKCkpOnQuX2Fja1BvbGxU aW1lb3V0SWQ9c2V0VGltZW91dChuLDUwMCl9O3RoaXMuX2Fja1BvbGxUaW1lb3V0 SWQ9c2V0VGltZW91dChuLDApfX19O3JldHVybiBPYmplY3QuZnJlZXplKHtjb25u ZWN0OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPD0x fHx2b2lkIDA9PT1hcmd1bWVudHNbMV0/NTA6YXJndW1lbnRzWzFdLG89YXJndW1l bnRzLmxlbmd0aDw9Mnx8dm9pZCAwPT09YXJndW1lbnRzWzJdPzEwMDphcmd1bWVu dHNbMl07aWYodGhpcy51c2VQb2xsaW5nKXt2YXIgcjt0aGlzLnBvc3QoKHI9e30s clthLktleXMuQ1JPU1NfV0lORE9XX0hBTkRTSEFLRV9LRVldPXQscikpLHNldFRp bWVvdXQoZnVuY3Rpb24oKXtuLmNvbm5lY3Rpb25Fc3RhYmxpc2hlZHx8ZS5vbkhh bmRzaGFrZVRpbWVvdXQuY2FsbChuKX0saSpvKX1lbHNlIWZ1bmN0aW9uKCl7dmFy IHI9byxzPWZ1bmN0aW9uIG8oKXt2YXIgcztyZXR1cm4gbi5jb25uZWN0aW9uRXN0 YWJsaXNoZWQ/KGNsZWFyVGltZW91dChuLl9jb25uZWN0aW9uVGltZW91dElkKSx2 b2lkKG4uX2Nvbm5lY3Rpb25UaW1lb3V0SWQ9bnVsbCkpOnI8PTA/dm9pZCBlLm9u SGFuZHNoYWtlVGltZW91dC5jYWxsKG4pOihuLnBvc3QoKHM9e30sc1thLktleXMu Q1JPU1NfV0lORE9XX0hBTkRTSEFLRV9LRVldPXQscykpLHItLSxjbGVhclRpbWVv dXQobi5fY29ubmVjdGlvblRpbWVvdXRJZCksdm9pZChuLl9jb25uZWN0aW9uVGlt ZW91dElkPXNldFRpbWVvdXQobyxpKSkpfTtuLl9jb25uZWN0aW9uVGltZW91dElk PXNldFRpbWVvdXQocyxpKX0oKX0sbGlzdGVuRm9yQWNrOmZ1bmN0aW9uKCl7dGhp cy51c2VQb2xsaW5nP2UucG9sbEZvckFjay5jYWxsKHRoaXMpOih0aGlzLl9oYW5k c2hha2VBY2tMaXN0ZW5lcj1lLmhhbmRzaGFrZUFja0xpc3RlbmVyLmJpbmQodGhp cyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5jb21tdW5pY2F0aW9uTWVk aXVtPT09YS5Db21tdW5pY2F0aW9uTWVkaWEuQ1JPU1NfV0lORE9XX0xPQ0FMU1RP UkFHRT8ic3RvcmFnZSI6Im1lc3NhZ2UiLHRoaXMuX2hhbmRzaGFrZUFja0xpc3Rl bmVyKSl9fSl9KCk7dC5kZWZhdWx0PWksZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVu Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIGE9 big2MjUpLGk9ZnVuY3Rpb24oKXt2YXIgZT17YWNrOmZ1bmN0aW9uKCl7dGhpcy5w b3N0KHt9KX0saGFuZHNoYWtlTGlzdGVuZXI6ZnVuY3Rpb24odCl7dmFyIG49ZS5n ZXRIYW5kc2hha2VNZXNzYWdlLmNhbGwodGhpcyx0KTtpZihuKXtpZih0aGlzLmNv bm5lY3Rpb25Fc3RhYmxpc2hlZD0hMCx0aGlzLnRhcmdldD10P3Quc291cmNlOm51 bGwsdGhpcy50YXJnZXRPcmlnaW49blthLktleXMuQ1JPU1NfV0lORE9XX0hBTkRT SEFLRV9LRVldLCF0aGlzLnVzZVBvbGxpbmcpe3ZhciBpPXRoaXMuY29tbXVuaWNh dGlvbk1lZGl1bT09PWEuQ29tbXVuaWNhdGlvbk1lZGlhLkNST1NTX1dJTkRPV19M T0NBTFNUT1JBR0U/InN0b3JhZ2UiOiJtZXNzYWdlIjt3aW5kb3cucmVtb3ZlRXZl bnRMaXN0ZW5lcihpLHRoaXMuX2hhbmRzaGFrZUxpc3RlbmVyKSx3aW5kb3cuYWRk RXZlbnRMaXN0ZW5lcihpLHRoaXMucHJveHlMaXN0ZW5lcil9dGhpcy5lbWl0KCJj b25uZWN0aW9uZXN0YWJsaXNoZWQiLHttZXNzYWdlOiEwfSksZS5hY2suY2FsbCh0 aGlzKX19LGdldEhhbmRzaGFrZU1lc3NhZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp cy5nZXRVbndyYXBwZWREYXRhKGUpLG49dC5tZXNzYWdlLGk9dC5yZWNpcGllbnQ7 aWYoIW4pcmV0dXJuIG51bGw7dmFyIG89ITE7cmV0dXJuIG89dGhpcy5jb21tdW5p Y2F0aW9uTWVkaXVtIT09YS5Db21tdW5pY2F0aW9uTWVkaWEuQ1JPU1NfV0lORE9X X1BPU1RNRVNTQUdFP3RoaXMuaXNJbml0aWF0b3ImJmk9PT1hLkFjdGl2aXR5RGVz Y3JpcHRvcnMuQ1JPU1NfV0lORE9XX0lOSVRJQVRPUnx8IXRoaXMuaXNJbml0aWF0 b3ImJmk9PT1hLkFjdGl2aXR5RGVzY3JpcHRvcnMuQ1JPU1NfV0lORE9XX0pPSU5F UjohIWUuc291cmNlLG89byYmblthLktleXMuQ1JPU1NfV0lORE9XX0hBTkRTSEFL RV9LRVldJiYhdGhpcy5jb25uZWN0aW9uRXN0YWJsaXNoZWQsbz9uOm51bGx9LHBv bGxGb3JIYW5kc2hha2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMuY29t bXVuaWNhdGlvbk1lZGl1bT09PWEuQ29tbXVuaWNhdGlvbk1lZGlhLkNST1NTX1dJ TkRPV19QT1NUTUVTU0FHRSl0aHJvdyBuZXcgRXJyb3IoIlBvbGxpbmcgbGlzdGVu ZXJzIGNhbm5vdCBiZSB1c2VkIHdpdGggcG9zdE1lc3NhZ2UgY29tbXVuaWNhdG9y cy4iKTtpZighdGhpcy5faGFuZHNoYWtlUG9sbFRpbWVvdXRJZCl7dmFyIG49ZnVu Y3Rpb24gbigpe2UuaGFuZHNoYWtlTGlzdGVuZXIuY2FsbCh0KSxjbGVhclRpbWVv dXQodC5faGFuZHNoYWtlUG9sbFRpbWVvdXRJZCksdC5jb25uZWN0aW9uRXN0YWJs aXNoZWQ/KGRlbGV0ZSB0Ll9oYW5kc2hha2VQb2xsVGltZW91dElkLHQucG9sbEZv ck1lc3NhZ2VzKCkpOnQuX2hhbmRzaGFrZVBvbGxUaW1lb3V0SWQ9c2V0VGltZW91 dChuLDUwMCl9O3RoaXMuX2hhbmRzaGFrZVBvbGxUaW1lb3V0SWQ9c2V0VGltZW91 dChuLDApfX19O3JldHVybiBPYmplY3QuZnJlZXplKHtsaXN0ZW5Gb3JIYW5kc2hh a2U6ZnVuY3Rpb24oKXt0aGlzLnVzZVBvbGxpbmc/ZS5wb2xsRm9ySGFuZHNoYWtl LmNhbGwodGhpcyk6KHRoaXMuX2hhbmRzaGFrZUxpc3RlbmVyPWUuaGFuZHNoYWtl TGlzdGVuZXIuYmluZCh0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih0aGlz LmNvbW11bmljYXRpb25NZWRpdW09PT1hLkNvbW11bmljYXRpb25NZWRpYS5DUk9T U19XSU5ET1dfTE9DQUxTVE9SQUdFPyJzdG9yYWdlIjoibWVzc2FnZSIsdGhpcy5f aGFuZHNoYWtlTGlzdGVuZXIpKX19KX0oKTt0LmRlZmF1bHQ9aSxlLmV4cG9ydHM9 dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuX19lc01v ZHVsZT0hMDt2YXIgYT1uKDYyNSksaT1PYmplY3QuZnJlZXplKHtwb3N0OmZ1bmN0 aW9uKGUpe3ZhciB0LG49dGhpcy50YXJnZXQsYT10aGlzLnRhcmdldE9yaWdpbixp PXRoaXMuZXZlbnROYW1lc3BhY2U7aWYoIW58fCJzdHJpbmciIT10eXBlb2YgYXx8 IioiPT09YSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qgc2VjdXJlbHkgcG9z dCBhIG1lc3NhZ2Ugd2l0aCB0aGUgb3B0aW9ucyBwcm92aWRlZCB0byB0aGlzIGNv bW11bmljYXRvci4gIisoIihSZWxldmFudCBvcHRpb25zOiB7IHRhcmdldDogIitu KyIsIHRhcmdldE9yaWdpbjogIithKyIsIGNvbW11bmljYXRpb25NZWRpdW06IENS T1NTX1dJTkRPV19QT1NUTUVTU0FHRSB9KS4iKSk7dmFyIG89KHQ9e30sdFtpXT17 bWVzc2FnZTplfSx0KTtuLnBvc3RNZXNzYWdlKG8sYSl9LGdldFVud3JhcHBlZERh dGE6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLG49dm9pZCAwPT09dD97fTp0O3Jl dHVybiBuW3RoaXMuZXZlbnROYW1lc3BhY2VdfHx7fX0sZ2V0UHJveHlNZXNzYWdl OmZ1bmN0aW9uKGUpe2lmKGUub3JpZ2luIT09dGhpcy50YXJnZXRPcmlnaW4pcmV0 dXJuIG51bGw7dmFyIHQ9dGhpcy5nZXRVbndyYXBwZWREYXRhKGUpLG49dC5tZXNz YWdlO3JldHVybiBuW2EuS2V5cy5DUk9TU19XSU5ET1dfSEFORFNIQUtFX0tFWV0/ bnVsbDpufX0pO3QuZGVmYXVsdD1pLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0 aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYm ZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBp PW4oNSksbz1hKGkpO3QuZGVmYXVsdD17SUNPTl9SRU5ERVJfSU5DUkVNRU5UOjYw LE5VTV9JQ09OU19UT19JTklUSUFMTFlfUkVOREVSOjQwLE1BWF9UT1BfU0VSVklD RVM6by5kZWZhdWx0KCJtb2IiKT84OjEwLENST1NTX1dJTkRPV19OQU1FU1BBQ0U6 ImFkZHRoaXMuZXhwYW5kZWQubWVzc2FnZXMifSxlLmV4cG9ydHM9dC5kZWZhdWx0 fSxmdW5jdGlvbihlLHQsbil7dmFyIGE9big1ODApO2UuZXhwb3J0cz1mdW5jdGlv bihlLHQsbil7dmFyIGk7aWYod2luZG93LkNsb3VkZmxhcmVBcHBzJiZ3aW5kb3cu Q2xvdWRmbGFyZUFwcHMucHJldmlldyl7dmFyIG89d2luZG93LkNsb3VkZmxhcmVB cHBzLnByZXZpZXcub3Blbi5kaXJlY3Q7aT1uP28uY2FsbCh3aW5kb3csZSx0LG4p Om8uY2FsbCh3aW5kb3csZSx0LG4pfWVsc2UgaT1uP3dpbmRvdy5vcGVuKGUsdCxu KTp3aW5kb3cub3BlbihlLHQpO3JldHVybiBhLnB1c2goaSksaX19LGZ1bmN0aW9u KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5f X2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJu IGZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09 YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXSxpPWEubWVzc2FnZTtpZihpKXt2 YXIgbz1pLmNvZGUscz1pLm1lbnVTaGFyZSx1PWkubWVudUNvbmZpZyxsPWkubWVu dVR5cGU7byYmcyYmdSYmKCJmb2xsb3ciIT09bCYmcC5pbmRleE9mKG8pIT09LTE/ KGUudGVsbFRhcmdldENsb3NlV2luZG93KCksc2V0VGltZW91dChmdW5jdGlvbigp e2MuZGVmYXVsdChvLHIuZGVmYXVsdCghMCx7fSxzLHUse2RlZmF1bHRTaGFyZVRv TmV3VGFiOiEwfSkpfSwxNikpOihkLmRlZmF1bHQobywiZm9sbG93Ij09PWw/MTow LHMsdSksdCYmdC5maXJlKCJhZGR0aGlzLm1lbnUuIitsLG4sci5kZWZhdWx0KHt9 LHMse3NlcnZpY2U6byx1cmw6cy51cmx8fHMuZm9sbG93VXJsfSkpLCJsaW5rIiE9 PW8mJiJtYWlsdG8iIT09byYmZi5kZWZhdWx0KG8scyx1LGwsZSkpLHQmJnQuZmly ZSgiYWRkdGhpcy5leHBhbmRlZC5tb25pdG9yLnNoYXJlIikpfX19dC5fX2VzTW9k dWxlPSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oOCkscj1hKG8pLHM9big2MzMpLGQ9 YShzKSx1PW4oNTQ3KSxjPWEodSksbD1uKDY1MCksZj1hKGwpLHA9WyJhZGR0aGlz IiwibW9yZSIsImJrbW9yZSIsImNvbXBhY3QiLCJleHBhbmRlZCIsImhvdXp6Iiwi dGhlZmFuY3kiLCJwaW50ZXJlc3QiLCJwaW50ZXJlc3Rfc2hhcmUiLCJmYXZvcml0 ZXMiLCJwcmludCIsIndlaGVhcnRpdCIsImJhaWR1Il07ZS5leHBvcnRzPXQuZGVm YXVsdH0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNTU3KSxpPW4oNTkpLm1ha2VD VUlELG89big1NTQpLHI9big1NTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixz LGQpe3ZhciB1LGM9cihuKXx8e30sbD1yKHMpfHx7fTtjLnhpZHx8KGMueGlkPWko KSksbC5oZGw9MSx1PWEoZSx0LGMsbCksbyh1LDEpLGR8fF9hdGUuc2hhcmUubm90 aWZ5KGUsYyxzLG51bGwsdCl9fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm dW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoL1smPD4iJ1wvXS9nLGZ1bmN0 aW9uKGUpe3JldHVybiBhW2VdfSl9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1u O3ZhciBhPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm cXVvdDsiLCInIjoiJiN4Mjc7IiwiLyI6IiYjeDJGOyJ9O2UuZXhwb3J0cz10LmRl ZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDYzNik7InN0cmluZyI9PXR5 cGVvZiBhJiYoYT1bW2UuaWQsYSwiIl1dKTtuKDM0MSkoYSx7fSk7YS5sb2NhbHMm JihlLmV4cG9ydHM9YS5sb2NhbHMpfSxmdW5jdGlvbihlLHQsbil7dD1lLmV4cG9y dHM9bigzNDApKCksdC5wdXNoKFtlLmlkLCJodG1sLmF0LWV4cGFuZGVkLW1lbnUt bm9zY3JvbGx7b3ZlcmZsb3cteDp2aXNpYmxlO292ZXJmbG93LXk6dmlzaWJsZX1i b2R5LmF0LWV4cGFuZGVkLW1lbnUtbm9zY3JvbGx7b3ZlcmZsb3c6aGlkZGVufUBr ZXlmcmFtZXMgZWxsaXBzZXN7dG97d2lkdGg6MS4yNWVtfX0jYXQtZXhwYW5kZWQt bWVudS1ob3N0ICp7Ym94LXNpemluZzpib3JkZXItYm94fSNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtaGlkZGVuLCNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtdG9wLXNlcnZpY2VzLWhlYWRlci5h dC1leHBhbmRlZC1tZW51LWhpZGRlbntkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpo aWRkZW59I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5kZWQtbWVudS10 aXRsZSwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1icmFuZGluZy1sb2dvLCNh dC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWNvcHktbGluay1yZXN1bHQtbWVzc2Fn ZSBzcGFuLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWNvcHktbGluay1zaGFy ZS1wYWdlLXVybCwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1t ZW51LCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtYnV0 dG9uLWxhYmVsLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1l bnUtZW1haWwtZGlzY2xhaW1lciwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1l eHBhbmRlZC1tZW51LWxvYWQtYnRuLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWV4cGFuZGVkLW1lbnUtcGFnZS10aXRsZSwjYXQtZXhwYW5kZWQtbWVudS1ob3N0 IC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdXJsLCNhdC1leHBhbmRlZC1tZW51LWhv c3QgLmF0LWV4cGFuZGVkLW1lbnUtcHJpdmFjeS1saW5rLCNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWxhYmVsLWNvbnRlbnQs I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10b3Atc2Vy dmljZXMtaGVhZGVye2ZvbnQtZmFtaWx5OmhlbHZldGljYSBuZXVlLGhlbHZldGlj YSxhcmlhbCxzYW5zLXNlcmlmfSNhdC1leHBhbmRlZC1tZW51LWhvc3Qgc3ZnIHNw YW57b3BhY2l0eTowO291dGxpbmU6MDt2aXNpYmlsaXR5OmhpZGRlbn0jYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5sb2FkaW5nLWNvbnRhaW5lcntkaXNwbGF5OnRhYmxl O2hlaWdodDo3NXB0O3dpZHRoOjEwMCV9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAu bG9hZGluZy1jb250YWluZXIgLmxvYWRpbmctc3Bpbm5lcntiYWNrZ3JvdW5kOnVy bCgiK24oNjM3KSsnKSA1MCUgNTAlIG5vLXJlcGVhdDtkaXNwbGF5OnRhYmxlLWNl bGw7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0 IC5hdC1leHBhbmRlZC1tZW51LW1hc2t7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAs MCwwLC45KTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2xlZnQ6MDtib3R0 b206MDt6LWluZGV4OjE2Nzc3MjcwfSNhdC1leHBhbmRlZC1tZW51LWhvc3QuYXQt ZXhwYW5kZWQtbWVudS1zdGFuZGFsb25lIC5hdC1leHBhbmRlZC1tZW51LW1hc2t7 YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44OCl9I2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6 MTAlO2xlZnQ6NTAlO3dpZHRoOjEwMCU7bWFyZ2luLWxlZnQ6LTIwcGM7b3ZlcmZs b3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3BhZGRpbmctdG9wOjQwcHg7ei1p bmRleDoxNjc3NzI3MTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDp0cmFuc3Bh cmVudH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0LmF0LWV4cGFuZGVkLW1lbnUtc2Fm YXJpIC5hdC1leHBhbmRlZC1tZW51e292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLXRv cDppbml0aWFsfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1l bnUtZmFkZXt3aWR0aDoxMDAlO2hlaWdodDoxNTFweDtwb3NpdGlvbjpmaXhlZDti b3R0b206MDtsZWZ0OjA7ei1pbmRleDoxNjc3NzI3Mjtwb2ludGVyLWV2ZW50czpu b25lO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3Bh cmVudCAwJSwjMDAwIDEwMCUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9y bS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj1cJyMwMDAwMDAwMFwn LGVuZENvbG9yc3RyPVwnI2E2MDAwMDAwXCcsR3JhZGllbnRUeXBlPTApfSNhdC1l eHBhbmRlZC1tZW51LWhvc3QgLmF0LWJyYW5kaW5nLWluZm8uYXQtZXhwYW5kZWQt bWVudS1icmFuZGluZywjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1icmFuZGlu Zy1sb2dvLmF0LWV4cGFuZGVkLW1lbnUtYnJhbmRpbmd7Y3Vyc29yOnBvaW50ZXI7 dGV4dC1kZWNvcmF0aW9uOm5vbmU7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MjBweDti b3R0b206MjBweDt6LWluZGV4OjE2Nzc3MjczfSNhdC1leHBhbmRlZC1tZW51LWhv c3QgLmF0LWJyYW5kaW5nLWluZm8uYXQtZXhwYW5kZWQtbWVudS1icmFuZGluZ3ti b3JkZXI6MXB4IHNvbGlkICNjY2M7Y29sb3I6I2NjY30jYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1icmFuZGluZy1pbmZvLmF0LWV4cGFuZGVkLW1lbnUtYnJhbmRp bmc6YmVmb3Jle2NvbG9yOiNjY2N9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQt ZXhwYW5kZWQtbWVudS1wcmltYXJ5LWFjdGlvbi1idG57YmFja2dyb3VuZC1jb2xv cjojMDI5NWZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NHB4O2NvbG9yOiNm ZmY7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztmb250LXNpemU6MXBjO21h cmdpbjoxNXB4IGF1dG8gMDtwYWRkaW5nOjE1cHggMzVweDt0cmFuc2l0aW9uOmJh Y2tncm91bmQtY29sb3IgLjJzIGVhc2UtaW59I2F0LWV4cGFuZGVkLW1lbnUtaG9z dCAuYXQtZXhwYW5kZWQtbWVudS1wcmltYXJ5LWFjdGlvbi1idG46aG92ZXJ7YmFj a2dyb3VuZC1jb2xvcjojMDA3OGNlfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWV4cGFuZGVkLW1lbnUtY2xvc2V7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MjBweDt0 b3A6MjBweDt3aWR0aDozMHB4O2hlaWdodDozMHB4O21hcmdpbjowO3BhZGRpbmc6 MDt6LWluZGV4OjE2Nzc3Mjc0O2JhY2tncm91bmQ6bm9uZTtiYWNrZ3JvdW5kLWNv bG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo1MCU7Y29sb3I6IzAw MDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMXB4O2Zv bnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDpub3JtYWw7Y3Vyc29yOnBvaW50ZXI7 dHJhbnNpdGlvbjphbGwgLjRzIGVhc2V9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAu YXQtZXhwYW5kZWQtbWVudS1jbG9zZSBzcGFue2ZvbnQtZmFtaWx5OmFyaWFsLHNh bnMtc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MDt2ZXJ0aWNhbC1h bGlnbjppbml0aWFsfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVk LW1lbnUtY2xvc2U6YWZ0ZXJ7Y29udGVudDpcJ1wnO2Rpc3BsYXk6aW5saW5lLWJs b2NrO2hlaWdodDoyMnB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFu ZGVkLW1lbnUtY2xvc2U6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNjY2O2NvbG9y OiNmZmZ9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5kZWQtbWVudS1o ZCwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWZ0e3Rl eHQtYWxpZ246Y2VudGVyfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFu ZGVkLW1lbnUtaGR7ZGlzcGxheTppbmxpbmUtYmxvY2t9I2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1mdHttYXJnaW46LTkwcHggMzVweCAw O3BhZGRpbmctYm90dG9tOjc1cHQ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NTc1 cHg7ei1pbmRleDozfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVk LW1lbnUtZnQgLmF0LWV4cGFuZGVkLW1lbnUtZnQtbG9hZGluZ3tjb2xvcjojZmZm O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9I2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1mdCAuYXQtZXhwYW5kZWQtbWVudS1m dC1sb2FkaW5nOmFmdGVye2FuaW1hdGlvbjplbGxpcHNlcyAxcyBzdGVwcyg0LCBl bmQpIDBzIGluZmluaXRlIGZvcndhcmRzO2NvbnRlbnQ6IiBcXDIwMjYiO2Rpc3Bs YXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0 ZTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207d2lkdGg6MH0jYXQtZXhwYW5kZWQtbWVu dS1ob3N0ICNhdC1leHBhbmRlZC1tZW51LWJke3BhZGRpbmc6MjBweCAwO3RleHQt YWxpZ246Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlfSNhdC1leHBhbmRlZC1tZW51 LWhvc3QuYXQtZXhwYW5kZWQtbWVudS1zYWZhcmkgI2F0LWV4cGFuZGVkLW1lbnUt YmR7b3ZlcmZsb3cteTphdXRvfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4 cGFuZGVkLW1lbnUtdGl0bGV7ZGlzcGxheTpibG9jaztmb250LXNpemU6NjBweDtm b250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6NjBweDtjb2xvcjojZmZmO21hcmdp bjowIDM1cHggMzBweDtwYWRkaW5nOjA7d2lkdGg6NTc1cHh9I2F0LWV4cGFuZGVk LW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1wYWdlLXRpdGxle2ZvbnQtc2l6 ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDttYXJnaW46MCAzNXB4fSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFnZS10aXRsZSwjYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdXJse2Rpc3Bs YXk6YmxvY2s7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjojZWVlY2VjO292ZXJmbG93 OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BhZGRpbmc6MDt3aGl0ZS1z cGFjZTpub3dyYXA7d2lkdGg6NTc1cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAu YXQtZXhwYW5kZWQtbWVudS1wYWdlLXVybHtmb250LXNpemU6MTNweDtmb250LXdl aWdodDozMDA7bWFyZ2luOjAgMzVweCAyMHB4O29wYWNpdHk6LjZ9I2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10b3Atc2VydmljZXMtaGVh ZGVye2NvbG9yOiNlZWVjZWM7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTNweDtm b250LXdlaWdodDozMDA7bGV0dGVyLXNwYWNpbmc6MnB4O21hcmdpbjowIDAgMzBw eDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7d2lkdGg6NDBwY30jYXQtZXhwYW5k ZWQtbWVudS1ob3N0IC5hdC1icmFuZGluZy1sb2dvLmF0LWV4cGFuZGVkLW1lbnUt YnJhbmRpbmcgLmF0LWJyYW5kaW5nLWFkZHRoaXN7Y29sb3I6I2ZmZjtmb250LXNp emU6OXB0fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWJyYW5kaW5nLWxvZ28u YXQtZXhwYW5kZWQtbWVudS1icmFuZGluZyAuYXQtYnJhbmRpbmctaWNvbntiYWNr Z3JvdW5kLXNpemU6Y292ZXI7aGVpZ2h0OjEzcHg7d2lkdGg6MTNweH0jYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1icmFuZGluZy1sb2dvIC5hdC1icmFuZGluZy1p Y29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjRweDttYXJnaW4t cmlnaHQ6M3B4O21hcmdpbi1ib3R0b206LTFweDtiYWNrZ3JvdW5kLXJlcGVhdDpu by1yZXBlYXQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jh c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQW9BQUFBS0NBTUFBQUM2N0Qr UEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2Ns bFBBQUFBQVpRVEZSRi8vLy8rR2xOVWtjYzFRQUFBQjFKUkVGVWVOcGlZSVFEQmpR bUF3TW1rd0VNMEpuWTFXSXhGeURBQUJHZUFGRXVkaVpzQUFBQUFFbEZUa1N1UW1D QyIpfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcHJp dmFjeS1saW5re3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyMHB4O2ZvbnQtc2l6ZTo5 cHQ7bGVmdDoyMHB4O3otaW5kZXg6MTY3NzcyNzN9I2F0LWV4cGFuZGVkLW1lbnUt aG9zdCAuYXQtZXhwYW5kZWQtbWVudS1wcml2YWN5LWxpbmsgYXt0ZXh0LWRlY29y YXRpb246bm9uZX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1t ZW51LXByaXZhY3ktbGluayBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxp bmV9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1lbWFp bC1kaXNjbGFpbWVyIGEsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5k ZWQtbWVudS1wcml2YWN5LWxpbmsgYXtjb2xvcjojZWVlY2VjfSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtbm90aWZpY2F0aW9uOmJlZm9y ZXtiYWNrZ3JvdW5kOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4y WnlCMlpYSnphVzl1UFNJeExqRWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6 TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkz ZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaUlIZHBaSFJvUFNJek1pSWdhR1Zw WjJoMFBTSXpNaUlnZG1sbGQwSnZlRDBpTUNBd0lETXlJRE15SWo0TkNqeHdZWFJv SUdacGJHdzlJaU5tWm1ZaUlHUTlJazB4TXk0M01UUWdNaTR5T0RaeE15NDNNekln TUNBMkxqZzROQ0F4TGpnek9YUTBMams1TVNBMExqazVNU0F4TGpnek9TQTJMamc0 TkMweExqZ3pPU0EyTGpnNE5DMDBMams1TVNBMExqazVNUzAyTGpnNE5DQXhMamd6 T1MwMkxqZzROQzB4TGpnek9TMDBMams1TVMwMExqazVNUzB4TGpnek9TMDJMamc0 TkNBeExqZ3pPUzAyTGpnNE5DQTBMams1TVMwMExqazVNU0EyTGpnNE5DMHhMamd6 T1hwTk1UWWdNalF1TlRVMGRpMHpMak01TTNFd0xUQXVNalV0TUM0eE5qRXRNQzQw TW5RdE1DNHpPVE10TUM0eE4yZ3RNeTQwTWpseExUQXVNak15SURBdE1DNDBNVEVn TUM0eE56bDBMVEF1TVRjNUlEQXVOREV4ZGpNdU16a3pjVEFnTUM0eU16SWdNQzR4 TnprZ01DNDBNVEYwTUM0ME1URWdNQzR4Tnpsb015NDBNamx4TUM0eU16SWdNQ0F3 TGpNNU15MHdMakUzZERBdU1UWXhMVEF1TkRKNlRURTFMamsyTkNBeE9DNDBNVEZz TUM0ek1qRXRNVEV1TURnNWNUQXRNQzR5TVRRdE1DNHhOemt0TUM0ek1qRXRNQzR4 TnprdE1DNHhORE10TUM0ME1qa3RNQzR4TkROb0xUTXVPVEk1Y1Mwd0xqSTFJREF0 TUM0ME1qa2dNQzR4TkRNdE1DNHhOemtnTUM0eE1EY3RNQzR4TnprZ01DNHpNakZz TUM0ek1EUWdNVEV1TURnNWNUQWdNQzR4TnprZ01DNHhOemtnTUM0ek1UTjBNQzQw TWprZ01DNHhNelJvTXk0ek1EUnhNQzR5TlNBd0lEQXVOREl0TUM0eE16UjBNQzR4 T0RndE1DNHpNVE42SWo0OEwzQmhkR2crRFFvOEwzTjJaejQ9Iik7YmFja2dyb3Vu ZC1zaXplOmNvbnRhaW47Ym9yZGVyLXJhZGl1czo1MCU7Y29udGVudDoiIjtkaXNw bGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJp ZjtoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoyMHB4O21hcmdpbjo1cHggNXB4IDVw eCAxMHB4O3BhZGRpbmc6MDt3aWR0aDoyMHB4fSNhdC1leHBhbmRlZC1tZW51LWhv c3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoe3Bvc2l0aW9uOnJlbGF0aXZlO292 ZXJmbG93OmhpZGRlbjt3aWR0aDo1NzVweDttYXJnaW46MCAzNXB4O2hlaWdodDo2 NXB4O21heC1oZWlnaHQ6NjVweDtsaW5lLWhlaWdodDo2NXB4fSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWlucHV0W3R5cGU9 dGV4dF17ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OmluaGVyaXQ7d2lkdGg6 MTAwJTtwYWRkaW5nOjA7bWFyZ2luOjAgMCAwIDFweDt2ZXJ0aWNhbC1hbGlnbjpt aWRkbGU7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjBweDtiYWNrZ3JvdW5k OjAgMDtvdXRsaW5lOjA7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2NvbG9y OiNmZmZ9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1z ZWFyY2gtaW5wdXRbdHlwZT10ZXh0XTo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZTto ZWlnaHQ6MDt3aWR0aDowfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFu ZGVkLW1lbnUtc2VydmljZS1maWx0ZXIuYXQtZXhwYW5kZWQtbWVudS1zZWFyY2gt aW5wdXRbdHlwZT10ZXh0XTpmb2N1c3tjb2xvcjojZWVlY2VjO2JvcmRlci1jb2xv cjp0cmFuc3BhcmVudDtvdXRsaW5lOjA7Ym94LXNoYWRvdzpub25lOy13ZWJraXQt Ym94LXNoYWRvdzpub25lOy1tb3otYm94LXNoYWRvdzpub25lfSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWxhYmVse2Rpc3Bs YXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTt0ZXh0LWFsaWdu OmxlZnQ7aGVpZ2h0OjU1cHg7bWF4LWhlaWdodDo1NXB4O2xpbmUtaGVpZ2h0OjU1 cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfSNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWxhYmVsLWNvbnRlbnR7 ZGlzcGxheTpibG9jaztmb250LXNpemU6MTlweDtmb250LXdlaWdodDozMDA7Y29s b3I6I2VlZWNlYztvcGFjaXR5OjE7LW1vei11c2VyLXNlbGVjdDpub25lOy13ZWJr aXQtdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0 aW9uOmFsbCAuNHMgZWFzZX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBh bmRlZC1tZW51LXNlYXJjaC1maWxsZWQgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNo LWxhYmVsIC5hdC1leHBhbmRlZC1tZW51LXNlYXJjaC1sYWJlbC1jb250ZW50LCNh dC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWlu cHV0W3R5cGU9dGV4dF06Zm9jdXMrLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWxh YmVsIC5hdC1leHBhbmRlZC1tZW51LXNlYXJjaC1sYWJlbC1jb250ZW50e29wYWNp dHk6LjU7Zm9udC1zaXplOjlwdDtsaW5lLWhlaWdodDo5cHR9I2F0LWV4cGFuZGVk LW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZWFyY2gtbGFiZWw6YWZ0ZXIs I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZWFyY2gt bGFiZWw6YmVmb3Jle2NvbnRlbnQ6XCdcJztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6 MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6NTBweDtib3JkZXItYm90dG9tOjFw eCBzb2xpZCAjZWVlY2VjfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFu ZGVkLW1lbnUtc2VhcmNoLWxhYmVsOmFmdGVye2JvcmRlci1ib3R0b206MnB4IHNv bGlkICNlZWVjZWM7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCk7dHJh bnNpdGlvbjp0cmFuc2Zvcm0gLjNzfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWlucHV0OmZvY3VzKy5hdC1leHBhbmRlZC1t ZW51LXNlYXJjaC1sYWJlbDphZnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCww LDApfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2Vh cmNoLWljb257ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDow O3RvcDoyMHB4O3dpZHRoOjI1cHg7aGVpZ2h0OjI1cHg7bWFyZ2luLWxlZnQ6LTI5 cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3RleHQtYWxpZ246bGVmdDtmb250LXNp emU6MThweDtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7 YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQS9Qanh6ZG1jZ2FHVnBa MmgwUFNJek1uQjRJaUIyWlhKemFXOXVQU0l4TGpFaUlIWnBaWGRDYjNnOUlqQWdN Q0F6TWlBek1pSWdkMmxrZEdnOUlqTXljSGdpSUhodGJHNXpQU0pvZEhSd09pOHZk M2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjMnRsZEdOb1BTSm9k SFJ3T2k4dmQzZDNMbUp2YUdWdGFXRnVZMjlrYVc1bkxtTnZiUzl6YTJWMFkyZ3Zi bk1pSUhodGJHNXpPbmhzYVc1clBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhP VGs1TDNoc2FXNXJJajQ4ZEdsMGJHVXZQanhrWlhOakx6NDhaR1ZtY3k4K1BHY2da bWxzYkQwaWJtOXVaU0lnWm1sc2JDMXlkV3hsUFNKbGRtVnViMlJrSWlCcFpEMGlV R0ZuWlMweElpQnpkSEp2YTJVOUltNXZibVVpSUhOMGNtOXJaUzEzYVdSMGFEMGlN U0krUEdjZ1ptbHNiRDBpSXpreU9USTVNaUlnYVdROUltbGpiMjR0TVRFeExYTmxZ WEpqYUNJK1BIQmhkR2dnWkQwaVRURTVMalF5TnpFeE5qUXNNakV1TkRJM01URTJO Q0JETVRndU1ETTNNalE1TlN3eU1pNDBNVGMwT0RBeklERTJMak16TmpZMU1qSXNN ak1nTVRRdU5Td3lNeUJET1M0NE1EVTFOemt6T1N3eU15QTJMREU1TGpFNU5EUXlN RFlnTml3eE5DNDFJRU0yTERrdU9EQTFOVGM1TXprZ09TNDRNRFUxTnprek9TdzJJ REUwTGpVc05pQkRNVGt1TVRrME5ESXdOaXcySURJekxEa3VPREExTlRjNU16a2dN ak1zTVRRdU5TQkRNak1zTVRZdU16TTJOalV5TWlBeU1pNDBNVGMwT0RBekxERTRM akF6TnpJME9UVWdNakV1TkRJM01URTJOQ3d4T1M0ME1qY3hNVFkwSUV3eU55NHdN VEU1TVRjMkxESTFMakF4TVRreE56WWdRekkzTGpVMk1qRXhPRFlzTWpVdU5UWXlN VEU0TmlBeU55NDFOVGMxTXpFekxESTJMalEwTWpRMk9EY2dNamN1TURFeE56RTRO U3d5Tmk0NU9EZ3lPREUxSUV3eU5pNDVPRGd5T0RFMUxESTNMakF4TVRjeE9EVWdR ekkyTGpRME16ZzJORGdzTWpjdU5UVTJNVE0xTWlBeU5TNDFOVGMyTWpBMExESTNM alUxTnpZeU1EUWdNalV1TURFeE9URTNOaXd5Tnk0d01URTVNVGMySUV3eE9TNDBN amN4TVRZMExESXhMalF5TnpFeE5qUWdUREU1TGpReU56RXhOalFzTWpFdU5ESTNN VEUyTkNCYUlFMHhOQzQxTERJeElFTXhPQzR3T0RrNE5URXhMREl4SURJeExERTRM akE0T1RnMU1URWdNakVzTVRRdU5TQkRNakVzTVRBdU9URXdNVFE0T1NBeE9DNHdP RGs0TlRFeExEZ2dNVFF1TlN3NElFTXhNQzQ1TVRBeE5EZzVMRGdnT0N3eE1DNDVN VEF4TkRnNUlEZ3NNVFF1TlNCRE9Dd3hPQzR3T0RrNE5URXhJREV3TGpreE1ERTBP RGtzTWpFZ01UUXVOU3d5TVNCTU1UUXVOU3d5TVNCYUlpQnBaRDBpYzJWaGNtTm9J aTgrUEM5blBqd3ZaejQ4TDNOMlp6ND0pO2JhY2tncm91bmQtY29sb3I6dHJhbnNw YXJlbnQ7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6 ZToyNXB4IDI1cHg7LXdlYmtpdC1maWx0ZXI6YnJpZ2h0bmVzcygwKSBpbnZlcnQo MSk7ZmlsdGVyOmJyaWdodG5lc3MoMCkgaW52ZXJ0KDEpfSNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VydmljZS1saXN0e2xpc3Qtc3R5 bGUtdHlwZTpub25lO3BhZGRpbmc6MCAwIDExMHB4O21hcmdpbjowO3dpZHRoOjQw cGN9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2 aWNlLWxpc3QuYm9yZGVyLWJlZm9yZTpiZWZvcmV7Ym9yZGVyLXRvcDoxcHggc29s aWQgI2ZmZjtjb250ZW50OlwnXCc7ZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDo3 NXB0O21hcmdpbi10b3A6LTVwYztwYWRkaW5nLWJvdHRvbTo1MHB4O29wYWNpdHk6 LjQ7d2lkdGg6NDQwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5k ZWQtbWVudS1zZXJ2aWNlLWxpc3QgbGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9z aXRpb246cmVsYXRpdmU7d2lkdGg6ODRweDttaW4td2lkdGg6ODRweDttYXJnaW46 MCAxN3B4IDIwcHggMjJweDtvdXRsaW5lLWNvbG9yOiNlZWVjZWM7dmVydGljYWwt YWxpZ246dG9wfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1l bnUtc2VydmljZS1saXN0IGxpICp7b3V0bGluZS1jb2xvcjojZWVlY2VjfSNhdC1l eHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VydmljZS1saXN0 IGJ1dHRvbntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50 ZXI7cGFkZGluZzowO21hcmdpbjowO3dpZHRoOjg0cHh9I2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1idXR0b24tbGFiZWx7bGluZS1zcGFj aW5nOi41cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAudG9wLXNlcnZpY2UgLmF0 LWV4cGFuZGVkLW1lbnUtYnV0dG9uLWxhYmVse2ZvbnQtd2VpZ2h0OjQwMH0jYXQt ZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWxvYWR7cGFkZGlu ZzoxMHB4IDMwcHg7Zm9udC1zaXplOjE0cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJj YXNlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMDAwO2JvcmRlcjpub25l O2JvcmRlci1yYWRpdXM6MzBweDtjdXJzb3I6cG9pbnRlcn0jYXQtZXhwYW5kZWQt bWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51IC5hdC1pY29uLXdyYXBwZXJ7ZGlz cGxheTpibG9jazt3aWR0aDo4NHB4O2hlaWdodDo4NHB4O292ZXJmbG93OmhpZGRl bjtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZX0j YXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51IC5hdC1pY29u e2ZpbGw6I2ZmZn0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1t ZW51LXJvdW5kIC5hdC1pY29uLXdyYXBwZXJ7Ym9yZGVyLXJhZGl1czo1MCV9I2F0 LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBhbmRl ZC1tZW51LXJvdW5kIC5hdC1leHBhbmRlZC1tZW51LWJ1dHRvbjpmb2N1cywjYXQt ZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LmF0LWV4cGFuZGVk LW1lbnUtcm91bmQgW2NsYXNzXj1hdDN3aW5zdmNfXTpob3ZlciAuYXQtaWNvbi13 cmFwcGVye3RyYW5zZm9ybTpzY2FsZSgxLjA1LDEuMDUpfSNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcm91bmQgLmF0LWV4cGFuZGVkLW1l bnUtYnV0dG9uLWxhYmVse2Rpc3BsYXk6YmxvY2s7Y29sb3I6I2VlZWNlYztmb250 LXNpemU6MTRweDtmb250LXdlaWdodDozMDA7bGV0dGVyLXNwYWNpbmc6LjhweDtt YXJnaW4tdG9wOjVweDttYXJnaW4tYm90dG9tOjVweDtsaW5lLWhlaWdodDoxLjJ9 I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1yb3VuZCAu YXQtZXhwYW5kZWQtbWVudS1idXR0b24tbGFiZWw6aG92ZXJ7Y3Vyc29yOnBvaW50 ZXJ9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1yb3Vu ZCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QgYnV0dG9uLCNhdC1leHBh bmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcm91bmQgLmF0LWV4cGFu ZGVkLW1lbnUtc2VydmljZS1saXN0IGxpe292ZXJmbG93OnZpc2libGV9I2F0LWV4 cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBhbmRlZC1t ZW51LWVtYWlse2xlZnQ6MDttYXgtaGVpZ2h0OjEwMCU7bWFyZ2luLWxlZnQ6MDt0 ZXh0LWFsaWduOmNlbnRlcjt0b3A6MH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5h dC1leHBhbmRlZC1tZW51LmF0LWV4cGFuZGVkLW1lbnUtZW1haWwgI2F0LWV4cGFu ZGVkLW1lbnUtYmR7cGFkZGluZzowfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWV4cGFuZGVkLW1lbnUuYXQtZXhwYW5kZWQtbWVudS1lbWFpbCAjYXQtZXhwYW5k ZWQtbWVudS10aXRsZXtmb250LXNpemU6MnBjO2xpbmUtaGVpZ2h0OjJwY30jYXQt ZXhwYW5kZWQtbWVudS1ob3N0ICNhdC1leHBhbmRlZC1tZW51LWVtYWlsLWZvcm17 bWFyZ2luOjAgYXV0bzt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6NTc1cHh9I2F0LWV4 cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1lbWFpbC1maWVsZCBs YWJlbHtjb2xvcjojZDVkNGQyO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEzcHg7 Zm9udC13ZWlnaHQ6MjAwO2xldHRlci1zcGFjaW5nOi44cHg7bWFyZ2luLWJvdHRv bTo1cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1l bWFpbC1maWVsZCBpbnB1dCwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBh bmRlZC1tZW51LWVtYWlsLWZpZWxkIHRleHRhcmVhe2JvcmRlci1yYWRpdXM6M3B4 O2JvcmRlci13aWR0aDowO2NvbG9yOiMzMzM7ZGlzcGxheTpibG9jaztmb250LXNp emU6MXBjO21hcmdpbi1ib3R0b206MjBweDtvdXRsaW5lLWNvbG9yOiNlZWVjZWM7 cGFkZGluZzoxMHB4O3dpZHRoOjEwMCV9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAu YXQtZXhwYW5kZWQtbWVudS1lbWFpbC1maWVsZCBpbnB1dHtoZWlnaHQ6NDBweH0j YXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLWZp ZWxkIGlucHV0LmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtZXJyb3ItZmllbGR7YmFj a2dyb3VuZC1jb2xvcjojZmRkO2JvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7bWFy Z2luLWJvdHRvbTowfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVk LW1lbnUtZW1haWwtZmllbGQgdGV4dGFyZWF7aGVpZ2h0Ojc1cHR9I2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1lbWFpbC1lcnJvci1tZXNz YWdle2JhY2tncm91bmQtY29sb3I6I2ZmNTA1MDtib3JkZXItcmFkaXVzOjAgMCAz cHggM3B4O2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtc2l6ZToxM3B4 O2hlaWdodDozMHB4O21hcmdpbi1ib3R0b206MjBweH0jYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLWVycm9yLW1lc3NhZ2Ugc3Bh bntoZWlnaHQ6MzBweDtsZXR0ZXItc3BhY2luZzouNXB4O2xpbmUtaGVpZ2h0OjMw cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1lbWFp bC1lcnJvci1tZXNzYWdlIHNwYW46YmVmb3Jle2JhY2tncm91bmQ6dXJsKCJkYXRh OmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlI aHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VH MXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVH eHBibXNpSUhkcFpIUm9QU0l6TWlJZ2FHVnBaMmgwUFNJek1pSWdkbWxsZDBKdmVE MGlNQ0F3SURNeUlETXlJajROQ2p4d1lYUm9JR1pwYkd3OUlpTm1abVlpSUdROUlr MHhNeTQzTVRRZ01pNHlPRFp4TXk0M016SWdNQ0EyTGpnNE5DQXhMamd6T1hRMExq azVNU0EwTGprNU1TQXhMamd6T1NBMkxqZzROQzB4TGpnek9TQTJMamc0TkMwMExq azVNU0EwTGprNU1TMDJMamc0TkNBeExqZ3pPUzAyTGpnNE5DMHhMamd6T1MwMExq azVNUzAwTGprNU1TMHhMamd6T1MwMkxqZzROQ0F4TGpnek9TMDJMamc0TkNBMExq azVNUzAwTGprNU1TQTJMamc0TkMweExqZ3pPWHBOTVRZZ01qUXVOVFUwZGkwekxq TTVNM0V3TFRBdU1qVXRNQzR4TmpFdE1DNDBNblF0TUM0ek9UTXRNQzR4TjJndE15 NDBNamx4TFRBdU1qTXlJREF0TUM0ME1URWdNQzR4TnpsMExUQXVNVGM1SURBdU5E RXhkak11TXpremNUQWdNQzR5TXpJZ01DNHhOemtnTUM0ME1URjBNQzQwTVRFZ01D NHhOemxvTXk0ME1qbHhNQzR5TXpJZ01DQXdMak01TXkwd0xqRTNkREF1TVRZeExU QXVOREo2VFRFMUxqazJOQ0F4T0M0ME1URnNNQzR6TWpFdE1URXVNRGc1Y1RBdE1D NHlNVFF0TUM0eE56a3RNQzR6TWpFdE1DNHhOemt0TUM0eE5ETXRNQzQwTWprdE1D NHhORE5vTFRNdU9USTVjUzB3TGpJMUlEQXRNQzQwTWprZ01DNHhORE10TUM0eE56 a2dNQzR4TURjdE1DNHhOemtnTUM0ek1qRnNNQzR6TURRZ01URXVNRGc1Y1RBZ01D NHhOemtnTUM0eE56a2dNQzR6TVROME1DNDBNamtnTUM0eE16Um9NeTR6TURSeE1D NHlOU0F3SURBdU5ESXRNQzR4TXpSME1DNHhPRGd0TUM0ek1UTjZJajQ4TDNCaGRH ZytEUW84TDNOMlp6ND0iKTtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtib3JkZXIt cmFkaXVzOjUwJTtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtm b250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmO2hlaWdodDoyMHB4O2xpbmUtaGVp Z2h0OjIwcHg7bWFyZ2luOjVweCA1cHggNXB4IDEwcHg7cGFkZGluZzowO3dpZHRo OjIwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5kZWQtbWVudS1l bWFpbC1mb3JtPi5hdC1leHBhbmRlZC1tZW51LWVtYWlsLWVycm9yLW1lc3NhZ2V7 Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OmF1dG87bWFyZ2luLWJvdHRvbToxMHB4 O21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nOjEwcHggMTBweCAxMHB4IDQwcHg7cG9z aXRpb246cmVsYXRpdmV9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5k ZWQtbWVudS1lbWFpbC1mb3JtPi5hdC1leHBhbmRlZC1tZW51LWVtYWlsLWVycm9y LW1lc3NhZ2Ugc3BhbntoZWlnaHQ6YXV0bztsaW5lLWhlaWdodDoxLjZlbX0jYXQt ZXhwYW5kZWQtbWVudS1ob3N0ICNhdC1leHBhbmRlZC1tZW51LWVtYWlsLWZvcm0+ LmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtZXJyb3ItbWVzc2FnZSBzcGFuOmJlZm9y ZXtsZWZ0OjEwcHg7bWFyZ2luOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0 cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0 ICNhdC1leHBhbmRlZC1tZW51LWNhcHRjaGEtY29udGFpbmVye3RleHQtYWxpZ246 Y2VudGVyfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFuZGVkLW1lbnUt Y2FwdGNoYS1jb250YWluZXI+OmZpcnN0LWNoaWxke2Rpc3BsYXk6aW5saW5lLWJs b2NrO3RyYW5zZm9ybTpzY2FsZSgwLjgpfSNhdC1leHBhbmRlZC1tZW51LWhvc3Qg LmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtYnRue2JhY2tncm91bmQtY29sb3I6IzAy OTVmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjRweDtjb2xvcjojZmZmO2N1 cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjFwYzttYXJnaW46 MTVweCBhdXRvIDA7cGFkZGluZzoxNXB4IDM1cHg7dHJhbnNpdGlvbjpiYWNrZ3Jv dW5kLWNvbG9yIC4ycyBlYXNlLWlufSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWV4cGFuZGVkLW1lbnUtZW1haWwtYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6 IzAwNzhjZX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51 LWVtYWlsLW90aGVye21hcmdpbjoyMHB4IGF1dG8gNDBweDtwYWRkaW5nLWJvdHRv bToyMHB4O3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjU3NXB4fSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtb3RoZXIgcHtjb2xv cjojZWVlY2VjO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjMwMH0jYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLXNlcnZpY2Vz e2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0jYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLXNlcnZpY2Vz IGxpe2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdo dDoycGM7bWFyZ2luOjAgNHB4O292ZXJmbG93OmhpZGRlbjt3aWR0aDoycGN9I2F0 LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1lbWFpbC1zZXJ2 aWNlcyBsaSBzcGFue2Rpc3BsYXk6bm9uZX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0 IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLXNlcnZpY2VzIC5hdC1leHBhbmRlZC1t ZW51LWJ1dHRvbntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBv aW50ZXI7aGVpZ2h0OjJwYztwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MnBjfSNh dC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtc2Vy dmljZXMgLmF0LWljb24td3JhcHBlcntib3JkZXItcmFkaXVzOjRweH0jYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLXNlcnZpY2Vz IHN2Z3tkaXNwbGF5OmJsb2NrfSNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4 cGFuZGVkLW1lbnUtZW1haWwtc2VudHtsZWZ0OjA7bWFyZ2luLWxlZnQ6MDtwYWRk aW5nLXRvcDowO3Bvc2l0aW9uOmZpeGVkO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5z bGF0ZVkoLTUwJSl9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5kZWQt bWVudS1lbWFpbC1zZW50IC5hdC1leHBhbmRlZC1tZW51LWVtYWlsLXN1Y2Nlc3Mt Y29udGFpbmVye3RleHQtYWxpZ246Y2VudGVyfSNhdC1leHBhbmRlZC1tZW51LWhv c3QgI2F0LWV4cGFuZGVkLW1lbnUtZW1haWwtc2VudCAuYXQtZXhwYW5kZWQtbWVu dS1zZXJ2aWNlLWxpc3R7bWFyZ2luOjAgYXV0b30jYXQtZXhwYW5kZWQtbWVudS1o b3N0ICNhdC1leHBhbmRlZC1tZW51LWVtYWlsLXNlbnQgLmF0LWV4cGFuZGVkLW1l bnUtYnV0dG9uLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFuZGVkLW1l bnUtZW1haWwtc2VudCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QgbGl7 aGVpZ2h0Ojg0cHg7d2lkdGg6ODRweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0ICNh dC1leHBhbmRlZC1tZW51LWVtYWlsLXNlbnQgLmF0LWV4cGFuZGVkLW1lbnUtYnV0 dG9uLWxhYmVse3BhZGRpbmctdG9wOjVweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0 ICNhdC1leHBhbmRlZC1tZW51LWVtYWlsLXNlbnQgLmF0LWljb24td3JhcHBlcntv dmVyZmxvdzpoaWRkZW59I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAjYXQtZXhwYW5k ZWQtbWVudS1lbWFpbC1zZW50IC5hdC1pY29uLXdyYXBwZXIgc3BhbntvcGFjaXR5 OjB9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1lbWFp bC1zdWNjZXNzLW1lc3NhZ2V7Y29sb3I6I2ZmZjtkaXNwbGF5OmJsb2NrO2ZvbnQt c2l6ZTozNnB4O2ZvbnQtd2VpZ2h0OjMwMDtwYWRkaW5nLWJvdHRvbTo0MHB4fSNh dC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtZGlz Y2xhaW1lcntjb2xvcjojYmViNmI2O2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjlw dDt0ZXh0LWFsaWduOmNlbnRlcn0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1l eHBhbmRlZC1tZW51LWVtYWlsLWRpc2NsYWltZXIgc3BhbntkaXNwbGF5OmJsb2Nr O21hcmdpbi10b3A6MjBweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBh bmRlZC1tZW51LWVtYWlsLWRpc2NsYWltZXIgYXtjb2xvcjojYmViNmI2fSNhdC1l eHBhbmRlZC1tZW51LWhvc3QgLmxvYWRpbmctY29udGFpbmVyLmxvYWRpbmctY29u dGFpbmVyLWFzLW92ZXJsYXl7YmFja2dyb3VuZDpyZ2JhKDUxLDUxLDUxLC4zKTti b3R0b206MDtkaXNwbGF5OmJsb2NrO2hlaWdodDphdXRvO2xlZnQ6MDtwb3NpdGlv bjpmaXhlZDtyaWdodDowO3RvcDowO3otaW5kZXg6MTY3NzcyNzR9I2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAubG9hZGluZy1jb250YWluZXIubG9hZGluZy1jb250YWlu ZXItYXMtb3ZlcmxheSAubG9hZGluZy1zcGlubmVye2Rpc3BsYXk6YmxvY2t9I2F0 LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtY29weS1saW5rLXNoYXJle21hcmdpbjow IDM1cHg7d2lkdGg6NTc1cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtY29w eS1saW5rLXNoYXJlLWljb257ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2hlaWdo dDo1MHB4O3dpZHRoOjUwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtY29w eS1saW5rLXNoYXJlLWljb24gLmF0LWljb24td3JhcHBlcntib3JkZXItcmFkaXVz OjRweCAwIDAgNHB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWNvcHktbGlu ay1zaGFyZS1wYWdlLXVybHtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwO2NvbG9y OiMzMzM7ZGlzcGxheTpibG9jaztmb250LXNpemU6MThweDtoZWlnaHQ6NTBweDt3 aWR0aDpjYWxjKDEwMCUgLSA1MHB4KX0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5h dC1jb3B5LWxpbmstc2hhcmUtYnV0dG9ue3RleHQtYWxpZ246Y2VudGVyO3dpZHRo OjEzMHB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWNvcHktbGluay1yZXN1 bHQtbWVzc2FnZXtiYWNrZ3JvdW5kLWNvbG9yOiMxZWNlOGU7Ym9yZGVyLXJhZGl1 czozcHg7Y29sb3I6I2ZmZjtkaXNwbGF5OmJsb2NrO21hcmdpbjoyMHB4IGF1dG87 b3BhY2l0eTowO3BhZGRpbmc6NXB4O3dpZHRoOjIwMHB4O3RyYW5zaXRpb246b3Bh Y2l0eSAuNXMgZWFzZS1pbn0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1jb3B5 LWxpbmstcmVzdWx0LW1lc3NhZ2Ugc3Bhbntmb250LXNpemU6MTRweDtsaW5lLWhl aWdodDoyMHB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWNvcHktbGluay1y ZXN1bHQtbWVzc2FnZS5hdC1jb3B5LWxpbmstc2hvdy1yZXN1bHR7b3BhY2l0eTox O3RyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZS1pbn0jYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1jb3B5LWxpbmstcmVzdWx0LW1lc3NhZ2U6YmVmb3Jle21hcmdp bjowIDVweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjk1MHB4KXsjYXQt ZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51Om5vdCguYXQtZXhw YW5kZWQtbWVudS1lbWFpbCl7bWFyZ2luLWxlZnQ6LTI4OXB4fSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtZnQsI2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1wYWdlLXRpdGxlLCNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFnZS11cmwsI2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZWFyY2gsI2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10aXRsZXt3aWR0aDo1MDhw eH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXNlcnZp Y2UtbGlzdCwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51 LXRvcC1zZXJ2aWNlcy1oZWFkZXJ7d2lkdGg6NTc4cHh9I2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QuYm9yZGVyLWJl Zm9yZTpiZWZvcmUsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQt bWVudS10b3Atc2VydmljZXMtaGVhZGVyLmJvcmRlci1iZWZvcmU6YmVmb3Jle3dp ZHRoOjM3OHB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1l bnUtc2VydmljZS1saXN0IGxpLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4 cGFuZGVkLW1lbnUtdG9wLXNlcnZpY2VzLWhlYWRlciBsaXttYXJnaW4tbGVmdDoy OHB4O21hcmdpbi1yaWdodDoyOXB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWNvcHktbGluay1zaGFyZXttYXJnaW46MDt3aWR0aDo1NzhweH19QG1lZGlhIHNj cmVlbiBhbmQgKG1heC13aWR0aDo1NjlweCl7I2F0LWV4cGFuZGVkLW1lbnUtaG9z dCAuYXQtZXhwYW5kZWQtbWVudTpub3QoLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwp e21hcmdpbi1sZWZ0Oi0yMTRweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1l eHBhbmRlZC1tZW51LmF0LWV4cGFuZGVkLW1lbnUtZW1haWwgI2F0LWV4cGFuZGVk LW1lbnUtYmQsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVu dS5hdC1leHBhbmRlZC1tZW51LWVtYWlsICNhdC1leHBhbmRlZC1tZW51LWhkLCNh dC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUuYXQtZXhwYW5k ZWQtbWVudS1lbWFpbCAuYXQtZXhwYW5kZWQtbWVudS1lbWFpbC1vdGhlcntwYWRk aW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHh9I2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBhbmRlZC1tZW51LWVtYWls ICNhdC1leHBhbmRlZC1tZW51LWJkLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0 LWV4cGFuZGVkLW1lbnUuYXQtZXhwYW5kZWQtbWVudS1lbWFpbCAjYXQtZXhwYW5k ZWQtbWVudS1lbWFpbC1mb3JtLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4 cGFuZGVkLW1lbnUuYXQtZXhwYW5kZWQtbWVudS1lbWFpbCAjYXQtZXhwYW5kZWQt bWVudS1oZCwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51 LmF0LWV4cGFuZGVkLW1lbnUtZW1haWwgI2F0LWV4cGFuZGVkLW1lbnUtdGl0bGUs I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBh bmRlZC1tZW51LWVtYWlsIC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdGl0bGUsI2F0 LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBhbmRl ZC1tZW51LWVtYWlsIC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdXJse21hcmdpbjow O3dpZHRoOjEwMCV9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQt bWVudS5hdC1leHBhbmRlZC1tZW51LWVtYWlsIC5hdC1leHBhbmRlZC1tZW51LWVt YWlsLW90aGVye3dpZHRoOjEwMCV9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQt ZXhwYW5kZWQtbWVudS5hdC1leHBhbmRlZC1tZW51LWVtYWlsICNhdC1leHBhbmRl ZC1tZW51LXRpdGxle21hcmdpbi1ib3R0b206MzBweH0jYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWZ0LCNhdC1leHBhbmRlZC1tZW51LWhv c3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFnZS10aXRsZSwjYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdXJsLCNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLCNhdC1leHBhbmRlZC1t ZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtdGl0bGV7bWFyZ2luLWxlZnQ6MjJw eDttYXJnaW4tcmlnaHQ6MjJweDt3aWR0aDozODBweH0jYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXNlcnZpY2UtbGlzdCwjYXQtZXhwYW5k ZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXRvcC1zZXJ2aWNlcy1oZWFk ZXJ7d2lkdGg6NDIwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5k ZWQtbWVudS1zZXJ2aWNlLWxpc3QuYm9yZGVyLWJlZm9yZTpiZWZvcmUsI2F0LWV4 cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10b3Atc2VydmljZXMt aGVhZGVyLmJvcmRlci1iZWZvcmU6YmVmb3Jle3dpZHRoOjE1cGN9I2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QgbGks I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10b3Atc2Vy dmljZXMtaGVhZGVyIGxpe21hcmdpbi1sZWZ0OjE0cHg7bWFyZ2luLXJpZ2h0Ojdw eH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1jb3B5LWxpbmstc2hhcmV7d2lk dGg6NDIwcHh9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDQ5cHgpeyNh dC1leHBhbmRlZC1tZW51LWhvc3QgI2F0LWV4cGFuZGVkLW1lbnUtdGl0bGV7Zm9u dC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MnBjfSNhdC1leHBhbmRlZC1tZW51LWhv c3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFnZS10aXRsZXtmb250LXNpemU6MTRweDtm b250LXdlaWdodDozMDB9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5k ZWQtbWVudTpub3QoLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwpe21hcmdpbi1sZWZ0 Oi0xODBweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51 LWZ0LCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFn ZS10aXRsZSwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51 LXBhZ2UtdXJsLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1l bnUtc2VhcmNoLCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1l bnUtdGl0bGV7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MTBweDt3aWR0 aDozNDBweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51 LXNlcnZpY2UtbGlzdCwjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRl ZC1tZW51LXRvcC1zZXJ2aWNlcy1oZWFkZXJ7d2lkdGg6MzYwcHh9I2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QuYm9y ZGVyLWJlZm9yZTpiZWZvcmUsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhw YW5kZWQtbWVudS10b3Atc2VydmljZXMtaGVhZGVyLmJvcmRlci1iZWZvcmU6YmVm b3Jle21hcmdpbi1sZWZ0OjVwYzt3aWR0aDoyMDBweH0jYXQtZXhwYW5kZWQtbWVu dS1ob3N0IC5hdC1jb3B5LWxpbmstc2hhcmV7d2lkdGg6MzYwcHh9fUBtZWRpYSBz Y3JlZW4gYW5kIChtYXgtd2lkdGg6MzY5cHgpeyNhdC1leHBhbmRlZC1tZW51LWhv c3QgLmF0LWV4cGFuZGVkLW1lbnU6bm90KC5hdC1leHBhbmRlZC1tZW51LWVtYWls KXttYXJnaW4tbGVmdDotMTBwY30jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1l eHBhbmRlZC1tZW51LXBhZ2UtdXJse21hcmdpbi1ib3R0b206MjVweH0jYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LWZ0LCNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFnZS10aXRsZSwjYXQtZXhw YW5kZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdXJsLCNhdC1l eHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLCNhdC1l eHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtdGl0bGV7d2lkdGg6 MzAwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1z ZXJ2aWNlLWxpc3QsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQt bWVudS10b3Atc2VydmljZXMtaGVhZGVye3dpZHRoOjIwcGN9I2F0LWV4cGFuZGVk LW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QuYm9yZGVy LWJlZm9yZTpiZWZvcmUsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5k ZWQtbWVudS10b3Atc2VydmljZXMtaGVhZGVyLmJvcmRlci1iZWZvcmU6YmVmb3Jl e21hcmdpbi1sZWZ0OjYwcHg7d2lkdGg6MjAwcHh9I2F0LWV4cGFuZGVkLW1lbnUt aG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3QgbGksI2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10b3Atc2VydmljZXMtaGVh ZGVyIGxpe21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6OHB4fSNhdC1leHBh bmRlZC1tZW51LWhvc3QgLmF0LWNvcHktbGluay1zaGFyZXt3aWR0aDoyMHBjfX1A bWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjg3OXB4KXsjYXQtZXhwYW5kZWQt bWVudS1ob3N0IC5hdC1icmFuZGluZy1pbmZvLmF0LWV4cGFuZGVkLW1lbnUtYnJh bmRpbmcsI2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtYnJhbmRpbmctbG9nby5h dC1leHBhbmRlZC1tZW51LWJyYW5kaW5ne2JvdHRvbTppbml0aWFsO2xlZnQ6MjBw eDtyaWdodDppbml0aWFsO3RvcDoyMHB4fX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4 LXdpZHRoOjM0N3B4KXsjYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1icmFuZGlu Zy1pbmZvLmF0LWV4cGFuZGVkLW1lbnUtYnJhbmRpbmcsI2F0LWV4cGFuZGVkLW1l bnUtaG9zdCAuYXQtYnJhbmRpbmctbG9nby5hdC1leHBhbmRlZC1tZW51LWJyYW5k aW5ne2JvdHRvbTppbml0aWFsO2xlZnQ6MTBweDtyaWdodDppbml0aWFsO3RvcDox MHB4fSNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtY2xv c2V7cmlnaHQ6MTBweDt0b3A6MTBweH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC1o ZWlnaHQ6ODAwcHgpLHNjcmVlbiBhbmQgKG1heC13aWR0aDo2MzlweCl7I2F0LWV4 cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3Qg YnV0dG9ue3dpZHRoOjRwY30jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1leHBh bmRlZC1tZW51IC5hdC1pY29uLXdyYXBwZXJ7d2lkdGg6NHBjO2hlaWdodDo0cGN9 fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OjgwMHB4KSBhbmQgKG1pbi13 aWR0aDo0ODBweCl7I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQt bWVudS1wYWdlLXVybHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxMHB4fX1A bWVkaWEgc2NyZWVuIGFuZCAobWF4LWhlaWdodDo4MDBweCl7I2F0LWV4cGFuZGVk LW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10aXRsZXtmb250LXNpemU6M3Bj O2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDozcGM7Y29sb3I6I2ZmZjttYXJn aW4tYm90dG9tOjIwcHg7bWFyZ2luLXRvcDowO3BhZGRpbmc6MH0jYXQtZXhwYW5k ZWQtbWVudS1ob3N0IC5hdC1leHBhbmRlZC1tZW51LXBhZ2UtdXJse21hcmdpbi10 b3A6MDttYXJnaW4tYm90dG9tOjEwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAu YXQtZXhwYW5kZWQtbWVudS1zZWFyY2h7aGVpZ2h0OjUwcHg7bWF4LWhlaWdodDo1 MHB4O2xpbmUtaGVpZ2h0OjUwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQt ZXhwYW5kZWQtbWVudS1zZWFyY2gtaW5wdXRbdHlwZT10ZXh0XXtmb250LXNpemU6 MTVweCFpbXBvcnRhbnQ7aGVpZ2h0OjUwcHg7cG9zaXRpb246cmVsYXRpdmU7dG9w Oi00cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1z ZWFyY2gtbGFiZWx7aGVpZ2h0OjM1cHg7bWF4LWhlaWdodDozNXB4O2xpbmUtaGVp Z2h0OjM1cHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVu dS1zZWFyY2gtbGFiZWwtY29udGVudHtmb250LXNpemU6MXBjfSNhdC1leHBhbmRl ZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWxhYmVsOmFmdGVy LCNhdC1leHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNo LWxhYmVsOmJlZm9yZXtoZWlnaHQ6MzVweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0 IC5hdC1leHBhbmRlZC1tZW51LXNlYXJjaC1pY29ue3RvcDo1cHh9I2F0LWV4cGFu ZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS10b3Atc2VydmljZXMtaGVh ZGVye21hcmdpbjowIDAgMjBweH0jYXQtZXhwYW5kZWQtbWVudS1ob3N0IC5hdC1l eHBhbmRlZC1tZW51LXNlcnZpY2UtbGlzdHtwYWRkaW5nOjAgMCA5MHB4fSNhdC1l eHBhbmRlZC1tZW51LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtc2VydmljZS1saXN0 LmJvcmRlci1iZWZvcmU6YmVmb3Jle3BhZGRpbmctYm90dG9tOjMwcHh9I2F0LWV4 cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQtbWVudS1zZXJ2aWNlLWxpc3Qg bGl7bWFyZ2luLWJvdHRvbToxNXB4O21hcmdpbi10b3A6MH19QG1lZGlhIHNjcmVl biBhbmQgKG1heC1oZWlnaHQ6NTUwcHgpeyNhdC1leHBhbmRlZC1tZW51LWhvc3Qg I2F0LWV4cGFuZGVkLW1lbnUtdGl0bGV7bGluZS1oZWlnaHQ6MjhweDttYXJnaW4t Ym90dG9tOjEwcHh9I2F0LWV4cGFuZGVkLW1lbnUtaG9zdCAuYXQtZXhwYW5kZWQt bWVudS1wYWdlLXRpdGxle2ZvbnQtc2l6ZToxM3B4fSNhdC1leHBhbmRlZC1tZW51 LWhvc3QgLmF0LWV4cGFuZGVkLW1lbnUtcGFnZS11cmx7Zm9udC1zaXplOjlwdH0j YXQtZXhwYW5kZWQtbWVudS1ob3N0ICNhdC1leHBhbmRlZC1tZW51LWJke3BhZGRp bmctdG9wOjEwcHh9fUBtZWRpYSBwcmludHsjYXQtZXhwYW5kZWQtbWVudS1ob3N0 ICNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lcntkaXNwbGF5Om5vbmV9fSNhdC1l eHBhbmRlZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmlsZXtw b3NpdGlvbjpmaXhlZDt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWlu ZGV4OjE2Nzc3MjY5O292ZXJmbG93OmhpZGRlbn0jYXQtZXhwYW5kZWQtbWVudS1j b250YWluZXIuYXQtZXhwYW5kZWQtbWVudS1tb2JpbGU+LmxvYWRpbmctY29udGFp bmVye2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTY3Nzcy NzR9I2F0LWV4cGFuZGVkLW1lbnUtY29udGFpbmVyLmF0LWV4cGFuZGVkLW1lbnUt bW9iaWxlIC5hdC1leHBhbmRlZC1tZW51e292ZXJmbG93LXg6aW5pdGlhbDtvdmVy Zmxvdy15OmluaXRpYWw7cGFkZGluZy1ib3R0b206NTBweDtwYWRkaW5nLXRvcDo2 MHB4O3RvcDowO2JvdHRvbTowfSNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5h dC1leHBhbmRlZC1tZW51LW1vYmlsZSAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBh bmRlZC1tZW51LWNvcHktbGluaywjYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIu YXQtZXhwYW5kZWQtbWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUuYXQtZXhw YW5kZWQtbWVudS1lbWFpbHtsZWZ0OmluaXRpYWw7bWFyZ2luLWxlZnQ6MH0jYXQt ZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQtbWVudS1tb2JpbGUg LmF0LWV4cGFuZGVkLW1lbnUuYXQtZXhwYW5kZWQtbWVudS1lbWFpbHttYXJnaW4t Ym90dG9tOjUwcHg7bWFyZ2luLXRvcDo3MHB4O292ZXJmbG93LXk6YXV0bzstd2Vi a2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtwYWRkaW5nLXRvcDoxMHB4fSNh dC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmls ZSAuYXQtZXhwYW5kZWQtbWVudS5hdC1leHBhbmRlZC1tZW51LWNvcHktbGlua3ti b3R0b206aW5pdGlhbDtwYWRkaW5nOjA7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNs YXRlWSgtNTAlKX0jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5k ZWQtbWVudS1tb2JpbGUgI2F0LWV4cGFuZGVkLW1lbnUtaGR7cG9zaXRpb246Zml4 ZWR9I2F0LWV4cGFuZGVkLW1lbnUtY29udGFpbmVyLmF0LWV4cGFuZGVkLW1lbnUt bW9iaWxlIC5hdC1leHBhbmRlZC1tZW51LWNvcHktbGluayAjYXQtZXhwYW5kZWQt bWVudS1oZCwjYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQt bWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwgI2F0LWV4cGFuZGVk LW1lbnUtaGR7ZGlzcGxheTpibG9jaztwYWRkaW5nLWJvdHRvbToxMHB4O3Bvc2l0 aW9uOnN0YXRpY30jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5k ZWQtbWVudS1tb2JpbGUgI2F0LWV4cGFuZGVkLW1lbnUtdGl0bGV7Zm9udC1zaXpl OjIwcHg7bGluZS1oZWlnaHQ6MjBweDttYXJnaW4tYm90dG9tOjB9I2F0LWV4cGFu ZGVkLW1lbnUtY29udGFpbmVyLmF0LWV4cGFuZGVkLW1lbnUtbW9iaWxlIC5hdC1l eHBhbmRlZC1tZW51LWVtYWlsICNhdC1leHBhbmRlZC1tZW51LXRpdGxle21hcmdp bjowIGF1dG99I2F0LWV4cGFuZGVkLW1lbnUtY29udGFpbmVyLmF0LWV4cGFuZGVk LW1lbnUtbW9iaWxlIC5hdC1leHBhbmRlZC1tZW51LWNvcHktbGluayAjYXQtZXhw YW5kZWQtbWVudS10aXRsZXttYXJnaW4tYm90dG9tOjVweDt3aWR0aDphdXRvfSNh dC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmls ZSAuYXQtZXhwYW5kZWQtbWVudS1jb3B5LWxpbmsgLmF0LWV4cGFuZGVkLW1lbnUt cGFnZS10aXRsZSwjYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5k ZWQtbWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtY29weS1saW5rIC5hdC1l eHBhbmRlZC1tZW51LXBhZ2UtdXJse3dpZHRoOmF1dG99I2F0LWV4cGFuZGVkLW1l bnUtY29udGFpbmVyLmF0LWV4cGFuZGVkLW1lbnUtbW9iaWxlIC5hdC1leHBhbmRl ZC1tZW51LXNlYXJjaC1pbnB1dFt0eXBlPXRleHRde2ZvbnQtc2l6ZToxM3B4IWlt cG9ydGFudH0jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQt bWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWljb257aGVpZ2h0 OjIycHg7dG9wOjdweH0jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhw YW5kZWQtbWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWxhYmVs e2hlaWdodDo0NXB4O2xpbmUtaGVpZ2h0OjQ1cHg7bWF4LWhlaWdodDo0NXB4fSNh dC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmls ZSAuYXQtZXhwYW5kZWQtbWVudS1zZWFyY2gtbGFiZWwtY29udGVudHtmb250LXNp emU6MTNweH0jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQt bWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtc2VhcmNoLWZpbGxlZCAuYXQt ZXhwYW5kZWQtbWVudS1zZWFyY2gtbGFiZWwgLmF0LWV4cGFuZGVkLW1lbnUtc2Vh cmNoLWxhYmVsLWNvbnRlbnQsI2F0LWV4cGFuZGVkLW1lbnUtY29udGFpbmVyLmF0 LWV4cGFuZGVkLW1lbnUtbW9iaWxlIC5hdC1leHBhbmRlZC1tZW51LXNlYXJjaC1p bnB1dFt0eXBlPXRleHRdOmZvY3VzKy5hdC1leHBhbmRlZC1tZW51LXNlYXJjaC1s YWJlbCAuYXQtZXhwYW5kZWQtbWVudS1zZWFyY2gtbGFiZWwtY29udGVudHtkaXNw bGF5Om5vbmV9I2F0LWV4cGFuZGVkLW1lbnUtY29udGFpbmVyLmF0LWV4cGFuZGVk LW1lbnUtbW9iaWxlIC5hdC1leHBhbmRlZC1tZW51LXRvcC1zZXJ2aWNlcy1oZWFk ZXJ7bWFyZ2luOjAgMCAxOHB4fSNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5h dC1leHBhbmRlZC1tZW51LW1vYmlsZSAjYXQtZXhwYW5kZWQtbWVudS1iZHtoZWln aHQ6MTAwJTtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjA7LXdlYmtp dC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9I2F0LWV4cGFuZGVkLW1lbnUtY29u dGFpbmVyLmF0LWV4cGFuZGVkLW1lbnUtbW9iaWxlIC5hdC1leHBhbmRlZC1tZW51 LXJvdW5kIC5hdC1leHBhbmRlZC1tZW51LWJ1dHRvbi1sYWJlbHtmb250LXNpemU6 OXB0fSNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51 LW1vYmlsZSAuYXQtZXhwYW5kZWQtbWVudSAuYXQtaWNvbi13cmFwcGVye2hlaWdo dDo1NHB4O21hcmdpbjowIGF1dG87d2lkdGg6NTRweH0jYXQtZXhwYW5kZWQtbWVu dS1jb250YWluZXIuYXQtZXhwYW5kZWQtbWVudS1tb2JpbGUgI2F0LWV4cGFuZGVk LW1lbnUtZW1haWwtZm9ybXt3aWR0aDphdXRvfSNhdC1leHBhbmRlZC1tZW51LWNv bnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmlsZSAjYXQtZXhwYW5kZWQtbWVu dS1jYXB0Y2hhLWNvbnRhaW5lcntwYWRkaW5nLXRvcDoxNXB4fSNhdC1leHBhbmRl ZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmlsZSAjYXQtZXhw YW5kZWQtbWVudS1jYXB0Y2hhLWNvbnRhaW5lcj46Zmlyc3QtY2hpbGR7bWFyZ2lu OjAgYXV0b30jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQt bWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtb3RoZXJ7bWFyZ2lu LWJvdHRvbTowO3BhZGRpbmctYm90dG9tOjA7d2lkdGg6YXV0b30jYXQtZXhwYW5k ZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQtbWVudS1tb2JpbGUgI2F0LWV4 cGFuZGVkLW1lbnUtZW1haWwtc2VudHt3aWR0aDoxMDAlfSNhdC1leHBhbmRlZC1t ZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmlsZSAjYXQtZXhwYW5k ZWQtbWVudS1lbWFpbC1zZW50IC5hdC1leHBhbmRlZC1tZW51LWJ1dHRvbntoZWln aHQ6NHBjO3dpZHRoOjRwY30jYXQtZXhwYW5kZWQtbWVudS1jb250YWluZXIuYXQt ZXhwYW5kZWQtbWVudS1tb2JpbGUgLmF0LWV4cGFuZGVkLW1lbnUtZW1haWwtc3Vj Y2Vzcy1tZXNzYWdle2ZvbnQtc2l6ZToyNHB4fSNhdC1leHBhbmRlZC1tZW51LWNv bnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmlsZSAuYXQtZXhwYW5kZWQtbWVu dS1lbWFpbC1lcnJvci1tZXNzYWdle2ZvbnQtc2l6ZToxMHB4fSNhdC1leHBhbmRl ZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1tZW51LW1vYmlsZSAuYXQtY29w eS1saW5rLXNoYXJle21hcmdpbjowIDEwcHg7d2lkdGg6YXV0b30jYXQtZXhwYW5k ZWQtbWVudS1jb250YWluZXIuYXQtZXhwYW5kZWQtbWVudS1tb2JpbGUgLmF0LWNv cHktbGluay1zaGFyZS1idXR0b257bWFyZ2luLXRvcDoyNXB4O3BhZGRpbmc6MTBw eCAyNXB4fSNhdC1leHBhbmRlZC1tZW51LWNvbnRhaW5lci5hdC1leHBhbmRlZC1t ZW51LW1vYmlsZSAuYXQtZXhwYW5kZWQtbWVudS1mdHttYXJnaW4tdG9wOi01cGN9 I2F0LWV4cGFuZGVkLW1lbnUtY29udGFpbmVyLmF0LWV4cGFuZGVkLW1lbnUtbW9i aWxlIC5hdC1leHBhbmRlZC1tZW51LWZhZGV7aGVpZ2h0OjUwcHh9JywiIl0pfSxm dW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4ucCsiMzBlMDI5YzczOTIxZTU5MDY4 NDMyMGI1MmNmZjRlN2QuZ2lmIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7 ZnVuY3Rpb24gbihlLHQpe3ZhciBuPSEoYXJndW1lbnRzLmxlbmd0aDw9Mnx8dm9p ZCAwPT09YXJndW1lbnRzWzJdKSYmYXJndW1lbnRzWzJdLGk9YSh0LG4pO3JldHVy biBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4gaShu KXx8KHRbbl09ZVtuXSksdH0se30pfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9 bjt2YXIgYT1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UuaGFzT3duUHJvcGVydHku YmluZChlKTpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiBlfX07ZS5leHBvcnRzPXQu ZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYT1uKDU5 MSksaT1uKDU2Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZSYmKGUu c2hhcmVfdXJsX3RyYW5zZm9ybXN8fGUudXJsX3RyYW5zZm9ybXMpfHx7fTsiaXN0 LTEuMCI9PT10LnByb2R1Y3QmJihlLnVybD1lLm1lZGlhKSxlLnVybD1pKGUudXJs fHx3aW5kb3cubG9jYXRpb24uaHJlZixuLGUsImxpbmsiKSx0LnVpX3BhbmU9Imxp bmsiLGEoZG9jdW1lbnQuYm9keSwibGluayIsIiIsIiIsdCxlKX19LGZ1bmN0aW9u KGUsdCxuKXtmdW5jdGlvbiBhKCl7aWYod2luZG93LnBhcmVudD09PXdpbmRvdyl3 aW5kb3cucHJpbnQoKTtlbHNlIGlmKGkpd2luZG93LnBhcmVudC5wb3N0TWVzc2Fn ZSgiYXQtc2hhcmUtcHJpbnQiLCIqIik7ZWxzZXt2YXIgZT1yKCJ3aW4iKT8iQ29u dHJvbCI6IkNvbW1hbmQiLHQ9IlByZXNzIDwiK2UrIj4rUCB0byBwcmludC4iO3Ry eXtfYXRlLm1lbnUuY2xvc2UoKX1jYXRjaChlKXt9YWxlcnQodCl9fXZhciBpPW4o NTUyKSxvPW4oMjMpLmxpc3RlbixyPW4oNSk7byh3aW5kb3csIm1lc3NhZ2UiLGZ1 bmN0aW9uKGUpe2lmKCJhdC1zaGFyZS1wcmludCI9PT1lLmRhdGEpe3RyeXtfYXRl Lm1lbnUuY2xvc2UoKX1jYXRjaChlKXt9YSgpfX0pLGUuZXhwb3J0cz1hfSxmdW5j dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSx0KXt2YXIgbj0i aHR0cHM6Ly9kYXNoYm9hcmQuYWRkdGhpcy5jb20vZGFya3NlaWQvc2xhY2stb2F1 dGgvYXV0aD9zaGFyZVVSTD0iK2VuY29kZVVSSUNvbXBvbmVudChpKCJzbGFjayIs ZSx0LCExLCEwKSkrIiZzaGFyZVRpdGxlPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUu dGl0bGUpO3JldHVybiB0LnByb2R1Y3R8fCh0LnByb2R1Y3Q9Im1lbi0zMDAiKSxy KG4se3Bjbzp0LnByb2R1Y3R9KXx8bn12YXIgaT1uKDYxNyksbz1uKDYzMSkscj1u KDY0Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49byhhKGUsdCksIl9i bGFuayIpO3JldHVybiBufSxlLmV4cG9ydHMuZ2V0U2xhY2tVUkw9YX0sZnVuY3Rp b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYT1uKDIxKSxpPW4oNDQpLG89big4 KSxyPW4oNDYpLHM9bigzMSksZD1uKDU5KS5tYWtlQ1VJRDtlLmV4cG9ydHM9ZnVu Y3Rpb24oZSx0KXthKGUsIkEgdXJsIG11c3QgYmUgc3VwcGxpZWQgdG8gYG1ha2VS ZWRpcmVjdFVSTGAiKSxhKHQucGNvLCJBIHBjbyBtdXN0IGJlIHN1cHBsaWVkIHRv IGBtYWtlUmVkaXJlY3RVUkxgIik7dmFyIG49d2luZG93Ll9hdGUmJl9hdGUuZmVl ZHMmJl9hdGUuZmVlZHMuZ2V0VGVzdENlbGwoKSx1PXdpbmRvdy5fYXRjJiZ3aW5k b3cuX2F0Yy5yZXYsYz1yKCl8fGQoKSxsPW8oe3VybDplLHVpZDpjLHB1YjpzKCks cmV2OnUscGVyOm59LHQpLGY9aShsLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQrIj0i K3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoZSl9KS5qb2luKCImIik7cmV0dXJu Ii8vbS5hZGR0aGlzLmNvbS9saXZlL3JlZGlyZWN0Lz8iK2Z9fSxmdW5jdGlvbihl LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSx0KXt2YXIgbj1kKHt1cmw6 ZW5jb2RlVVJJKGkoInNreXBlIixlLHQsITEsITApKSxsYW5nOnUoKSxmbG93X2lk OnMoKSxzb3VyY2U6IkFkZFRoaXMifSk7cmV0dXJuImh0dHBzOi8vd2ViLnNreXBl LmNvbS9zaGFyZT8iK259dmFyIGk9big2MTcpLG89big1ODEpLHI9big2MzEpLHM9 big1OSkubWFrZUNVSUQsZD1uKDU3MCksdT1uKDE4KTtlLmV4cG9ydHM9ZnVuY3Rp b24oZSx0KXt2YXIgbj1kKHt0b29sYmFyOiJubyIsc2Nyb2xsYmFyczoieWVzIixy ZXNpemFibGU6InllcyIsd2lkdGg6MzA1LGhlaWdodDo2NjV9LCIsIik7bygic2t5 cGUiLGUsdCk7dmFyIGk9YShlLHQpLHM9cihpLCJfYmxhbmsiLG4pO3JldHVybiBz fSxlLmV4cG9ydHMuZ2V0U2t5cGVVUkw9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug c3RyaWN0IjtmdW5jdGlvbiBhKGUsdCl7dmFyIG4sYT1vKCJzbXMiLGUsdCwhMSwh MCk7cmV0dXJuIG49aSgiaXBoIil8fGkoImlwYSIpPyJzbXM6JmJvZHk9IisoZS50 aXRsZT9lbmNvZGVVUklDb21wb25lbnQoZS50aXRsZSkrIiUyMCI6IiIpK2VuY29k ZVVSSUNvbXBvbmVudChhKToic21zOj9ib2R5PSIrKGUudGl0bGU/ZW5jb2RlVVJJ Q29tcG9uZW50KGUudGl0bGUpKyIlMjAiOiIiKStlbmNvZGVVUklDb21wb25lbnQo YSl9dmFyIGk9big1KSxvPW4oNjE3KSxyPW4oNTkwKTtlLmV4cG9ydHM9ZnVuY3Rp b24oZSx0KXtpKCJpcGgiKXx8aSgiaXBhIil8fGkoImJiMTAiKXx8aSgiZHJvIik/ d2luZG93LmxvY2F0aW9uPWEoZSx0KTooZS5zZXJ2aWNlPSJlbWFpbCIscihlLHQp KX0sZS5leHBvcnRzLmdldFNNU1VSTD1hfSxmdW5jdGlvbihlLHQsbil7dmFyIGE9 d2luZG93LmVuY29kZVVSSUNvbXBvbmVudCxpPW4oNjE3KSxvPW4oNTY2KSxyPW4o NTY3KSxzPW4oNSksZD1uKDY0Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2 YXIgdT1lLnNoYXJlX3VybF90cmFuc2Zvcm1zfHxlLnVybF90cmFuc2Zvcm1zfHx7 fSxjPW8ocihlLnVybCx1LGUsIm1haWx0byIpKSxsPWUudGl0bGV8fGM7dD10fHx7 fTt2YXIgZj0iIjtlLm1lZGlhJiYoZis9YShlLm1lZGlhKSsiJTBEJTBBJTBEJTBB IiksZis9YShpKCJtYWlsdG8iLGUsdCxjLG4pKTt2YXIgcD0ibWFpbHRvOj9ib2R5 PSIrZisiJnN1YmplY3Q9IisocygiaXBoIik/bDphKGwpKTtyZXR1cm4gdC5wcm9k dWN0fHwodC5wcm9kdWN0PSJtZW4tMzAwIiksZChwLHtwY286dC5wcm9kdWN0fSl8 fCIjIn19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0 PXt0d2l0dGVyOjEsd29yZHByZXNzOjEsZmFjZWJvb2s6MSxob290c3VpdGU6MSxl bWFpbDoxLGJrbW9yZToxLG1vcmU6MSxyYWlzZXlvdXJ2b2ljZToxLHZrOjEsdHVt YmxyOjEsYW1hem9uc21pbGU6MSxjYXNobWU6MSxwYXlwYWxtZToxLHBhdHJlb246 MSx2ZW5tbzoxLGZsaXBib2FyZDoxfTtyZXR1cm4hIXRbZV19fSxmdW5jdGlvbihl LHQsbil7InVzZSBzdHJpY3QiO3ZhciBhPW4oNTU3KSxpPW4oNTc5KSxvPW4oNjQ1 KSxyPW4oNSkscz13aW5kb3csZD17d29yZHByZXNzOnt3aWR0aDo3MjAsaGVpZ2h0 OjU3MH0sbGlua2VkaW46e3dpZHRoOjYwMCxoZWlnaHQ6NDc1fSxmYWNlYm9vazp7 d2lkdGg6Njc1LGhlaWdodDozNzV9LGhvb3RzdWl0ZTp7d2lkdGg6ODAwLGhlaWdo dDo1MDB9LGVtYWlsOnt3aWR0aDo2NjAsaGVpZ2h0OjY2MH0sbW9yZTp7d2lkdGg6 NjYwLGhlaWdodDo3MTZ9LHZrOnt3aWR0aDo3MjAsaGVpZ2h0OjI5MH0scmFpc2V5 b3Vydm9pY2U6e3dpZHRoOjQ4MCxoZWlnaHQ6NjM1fSxmYWxsYmFjazp7d2lkdGg6 NTUwLGhlaWdodDo0NTB9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sdSxjLGwp e3ZhciBmPWEoZSwwLHQsbik7cmV0dXJuIG4udWlfdXNlX3NhbWVfd2luZG93P3Mu bG9jYXRpb24uaHJlZj1mOiJlbWFpbCI9PT1lJiZyKCJtb2IiKT9zLmxvY2F0aW9u LmhyZWY9byh0LG4sMSk6aShmLHV8fChkW2VdfHxkLmZhbGxiYWNrKS53aWR0aCxj fHwoZFtlXXx8ZC5mYWxsYmFjaykuaGVpZ2h0LGwpLCExfX0sZnVuY3Rpb24oZSx0 LG4pe3ZhciBhPW4oNTU3KSxpPW4oNTgwKSxvPW4oNjQ0KSxyPXdpbmRvdztlLmV4 cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBzO3JldHVybiByLmxvY2F0aW9uLmhy ZWYuc2VhcmNoKF9hdGMucnNyY3MuYm9va21hcmspPi0xP3IubG9jYXRpb249YShl LDAsdCxuKToic21zIj09PWU/byh0LG4pOihzPWEoZSwwLHQsbiksaS5wdXNoKHIu b3BlbihzLCJhZGR0aGlzX3NoYXJlIikpKSwhMX19LGZ1bmN0aW9uKGUsdCxuKXsi dXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaSgpe3JldHVybiBzW2QuZmlsdGVyKGZ1 bmN0aW9uKGUpe3JldHVybiByLmRlZmF1bHQoZSl9KVswXV19dC5fX2VzTW9kdWxl PSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oNSkscj1hKG8pLHM9e3NhZjoiU2FmYXJp IixjaHI6IkNocm9tZSIsb3ByOiJPcGVyYSIsbXNlZGdlOiJFZGdlIixmZng6IkZp cmVmb3giLGllMTA6IkludGVybmV0IEV4cGxvcmVyIixpZTExOiJJbnRlcm5ldCBF eHBsb3JlciJ9LGQ9T2JqZWN0LmtleXMocyk7ZS5leHBvcnRzPXQuZGVmYXVsdH0s ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVy biBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCxu LGEsaSl7aWYoImZvbGxvdyI9PT1hKXt2YXIgbz10Ll9leHBhbmRlZE1lbnVGb2xs b3dTZXJ2aWNlc3x8W10scz1vLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5z ZXJ2aWNlPT09ZX0pLnJlZHVjZShmdW5jdGlvbihlKXtyZXR1cm4gZX0pfHx7fSx1 PXtuYXZpZ2F0ZVRvOmYuZGVmYXVsdChlLHMuaWQscy51c2VydHlwZSl9O2kucG9z dCh1KX1lbHNle3ZhciBsPXt9O3N3aXRjaChlKXtjYXNlInBpbnRlcmVzdCI6Y2Fz ZSJwaW50ZXJlc3Rfc2hhcmUiOmw9e25hdmlnYXRlVG86Yy5kZWZhdWx0KHQsbil9 O2JyZWFrO2Nhc2Uic2xhY2siOmw9e25hdmlnYXRlVG86cC5nZXRTbGFja1VSTCh0 LG4pfTticmVhaztjYXNlInNtcyI6bD17bmF2aWdhdGVUbzpnLmdldFNNU1VSTCh0 LG4pfTticmVhaztjYXNlInNreXBlIjpyLmRlZmF1bHQoZSx0LG4pLGw9e25hdmln YXRlVG86aC5nZXRTa3lwZVVSTCh0LG4pfTticmVhaztjYXNlImVtYWlsIjpyLmRl ZmF1bHQoZSx0LG4pLGw9e25hdmlnYXRlVG86bS5nZXRFbWFpbFVSTCh0LG4pfTti cmVhaztjYXNlImtha2FvdGFsayI6bD12LmRlZmF1bHQoIm1vYiIpP3tuYXZpZ2F0 ZVRvOmQuZGVmYXVsdChlLDAsdCxuKX06e25hdmlnYXRlVG86bS5nZXRFbWFpbFVS TCh0LG4pfTticmVhaztkZWZhdWx0Omw9e25hdmlnYXRlVG86ZC5kZWZhdWx0KGUs MCx0LG4pfX1pLnBvc3QobCl9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2 YXIgbz1uKDU4MSkscj1hKG8pLHM9big1NTcpLGQ9YShzKSx1PW4oNTU2KSxjPWEo dSksbD1uKDY1MSksZj1hKGwpLHA9big2NDEpLGg9big2NDMpLG09big1OTApLGc9 big2NDQpLF89big1KSx2PWEoXyk7ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rp b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZl Ll9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCxuLGEpe3Jl dHVybiJmYWNlYm9vayI9PT1lPyhuPSJ1c2VyIix0JiZ0Lm1hdGNoKGQpJiYodD0i cHJvZmlsZS5waHA/aWQ9Iit0KSk6ImZhY2Vib29rX3VybCI9PT1lPyhuPSJ1c2Vy IixlPSJmYWNlYm9vayIpOiJ0d2l0dGVyIj09PWUmJnZvaWQgMD09PXQmJih0PShh fHx7fSlbInR3OnNjcmVlbl9uYW1lIl0pLHQ/KG4mJiJpZCIhPT1ufHwobj0idXNl ciIpLHtjb2RlOmUsdXNlcmlkOnQsdXNlcnR5cGU6bn0pOm51bGx9ZnVuY3Rpb24g byhlLHQsbixhKXt2YXIgbz1pKGUsdCxuLGEpO2lmKCFvKXJldHVybiBudWxsO3Zh ciByPW8uY29kZSxkPXMuZGVmYXVsdFtyXTtpZighZClyZXR1cm4gbnVsbDt2YXIg dT1vLnVzZXJpZCxjPW8udXNlcnR5cGU7cmV0dXJuKGRbY118fCIiKS5yZXBsYWNl KCJ7e2lkfX0iLHUpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bzt2YXIgcj1u KDY1Mikscz1hKHIpLGQ9bmV3IFJlZ0V4cCgvXlxkKyQvKTtlLmV4cG9ydHM9dC5k ZWZhdWx0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17IjUwMHB4Ijp7dXNlcjoi aHR0cHM6Ly81MDBweC5jb20ve3tpZH19In0sYWJvdXRtZTp7dXNlcjoiaHR0cHM6 Ly9hYm91dC5tZS97e2lkfX0ifSxiYW5kY2FtcDp7dXNlcjoiaHR0cHM6Ly97e2lk fX0uYmFuZGNhbXAuY29tLyJ9LGJlaGFuY2U6e3VzZXI6Imh0dHBzOi8vd3d3LmJl aGFuY2UubmV0L3t7aWR9fSJ9LGJpdGJ1Y2tldDp7dXNlcjoiaHR0cHM6Ly9iaXRi dWNrZXQub3JnL3t7aWR9fSJ9LGJsb2dnZXI6e3VzZXI6Imh0dHBzOi8vd3d3LmJs b2dnZXIuY29tL3Byb2ZpbGUve3tpZH19IixibG9nOiJodHRwOi8ve3tpZH19LmJs b2dzcG90LmNvbS8ifSxkZXZpYW50YXJ0Ont1c2VyOiJodHRwOi8ve3tpZH19LmRl dmlhbnRhcnQuY29tLyJ9LGRpZ2c6e3VzZXI6Imh0dHA6Ly9kaWdnLmNvbS97e2lk fX0ifSxkaXNxdXM6e3VzZXI6Imh0dHBzOi8vZGlzcXVzLmNvbS97e2lkfX0ifSxk cmliYmJsZTp7dXNlcjoiaHR0cHM6Ly9kcmliYmJsZS5jb20ve3tpZH19In0sZWxs bzp7dXNlcjoiaHR0cHM6Ly9lbGxvLmNvL3t7aWR9fSJ9LGV0c3k6e3VzZXI6Imh0 dHBzOi8vd3d3LmV0c3kuY29tL3Nob3Ave3tpZH19In0sZmFjZWJvb2s6e3VzZXI6 Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL3t7aWR9fSJ9LGZsaWNrcjp7dXNlcjoi aHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy97e2lkfX0ifSxmb3Vyc3F1YXJl Ont1c2VyOiJodHRwOi8vZm91cnNxdWFyZS5jb20ve3tpZH19In0sZ2l0aHViOnt1 c2VyOiJodHRwczovL2dpdGh1Yi5jb20ve3tpZH19In0sZ2l0bGFiOnt1c2VyOiJo dHRwczovL2dpdGxhYi5jb20ve3tpZH19In0sZ29vZHJlYWRzOnt1c2VyOiJodHRw Oi8vd3d3Lmdvb2RyZWFkcy5jb20ve3tpZH19In0sZ29vZ2xlX2ZvbGxvdzp7dXNl cjoiaHR0cHM6Ly9wbHVzLmdvb2dsZS5jb20ve3tpZH19In0saGFja2VybmV3czp7 dXNlcjoiaHR0cHM6Ly9uZXdzLnljb21iaW5hdG9yLmNvbS97e2lkfX0ifSxob3V6 ejp7dXNlcjoiaHR0cDovL3d3dy5ob3V6ei5jb20ve3tpZH19In0saW5zdGFncmFt Ont1c2VyOiJodHRwOi8vaW5zdGFncmFtLmNvbS97e2lkfX0ifSxqc2ZpZGRsZTp7 dXNlcjoiaHR0cHM6Ly9qc2ZpZGRsZS5uZXQvdXNlci97e2lkfX0ifSxsZXR0ZXJi b3hkOnt1c2VyOiJodHRwczovL2xldHRlcmJveGQuY29tL3t7aWR9fSJ9LGxpbmtl ZGluOnt1c2VyOiJodHRwOi8vd3d3LmxpbmtlZGluLmNvbS9pbi97e2lkfX0iLGdy b3VwOiJodHRwczovL3d3dy5saW5rZWRpbi5jb20vZ3JvdXBzL3t7aWR9fSIsY29t cGFueToiaHR0cDovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS97e2lkfX0iLGVk dWNhdGlvbjoiaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2VkdS97e2lkfX0ifSxt YWlsdG86e3VzZXI6Im1haWx0bzp7e2lkfX0ifSxtZWRpdW06e3VzZXI6Imh0dHBz Oi8vbWVkaXVtLmNvbS97e2lkfX0ifSxtZWV0dmliZTp7dXNlcjoiaHR0cHM6Ly9t ZWV0dmliZS5jb20ve3tpZH19In0sbWVzc2VuZ2VyOnt1c2VyOiJodHRwczovL20u bWUve3tpZH19In0sbWl4Y2xvdWQ6e3VzZXI6Imh0dHBzOi8vd3d3Lm1peGNsb3Vk LmNvbS97e2lkfX0ifSxteXNwYWNlOnt1c2VyOiJodHRwczovL215c3BhY2UuY29t L3t7aWR9fSJ9LG9kbm9rbGFzc25pa2lfcnU6e3VzZXI6Imh0dHA6Ly9vay5ydS97 e2lkfX0ifSxwZXJpc2NvcGU6e3VzZXI6Imh0dHBzOi8vd3d3LnBlcmlzY29wZS50 di97e2lkfX0ifSxwaW50ZXJlc3Q6e3VzZXI6Imh0dHA6Ly93d3cucGludGVyZXN0 LmNvbS97e2lkfX0ifSxwb2NrZXQ6e3VzZXI6Imh0dHA6Ly9nZXRwb2NrZXQuY29t L0B7e2lkfX0ifSxxdW9yYTp7dXNlcjoiaHR0cHM6Ly93d3cucXVvcmEuY29tL3By b2ZpbGUve3tpZH19In0scmF2ZWxyeTp7dXNlcjoiaHR0cDovL3d3dy5yYXZlbHJ5 LmNvbS97e2lkfX0ifSxyZWRkaXQ6e3VzZXI6Imh0dHBzOi8vd3d3LnJlZGRpdC5j b20ve3tpZH19In0scmVucmVuOnt1c2VyOiJodHRwOi8vcmVucmVuLmNvbS97e2lk fX0ifSxyc3M6e3VzZXI6Int7aWR9fSJ9LHNjb29waXQ6e3VzZXI6Imh0dHA6Ly93 d3cuc2Nvb3AuaXQvdS97e2lkfX0ifSxzaW5hd2VpYm86e3VzZXI6Imh0dHA6Ly93 ZWliby5jb20ve3tpZH19In0sc2t5cGU6e3VzZXI6InNreXBlOnt7aWR9fT9jYWxs In0sc2xhc2hkb3Q6e3VzZXI6Imh0dHA6Ly9zbGFzaGRvdC5vcmcvfnt7aWR9fSJ9 LHNsaWRlc2hhcmU6e3VzZXI6Imh0dHA6Ly93d3cuc2xpZGVzaGFyZS5uZXQve3tp ZH19In0sc25hcGNoYXQ6e3VzZXI6Imh0dHBzOi8vd3d3LnNuYXBjaGF0LmNvbS9h ZGQve3tpZH19In0sc291bmRjbG91ZDp7dXNlcjoiaHR0cHM6Ly9zb3VuZGNsb3Vk LmNvbS97e2lkfX0ifSxzcG90aWZ5Ont1c2VyOiJodHRwOi8vb3Blbi5zcG90aWZ5 LmNvbS97e2lkfX0ifSxzdGFja19leGNoYW5nZTp7dXNlcjoie3tpZH19In0sc3Rh Y2tfb3ZlcmZsb3c6e3VzZXI6Imh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS91c2Vy cy97e2lkfX0ifSxzdGVhbTp7dXNlcjoiaHR0cDovL3N0ZWFtY29tbXVuaXR5LmNv bS97e2lkfX0ifSxzdHVtYmxldXBvbjp7dXNlcjoiaHR0cDovL3d3dy5zdHVtYmxl dXBvbi5jb20ve3tpZH19In0sdGVsZWdyYW06e3VzZXI6Imh0dHBzOi8vdGVsZWdy YW0ubWUve3tpZH19In0sdHVtYmxyOnt1c2VyOiJodHRwOi8ve3tpZH19LnR1bWJs ci5jb20ifSx0d2l0Y2g6e3VzZXI6Imh0dHA6Ly93d3cudHdpdGNoLnR2L3t7aWR9 fSJ9LHR3aXR0ZXI6e3VzZXI6Imh0dHA6Ly90d2l0dGVyLmNvbS9pbnRlbnQvZm9s bG93P3NvdXJjZT1mb2xsb3didXR0b24mdmFyaWFudD0xLjAmc2NyZWVuX25hbWU9 e3tpZH19In0sdW50YXBwZDp7dXNlcjoiaHR0cHM6Ly91bnRhcHBkLmNvbS97e2lk fX0ifSx2aW1lbzp7dXNlcjoiaHR0cDovL3d3dy52aW1lby5jb20ve3tpZH19In0s dmluZTp7dXNlcjoiaHR0cHM6Ly92aW5lLmNvL3t7aWR9fSJ9LHZrOnt1c2VyOiJo dHRwOi8vdmsuY29tL3t7aWR9fSJ9LHdlY2hhdDp7dXNlcjoiaHR0cHM6Ly9zNy5h ZGR0aGlzLmNvbS9zdGF0aWMvd2VjaGF0X2ZvbGxvdy5odG1sP2lkPXt7aWR9fSJ9 LHdlaGVhcnRpdDp7dXNlcjoiaHR0cDovL3dlaGVhcnRpdC5jb20ve3tpZH19In0s d29yZHByZXNzOntibG9nOiJ7e2lkfX0ifSx4aW5nOnt1c2VyOiJodHRwczovL3d3 dy54aW5nLmNvbS97e2lkfX0ifSx5ZWxwOnt1c2VyOiJ7e2lkfX0ifSx5b3V0dWJl Ont1c2VyOiJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3VzZXIve3tpZH19P3N1Yl9j b25maXJtYXRpb249MSIsY2hhbm5lbDoiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9j aGFubmVsL3t7aWR9fT9zdWJfY29uZmlybWF0aW9uPTEiLGN1c3RvbToiaHR0cDov L3d3dy55b3V0dWJlLmNvbS9jL3t7aWR9fT9zdWJfY29uZmlybWF0aW9uPTEifSx5 dW1tbHk6e3VzZXI6Imh0dHA6Ly93d3cueXVtbWx5LmNvbS97e2lkfX0ifX19LGZ1 bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4g ZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaShlLHQsbixh KXt2YXIgaTtzd2l0Y2goZSl7Y2FzZSBtLlNBTUVfV0lORE9XOmxvY2F0aW9uLmhy ZWY9dDticmVhaztjYXNlIG0uTkVXX0ZVTExfV0lORE9XOmk9d2luZG93Lm9wZW4o dCwiX2JsYW5rIik7YnJlYWs7Y2FzZSBtLk5FV19DRU5URVJFRF9XSU5ET1c6YT1h fHx7fTt2YXIgbz1oW25dfHxoLmRlZmF1bHQscj1hLndpZHRofHxvLndpZHRoLHM9 YS5oZWlnaHR8fG8uaGVpZ2h0O2k9bC5kZWZhdWx0KHQscixzLGEubmFtZXx8IiIs ITApfXJldHVybiBpfWZ1bmN0aW9uIG8oZSx0LG4sYSxvKXt2YXIgcj1hcmd1bWVu dHMubGVuZ3RoPD01fHx2b2lkIDA9PT1hcmd1bWVudHNbNV0/e306YXJndW1lbnRz WzVdLGQ9ci5ldmVudERpc3BhdGNoZXIsYz12b2lkIDA9PT1kP19hdGUuZWQ6ZCxs PXIuZXZlbnREaXNwYXRjaGVyVGFyZ2V0LGY9dm9pZCAwPT09bD9hZGR0aGlzOmws aD1yLndpbmRvd0RhdGEsZz12b2lkIDA9PT1oP3t9OmgsXz1vLmZvbGxvd1VybHx8 cC5kZWZhdWx0KGUsdC5pZCx0LnVzZXJUeXBlKTtyLnRyYWNrJiYoci5jbG9uZSYm KGE9cy5kZWZhdWx0KCEwLHt9LGEpLG89cy5kZWZhdWx0KCEwLHt9LG8pKSxhLnBy b2R1Y3Q9bixhLnVzZXJuYW1lPWEudXNlcm5hbWV8fHdpbmRvdy5hZGR0aGlzX3B1 Ynx8YS5wdWJpZHx8IiIsYS5wdWJpZD1hLnVzZXJuYW1lLG8uc2VydmljZT1lLG8u Zm9sbG93VXJsPV8sdS5kZWZhdWx0KGUsMSxvLGEpKTt2YXIgdj12b2lkIDA7dj1h LnVpX3VzZV9zYW1lX3dpbmRvdyYmIWcudXNlRnVsbFdpbmRvdz9tLlNBTUVfV0lO RE9XOmEudWlfdXNlX2RpZmZlcmVudF9mdWxsX3dpbmRvd3x8Zy51c2VGdWxsV2lu ZG93P20uTkVXX0ZVTExfV0lORE9XOm0uTkVXX0NFTlRFUkVEX1dJTkRPVzt2YXIg Yj1pKHYsXyxlLGcpO3JldHVybiBjLmZpcmUoImFkZHRoaXMubWVudS5mb2xsb3ci LGYscy5kZWZhdWx0KHt9LG8se3NlcnZpY2U6ZSx1cmw6by51cmx8fG8uZm9sbG93 VXJsfHxffSkpLGJ9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1vO3ZhciByPW4o OCkscz1hKHIpLGQ9big2MzMpLHU9YShkKSxjPW4oNTc5KSxsPWEoYyksZj1uKDY1 MSkscD1hKGYpLGg9e3dvcmRwcmVzczp7d2lkdGg6NzIwLGhlaWdodDo1NzB9LGxp bmtlZGluOnt3aWR0aDo2MDAsaGVpZ2h0OjQwMH0sdHdpdHRlcjp7d2lkdGg6NTIw LGhlaWdodDo1MjB9LGRlZmF1bHQ6e3dpZHRoOjU1MCxoZWlnaHQ6NDUwfX0sbT17 U0FNRV9XSU5ET1c6IlNBTUVfV0lORE9XIixORVdfRlVMTF9XSU5ET1c6Ik5FV19G VUxMX1dJTkRPVyIsTkVXX0NFTlRFUkVEX1dJTkRPVzoiTkVXX0NFTlRFUkVEX1dJ TkRPVyJ9O2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsidXNl IHN0cmljdCI7dmFyIGE9big2NTUpLGk9big1KTtlLmV4cG9ydHM9ZnVuY3Rpb24o KXt2YXIgZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fHt9LHQ9d2luZG93LnNj cmVlbixuPTA7cmV0dXJuIGkoIm1vYiIpJiZhKHQuYXZhaWxIZWlnaHQpP249dC5h dmFpbEhlaWdodDphKHdpbmRvdy5pbm5lckhlaWdodCk/bj13aW5kb3cuaW5uZXJI ZWlnaHQ6YShlLmNsaWVudEhlaWdodCkmJihuPWUuY2xpZW50SGVpZ2h0KSxufX0s ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUp e3JldHVybiFpc05hTihlKX19LCwsLCxmdW5jdGlvbihlLHQsbil7dmFyIGE9big5 KSxpPW4oNjIpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsbixvKXt2YXIgcj13aW5k b3cuZGVjb2RlVVJJQ29tcG9uZW50O3JldHVybiB0PXR8fCIiLG49bnx8IiYiLG89 b3x8Ij0iLGEodC5zcGxpdChuKSxmdW5jdGlvbih0LGEpe3RyeXt2YXIgcz1hLnNw bGl0KG8pLGQ9aShyKHNbMF0pKSx1PWkocihzLnNsaWNlKDEpLmpvaW4obykpKTso dS5pbmRleE9mKG4pPi0xfHx1LmluZGV4T2Yobyk+LTEpJiYodT1lKHUsbixvKSks ZCYmKHRbZF09dSl9Y2F0Y2goZSl7fXJldHVybiB0fSx7fSl9fSwsLCwsLGZ1bmN0 aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zv cih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl09PT10KXJldHVybiEwO3Jl dHVybiExfX0sLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCxmdW5jdGlvbihlLHQpe2Z1 bmN0aW9uIG4oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGMucXVlcnlTZWxl Y3Rvcj9jLnF1ZXJ5U2VsZWN0b3IoZSl8fG51bGw6bnVsbH1mdW5jdGlvbiBhKGUp e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjLnF1ZXJ5U2VsZWN0b3JBbGw/Yy5x dWVyeVNlbGVjdG9yQWxsKGUpfHxbXTpbXX1mdW5jdGlvbiBpKGUpe3ZhciB0LG49 KGV8fHt9KS5jaGlsZE5vZGVzLGE9ZS50ZXh0Q29udGVudHx8ZS5pbm5lclRleHR8 fCIiLGk9L15ccyokLztpZighYSl7aWYoIW4pcmV0dXJuIiI7Zm9yKHQ9MDt0PG4u bGVuZ3RoO3QrKylpZihlPW5bdF0sIiN0ZXh0Ij09PWUubm9kZU5hbWUmJiFpLnRl c3QoZS5ub2RlVmFsdWUpKXthPWUubm9kZVZhbHVlO2JyZWFrfX1yZXR1cm4gYX1m dW5jdGlvbiBvKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHQ9ZS5zdWJz dHIoMCwxKTsiIyI9PT10P2U9Yy5nZXRFbGVtZW50QnlJZChlLnN1YnN0cigxKSk6 Ii4iPT09dCYmKGU9ZChsLCIqIixlLnN1YnN0cigxKSkpfXJldHVybiBlP2UgaW5z dGFuY2VvZiBBcnJheXx8KGU9W2VdKTplPVtdLGV9ZnVuY3Rpb24gcihlLHQpe2lm KGU9KGV8fHt9KS5wYXJlbnROb2RlLCF0fHwhZSlyZXR1cm4gZTtpZigwPT09dC5p bmRleE9mKCIuIikpZm9yKHQ9dC5zdWJzdHIoMSk7ZS5wYXJlbnROb2RlJiYoZS5j bGFzc05hbWV8fCIiKS5pbmRleE9mKHQpPDA7KWU9ZS5wYXJlbnROb2RlO2Vsc2Ug aWYoMD09PXQuaW5kZXhPZigiIyIpKWZvcih0PXQuc3Vic3RyKDEpO2UucGFyZW50 Tm9kZSYmKGUuaWR8fCIiKS5pbmRleE9mKHQpPDA7KWU9ZS5wYXJlbnROb2RlO3Jl dHVybiBlfWZ1bmN0aW9uIHMoZSx0LG4sYSxpKXt0PXQudG9VcHBlckNhc2UoKTt2 YXIgbyxyLHM9ZG9jdW1lbnQsZD1lPT09bCYmdVt0XT91W3RdOihlfHxsfHxzLmJv ZHkpLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpLGM9W107aWYoZT09PWwmJih1W3Rd PWQpLGkpZm9yKG89MDtvPGQubGVuZ3RoO28rKylyPWRbb10sKHIuY2xhc3NOYW1l fHwiIikuaW5kZXhPZihuKT4tMSYmYy5wdXNoKHIpO2Vsc2V7bj1uLnJlcGxhY2Uo L1wtL2csIlxcLSIpO3ZhciBmPW5ldyBSZWdFeHAoIlxcYiIrbisoYT8iXFx3KiI6 IiIpKyJcXGIiKTtmb3Iobz0wO288ZC5sZW5ndGg7bysrKXI9ZFtvXSxmLnRlc3Qo ci5jbGFzc05hbWUpJiZjLnB1c2gocil9cmV0dXJuIGN9ZnVuY3Rpb24gZChlLHQs bil7ZT1lfHxkb2N1bWVudCwiKiI9PT10JiYodD1udWxsKTtmb3IodmFyIGEsaT1j LmdldEVsZW1lbnRzQnlDbGFzc05hbWU/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5n ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG4pfTpjLnF1ZXJ5U2VsZWN0b3JBbGw/ZnVu Y3Rpb24oZSx0KXtyZXR1cm4gYy5xdWVyeVNlbGVjdG9yQWxsKCIuIituKX06ZnVu Y3Rpb24oKXtyZXR1cm5bXX0sbz1pKGUsbikscj10P25ldyBSZWdFeHAoIlxcYiIr dCsiXFxiIiwiaSIpOm51bGwscz1bXSxkPTAsdT1vLmxlbmd0aDtkPHU7ZCs9MSlh PW9bZF0sciYmIXIudGVzdChhLm5vZGVOYW1lKXx8cy5wdXNoKGEpO3JldHVybiBz fXZhciB1PXt9LGM9ZG9jdW1lbnQsbD1jLmJvZHk7ZS5leHBvcnRzPXtxdWVyeVNl bGVjdG9yOm4scXVlcnlTZWxlY3RvckFsbDphLGdldEVsZW1lbnRzQnlDbGFzc1By ZWZpeDpzLHNlbGVjdDpvLGdldFBhcmVudDpyLGdldFRleHQ6aX19LGZ1bmN0aW9u KGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXt9LGE9e2dldFBDT3M6ZnVuY3Rpb24o KXtyZXR1cm4gT2JqZWN0LmtleXMobil9LGFkZFBDTzpmdW5jdGlvbihlKXt2YXIg dDshbltlXSYmInN0cmluZyI9PXR5cGVvZiBlJiYvW2EtekEtWl0vLnRlc3QoZSkm Jih0PWUubWF0Y2goL1swLTlcLV0vKSx0JiYoZT1lLnNsaWNlKDAsdC5pbmRleCkp LG5bZV09ZSl9LGVtcHR5OmZ1bmN0aW9uKCl7bj17fX19O2UuZXhwb3J0cz1hfSxm dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7cmV0dXJuL2Fk ZHRoaXNcLmNvbSQvLnRlc3QobG9jYXRpb24uaG9zdG5hbWUpJiYiL2Rhc2hib2Fy ZCI9PT1sb2NhdGlvbi5wYXRobmFtZSYmL14jdG9vbFwtY29uZmlnLy50ZXN0KGxv Y2F0aW9uLmhhc2gpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bixlLmV4cG9y dHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv biBuKCl7cmV0dXJuIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wfHxkb2N1bWVudC5k b2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxU b3B9ZnVuY3Rpb24gYSgpe3JldHVybiBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnR8 fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50LnNjcm9sbExlZnR9dmFyIGk9InNjcm9sbCIsbz0hMSxyPXtzZXR1cDpmdW5j dGlvbigpe298fChyLl9zY3JvbGxUb3A9bigpLHIuX3Njcm9sbExlZnQ9YSgpLHIu X3Njcm9sbEludGVydmFsPXNldEludGVydmFsKHIuX2hhbmRsZVNjcm9sbCwyMCks bz0hMCl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChyLl9zY3Jv bGxJbnRlcnZhbCksci5fc2Nyb2xsSW50ZXJ2YWw9bnVsbCxvPSExfSxfaGFuZGxl U2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIGU9YSgpLHQ9bigpLG89ZS1yLl9zY3JvbGxM ZWZ0LHM9dC1yLl9zY3JvbGxUb3A7KG98fHMpJiZhZGR0aGlzLmV2ZW50cy5fZmly ZShpLG51bGwse3g6ZSx5OnQsZHg6byxkeTpzfSksci5fc2Nyb2xsTGVmdD1lLHIu X3Njcm9sbFRvcD10fSxfc2Nyb2xsVG9wOmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9w LF9zY3JvbGxMZWZ0OmRvY3VtZW50LmJvZHkuX3Njcm9sbExlZnQsX3Njcm9sbElu dGVydmFsOm51bGx9O2UuZXhwb3J0cz1yfSwsZnVuY3Rpb24oZSx0LG4peyJ1c2Ug c3RyaWN0Ijt2YXIgYT1uKDcpLGk9ZnVuY3Rpb24oKXt9O2EoaSwiZXZlbnRzIiks ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYSxpPW4oNSksbz17aXNC b3VuZDowLGlzUmVhZHk6MCxyZWFkeUxpc3Q6W10sb25SZWFkeTpmdW5jdGlvbigp e3ZhciBlO2lmKCFvLmlzUmVhZHkpe2U9by5yZWFkeUxpc3QuY29uY2F0KHdpbmRv dy5hZGR0aGlzX29ubG9hZHx8W10pLG8uaXNSZWFkeT0xO2Zvcih2YXIgdD0wO3Q8 ZS5sZW5ndGg7dCsrKWVbdF0uY2FsbCh3aW5kb3cpO28ucmVhZHlMaXN0PVtdfX0s YWRkTG9hZDpmdW5jdGlvbihlKXt2YXIgdD13aW5kb3cub25sb2FkOyJmdW5jdGlv biIhPXR5cGVvZiB3aW5kb3cub25sb2FkP3dpbmRvdy5vbmxvYWQ9ZTp3aW5kb3cu b25sb2FkPWZ1bmN0aW9uKCl7dCYmdCgpLGUoKX19LGJpbmRSZWFkeTpmdW5jdGlv bigpe2lmKCFvLmlzQm91bmQmJiFfYXRjLnhvbCl7aWYoby5pc0JvdW5kPTEsImNv bXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpcmV0dXJuIHZvaWQgc2V0VGlt ZW91dChvLm9uUmVhZHksMSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciYmIWko Im9wciIpJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9h ZGVkIixvLm9uUmVhZHksITEpO3ZhciBlPXdpbmRvdy5hZGR0aGlzX3Byb2R1Y3Q7 aWYoZSYmZS5pbmRleE9mKCJmIik+LTEpcmV0dXJuIHZvaWQgby5vblJlYWR5KCk7 aWYoaSgibXNpIikmJiFpKCJpZTkiKSYmd2luZG93PT09d2luZG93LnBhcmVudCYm IWZ1bmN0aW9uKCl7aWYoIW8uaXNSZWFkeSl7dHJ5e2RvY3VtZW50LmRvY3VtZW50 RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGUpe3JldHVybiB2b2lkIHNl dFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKX1vLm9uUmVhZHkoKX19KCksaSgi b3ByIikpe3ZhciB0PSEwLG49ZnVuY3Rpb24oKXtpZighby5pc1JlYWR5KXtmb3Io dmFyIGU9MDtlPGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDtlKyspaWYoZG9j dW1lbnQuc3R5bGVTaGVldHNbZV0uZGlzYWJsZWQpe3Q9ITEsc2V0VGltZW91dChu LDApO2JyZWFrfXQmJm8ub25SZWFkeSgpfX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0 ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbiwhMSl9aWYoaSgic2FmIikpe3ZhciBy OyFmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe2lmKCJsb2FkZWQiIT09ZG9jdW1l bnQucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9PWRvY3VtZW50LnJlYWR5U3RhdGUp cmV0dXJuIHZvaWQgc2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO2lmKHI9 PT1hKXtmb3IodmFyIGU9ZG9jdW1lbnQuZ24oImxpbmsiKSx0PTA7dDxlLmxlbmd0 aDt0KyspInN0eWxlc2hlZXQiPT09ZVt0XS5nZXRBdHRyaWJ1dGUoInJlbCIpJiZy Kys7dmFyIG49ZG9jdW1lbnQuZ24oInN0eWxlIik7cis9bi5sZW5ndGh9cmV0dXJu IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCE9PXI/dm9pZCBzZXRUaW1lb3V0 KGFyZ3VtZW50cy5jYWxsZWUsMCk6dm9pZCBvLm9uUmVhZHkoKX19KCl9by5hZGRM b2FkKG8ub25SZWFkeSl9fSxhcHBlbmQ6ZnVuY3Rpb24oZSl7by5iaW5kUmVhZHko KSxvLmlzUmVhZHk/ZS5jYWxsKHdpbmRvdyxbXSk6by5yZWFkeUxpc3QucHVzaChm dW5jdGlvbigpe3JldHVybiBlLmNhbGwod2luZG93LFtdKX0pfX07ZS5leHBvcnRz PW99LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDU3MCksaT1uKDU2Mik7ZS5leHBv cnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm cmFtZSIpO3JldHVybiBlPWV8fHt9LHQuc3JjPV9hdHIrInN0YXRpYy9hcGkuaHRt bCMiK2EoZSksdC5zdHlsZS5kaXNwbGF5PSJub25lIixpKHQpLHR9fSxmdW5jdGlv bihlLHQsbil7dmFyIGE9bigyMykubGlzdGVuLGk9e307ZS5leHBvcnRzPWZ1bmN0 aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxp LG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGQ9b1tv Lmxlbmd0aC0xXTtkJiZkLmNvbnN0cnVjdG9yPT09RnVuY3Rpb24mJihpPW8ucG9w KCksYT1yKyssc1t0XT9zW3RdW2FdPWk6KHNbdF09e30sc1t0XVthXT1pKSksZS5j b250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHt0eXBlOiJh cGkucmVxdWVzdCIsYXBpOnQsbWV0aG9kOm4sYXJnczpvLGlkOmF9KSxlLnNyYyl9 fWZ1bmN0aW9uIG4odCl7ZFt0XT9vKHRoaXMsdCxkW3RdKTooY1t0XT9jW3RdLnB1 c2godGhpcyk6Y1t0XT1bdGhpc10sZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdl KEpTT04uc3RyaW5naWZ5KHt0eXBlOiJhcGkuaW5mby5yZXF1ZXN0IixhcGk6dH0p LCIqIikpLHRoaXMuYWRkUmVhZHlMaXN0ZW5lcj1mdW5jdGlvbihlKXtkW3RdP2Uo KTp1W3RdP3VbdF0ucHVzaChlKTp1W3RdPVtlXX19ZnVuY3Rpb24gbyhlLG4sYSl7 dmFyIGksbztmb3IoaT0wO2k8YS5sZW5ndGg7aSsrKW89YVtpXSxlW29dPXQobixv KX1pZihlLl9fYXBpSUQmJmlbZS5fX2FwaUlEXSlyZXR1cm4gaVtlLl9fYXBpSURd O2UuX19hcGlJRD1TdHJpbmcoTWF0aC5yYW5kb20oKSk7dmFyIHI9MCxzPXt9LGQ9 e30sdT17fSxjPXt9O3JldHVybiBhKHdpbmRvdywibWVzc2FnZSIsZnVuY3Rpb24o dCl7dmFyIG4sYSxpPXQuZGF0YSxyPXQuc291cmNlO2lmKHI9PT1lLmNvbnRlbnRX aW5kb3cpe3RyeXtpPUpTT04ucGFyc2UoaSl9Y2F0Y2goZSl7aT1pfHx7fX1pZigi YXBpLnJlc3BvbnNlIj09PWkudHlwZSlzW2kuYXBpXSYmc1tpLmFwaV1baS5pZF0m JihzW2kuYXBpXVtpLmlkXS5jYWxsKHRoaXMsaS5yZXN1bHQpLGRlbGV0ZSBzW2ku YXBpXVtpLmlkXSk7ZWxzZSBpZigiYXBpLmluZm8iPT09aS50eXBlKXtmb3Iobj1j W2kuYXBpXSxkW2kuYXBpXT1pLm1ldGhvZHM7biYmbi5sZW5ndGg7KW8obi5wb3Ao KSxpLmFwaSxkW2kuYXBpXSk7Zm9yKDt1W2kuYXBpXSYmdVtpLmFwaV0ubGVuZ3Ro OykoYT11W2kuYXBpXS5wb3AoKSkoKX19fSksaVtlLl9fYXBpSURdPW4sbn19LGZ1 bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt2YXIgZT1kb2N1 bWVudC5sb2NhdGlvbi5ocmVmfHwiIjtyZXR1cm4gZS5yZXBsYWNlKC9eKGh0dHB8 aHR0cHMpOlwvXC8vLCIiKS5zcGxpdCgiLyIpLnNoaWZ0KCl9ZnVuY3Rpb24gYShl LHQsYSxpKXt2YXIgbz10aGlzO09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rp b24oZSl7dmFyIGE9dFtlXTtvW2VdPWZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJv dG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWVbZS5sZW5ndGgtMV0sbz12 b2lkIDA7dCYmdC5jb25zdHJ1Y3Rvcj09PUZ1bmN0aW9uJiYobz1lLnBvcCgpKTt2 YXIgcj1udWxsO3JldHVybiBpJiYhaS5jb250YWlucyhuKCkpfHwocj1hLmFwcGx5 KHRoaXMsZSkpLG8/dm9pZCBvKHIpOnJ9fSksdGhpcy5hZGRSZWFkeUxpc3RlbmVy PWZ1bmN0aW9uKGUpe2UmJmUuY29uc3RydWN0b3I9PT1GdW5jdGlvbiYmYShlKX19 dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1hLGUuZXhwb3J0cz10LmRlZmF1bHR9 LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDcwMSk7ZS5leHBvcnRzPXttZXRob2Rz OntnZXRJbnRlcmVzdHM6ZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRJbnRlcmVzdHMo KX0sZ2V0RGF0YTpmdW5jdGlvbigpe3ZhciBlPWEuZ2V0UGFyc2VkSW50ZXJlc3Rz KCk7cmV0dXJue2RhdGE6SlNPTi5zdHJpbmdpZnkoZXx8e30pfX19LG9uUmVhZHk6 ZnVuY3Rpb24oZSl7YS5vblJlYWR5KGUpfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6 e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBpPW4oNzAyKSxvPWEoaSks cj1bXSxzPSExLGQ9ITEsdT0hMSxjPXZvaWQgMDt0LmRlZmF1bHQ9e3N0YXJ0OmZ1 bmN0aW9uKGUpe3ZhciB0PXRoaXM7c3x8KHM9ITAsZS5lZC5hZGRFdmVudExpc3Rl bmVyKCJhZGR0aGlzLmxvanNvbi5yZXNwb25zZSIsZnVuY3Rpb24oZSl7ZD0hMCxl LmRhdGEuYnQyJiZ0LnNldChlLmRhdGEuYnQyKX0pLGUuZWQuYWRkRXZlbnRMaXN0 ZW5lcigiYWRkdGhpcy1pbnRlcm5hbC5kYXRhLmJ0MiIsZnVuY3Rpb24oZSl7dT0h MCxjfHx0LnNldChlLmRhdGEuYnQyKX0pKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu IGN9LHNldDpmdW5jdGlvbihlKXtpZihjPWUsdGhpcy5sb2FkZWQoKSl7dmFyIHQ9 ci5sZW5ndGgsbj12b2lkIDA7Zm9yKG49MDtuPHQ7bisrKXt2YXIgYT1yLnBvcCgp O2EoKX19fSxsb2FkZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gY3x8ZH0sZ2V0UGFyc2Vk SW50ZXJlc3RzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQoKTtpZighZSlyZXR1 cm57fTt2YXIgdD12b2lkIDA7dHJ5e3Q9e3RpbWVTdGFtcDpuZXcgRGF0ZSgxZTMq cGFyc2VJbnQoZS5zdWJzdHJpbmcoMCw4KSwxNikpLGJlaGF2aW9yczpbXX07Zm9y KHZhciBuPTgsYT12b2lkIDAsaT1vLmRlZmF1bHQ7bis5PD1lLmxlbmd0aDspe3Zh ciByPXt9O2E9ZS5zdWJzdHJpbmcobixuKzkpLHIuaWQ9aShhLnN1YnN0cmluZygw LDQpLDY0KSxyLmJ1Y2tldFdpZHRoPWkoYS5zdWJzdHJpbmcoNCw1KSw2NCksci5i dWNrZXRzPVtpKGEuY2hhckF0KDUpLDY0KSxpKGEuY2hhckF0KDYpLDY0KSxpKGEu Y2hhckF0KDcpLDY0KSxpKGEuY2hhckF0KDgpLDY0KV0sdC5iZWhhdmlvcnMucHVz aChyKSxuKz05fX1jYXRjaChlKXt0aGlzLnNldChudWxsKSx0PXt9fXJldHVybiB0 fSxnZXRJbnRlcmVzdHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFBhcnNlZElu dGVyZXN0cygpLHQ9W107cmV0dXJuIGUuYmVoYXZpb3JzPyhlLmJlaGF2aW9ycy5m b3JFYWNoKGZ1bmN0aW9uKGUpe3QucHVzaChlLmlkKX0pLHQpOnR9LG9uUmVhZHk6 ZnVuY3Rpb24oZSl7dGhpcy5sb2FkZWQoKT9lKCk6ci5wdXNoKGUpfX0sZS5leHBv cnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNzAzKTtlLmV4 cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixpPTA7Zm9yKG49MDtuPGUubGVuZ3Ro O24rKylpKj10LGkrPWEoZS5jaGFyQXQobikpO3JldHVybiBpfX0sZnVuY3Rpb24o ZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9IjAxMjM0NTY3ODlhYmNk ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla LV8iO3JldHVybiAxIT09ZS5sZW5ndGg/TmFOOnQuaW5kZXhPZihlKX19LGZ1bmN0 aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9big3MDUpO2UuZXhwb3J0cz1u ZXcgYShbMTI0NDU1NTExNiwyOTQwMDIyNjksMTQ3ODM0NTkwLC0zNzA3OTYwOTIs LTI4NTczMzc5XSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9 big3MDYpLGk9big1OCkuZ2V0RG9tYWluTm9Qcm90b2NvbCxvPS9eaHR0cHM/Olwv XC9sb2NhbGhvc3QoOlxkKyk/KFwvLispPyQvLHI9L15odHRwcz86XC9cLzEwXC4w XC4yXC4yKDpcZCspPyhcLy4rKT8kLztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFy IHQsbixzPXt9O2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspe2lmKHQ9ZVtuXSxwYXJz ZUludCh0KSE9PXQpdGhyb3cgbmV3IEVycm9yKCJBbGwgbWVtYmVycyBvZiBhIFNl Y3VyZVdoaXRlbGlzdCBtdXN0IGJlIGludGVnZXJzIGdlbmVyYXRlZCBieSBgZm93 bGVyTm9sbFZvSGFzaGAuIik7c1t0XT0xfXRoaXMuY29udGFpbnM9ZnVuY3Rpb24o ZSl7cmV0dXJuISFlLm1hdGNoKG8pfHwhIWUubWF0Y2gocil8fCEhc1thKGkoZSkp XX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFy IHQsbixhPWUubGVuZ3RoLGk9MjE2NjEzNjI2MSxvPS0xOysrbzxhOyl0PWUuY2hh ckNvZGVBdChvKSwobj00Mjc4MTkwMDgwJnQpJiYoaV49bj4+MjQsaSs9KGk8PDEp KyhpPDw0KSsoaTw8NykrKGk8PDgpKyhpPDwyNCkpLChuPTE2NzExNjgwJnQpJiYo aV49bj4+MTYsaSs9KGk8PDEpKyhpPDw0KSsoaTw8NykrKGk8PDgpKyhpPDwyNCkp LChuPTY1MjgwJnQpJiYoaV49bj4+OCxpKz0oaTw8MSkrKGk8PDQpKyhpPDw3KSso aTw8OCkrKGk8PDI0KSksaV49MjU1JnQsaSs9KGk8PDEpKyhpPDw0KSsoaTw8Nykr KGk8PDgpKyhpPDwyNCk7cmV0dXJuIGkrPWk8PDEzLGlePWk+PjcsaSs9aTw8Myxp Xj1pPj4xNyxpKz1pPDw1LDQyOTQ5NjcyOTUmaX19LGZ1bmN0aW9uKGUsdCxuKXtm dW5jdGlvbiBpKCl7ZnVuY3Rpb24gZSgpe3ZhciBlLHQsbixhLGksbztYfHxmfHwo Zj0hMCxTLmlzUGF5aW5nQ3VzdG9tZXIoKSYmKF9hdGUucHJvPSEwKSx0PVMuZ2V0 Q3VzdG9tTWVzc2FnZUNvbmZpZygpLG49Uy5nZXRMYXllcnNDb25maWcoKSxlPVMu Z2V0RmVlZHNUZXN0Q2VsbHMoKSx0JiZ1bi5tZXNzYWdlcyh0KSxlJiYobz1TLmlz UGF5aW5nQ3VzdG9tZXIoKSxpPWooZSxvKSxfYXRlLmZlZWRzLnNldFRlc3RDZWxs KGkpKSxuPyhhPWJlKHtjZnM6ITB9LG4pLHVuLmxheWVycyhhLHtjZnM6ITB9KSk6 dygpKX1mdW5jdGlvbiB0KCl7WD0hMCwkfHwodygpLHkoKSl9ZnVuY3Rpb24gYSh0 KXtpZigkPSEwLGNsZWFyVGltZW91dChKKSx0JiYoUnQodC5ibGt8fHUpLCFMdCgp KSl7dC5jb25maWc9bnVsbDt2YXIgbj1bXTtpZih0WyJwcm8tY29uZmlnIl0mJnRb InByby1jb25maWciXS5fZGVmYXVsdCl7dC5jb25maWc9dFsicHJvLWNvbmZpZyJd LGRlbGV0ZSB0WyJwcm8tY29uZmlnIl07Zm9yKHZhciBhIGluIHQuY29uZmlnLl9k ZWZhdWx0LndpZGdldHMpe3ZhciBvPXQuY29uZmlnLl9kZWZhdWx0LndpZGdldHNb YV07by53aWRnZXRJZCYmbi5wdXNoKG8ud2lkZ2V0SWQpfX10WyJ0b29sLWNvbmZp ZyJdJiZ0WyJ0b29sLWNvbmZpZyJdLl9kZWZhdWx0JiZ0WyJ0b29sLWNvbmZpZyJd Ll9kZWZhdWx0LndpZGdldHMmJih0LmNvbmZpZ3x8KHQuY29uZmlnPXtfZGVmYXVs dDp7d2lkZ2V0czp7fX19KSxPYmplY3Qua2V5cyh0WyJ0b29sLWNvbmZpZyJdLl9k ZWZhdWx0LndpZGdldHMpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gY2Uobixl KTwwfSkuZm9yRWFjaChmdW5jdGlvbihlKXt0LmNvbmZpZy5fZGVmYXVsdC53aWRn ZXRzW2VdPXRbInRvb2wtY29uZmlnIl0uX2RlZmF1bHQud2lkZ2V0c1tlXX0pLGRl bGV0ZSB0WyJ0b29sLWNvbmZpZyJdKSx0LnBlckNvbmZpZz1OLmdldENvbmZpZyh0 KSxTLnVwZGF0ZUNhY2hlKHQpLGUoKSxpKHQpLHkoKX19ZnVuY3Rpb24gaShlKXtf YXRlLmVkLmZpcmUoImFkZHRoaXMuYm9vc3QucmVzcG9uc2UiLG51bGwsZSl9dmFy IG89big2OTEpO2lmKEp0LmdvdigpLCFwdCgpKXtzbi5hZGR0aGlzJiZzbi5hZGR0 aGlzLnRpbWVyJiYoc24uYWRkdGhpcy50aW1lci5tYWluPShuZXcgRGF0ZSkuZ2V0 VGltZSgpKSxULnN0YXJ0KF9hdGUpO3ZhciByLHMsZCx1PXp0LmNvbnRhaW5zKGp0 LmR1KSxjPXNuLmFkZHRoaXNfY29uZmlnfHx7fSxsPWp0LnRpdGxlLGY9ITEscD0i dW5kZWZpbmVkIiE9dHlwZW9mIF9hdGUucmRyP19hdGUucmRyOmp0LmRyfHwiIixo PWp0LmR1fHxudWxsLG09KGp0LmRoLGp0LmR1fHxudWxsKSxnPTAsXz1fYXRlLnRy YWNrLmV4dHJhY3RPdXJQYXJhbWV0ZXJzKHApLHY9W10sYj0hIV9hdGUuY29va2ll LnJjaygibmFiYyIpLHg9Xy5jZmMsaz1fLmFiLEM9Xy5wb3M/cGFyc2VJbnQoXy5w b3MsMTApOm51bGwsQT1fLnRvdD9wYXJzZUludChfLnRvdCwxMCk6bnVsbCxFPV8u cnNpcSxEPV8ucnNpLEw9Xy5yeGksUj1fLnJzYy5zcGxpdCgiJiIpLnNoaWZ0KCku c3BsaXQoIiUiKS5zaGlmdCgpLnJlcGxhY2UoL1teYS16MC05X10vZywiIiksUD1f LmdlbixCPV8uZnVpZCxGPV8uY3NpLFU9ZnVuY3Rpb24oKXtfYXRlLnRyYWNrLnBj cy5sZW5ndGh8fF9hdGUudHJhY2suYXBjKHNuLmFkZHRoaXNfcHJvZHVjdHx8Im1l bi0zMDAiKSxkLnBjPV9hdGUudHJhY2sucGNzLmpvaW4oIiwiKSxfYXRlLnRyYWNr LnBjcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe28uYWRkUENPKGUpfSl9LFc9c24ubGpl cHx8ITEsSD1fYXRlLnB1YigpLHE9NWUzOyhofHwiIikuaW5kZXhPZihfYXRyKT09 PS0xJiYoX2F0ZS5jb29raWUudmlldy51cGRhdGUoITApLF9hdGUuY29va2llLnZp c2l0LnVwZGF0ZSgpKSwidHdlZXQiPT09UiYmKFI9InR3aXR0ZXIiKSxfLnJzYz1S LHNuLmFkZHRoaXNfcHJvZHVjdCYmKF9hdGUudHJhY2suYXBjKGFkZHRoaXNfcHJv ZHVjdCksYWRkdGhpc19wcm9kdWN0LmluZGV4T2YoImZ4ZSIpPT09LTEmJmFkZHRo aXNfcHJvZHVjdC5pbmRleE9mKCJia20iKT09PS0xJiYoX2F0ZS50cmFjay5zcGM9 YWRkdGhpc19wcm9kdWN0KSk7dmFyIFY9X2F0ZS5zaGFyZS5saW5rcy5jYW5vbmlj YWw7ViYmKDAhPT1WLmluZGV4T2YoImh0dHAiKT8obT0oaHx8IiIpLnNwbGl0KCIv LyIpLnBvcCgpLnNwbGl0KCIvIiksMD09PVYuaW5kZXhPZigiLyIpP209bS5zaGlm dCgpK1Y6KG0ucG9wKCksbT1tLmpvaW4oIi8iKSsiLyIrViksbT1kb2N1bWVudC5s b2NhdGlvbi5wcm90b2NvbCsiLy8iK20pOm09VixfYXRlLnVzdSgwLDEpKSxtPW0u c3BsaXQoIiN7Iikuc2hpZnQoKSxYZShtKSxtJiYoX2F0ZS5zaGFyZS5saW5rcy5j YW5vbmljYWw9bSk7dmFyIEc9YWRkdGhpc19zaGFyZS52aWV3X3VybF90cmFuc2Zv cm1zfHxhZGR0aGlzX3NoYXJlLnRyYWNrX3VybF90cmFuc2Zvcm1zfHxhZGR0aGlz X3NoYXJlLnVybF90cmFuc2Zvcm1zfHx7fTtpZihHLmRlZnJhZz0xLEcmJihtPV9h dGUudHJhY2subWd1KG0sRykpLEQmJihEPUQuc3Vic3RyKDAsOCkrQiksX2F0ZS5i cm8ubW9kPT09LTEpe3ZhciBaPWRvY3VtZW50LmNvbXBhdE1vZGU7aWYoWil7dmFy IEs9MTsiQmFja0NvbXBhdCI9PT1aP0s9MjoiQ1NTMUNvbXBhdCI9PT1aJiYoSz0w KSxfYXRlLmJyby5tb2RlPUssX2F0ZS5icm8ubXNpJiYoX2F0ZS5icm8ubW9kPUsp fX1fYXRlLmRyPV9hdGUudHJ1bmNhdGVVUkwocCwiZnIiKSxfYXRlLmR1PV9hdGUu dHJ1bmNhdGVVUkwobSwiZnAiKSxfYXRlLmR0PWw9c24uYWRkdGhpc19zaGFyZS50 aXRsZSxfYXRlLnNtZD17cnNpOkQscnhpOkwsZ2VuOlAscnNjOlJ9LHNuLmFkZHRo aXNfc2hhcmUuc21kPV9hdGUuc21kLF9hdGUudXBtJiYoc24uYWRkdGhpc19zaGFy ZS5zbWQuZHI9X2F0ZS5kciksX2F0ZS51cG0mJihzbi5hZGR0aGlzX3NoYXJlLnNt ZC5zdGE9X2F0ZS50cmFjay5zdGEoKSksX2F0ZS5jYj1fYXRlLmFkLmNsYSgpLF9h dGUua3c9MSE9PV9hdGUuY2I/X2F0ZS5hZC5rdygpOiIiLF9hdGUuZGg9anQuZGgs X2F0ZS5zc2w9aCYmMD09PWguaW5kZXhPZigiaHR0cHMiKT8xOjAsX2F0ZS5hYj1r fHxzbi5hZGR0aGlzX2FifHwiLSIsX2F0ZS5pcGM9ITAsc24uYWRkdGhpc19jb25m aWc9c24uYWRkdGhpc19jb25maWd8fHt9O3ZhciBKLCQ9ITEsWD0hMSxlZT0oIXNu LmFkZHRoaXNfY29uZmlnLmlnbm9yZV9zZXJ2ZXJfY29uZmlnfHxzbi5hZGR0aGlz X2NvbmZpZy5jYWxsX2Jvb3N0KSYmSDtpZihlZSl7Sj1zZXRUaW1lb3V0KHQscSks SS5zdGFydChfYXRlKSxzbi5hZGR0aGlzX2NvbmZpZy5pZ25vcmVfc2VydmVyX2Nv bmZpZz9fYXRlLnRyYWNrLmNvbmZpZ19yZXNwPWk6X2F0ZS50cmFjay5jb25maWdf cmVzcD1hO3ZhciB0ZT0iLy9tLmFkZHRoaXNlZGdlLmNvbS9saXZlL2Jvb3N0LyIr X2F0ZS5wdWIoKSsiL19hdGUudHJhY2suY29uZmlnX3Jlc3AiO29lKHRlKX1pZihk PXtyYW5kOl9hdGUucmFuZCxpaXQ6KG5ldyBEYXRlKS5nZXRUaW1lKCksdG1yOnZl KChzbi5hZGR0aGlzfHx7fSkudGltZXJ8fHt9KSxjYjpfYXRlLmNiLGNkbjpfYXRj LmNkbixtZDpfYXRlLmJyby5tb2RlLGt3Ol9hdGUua3csYWI6X2F0ZS5hYixkaDpf YXRlLmRoLGRyOl9hdGUuZHIsZHU6X2F0ZS5kdSxocmVmOmp0LmR1LnNwbGl0KCI/ IilbMF0uc3BsaXQoIiMiKVswXSxkdDpsLGRiZzp6LmxldmVsLGNhcDp2ZSh7dGM6 Yy5kYXRhX3RyYWNrX3RleHRjb3B5PzE6MCxhYjpjLmRhdGFfdHJhY2tfYWRkcmVz c2Jhcj8xOjB9KSxpbnN0Ol9hdGUuaW5zdCxqc2w6X2F0ZS50cmFjay5qc2woKSxw cm9kOl9hdGUudHJhY2sucHJvZCgpLGxuZzpRKCksb2d0Ol9hdGUuYWQuZ29nKCku am9pbigiLCIpLHBjOnNuLmFkZHRoaXNfcHJvZHVjdHx8Im1lbiIscHViOl9hdGUu cHViKCksc3NsOl9hdGUuc3NsLHNpZDpfYXRlLnRyYWNrLnNzaWQoKSxzcmY6X2F0 Yy5mYW1wLHZlcjozMDAseGNrOl9hdGMueGNrfHwwLHh0cjpfYXRjLnh0cnx8MCxv ZzpfYXRlLmFkLm9nKCksY3NpOkZ9LHVuLmFkZEV2ZW50TGlzdGVuZXIoImFkZHRo aXMtaW50ZXJuYWwuZGF0YS5yZHkiLGZ1bmN0aW9uKCl7X2F0ZS5jYnx8dW4udXNl ci5pc09wdGVkT3V0KCl8fF9hdGUuY29va2llLmlzZ3YoKXx8U3Quc2V0dXAoKX0p LF9hdGMubm91cCYmKGQubm91cD0xKSxfYXRlLmRjcD09PU51bWJlci5NQVhfVkFM VUUmJihkLmRucD0xKSxfYXRlLnBpeHUmJihkLnBpeHU9X2F0ZS5waXh1KSxfYXRl LnRybC5sZW5ndGgmJihkLnRybD1fYXRlLnRybC5qb2luKCIsIikpLF9hdGMucmV2 JiYoZC5yZXY9X2F0Yy5yZXYpLGQuY3Q9X2F0ZS5jdD1jLmRhdGFfdHJhY2tfY2xp Y2tiYWNrfHxjLmRhdGFfdHJhY2tfbGlua2JhY2t8fF9hdGUudHJhY2suY3RwKGQu cGMsYyk/MTowLF9hdGUucHJ2JiYoZC5wcnY9dmUoX2F0ZS5wcnYpKSxSJiYoZC5z cj1SKSxfYXRlLnRyYWNrLnNzYyhSKSxXJiYoZC5samVwPVcpLF9hdGUuc3VifHwo eD8odi5wdXNoKF9hdGUudHJhY2suZmN2KCJwbHYiLDEpKSx2LnB1c2goX2F0ZS50 cmFjay5mY3YoInR5cCIsImxuayIpKSxpc05hTihDKXx8di5wdXNoKF9hdGUudHJh Y2suZmN2KCJ0dHBvcyIsQykpLGlzTmFOKEEpfHx2LnB1c2goX2F0ZS50cmFjay5m Y3YoInR0bmwiLEEpKSxGJiZ2LnB1c2goX2F0ZS50cmFjay5mY3YoImNzaSIsRikp LHYucHVzaChfYXRlLnRyYWNrLmZjdigicGNvIiwic3RyaW5nIj09dHlwZW9mIHg/ eDoiY2ZkLTEuMCIpKSx2LnB1c2goX2F0ZS50cmFjay5mY3YoInB1ciIsX2F0ZS50 cmFjay5tZ3UobSx7ZGVmcmFnOjF9KSkpLF9hdGUuZHImJihkLnByZT1fYXRlLnRy YWNrLm1ndShfYXRlLmRyLHtkZWZyYWc6MX0pKSxkLmNlPXYuam9pbigiLCIpKTpE JiZCIT1fYXRlLmFkLmd1YigpPyh2LnB1c2goX2F0ZS50cmFjay5mY3YoInBsdiIs MSkpLHYucHVzaChfYXRlLnRyYWNrLmZjdigicnNpIixEKSksdi5wdXNoKF9hdGUu dHJhY2suZmN2KCJnZW4iLFApKSx2LnB1c2goX2F0ZS50cmFjay5mY3YoImFiYyIs MSkpLHYucHVzaChfYXRlLnRyYWNrLmZjdigiZmN1IixfYXRlLmFkLmd1YigpKSks di5wdXNoKF9hdGUudHJhY2suZmN2KCJyY2YiLGp0Lmhhc2gpKSxkLmNlPXYuam9p bigiLCIpLGc9ImFkZHJlc3NiYXIiLF8ucnNjPVI9ImFkZHJlc3NiYXIiKTooTHx8 RXx8UikmJih2LnB1c2goX2F0ZS50cmFjay5mY3YoInBsdiIsMSkpLFImJnYucHVz aChfYXRlLnRyYWNrLmZjdigicnNjIixSKSksTD92LnB1c2goX2F0ZS50cmFjay5m Y3YoInJ4aSIsTCkpOkUmJnYucHVzaChfYXRlLnRyYWNrLmZjdigicnNpIixFKSks KEV8fEwpJiZ2LnB1c2goX2F0ZS50cmFjay5mY3YoImdlbiIsUCkpLGQuY2U9di5q b2luKCIsIiksZz1SfHwidW5rbm93biIpKSxfYXRlLnRyYWNrLnRzLnJlc2V0KF8p LF9hdGUuZmVlZHMuX2FkKCkmJl9hdGUudHJhY2suaGlzdC5sb2coanQuZHUuc3Bs aXQoIiMiKVswXSksZyYmKF9hdGUuYmFtcD49MCYmKGQuY2xrPTEsX2F0ZS5kY3Ah PT1OdW1iZXIuTUFYX1ZBTFVFJiYoX2F0ZS5kY3A9ZC5nZW49X2F0ZS5hZC50eXBl LkNMSUNLKSksX2F0ZS5lZC5maXJlKCJhZGR0aGlzLnVzZXIuY2xpY2tiYWNrIixz bi5hZGR0aGlzfHx7fSx7c2VydmljZTpnLGhhc2g6X2F0ZS5oYXNofSkpLHNuLmF0 X25veGxkfHwoZC54bGQ9MSksX2F0ZS51cG0mJihkLnhkPTEpLCFiJiZzbi5oaXN0 b3J5JiYiZnVuY3Rpb24iPT10eXBlb2YgaGlzdG9yeS5yZXBsYWNlU3RhdGUmJigh X2F0ZS5icm8uY2hyfHxfYXRlLmJyby5jaGIpJiYoYy5kYXRhX3RyYWNrX2FkZHJl c3NiYXJ8fGMuZGF0YV90cmFja19hZGRyZXNzYmFyX3BhdGhzKSYmKGh8fCIiKS5z cGxpdCgiIyIpLnNoaWZ0KCkhPXAmJihoLmluZGV4T2YoIiMiKT09PS0xfHxEfHxf Lmhhc2gmJkx8fHgpKXt2YXIgbmUsaWU9anQucGF0aG5hbWUranQuc2VhcmNofHwi IixyZT0iLyIhPWllO2lmKGMuZGF0YV90cmFja19hZGRyZXNzYmFyX3BhdGhzKXty ZT0wO2Zvcih2YXIgc2U9MDtzZTxjLmRhdGFfdHJhY2tfYWRkcmVzc2Jhcl9wYXRo cy5sZW5ndGg7c2UrKylpZihuZT1uZXcgUmVnRXhwKGMuZGF0YV90cmFja19hZGRy ZXNzYmFyX3BhdGhzW3NlXS5yZXBsYWNlKC9cKi9nLCIuKiIpKyIkIiksbmUudGVz dChpZSkpe3JlPTE7YnJlYWt9fSFyZXx8RCYmIUplLmlzQ1VJRE9sZGVyVGhhbihE LDUpfHwocj1fYXRlLnRyYWNrLmN1cihqdC5kdS5zcGxpdCgiIyIpLnNoaWZ0KCks bnVsbCxfYXRlLnRyYWNrLnNzaWQoKSksaGlzdG9yeS5yZXBsYWNlU3RhdGUoe2Q6 bmV3IERhdGUsZzpQfSxqdC50aXRsZSxyKSxkLmZjdT1yLnNwbGl0KCIjLiIpLnBv cCgpKX1zbi5hZGR0aGlzJiZzbi5hZGR0aGlzLnRpbWVyJiYoc24uYWRkdGhpcy50 aW1lci5pZnI9KG5ldyBEYXRlKS5nZXRUaW1lKCksZC50bXImJihkLnRtcis9IiZp ZnI9Iitzbi5hZGR0aGlzLnRpbWVyLmlmcikpLFUoKTt2YXIgdWU9big4MDApKF9h dGUsInJvIik7dWUoImNhbGwtbG9qc29uIixmdW5jdGlvbigpe3ZhciBlPWp0LmR1 LmluZGV4T2YoX2F0cisid2l4IikhPT0tMSx0PWp0LmR1LmluZGV4T2YoX2F0cikh PT0tMTtpZighdHx8ZSl7dmFyIGEsaSxvPW4oNzU3KSxyPShuKDc2MCksbig3NzEp KTt3aW5kb3cuYWRkdGhpc19jb25maWcud2l4PyhhPW8od2luZG93LmFkZHRoaXNf Y29uZmlnLndpeC51cmwpLGk9byh3aW5kb3cuYWRkdGhpc19jb25maWcud2l4LnJl ZmVycmVyKSk6KGE9byhkLmR1KSxpPW8oZC5kcikpO3ZhciBsPXtzaTpkLnNpZCxi a2w6dT8xOjAsYmw6MHwoYy5kYXRhX3VzZV9jb29raWVzIT09ITEmJjEpfChjLmRh dGFfdHJhY2tfdGV4dGNvcHk9PT0hMCYmMil8KGMuZGF0YV90cmFja19hZGRyZXNz YmFyPT09ITAmJjQpLHB1YjpkZWNvZGVVUklDb21wb25lbnQoWnQoKSkscmV2OmQu cmV2LGxuOlkoKSxwYzpkLnBjLHBkdDpyLmdldFByZUR3ZWxsVGltZSgpLGNiOmQu Y2I/MTowLHV1ZDpkLnV1ZD8xOk0sYWI6ZC5hYixkcDphLmRvbWFpbixkcjphLmRv bWFpbj09PWkuZG9tYWluP006aS5kb21haW4sZnA6ZGUoYS5wYXRoLCJmcCIsNTAw KSxmcjppLnBhdGgscHJvOmQucHJvPzE6TSxmY3U6ZC5mY3Usb2Y6Ty5nZXRWYWx1 ZSgpLG50OmQubnQsdHI6ZC50cixzcjpkLnNyLHBkOmQucHJvZD8xOjAsaXJ0OnFl LmNsYSgpPjA/MTowLHZjbDpfYXRlLmNvb2tpZS52aWV3LmNsYSgpLG1kOmQubWQs Y3Q6ZC5jdCx0Y3Q6Yy5kYXRhX3RyYWNrX3RleHRjb3B5PzE6MCxhYnQ6Yy5kYXRh X3RyYWNrX2FkZHJlc3NiYXI/MTowLGNkbjpkLmNkbixsbmxjOlEoKS5zcGxpdCgi LSIpLnNsaWNlKDEpWzBdLGF0M25vOmQuYXQzbm8scGk6ZC5pbnN0LHZyOmQudnIs cmI6dnQoZC5kcixfYXRlLmRoP19hdGUuZGguc3BsaXQoIi4iKS5zbGljZSgtMiku am9pbigiLiIpOm51bGwsX2F0ZS5zc2wpLGdlbjpuKDc2MSkuVklFVyxzaWQ6ZC5z aWQsY2hyOl9hdGUuYWQuZ2NoKCksbWs6IiIhPT1kLmt3P2Qua3c6TSxyZWY6ZC5y ZWYsY29sYzoobmV3IERhdGUpLmdldFRpbWUoKSx3cHY6d2luZG93LndwX3Byb2R1 Y3RfdmVyc2lvbix3cGJ2OndpbmRvdy53cF9ibG9nX3ZlcnNpb24sYWRkdGhpc19w bHVnaW5faW5mbzp3aW5kb3cuYWRkdGhpc19wbHVnaW5faW5mbyxqc2w6ZC5qc2ws dXZzOl9hdGUuY29va2llLnJjaygiX19hdHV2cyIpLHNraXBiOjF9O1Muc2V0TG9q c29uUmVxdWVzdE9iamVjdChsKSxxdChsLHtvbkxvYWQ6ZnVuY3Rpb24oZSl7aWYo UnQoZS5ibGt8fHUpLCFMdCgpKXt2YXIgdD1lWyJwcm8tY29uZmlnIl18fHt9O19h dGUuZWQuZmlyZSgiYWRkdGhpcy5sb2pzb24ucmVzcG9uc2UiLG51bGwse2J0Mjpl LmJ0Mixsb2M6ZS5sb2MsY29uZmlnOnQuX2RlZmF1bHQ/dDpudWxsLHBybzplLnBy b3x8ITEscGVyQ29uZmlnOmVbInBlci1jb25maWciXXx8e30sc3Vic2NyaXB0aW9u OmUuc3Vic2NyaXB0aW9uLGN1c3RvbU1lc3NhZ2VzOmUuY3VzdG9tTWVzc2FnZXN9 KSxfYXRlLmVkLmFmdGVyKCJhZGR0aGlzLWludGVybmFsLmZyYW1lLnJlYWR5Iixm dW5jdGlvbigpe0h0LmdldFBvc3RNYW4oKS5wb3N0KEpTT04uc3RyaW5naWZ5KHty ZW1vdGVFdmVudDoiYWRkdGhpcy5sb2pzb24ucmVzcG9uc2UiLGRhdGE6ZX0pKSxl ZXx8dygpLHkoKX0pfX0sb25FcnJvcjpmdW5jdGlvbihlKXtjb25zb2xlLmVycm9y KGUpfSxvbkRhdGFFcnJvcjpmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpfX0p O3ZhciBlPWp0LmR1LmluZGV4T2YoX2F0cisid2l4IikhPT0tMSx0PWp0LmR1Lmlu ZGV4T2YoX2F0cikhPT0tMTt0JiYhZXx8X2F0ZS5zdWJ8fChzPV9hdGUudHJhY2su Y3RmKCkscy5zcmM9RXQrIiMiK3ZlKGQpLEh0LmNyZWF0ZVBvc3RNYW4ocyxFdCks SHQuZ2V0Q29udGFpbmVyKCkuYXBwZW5kQ2hpbGQocyksX2F0ZS50cmFjay5zdGYo cykpfX0pLHVuLl9wbWguZmx1c2hlZD0xLHVuLl9wbWguZmx1c2goX2F0ZS5wbWgs X2F0ZSksImVuIiE9PVkoKSYmYWUuZ2V0KCl9fWZ1bmN0aW9uIG8oZSl7cmV0dXJu IGUuaW5kZXhPZigiJiIpPi0xJiYoZT1lLnJlcGxhY2UoLyYoW2FlaW91XSkuKzsv ZywiJDEiKSksZX1mdW5jdGlvbiByKGUsdCl7aWYodCYmZSE9PXQpZm9yKHZhciBu IGluIHQpZVtuXT09PWtuJiYoZVtuXT10W25dKX1mdW5jdGlvbiBzKCl7aWYoX2F0 ZS5icm8ubXNpJiYhZG4uZ2V0RWxlbWVudEJ5SWQoImF0MzAwYmhvdmVyaWVmaWx0 ZXIiKSl7dmFyIGU9ZG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSx0 PWRuLmNlKCJzdHlsZSIpLG49ZG4uY3JlYXRlVGV4dE5vZGUoIi5hdDMwMGI6aG92 ZXIsLmF0MzAwYnM6aG92ZXIge2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTt9Iik7 dC5pZD0iYXQzMDBiaG92ZXJpZWZpbHRlciIsdC50eXBlPSJ0ZXh0L2NzcyIsdC5z dHlsZVNoZWV0P3Quc3R5bGVTaGVldC5jc3NUZXh0PW4ubm9kZVZhbHVlOnQuYXBw ZW5kQ2hpbGQobiksZS5hcHBlbmRDaGlsZCh0KX19ZnVuY3Rpb24gZChlKXt2YXIg dD1fYXRlLnV0aWwucGFyZW50KGUsIi5hZGR0aGlzX3Rvb2xib3giKTtyZXR1cm4o dC5jbGFzc05hbWV8fCIiKS5zZWFyY2goLzMyeDMyL2kpPi0xfHwoZS5jbGFzc05h bWV8fCIiKS5zZWFyY2goLzMyeDMyL2kpPi0xfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9 X2F0ZS51dGlsLnBhcmVudChlLCIuYWRkdGhpc190b29sYm94Iik7cmV0dXJuKHQu Y2xhc3NOYW1lfHwiIikuc2VhcmNoKC8yMHgyMC9pKT4tMXx8KGUuY2xhc3NOYW1l fHwiIikuc2VhcmNoKC8yMHgyMC9pKT4tMX1mdW5jdGlvbiBjKGUpe3ZhciB0PShl LnBhcmVudE5vZGV8fHt9KS5jbGFzc05hbWV8fCIiLG49ZS5jb25mJiZlLmNvbmYu cHJvZHVjdCYmdC5pbmRleE9mKCJ0b29sYm94Iik9PT0tMT9lLmNvbmYucHJvZHVj dDoidGJ4IisoZS5jbGFzc05hbWUuaW5kZXhPZigiMzJ4MzIiKT4tMXx8dC5pbmRl eE9mKCIzMngzMiIpPi0xPyIzMiI6IiIpKyItMzAwIjtyZXR1cm4gX2F0ZS50cmFj ay5hcGMobiksbn1mdW5jdGlvbiBsKGUsdCl7dmFyIG49e307Zm9yKHZhciBhIGlu IGUpdFthXT9uW2FdPXRbYV06blthXT1lW2FdO3JldHVybiBufWZ1bmN0aW9uIGYo ZSx0LG4sYSl7dmFyIGk9ZG9jdW1lbnQuY2UoImltZyIpO3JldHVybiBpLndpZHRo PWUsaS5oZWlnaHQ9dCxpLmJvcmRlcj0wLGkuYWx0PW4saS5zcmM9YSxpfWZ1bmN0 aW9uIHAoZSl7dmFyIHQ9KGV8fHt9KS5zZXJ2aWNlc19jdXN0b207aWYodCl7dCBp bnN0YW5jZW9mIEFycmF5fHwodD1bdF0pO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7 bisrKXt2YXIgYT10W25dO2EubmFtZSYmYS5pY29uJiZhLnVybCYmKCJvYmplY3Qi PT10eXBlb2YgYS51cmwmJihhLnVybD1fYXRlLnV0aWwudG9LVihhLnVybCkpLGEu Y29kZT1hLnVybD1hLnVybC5yZXBsYWNlKC8gL2csIiIpLGEuY29kZT1hLmNvZGUu c3BsaXQoIi8vIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLnNwbGl0KCIvIiku c2hpZnQoKS50b0xvd2VyQ2FzZSgpLENuW2EuY29kZV09YSl9fX1mdW5jdGlvbiBo KGUsdCl7cmV0dXJuIENuW2VdfHx7fX1mdW5jdGlvbiBtKGUsdCxhLGkpe2lmKFhl KCksZSl7dD10fHx7fSxhPWF8fHt9O3ZhciBzPW4oNjQ3KSxtPXQuY29uZnx8X24s Zz10LnNoYXJlfHx2bixfPW5uKCJtb2IiKT9udWxsOmEub25tb3VzZW92ZXIsdj1h Lm9ubW91c2VvdXQsYj1hLm9uY2xpY2ssdz1hLmludGVybmFsLHg9TSx5PWEuc2lu Z2xlc2VydmljZXx8bS5zZXJ2aWNlLGs9big2NDUpO3k/Yj09PXgmJihiPU5uW3ld P2Z1bmN0aW9uKGUsdCxuKXt2YXIgYT1sKG4sQW4pO3JldHVybiBhZGR0aGlzX29w ZW4oZSx5LGEudXJsLGEudGl0bGUsbCh0LE1uKSxhKX06am5beV0/ZnVuY3Rpb24o ZSx0LG4pe3ZhciBhPWwobixBbik7cmV0dXJuIGFkZHRoaXNfc2VuZHRvKHksbCh0 LE1uKSxhKX06RG5beV0/ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWwobixBbik7cmV0 dXJuIHMoeSxhLHQsNzM1KX06bnVsbCk6YS5ub2V2ZW50c3x8KGEubm9ob3Zlcnx8 YWRkdGhpc19jb25maWcudWlfY2xpY2s/Yj09PXgmJihiPWZ1bmN0aW9uKGUsdCxu KXtyZXR1cm4gYWRkdGhpc19vcGVuKGUsIiIsbnVsbCxudWxsLGwodCxNbiksbChu LEFuKSl9KTooXz09PXgmJihfPWZ1bmN0aW9uKGUsdCxuKXtpZigvYnV0dG9uXyg/ OmNvbXBhY3R8ZW1haWx8bGluaylcYi8udGVzdChlLmNsYXNzTmFtZSkmJnh0KG4p LCFhZGR0aGlzX2NvbmZpZy51aV9kaXNhYmxlKXJldHVybiBhZGR0aGlzX29wZW4o ZSwiIixudWxsLG51bGwsbCh0LE1uKSxsKG4sQW4pKX0pLHY9PT14JiYodj1mdW5j dGlvbihlKXtyZXR1cm4gYWRkdGhpc19jbG9zZSgpfSksYj09PXgmJihiPWZ1bmN0 aW9uKGUsdCxuKXtyZXR1cm4gYWRkdGhpc19zZW5kdG8oIm1vcmUiLGwodCxNbiks bChuLEFuKSl9KSkpLGU9X2F0ZS51dGlsLnNlbGVjdChlKTtmb3IodmFyIEM9MDtD PGUubGVuZ3RoO0MrKyl7dmFyIEE9ZVtDXSxPPUEucGFyZW50Tm9kZTthdCgpO2lm KG9hdHRyPVB0KEEsbSxnLCFpKXx8e30scihvYXR0ci5jb25mLF9uKSxyKG9hdHRy LnNoYXJlLHZuKSxBLmNvbmY9b2F0dHIuY29uZixBLnNoYXJlPW9hdHRyLnNoYXJl LEEuY29uZi51aV9sYW5ndWFnZSYmYWUuZ2V0KEEuY29uZi51aV9sYW5ndWFnZSks cChBLmNvbmYpLEJ0KEEpJiZGdChRKCkpLE8mJk8uY2xhc3NOYW1lLmluZGV4T2Yo InRvb2xib3giKT4tMSYmMD09PShBLmNvbmYucHJvZHVjdHx8IiIpLmluZGV4T2Yo Im1lbiIpJiYoQS5jb25mLnByb2R1Y3Q9InRieCIrKE8uY2xhc3NOYW1lLmluZGV4 T2YoIjMyeDMyIik+LTE/IjMyIjpPLmNsYXNzTmFtZS5pbmRleE9mKCIyMHgyMCIp Pi0xPyIyMCI6IiIpKyItMzAwIixfYXRlLnRyYWNrLmFwYyhBLmNvbmYucHJvZHVj dCkpLHkmJiJtb3JlIiE9PXkmJihBLmNvbmYucHJvZHVjdD1jKEEpKSxBLmNvbmYm JihBLmNvbmYudWlfZGlzYWJsZXx8QS5jb25mLnVpX2NsaWNrfHxBLmNvbmYudWlf d2luZG93X3BhbmVzKXx8X2F0ZS5icm8uaXBhP2ImJih5P0Eub25jbGljaz1mdW5j dGlvbigpe3JldHVybiBiKHRoaXMsdGhpcy5jb25mLHRoaXMuc2hhcmUpfTpBLmNv bmYudWlfd2luZG93X3BhbmVzP0Eub25jbGljaz1mdW5jdGlvbigpe3JldHVybiBh ZGR0aGlzX3NlbmR0bygibW9yZSIsdGhpcy5jb25mLHRoaXMuc2hhcmUpfTpBLm9u Y2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gX2F0ZS5icm8uaXBofHxfYXRlLmJyby53 cGh8fF9hdGUuYnJvLmRyb3x8YWRkdGhpc19jb25maWcudWlfZGlzYWJsZT9hZGR0 aGlzX3NlbmR0bygibW9yZSIsdGhpcy5jb25mLHRoaXMuc2hhcmUpOmFkZHRoaXNf b3Blbih0aGlzLCIiLG51bGwsbnVsbCx0aGlzLmNvbmYsdGhpcy5zaGFyZSl9KToo X2F0ZS5tYWY9X2F0ZS5tYWZ8fHt9LF9hdGUubWFmLmhvbWU9dGhpcyxfYXRlLm1h Zi5rZXk9bnVsbCxfYXRlLm1hZi5zaGlmdD1udWxsLChffHwibW9yZSI9PT15KSYm KF98fG5uKCJtb2IiKXx8KF89ZnVuY3Rpb24oZSx0LG4pe3h0KG4pfSksQS5vbmZv Y3VzPWZ1bmN0aW9uKCl7aWYoIW4oNjkyKSgpKXtmb3IoX2F0ZS5tYWYuc2liPXRo aXMubmV4dFNpYmxpbmc7X2F0ZS5tYWYuc2liJiYzPT09X2F0ZS5tYWYuc2liLm5v ZGVUeXBlJiZfYXRlLm1hZi5zaWIubmV4dFNpYmxpbmc7KV9hdGUubWFmLnNpYj1f YXRlLm1hZi5zaWIubmV4dFNpYmxpbmc7aWYoIV9hdGUubWFmLnNpYnx8Mz09PV9h dGUubWFmLnNpYi5ub2RlVHlwZSl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2lmKGUp Zm9yKDtlLm5leHRTaWJsaW5nJiYzPT09ZS5ub2RlVHlwZTspZT1lLm5leHRTaWJs aW5nO2Vsc2UgZm9yKGU9ZG9jdW1lbnQuYm9keS5maXJzdENoaWxkfHxkb2N1bWVu dC5ib2R5OzM9PT1lLm5vZGVUeXBlJiZlLm5leHRTaWJsaW5nOyllPWUubmV4dFNp Ymxpbmc7X2F0ZS5tYWYuc2liPWV9cmV0dXJuIF9hdGUubWFmLnNpYi5vbmZvY3Vz PWZ1bmN0aW9uKCl7X2F0ZS5tYWYuc2liLnRhYkluZGV4PSIifSxfP18odGhpcyx0 aGlzLmNvbmYsdGhpcy5zaGFyZSk6dm9pZCAwfX0sbm4oIm1vYiIpfHwoQS5vbm1v dXNlb3Zlcj1BLm9uZm9jdXMpKSx2JiYoQS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHYodGhpcyl9KSxiJiYoQS5vbmNsaWNrPWZ1bmN0aW9uKGUpe3ZhciB0 PXRoaXMuY29uZnx8QS5jb25mLG49dGhpcy5zaGFyZXx8QS5zaGFyZTtyZXR1cm4g UChlfHx3aW5kb3cuZXZlbnR8fHt9KSwvYWRkdGhpc19idXR0b25fKGNvbXBhY3R8 ZXhwYW5kZWR8bW9yZXxia21vcmUpLy50ZXN0KEEuY2xhc3NOYW1lKSYmYW4oKT9O dChPdCgibW9yZSIsMCxuLHQpLCJfYmxhbmsiKTpiKEEsdCxuKX0pLCh2fHxiKSYm KEEub25rZXlwcmVzcz1BLm9ua2V5ZG93bj1mdW5jdGlvbihlKXtpZighZSl2YXIg ZT13aW5kb3cuZXZlbnQ7ZS5zaGlmdEtleSYmKF9hdGUubWFmLnNoaWZ0PSEwKSxl LmtleUNvZGU/X2F0ZS5tYWYua2V5PWUua2V5Q29kZTplLndoaWNoJiYoX2F0ZS5t YWYua2V5PWUud2hpY2gpLDEzPT09X2F0ZS5tYWYua2V5P19hdGUubWFmLnByZT10 aGlzOl9hdGUubWFmLnByZT1udWxsfSxBLm9uYmx1cj1mdW5jdGlvbihlKXtpZig5 PT09X2F0ZS5tYWYua2V5JiZfYXRlLm1hZi5maXJzdENvbXBhY3QmJiFfYXRlLm1h Zi5zaGlmdCYmdGhpcy5jbGFzc05hbWUuaW5kZXhPZigiY29tcGFjdCIpPi0xKV9h dGUubWFmLmtleT1udWxsLF9hdGUubWFmLmFjbT0hMCxkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChfYXRlLm1hZi5maXJzdENvbXBhY3QpLmZvY3VzKCk7ZWxzZSBpZihf YXRlLm1hZi5rZXk9bnVsbCxfYXRlLm1hZi5zaGlmdD1udWxsLHYpcmV0dXJuIHYo dGhpcyl9KSksImEiPT09QS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBFPUEu c2hhcmUudXJsfHxhZGR0aGlzX3NoYXJlLnVybDtpZihfYXRlLnVzdShFKSx5KXt2 YXIgUz1oKHksQS5jb25mKSxJPUEuZmlyc3RDaGlsZDtpZihTJiZTLmNvZGUmJlMu aWNvbiYmSSYmKEkuY2xhc3NOYW1lLmluZGV4T2YoImF0MzAwYnMiKT4tMXx8SS5j bGFzc05hbWUuaW5kZXhPZigiYXQ0LWljb24iKT4tMSkpe3ZhciBUPSIxNiI7ZChB LDEpPyhJLmNsYXNzTmFtZT1JLmNsYXNzTmFtZS5zcGxpdCgiYXQxNW5jIikuam9p bigiIiksVD0iMzIiKTp1KEEsMSkmJihJLmNsYXNzTmFtZT1JLmNsYXNzTmFtZS5z cGxpdCgiYXQxNW5jIikuam9pbigiIiksVD0iMjAiKSxJLnN0eWxlLmJhY2tncm91 bmRJbWFnZT0idXJsKCIrUy5pY29uKyIpIixJLnN0eWxlLmJhY2tncm91bmRSZXBl YXQ9Im5vLXJlcGVhdCIsSS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb249InRvcCBs ZWZ0IixJLnN0eWxlLmJhY2tncm91bmRDb2xvcj0idHJhbnNwYXJlbnQiLEkuc3R5 bGUuY3NzVGV4dHx8KEkuc3R5bGUuY3NzVGV4dD0iIiksSS5zdHlsZS5jc3NUZXh0 PSJsaW5lLWhlaWdodDoiK1QrInB4O3dpZHRoOiIrVCsicHg7aGVpZ2h0OiIrVCsi cHg7YmFja2dyb3VuZC1zaXplOiIrVCsicHg7YmFja2dyb3VuZC1pbWFnZToiK0ku c3R5bGUuYmFja2dyb3VuZEltYWdlKyI7YmFja2dyb3VuZC1yZXBlYXQ6IitJLnN0 eWxlLmJhY2tncm91bmRSZXBlYXQrIjtiYWNrZ3JvdW5kLXBvc2l0aW9uOiIrSS5z dHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24rIjtiYWNrZ3JvdW5kLWNvbG9yOiIrSS5z dHlsZS5iYWNrZ3JvdW5kQ29sb3IrIjsifWlmKGpuW3ldKSgibWFpbHRvIj09PXl8 fCJlbWFpbCI9PT15JiYoQS5jb25mLnVpX3VzZV9tYWlsdG98fF9hdGUuYnJvLmlw aHx8X2F0ZS5icm8ud3BofHxfYXRlLmJyby5pcGF8fF9hdGUuYnJvLmRybykpJiYo QS5vbmNsaWNrPWZ1bmN0aW9uKCl7QS5zaGFyZS54aWQ9SmUubWFrZUNVSUQoKSwo bmV3IEltYWdlKS5zcmM9T3QoIm1haWx0byIsMCxBLnNoYXJlLEEuY29uZmlnKSxf YXRlLmdhdCh5LEUsQS5jb25mLEEuc2hhcmUpfSxBLmhyZWY9ayhBLnNoYXJlLEEu Y29uZmlnfHxBLmNvbmYpLHVuLmVtcy5wdXNoKEEpKTtlbHNle2lmKGEuZm9sbG93 KXtpZigidHdpdHRlciIhPT15P0EuaHJlZj1BLnNoYXJlLmZvbGxvd1VybDpBLmhy ZWY9Ii8vdHdpdHRlci5jb20vIitBLnNoYXJlLnVzZXJpZCxBLmNvbmY9QS5jb25m fHx7fSxBLmNvbmYuZm9sbG93PSEwLEEub25jbGljaz1mdW5jdGlvbihlKXtpZihf YXRlLnNoYXJlLnRyYWNrKHksMSxBLnNoYXJlLEEuY29uZiksInR3aXR0ZXIiPT09 eSlyZXR1cm4gZSYmZS5wcmV2ZW50RGVmYXVsdCgpLEYoQS5zaGFyZS5mb2xsb3dV cmwsNTIwLDUyMCl9LEEuY2hpbGRyZW4mJjE9PT1BLmNoaWxkcmVuLmxlbmd0aCYm QS5wYXJlbnROb2RlJiZBLnBhcmVudE5vZGUuY2xhc3NOYW1lLmluZGV4T2YoInRv b2xib3giKT4tMSl7dmFyIE49ZG9jdW1lbnQuY2UoInNwYW4iKTtOLmNsYXNzTmFt ZT0iYWRkdGhpc19mb2xsb3dfbGFiZWwiLE4uaW5uZXJIVE1MPSR0KHkpLnJlcGxh Y2UoIl9mb2xsb3ciLCIiKSxBLmFwcGVuZENoaWxkKE4pfX1lbHNlIF9hdGUuc2hh cmUuZXh0ZXJuRXZlbnRzKHksQSxhKXx8QS5ub2h8fChBLm9uY2xpY2s9ZnVuY3Rp b24oZSl7cmV0dXJuIEIoeSxBLnNoYXJlKSwhMX0pO0EuY29uZi5mb2xsb3d8fHVu LmFkZEV2ZW50cyhBLHksRSksQS5ub2h8fEEudGFyZ2V0fHwoQS50YXJnZXQ9Il9i bGFuayIpLHVuLmxpbmtzLnB1c2goQSl9aWYoIUEudGl0bGV8fEEuYXRfdGl0bGVk KXt2YXIgaj0kdCh5LCFTKTtUblt5XSYmSW4ucHVzaCh7bGluazpBLHRpdGxlOnl9 KSxBLnRpdGxlPW8oYS5mb2xsb3c/IkZvbGxvdyBvbiAiK2o6VG5beV18fGopLEEu YXRfdGl0bGVkPTF9QS5ocmVmfHwoQS5ocmVmPSIjIil9ZWxzZSBBLmNvbmYucHJv ZHVjdCYmQS5wYXJlbnROb2RlLmNsYXNzTmFtZS5pbmRleE9mKCJ0b29sYm94Iik9 PT0tMSYmYyhBKX12YXIgRDtzd2l0Y2godyl7Y2FzZSJpbWciOmlmKCFBLmhhc0No aWxkTm9kZXMoKSl7dmFyIHo9WSgpLEw9X2F0ZS5pdmwoeik7TD8xIT09TCYmKHo9 TCk6ej0iZW4iLEQ9ZihfYXRlLml3Yih6KT8xNTA6MTI1LDE2LCJTaGFyZSIsX2F0 cisic3RhdGljL2J0bi92Mi9sZy1zaGFyZS0iK3ouc3Vic3RyKDAsMikrIi5naWYi KX19RCYmQS5hcHBlbmRDaGlsZChEKX19fWZ1bmN0aW9uIGcoZSx0LG4sYSxpLG8s cil7aWYoIWUuX2lzcyl7dmFyIHMsZCx1LGMsbCxmLHA9KGUuY2xhc3NOYW1lfHwi Iix7cGludGVyZXN0OiJwaW50ZXJlc3Rfc2hhcmUifSk7Ym4/cz1lLnBhcmVudE5v ZGUuX2F0c2hhcmVkY29uZnx8e306KGJuPTEsZS5wYXJlbnROb2RlLl9hdHNoYXJl ZGNvbmY9cz1fYXRlLnNoYXJlLnNlcnZpY2VzLmluaXQoZS5jb25mKSksZS5wYXJl bnROb2RlLnNlcnZpY2VzfHwoZS5wYXJlbnROb2RlLnNlcnZpY2VzPXt9KSxkPXMu c2VydmljZXNfZXhjbHVkZXx8IiIsYz1ELmdldFBvcFNlcnZpY2VzKCksbD1lLnBh cmVudE5vZGUuc2VydmljZXMsZj1fYXRlLnV0aWwudW5xY29uY2F0KCh3aW5kb3cu YWRkdGhpc19vcHRpb25zfHwiIikucmVwbGFjZSgiLG1vcmUiLCIiKS5zcGxpdCgi LCIpLGMuc3BsaXQoIiwiKSk7ZG8gdT1mW3QrK10scFt1XSYmKHU9cFt1XSk7d2hp bGUodDxmLmxlbmd0aCYmKGQuaW5kZXhPZih1KT4tMXx8bFt1XSkpO2xbdV0mJl9h dGUudXRpbC5lYWNoKFF0Lmxpc3QsZnVuY3Rpb24oZSx0KXtpZighbFtlXSYmZC5p bmRleE9mKGUpPT09LTEpcmV0dXJuIHU9ZSwhMX0pLGUuX2lwcz0xLGUuY2xhc3NO YW1lLmluZGV4T2YodSk9PT0tMSYmKGUuY2xhc3NOYW1lPSJhZGR0aGlzX2J1dHRv bl8iK3UrIiAiK2UuY2xhc3NOYW1lLGUuX2lzcz0xKSxlLnBhcmVudE5vZGUuc2Vy dmljZXNbdV09MSxuJiZfKFtlXSxhLGksITAscil9fWZ1bmN0aW9uIF8oZSx0LGEs aSxvKXt2YXIgcyxsLGY9big3MCkscD1uKDYxMiksXz1wLmNyZWF0ZUNzc1NlcnZp Y2VJY29uLHY9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhO3JldHVybiBhPWQoZSk/MzI6 dShlKT8yMDoxNixuJiZuLmNvZGU/KGw9XyhuLmNvZGUsbi5pY29uLGEpLHM9cChu LmNvZGUsbCkpOnM9Zih7Y29kZTp0LHNpemU6YSsicHgifSksc307RSgicmVuZGVy X3Rvb2xib3giLHtvbmNlOiEwfSk7Zm9yKHZhciBiPTA7YjxlLmxlbmd0aDtiKysp e3ZhciB3PWVbYl0seD0hKCF3fHwhdy5wYXJlbnROb2RlKSYmL2FkZHRoaXNfY291 bnRlclteX10vLnRlc3Qody5wYXJlbnROb2RlLmNsYXNzTmFtZSkseT1kb2N1bWVu dDtpZighKG51bGw9PT13fHx4fHxpPT09ITEmJncub3N0KSl7dmFyIGs9UHQodyx0 LGEsIW8pLEM9MCxNPXcuY2xhc3NOYW1lfHwiIixBPU0ubWF0Y2goL2FkZHRoaXNf YnV0dG9uXyhbXHdcLVwuXSspKD86XHN8JCkvKSxPPU0ubWF0Y2goL2FkZHRoaXNf Y291bnRlcl8oW1x3XC5dKykoPzpcc3wkKS8pLFM9e30sST1BJiZBLmxlbmd0aD9B WzFdOjAsVD1PJiZPLmxlbmd0aD9PWzFdOjAsTj1oKEkpO2lmKHIoay5jb25mLF9u KSxyKGsuc2hhcmUsdm4pLEkmJiFfYXRlLnNoYXJlLmV4dGVybihJLHcsaykpe2lm KEkuaW5kZXhPZigicHJlZmVycmVkIik+LTEpe2lmKHcuX2lzc3x8dy5faXdwcylj b250aW51ZTtBPU0ubWF0Y2goL2FkZHRoaXNfYnV0dG9uX3ByZWZlcnJlZF8oWzAt OV0rKSg/OlxzfCQpLyk7dmFyIGo9KEEmJkEubGVuZ3RoP01hdGgubWluKDE2LE1h dGgubWF4KDEscGFyc2VJbnQoQVsxXSkpKToxKS0xO2lmKHcuY29uZiYmIW98fCh3 LmNvbmY9ay5jb25mfHx3LmNvbmZ8fHt9KSx3LnNoYXJlJiYhb3x8KHcuc2hhcmU9 ay5zaGFyZXx8dy5zaGFyZXx8e30pLHcuY29uZi5wcm9kdWN0PSJ0YngtMzAwIixj KHcpLCF3bil7dmFyIEQ9Zy5iaW5kKHcsdyxqLCEwLHQsYSxpLG8pO19hdGUuZWQu YWRkRXZlbnRMaXN0ZW5lcigiYWRkdGhpcy1pbnRlcm5hbC5kYXRhLnNzaCIsRCks c2V0VGltZW91dChELDJlMyksdy5faXdwcz0xO2NvbnRpbnVlfWcodyxqLCEwKX1l bHNlIGlmKEkuaW5kZXhPZigiZm9sbG93Iik+LTEpImdvb2dsZV9mb2xsb3ciPT09 ST93LnRpdGxlPSJGb2xsb3cgb24gR29vZ2xlIjpJPUkuc3BsaXQoIl9mb2xsb3ci KS5zaGlmdCgpLFMuZm9sbG93PSEwLF9hdGUudHJhY2suYXBjKCJmbHctMzAwIiks ay5zaGFyZS5mb2xsb3dVcmw9ZW4oSSxrLnNoYXJlLnVzZXJpZCxrLnNoYXJlLnVz ZXJ0eXBlLGsuc2hhcmUpfHxrLnNoYXJlLnVybDtlbHNlIGlmKCEoWXQoSSl8fE4m Jk4uY29kZSkpY29udGludWU7dmFyIHo9dy5jaGlsZE5vZGVzOzA9PT16Lmxlbmd0 aD8ocz12KHcsSSxOKSx3LmFwcGVuZENoaWxkKHMpKToxPT09ei5sZW5ndGg/dy5m aXJzdENoaWxkJiYzPT09dy5maXJzdENoaWxkLm5vZGVUeXBlJiYocz12KHcsSSxO KSx3Lmluc2VydEJlZm9yZShzLHcuZmlyc3RDaGlsZCkpOncuZmlyc3RDaGlsZCYm Mz09PXcuZmlyc3RDaGlsZC5ub2RlVHlwZSYmIlxuIj09PXcuZmlyc3RDaGlsZC50 ZXh0Q29udGVudHx8KEM9MSksImNvbXBhY3QiPT09SXx8ImV4cGFuZGVkIj09PUk/ KEN8fE0uaW5kZXhPZigiYXQzMDAiKSE9PS0xfHwody5jbGFzc05hbWUrPSIgYXQz MDBtIiksay5jb25mLnByb2R1Y3QmJmsuY29uZi5wcm9kdWN0LmluZGV4T2YoIm1l bi0iKT09PS0xJiYoay5jb25mLnByb2R1Y3QrPSIsbWVuLTMwMCIpLHcuaHJlZnx8 KHcuaHJlZj0iIyIpLHcucGFyZW50Tm9kZSYmdy5wYXJlbnROb2RlLnNlcnZpY2Vz JiYoay5jb25mLnBhcmVudFNlcnZpY2VzPXcucGFyZW50Tm9kZS5zZXJ2aWNlcyks ImV4cGFuZGVkIj09PUkmJihTLm5vaG92ZXI9ITAsUy5zaW5nbGVzZXJ2aWNlPSJt b3JlIixubigibW9iIil8fChTLm9ubW91c2VvdmVyPWZ1bmN0aW9uKGUsdCxuKXt4 dChuKX0pLFMub25jbGljaz1mdW5jdGlvbihlLHQsbil7YWRkdGhpc19zZW5kdG8o Im1vcmUiLHQsbil9KSk6KCh3LnBhcmVudE5vZGUuY2xhc3NOYW1lfHwiIikuaW5k ZXhPZigidG9vbGJveCIpPi0xJiYody5wYXJlbnROb2RlLnNlcnZpY2VzfHwody5w YXJlbnROb2RlLnNlcnZpY2VzPXt9KSx3LnBhcmVudE5vZGUuc2VydmljZXNbSV09 MSksQ3x8TS5pbmRleE9mKCJhdDMwMCIpIT09LTF8fCh3LmNsYXNzTmFtZSs9IiBh dDMwMGIiKSxTLnNpbmdsZXNlcnZpY2U9SSx0bihJKSYmKG5uKCJtb2IiKXx8KFMu b25tb3VzZW92ZXI9ZnVuY3Rpb24oZSx0LG4pe3h0KG4pfSksUy5vbmNsaWNrPWZ1 bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4sYSl7YWRkdGhpc19zZW5kdG8o ZSxuLGEpfX0oSSkpKSx3Ll9pcHMmJihTLmlzc2g9ITApLG0oW3ddLGssUyxvKSx3 Lm9zdD0xLGModyl9ZWxzZSBpZihUKXtpZih3Lm9zdCljb250aW51ZTt3Lm9zdD0x O3ZhciBMPXkuY2UoImEiKTtMLmNsYXNzTmFtZT0iYWRkdGhpc19uYXRpdmVfY291 bnRlciBhZGR0aGlzX2NvdW50ZXIgYWRkdGhpc19idWJibGVfc3R5bGUiLHcuY2xh c3NOYW1lKz0iIGFkZHRoaXNfbmF0aXZlX2NvdW50ZXJfcGFyZW50IixzPXYodyxU LE4pLHcuYXBwZW5kQ2hpbGQocyksdy5hcHBlbmRDaGlsZChMKSxrLmNvbmYuc2Vy dmljZT1ULmluZGV4T2YoInBpbnRlcmVzdCIpPi0xPyJwaW50ZXJlc3Rfc2hhcmUi OlQsbShbd10sayxTLG8pLHVuLmNvdW50ZXIoTCxrLmNvbmYsay5zaGFyZSl9fX19 ZnVuY3Rpb24gdihlLHQsbixhKXtpZigiZmFjZWJvb2tfdW5saWtlIiE9PWUmJiJn b29nbGVfdW5wbHVzb25lIiE9PWUpe249bnx8e307dmFyIGk9bi5kYXRhX2dhX3Ry YWNrZXIsbz1uLmRhdGFfZ2FfcHJvcGVydHk7aWYobyYmKCJvYmplY3QiPT10eXBl b2Ygd2luZG93Ll9nYXQmJl9nYXQuX2NyZWF0ZVRyYWNrZXI/aT1fZ2F0Ll9jcmVh dGVUcmFja2VyKG8sImFkZFRoaXNUcmFja2VyIik6Im9iamVjdCI9PXR5cGVvZiB3 aW5kb3cuX2dhcSYmX2dhcS5fZ2V0QXN5bmNUcmFja2VyP2k9X2dhcS5fZ2V0QXN5 bmNUcmFja2VyKG8pOndpbmRvdy5fZ2FxIGluc3RhbmNlb2YgQXJyYXkmJl9nYXEu cHVzaChbZnVuY3Rpb24oKXtfYXRlLmdhdChlLHQsbixhKX1dKSksaSYmInN0cmlu ZyI9PXR5cGVvZiBpJiYoaT13aW5kb3dbaV0pLCFpJiZ3aW5kb3cuR29vZ2xlQW5h bHl0aWNzT2JqZWN0KXt2YXIgcj13aW5kb3dbd2luZG93Lkdvb2dsZUFuYWx5dGlj c09iamVjdF07ci5nZXRBbGwmJihpPXIuZ2V0QWxsKCkpfWlmKGkmJiJvYmplY3Qi PT10eXBlb2YgaSl7aWYoIm1vcmUiPT09ZXx8InNldHRpbmdzIj09PWUpcmV0dXJu O3ZhciBzPXR8fChhfHx7fSkudXJsfHxqdC5kdSxkPWUsdT0ic2hhcmUiO2lmKGQu aW5kZXhPZigiXyIpPi0xJiYoZD1kLnNwbGl0KCJfIiksdT1kLnBvcCgpLHUubGVu Z3RoPD0yJiYodT0ic2hhcmUiKSxkPWQuc2hpZnQoKSksMD09PXMudG9Mb3dlckNh c2UoKS5yZXBsYWNlKCJodHRwcyIsImh0dHAiKS5pbmRleE9mKCJodHRwJTNhJTJm JTJmIikmJihzPV9kdWMocykpLGlbMF0pe3ZhciBjPWlbMF0uZ2V0KCJuYW1lIik7 Yy5pbmRleE9mKCJndG0iKSE9PS0xJiZyKGMrIi5zZW5kIiwiZXZlbnQiLCJhZGR0 aGlzIixlLHMpfXRyeXtuLmRhdGFfZ2Ffc29jaWFsJiZpLl90cmFja1NvY2lhbCYm Imdvb2dsZV9wbHVzb25lIiE9PWU/aS5fdHJhY2tTb2NpYWwoZCx1LGEudXJsKTpp Ll90cmFja0V2ZW50P2kuX3RyYWNrRXZlbnQoImFkZHRoaXMiLGUscyk6bi5kYXRh X2dhX3NvY2lhbCYmImdvb2dsZV9wbHVzb25lIiE9PWU/cigic2VuZCIsInNvY2lh bCIsZCx1LHMpOnIoInNlbmQiLCJldmVudCIsImFkZHRoaXMiLGUscyl9Y2F0Y2go dCl7dHJ5e2kuX2luaXREYXRhJiZpLl9pbml0RGF0YSgpLG4uZGF0YV9nYV9zb2Np YWwmJmkuX3RyYWNrU29jaWFsJiYiZ29vZ2xlX3BsdXNvbmUiIT09ZT9pLl90cmFj a1NvY2lhbChkLHUsYS51cmwpOmkuX3RyYWNrRXZlbnQ/aS5fdHJhY2tFdmVudCgi YWRkdGhpcyIsZSxzKTpuLmRhdGFfZ2Ffc29jaWFsJiYiZ29vZ2xlX3BsdXNvbmUi IT09ZT9yKCJzZW5kIiwic29jaWFsIixkLHUscyk6cigic2VuZCIsImV2ZW50Iiwi YWRkdGhpcyIsZSxzKX1jYXRjaChlKXt9fX19fWZ1bmN0aW9uIGIoKXt2YXIgZT0i LmFkZHRoaXNfIjt1bi5vc3JwfHwodW4ub3NycD0xLHZuPXNuLmFkZHRoaXNfc2hh cmUsX249c24uYWRkdGhpc19jb25maWcsT249ZG4uYm9keSxFbj1ydC5nZXRFbGVt ZW50c0J5Q2xhc3NQcmVmaXgoT24sIkEiLCJhZGR0aGlzX2J1dHRvbl8iLCEwLCEw KSxTbj1ydC5nZXRFbGVtZW50c0J5Q2xhc3NQcmVmaXgoT24sIkEiLCJhZGR0aGlz X2NvdW50ZXJfIiwhMCwhMCkscygpLHVuLnRvb2xib3goZSsidG9vbGJveCIsbnVs bCxudWxsLCEwLFNuLmxlbmd0aCksdW4uYnV0dG9uKGUrImJ1dHRvbiIpLHVuLmNv dW50ZXIoZSsiY291bnRlciIpLHVuLmNvdW50KGUrImNvdW50IiksXyhFbixudWxs LG51bGwsITEpLF8oU24sbnVsbCxudWxsLCExKSl9ZnVuY3Rpb24gdygpe3VuLmxh eWVycy5sZW5ndGg/dW4ubGF5ZXJzKHtjZnM6ITB9KTpfYXRlLmlwYz0hMX1mdW5j dGlvbiB4KCl7KFUoKS5sZW5ndGg+MHx8IXVuLmxheWVycy5sZW5ndGgmJm5uKCJt b2IiKSkmJksoKSxrKCksYigpfWZ1bmN0aW9uIHkoKXtVdC5pbml0aWFsaXplKHVu LG0sXyksX2Fkci5pc1JlYWR5P3goKTpfYWRyLmFwcGVuZCh4KX1mdW5jdGlvbiBr KCl7aWYoIXluKXtmb3IodmFyIGUsdCxuPXdpbmRvdy5hZGR0aGlzLGE9MCxpPW4u cGxvO2E8aS5sZW5ndGg7YSsrKXQ9aVthXSx0LmNhbGxlZHx8KGU9dC5ucz8ic3Ry aW5nIj09dHlwZW9mIHQubnM/blt0Lm5zXTp0Lm5zOm4sdCYmdC5jYWxsJiZlW3Qu Y2FsbF0mJmVbdC5jYWxsXS5hcHBseSh0LmN0eD8oInN0cmluZyI9PT10LmN0eCxu W3QuY3R4XSk6dGhpcyx0LmFyZ3MpKTt5bj0xfX1mdW5jdGlvbiBDKCl7aWYoIXlu KWZvcih2YXIgZSx0PXdpbmRvdy5hZGR0aGlzLG49MCxhPXQucGxvO248YS5sZW5n dGg7bisrKWU9YVtuXSwiYWRkRXZlbnRMaXN0ZW5lciI9PT1lLmNhbGwmJigoZS5u cz8ic3RyaW5nIj09dHlwZW9mIGUubnM/dFtlLm5zXTplLm5zOnQpW2UuY2FsbF0u YXBwbHkoZS5jdHg/KCJzdHJpbmciPT09ZS5jdHgsdFtlLmN0eF0pOnRoaXMsZS5h cmdzKSxlLmNhbGxlZD0xKX1uKDcwOCksbig3MDkpKCksbig3MTApLG4oNzEyKTt2 YXIgTSxBLE89big3MTQpLEU9big3MjApLFM9bigzMCksST1uKDE0KSxUPW4oNzAx KSxOPW4oNzIyKSxqPW4oNzIzKSxEPW4oMzM1KSx6PW4oMTMpLEw9KG4oNzI0KSxu KDU2NCkpLFI9big2MzMpLFA9big2MTEpLEI9big1NDcpLEY9big1NzkpLFU9big0 KSxXPW4oNzI1KSxIPW4oNzI5KSxxPW4oMyksVj1uKDU5MSksRz1uKDczMCksWj1u KDczMSksSz1uKDU5MiksSj1uKDczMiksUT1uKDE4KSxZPW4oNTApLCQ9big3MzMp LFg9bigxOSksZWU9big1ODgpLHRlPW4oNzM0KSxuZT1uKDE3KSxhZT1uKDU5Myks aWU9bigzNyksb2U9big1NTQpLHJlPW4oNTYyKSxzZT1uKDczNSkudHJ1bmNhdGlv bkxpc3QsZGU9big3MzUpLnRydW5jYXRlVVJMLHVlPW4oNzM2KSxjZT1uKDczNyks bGU9big1NTIpLGZlPW4oNzE2KSxwZT1uKDkpLHI9big2MjIpLGhlPW4oNDQpLG1l PW4oMzM0KSxnZT1uKDEwKSxfZT1uKDYyKSx2ZT1uKDU3MCksYmU9big4KSx3ZT1u KDYxKSx4ZT1uKDY2MCkseWU9bigzNCksa2U9big3MzgpLENlPW4oNTU5KSxNZT1u KDIzKS5saXN0ZW4sQWU9bigyMykudW5saXN0ZW4sT2U9big1OCkuZ2V0RG9tYWlu LEVlPW4oNTgpLmdldFF1ZXJ5U3RyaW5nLFNlPW4oNTgpLmdldERvbWFpbk5vUHJv dG9jb2wsSWU9big1OCkuZ2V0QWJzb2x1dGVGcm9tUmVsYXRpdmUsVGU9big1OCku Z2V0SG9zdCxOZT1uKDExKS5zdHJpbmcsamU9bigxMSkubnVtYmVyLERlPW4oMTEp LmVtcHR5T2JqZWN0LHplPW4oNzI2KS5Qb2x5RXZlbnQsTGU9big3MjYpLkV2ZW50 RGlzcGF0Y2hlcixSZT1uKDY5NiksUGU9big3MzkpLEJlPW4oNjE5KSxGZT1uKDU3 NiksVWU9bigxMyksV2U9big3NDApLEhlPW4oNzQxKSxxZT1uKDM2OSksVmU9big1 NiksR2U9bigzNzcpLFplPW4oNzQyKSxLZT1uKDc0MyksSmU9big1OSksUWU9bigx NiksWWU9bigxNSksJGU9bigzMyksWGU9big3NDQpLGV0PW4oMzUpLHR0PW4oMzIp LG50PW4oMzYpLGF0PW4oNzQ1KSxpdD1uKDc0NykucHJvY2Vzc0FkRXZlbnRzLG90 PW4oNzQ3KS5wcm9jZXNzQWxsU2NyaXB0cyxydD1uKDY5MCksc3Q9big3NDgpLGR0 PW4oNzE1KSx1dD1uKDc0OSksY3Q9big3NTApLGx0PW4oNTYxKSxmdD1uKDU1KSxw dD1uKDc1MSksaHQ9big3NTIpLG10PW4oNjIwKSxndD1uKDM2MyksX3Q9bigzNjUp LHZ0PW4oMzY2KSxidD1uKDM2NCksd3Q9bigzNjEpLHh0PW4oMzkwKSx5dD1uKDQ1 KSxrdD1uKDM2MiksQ3Q9big3MDIpLE10PW4oNjE4KSxBdD1uKDc1MyksT3Q9big1 NTcpLEV0PW4oNzU0KS5zb3VyY2UsU3Q9big3NTYpLEl0PW4oNzc5KSxUdD1uKDc4 MCksTnQ9big2MzEpLGp0PW4oNjMpLER0PW4oNDkpLHp0PW4oNzgxKSxMdD1uKDc2 NSkuaXNCbGFja2xpc3RlZCxSdD1uKDc2NSkuc2V0QmxhY2tsaXN0ZWQsUHQ9big3 ODMpLEJ0PW4oNTg2KS5lbGVtZW50UmVxdWlyZXNGYWNlYm9va1NESyxGdD1uKDU4 NyksVXQ9big3ODUpLFd0PW4oNzkwKSxIdD1uKDc5MSkscXQ9big3OTIpLFZ0PW4o NzkzKSxHdD1uKDc5NCksWnQ9big1NCksS3Q9big0NyksSnQ9big1NyksUXQ9bigz NjgpLFl0PW4oNzk1KSwkdD1uKDcxKSxYdD1uKDc5NyksZW49big2NTEpLHRuPW4o Mzg4KSxubj1uKDUpLGFuPW4oNTU4KSxvbj1uKDcyNykscm49big3OTgpLHNuPXdp bmRvdyxkbj1kb2N1bWVudDt0cnl7QT13aW5kb3cubG9jYXRpb24sMCE9PUEucHJv dG9jb2wuaW5kZXhPZigiZmlsZSIpJiYwIT09QS5wcm90b2NvbC5pbmRleE9mKCJz YWZhcmktZXh0ZW5zaW9uIikmJjAhPT1BLnByb3RvY29sLmluZGV4T2YoImNocm9t ZS1leHRlbnNpb24iKXx8KF9hdHI9Imh0dHA6IitfYXRyKSxBLmhvc3RuYW1lLmlu ZGV4T2YoImxvY2FsaG9zdCIpIT09LTEmJihfYXRjLmxvYz0xKX1jYXRjaChlKXt9 dmFyIHVuPShuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksd2luZG93 LmFkZHRoaXN8fHt9KSxjbj1ubjtpZihkbi5jZT1kbi5jcmVhdGVFbGVtZW50LGRu LmduPWRuLmdldEVsZW1lbnRzQnlUYWdOYW1lLHdpbmRvdy5fYXRlKV9hdGUuaW5z dCsrO2Vsc2V7d2luZG93Ll9hdGU9e3JhbmQ6ZnVuY3Rpb24oKXt2YXIgZTtpZihm ZSYmKGU9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImF0LXJhbmQiKSksaXNOYU4oTnVt YmVyKGUpKXx8bnVsbD09PWUpe2U9TWF0aC5yYW5kb20oKS50b1N0cmluZygpO3Ry eXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiYXQtcmFuZCIsZSl9Y2F0Y2godCl7ZT0i MCJ9fXJldHVybiBOdW1iZXIoZSl9KCksYnJvOmNuLHdscDooQXx8e30pLnByb3Rv Y29sLGRsOmRuLmxvY2F0aW9uLHVuajpvbix1cG06bGUsdWxzOmZlLGJhbXA6X2F0 Yy5iYW1wLU1hdGgucmFuZG9tKCksYWI6Ii0iLGluc3Q6MSx3YWl0Om4oNTYzKSx0 bW86bnVsbCxzdWI6cHQoKSxkYm06MCx1aWQ6bnVsbCxhcGk6e30sYWQ6e30sZGF0 YTp7fSxoYXNoOmp0Lmhhc2gscmVmcmVzaDpybn07dmFyIGxuPWx0KF9hdGUpLGZu PW4oNTk3KShfYXRlKTtpZihfYXRlLmV2bD11ZSxfYXRlLnV0aWw9e3VucWNvbmNh dDptZSxyZWR1Y2U6cGUsZmlsdGVyOnl0LHNsaWNlOmdlLHN0cmlwOl9lLGV4dGVu ZDpiZSx0b0tWOnZlLHJ0b0tWOndlLGZyb21LVjp5ZSxyZnJvbUtWOnhlLG90b0NT VjprZSxsaXN0ZW46TWUsbWFwOmhlLHVubGlzdGVuOkFlLGdVRDpPZSxnVVFTOkVl LGNsb25lOkNlLG1yZzpyLHJlbDJhYnM6SWUsaXNFbXB0eU9iajpEZSxpc1N0cmlu ZzpOZSxpc051bWJlcjpqZSxnZXREb21haW5Gcm9tVVJMOlNlLHByZXZlbnREZWZh dWx0RXZlbnQ6UCxtaXNjOnt9fSxfYXRlLmV2ZW50PXtQb2x5RXZlbnQ6emUsRXZl bnREaXNwYXRjaGVyOkxlfSxfYXRlLmVkPW5ldyBMZShfYXRlKSxfYWRyPVJlLF9h dGUucGxvPVUoKSxfYXRlLmxhZD1xLF9hdGUucHViPVp0LF9hdGUudXN1PVBlLF9h dGUudmVyPUJlLF9hdGUucnN1PUZlLCFfYXRjLm9zdCl7c24uYWRkdGhpc19jb25m fHwoc24uYWRkdGhpc19jb25mPXt9KSxBJiYoQS5ocmVmLmluZGV4T2YoIl9hdF90 ZXN0MzAwIik+LTF8fEEuaHJlZi5pbmRleE9mKCJfYWRkdGhpc191cGdyYWRlX3Rl c3QiKT4tMSkmJihfYXRjLnZlcj0zMDApO2Zvcih2YXIgcG4gaW4gYWRkdGhpc19j b25mKWFkZHRoaXNfY29uZi5oYXNPd25Qcm9wZXJ0eShwbikmJihfYXRjW3BuXT1h ZGR0aGlzX2NvbmZbcG5dKTtfYXRjLm9zdD0xfV9hdGUubG9nPVVlLF9hdGUuY2t2 PXllKGRvY3VtZW50LmNvb2tpZSwiOyIpLF9hdGUuY29va2llPXtyZWFkOkt0LnJl YWQsd3JpdGU6S3Qud3JpdGUsa2lsbDpLdC5raWxsLHJjazpLdC5yZWFkLHNjazpK dC5zY2ssa2NrOkp0Lmtjayxjd3c6SnQuY3d3LGdvdjpKdC5nb3YsaXNndjpKdC5p c2d2LHNzYzpXZSxLVjprdCx0YWc6SGUsdmlldzpxZSx2aXNpdDpWZX0sX2F0ZS5t dW49R2UsX2F0ZS5nZXRWaXNpYmlsaXR5PVplLF9hdGUubWF0aD17fSxfYXRlLm1h dGgubXVybXVyMzI9S2UsdW4ucGFyYW1zPXN0KGV0KGp0LnNlYXJjaCksdW4sX2F0 ZSksYmUoX2F0ZS5hZCx7dHlwZTpuKDc2MSkscmVmOntyX29uZG9tYWluOl90Lk9O X0RPTUFJTixyX29mZmRvbWFpbjpfdC5PRkZfRE9NQUlOLHJfZGlyZWN0Ol90LkRJ UkVDVCxyX3NlYXJjaDpfdC5TRUFSQ0h9LGd1YjptdCxjbHI6dnQsaXNzOmd0LGZz dDpidH0pLGJlKF9hdGUuZGF0YSx7c3RvcmFnZTp7YWxsOmR0LmdldEFsbCxjbGVh cjpkdC5yZW1vdmVBbGwsYWRkOmR0LmFkZCxnZXQ6ZHQuZ2V0LHJlbW92ZTpkdC5y ZW1vdmUsZXhpc3RzOmR0LmV4aXN0cyxwcmVSZW1vdmU6ZHQucmVtb3ZlQnlQcmVm aXh9LGJsb29tOntmaWx0ZXI6dXQsbGlicmFyeTpjdChkdCxfYXRlLmljaCl9fSks YmUoX2F0ZSx7dHJhY2s6e3JhbjpMLGZjdjpsbi5mb3JtYXRDdXN0b21FdmVudCxt Z3U6bG4ubXVuZ2VVUkwsc3NpZDpsbi5zc2lkLHN0YTpsbi5zdGEsdW5zOmxuLnVu cyxscHg6bG4ubG9hZFBpeGVsLHN4bTpsbi5zY2hlZHVsZVRyYW5zbWl0LGRyb3BQ aXhlbDpmdCxjdXI6TXQuY2xpY2tpZnlVUkwsZXh0cmFjdE91clBhcmFtZXRlcnM6 TXQuZXh0cmFjdE91clBhcmFtZXRlcnMsZGN1Ok10LmRlY2xpY2tpZnlVUkwsZ2Nj Ok10LmdlbmVyYXRlQ2xpY2tiYWNrQ29kZSxjcGY6TXQuY2xpY2tQcmVmaXgsY3Rw Ok10LmNsaWNrVHJhY2thYmxlUHJvZHVjdCxpY2g6TXQuaXNDbGlja0hhc2gsaWN0 Ok10LmlzQ2xpY2tUcmFja2luZ0VuYWJsZWQsaGlzdDp7bG9nOmh0LmxvZ1VSTCxz ZWVuQmVmb3JlOmh0LnNlZW5CZWZvcmV9LHRzOntnZXQ6d3QuZ2V0VHJhZmZpY1Nv dXJjZSxnc3Q6d3QuZ2V0U2VhcmNoVGVybXMsc2V0Ond0LnNldFN0YXRlLHJlc2V0 Ond0LnJlc2V0U3RhdGV9fSxpd2I6JCxpdmw6WCxnZmw6ZWUsZ2dsOnRlLHRyaW06 aWUsdHJsOnNlLHRydW5jYXRlVVJMOmRlLG9wcDpyZSxhanM6b2UsYW86VixhYzpH LGFzOlp9KSxiZShfYXRlLnV0aWwse3NjYjpmbi5zdG9yZUNhbGxiYWNrLHN0b3Jl Q2FsbGJhY2s6Zm4uc3RvcmVDYWxsYmFjayxnZXRDYWxsYmFja0NhbGxUaW1lOmZu LmdldENhbGxiYWNrQ2FsbFRpbWUsZ2hwOiRlLGdxcDpldCxhdG9iOlFlLmF0b2Is YnRvYTpRZS5idG9hLGdlbzp7ZGVjOlllLmRlY29kZUdlbyxwYXJzZTpZZS5wYXJz ZUdlbyxpc2luOlllLmlzTG9jYXRlZElufSxob3N0OlRlLGdzcDp0dCxnc3Q6bnQs Z3R0OmZ1bmN0aW9uKCl7dmFyIGU9ZG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNj cmlwdCIpO3JldHVybiBlW2UubGVuZ3RoLTFdfSxwYWU6aXQscGFzOm90LGJhc2VU b0RlY2ltYWw6Q3QsaGJ0b2E6UWUuaGJ0b2EsYXRvaGI6UWUuYXRvaGIsZ2ViY246 cnQuZ2V0RWxlbWVudHNCeUNsYXNzUHJlZml4LHNlbGVjdDpydC5zZWxlY3QscGFy ZW50OnJ0LmdldFBhcmVudCxxc2E6cnQucXVlcnlTZWxlY3RvckFsbCxnZXR0eHQ6 cnQuZ2V0VGV4dH0pLGJlKF9hdGUse3Jlc291cmNlOntSZXNvdXJjZTpXLEJ1bmRs ZTpIfX0pLF9hdGUuc2lkPV9hdGUudHJhY2suc3NpZCgpLHdpbmRvdy5wYXJlbnQ9 PT13aW5kb3cmJihNZSh3aW5kb3csIm1lc3NhZ2UiLEF0Lm1lc3NhZ2VIYW5kbGVy KSxNZSh3aW5kb3csInNjcm9sbCIsQXQuaGFuZGxlciksTWUod2luZG93LCJyZXNp emUiLEF0LnJlc2l6ZUhhbmRsZXIpKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7 ZT1lLnNwbGl0KCItIikuc2hpZnQoKTtmb3IodmFyIHQ9MDt0PGcubGVuZ3RoO3Qr KylpZihnW3RdPT09ZSlyZXR1cm47Zy5wdXNoKGUpfWZ1bmN0aW9uIHQoZSx0KXt2 YXIgbixhPU1hdGguZmxvb3IoMWUzKk1hdGgucmFuZG9tKCkpLGk9SHQuZ2V0Q29u dGFpbmVyKCk7cmV0dXJuIHR8fG18fCFfYXRjLl9hdGZ8fF9hdGUuYnJvLmllNnx8 X2F0ZS5icm8uaWU3PyhfYXRlLmJyby5tc2k/KGkuaW5uZXJIVE1MPSc8aWZyYW1l IGlkPSJfYXRzc2gnK2ErJyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgdGl0bGU9IkFk ZFRoaXMgdXRpbGl0eSBmcmFtZSIgbmFtZT0iX2F0c3NoJythKyciICcrKGU/J3Ny Yz0iJytlKyciJzoiIikrIj4iLG49dS5nZXRFbGVtZW50QnlJZCgiX2F0c3NoIith KSk6KG49dS5jZSgiaWZyYW1lIiksbi5pZD0iX2F0c3NoIithLG4udGl0bGU9IkFk ZFRoaXMgdXRpbGl0eSBmcmFtZSIpLF9hdGUub3BwKG4pLG4uZnJhbWVib3JkZXI9 bi5zdHlsZS5ib3JkZXI9MCxuLnN0eWxlLnRvcD1uLnN0eWxlLmxlZnQ9MCxuKToo bT1fYXRjLl9hdGYsX2F0ZS5icm8ubXNpJiYobS51cmw9ZSksbSl9ZnVuY3Rpb24g bigpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9kdWN0Iil8fCJmdW5j dGlvbiI9PXR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiYo ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicHJvZHVjdCIpfHxbXSku bGVuZ3RoPjB8fGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9kdWN0RGVzY3Jp cHRpb24iKXx8ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhZ2UtcHJvZHVjdCIp fHxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidm1fY2FydF9wcm9kdWN0cyIpfHx3 aW5kb3cuVmlydHVlbWFydClyZXR1cm4hMDt2YXIgZT1fYXRlLmFkLmdvZygpO2Zv cih2YXIgdCBpbiBlKWlmKCJ0eXBlPXByb2R1Y3QiPT09ZVt0XSlyZXR1cm4hMH1m dW5jdGlvbiBhKCl7dmFyIGU9d2luZG93O3JldHVybigoKGUualF1ZXJ5fHx7fSku Zm58fHt9KS5qcXVlcnkmJjEpfCgoZS5Qcm90b3R5cGV8fHt9KS5WZXJzaW9uJiYy KXwoKGUuWVVJfHx7fSkudmVyc2lvbnx8KGUuWUFIT098fHt9KS5WRVJTSU9OJiY0 KXwoKGUuRXh0fHx7fSkudmVyc2lvbiYmOCl8KChlLmRvam98fHt9KS52ZXJzaW9u JiYxNil8KChlLl9nYXF8fGUuX2dhdCkmJjMyKXwoZS5nb29nbGVfYWRfY2xpZW50 JiY2NCl8KChlLkZCfHxlLmZiQXN5bmNJbml0KSYmMTI4KXwoZS4kQlRCJiYyNTYp fChlLm1lZWJvJiY1MTIpfChlLmdpZ3lhJiYxMDI0KXwoZS5TSEFSRVRISVMmJjIw NDgpfChlLl9xZXZlbnRzJiY0MDk2KXwoZS50d3R0ciYmODE5Mil8KGUucG9zdHdp ZGdldG5hbWVzcGFjZSYmMTYzODQpfChlLmEyYSYmMzI3NjgpfChlLlNIUlNCX1Nl dHRpbmdzJiY2NTUzNil8KGUuX3NmX2FzeW5jX2NvbmZpZyYmMTMxMDcyKXwoZS5T aG9waWZ5JiYyNjIxNDQpfWZ1bmN0aW9uIGkoZSxuKXt2YXIgYT13aW5kb3cuX2F0 Yy5yZXZ8fCIiO2lmKGUpaWYoZS54Y2s9X2F0Yy54Y2s/MTowLGUueHhsPTEsZS5z aWQ9X2F0ZS50cmFjay5zc2lkKCksZS5wdWI9X2F0ZS5wdWIoKSxlLnNzbD1fYXRl LnNzbHx8MCxlLmR1PV9hdGUudHJ1bmNhdGVVUkwoZS51cmx8fF9hdGUuZHV8fGp0 LmR1KSxlLnh0cj1uIT09TT8wOl9hdGMueHRyLF9hdGUuZHQmJihlLmR0PV9hdGUu ZHQpLF9hdGUuY2ImJihlLmNiPV9hdGUuY2IpLF9hdGUua3cmJihlLmt3PV9hdGUu a3cpLGUubG5nPVEoKSxlLnZlcj0zMDAsZS5qc2w9X2F0ZS50cmFjay5qc2woKSxl LnByb2Q9X2F0ZS50cmFjay5wcm9kKCksIV9hdGUudXBtJiZfYXRlLnVpZCYmKGUu dWlkPV9hdGUudWlkKSxlLnBjPWUuc3BjfHxnLmpvaW4oIiwiKSxfYXRlLmRyJiYo ZS5kcj1fYXRlLnRydW5jYXRlVVJMKF9hdGUuZHIpKSxfYXRlLmRoJiYoZS5kaD1f YXRlLmRoKSxhJiYoZS5yZXY9YSksX2F0ZS54ZnIpe2lmKF9hdGUudXBtJiZIdC5n ZXRQb3N0TWFuKCkpSHQuZ2V0UG9zdE1hbigpLnBvc3QodmUoZSkpO2Vsc2UgaWYo IXB0KCkpe3ZhciBpPUh0LmdldENvbnRhaW5lcigpO20mJmkucmVtb3ZlQ2hpbGQo aS5maXJzdENoaWxkKSxtPXQoKSxtLnNyYz1FdCsiIyIrdmUoZSksaS5hcHBlbmRD aGlsZChtKX19ZWxzZSBwLnB1c2goZSl9ZnVuY3Rpb24gbyhlKXtpZihjLmxlbmd0 aD4wfHxsKXtpZihfYXRlLnRyYWNrLnN4bSghMSxvKSxfYXRjLnh0cilyZXR1cm47 dmFyIHQ9bHx8e307aWYodC5jZT1jLmpvaW4oIiwiKSxjPVtdLGw9bnVsbCxpKHQp LGUpe3ZhciBuPXUuY2UoImlmcmFtZSIpO24uaWQ9Il9hdGYiLF9hdGUub3BwKG4p LHUuYm9keS5hcHBlbmRDaGlsZChuKSxuPXUuZ2V0RWxlbWVudEJ5SWQoIl9hdGYi KX19fWZ1bmN0aW9uIHIoZSx0KXtjLnB1c2goX2F0ZS50cmFjay5mY3YoZSx0KSks X2F0ZS50cmFjay5zeG0oITAsbyl9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPVkoKSxh PWRvY3VtZW50LmxvY2F0aW9uP2p0LmRoOiIiLGk9d2luZG93Ll9hdGM7aWYoYy5s ZW5ndGg+MCl7aWYoaS54dHIpcmV0dXJuOyhhLmluZGV4T2YoIi5nb3YiKT4tMXx8 YS5pbmRleE9mKCIubWlsIik+LTEpJiYoaS54Y2s9MSksX2F0ZS5kdCYmYy5wdXNo KF9hdGUudHJhY2suZmN2KCJwdGkiLF9hdGUuZHQpKSxjLnB1c2goX2F0ZS50cmFj ay5mY3YoImxuZyIsbikpLF9hdGUuY2ImJmMucHVzaChfYXRlLnRyYWNrLmZjdigi Y2IiLF9hdGUuY2IpKTt2YXIgbz0iLy9vLmFkZHRoaXMuY29tL2F0L3Rldi0iK19h dGUudHJhY2sucmFuKCkrIi5wbmc/ZXY9IitfYXRlLnRyYWNrLnN0YSgpKyImY2U9 Iit3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KGMuam9pbigiLCIpKSsoaS54Y2s/ IiZ4Y2s9MSI6IiIpKyhfYXRlLmRyPyImZHI9Iit3aW5kb3cuZW5jb2RlVVJJQ29t cG9uZW50KF9hdGUudHJhY2subWd1KF9hdGUuZHIse2RlZnJhZzoxfSkpOiIiKSso X2F0ZS5kdT8iJlBSRT0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoX2F0ZS50 cmFjay5tZ3UoX2F0ZS5kdSx7ZGVmcmFnOjF9KSk6IiIpO2M9W10sX2F0ZS50cmFj ay5scHgoe3VybDpvLGNsb3NlOmV9LHQpfX1mdW5jdGlvbiBkKGUsdCl7cmV0dXJu IGU/ZS5wY28/KGUucnVsZUlkfHx6Lndhcm4oIm1pc3NpbmcgcnVsZUlkLCBvbmx5 IE9LIGlmIG5vIGF1ZGllbmNlcyBhcmUgc3BlY2lmaWVkIGZvciB0aGUgdG9vbCBg IitlLnBjbysiYC4iKSxlLnVybHx8KGUudXJsPV9hdGUuZHUpLGMucHVzaChfYXRl LnRyYWNrLmZjdigidHlwIiwibG5rIikpLGMucHVzaChfYXRlLnRyYWNrLmZjdigi cGNvIixlLnBjbykpLGMucHVzaChfYXRlLnRyYWNrLmZjdigicHVyIixfYXRlLnRy YWNrLm1ndShlLnVybCx7ZGVmcmFnOiEwfSkpKSxlLmdvYWwmJmMucHVzaChfYXRl LnRyYWNrLmZjdigiZ29hbCIsZS5nb2FsKSksZS5ydWxlSWQmJmMucHVzaChfYXRl LnRyYWNrLmZjdigiY2FkIixlLnJ1bGVJZCkpLGUucHJvdiYmYy5wdXNoKF9hdGUu dHJhY2suZmN2KCJwcm92IixlLnByb3YpKSxlLmVtYWlsSGFzaCYmYy5wdXNoKF9h dGUudHJhY2suZmN2KCJlbWhhc2giLGUuZW1haWxIYXNoKSksZS50ZXN0SUQmJmMu cHVzaChfYXRlLnRyYWNrLmZjdigidGVzdCIsZS50ZXN0SUQpKSxlLnBvc2l0aW9u JiZjLnB1c2goX2F0ZS50cmFjay5mY3YoInBvc2l0aW9uIixlLnBvc2l0aW9uKSks dm9pZCBzKCExLHQpKTp2b2lkIHouZXJyb3IoIm1pc3NpbmcgcGNvIik6dm9pZCB6 LmVycm9yKCJtaXNzaW5nIGRhdGEiKX12YXIgdT1kb2N1bWVudCxjPVtdLGw9bnVs bCxmPWZ1bmN0aW9uKGUpe3ZhciB0PV9hdGUudHJhY2sudHMuZ2V0KCk7InNvY2lh bCI9PT10LnR5cGU/X2F0ZS5jb29raWUuc3NjLnVwZGF0ZSh0LnNlcnZpY2UpOmUm Jl9hdGUuY29va2llLnNzYy51cGRhdGUoZSl9LHA9W10saD1mdW5jdGlvbigpe2Zv cih2YXIgZTtlPXAucG9wKCk7KWkoZSl9LG09bnVsbCxnPVtdO19hdGUuZWQuYWRk RXZlbnRMaXN0ZW5lcigiYWRkdGhpcy1pbnRlcm5hbC5saW5rLmNsaWNrIixmdW5j dGlvbihlKXtlJiZlLmRhdGEmJmUuZGF0YS5wY28mJmUuZGF0YS51cmwmJihjLnB1 c2goX2F0ZS50cmFjay5mY3YoInR5cCIsImxuayIpKSxjLnB1c2goX2F0ZS50cmFj ay5mY3YoInBjbyIsZS5kYXRhLnBjbykpLGMucHVzaChfYXRlLnRyYWNrLmZjdigi cHVyIixfYXRlLnRyYWNrLm1ndShlLmRhdGEudXJsLHtkZWZyYWc6MX0pKSkscygh MCkpfSksX2F0ZS5lZC5hZGRFdmVudExpc3RlbmVyKCJhZGR0aGlzLWludGVybmFs LmNvbnZlcnNpb24iLGZ1bmN0aW9uKGUpe3ouZGVidWcoZSksZChlKX0pLF9hdGUu ZWQuYWRkRXZlbnRMaXN0ZW5lcigiYWRkdGhpcy5tZW51LnNoYXJlIixmdW5jdGlv bihlKXtlJiZlLmRhdGEmJmUuZGF0YS5zZXJ2aWNlJiYoaSh7Z2VuOiJtb3JlIj09 PWUuZGF0YS5zZXJ2aWNlfHwic2V0dGluZ3MiPT09ZS5kYXRhLnNlcnZpY2V8fCJs aW5rIj09PWUuZGF0YS5zZXJ2aWNlfHwiZW1haWwiPT09ZS5kYXRhLnNlcnZpY2U/ X2F0ZS5hZC50eXBlLk5PT1A6X2F0ZS5hZC50eXBlLlNIQVJFLHBpeDoiZGVzdD0i K2UuZGF0YS5zZXJ2aWNlLHN2YzplLmRhdGEuc2VydmljZSx1cmw6ZS5kYXRhLnVy bHx8bnVsbH0pLF9hdGUuZGNwPV9hdGUuYWQudHlwZS5TSEFSRSl9KSxfYXRlLmVk LmFkZEV2ZW50TGlzdGVuZXIoImFkZHRoaXMubWVudS5mb2xsb3ciLGZ1bmN0aW9u KGUpe2UmJmUuZGF0YSYmZS5kYXRhLnNlcnZpY2UmJmUuZGF0YS51cmwmJmkoe2dl bjpfYXRlLmFkLnR5cGUuRk9MTE9XLHBpeDoiZGVzdD0iK2UuZGF0YS5zZXJ2aWNl LHN2YzplLmRhdGEuc2VydmljZSx1cmw6ZS5kYXRhLnVybH0pfSksX2F0ZS50cmFj a3x8KF9hdGUudHJhY2s9e30pLF9hdGUudXRpbC5leHRlbmQoX2F0ZS50cmFjayx7 cGNzOmcsYXBjOmUsY2V2OnIsY3RmOnQsanNsOmEscHJvZDpuLGd0ZjpIdC5nZXRD b250YWluZXIscXRwOmZ1bmN0aW9uKGUpe3AucHVzaChlKX0sc3NjOmYsc3RmOmZ1 bmN0aW9uKGUpe209ZX0sdHJrOmkseHRwOmgsY29udmVyc2lvbjpkfSl9KCksYmUo X2F0ZSx7X3JlYzpbXSx4ZnI6IV9hdGUudXBtfHwhX2F0ZS5icm8uZmZ4LHBtaDpm dW5jdGlvbihlKXt2YXIgdDtpZigiLmFkZHRoaXMuY29tIj09PWUub3JpZ2luLnNs aWNlKC0iLmFkZHRoaXMuY29tIi5sZW5ndGgpKXtpZighZS5kYXRhKXJldHVybjtp ZihlLmRhdGEubGVuZ3RoKWlmKF9hdGUudW5qJiZlLmRhdGEuaW5kZXhPZiYmMD09 PWUuZGF0YS5pbmRleE9mKCJ7IikpdHJ5e3Q9SlNPTi5wYXJzZShlLmRhdGEpfWNh dGNoKGUpe3Q9X2F0ZS51dGlsLnJmcm9tS1YoZS5kYXRhKX1lbHNlIHQ9X2F0ZS51 dGlsLnJmcm9tS1YoZS5kYXRhKTtlbHNlIHQ9ZS5kYXRhO2Zvcih2YXIgbj0wO248 X2F0ZS5fcmVjLmxlbmd0aDtuKyspX2F0ZS5fcmVjW25dKHQpfX19KSxmdW5jdGlv bigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW2EtekEtWl0vZyxm dW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgoZTw9IloiPzkw OjEyMik+PShlPWUuY2hhckNvZGVBdCgwKSsxMyk/ZTplLTI2KX0pfWZ1bmN0aW9u IHQoZSl7dmFyIHQ9MDtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVvZiBlPyhlPSgo ZXx8IiIpLnRvTG93ZXJDYXNlKCkrIiIpLnJlcGxhY2UoLyAvZywiIiksIm1hdHVy ZSIhPT1lJiYiYWR1bHQiIT09ZSYmInJ0YS01MDQyLTE5OTYtMTQwMC0xNTc3LXJ0 YSIhPT1lfHwodHw9bCksdCk6dH1mdW5jdGlvbiBhKGUsdCl7dmFyIG4sYSxpPTA7 aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gaTtmb3IoZT0oKGV8fCIi KS50b0xvd2VyQ2FzZSgpKyIiKS5yZXBsYWNlKC9bXmEtekEtWl0vZywiICIpLnNw bGl0KCIgIiksbj0wLGE9ZS5sZW5ndGg7bjxhO24rKylpZih2W2Vbbl1dfHwhdCYm X1tlW25dXSlyZXR1cm4gaXw9bDtyZXR1cm4gaX1mdW5jdGlvbiBpKCl7dmFyIGU9 dSgpLG49Yy5hZGR0aGlzX3RpdGxlfHxqdC50aXRsZSxpPWEobiwhMSkscj0oZXx8 IiIpLmxlbmd0aDtpZihpfD1hKGp0LmRoLCEwKSxlJiZyKWZvcig7ci0tOyl7dmFy IHMsZD1lW3JdfHx7fTtkLm5hbWU/cz1kLm5hbWU6ZC5nZXRBdHRyaWJ1dGUmJihz PWQuZ2V0QXR0cmlidXRlKCJwcm9wZXJ0eSIpKSxzfHwocz0iIikscz1zLnRvTG93 ZXJDYXNlKCk7dmFyIGw9ZC5jb250ZW50OyJkZXNjcmlwdGlvbiIhPT1zJiYia2V5 d29yZHMiIT09c3x8KGl8PWEobCwhMSkpLCJyYXRpbmciPT09cyYmKGl8PXQobCkp LCJrZXl3b3JkcyI9PT1zJiZsJiZsLmxlbmd0aCYmbyhsKX1yZXR1cm4gaX1mdW5j dGlvbiBvKGUpe3ZhciB0LG4sYT1lLnNwbGl0KCIsIiksaT0yMDA7Zm9yKG49MDtu PGEubGVuZ3RoJiYodD1fYXRlLnRyaW0oYVtuXSksKGktPXQubGVuZ3RoKzEpPjAp O24rKylnLnB1c2godCl9ZnVuY3Rpb24gcigpe3ZhciBlLHQsbixhLGk9dSgpLG89 W10scj0oaXx8IiIpLmxlbmd0aDtpZihpJiZyKWZvcig7ci0tOyllPWlbcl18fHt9 LHQ9ZS5nZXRBdHRyaWJ1dGU/ZS5nZXRBdHRyaWJ1dGUoInByb3BlcnR5Iik6IiIs dD0odHx8ZS5uYW1lfHwiIikudG9Mb3dlckNhc2UoKSxuPWUuY29udGVudCwwPT09 dC5pbmRleE9mKCJvZzoiKSYmKGE9dC5zcGxpdCgiOiIpLnBvcCgpLChvLmxlbmd0 aDw3fHwidHlwZSI9PT1hKSYmby5wdXNoKCJ0eXBlIj09PWE/YSsiPSIrbjphKSk7 cmV0dXJuIG99ZnVuY3Rpb24gcygpe3JldHVybiB2ZShhdCgpKX1mdW5jdGlvbiBk KCl7cmV0dXJuIGcuam9pbigiLCIpfWZvcih2YXIgdT1uKDc0NiksYz0oZG9jdW1l bnQsd2luZG93KSxsPTEsZj1bImNiZWEiLCJjYmVhYiIsImtrayIsInp2eXMiLCJn dmdmIiwic2hweGYiLCJjaGZmbHl2Y2YiLCJwZXJuemN2ciIsInN2Zmd2YXQiLCJ3 dm1tIiwiZmN5YmJ0ciIsImZsb3ZuYSJdLHA9WyJwaHoiXSxoPWYubGVuZ3RoLG09 cC5sZW5ndGgsZz1bXSxfPXt9LHY9e307aC0tOyl2W2UoZltoXSldPTE7Zm9yKDtt LS07KV9bZShwW21dKV09MTtfYXRlLmFkfHwoX2F0ZS5hZD17fSksYmUoX2F0ZS5h ZCx7Y2xhOmksZ29nOnIsb2c6cyxrdzpkLGdjaDpXdH0pfSgpLGZ1bmN0aW9uKCl7 ZnVuY3Rpb24gZShlKXtpP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtfYXRlLnRyYWNr LnRyayhlLCEwKX0sX2F0ZS51cG0/MDoyKl9hdGUud2FpdCk6YS5wdXNoKGUpfWZ1 bmN0aW9uIHQodCl7dmFyIG49e3BjbzoiY252LTEwMCJ9LGE9e3B4aWQ6MSxldjox fTtpZih0KWZvcih2YXIgaSBpbiB0KWFbaV0mJihuW2ldPXRbaV0pO2Uoe2dlbjoy ZTMsZmNwOjEscGl4Ol9hdGUudXRpbC50b0tWKG4pfSl9ZnVuY3Rpb24gbih0KXtl KHtwaXh1OnR9KX12YXIgYT1bXSxpPSFfYXRlLnVwbXx8KF9hdGUuZGF0fHx7fSku cmR5O19hdGUuZHV8fChfYXRlLmR1PWp0LmR1KSxfYXRlLmRofHwoX2F0ZS5kaD1q dC5kaCksX2F0ZS5kcnx8KF9hdGUuZHI9anQuZHIpLF9hdGUuYWR8fChfYXRlLmFk PXt9KSxiZShfYXRlLmFkLHtldmVudDp0LGdldFBpeGVsczpufSksX2F0ZS5lZC5h ZGRFdmVudExpc3RlbmVyKCJhZGR0aGlzLWludGVybmFsLmRhdGEucmR5IixmdW5j dGlvbigpe2k9MTtmb3IodmFyIHQ9MDt0PGEubGVuZ3RoO3QrKyllKGFbdF0pfSl9 KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLGEsaSxvLHIpe3JldHVybiJm dW5jdGlvbiIhPXR5cGVvZiByfHxyLm9zdHx8KHIoKSxyLm9zdD0xKSxufHwobj13 aW5kb3cuYWRkdGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIG8/ZnVuY3Rpb24oKXth JiZhLmFwcGx5KG4sYXJndW1lbnRzKTt2YXIgdD1hcmd1bWVudHM7aT9fYXRlLmVk Lm9uY2UoaSxmdW5jdGlvbigpe28uYXBwbHkobix0KX0pOmUuYWRkRXZlbnRMaXN0 ZW5lcigibG9hZCIsZnVuY3Rpb24oKXtvLmFwcGx5KG4sdCl9KSxlLmxvYWQoKX06 ZnVuY3Rpb24obyxyLHMpe28mJihvPV9hdGUudXRpbC5zZWxlY3Qobyksby5sZW5n dGgmJihhJiZhKG8pLGk/X2F0ZS5lZC5hZGRFdmVudExpc3RlbmVyKGksZnVuY3Rp b24oKXtuW3RdKG8scixzKX0pOmUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVu Y3Rpb24oKXtuW3RdKG8scixzKX0pLGUubG9hZCgpKSl9fWZ1bmN0aW9uIHQodCl7 dmFyIG4sYT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnRl cm5hbCBBUEkgcmVxdWVzdCIpfSxpPXQmJnQuY29udGV4dHx8d2luZG93LmFkZHRo aXM7dHx8YSgpLHQucmVzb3VyY2VzIGluc3RhbmNlb2YgQXJyYXkmJih0LnJlc291 cmNlcz1uZXcgX2F0ZS5yZXNvdXJjZS5CdW5kbGUodC5yZXNvdXJjZXMpKSx0LnJl c291cmNlc3x8YSgpLHQubWV0aG9kfHxhKCksbj1lKHQucmVzb3VyY2VzLHQubWV0 aG9kLHQuY29udGV4dCx0LnByZSx0LmV2ZW50LHQuY2FsbGJhY2ssdC5vbmNhbGwp LGlbdC5tZXRob2RdPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO19hdGMueG9s JiYhX2Fkci5pc1JlYWR5P19hZHIuYXBwZW5kKGZ1bmN0aW9uKCl7bi5hcHBseShp LGUpfSk6bi5hcHBseShpLGUpfX1mdW5jdGlvbiBuKGUpe2UubWV0aG9kcyYmT2Jq ZWN0LmtleXMoZS5tZXRob2RzKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBhPWUu bWV0aG9kc1tuXTthLm1ldGhvZD1uLGUuY29udGV4dCYmKGEuY29udGV4dD1lLmNv bnRleHQpLGUucmVzb3VyY2VzJiYoYS5yZXNvdXJjZXM9ZS5yZXNvdXJjZXMpLHQo YSl9KX1fYXRlLmFwaT17QXBpUXVldWVGYWN0b3J5OmUsYWRkQXN5bmM6dCxyZWdp c3RlcjpufX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgZSx0LG49ZG4u Z24oImxpbmsiKSxhPXt9O2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspdD1uW2VdLHQu aHJlZiYmdC5yZWwmJihhW3QucmVsXT10LmhyZWYpO3JldHVybiBhfWZ1bmN0aW9u IHQoZSx0LG4pe3ZhciBhPWUueGlkO3JldHVybiB0LmRhdGFfdHJhY2tfY2xpY2ti YWNrfHx0LmRhdGFfdHJhY2tfbGlua2JhY2t8fF9hdGUudHJhY2suY3RwKHQucHJv ZHVjdCx0KT9fYXRlLnRyYWNrLmdjYyhhLChlLnNtZHx8X2F0ZS5zbWR8fHt9KS5n ZW58fDApKyhufHwiIik6IiJ9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKGUudGVtcGxh dGVzJiZlLnRlbXBsYXRlcy50d2l0dGVyfHxfYXRlLndscCYmImh0dHA6IiE9PV9h dGUud2xwKX1mdW5jdGlvbiBpKGUsdCxuLGEpe3JldHVybiBCKCJ0d2l0dGVyIixl KSwhMX1mdW5jdGlvbiBvKGUsdCxuLGEsaSl7dmFyIG89aT8iZm9sbG93IjplLmlu ZGV4T2YoIl9jb21tZW50Iik+LTE/ImNvbW1lbnQiOiJzaGFyZSIscj17ZWxlbWVu dDphfHx7fSxzZXJ2aWNlOmV8fCJ1bmtub3duIix1cmw6aT90LmZvbGxvd1VybDp0 LnRyYWNrdXJsfHx0LnVybH07X2F0ZS5lZC5maXJlKCJhZGR0aGlzLm1lbnUuIitv LHNuLmFkZHRoaXN8fHt9LHIpfWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0IGluIGUp ZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKGhbdF09ZVt0XSl9ZnVuY3Rpb24gcyhlKXtn LnB1c2goZSl9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgZT0wO2U8Zy5sZW5ndGg7ZSsr KWdbZV0oKX1mdW5jdGlvbiB1KGUsdCxuKXtpZihoW2VdKXRyeXtyZXR1cm4gaFtl XSh0LG4sZSksdCYmKCh0LnBhcmVudE5vZGUuY2xhc3NOYW1lfHwiIikuaW5kZXhP ZigidG9vbGJveCIpPi0xJiYodC5wYXJlbnROb2RlLnNlcnZpY2VzPXQucGFyZW50 Tm9kZS5zZXJ2aWNlc3x8e30sdC5wYXJlbnROb2RlLnNlcnZpY2VzW2VdPTEpLCh0 LmNsYXNzTmFtZXx8IiIpLmluZGV4T2YoImF0MzAwIik9PT0tMSYmKHQuY2xhc3NO YW1lKz0iIGF0MzAwYiIpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMX1m dW5jdGlvbiBjKGUpe2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkm JihtW3RdPWVbdF0pfWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciBhPWZ1bmN0aW9uKCl7 fTtyZXR1cm4hIW1bZV0mJihtW2VdLnJlcXVpcmUmJiFtW2VdLnJlcXVpcmUoZSx0 LG4pfHxPYmplY3Qua2V5cyhtW2VdKS5mb3JFYWNoKGZ1bmN0aW9uKG4peyJfYWZ0 ZXIiPT09bj9hPW1bZV1bbl06dFtuXT1mdW5jdGlvbihhKXtyZXR1cm4gYT1hfHx7 fSxhLmVsPXQsYS5zZXJ2aWNlPWUsbVtlXVtuXShhKX19KSxhKHQpLCEwKX12YXIg Zj1uKDYxNykscD1lKCksaD17fSxtPXt9LGc9W107X2F0ZS5zaGFyZT1fYXRlLnNo YXJlfHx7fSxfYXRlLnV0aWwuZXh0ZW5kKF9hdGUuc2hhcmUse29udzpuKDYzMSks Y2xlYW5seTpCLHB0czppLHVudDphLGdlbnVybDpPdCxhY2I6ZixnY3A6dCxzdmN1 cmw6big1NjApLHRyYWNrOlIsbm90aWZ5Om8sbGlua3M6cCxyZWdpc3RlcjpyLHJl Z2lzdGVyTGlzdGVuZXJzOmMsc3ViOmQscmVnaXN0ZXJTdWJzY3JpYmVyOnMsZXh0 ZXJuOnUsZXh0ZXJuRXZlbnRzOmx9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUo KXtyZXR1cm4gX2F0Yy5sdGomJmkoKXx8YSgpJiZGQi5YRkJNTCYmRkIuWEZCTUwu cGFyc2V9ZnVuY3Rpb24gdCgpe2lmKGY9PT1NKXRyeXt2YXIgZT1kb2N1bWVudC5n ZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdO2lmKGUpaWYoZS5nZXRBdHRy aWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJ4bWxuczpmYiIpKWY9ITA7ZWxzZSBpZihf YXRlLmJyby5tc2kpe3ZhciB0PWUub3V0ZXJIVE1MLnN1YnN0cigwLGUub3V0ZXJI VE1MLmluZGV4T2YoIj4iKSk7dC5pbmRleE9mKCJ4bWxuczpmYiIpPi0xJiYoZj0h MCl9fWNhdGNoKGUpe2Y9ITF9cmV0dXJuIGZ9ZnVuY3Rpb24gYSgpe3JldHVybiJv YmplY3QiPT10eXBlb2Ygc24uRkImJkZCLkV2ZW50JiYiZnVuY3Rpb24iPT10eXBl b2YgRkIuRXZlbnQuc3Vic2NyaWJlfWZ1bmN0aW9uIGkoKXtyZXR1cm4hKHNuLkZC X1JlcXVpcmVGZWF0dXJlc3x8c24uRkImJihGQi5TaGFyZXx8RkIuQm9vdHN0cmFw KSl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXt9LGE9bVt0XSxpPWFkZHRoaXNfY29u ZmlnLmRhdGFfZ2FfdHJhY2tlcnx8YWRkdGhpc19jb25maWcuZGF0YV9nYV9wcm9w ZXJ0eTtmb3IodmFyIG8gaW4gYWRkdGhpc19zaGFyZSluW29dPWFkZHRoaXNfc2hh cmVbb107aWYoYSlmb3IobyBpbiBhKW5bb109YVtvXTtuLnVybD10LF9hdGUuc2hh cmUudHJhY2soZSwwLG4sYWRkdGhpc19jb25maWcpLGkmJl9hdGUuZ2F0KGUsdCxh ZGR0aGlzX2NvbmZpZyxuKX1mdW5jdGlvbiByKCl7anQuZHUuaW5kZXhPZihfYXRy KSE9PS0xfHxfYXRlLnN1Ynx8X3x8KGEoKT8oXz0xLEZCLkV2ZW50LnN1YnNjcmli ZSgibWVzc2FnZS5zZW5kIixmdW5jdGlvbihlKXtvKCJmYWNlYm9va19zZW5kIixl KX0pLEZCLkV2ZW50LnN1YnNjcmliZSgiZWRnZS5jcmVhdGUiLGZ1bmN0aW9uKGUp e2hbZV18fChvKCJmYWNlYm9va19saWtlIixlKSxoW2VdPTEpfSksRkIuRXZlbnQu c3Vic2NyaWJlKCJlZGdlLnJlbW92ZSIsZnVuY3Rpb24oZSl7aFtlXSYmKG8oImZh Y2Vib29rX3VubGlrZSIsZSksaFtlXT0wKX0pLEZCLkV2ZW50LnN1YnNjcmliZSgi Y29tbWVudC5jcmVhdGUiLGZ1bmN0aW9uKGUpe28oImZhY2Vib29rX2NvbW1lbnQi LGUuaHJlZil9KSxGQi5FdmVudC5zdWJzY3JpYmUoImNvbW1lbnQucmVtb3ZlIixm dW5jdGlvbihlKXtvKCJmYWNlYm9va191bmNvbW1lbnQiLGUuaHJlZil9KSk6c24u ZmJBc3luY0luaXQmJiFiJiYodjwzJiZzZXRUaW1lb3V0KHIsM2UzKzJlMyp2Kysp LGI9MSkpfWZ1bmN0aW9uIHMoZSx0KXt2YXIgbj0iZmItcm9vdCIsaT1wLmdldEVs ZW1lbnRCeUlkKG4pLG89c24uZmJBc3luY0luaXQscz0hMSxkPWZ1bmN0aW9uKCl7 cz0hMDtmb3IodmFyIGU9MDtlPGcubGVuZ3RoO2UrKylGQi5YRkJNTC5wYXJzZShn W2VdKX07aWYoZy5wdXNoKGUpLGEoKSYmRkIuWEZCTUwmJkZCLlhGQk1MLnBhcnNl KXIoKSxGQi5YRkJNTC5wYXJzZShlKTtlbHNle2lmKCFvJiYoaXx8KGk9cC5jZSgi ZGl2IiksaS5pZD1uLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSkpLCFvKSl7 dmFyIHU9cC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt1LnNyYz0iLy9jb25uZWN0 LmZhY2Vib29rLm5ldC8iKyh0fHxfYXRlLmdmbChRKCkpKSsiL3Nkay5qcyN2ZXJz aW9uPXYyLjYiLHUuYXN5bmM9ITAsaS5hcHBlbmRDaGlsZCh1KSxvPWZ1bmN0aW9u KCl7Zm9yKHZhciBlPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1ldGEiKSx0PW51 bGwsbj0wO248ZS5sZW5ndGg7bisrKWlmKCJmYjphcHBfaWQiPT09ZVtuXS5wcm9w ZXJ0eXx8ImZiOmFwcF9pZCI9PT1lW25dLm5hbWUpe3Q9ZVtuXS5jb250ZW50O2Jy ZWFrfXZhciBhO2E9dD90Ong/IjE0MDU4NjYyMjY3NDI2NSI6IjE3MjUyNTE2Mjc5 MzkxNyIsRkIuaW5pdCh7YXBwSWQ6YSxjb29raWU6ITAsdmVyc2lvbjoidjIuNiJ9 KX19dyYmKHc9ITEsc24uX19vcmlnX19mYkFzeW5jSW5pdD1vLHNuLmZiQXN5bmNJ bml0PWZ1bmN0aW9uKCl7c24uX19vcmlnX19mYkFzeW5jSW5pdCgpLHIoKSxkb2N1 bWVudCYmImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/ZCgpOndpbmRv dy5hZGRFdmVudExpc3RlbmVyPyhzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3x8ZCgp fSwzZTMpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixkLCExKSk6ZCgp fSl9fWZ1bmN0aW9uIGQoZSx0KXtlLm9zdHx8X2F0ZS5icm8uaWU2fHwoX2F0ZS51 ZmJsPTEsX2F0ZS5zaGFyZS5mYi5yZWFkeSgpP2MoInNlbmQiLGUsdCk6KGUuY2xh c3NOYW1lPSIiLGUuaW5uZXJIVE1MPSI8c3Bhbj48L3NwYW4+IixlLnN0eWxlLndp ZHRoPWUuc3R5bGUuaGVpZ2h0PSIwcHgiKSxlLm5vaD1lLm9zdD0xKX1mdW5jdGlv biB1KGUsdCl7ZS5vc3R8fF9hdGUuYnJvLmllNnx8KF9hdGUudWZibD0xLF9hdGUu c2hhcmUuZmIucmVhZHkoKT9jKCJzaGFyZSIsZSx0KTooZS5jbGFzc05hbWU9IiIs ZS5pbm5lckhUTUw9IjxzcGFuPjwvc3Bhbj4iLGUuc3R5bGUud2lkdGg9ZS5zdHls ZS5oZWlnaHQ9IjBweCIpLGUubm9oPWUub3N0PTEpfWZ1bmN0aW9uIGMoZSx0LG4s YSl7YXx8KGE9VHQodCwiZmI6IitlKSksYS5ocmVmPWEuaHJlZnx8X2F0ZS50cmFj ay5tZ3Uobi5zaGFyZS51cmwse2RlZnJhZzoxfSksZT0ic2hhcmUiPT09ZT9lKyIt YnV0dG9uIjplO3ZhciBpPWEuaGVpZ2h0fHwyNSxvPXAuY2UoImRpdiIpO28uY2xh c3NOYW1lPSJmYi0iK2Usby5kYXRhUmVmPV9hdGUuc2hhcmUuZ2NwKG4uc2hhcmUs bi5jb25mLCIuIitlKS5yZXBsYWNlKCIsIiwiXyIpLG8uc3R5bGUuaGVpZ2h0PWkr InB4Iix0LmFwcGVuZENoaWxkKG8pO2Zvcih2YXIgciBpbiBhKWlmKGEuaGFzT3du UHJvcGVydHkocikpe3ZhciBkPWFbcl07aWYoInNoYXJlLWJ1dHRvbiI9PT1lKXtp ZigiaG9yaXpvbnRhbCI9PT1kKXt0LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJk YXRhLSIrciwiYnV0dG9uX2NvdW50Iik7Y29udGludWV9aWYoInZlcnRpY2FsIj09 PWQpe3QuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoImRhdGEtIityLCJib3hfY291 bnQiKTtjb250aW51ZX19dC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgiZGF0YS0i K3IsZCl9IWF8fGEudHlwZXx8YS5sYXlvdXR8fHQuZmlyc3RDaGlsZC5zZXRBdHRy aWJ1dGUoImRhdGEtdHlwZSIsImJveF9jb3VudCIpLHModCl9ZnVuY3Rpb24gbCh0 LG4pe2lmKCF0Lm9zdCl7dmFyIGEsaSxvLHI9X2F0ZS5hcGkucHRwYSh0LCJmYjps aWtlIikscz1yLmxheW91dHx8ImJ1dHRvbl9jb3VudCIsZD17c3RhbmRhcmQ6WzQ1 MCxyLnNob3dfZmFjZXM/ODA6MzVdLGJ1dHRvbl9jb3VudDpbOTAsMjVdLGJveF9j b3VudDpbNTUsNDBdfSx1PXIud2lkdGh8fChkW3NdP2Rbc11bMF06MTAwKSxsPXIu aGVpZ2h0fHwoZFtzXT9kW3NdWzFdOjI1KTtpZihwYXNzdGhyb3VnaD1fYXRlLnV0 aWwudG9LVihyKSxfYXRlLnVmYmw9MSxlKCkpe3IubGF5b3V0PT09TSYmKHIubGF5 b3V0PSJidXR0b25fY291bnQiKSxyLnNob3dfZmFjZXM9PT1NJiYoci5zaG93X2Zh Y2VzPSJmYWxzZSIpLHIuc2hhcmU9PT1NJiYoci5zaGFyZT0iZmFsc2UiKSxyLmFj dGlvbj09PU0mJihyLmFjdGlvbj0ibGlrZSIpLHIud2lkdGg9PT1NJiYoci53aWR0 aD11KSxyLmhlaWdodD09PU0mJihyLmhlaWdodD1sKSxyLmZvbnQ9PT1NJiYoci5m b250PSJhcmlhbCIpLHIuaHJlZj09PU0mJihvPV9hdGUudXRpbC5jbG9uZShuLnNo YXJlLnVybF90cmFuc2Zvcm1zfHx7fSksby5kZWZyYWc9MSxyLmhyZWY9X2F0ZS50 cmFjay5tZ3Uobi5zaGFyZS51cmwsbykpLHIuc2VuZD0hMSxuLnNoYXJlLnhpZHx8 KG4uc2hhcmUueGlkPUplLm1ha2VDVUlEKCkpLG1bci5ocmVmXT17fTtmb3IoaSBp biBuLnNoYXJlKW1bci5ocmVmXVtpXT1uLnNoYXJlW2ldO2MoImxpa2UiLHQsbixy KX1lbHNlIF9hdGUuYnJvLm1zaT8odC5pbm5lckhUTUw9JzxpZnJhbWUgdGl0bGU9 IkFkZFRoaXMgfCBGYWNlYm9vayIgZnJhbWVib3JkZXI9IjAiIHNjcm9sbGluZz0i bm8iIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIiBzY3JvbGxiYXJzPSJubyInKyhf YXRlLmJyby5pZTY/IiBzcmM9XCJqYXZhc2NyaXB0OicnXCIiOiIiKSsiPjwvaWZy YW1lPiIsYT10LmZpcnN0Q2hpbGQpOmE9cC5jZSgiaWZyYW1lIiksYS5zdHlsZS5v dmVyZmxvdz0iaGlkZGVuIixhLnN0eWxlLnNjcm9sbGluZz0ibm8iLGEuc3R5bGUu c2Nyb2xsYmFycz0ibm8iLGEuc3R5bGUuYm9yZGVyPSJub25lIixhLnN0eWxlLmJv cmRlcldpZHRoPSIwcHgiLGEuc3R5bGUud2lkdGg9dSsicHgiLGEuc3R5bGUuaGVp Z2h0PWwrInB4IixhLnNyYz0iLy93d3cuZmFjZWJvb2suY29tL3BsdWdpbnMvbGlr ZS5waHA/aHJlZj0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoX2F0ZS50cmFj ay5tZ3Uobi5zaGFyZS51cmwse2RlZnJhZzoxfSkpKyImbGF5b3V0PWJ1dHRvbl9j b3VudCZzaG93X2ZhY2VzPWZhbHNlJndpZHRoPTEwMCZhY3Rpb249bGlrZSZmb250 PWFyaWFsJiIrcGFzc3Rocm91Z2gsX2F0ZS5icm8ubXNpfHxWdCh0LGEsImZhY2Vi b29rX2xpa2VfaWZyYW1lX3dpZGdldCIsYS5zdHlsZS5oZWlnaHQsYS5zdHlsZS53 aWR0aCk7dC5ub2g9dC5vc3Q9MX19dmFyIGYscD1kb2N1bWVudCxoPXt9LG09e30s Zz1bXSxfPTAsdj0wLGI9MCx3PSEwLHg9cC5kb21haW4uc2VhcmNoKC9cLmFkZHRo aXNcLmNvbSQvaSkhPT0tMT8xOjA7X2F0ZS5zaGFyZT1fYXRlLnNoYXJlfHx7fSxf YXRlLnNoYXJlLnJlZ2lzdGVyKHtmYWNlYm9va19saWtlOmwsZmFjZWJvb2tfc2Vu ZDpkLGZhY2Vib29rX3NoYXJlOnV9KSxfYXRlLnNoYXJlLnJlZ2lzdGVyU3Vic2Ny aWJlcihyKSxfYXRlLnNoYXJlLnJlZ2lzdGVyTGlzdGVuZXJzKHtmYWNlYm9vazp7 X2FmdGVyOmZ1bmN0aW9uKGUpe2UuaW5zPTEsZS5ub2g9MX0sb25jbGljazpmdW5j dGlvbihlKXtQKGUpO3ZhciB0LGE9ZS5lbCxpPW4oNjIyKTtyZXR1cm4gdD1DZShh LmNvbmYpLGkodCxhLnNoYXJlKSxCKCJmYWNlYm9vayIsdCl9fX0pLF9hdGUuc2hh cmUuZmI9e2xpa2U6bCxzZW5kOmQsaGFzOmEsbnM6dCxyZWFkeTplLGNvbXBhdDpp LHN1YjpyLGxvYWQ6c319KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7cmV0dXJu IHdpbmRvdy5nYXBpJiZ3aW5kb3cuZ2FwaS5wbHVzb25lfWZ1bmN0aW9uIHQoKXtp ZihlKCkpcmV0dXJuIHZvaWQoZ2FwaSYmZ2FwaS5wbHVzb25lJiYiW29iamVjdCBG dW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGdhcGku cGx1c29uZS5nbykmJmdhcGkucGx1c29uZS5nbygpKTtpZighbyl7bz0xO3ZhciBu PW5ldyBfYXRlLnJlc291cmNlLlJlc291cmNlKCJwbHVzb25lYXBpIiwiLy9hcGlz Lmdvb2dsZS5jb20vanMvcGx1c29uZS5qcyIsZSk7bi5hZGRFdmVudExpc3RlbmVy KCJsb2FkIixmdW5jdGlvbigpe3QoKX0pLG4ubG9hZCgpfX1mdW5jdGlvbiBuKGUp e3ZhciB0PWU/ZS5zaGFyZTphZGR0aGlzX3NoYXJlLG49ZT9lLmNvbmY6YWRkdGhp c19jb25maWc7d2luZG93Ll9hdF9wbHVzb25lY2FsbGJhY2s9d2luZG93Ll9hdF9w bHVzb25lY2FsbGJhY2t8fGZ1bmN0aW9uKGUpe3ZhciBhPXt9O2Zvcih2YXIgaSBp biB0KWFbaV09dFtpXTthLnVybD1lLmhyZWYsX2F0ZS5zaGFyZS50cmFjaygiZ29v Z2xlXyIrKCJvZmYiPT09ZS5zdGF0ZT8idW4iOiIiKSsicGx1c29uZSIsMCxhLG4p fSx3aW5kb3cuX2F0X3BsdXNjYWxsYmFjaz13aW5kb3cuX2F0X3BsdXNjYWxsYmFj a3x8ZnVuY3Rpb24oZSl7dmFyIGE9e307Zm9yKHZhciBpIGluIHQpYVtpXT10W2ld O2EudXJsPWUuaHJlZixfYXRlLnNoYXJlLnRyYWNrKCJnb29nbGVwbHVzX2NvdW50 ZXIiLDAsYSxuKX19ZnVuY3Rpb24gYShlLG4sYSl7aWYoIWUub3N0KXt2YXIgaT0i Z29vZ2xlcGx1c19jb3VudGVyIj09PWE/InBsdXMiOiJwbHVzb25lIixvPVR0KGUs Imc6IitpKSxyPWRvY3VtZW50LmNlKCJnOiIraSk7X2F0ZS5ncGw9X2F0ZS5ncGx8 fHt9LF9hdGUuZ3BsLmxhbmc9X2F0ZS5ncGwubGFuZ3x8bnVsbCxvLmxhbmc9X2F0 ZS5ncGwubGFuZz1fYXRlLmdwbC5sYW5nfHwoInVuZGVmaW5lZCI9PXR5cGVvZiBv Lmxhbmc/bnVsbDpvLmxhbmcpLHdpbmRvdy5fX19nY2ZnPXdpbmRvdy5fX19nY2Zn fHx7fSx3aW5kb3cuX19fZ2NmZy5sYW5nPV9hdGUuZ3BsLmxhbmd8fG8ubGFuZ3x8 X2F0ZS5nZ2woKG4uY29uZnx8e30pLnVpX2xhbmd1YWdlKXx8ImVuLVVTIixvLmhy ZWY9bi5zaGFyZS51cmw9by5ocmVmfHxfYXRlLnRyYWNrLm1ndShuLnNoYXJlLnVy bCx7ZGVmcmFnOjF9KSwicGx1c29uZSI9PT1pPyhvLnNpemU9by5zaXplfHwoZChl LCEwKT8ic3RhbmRhcmQiOiJzbWFsbCIpLG8uY2FsbGJhY2s9by5jYWxsYmFja3x8 Il9hdF8iK2krImNhbGxiYWNrIik6KG8uaHJlZj1fYXRlLnNoYXJlLmFjYigiZ29v Z2xlX3BsdXNvbmVfc2hhcmUiLG4uc2hhcmUsYWRkdGhpc19jb25maWcpLG8uYWN0 aW9uPSJzaGFyZSIpLF9hdGUuc2hhcmUuZ29vZy5zdWIobik7Zm9yKHZhciBzIGlu IG8pby5oYXNPd25Qcm9wZXJ0eShzKSYmci5zZXRBdHRyaWJ1dGUocyxvW3NdKTtW dChlLHIsImdvb2dsZV9wbHVzb25lX2lmcmFtZV93aWRnZXQiLCIyNXB4IiwiOTBw eCIpLGUubm9oPWUub3N0PTEsdCgpfX1mdW5jdGlvbiBpKGUsbil7aWYoIWUub3N0 KXtlLnRpdGxlPSJGb2xsb3cgb24gR29vZ2xlKyI7dmFyIGE9VHQoZSwiZzpwbHVz b25lIik7aWYoYS5zaXplPShhLnNpemV8fCIiKS50b0xvd2VyQ2FzZSgpLGRvY3Vt ZW50LmhlYWQpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtp LnNldEF0dHJpYnV0ZSgiaHJlZiIsYS5ocmVmKSxpLnNldEF0dHJpYnV0ZSgicmVs IiwicHVibGlzaGVyIiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChpKX1pZihh LnVybD1hLmhyZWY9YS5ocmVmfHwiIiwiYmFkZ2UiPT09YS5zaXplfHwic21hbGxi YWRnZSI9PT1hLnNpemUpe3ZhciBvPWRvY3VtZW50LmNlKCJnOnBsdXMiKTtfYXRl LmdwbD1fYXRlLmdwbHx8e30sX2F0ZS5ncGwubGFuZz1fYXRlLmdwbC5sYW5nfHxu dWxsLGEubGFuZz1fYXRlLmdwbC5sYW5nPV9hdGUuZ3BsLmxhbmd8fCgidW5kZWZp bmVkIj09dHlwZW9mIGEubGFuZz9udWxsOmEubGFuZyksd2luZG93Ll9fX2djZmc9 d2luZG93Ll9fX2djZmd8fHt9LHdpbmRvdy5fX19nY2ZnLmxhbmc9X2F0ZS5ncGwu bGFuZ3x8YS5sYW5nfHxfYXRlLmdnbChRKCkpfHwiZW4tVVMiO2Zvcih2YXIgciBp biBhKWEuaGFzT3duUHJvcGVydHkocikmJm8uc2V0QXR0cmlidXRlKHIsYVtyXSk7 ZS5hcHBlbmRDaGlsZChvKSxlLm5vaD1lLm9zdD0xLHQoKX1lbHNle3ZhciBzPSIz MiI7InNtYWxsIj09PWEuc2l6ZT9zPSIxNiI6ImxhcmdlIj09PWEuc2l6ZSYmKHM9 IjY0Iik7dmFyIGQ9dHh0PXR4dDI9aWVRPSIiO2EubmFtZSYmKCJCYWNrQ29tcGF0 Ij09PWRvY3VtZW50LmNvbXBhdE1vZGUmJl9hdGUuYnJvLm1zaSYmKGllUT0nb25j bGljaz0id2luZG93Lm9wZW4oJythLmhyZWYrJz9wcnNyYz0zKSInKSxkPSJjdXJz b3I6ZGVmYXVsdDtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWRlY29yYXRpb246 bm9uZTtjb2xvcjojMzMzO2ZvbnQ6MTNweC8xNnB4IGFyaWFsLHNhbnMtc2VyaWY7 IisoImxhcmdlIj09PWEuc2l6ZT8idGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3Bh Y2U6bm93cmFwOyI6IiIpLCJsYXJnZSI9PT1hLnNpemU/dHh0Mj0nPGJyLz48c3Bh biBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPicrYS5uYW1lKyI8L3NwYW4+PGJy Lz48c3Bhbj4gb24gR29vZ2xlKyA8L3NwYW4+Ijp0eHQ9JzxzcGFuIHN0eWxlPSJk aXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO3ZlcnRpY2FsLWFs aWduOnRvcDttYXJnaW4tcmlnaHQ6NXB4OycrKCJtZWRpdW0iPT09YS5zaXplPyJt YXJnaW4tdG9wOjhweDsiOiIiKSsnIj4nK2EubmFtZSsnPC9zcGFuPjxzcGFuIHN0 eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3A7IG1h cmdpbi1yaWdodDonKygibWVkaXVtIj09PWEuc2l6ZT8iMTVweDttYXJnaW4tdG9w OjhweDsiOiIxM3B4OyIpKyciPm9uPC9zcGFuPicpLGUuc2V0QXR0cmlidXRlKCJ0 YXJnZXQiLCJfYmxhbmsiKSxlLnN0eWxlLnRleHREZWNvcmF0aW9uPSJub25lIixl LnN0eWxlLmN1cnNvcj0iZGVmYXVsdCIsZS5pbm5lckhUTUw9JzxzcGFuIHN0eWxl PSInK2QrJyI+Jyt0eHQrIjxpbWcgIitpZVErJyBzcmM9Imh0dHBzOi8vc3NsLmdz dGF0aWMuY29tL2ltYWdlcy9pY29ucy9ncGx1cy0nK3MrJy5wbmciIGFsdD0iJytl LnRpdGxlKyciIHN0eWxlPSJib3JkZXI6MDt3aWR0aDonK3MrInB4O2hlaWdodDoi K3MrJ3B4O2N1cnNvcjpwb2ludGVyOyIgb25tb3VzZW92ZXI9InRoaXMuc3R5bGUu b3BhY2l0eT0wLjg7dGhpcy5zdHlsZS5maWx0ZXI9XCdhbHBoYShvcGFjaXR5PTgw KVwnOyIgb25tb3VzZW91dD0idGhpcy5zdHlsZS5vcGFjaXR5PTEuMDt0aGlzLnN0 eWxlLmZpbHRlcj1cJ2FscGhhKG9wYWNpdHk9MTAwKVwnOyI+Jyt0eHQyKyI8L3Nw YW4+IixlLm5vaD1lLm9zdD0xLGUub25jbGljaz1mdW5jdGlvbihlKXtpZighZSl2 YXIgZT13aW5kb3cuZXZlbnQ7dmFyIHQ9ZS5vcmlnaW5hbFRhcmdldHx8ZS5yZWxh dGVkVGFyZ2V0fHxlLnRvRWxlbWVudHx8ZS5zcmNFbGVtZW50LG49IiI7aWYodCl7 Zm9yKDsiQSIhPT10Lm5vZGVOYW1lOyl0PXQucGFyZW50Tm9kZTtyZXR1cm4gbj0o KHQuYXR0cmlidXRlc3x8e30pWyJnOnBsdXNvbmU6aHJlZiJdfHx7fSkudmFsdWV8 fHdpbmRvdy5sb2NhdGlvbi5ocmVmLHNuLm9wZW4obisiP3Byc3JjPTMiKSxfYXRl LnNoYXJlLnRyYWNrKCJnb29nbGVfcGx1c29uZV9iYWRnZSIsMSxhLGNvbmZpZyks ITF9fX1lLm9ubW91c2VvdmVyPWZ1bmN0aW9uKCl7dGhpcy5jbGFzc05hbWU9dGhp cy5jbGFzc05hbWUuaW5kZXhPZigiYXQzMDBibyIpPi0xP3RoaXMuY2xhc3NOYW1l OnRoaXMuY2xhc3NOYW1lLnJlcGxhY2UoL2F0MzAwYi9pLCJhdDMwMGJvIil9LGUu bm9oPWUub3N0PTF9fXZhciBvPShkb2N1bWVudCwwKTtfYXRlLnNoYXJlPV9hdGUu c2hhcmV8fHt9LF9hdGUuc2hhcmUucmVnaXN0ZXIoe2dvb2dsZV9wbHVzb25lOmEs Z29vZ2xlcGx1c19jb3VudGVyOmEsZ29vZ2xlX3BsdXNvbmVfYmFkZ2U6aX0pLF9h dGUuc2hhcmUucmVnaXN0ZXJTdWJzY3JpYmVyKG4pLF9hdGUuc2hhcmUucmVnaXN0 ZXJMaXN0ZW5lcnMoe2dvb2dsZV9wbHVzb25lOntvbmNsaWNrOmZ1bmN0aW9uKGUp e3JldHVybiExfX19KSxfYXRlLnNoYXJlLmdvb2c9e3BsdXNvbmU6YSxiYWRnZTpp LGhhczplLHN1YjpufX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtyZXR1 cm4gYmUoe3Byb2R1Y3Q6InRieCIsbWVkaWE6dC5tZWRpYSxkZXNjcmlwdGlvbjp0 LmRlc2NyaXB0aW9uLHRpdGxlOnQudGl0bGV9LGUpfWZ1bmN0aW9uIHQodCxuLGEp e2lmKCF0Lm9zdCl7dmFyIGksbz1UdCh0LCJwaTpwaW5pdCIpLHI9X2F0ZS51dGls LmNsb25lKG4uc2hhcmUpO2lmKGk9YWRkdGhpc19zaGFyZSYmYWRkdGhpc19zaGFy ZS5wYXNzdGhyb3VnaCYmYWRkdGhpc19zaGFyZS5wYXNzdGhyb3VnaC5waW50ZXJl c3Rfc2hhcmU/YWRkdGhpc19zaGFyZS5wYXNzdGhyb3VnaC5waW50ZXJlc3Rfc2hh cmU6YWRkdGhpc19zaGFyZSYmYWRkdGhpc19zaGFyZS5waW50ZXJlc3Rfc2hhcmU/ YWRkdGhpc19zaGFyZS5waW50ZXJlc3Rfc2hhcmU6YWRkdGhpc19zaGFyZSYmYWRk dGhpc19zaGFyZS5wYXNzdGhyb3VnaD9hZGR0aGlzX3NoYXJlLnBhc3N0aHJvdWdo OmFkZHRoaXNfc2hhcmU/YWRkdGhpc19zaGFyZTp7fSxvLm1lZGlhKXtvLnVybD1y LnVybD1vLnVybHx8aS51cmx8fF9hdGUudHJhY2subWd1KHIudXJsLHtkZWZyYWc6 MX0pLG8udXJsPXdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoX2F0ZS50cmFjay5t Z3Uoci51cmwpKSwiaG9yaXpvbnRhbCI9PT1vLmxheW91dD8oby5sYXlvdXQ9IiZs YXlvdXQ9aG9yaXpvbnRhbCIsby53aWR0aD0iMTAwcHgiLG8uaGVpZ2h0PSIyNXB4 Iik6InZlcnRpY2FsIj09PW8ubGF5b3V0PyhvLmxheW91dD0iJmxheW91dD12ZXJ0 aWNhbCIsby53aWR0aD0iNDlweCIsby5oZWlnaHQ9IjU5cHgiKTooby5sYXlvdXQ9 IiIsby53aWR0aD0iNDBweCIsby5oZWlnaHQ9IjI1cHgiKTt2YXIgcz0nPGlmcmFt ZSB0aXRsZT0iQWRkVGhpcyB8IFBpbnRlcmVzdCIgZnJhbWVib3JkZXI9IjAiIHJv bGU9InByZXNlbnRhdGlvbiIgc2Nyb2xsaW5nPSJubyIgYWxsb3dUcmFuc3BhcmVu Y3k9InRydWUiIHNjcm9sbGJhcnM9Im5vIicrKF9hdGUuYnJvLmllNj8iIHNyYz1c ImphdmFzY3JpcHQ6JydcIiI6IiIpKycgc3R5bGU9IndpZHRoOicrby53aWR0aCsi OyBoZWlnaHQ6IitvLmhlaWdodCsnOyI+PC9pZnJhbWU+JztWdCh0LHMsInBpbl9p dF9pZnJhbWVfd2lkZ2V0IixvLmhlaWdodCxvLndpZHRoKSxwaW5pdEJ1dHRvbj10 LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5maXJzdENoaWxkLG4uY29uZi5wdWJpZHx8 KG4uY29uZi5wdWJpZD1hZGR0aGlzX2NvbmZpZy5wdWJpZHx8WnQoKSksby5kZXNj cmlwdGlvbj1yLmRlc2NyaXB0aW9uPW8uZGVzY3JpcHRpb258fGkuZGVzY3JpcHRp b258fGkudGl0bGV8fChhZGR0aGlzX3NoYXJlfHx7fSkudGl0bGV8fCIiLHBpbml0 QnV0dG9uLnNyYz1fYXRjLnJzcmNzLnBpbml0KyhfYXRlLmJyby5pZTZ8fF9hdGUu YnJvLmllNz8iPyI6IiMiKSsidXJsPSIrd2luZG93LmVuY29kZVVSSUNvbXBvbmVu dChvLnVybCkrIiZtZWRpYT0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoby5t ZWRpYXx8aS5tZWRpYXx8IiIpKyImZGVzY3JpcHRpb249Iit3aW5kb3cuZW5jb2Rl VVJJQ29tcG9uZW50KG8uZGVzY3JpcHRpb24pK28ubGF5b3V0KyImYXRzPSIrd2lu ZG93LmVuY29kZVVSSUNvbXBvbmVudChfYXRlLnV0aWwucnRvS1YocikpKyImYXRj PSIrd2luZG93LmVuY29kZVVSSUNvbXBvbmVudChfYXRlLnV0aWwucnRvS1YoYWRk dGhpc19jb25maWcpKSsiJmhyZWY9IitqdC5kdSsiJnB1YmlkPSIrWnQoKSsiJmNi PSIrX2F0ZS5jYisiJnNzaWQ9IitfYXRlLnRyYWNrLnNzaWQoKSsiJnVpZD0iK19h dGUudWlkKyImYWI9IitfYXRlLmFiKyImdWZibD0iK19hdGUudWZibCsiJnV1ZD0i K19hdGUudXVkLF9hdGUuZWQuYWRkRXZlbnRMaXN0ZW5lcigiYWRkdGhpcy5waW50 ZXJlc3QuaW1hZ2UiLGZ1bmN0aW9uKHQpe3NuLmFkZHRoaXNfc2hhcmV8fChzbi5h ZGR0aGlzX3NoYXJlPXt9KSxzbi5hZGR0aGlzX3NoYXJlLnBhc3N0aHJvdWdofHwo c24uYWRkdGhpc19zaGFyZS5wYXNzdGhyb3VnaD17fSksc24uYWRkdGhpc19zaGFy ZS5wYXNzdGhyb3VnaC5waW50ZXJlc3Rfc2hhcmV8fChzbi5hZGR0aGlzX3NoYXJl LnBhc3N0aHJvdWdoLnBpbnRlcmVzdF9zaGFyZT17fSk7dmFyIG49c24uYWRkdGhp c19zaGFyZS5wYXNzdGhyb3VnaC5waW50ZXJlc3Rfc2hhcmU7bi5waV9tZWRpYT1v Lm1lZGlhLG4ucGlfbWVkaWFfZGVzYz1vLmRlc2NyaXB0aW9uLEIoInBpbnRlcmVz dF9zaGFyZSIsZShpLG8pKX0pfWVsc2UgbiYmbi5jb25mJiZuLmNvbmYucHJvZHVj dCYmInNjb3BsLTMwMCI9PT1uLmNvbmYucHJvZHVjdD9HdCh0KTp0Lm9uY2xpY2s9 ZnVuY3Rpb24oKXtzbi5hZGR0aGlzX3NoYXJlfHwoc24uYWRkdGhpc19zaGFyZT17 fSksc24uYWRkdGhpc19zaGFyZS5wYXNzdGhyb3VnaHx8KHNuLmFkZHRoaXNfc2hh cmUucGFzc3Rocm91Z2g9e30pLHNuLmFkZHRoaXNfc2hhcmUucGFzc3Rocm91Z2gu cGludGVyZXN0X3NoYXJlfHwoc24uYWRkdGhpc19zaGFyZS5wYXNzdGhyb3VnaC5w aW50ZXJlc3Rfc2hhcmU9e30pO3ZhciB0PXNuLmFkZHRoaXNfc2hhcmUucGFzc3Ro cm91Z2gucGludGVyZXN0X3NoYXJlO3JldHVybiB0LnBpX21lZGlhPW8ubWVkaWEs dC5waV9tZWRpYV9kZXNjPW8uZGVzY3JpcHRpb24sQigicGludGVyZXN0X3NoYXJl IixlKGksbykpLCExfTt0Lm5vaD10Lm9zdD0xfX1kb2N1bWVudDtfYXRlLnNoYXJl PV9hdGUuc2hhcmV8fHt9LF9hdGUuc2hhcmUucmVnaXN0ZXIoe3BpbnRlcmVzdDp0 LHBpbnRlcmVzdF9jb3VudDp0LHBpbnRlcmVzdF9waW5pdDp0fSksX2F0ZS5zaGFy ZS5yZWdpc3Rlckxpc3RlbmVycyh7cGludGVyZXN0X3NoYXJlOntvbmNsaWNrOmZ1 bmN0aW9uKHQpe3ZhciBuPXQuZWwsYT1UdChuLCJwaTpwaW5pdCIpLGk9ZShuLnNo YXJlfHxzbi5hZGR0aGlzX3NoYXJlLGEpO0IoInBpbnRlcmVzdF9zaGFyZSIsaSks UCh0KX19fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsbyxyKXtpZighZS5v c3Qpe3ZhciBzPShfYXRlLnV0aWwuY2xvbmUoby5zaGFyZSkse3R5cGU6IndlYnBh Z2UiLHVybDpvLnNoYXJlLnVybCx0aXRsZTpvLnNoYXJlLnRpdGxlLHN0eWxlOiJu dW1iZXIifSksZD1UdChlLCJ3YjpsaWtlIiksdT10KCksYz1hKGQsdSksbD1hKHMs dSk7bWV0YV90YWdzPV9hdGUudXRpbC5leHRlbmQobCxjKSx3Yl9lbGVtPWkuY3Jl YXRlRWxlbWVudCgid2I6bGlrZSIpLF9hdGUuYnJvLmllNnx8X2F0ZS5icm8uaWU3 fHxfYXRlLmJyby5pZTh8fF9hdGUuYnJvLm1zaSYmIkJhY2tDb21wYXQiPT09ZG9j dW1lbnQuY29tcGF0TW9kZT9lLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdiX2Vs ZW0sZS5uZXh0U2libGluZyk6ZS5hcHBlbmRDaGlsZCh3Yl9lbGVtKSxuKHdiX2Vs ZW0sbWV0YV90YWdzKSxfYXRlLmFqcygiLy90anMuc2pzLnNpbmFqcy5jbi9vcGVu L2FwaS9qcy93Yi5qcyIsMSksby5jb25mLnB1YmlkfHwoby5jb25mLnB1YmlkPWFk ZHRoaXNfY29uZmlnLnB1YmlkfHxfYXRlLnB1YigpKSxlLm9uY2xpY2s9ZnVuY3Rp b24oKXtfYXRlLnNoYXJlLnRyYWNrKCJzaW5hd2VpYm9fbGlrZSIsMCxvLnNoYXJl LG8uY29uZil9LGUubm9oPWUub3N0PTF9fWZ1bmN0aW9uIHQoKXtmb3IodmFyIGUs dCxuLGEsbz1pLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIikscj17fSxzPTA7 czxvLmxlbmd0aDtzKyspYT1vW3NdLGU9YS5nZXRBdHRyaWJ1dGUoInByb3BlcnR5 IiksdD1hLmdldEF0dHJpYnV0ZSgibmFtZSIpLG49YS5nZXRBdHRyaWJ1dGUoImNv bnRlbnQiKSxlJiZlLmluZGV4T2YoIm9nOiIpIT09LTEmJm4/cltlLnJlcGxhY2Uo Im9nOiIsIiIpXT1uOmUmJmUuaW5kZXhPZigid2VpYm86IiwiIikhPT0tMSYmbj9y W2UucmVwbGFjZSgid2VpYm86IiwiIildPW46dCYmdC5pbmRleE9mKCJ3ZWlibzoi KSE9PS0xJiZuJiYoclt0LnJlcGxhY2UoIndlaWJvOiIsIiIpXT1uKTtyZXR1cm4g cn1mdW5jdGlvbiBuKGUsdCl7dmFyIG4sYSxpO2Zvcih2YXIgYSBpbiB0KXQuaGFz T3duUHJvcGVydHkoYSkmJihuPXRbYV0sbiYmKCJzdHlsZSI9PT1hJiYiZnVsbCIh PT1uP2Uuc2V0QXR0cmlidXRlKCJ0eXBlIixuKToic2tpbiI9PT1hfHwibGFuZ3Vh Z2UiPT09YT9lLnNldEF0dHJpYnV0ZShhLG4pOihpPWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoIm1ldGEiKSxpLnNldEF0dHJpYnV0ZSgibmFtZSIsIndlaWJvOiIrYSks aS5zZXRBdHRyaWJ1dGUoImNvbnRlbnQiLG4pLGRvY3VtZW50LmdldEVsZW1lbnRz QnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoaSkpKSl9ZnVuY3Rpb24g YShlLHQpe3ZhciBuLGE9e307Zm9yKG4gaW4gZSllLmhhc093blByb3BlcnR5KG4p JiZ0W25dPT09TSYmKGFbbl09ZVtuXSk7cmV0dXJuIGF9dmFyIGk9ZG9jdW1lbnQ7 X2F0ZS5zaGFyZT1fYXRlLnNoYXJlfHx7fSxfYXRlLnNoYXJlLnJlZ2lzdGVyKHtz aW5hd2VpYm9fbGlrZTplfSksX2F0ZS5zaGFyZS5zaW5hd2VpYm89e2xpa2U6ZX19 KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7cmV0dXJuIHdpbmRvdy50d3R0ciYm d2luZG93LnR3dHRyLmV2ZW50c31mdW5jdGlvbiB0KCl7aWYod2luZG93LnR3dHRy JiYhcyYmd2luZG93LnR3dHRyLmV2ZW50cyl7cz0xO3ZhciBlPWZ1bmN0aW9uKGUp e3ZhciB0LG49ZS50YXJnZXQucGFyZW50Tm9kZSYmZS50YXJnZXQucGFyZW50Tm9k ZS5zaGFyZT9lLnRhcmdldC5wYXJlbnROb2RlLnNoYXJlOnt9LGE9bi51cmx8fGUu dGFyZ2V0LmJhc2VVUkksaT1uLnRpdGxlfHxhZGR0aGlzX3NoYXJlLnRpdGxlLG89 e307Zm9yKHQgaW4gYWRkdGhpc19zaGFyZSlvW3RdPWFkZHRoaXNfc2hhcmVbdF07 Zm9yKHQgaW4gbilvW3RdPW5bdF07cmV0dXJuIG8udXJsPWEsaSYmKG8udGl0bGU9 aSksb307d2luZG93LnR3dHRyLmV2ZW50cy5iaW5kKCJ0d2VldCIsZnVuY3Rpb24o dCl7X2F0ZS5zaGFyZS50cmFjaygidHdlZXQiLDAsZSh0KSxhZGR0aGlzX2NvbmZp Zyl9KSx3aW5kb3cudHd0dHIuZXZlbnRzLmJpbmQoImZvbGxvdyIsZnVuY3Rpb24o dCl7X2F0ZS5zaGFyZS50cmFjaygidHdpdHRlcl9mb2xsb3dfbmF0aXZlIiwxLGUo dCksYWRkdGhpc19jb25maWcpfSl9fWZ1bmN0aW9uIG4oKXtyZXR1cm4gZSgpJiYx PT09cj8odCgpLHZvaWQocj1kPTApKToocnx8KF9hdGUuYWpzKCIvL3BsYXRmb3Jt LnR3aXR0ZXIuY29tL3dpZGdldHMuanMiLDEsbnVsbCxudWxsLG51bGwsITApLHI9 MSksdm9pZChkPDMmJnNldFRpbWVvdXQobiwzZTMrMmUzKmQrKykpKX1mdW5jdGlv biBhKGUsdCxhKXtpZighZS5vc3Qpe3ZhciBpLHIscz1UdChlLCJ0dyIpLGQ9dC5z aGFyZSx1PXMud2lkdGh8fDYxLGM9cy5oZWlnaHR8fDI1LGw9IiI7dC5zaGFyZS51 cmxfdHJhbnNmb3Jtcz10LnNoYXJlLnVybF90cmFuc2Zvcm1zfHx7fSx0LnNoYXJl LnVybF90cmFuc2Zvcm1zLmRlZnJhZz0xO3ZhciBmPV9hdGUudXRpbC5jbG9uZSh0 LnNoYXJlKSxwPV9hdGUuYnJvLm1zaSYmIkJhY2tDb21wYXQiPT09by5jb21wYXRN b2RlfHx0LmNvbmYudWlfdXNlX3R3ZWV0X2lmcmFtZXx8ImJpdGx5Ij09PSh0LnNo YXJlLnVybF90cmFuc2Zvcm1zLnNob3J0ZW58fHt9KS50d2l0dGVyOyJ1bmRlZmlu ZWQiIT10eXBlb2Ygcy51cmw/Zi51cmw9cy51cmw6Zi51cmw9cy51cmw9X2F0ZS50 cmFjay5tZ3UoZi51cmx8fChhZGR0aGlzX3NoYXJlfHx7fSkudXJsLGYudXJsX3Ry YW5zZm9ybXMsZiwidHdpdHRlciIpLHMuY291bnR1cmx8fChzLmNvdW50dXJsPXA/ cy51cmwucmVwbGFjZSgvPS9nLCIlMjUzRCIpOnMudXJsKSxmLnVybC5zZWFyY2go L1wuKy4qKFwvfFw/KS8pPT09LTEmJihmLnVybCs9Ii8iKSxzLnVybD1fYXRlLnNo YXJlLmFjYigidHdpdHRlciIsZixhZGR0aGlzX2NvbmZpZykscy5jb3VudD1zLmNv dW50fHwiaG9yaXpvbnRhbCIsZC5wYXNzdGhyb3VnaD1kLnBhc3N0aHJvdWdofHx7 fTt2YXIgaD1kLnBhc3N0aHJvdWdoLnR3aXR0ZXJ8fHt9O2lmKHQudGV4dD1zLnRl eHQ9cy50ZXh0fHwodC5zaGFyZS50aXRsZT09PWp0LnRpdGxlP2gudGV4dDp0LnNo YXJlLnRpdGxlKXx8IiIsdC5yZWxhdGVkPXMucmVsYXRlZD1zLnJlbGF0ZWR8fGgu cmVsYXRlZHx8IiIsdC5oYXNodGFncz1zLmhhc2h0YWdzPXMuaGFzaHRhZ3N8fGgu aGFzaHRhZ3N8fCIiLChzLnZpYXx8aC52aWF8fHQudGV4dC5tYXRjaCgvdmlhXHMr QFthLXpBLVowLTlfXC5dKy9pKSkmJih0LnZpYT1zLnZpYT1zLnZpYXx8aC52aWF8 fCh0LnRleHQubWF0Y2goL3ZpYVxzK0BbYS16QS1aMC05X1wuXSsvaSk/dC50ZXh0 Lm1hdGNoKC92aWFccytAW2EtekEtWjAtOV9cLl0rL2kpLnNwbGl0KCJAIilbMV06 IiIpKSxsPV9hdGUudXRpbC5ydG9LVihkLCIjQCEiKSwidmVydGljYWwiPT09cy5j b3VudD8oYz0yMyxzLmhlaWdodD1zLmhlaWdodHx8Yyk6Imhvcml6b250YWwiPT09 cy5jb3VudCYmKHU9NjIscy53aWR0aD1zLndpZHRofHx1KSxzLndpZHRoJiYodT1z LndpZHRoKSxzLmhlaWdodCYmKGM9cy5oZWlnaHQpLGk9X2F0ZS51dGlsLnRvS1Yo cywiI0AhIikscCl7dmFyIG09JzxpZnJhbWUgdGl0bGU9IkFkZFRoaXMgfCBUd2l0 dGVyIiBmcmFtZWJvcmRlcj0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzY3JvbGxp bmc9Im5vIiBhbGxvd1RyYW5zcGFyZW5jeT0idHJ1ZSIgc2Nyb2xsYmFycz0ibm8i JysoX2F0ZS5icm8uaWU2PyIgc3JjPVwiamF2YXNjcmlwdDonJ1wiIjoiIikrJyBz dHlsZT0id2lkdGg6Jyt1KyJweDsgaGVpZ2h0OiIrYysncHg7Ij48L2lmcmFtZT4n O1Z0KGUsbSwidHdlZXRfaWZyYW1lX3dpZGdldCIsYysicHgiLHUrInB4Iikscj1l LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5maXJzdENoaWxkLHQuY29uZi5wdWJpZHx8 KHQuY29uZi5wdWJpZD1hZGR0aGlzX2NvbmZpZy5wdWJpZHx8X2F0ZS5wdWIoKSks ci5zcmM9X2F0Yy5yc3Jjcy50d2VldCsiI2hyZWY9Iit3aW5kb3cuZW5jb2RlVVJJ Q29tcG9uZW50KHMudXJsKSsiJmRyPSIrd2luZG93LmVuY29kZVVSSUNvbXBvbmVu dChfYXRlLmRyKSsiJmNvbmY9Iit3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KF9h dGUudXRpbC50b0tWKHQuY29uZikpKyImc2hhcmU9Iit3aW5kb3cuZW5jb2RlVVJJ Q29tcG9uZW50KGwpKyImdHc9Iit3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KGkp fWVsc2V7cy50ZXh0fHwocy50ZXh0PShkLnRpdGxlfHwiIikrIjoiKTt2YXIgZz1v LmNlKCJhIik7Zy5ocmVmPSJodHRwOi8vdHdpdHRlci5jb20vc2hhcmUiLGcuY2xh c3NOYW1lPSJ0d2l0dGVyLXNoYXJlLWJ1dHRvbiIsZy5pbm5lckhUTUw9IlR3ZWV0 Ijtmb3IodmFyIF8gaW4gcylzLmhhc093blByb3BlcnR5KF8pJiZnLnNldEF0dHJp YnV0ZSgiZGF0YS0iK18sc1tfXSk7VnQoZSxnLCJ0d2VldF9pZnJhbWVfd2lkZ2V0 IixjKyJweCIsdSsicHgiKSx0LmNvbmYucHViaWR8fCh0LmNvbmYucHViaWQ9YWRk dGhpc19jb25maWcucHViaWR8fF9hdGUucHViKCkpLG4oZSl9ZS5ub2g9ZS5vc3Q9 MX19ZnVuY3Rpb24gaShlLHQpe3ZhciBhPVR0KGUsInRmIiksaT1UdChlLCJ0dyIp LG89ZG9jdW1lbnQuY2UoImEiKTthLnNjcmVlbl9uYW1lPWkuc2NyZWVuX25hbWV8 fGEuc2NyZWVuX25hbWV8fCJhZGR0aGlzIixvLmhyZWY9Imh0dHA6Ly90d2l0dGVy LmNvbS8iK2Euc2NyZWVuX25hbWUsby5jbGFzc05hbWU9InR3aXR0ZXItZm9sbG93 LWJ1dHRvbiIsby5pbm5lckhUTUw9IkZvbGxvdyBAIithLnNjcmVlbl9uYW1lO2Zv cih2YXIgciBpbiBhKWEuaGFzT3duUHJvcGVydHkocikmJm8uc2V0QXR0cmlidXRl KCJkYXRhLSIrcixhW3JdKTtmb3IodmFyIHIgaW4gaSlpLmhhc093blByb3BlcnR5 KHIpJiZvLnNldEF0dHJpYnV0ZSgiZGF0YS0iK3IsaVtyXSk7ZS5vc3Q9MSxlLmFw cGVuZENoaWxkKG8pLHQuY29uZi5wdWJpZHx8KHQuY29uZi5wdWJpZD1hZGR0aGlz X2NvbmZpZy5wdWJpZHx8X2F0ZS5wdWIoKSksbihlKX12YXIgbz1kb2N1bWVudCxy PTAscz0wLGQ9MDtfYXRlLnNoYXJlPV9hdGUuc2hhcmV8fHt9LF9hdGUuc2hhcmUu cmVnaXN0ZXIoe3R3ZWV0OmEsdHdpdHRlcl9mb2xsb3dfbmF0aXZlOml9KSxfYXRl LnNoYXJlLnJlZ2lzdGVyU3Vic2NyaWJlcih0KSxfYXRlLnNoYXJlLnJlZ2lzdGVy TGlzdGVuZXJzKHt0d2l0dGVyOntfYWZ0ZXI6ZnVuY3Rpb24oZSl7ZS5pbnM9MSxl Lm5vaD0xfSxvbmNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZWw7cmV0dXJuIF9h dGUuc2hhcmUucHRzKHQuc2hhcmUsdC5jb25mKX19fSksX2F0ZS5zaGFyZS50d2l0 dGVyPXt0d2VldDphLGZvbGxvdzppLHN1Yjp0fX0oKSxmdW5jdGlvbigpe2Z1bmN0 aW9uIGUoZSx0LG4pe2lmKCFlLm9zdCYmIV9hdGUuYnJvLmllNil7dmFyIGE9VHQo ZSwic3U6YmFkZ2UiKSxpPWEuc3R5bGV8fCIxIixvPXQuc2hhcmUudXJsPWEuaHJl Znx8X2F0ZS50cmFjay5tZ3UodC5zaGFyZS51cmwse2RlZnJhZzoxfSkscj1hLmhl aWdodHx8IjI1cHgiLHM9YS53aWR0aHx8Ijc1cHgiOyI1Ij09PWk/cj1hLmhlaWdo dHx8IjYwcHgiOiI2Ij09PWkmJihyPWEuaGVpZ2h0fHwiMzFweCIpO3ZhciBkPSc8 aWZyYW1lIHRpdGxlPSJBZGRUaGlzIHwgU3R1bWJsZXVwb24iIHNyYz0iaHR0cCcr KF9hdGUuc3NsPyJzIjoiIikrJzovL3d3dy5zdHVtYmxldXBvbi5jb20vYmFkZ2Uv ZW1iZWQve3tTVFlMRX19Lz91cmw9e3tVUkx9fSIgc2Nyb2xsaW5nPSJubyIgZnJh bWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6bm9uZTsgb3ZlcmZsb3c6aGlkZGVu OyB3aWR0aDp7e1dJRFRIfX07IGhlaWdodDp7e0hFSUdIVH19OyIgYWxsb3d0cmFu c3BhcmVuY3k9InRydWUiPjwvaWZyYW1lPicucmVwbGFjZSgie3tTVFlMRX19Iixp KS5yZXBsYWNlKCJ7e1VSTH19Iix3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KG8p KS5yZXBsYWNlKCJ7e0hFSUdIVH19IixyKS5yZXBsYWNlKCJ7e1dJRFRIfX0iLHMp O1Z0KGUsZCwic3R1bWJsZXVwb25fYmFkZ2VfaWZyYW1lX3dpZGdldCIscixzKSxl Lm5vaD1lLm9zdD0xfX1mdW5jdGlvbiB0KGUsdCl7aWYoIWUub3N0KXt2YXIgbj1U dChlLCI0c3EiKSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTthLmhyZWY9 Imh0dHBzOi8vZm91cnNxdWFyZS5jb20vaW50ZW50L3ZlbnVlLmh0bWwiLGEuY2xh c3NOYW1lPSJmb3VyU3Etd2lkZ2V0IixuWyJkYXRhLXZhcmlhbnQiXSYmYS5zZXRB dHRyaWJ1dGUoImRhdGEtdmFyaWFudCIsblsiZGF0YS12YXJpYW50Il0pLFZ0KGUs YSwiZm91cnNxdWFyZV9iYWRnZV93cmFwcGVyX3dpZGdldCIsdC5oZWlnaHQpLF9h dGUuYWpzKCIvL3BsYXRmb3JtLmZvdXJzcXVhcmUuY29tL2pzL3dpZGdldHMuanMi LDEpLGUubm9oPWUub3N0PTF9fWZ1bmN0aW9uIGEoZSx0KXtpZighZS5vc3Qpe3Zh ciBuLGEsaT1UdChlLCJsaSIpLG89dC5zaGFyZSxyPWkud2lkdGh8fDU3LHM9aS5o ZWlnaHR8fDI1LGQ9IiI7by5wYXNzdGhyb3VnaHx8KG8ucGFzc3Rocm91Z2g9e30p LG8ucGFzc3Rocm91Z2gubGlua2VkaW49X2F0ZS51dGlsLnRvS1YoaSksby50aXRs ZSYmKG8udGl0bGU9d2luZG93LmVuY29kZVVSSUNvbXBvbmVudChvLnRpdGxlKSks ZD1fYXRlLnV0aWwucnRvS1YobyksaS53aWR0aCYmKHI9aS53aWR0aCksaS5oZWln aHQmJihzPWkuaGVpZ2h0KSxuPV9hdGUudXRpbC50b0tWKGkpO3ZhciB1PSc8aWZy YW1lIHRpdGxlPSJBZGRUaGlzIHwgTGlua2VkSW4gQnV0dG9uIiBmcmFtZWJvcmRl cj0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzY3JvbGxpbmc9Im5vIiBhbGxvd1Ry YW5zcGFyZW5jeT0idHJ1ZSIgc2Nyb2xsYmFycz0ibm8iJysoX2F0ZS5icm8uaWU2 PyIgc3JjPVwiamF2YXNjcmlwdDonJ1wiIjoiIikrJyBzdHlsZT0id2lkdGg6Jyty KyJweDsgaGVpZ2h0OiIrcysncHg7Ij48L2lmcmFtZT4nO1Z0KGUsdSwibGlua2Vk aW5fY291bnRlcl9pZnJhbWVfd2lkZ2V0IixzKyJweCIscisicHgiKSxhPWUuZmly c3RDaGlsZC5maXJzdENoaWxkLmZpcnN0Q2hpbGQsdC5jb25mLnB1YmlkfHwodC5j b25mLnB1YmlkPWFkZHRoaXNfY29uZmlnLnB1YmlkfHxfYXRlLnB1YigpKSxhLnNy Yz1fYXRjLnJzcmNzLmxpbmtlZGluKyhfYXRlLmJyby5pZTZ8fF9hdGUuYnJvLmll Nz8iPyI6IiMiKSsiaHJlZj0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQodC5z aGFyZS51cmwpKyImZHI9Iit3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KF9hdGUu ZHIpKyImY29uZj0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoX2F0ZS51dGls LnRvS1YodC5jb25mKSkrIiZzaGFyZT0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25l bnQoZCkrIiZsaT0iK3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQobiksZS5ub2g9 ZS5vc3Q9MX19ZG9jdW1lbnQ7X2F0ZS5zaGFyZT1fYXRlLnNoYXJlfHx7fSxfYXRl LnNoYXJlLnJlZ2lzdGVyKHtmb3Vyc3F1YXJlOnQsbGlua2VkaW5fY291bnRlcjph LHN0dW1ibGV1cG9uX2JhZGdlOmV9KSxfYXRlLnNoYXJlLnJlZ2lzdGVyTGlzdGVu ZXJzKHttb3JlOntyZXF1aXJlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hKHQubm9o fHxfYXRlLmJyby5pcGh8fF9hdGUuYnJvLndwaHx8X2F0ZS5icm8uZHJvKX0sb25j bGljazpmdW5jdGlvbihlKXt2YXIgdD1lLmVsfHx7fTtyZXR1cm4gYW4oKT9OdChP dCgibW9yZSIsMCx0LnNoYXJlLHQuY29uZiksIl9ibGFuayIpOihJdCgpLHdpbmRv dy5hZGR0aGlzLm1lbnUodCx0LmNvbmYsdC5zaGFyZSksITEpfX0sZW1haWw6e3Jl cXVpcmU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiEodC5ub2h8fF9hdGUuYnJvLmlw aHx8X2F0ZS5icm8ud3BofHxfYXRlLmJyby5kcm8pfSxvbmNsaWNrOmZ1bmN0aW9u KGUpe3ZhciB0PShuKDY0NSksZS5lbHx8e30pLGE9ZS5zZXJ2aWNlLGk9X2F0ZS51 dGlsLmNsb25lKHQuY29uZik7cmV0dXJuIGkudWlfcGFuZT1hLEIoYSx0LnNoYXJl KSwhMX19LGZvdXJzcXVhcmU6e29uY2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5l bHx8e30sbj1lLnNlcnZpY2U7cmV0dXJuIF9hdGUuc2hhcmUudHJhY2sobiwxLHQu c2hhcmUsdC5jb25mKSwhMX19fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUp e3ZhciB0PW5ldyBBcnJheTtlOmZvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXtm b3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKylpZih0W2FdPT09ZVtuXSljb250aW51 ZSBlO3RbdC5sZW5ndGhdPWVbbl19cmV0dXJuIHR9ZnVuY3Rpb24gdCgpe2lmKCF1 KXt1PXt9O2Zvcih2YXIgZSBpbiBRdC5tYXApUXQubWFwLmhhc093blByb3BlcnR5 KGUpJiYodVtfYXRlLm11bihlKV09ZSl9fWZ1bmN0aW9uIG4oKXtyZXR1cm4gY3x8 KGM9KF9hdGUuZHJ8fCIiKS5zcGxpdCgiOi8vIikucG9wKCkuc3BsaXQoIi8iKS5z aGlmdCgpLnNwbGl0KCI/Iikuc2hpZnQoKSxjPVh0KGMpLGM9Y3x8KF9hdGUuc21k fHx7fSkucnNjfHwiIiksY31mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGUudGltZXN0 YW1wPnQudGltZXN0YW1wPy0xOjF9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG58 fChuPXdpbmRvdyksbltlXSE9PU0mJiIiIT09bltlXXx8KG5bZV09dCksbltlXX1m dW5jdGlvbiBvKGUpe3QoKTt2YXIgaSxvLHI9bigpLHM9ZnVuY3Rpb24oKXtmb3Io dmFyIGUsdD1fYXRlLmNvb2tpZS5zc2MuZ2V0U2VydmljZXMoKSxuPV9hdGUudXBz fHx7fSxhPTA7YTx0Lmxlbmd0aDthKyspZT10W2FdLm5hbWUsbltlXXx8KG5bZV09 ZSk7cmV0dXJuIG59KCksZD0wLGM9MDtmb3IobD1bXSxpPTA7aTxlLmxlbmd0aDtp Kyspbz1lW2ldLChRdC5tYXBbb10hPT1NfHxvLmluZGV4T2YoImZhY2Vib29rXyIp Pi0xJiZRdC5tYXAuZmFjZWJvb2shPT1NKSYmZCsrLHI9PT1vJiYoYz0xKSxzW29d JiZkZWxldGUgc1tvXTt2YXIgcD1PYmplY3Qua2V5cyhzKS5tYXAoZnVuY3Rpb24o ZSl7cmV0dXJuIHNbZV19KS5zb3J0KGEpO2ZvcihpPTA7aTxwLmxlbmd0aDtpKysp bz1wW2ldLm5hbWUsdVtvXSYmKG89dVtvXSxkKyssbC5wdXNoKG8pLGUucHVzaChv KSx3aW5kb3cuYWRkdGhpc19zc2g/YWRkdGhpc19zc2guaW5kZXhPZihvKT09PS0x JiYoYWRkdGhpc19zc2grPSIsIitvKTp3aW5kb3cuYWRkdGhpc19zc2g9byxyPT09 byYmKGM9MSkpO3JldHVybiBsPWwuam9pbigiLCIpLGN8fFF0Lm1hcFtyXT09PU18 fChkKyssZS5wdXNoKHIpLGFkZHRoaXNfc3NoPSh3aW5kb3cuYWRkdGhpc19zc2g/ YWRkdGhpc19zc2grIiwiOiIiKStyLGY9ciksZH1mdW5jdGlvbiByKGUpe2koImFk ZHRoaXNfZXhjbHVkZSIsIiIpLGkoImFkZHRoaXNfdXNlX3BlcnNvbmFsaXphdGlv biIsITApLGkoInNlcnZpY2VzX2V4Y2x1ZGUiLHdpbmRvdy5hZGR0aGlzX2V4Y2x1 ZGUsZSl9ZnVuY3Rpb24gcyhuLGEpe2lmKG49PT1kKXJldHVybntjb25mOm4sY3Ns OmwsY3JzOmZ9O2Q9bjt2YXIgcz13aW5kb3cuYWRkdGhpc19zc2g/YWRkdGhpc19z c2gucmVwbGFjZSgvKF5tb3JlLCl8KF5tb3JlJCl8KCxtb3JlLCl8KCxtb3JlJCkv LCIiKS5zcGxpdCgiLCIpOltdLHU9RC5nZXRQb3BTZXJ2aWNlcygpLGM9MDtpZihy KG4pLG4uc2VydmljZXNfZXhjbHVkZT1uLnNlcnZpY2VzX2V4Y2x1ZGUucmVwbGFj ZSgvXHMvZywiIiksSihuKSxuLnNlcnZpY2VzX2V4Y2x1ZGVfbmF0dXJhbHx8KG4u c2VydmljZXNfZXhjbHVkZV9uYXR1cmFsPW4uc2VydmljZXNfZXhjbHVkZSksKG58 fHt9KS5wYXJlbnRTZXJ2aWNlcyYmT2JqZWN0LmtleXMobi5wYXJlbnRTZXJ2aWNl cykuZm9yRWFjaChmdW5jdGlvbihlKXtuLnNlcnZpY2VzX2V4Y2x1ZGUrPShuLnNl cnZpY2VzX2V4Y2x1ZGUubGVuZ3RoPjE/IiwiOiIiKStlfSksYXx8KGE9W10pLGko ImFkZHRoaXNfb3B0aW9uc19kZWZhdWx0Iix1LnNwbGl0KCIsIikuc2xpY2UoMCwx MSkuam9pbigiLCIpKyIsbW9yZSIpLGkoImFkZHRoaXNfb3B0aW9uc19yYW5rIix1 KSxpKCJhZGR0aGlzX29wdGlvbnMiLHdpbmRvdy5hZGR0aGlzX29wdGlvbnNfZGVm YXVsdCksdCgpLGM9byhzKSxhZGR0aGlzX29wdGlvbnM9KCIiIT1zP3MrIiwiOiIi KSthZGR0aGlzX29wdGlvbnMscyYmKGFkZHRoaXNfb3B0aW9ucyYmYWRkdGhpc19v cHRpb25zLmluZGV4T2Yocyk9PT0tMXx8bi5zZXJ2aWNlc19jb21wYWN0JiZuLnNl cnZpY2VzX2NvbXBhY3QuaW5kZXhPZihzKT09PS0xKSYmKG4uc2VydmljZXNfY29t cGFjdD1uLnNlcnZpY2VzX2NvbXBhY3Q/bi5zZXJ2aWNlc19jb21wYWN0KyIsIitz OmFkZHRoaXNfb3B0aW9ucyksYWRkdGhpc19vcHRpb25zPWUoYWRkdGhpc19vcHRp b25zLnNwbGl0KCIsIikpLmpvaW4oIiwiKSxuLnNlcnZpY2VzX2NvbXBhY3QmJihu LnNlcnZpY2VzX2NvbXBhY3Q9ZShuLnNlcnZpY2VzX2NvbXBhY3Quc3BsaXQoIiwi KSkuam9pbigiLCIpKSx3aW5kb3cuYWRkdGhpc19zc2gmJndpbmRvdy5hZGR0aGlz X3VzZV9wZXJzb25hbGl6YXRpb24mJmN8fGEubGVuZ3RofHxuLnNlcnZpY2VzX2V4 Y2x1ZGV8fGFkZHRoaXNfZXhjbHVkZSl7dmFyIGgsbSxnPWFkZHRoaXNfb3B0aW9u c19yYW5rLnNwbGl0KCIsIiksXz1bXSx2PShuLnNlcnZpY2VzX2V4Y2x1ZGV8fGFk ZHRoaXNfZXhjbHVkZXx8IiIpLnNwbGl0KCIsIiksYj17fSx3PXMuam9pbigiLCIp LHg9W10seT17fSxrPTAsQz0xMSxBPTAsTz1uLnByb2R1Y3R8fCIiLEU9Ty5pbmRl eE9mKCJmZmV4dCIpPi0xfHxPLmluZGV4T2YoImZ4ZSIpPi0xO2ZvcihhLmxlbmd0 aCYmYWRkdGhpc19vcHRpb25zLmluZGV4T2YoYVswXS5jb2RlKT09PS0xJiYoYWRk dGhpc19vcHRpb25zKz0iLCIrYVswXS5jb2RlKSxhLmxlbmd0aCYmYVswXSYmXy5w dXNoKGFbMF0uY29kZSksVD0wO1Q8di5sZW5ndGg7VCsrKWJbdltUXV09MSxtPXBb dltUXV18fG5ldyBSZWdFeHAoIig/Ol58LCkoIit2W1RdKyIpKD86JHwsKSIpLHBb dltUXV09bSxhZGR0aGlzX29wdGlvbnM9YWRkdGhpc19vcHRpb25zLnJlcGxhY2Uo bSwiLCIpLnJlcGxhY2UoIiwsIiwiLCIpLG4uc2VydmljZXNfY29tcGFjdCYmKG4u c2VydmljZXNfY29tcGFjdD1uLnNlcnZpY2VzX2NvbXBhY3QucmVwbGFjZShtLCIs IikucmVwbGFjZSgiLCwiLCIsIikpO2ZvcihUPTA7VDxnLmxlbmd0aDtUKyspaD1n W1RdLGJbaF18fChtPXBbaF18fG5ldyBSZWdFeHAoIig/Ol58LCkoIitoKyIpKD86 JHwsKSIpLHBbaF09bSx3LnNlYXJjaChtKT09PS0xJiZfLnVuc2hpZnQoaCkpO2Zv cihUPTA7VDxzLmxlbmd0aCYmVDxDO1QrKyloPXNbVF0sbT1wW2hdfHxuZXcgUmVn RXhwKCIoPzpefCwpKCIraCsiKSg/OiR8LCkiKSxwW2hdPW0sYWRkdGhpc19vcHRp b25zLnNlYXJjaChtKT4tMSYmaysrO2ZvcihUPTA7VDxzLmxlbmd0aCYmISh4Lmxl bmd0aD49Qyk7VCsrKWg9c1tUXSx5W2hdfHxiW2hdfHwhKFF0Lm1hcFtoXSE9PU18 fGguaW5kZXhPZigiZmFjZWJvb2tfIik+LTEpfHwoeVtoXT0xLG09cFtoXXx8bmV3 IFJlZ0V4cCgiKD86XnwsKSgiK2grIikoPzokfCwpIikscFtoXT1tLGFkZHRoaXNf b3B0aW9ucy5zZWFyY2gobSk+LTE/KHgucHVzaChoKSxhZGR0aGlzX29wdGlvbnM9 YWRkdGhpc19vcHRpb25zLnJlcGxhY2UobSwiLCIpLnJlcGxhY2UoIiwsIiwiLCIp LEErKyk6eC5wdXNoKGgpKTtmb3IoYWRkdGhpc19zc2g9eC5qb2luKCIsIiksYWRk dGhpc19vcHRpb25zPSh3aW5kb3cuYWRkdGhpc19zc2g/YWRkdGhpc19zc2grIiwi OiIiKSthZGR0aGlzX29wdGlvbnMucmVwbGFjZSgvWyxdKy9nLCIsIikucmVwbGFj ZSgvLCQvLCIiKS5yZXBsYWNlKC9eLC8sIiIpLnJlcGxhY2UoL15tb3JlLHwsbW9y ZXxebW9yZSQvLCIiKSxhZGR0aGlzX29wdGlvbnMuaW5kZXhPZigiZW1haWwiKT4t MSYmIiI9PT1fYXRlLnB1YigpJiYhRSYmKGFkZHRoaXNfb3B0aW9ucz1hZGR0aGlz X29wdGlvbnMucmVwbGFjZSgvXmVtYWlsLHwsZW1haWx8XmVtYWlsJC8sIiIpKTth ZGR0aGlzX29wdGlvbnMuc3BsaXQoIiwiKS5sZW5ndGg+MTE7KWFkZHRoaXNfb3B0 aW9ucz1hZGR0aGlzX29wdGlvbnMuc3BsaXQoIiwiKS5zbGljZSgwLC0xKS5qb2lu KCIsIik7dmFyIFM9X2F0ZS51dGlsLmZyb21LVihhZGR0aGlzX29wdGlvbnMucmVw bGFjZSgvLHwkL2csIj0xJiIpKSxJPWFkZHRoaXNfb3B0aW9ucy5zcGxpdCgiLCIp Lmxlbmd0aDtpZihJJTI9PT0wfHxJPDExKWZvcih2YXIgVD1NYXRoLm1pbihJLDEx KSxOPXUuc3BsaXQoIiwiKSxqPUk7KGo8MTF8fGolMj09PTApJiZUPE4ubGVuZ3Ro Oyl7dmFyIHo9TltUKytdO2lmKFNbel0pe2lmKFQ9PT1OLmxlbmd0aCl7SSsoTWF0 aC5taW4oSSwxMSktaiklMj09PTAmJihhZGR0aGlzX29wdGlvbnM9YWRkdGhpc19v cHRpb25zLnNwbGl0KCIsIikuc2xpY2UoMCwtMSkuam9pbigiLCIpKTticmVha319 ZWxzZSBiW3pdfHwoYWRkdGhpc19vcHRpb25zKz0iLCIreixTW3pdPTEsaisrKX1p ZihhLmxlbmd0aCYmYVswXSYmYWRkdGhpc19vcHRpb25zLmluZGV4T2YoYVswXS5j b2RlKT09PS0xKXt2YXIgTD1hZGR0aGlzX29wdGlvbnMucmVwbGFjZSgiLG1vcmUi LCIiKS5zcGxpdCgiLCIpLnBvcCgpO2FkZHRoaXNfb3B0aW9ucz1hZGR0aGlzX29w dGlvbnMucmVwbGFjZShMLGFbMF0uY29kZSl9YWRkdGhpc19vcHRpb25zLmluZGV4 T2YoIixtb3JlIik9PT0tMSYmKGFkZHRoaXNfb3B0aW9ucys9Iixtb3JlIil9cmV0 dXJuIG4uc2VydmljZXNfY29tcGFjdHx8KG4uc2VydmljZXNfY29tcGFjdD1hZGR0 aGlzX29wdGlvbnMpLHtjb25mOm4sY3NsOmwsY3JzOmZ9fXZhciBkLHUsYyxsLGYs cD17fTtfYXRlLnNoYXJlPV9hdGUuc2hhcmV8fHt9LF9hdGUuc2hhcmUuc2Vydmlj ZXM9X2F0ZS5zaGFyZS5zZXJ2aWNlc3x8e30sX2F0ZS5zaGFyZS5zZXJ2aWNlcy5p bml0PXN9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PXRoaXMsbj1l fHx7fTtpZihlIGluc3RhbmNlb2YgQXJyYXkpe249e307Zm9yKHZhciBhPTA7YTxl Lmxlbmd0aDthKyspbltlW2FdXT1lW2FdfXQuYWRkPWZ1bmN0aW9uKGUsYSl7aWYo Im9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVy dHkoaSkmJnQuYWRkKGksZVtpXSk7ZWxzZSBuW2VdPWF9LHQuZ2V0PWZ1bmN0aW9u KGUpe3JldHVybiBuW2VdfSx0Lmhhcz1mdW5jdGlvbihlKXtpZigic3RyaW5nIj09 dHlwZW9mIGUmJihlPWUuc3BsaXQoIiwiKSksMD09PWUubGVuZ3RoKXJldHVybiEx O2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCFpc2tleShlW3RdKSlyZXR1 cm4hMTtyZXR1cm4hMH0sdC5pc2tleT1mdW5jdGlvbihlKXtpZigic3RyaW5nIj09 dHlwZW9mIGUmJihlPWUuc3BsaXQoIiwiKSksZSBpbnN0YW5jZW9mIEFycmF5KWZv cih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgYT1lW3RdLnJlcGxhY2UoLyAv ZywiIik7aWYoblthXSlyZXR1cm4gMX1yZXR1cm4gMH0sdC5yZW1vdmU9ZnVuY3Rp b24oZSl7Zm9yKHZhciB0LGE9MDthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKWlmKHQ9 YXJndW1lbnRzW2FdLCJzdHJpbmciPT10eXBlb2YgZSlkZWxldGUgblt0XTtlbHNl IGlmKHQubGVuZ3RoKWZvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWRlbGV0ZSBu W3RbaV1dfSx0Lmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gbi5oYXNPd25Qcm9wZXJ0 eShlKX0sdC5pc0VtcHR5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIG4paWYobi5o YXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4hMDtyZXR1cm4hMX0sdC5rZXlzPWZ1bmN0 aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKG4pfSx0LmNsZWFyPWZ1bmN0aW9uKCl7 bj17fX19X2F0ZS5kYXRhfHwoX2F0ZS5kYXRhPXt9KSxfYXRlLmRhdGEuU2V0PWV9 KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fWZ1bmN0aW9uIHQoKXt9ZnVuY3Rp b24gbihlKXt9ZnVuY3Rpb24gYSgpe3JldHVybiEwfWZ1bmN0aW9uIGkoZSl7dHJ5 e2lmKCFlfHwhZS51cmwpcmV0dXJuITE7dmFyIHQ9anQuZHUuc3BsaXQoIiMiKS5z aGlmdCgpLnJlcGxhY2UoL1wvJC8sIiIpLG49ZS51cmwuc3BsaXQoIiMiKS5zaGlm dCgpLnJlcGxhY2UoL1wvJC8sIiIpO3JldHVybiB0PT09bnx8IWUucHJvbW90ZWQm JihiW2UudXJsXSE9PV8/YltlLnVybF06KGJbZS51cmxdPV9hdGUudHJhY2suaGlz dC5zZWVuQmVmb3JlKGUudXJsKSxiW2UudXJsXSkpfWNhdGNoKGUpe31yZXR1cm4h MX1mdW5jdGlvbiBvKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD0wLGE9W107aWYoci0t LDA9PT1yKXtmb3IoO3Q8ZC5sZW5ndGg7KWE9YS5jb25jYXQoZFt0XSksdCsrO2lm KDA9PT1hLmxlbmd0aClyZXR1cm4gZz09PXc/dm9pZCAwOih2PSExLGwodyksdm9p ZCBvKGUpKTtmb3IoYT1fYXRlLnV0aWwuZmlsdGVyKGEsZnVuY3Rpb24oZSx0KXty ZXR1cm4haSh0KX0pLGM9X2F0ZS51dGlsLmZpbHRlcihjLGZ1bmN0aW9uKGUsdCxu KXtyZXR1cm4gdC5mZWF0dXJlcy5sZW5ndGh9KSxjLmxlbmd0aHx8KGM9W3tmZWF0 dXJlczpbXSxuYW1lOiJuby12ZWN0b3IiLHdlaWdodDoxfV0pLHQ9MDt0PGMubGVu Z3RoO3QrKylhPXMoYSxjW3RdKTtlLmNhbGxiYWNrKHUobihhKSxlKSl9fWZ1bmN0 aW9uIG4oZSl7aWYoZT1lfHxbXSxlLmxlbmd0aCYmX2F0ZS51bHMmJndpbmRvdy5K U09OKXtpZihfPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGEpKXt0cnl7Xz1KU09OLnBh cnNlKF8pfWNhdGNoKGUpe31fLm8/KGI9Xy5vJTEwLF8ubz1iKzIpOl89e286Mn19 ZWxzZSBfPXtvOjJ9O2lmKGI+MClmb3IoO2ItLSA+MDspYXJndW1lbnRzWzBdLnB1 c2goYXJndW1lbnRzWzBdLnNoaWZ0KCkpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKGEs SlNPTi5zdHJpbmdpZnkoXykpfXJldHVybiBlfXZhciBhLHI9MCxkPVtdLGM9W10s Zj1fYXRlLnV0aWwuZ1VEKHdpbmRvdy5hZGR0aGlzX2RvbWFpbnx8ZS5kb21haW58 fHdpbmRvdy5sb2NhdGlvbi5ob3N0KSxwPWUucHViaWR8fF9hdGUucHViKCksXz0h MSxiPTA7cCYmKGd8fGwodyksVC5nZXQoKXx8KHY9ITEsbCh3KSksYT0iX19mZWVk XyIrcCsiXyIrZy5uYW1lLGcuZmVlZC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3IrKyxo KGUse3B1YmlkOnAsZG9tYWluOmZ9LGZ1bmN0aW9uKGUsbil7cmV0dXJuIGU/dCgp OihkLnB1c2gobiksdm9pZCB0KCkpfSl9KSxnLnZlY3Rvci5mb3JFYWNoKGZ1bmN0 aW9uKGUpe3IrKyxtKGUse3B1YmlkOnAsZG9tYWluOmZ9LGZ1bmN0aW9uKGUsbil7 cmV0dXJuIGU/dCgpOihjLnB1c2gobiksdm9pZCB0KCkpfSl9KSl9ZnVuY3Rpb24g cihlKXtyZXR1cm4oKGV8fHt9KS5wdmVjdG9yfHx7fSkuZmVhdHVyZXN8fHt9fWZ1 bmN0aW9uIHMoZSx0LG4pe3ZhciBhLGksbyxzLGQ9bmV3IF9hdGUuZGF0YS5TZXQs dT0wLGM9W107aWYobil7aWYoIShuIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93 IG5ldyBFcnJvcigiTWF0Y2hydWxlIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3Qg IituKX1lbHNlIG49cjtyZXR1cm4odC5mZWF0dXJlc3x8W10pLmZvckVhY2goZnVu Y3Rpb24oZSl7ZC5hZGQoZS5uYW1lLGUud2VpZ2h0KX0pLGUuZm9yRWFjaChmdW5j dGlvbihlKXt2YXIgdD1fYXRlLnNoYXJlLmxpbmtzLmNhbm9uaWNhbDtpZih1PTAs aT1lLnVybHx8IiIsbz1pLnNwbGl0KCIjIikuc2hpZnQoKSwhdHx8dC5pbmRleE9m KG8pK28ubGVuZ3RoIT09dC5sZW5ndGgpe3M9bihlKTtmb3IodmFyIHIgaW4gcylp ZihzLmhhc093blByb3BlcnR5KHIpKXt2YXIgbD1zW3JdO2E9ZC5nZXQobC5uYW1l KSxhIT09XyYmKHUrPWErbC53ZWlnaHQpfWUuc2NvcmU9dSxpLnNjb3JlPXUsYy5w dXNoKGUpfX0pLHQuZmVhdHVyZXMubGVuZ3RoPjAmJmMuc29ydChmdW5jdGlvbihl LHQpe3JldHVybiB0LnNjb3JlLWUuc2NvcmV9KSxjfWZ1bmN0aW9uIGQoZSl7cmV0 dXJuIGUuYWI9ZS5hYnx8X2F0ZS5hYixlLmJ0PWUuYnR8fFQuZ2V0KCksZnVuY3Rp b24odCl7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKGVbbl09 dFtuXSk7cmV0dXJuIGMoZSl9fWZ1bmN0aW9uIHUoZSx0LG4pe24mJiJmdW5jdGlv biI9PXR5cGVvZiBufHwobj1jKSx0LnRvdGFsfHwodC50b3RhbD1lLmxlbmd0aCk7 dmFyIGE9MDtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucG9zPWErKyx0 LnVybD1lLnVybCxlLnVybD1uKHQpLGUudGl0bGU9ZS50aXRsZXx8IiJ9KSxlfWZ1 bmN0aW9uIGMoZSl7dmFyIHQ9ZS51cmwsbj1lLnBjbyxhPWUudG90YWwsaT1lLnBv cyxvPWUuYWJ8fCItIjtyZXR1cm4gdCYmdC5pbmRleE9mKCJhdF9wY28iKT4tMSYm KHQ9bj90LnJlcGxhY2UoL2F0X3Bjbz0oLiopJi8sImF0X3Bjbz0iK24rIiYiKTp0 LHQuaW5kZXhPZigiYXRfYWIiKT4tMT8iLSIhPT1vJiYodD10LnJlcGxhY2UoL2F0 X2FiPSguKikmLywiYXRfYWI9IitvKyImIikpOnQrPSImYXRfYWI9IisoZS5hYnx8 X2F0ZS5hYiksdC5pbmRleE9mKCJhdF9wb3MiKT4tMT9pIT09XyYmKHQ9dC5yZXBs YWNlKC9hdF9wb3M9KFswLTldKykvLCJhdF9wb3M9IitpKSk6dCs9IiZhdF9wb3M9 IisoaXx8MCksdC5pbmRleE9mKCJhdF90b3QiKT4tMT9hIT09XyYmKHQ9dC5yZXBs YWNlKC9hdF90b3Q9KFswLTldKykvLCJhdF90b3Q9IithKSk6dCs9IiZhdF90b3Q9 IisoYXx8MCksdC5pbmRleE9mKCJzaT0iKT09PS0xJiYodCs9IiZhdF9zaT0iK19h dGUuc2lkKSksdH1mdW5jdGlvbiBsKGUpe3JldHVybiEoIWV8fCFlIGluc3RhbmNl b2YgT2JqZWN0KSYmKCF2JiYodj0hMCxnPWUsdm9pZChfYXRlLmFiPWcubmFtZSkp KX1mdW5jdGlvbiBmKCl7cmV0dXJuIF9hdGUuYWIubmFtZX1mdW5jdGlvbiBwKGUs dCxuKXt2YXIgYSxpLG8scixzLGQ9X2F0ZS5wdWIoKSx1PSExLGM9ITAsbD0iIjtp Zih0PXR8fHt9LG89dC5xdWVyeXx8e30scj1wYXJzZUludCh0LnRpbWVvdXQsMTAp fHw0NTAwLGk9dC51aWQsIWkpdGhyb3cgbmV3IEVycm9yKCJObyB1aWQgcHJvdmlk ZWQiKTtmb3IocyBpbiBvKW8uaGFzT3duUHJvcGVydHkocykmJm9bc10hPT1fJiYo Yz9jPSExOmwrPSImIixsKz13aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KHMpKyI9 Iit3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KG9bc10pKTtjP2M9ITE6bCs9IiYi LFQub25SZWFkeShmdW5jdGlvbigpe2E9c2V0VGltZW91dChmdW5jdGlvbigpe24o bmV3IEVycm9yKCJUaW1lZCBvdXQiKSxudWxsKSx1PSEwfSxyKSxsKz0iY2FsbGJh Y2s9IitfYXRlLnV0aWwuc2NiKCJmZHMiLGQraSxmdW5jdGlvbihlKXt2YXIgdD1B cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7dXx8KHQudW5z aGlmdChudWxsKSxuLmFwcGx5KHRoaXMsdCksdT0hMCxjbGVhclRpbWVvdXQoYSkp fSksX2F0ZS5hanMoZSsiPyIrbCwxLCEwLCEwLG51bGwsITApfSl9ZnVuY3Rpb24g aChlLHQsbil7dmFyIGEsaT17fSxvPWUuaW5kZXhPZigidmlldyIpPi0xO2lmKHQ9 dHx8e30sdC5wdWJpZD10LnB1YmlkfHxfYXRlLnB1YigpLCFlKXRocm93IG5ldyBF cnJvcigiTm8gZmVlZCBwcm92aWRlZCIpO2UuaW5kZXhPZigiLmpzb24iKTwwJiYo ZSs9Ii5qc29uIiksYT0iLy9xLmFkZHRoaXMuY29tL2ZlZWRzLzEuMC8iK2UsaS5x dWVyeT17cHViaWQ6dC5wdWJpZHx8Xyxkb21haW46dC5kb21haW58fF8sbGltaXQ6 bz8iNTAiOl99LGkudWlkPWUscChhLGksbil9ZnVuY3Rpb24gbShlLHQsbil7dmFy IGEsaT17fTtpZih0PXR8fHt9LHQucHViaWQ9dC5wdWJpZHx8X2F0ZS5wdWIoKSwh ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHZlY3RvciBwcm92aWRlZCIpO2UuaW5kZXhP ZigiLmpzb24iKTwwJiYoZSs9Ii5qc29uIiksYT0iLy9xLmFkZHRoaXMuY29tL2Zl ZWRzLzEuMC8iK2UsaS5xdWVyeT17cHViaWQ6dC5wdWJpZHx8X30saS51aWQ9ZSxw KGEsaSxuKX12YXIgZyxfLHY9KHdpbmRvdywhMSksYj17fSx3PXtuYW1lOiJwZXIt MiIsZmVlZDpbInZpZXdzMiJdLHZlY3RvcjpbXSxpc1Byb0NlbGw6ITB9O19hdGU9 X2F0ZXx8e30sX2F0ZS5kYXRhPV9hdGUuZGF0YXx8e30sX2F0ZS5mZWVkcz17c2V0 VGVzdENlbGw6bCxnZXRUZXN0Q2VsbDpmLF9hZDphLGNvbmZpZ3VyZTplLGdldDp0 LHJlY29tbWVuZDpvLHRyZW5kOm4sZGVjb3JhdG9yOmR9LF9hdGUuZGN0dT1jfSgp LE8uc3RhcnQoX2F0ZS5lZCl9dmFyIHNuPXdpbmRvdztzbi5hZGR0aGlzJiZzbi5h ZGR0aGlzLnRpbWVyJiYoc24uYWRkdGhpcy50aW1lci5jb3JlPShuZXcgRGF0ZSku Z2V0VGltZSgpKSxfYXRlLl9zc2M9X2F0ZS5fc3NoPVtdLF9hdGUuZGF0PXt9LF9h dGUuX3JlYy5wdXNoKGZ1bmN0aW9uKGUpe3ZhciB0LG4sYT1fYXRlLmRhdC5yZHk7 Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKF9hdGUuZGF0W2ld PWVbaV0pO2lmKGUucmR5JiYhYSYmKF9hdGUueGZyPTEsX2F0ZS50cmFjay54dHAo KSksZS5zc2MmJihfYXRlLl9zc2M9ZS5zc2MpLGUuc3NocyYmKGUuc3Nocz1lLnNz aHMucmVwbGFjZSgvXGJwaW50ZXJlc3RcYi8sInBpbnRlcmVzdF9zaGFyZSIpLHQ9 c24uYWRkdGhpc19zc2g9X2R1YyhlLnNzaHMpLF9hdGUuZ3NzaD0xLF9hdGUuX3Nz aD10LnNwbGl0KCIsIiksX2F0ZS5lZC5maXJlKCJhZGR0aGlzLWludGVybmFsLmRh dGEuc3NoIix7fSx7c3NoOnR9KSksZS51c3Mpe2UudXNzPWUudXNzLnJlcGxhY2Uo L1xicGludGVyZXN0XGIvLCJwaW50ZXJlc3Rfc2hhcmUiKTt2YXIgbz1fYXRlLl91 c3M9X2R1YyhlLnVzcykuc3BsaXQoIiwiKTtpZihzbi5hZGR0aGlzX3NzaCl7dmFy IHI9e30scz1bXTtmb3Iobz1vLmNvbmNhdChfYXRlLl9zc2gpLG49MDtuPG8ubGVu Z3RoO24rKyl0PW9bbl0sclt0XXx8cy5wdXNoKHQpLHJbdF09MTtvPXN9X2F0ZS5f c3NoPW8sc24uYWRkdGhpc19zc2g9by5qb2luKCIsIil9aWYoZS51cHMpZm9yKHQ9 ZS51cHMuc3BsaXQoIiwiKSxfYXRlLnVwcz17fSxuPTA7bjx0Lmxlbmd0aDtuKysp aWYodFtuXSl7dmFyIGQ9eWUoX2R1Yyh0W25dKSk7X2F0ZS51cHNbZC5uYW1lXT1k fWlmKGUudWlkJiYoX2F0ZS51aWQ9ZS51aWQsX2F0ZS5lZC5maXJlKCJhZGR0aGlz LWludGVybmFsLmRhdGEudWlkIix7fSx7dWlkOmUudWlkfSkpLGUuYnRpJiYoX2F0 ZS5idGk9ZS5idGksX2F0ZS5lZC5maXJlKCJhZGR0aGlzLWludGVybmFsLmRhdGEu YnRpIix7fSx7YnRpOmUuYnRpfSkpLCFULmdldCgpJiZlLmJ0MiYmX2F0ZS5lZC5m aXJlKCJhZGR0aGlzLWludGVybmFsLmRhdGEuYnQyIix7fSx7YnQyOmUuYnQyfSks ZS5idHMmJihfYXRlLmJ0cz1wYXJzZUludChlLmJ0cywxMCksX2F0ZS5lZC5maXJl KCJhZGR0aGlzLWludGVybmFsLmRhdGEuYnRzIix7fSx7YnRzOmUuYnRzfSkpLGUu dnRzJiYoX2F0ZS52dHM9cGFyc2VJbnQoZS52dHMsMTApLF9hdGUuZWQuZmlyZSgi YWRkdGhpcy1pbnRlcm5hbC5kYXRhLnZ0cyIse30se3Z0czplLnZ0c30pKSxlLmdl byl7dHJ5e19hdGUuZ2VvPSJzdHJpbmciPT10eXBlb2YgZS5nZW8/X2F0ZS51dGls Lmdlby5wYXJzZShlLmdlbyk6ZS5nZW99Y2F0Y2goZSl7fV9hdGUuZWQuZmlyZSgi YWRkdGhpcy1pbnRlcm5hbC5kYXRhLmdlbyIse30se2dlbzpfYXRlLmdlb30pfWlm KGUuZGJtJiYoX2F0ZS5kYm09ZS5kYm0pLGUuYXRnb3Rjb2RlJiYoX2F0ZS5zYXU9 ZS5hdGdvdGNvZGUpLGUucmR5JiYhYSlyZXR1cm4gdm9pZCBfYXRlLmVkLmZpcmUo ImFkZHRoaXMtaW50ZXJuYWwuZGF0YS5yZHkiKX0pLF9hdGUuX3JlYy5wdXNoKGZ1 bmN0aW9uKGUpe3ZhciB0PShlfHx7fSkucmVtb3RlRXZlbnQ7dCYmdC50eXBlJiZ0 LmRhdGEmJl9hdGUuZWQuZmlyZSh0LnR5cGUse30sdC5kYXRhKX0pO3RyeXtpZihq dC5kdS5pbmRleE9mKF9hdHIpPi0xKXt2YXIgaG49eWUoZG4uY29va2llLCI7Iik7 X2F0ZS5fcmVjW19hdGUuX3JlYy5sZW5ndGgtMV0oaG4pfXZhciBtbj17fSxnbj1f YXRlLnV0aWwuZ3NwKCJhZGR0aGlzX3dpZGdldC5qcyIpO2lmKCJvYmplY3QiPT10 eXBlb2YgZ24pe2lmKGduLnByb3ZpZGVyJiYobW49e3Byb3ZpZGVyOl9hdGUubXVu KGduLnByb3ZpZGVyX2NvZGV8fGduLnByb3ZpZGVyKSxhdXRoOmduLmF1dGh8fGdu LnByb3ZpZGVyX2F1dGh8fCIifSwoZ24udWlkfHxnbi5wcm92aWRlcl91aWQpJiYo bW4udWlkPV9hdGUubXVuKGduLnVpZHx8Z24ucHJvdmlkZXJfdWlkKSksZ24ubG9n b3V0JiYobW4ubG9nb3V0PTEpLF9hdGUucHJ2PW1uKSxnbi5oZWFkbGVzcyYmKF9h dGMueGNzPTEpLGduLmRucCYmKF9hdGUuZGNwPU51bWJlci5NQVhfVkFMVUUpLGdu LmRudCYmKF9hdGMueHRyPTEpLF9hdGUudXRpbC5wYWUoZ24pLF9hdGUudXRpbC5w YXMoX2F0ZS51dGlsLnBhZSksZ24uZG9tcmVhZHkmJihfYXRjLmRyPTEpLGduLm9u cmVhZHkmJmduLm9ucmVhZHkubWF0Y2goL1thLXpBLVowLTlfXC5cJF0rLykpdHJ5 e19hdGUub25yPV9hdGUuZXZsKGduLm9ucmVhZHkpfWNhdGNoKGUpe3ouZXJyb3Io ImFkZHRoaXM6IG9ucmVhZHkgZnVuY3Rpb24gKCIrZ24ub25yZWFkeSsiKSBub3Qg ZGVmaW5lZCIsZSl9Z24uYXN5bmMmJihfYXRjLnhvbD0xKX1fYXRjLnZlcj0zMDAs X2F0ZS5lZC5maXJlKCJhZGR0aGlzLWludGVybmFsLnBhcmFtcy5sb2FkZWQiLHt9 LHtnZW86X2F0ZS5nZW99KSwoc24uYWRkdGhpc19jb25mfHx7fSkueG9sJiYoX2F0 Yy54b2w9MSksc24uYWRkdGhpc19jbGlja291dCYmX2F0ZS5sYWQoWyJjb3V0Il0p fWNhdGNoKGUpe3ouZXJyb3IoIm1haW4iLGUpfWlmKF9hZHIuYmluZFJlYWR5KCks c24uSlNPTiYmc24uSlNPTi5zdHJpbmdpZnk/X2Fkci5hcHBlbmQoaSk6bi5lKDIy NyxmdW5jdGlvbigpe3ouZGVidWcoIkpTT04gbm90IGhlcmUsIGFkZGluZyBqc29u MiIpLG4oODAzKSxfYWRyLmFwcGVuZChpKX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24g ZShlKXtyZXR1cm4gX2F0ZS51bmomJiFfYXRlLmJyby5tc2k/SlNPTi5zdHJpbmdp ZnkoZSk6X2F0ZS51dGlsLnJ0b0tWKGUsIiYmIiwiPT0iKX1mdW5jdGlvbiB0KGUp e2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7aWYoIV9hdGUudW5q fHwwIT09ZS5pbmRleE9mKCJ7IikpcmV0dXJuIF9hdGUudXRpbC5yZnJvbUtWKGUs IiYmIiwiPT0iKTt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2godCl7cmV0 dXJuIF9hdGUudXRpbC5yZnJvbUtWKGUpfX1mdW5jdGlvbiBuKGUpe3ZhciBuO2lm KCFpfHwiLmFkZHRoaXMuY29tIj09PWUub3JpZ2luLnNsaWNlKC0iLmFkZHRoaXMu Y29tIi5sZW5ndGgpKXtpZighZS5kYXRhKXJldHVybjtuPXQoZS5kYXRhKSxuLm9y aWdpbj1lLm9yaWdpbixhKG4pfX1mdW5jdGlvbiBhKGUpe2UuYWRkdGhpc3hmJiZf YXRlLmVkLmZpcmUoZS5hZGR0aGlzeGYsZS50YXJnZXR8fGUucGF5bG9hZCxlLnBh eWxvYWQpfXZhciBpPSExLG89bGUscj0hMTtiZShfYXRlLHt4Zjp7dXBtOm8sbGlz dGVuOmZ1bmN0aW9uKCl7cnx8KG8mJihBLmhyZWYuaW5kZXhPZigiLmFkZHRoaXMu Y29tIik9PT0tMSYmKGk9ITApLHNuLmF0dGFjaEV2ZW50Pyhzbi5hdHRhY2hFdmVu dCgib25tZXNzYWdlIixuLCExKSxkbi5hdHRhY2hFdmVudCgib25tZXNzYWdlIixu LCExKSk6c24uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbiwhMSksd2luZG93 LmFkZHRoaXMuX3BtbC5wdXNoKG4pKSxyPSEwKX0sc2VuZDpmdW5jdGlvbih0LG4s YSl7byYmc2V0VGltZW91dChmdW5jdGlvbigpe3QucG9zdE1lc3NhZ2UoZSh7YWRk dGhpc3hmOm4scGF5bG9hZDphfSksIioiKX0sMCl9fX0pfSgpLF9hdGUueGYubGlz dGVuKCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIG4oZSl7ci5z b3J0KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGkodCxuLF9hdGUuYXBpLkFTQyxlKX0p fWZ1bmN0aW9uIGEoZSl7ci5zb3J0KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGkodCxu LF9hdGUuYXBpLkRTQyxlKX0pfWZ1bmN0aW9uIGkoZSx0LG4sYSl7dmFyIGk9ZVth XSxvPXRbYV07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpfHxpc05hTihwYXJzZUlu dChpLDEwKSk/aT5vP24/MTotMTppPT09bz8wOm4/LTE6MTooaT1wYXJzZUludChp LDEwKSxvPXBhcnNlSW50KG8sMTApLG4/aS1pOmktbyl9ZnVuY3Rpb24gbygpe2Zv cih2YXIgZT17fSx0PTA7dDxyLmxlbmd0aDt0Kyspclt0XS5uYW1lP2Vbclt0XS5u YW1lXT1yW3RdOmVbclt0XV09clt0XTtyZXR1cm4gZX12YXIgcj10fHxbXSxzPTA9 PT1yLmxlbmd0aD97fTpvKHIpLGQ9cjtyZXR1cm4gci5fbWFwPXMsZC5hZGQ9ZnVu Y3Rpb24oZSl7ZSYmKGQucHVzaChlKSxkLl9tYXBbZS5uYW1lfHxlXT1lKX0sZC5h ZGRPbmU9ZnVuY3Rpb24oZSl7aWYoZSl7aWYoZC5fbWFwW2UubmFtZXx8ZV0pcmV0 dXJuO2QuYWRkKGUpfX0sZC50b01hcD1mdW5jdGlvbihlKXtlfHwoZT0ibmFtZSIp O2Zvcih2YXIgdD17fSxuPTA7bjxyLmxlbmd0aDtuKyspdFtyW25dW2VdXT1yW25d O3JldHVybiB0fSxkLm1hcD1kLnRvTWFwLGQuaGFzPWZ1bmN0aW9uKGUpe3JldHVy biBkLmlza2V5KGUpfSxkLmhhc0tleXM9ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9 PXR5cGVvZiBlJiYoZT1lLnNwbGl0KCIsIikpLDA9PT1lLmxlbmd0aClyZXR1cm4h MTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZighZC5pc2tleShlW3RdKSly ZXR1cm4hMTtyZXR1cm4hMH0sZC5pc2tleT1mdW5jdGlvbihlKXtpZigic3RyaW5n Ij09dHlwZW9mIGUmJihlPWUuc3BsaXQoIiwiKSksZSBpbnN0YW5jZW9mIEFycmF5 KWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdLnJlcGxhY2Uo LyAvZywiIik7aWYoZC5fbWFwW25dKXJldHVybiAxfXJldHVybiAwfSxkLmtleXM9 ZnVuY3Rpb24oZSx0LGkpe3R8fCh0PSJuYW1lIiksaXx8KGk9InNjb3JlIik7dmFy IG89W107ZT09PV9hdGUuYXBpLkFTQz9uKGkpOmEoaSk7Zm9yKHZhciBzPTA7czxy Lmxlbmd0aDtzKyspby5wdXNoKCJvYmplY3QiPT10eXBlb2YgcltzXT9yW3NdLm5h bWU6cltzXSk7cmV0dXJuIG99LGQudG9wPWZ1bmN0aW9uKGUsdCl7dHx8KHQ9InNj b3JlIiksYSh0KTtmb3IodmFyIG49W10saT0wO2k8TWF0aC5taW4oZXx8MSxyLmxl bmd0aCk7aSsrKW4ucHVzaChyW2ldLm5hbWUpO3JldHVybiBufSxkLmZpbHRlcj1m dW5jdGlvbih0KXtmb3IodmFyIG49W10sYT0wO2E8ci5sZW5ndGg7YSsrKWZvcih2 YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJnJbYV1baV09PT10W2ldJiZu LnB1c2goclthXSk7cmV0dXJuIGUobil9LGR9X2F0ZS5hcGkuSElHSD0zLF9hdGUu YXBpLk1FRD0yLF9hdGUuYXBpLkxPVz0xLF9hdGUuYXBpLkFTQz0xLF9hdGUuYXBp LkRTQz1fYXRlLmFwaS5ERVNDPTAsX2F0ZS5kYXRhPV9hdGUuZGF0YXx8e30sX2F0 ZS5kYXRhLk9yZGVyZWRTZXQ9ZX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7 aWYoIWV8fGUubGVuZ3RoPDV8fGUubGVuZ3RoPjMwKXRocm93IG5ldyBFcnJvcigi U2VydmljZSBjb2RlIG11c3QgYmUgYmV0d2VlbiA1IGFuZCAzMCBjaGFyYWN0ZXJz LiIpO2lmKGUuc2VhcmNoKC9eW2EtekEtWjAtOV9dKyQvKT09PS0xKXRocm93IG5l dyBFcnJvcigiU2VydmljZSBjb2RlIG11c3QgY29uc2lzdCBlbnRpcmVseSBvZiBs ZXR0ZXJzLCBudW1iZXJzIGFuZCB1bmRlcnNjb3Jlcy4iKTtyZXR1cm4hMH11bi5s b2dTaGFyZT1mdW5jdGlvbih0LG4sYSxpKXt2YXIgbz1pfHxhZGR0aGlzX2NvbmZp ZyxyPWF8fGFkZHRoaXNfc2hhcmU7by5wcm9kdWN0PSJoZGwtMzAwIixyLmltcF91 cmw9MDt2YXIgdD10fHxhJiZhLnVybHx8YWRkdGhpc19zaGFyZS51cmwscz1fYXRl LnRyYWNrLmRjdSh0KTtzLnJzYyYmIW4mJihuPXMucnNjKSxlKG4pJiYoci51cmw9 dCxfYXRlLnNoYXJlLnRyYWNrKG4sMCxyLG8pKX0sdW4uYWRkQ2xpY2tUYWc9ZnVu Y3Rpb24odCxhLGksbyl7dmFyIHQ9dHx8aSYmaS51cmx8fGFkZHRoaXNfc2hhcmUu dXJsLHI9big1NjYpO3JldHVybiBlKGEpJiYodD1fYXRlLnRyYWNrLmN1cihyKHQp LGEpKSx0fX0oKSx3aW5kb3cuYWRkdGhpc3x8KHdpbmRvdy5hZGR0aGlzPXt9KSx1 bi51c2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybiBwZShbImdl dElEIiwiZ2V0R2VvbG9jYXRpb24iLCJnZXRTZXJ2aWNlU2hhcmVIaXN0b3J5Il0s ZSx0KX1mdW5jdGlvbiB0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3NldFRpbWVv dXQoZnVuY3Rpb24oKXtuKGFbZV18fHQpfSwwKX19ZnVuY3Rpb24gbihuKXtBfHxu JiZuLnJkeSYmKG51bGwhPT1rJiZjbGVhclRpbWVvdXQoayksaz1udWxsLEE9MSxl KGZ1bmN0aW9uKGUsbixhKXtyZXR1cm4gTVtuXT1NW25dLnF1ZXVlci5mbHVzaCh0 LmFwcGx5KHVuLGVbYV0pLHVuKSxlfSxbWyJ1aWQiLCIiXSxbImdlbyIsIiJdLFsi X3NzaCIsW11dXSkpfWZ1bmN0aW9uIGkoKXtPPTEsbih7cmR5OjF9KX1mdW5jdGlv biBvKGUpe3JldHVybiBFLmludGVyZXN0cy5pc2tleShlKX1mdW5jdGlvbiByKGUp e3JldHVybiBFLnRhZ3MuaXNrZXkoZSl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gRS50 YWdzLmhhc0tleXMoZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gX2F0ZS51dGlsLmdl by5pc2luKGUsX2F0ZS5nZW8pfWZ1bmN0aW9uIHUoZSl7aWYoX2F0ZS51dWR8fF9h dGUuZWQuZmlyZSgiYWRkdGhpcy1pbnRlcm5hbC5hcGkiLHdpbmRvdy5hZGR0aGlz fHx7fSx7Y2FsbDoicmR5In0pLF9hdGUudXVkPTEsQSYmKCJlbiI9PT1ZKCl8fHdp bmRvdy5hZGR0aGlzX3RyYW5zbGF0aW9ucykpe2lmKER0KCkpcmV0dXJuIHZvaWQg ZShFKTt2YXIgdD1bXSxuPV9hdGUuY29va2llLnRhZy5nZXQoKTtmb3IodmFyIGEg aW4gX2F0ZS5idGkpdC5wdXNoKF9hdGUuYnRpW2FdKTtFLmludGVyZXN0cz1uZXcg X2F0ZS5kYXRhLk9yZGVyZWRTZXQodCksRS50YWdzPW5ldyBfYXRlLmRhdGEuT3Jk ZXJlZFNldChuKTt2YXIgaT1uZXcgX2F0ZS5kYXRhLk9yZGVyZWRTZXQ7KF9hdGUu X3Vzc3x8W10pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5hZGRPbmUoe25hbWU6ZSxz Y29yZTp1bi5ISUdIfSl9KTtmb3IodmFyIG8gaW4gX2F0ZS5fc3NjKWkuYWRkT25l KHtuYW1lOm8sc2NvcmU6X2F0ZS5fc3NjW29dfSk7RS5zZXJ2aWNlcz1pLEUuYWN0 aXZpdHk9e30sRS5hY3Rpdml0eS5zb2NpYWw9X2F0ZS5idHMsRS5hY3Rpdml0eS52 aWV3PV9hdGUudnRzLEUuc291cmNlPXYoKSxTLmxvY2F0aW9uPUUubG9jYXRpb249 X2F0ZS5nZW98fHt9LEUubG9jYXRpb24uY29udGFpbnM9ZCxlJiZlKEUpLF9hdGUu ZWQuZmlyZSgiYWRkdGhpcy51c2VyLmRhdGEiLHdpbmRvdy5hZGR0aGlzfHx7fSx7 fSl9ZWxzZSJlbiI9PT1ZKCl8fHdpbmRvdy5hZGR0aGlzX3RyYW5zbGF0aW9ucz9z ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dShlKX0sMTAwKTooX2F0ZS5lZC5hZGRFdmVu dExpc3RlbmVyKCJhZGR0aGlzLmkxOG4ucmVhZHkiLGZ1bmN0aW9uKCl7dShlKX0p LGFlLmdldCgpKX1mdW5jdGlvbiBjKGUpe3UoZSl9ZnVuY3Rpb24gbCgpe3JldHVy biBfYXRlLmNvb2tpZS52aWV3LmNsYSgpPjB9ZnVuY3Rpb24gZihlKXt2YXIgdD1l OyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiLCIpKSxfYXRlLmNvb2tp ZS50YWcuYWRkKHQpfWZ1bmN0aW9uIHAoZSx0KXt2YXIgbj1mdW5jdGlvbihuLGEs aSl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTty ZXR1cm4gX2F0ZS5lZC5maXJlKCJhZGR0aGlzLWludGVybmFsLmFwaSIsd2luZG93 LmFkZHRoaXN8fHt9LHtjYWxsOmV9KSx0LmFwcGx5KHRoaXMsbyl9O3JldHVybiBu fWZ1bmN0aW9uIGgoZSl7X2F0ZS5lZC5maXJlKCJhZGR0aGlzLWludGVybmFsLmFw aSIsd2luZG93LmFkZHRoaXN8fHt9LHtjYWxsOmV9KX1mdW5jdGlvbiBtKCl7cmV0 dXJuIGgoImd0aSIpLFQuZ2V0SW50ZXJlc3RzKCl9ZnVuY3Rpb24gZygpe3JldHVy biBULmdldFBhcnNlZEludGVyZXN0cygpfWZ1bmN0aW9uIF8oKXtyZXR1cm4gaCgi Z3RzIiksRS5zZXJ2aWNlc31mdW5jdGlvbiB2KCl7cmV0dXJuIGgoImd0dCIpLF9h dGUudHJhY2sudHMuZ2V0KCl9ZnVuY3Rpb24gYigpe3JldHVybiBoKCJndGwiKSxF LmxvY2F0aW9ufWZ1bmN0aW9uIHcoZSl7cmV0dXJuIF9hdGUuX3NzaCYmX2F0ZS5f c3NoLmluZGV4T2YoZSk+LTF8fF9hdGUuX3NzYyYmX2F0ZS5fc3NjW2VdfWZ1bmN0 aW9uIHgoZSl7dmFyIHQ9digpO2lmKCJzb2NpYWwiPT09dC50eXBlKXtpZighZSly ZXR1cm4hMTtpZigic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoIiwiKSks ZSBpbnN0YW5jZW9mIEFycmF5KXtmb3IodmFyIG49e30sYT0wO2E8ZS5sZW5ndGg7 YSsrKXtpZigiYWxsIj09PWVbYV0mJnQuc2VydmljZSYmUXQubGlzdFt0LnNlcnZp Y2VdKXJldHVybiEwO25bZVthXV09MX1pZighblt0LnNlcnZpY2VdKXJldHVybiEx fXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHkoZSl7dmFyIHQsbj12KCk7aWYo InNlYXJjaCI9PT1uLnR5cGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS5z cGxpdCgiLCIpKSxlIGluc3RhbmNlb2YgQXJyYXkpe3ZhciBhPXt9O2Zvcih0PTA7 dDxlLmxlbmd0aDt0KyspYVtlW3RdXT0xO2lmKG4udGVybXMmJm4udGVybXMubGVu Z3RoKWZvcih0PTA7dDxuLnRlcm1zLmxlbmd0aDt0KyspaWYoIWFbbi50ZXJtc1t0 XV0pcmV0dXJuITF9cmV0dXJuITB9cmV0dXJuITF9dmFyIGssQz0xZTMsTT17fSxB PTAsTz0wLEU9e3RhZ3M6X2F0ZS5jb29raWUudGFnLmdldCgpfTtrPXNldFRpbWVv dXQoaSxDKSxfYXRlLl9yZWMucHVzaChuKSxNLmdldERhdGE9YyxNLmdldFByZWZl cnJlZFNlcnZpY2VzPWZ1bmN0aW9uKGUpe3ZhciB0OyJlbiI9PT1ZKCl8fHdpbmRv dy5hZGR0aGlzX3RyYW5zbGF0aW9ucz8oX2F0ZS5zaGFyZS5zZXJ2aWNlcy5pbml0 KHdpbmRvdy5hZGR0aGlzX2NvbmZpZyksdD0od2luZG93LmFkZHRoaXNfb3B0aW9u c3x8IiIpLnJlcGxhY2UoIixtb3JlIiwiIikuc3BsaXQoIiwiKSxlKHQpKTooX2F0 ZS5lZC5hZGRFdmVudExpc3RlbmVyKCJhZGR0aGlzLmkxOG4ucmVhZHkiLGZ1bmN0 aW9uKCl7X2F0ZS5zaGFyZS5zZXJ2aWNlcy5pbml0KHdpbmRvdy5hZGR0aGlzX2Nv bmZpZyksdD0od2luZG93LmFkZHRoaXNfb3B0aW9uc3x8IiIpLnJlcGxhY2UoIixt b3JlIiwiIikuc3BsaXQoIiwiKSxlKHQpfSksYWUuZ2V0KCkpfTt2YXIgUz17cmVh ZHk6dSxpc1JldHVybmluZzpsLGlzT3B0ZWRPdXQ6cCgiaW9vIixEdCksaXNVc2Vy T2Y6cCgiaXVmIix3KSxoYXNJbnRlcmVzdDpvLGhhc1RhZzpyLGhhc1RhZ3M6cyxp c0xvY2F0ZWRJbjpkLHRhZzpmLGludGVyZXN0czptLHNlcnZpY2VzOl8sbG9jYXRp b246YixwYXJzZUJUMkNvb2tpZTpnfTtyZXR1cm4gdW4uc2Vzc2lvbj17c291cmNl OnYsaXNTb2NpYWw6cCgiaXNsIix4KSxpc1NlYXJjaDpwKCJpc2giLHkpfSxiZShN LFMpLGUoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1uZXcgdW4uX1F1ZXVlcih0 KS5jYWxsLGV9LE0pfSgpLCF3aW5kb3cuYWRkdGhpcy5vc3RhKXt1bi5vc3RhPTEs d2luZG93LmFkZHRoaXMuY2FjaGU9e30sd2luZG93LmFkZHRoaXMuZWQ9X2F0ZS5l ZCx3aW5kb3cuYWRkdGhpcy5pbml0PWZ1bmN0aW9uKCl7X2Fkci5vblJlYWR5KCks dW4ucmVhZHkmJnVuLnJlYWR5KCl9LHdpbmRvdy5hZGR0aGlzLmNsZWFudXA9ZnVu Y3Rpb24oKXsod2luZG93LmFkZHRoaXMuX3BtbHx8W10pLmZvckVhY2goZnVuY3Rp b24oZSl7X2F0ZS51dGlsLnVubGlzdGVuKHdpbmRvdywibWVzc2FnZSIsZSl9KX0s YmUod2luZG93LmFkZHRoaXMudXRpbCx7Z2V0U2VydmljZU5hbWU6JHR9KSx3aW5k b3cuYWRkdGhpcy5hZGRFdmVudExpc3RlbmVyPV9hdGUuZWQuYWRkRXZlbnRMaXN0 ZW5lci5iaW5kKF9hdGUuZWQpLHdpbmRvdy5hZGR0aGlzLnJlbW92ZUV2ZW50TGlz dGVuZXI9X2F0ZS5lZC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoX2F0ZS5lZCks YmUodW4sX2F0ZS5hcGkpO3ZhciBfbix2bixibix3bix4bixkbj1kb2N1bWVudCx5 bj0wLGtuPU0sc249d2luZG93LENuPXt9LE1uPXt9LEFuPXt9LE9uPW51bGwsRW49 W10sU249W10sSW49W10sVG49e30sTm49e2ZlZWQ6MSxtb3JlOjAsZW1haWw6MCxt YWlsdG86MX0sam49e2ZlZWQ6MSxlbWFpbDowLG1haWx0bzoxLHByaW50OjEsbW9y ZTohX2F0ZS5icm8uaXBhJiYwLGZhdm9yaXRlczoxfSxEbj17ZW1haWw6MSxtb3Jl OjF9O19hdGUuZWQuYWRkRXZlbnRMaXN0ZW5lcigiYWRkdGhpcy1pbnRlcm5hbC5k YXRhLnNzaCIsZnVuY3Rpb24oKXtFKCJwcmVmZXJyZWRfYXZhaWxhYmxlIix7b25j ZTohMH0pLHduPTF9KSxuZShmdW5jdGlvbihlKXtpZihlKWZvcihUbi5tb3JlPWVb MF1bMl0sVG4uZW1haWw9ZVswXVs0XSxUbi5mYXZvcml0ZXM9ZVswXVs1XSxUbi5w cmludD1lWzBdWzIyXSxUbi5kb21haW50b29sc3dob2lzPWVbMF1bMTA2XSxUbi53 M3ZhbGlkYXRvcj1lWzBdWzEwN10sVG4ubWFpbHRvPWVbMF1bMTA4XSxUbi5jbGVh bnNhdmU9ZVswXVsxMDldLFRuLmxpbms9ZVswXVsxMTBdO0luLmxlbmd0aD4wOyl4 bj1Jbi5wb3AoKSx4biYmeG4ubGluayYmeG4udGl0bGUmJih4bi5saW5rLnRpdGxl PVRuW3huLnRpdGxlXXx8eG4ubGluay50aXRsZSl9KSx1bi5hZGRFdmVudHM9ZnVu Y3Rpb24oZSx0LG4pe2lmKGUpe3ZhciBhPWUub25jbGlja3x8ZnVuY3Rpb24oKXt9 OyhlLmNvbmYuZGF0YV9nYV90cmFja2VyfHxhZGR0aGlzX2NvbmZpZy5kYXRhX2dh X3RyYWNrZXJ8fGUuY29uZi5kYXRhX2dhX3Byb3BlcnR5fHxhZGR0aGlzX2NvbmZp Zy5kYXRhX2dhX3Byb3BlcnR5KSYmKGUub25jbGljaz1mdW5jdGlvbigpe3JldHVy biBfYXRlLmdhdCh0LG4sZS5jb25mLGUuc2hhcmUpLGEoKX0pfX0sX2F0ZS5hcGku cHRwYT1UdCxfYXRlLmdhdD12LHVuLnVwZGF0ZT1mdW5jdGlvbihlLHQsYSl7dmFy IGk9big2NDUpO2lmKCJzaGFyZSI9PT1lKXsidXJsIj09PXQmJl9hdGUudXN1KDAs MSksd2luZG93LmFkZHRoaXNfc2hhcmV8fCh3aW5kb3cuYWRkdGhpc19zaGFyZT17 fSksd2luZG93LmFkZHRoaXNfc2hhcmVbdF09YSxBblt0XT1hO2Zvcih2YXIgbyBp biB1bi5saW5rcyl7dmFyIHI9dW4ubGlua3Nbb10scz1uZXcgUmVnRXhwKCImIit0 KyI9KC4qKSYiKSxkPSImIit0KyI9Iit3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50 KGEpKyImIjshKHIuY29uZnx8e30pLmZvbGxvdyYmci5ub2RlVHlwZSYmKHIuc2hh cmUmJihyLnNoYXJlW3RdPWEpLHIubm9ofHwoci5ocmVmPXIuaHJlZi5yZXBsYWNl KHMsZCksci5ocmVmLmluZGV4T2YodCk9PT0tMSYmKHIuaHJlZis9ZCkpKX1mb3Io dmFyIG8gaW4gdW4uZW1zKXt2YXIgcj11bi5lbXNbb107ci5ocmVmPWkoYWRkdGhp c19zaGFyZSl9fWVsc2UiY29uZmlnIj09PWUmJih3aW5kb3cuYWRkdGhpc19jb25m aWd8fCh3aW5kb3cuYWRkdGhpc19jb25maWc9e30pLHdpbmRvdy5hZGR0aGlzX2Nv bmZpZ1t0XT1hLE1uW3RdPWEpfSx1bi5fcmVuZGVyPW0sdW4ucmVhZHk9ZnVuY3Rp b24oZSl7dW4ub3N0fHxwdCgpfHwodW4ub3N0PTEsX2F0ZS5lZC5maXJlKCJhZGR0 aGlzLnJlYWR5Iix1biksX2F0ZS5vbnImJl9hdGUub25yKHVuKSxfYXRlLnNoYXJl LnN1YigpLGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKCkpfSx1bi51dGlsLmdl dEF0dHJpYnV0ZXM9UHQsdW4uYWQ9YmUodW4uYWQsX2F0ZS5hZCksQygpLF9hdGMu eG9sfHxfYWRyLmFwcGVuZChmdW5jdGlvbigpe3dpbmRvdy5hZGR0aGlzLnJlYWR5 KCl9KSxfYXRlLmVkLmZpcmUoImFkZHRoaXMtaW50ZXJuYWwucmVhZHkiLHVuKX13 aW5kb3cuYWRkdGhpc19vcGVuPWZ1bmN0aW9uKCl7cmV0dXJuInN0cmluZyI9PXR5 cGVvZiBpY29uZiYmKGljb25mPW51bGwpLF9hdGUuYW8uYXBwbHkoX2F0ZSxhcmd1 bWVudHMpfSx3aW5kb3cuYWRkdGhpc19jbG9zZT1mdW5jdGlvbigpe3JldHVybiJz dHJpbmciPT10eXBlb2YgaWNvbmYmJihpY29uZj1udWxsKSxfYXRlLmFjLmFwcGx5 KF9hdGUsYXJndW1lbnRzKX0sd2luZG93LmFkZHRoaXNfc2VuZHRvPWZ1bmN0aW9u KGUsdCxuKXt0PXR8fHt9O3ZhciBhPXQudWlfNTA4X2NvbXBsaWFudHx8KHdpbmRv dy5fYXR3JiZ3aW5kb3cuX2F0dy5jb25mfHx7fSkudWlfNTA4X2NvbXBsaWFudHx8 KHdpbmRvdy5hZGR0aGlzX2NvbmZpZ3x8e30pLnVpXzUwOF9jb21wbGlhbnQ7cmV0 dXJuIWEmJnRuKGUpJiZJdCgpLF9hdGUuYXMuYXBwbHkoX2F0ZSxhcmd1bWVudHMp LCExfSxfYXRjLmRyJiZfYWRyLm9uUmVhZHkoKSxuKDgwMSkod2luZG93LmFkZHRo aXMpLG4oODAyKX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7RnVuY3Rpb24u cHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9m IHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24ucHJvdG90eXBlLmJp bmQgLSB3aGF0IGlzIHRyeWluZyB0byBiZSBib3VuZCBpcyBub3QgY2FsbGFibGUi KTt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSks bj10aGlzLGE9ZnVuY3Rpb24oKXt9LGk9dGhpcyBpbnN0YW5jZW9mIGEmJmU/dGhp czplLG89ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShpLHQuY29uY2F0KEFycmF5 LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGEucHJv dG90eXBlPXRoaXMucHJvdG90eXBlLG8ucHJvdG90eXBlPW5ldyBhLG99fUZ1bmN0 aW9uLnByb3RvdHlwZS5iaW5kfHxuKCksZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUs dCxuKXtmdW5jdGlvbiBhKCl7dmFyIGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0s dD1lLmJpbmQobnVsbCwxKTtyZXR1cm4gMCE9PXQoMCl9ZnVuY3Rpb24gaSgpe2Eo KSYmbygpfXZhciBvPW4oNzA4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtpKCksc2V0 VGltZW91dChpLDApfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4oNzExKTsic3Ry aW5nIj09dHlwZW9mIGEmJihhPVtbZS5pZCxhLCIiXV0pO24oMzQxKShhLHt9KTth LmxvY2FscyYmKGUuZXhwb3J0cz1hLmxvY2Fscyl9LGZ1bmN0aW9uKGUsdCxuKXt0 PWUuZXhwb3J0cz1uKDM0MCkoKSx0LnB1c2goW2UuaWQsIi5hdC1pY29ue2ZpbGw6 I2ZmZjtib3JkZXI6MH0uYXQtaWNvbi13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWJs b2NrO292ZXJmbG93OmhpZGRlbn1hIC5hdC1pY29uLXdyYXBwZXJ7Y3Vyc29yOnBv aW50ZXJ9LmF0LXJvdW5kZWQsLmF0LXJvdW5kZWQtZWxlbWVudCAuYXQtaWNvbi13 cmFwcGVye2JvcmRlci1yYWRpdXM6MTIlfS5hdC1jaXJjdWxhciwuYXQtY2lyY3Vs YXItZWxlbWVudCAuYXQtaWNvbi13cmFwcGVye2JvcmRlci1yYWRpdXM6NTAlfS5h ZGR0aGlzXzMyeDMyX3N0eWxlIC5hdC1pY29ue3dpZHRoOjJwYztoZWlnaHQ6MnBj fS5hZGR0aGlzXzI0eDI0X3N0eWxlIC5hdC1pY29ue3dpZHRoOjI0cHg7aGVpZ2h0 OjI0cHh9LmFkZHRoaXNfMjB4MjBfc3R5bGUgLmF0LWljb257d2lkdGg6MjBweDto ZWlnaHQ6MjBweH0uYWRkdGhpc18xNngxNl9zdHlsZSAuYXQtaWNvbnt3aWR0aDox cGM7aGVpZ2h0OjFwY30jYXQxNmxie2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNv bHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4 OjEwMDE7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjAwMX0jYXRfY29t cGxldGUsI2F0X2Vycm9yLCNhdF9zaGFyZSwjYXRfc3VjY2Vzc3twb3NpdGlvbjpz dGF0aWMhaW1wb3J0YW50fS5hdDE1ZG57ZGlzcGxheTpub25lfSNhdDE1cywjYXQx NnAsI2F0MTZwIGZvcm0gaW5wdXQsI2F0MTZwIGxhYmVsLCNhdDE2cCB0ZXh0YXJl YSwjYXRfc2hhcmUgLmF0X2l0ZW17Zm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNh LHRhaG9tYSx2ZXJkYW5hLHNhbnMtc2VyaWYhaW1wb3J0YW50O2ZvbnQtc2l6ZTo5 cHQhaW1wb3J0YW50O291dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXdpZHRoOjA7 bGluZS1oZWlnaHQ6MWVtfSogaHRtbCAjYXQxNXMubW1ib3JkZXJ7cG9zaXRpb246 YWJzb2x1dGUhaW1wb3J0YW50fSNhdDE1cy5tbWJvcmRlcntwb3NpdGlvbjpmaXhl ZCFpbXBvcnRhbnQ7d2lkdGg6MjUwcHghaW1wb3J0YW50fSNhdDE1c3tiYWNrZ3Jv dW5kOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNV aEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpR QkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUJ0SlJFRlVlTnBpWkdCZ2FH QWdBakF4RUFsR0ZWSkhJVUNBQVFEY25nQ1VncUdNcXdBQUFBQkpSVTVFcmtKZ2dn PT0pO2Zsb2F0Om5vbmU7bGluZS1oZWlnaHQ6MWVtO21hcmdpbjowO292ZXJmbG93 OnZpc2libGU7cGFkZGluZzo1cHg7dGV4dC1hbGlnbjpsZWZ0O3Bvc2l0aW9uOmFi c29sdXRlfSNhdDE1cyBhLCNhdDE1cyBzcGFue291dGxpbmU6MDtkaXJlY3Rpb246 bHRyO3RleHQtdHJhbnNmb3JtOm5vbmV9I2F0MTVzIC5hdC1sYWJlbHttYXJnaW4t bGVmdDo1cHh9I2F0MTVzIC5hdC1pY29uLXdyYXBwZXJ7d2lkdGg6MXBjO2hlaWdo dDoxcGM7dmVydGljYWwtYWxpZ246bWlkZGxlfSNhdDE1cyAuYXQtaWNvbnt3aWR0 aDoxcGM7aGVpZ2h0OjFwY30uYXQ0LWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7 YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246 dG9wIGxlZnQ7bWFyZ2luOjA7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVy fS5hZGR0aGlzXzE2eDE2X3N0eWxlIC5hdDQtaWNvbiwuYWRkdGhpc19kZWZhdWx0 X3N0eWxlIC5hdDQtaWNvbiwuYXQ0LWljb24sLmF0LTE2eDE2e3dpZHRoOjFwYzto ZWlnaHQ6MXBjO2xpbmUtaGVpZ2h0OjFwYztiYWNrZ3JvdW5kLXNpemU6MXBjIWlt cG9ydGFudH0uYWRkdGhpc18zMngzMl9zdHlsZSAuYXQ0LWljb24sLmF0LTMyeDMy e3dpZHRoOjJwYztoZWlnaHQ6MnBjO2xpbmUtaGVpZ2h0OjJwYztiYWNrZ3JvdW5k LXNpemU6MnBjIWltcG9ydGFudH0uYWRkdGhpc18yNHgyNF9zdHlsZSAuYXQ0LWlj b24sLmF0LTI0eDI0e3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bGluZS1oZWlnaHQ6 MjRweDtiYWNrZ3JvdW5kLXNpemU6MjRweCFpbXBvcnRhbnR9LmFkZHRoaXNfMjB4 MjBfc3R5bGUgLmF0NC1pY29uLC5hdC0yMHgyMHt3aWR0aDoyMHB4O2hlaWdodDoy MHB4O2xpbmUtaGVpZ2h0OjIwcHg7YmFja2dyb3VuZC1zaXplOjIwcHghaW1wb3J0 YW50fS5hdDQtaWNvbi5jaXJjdWxhciwuY2lyY3VsYXIgLmF0NC1pY29uLC5jaXJj dWxhci5hdGljb257Ym9yZGVyLXJhZGl1czo1MCV9LmF0NC1pY29uLnJvdW5kZWQs LnJvdW5kZWQgLmF0NC1pY29ue2JvcmRlci1yYWRpdXM6NHB4fS5hdDQtaWNvbi1s ZWZ0e2Zsb2F0OmxlZnR9I2F0MTVzIC5hdDQtaWNvbnt0ZXh0LWluZGVudDoyMHB4 O3BhZGRpbmc6MDtvdmVyZmxvdzp2aXNpYmxlO3doaXRlLXNwYWNlOm5vd3JhcDti YWNrZ3JvdW5kLXNpemU6MXBjO3dpZHRoOjFwYztoZWlnaHQ6MXBjO2JhY2tncm91 bmQtcG9zaXRpb246dG9wIGxlZnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1o ZWlnaHQ6MXBjfS5hZGR0aGlzX3ZlcnRpY2FsX3N0eWxlIC5hdDQtaWNvbiwuYXQ0 LWZvbGxvdy1jb250YWluZXIgLmF0NC1pY29ue21hcmdpbi1yaWdodDo1cHh9aHRt bD5ib2R5ICNhdDE1c3t3aWR0aDoyNTBweCFpbXBvcnRhbnR9I2F0MTVzLmF0bXti YWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7d2lk dGg6MTBwYyFpbXBvcnRhbnR9I2F0MTVzX2lubmVye2JhY2tncm91bmQ6I2ZmZjti b3JkZXI6MXB4IHNvbGlkICNmZmY7bWFyZ2luOjB9I2F0MTVzX2hlYWR7cG9zaXRp b246cmVsYXRpdmU7YmFja2dyb3VuZDojZjJmMmYyO3BhZGRpbmc6NHB4O2N1cnNv cjpkZWZhdWx0O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9LmF0MTVz X2hlYWRfc3VjY2Vzc3tiYWNrZ3JvdW5kOiNjYWZkOTkhaW1wb3J0YW50O2JvcmRl ci1ib3R0b206MXB4IHNvbGlkICNhOWQ1ODIhaW1wb3J0YW50fS5hdDE1c19oZWFk X3N1Y2Nlc3MgYSwuYXQxNXNfaGVhZF9zdWNjZXNzIHNwYW57Y29sb3I6IzAwMCFp bXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9I2F0MTVzX2JyYW5kLCNhdDE1 c3B0eCwjYXQxNl9icmFuZHtwb3NpdGlvbjphYnNvbHV0ZX0jYXQxNXNfYnJhbmR7 dG9wOjRweDtyaWdodDo0cHh9LmF0MTVzX2JyYW5keHtyaWdodDoyMHB4IWltcG9y dGFudH1hI2F0MTVzcHR4e3RvcDo0cHg7cmlnaHQ6NHB4O3RleHQtZGVjb3JhdGlv bjpub25lO2NvbG9yOiM0YzRjNGM7Zm9udC13ZWlnaHQ6NzAwfSNhdDE1c3B0eDpo b3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfSNhdDE2X2JyYW5ke3RvcDo1 cHg7cmlnaHQ6MzBweDtjdXJzb3I6ZGVmYXVsdH0jYXRfaG92ZXJ7cGFkZGluZzo0 cHh9I2F0X2hvdmVyIC5hdF9pdGVtLCNhdF9zaGFyZSAuYXRfaXRlbXtiYWNrZ3Jv dW5kOiNmZmYhaW1wb3J0YW50O2Zsb2F0OmxlZnQhaW1wb3J0YW50O2NvbG9yOiM0 YzRjNGMhaW1wb3J0YW50fSNhdF9zaGFyZSAuYXRfaXRlbSAuYXQtaWNvbi13cmFw cGVye21hcmdpbi1yaWdodDo1cHh9I2F0X2hvdmVyIC5hdF9ib2xke2ZvbnQtd2Vp Z2h0OjcwMDtjb2xvcjojMDAwIWltcG9ydGFudH0jYXRfaG92ZXIgLmF0X2l0ZW17 d2lkdGg6N3BjIWltcG9ydGFudDtwYWRkaW5nOjJweCAzcHghaW1wb3J0YW50O21h cmdpbjoxcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fSNhdF9ob3Zl ciAuYXRfaXRlbS5hdGhvdiwjYXRfaG92ZXIgLmF0X2l0ZW06Zm9jdXMsI2F0X2hv dmVyIC5hdF9pdGVtOmhvdmVye21hcmdpbjowIWltcG9ydGFudH0jYXRfaG92ZXIg LmF0X2l0ZW0uYXRob3YsI2F0X2hvdmVyIC5hdF9pdGVtOmZvY3VzLCNhdF9ob3Zl ciAuYXRfaXRlbTpob3ZlciwjYXRfc2hhcmUgLmF0X2l0ZW0uYXRob3YsI2F0X3No YXJlIC5hdF9pdGVtOmhvdmVye2JhY2tncm91bmQ6I2YyZjJmMiFpbXBvcnRhbnQ7 Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O2NvbG9yOiMwMDAhaW1wb3J0YW50O3Rl eHQtZGVjb3JhdGlvbjpub25lfS5pcGFkICNhdF9ob3ZlciAuYXRfaXRlbTpmb2N1 c3tiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgI2Zm Zn0uYXQxNXR7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7aGVpZ2h0OjFwYyFpbXBv cnRhbnQ7bGluZS1oZWlnaHQ6MXBjIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MjBw eCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7dGV4dC1hbGlnbjps ZWZ0fS5hZGR0aGlzX2J1dHRvbiwuYXQxNXR7Y3Vyc29yOnBvaW50ZXJ9LmFkZHRo aXNfdG9vbGJveCBhLmF0MzAwYiwuYWRkdGhpc190b29sYm94IGEuYXQzMDBte3dp ZHRoOmF1dG99LmFkZHRoaXNfdG9vbGJveCBhe21hcmdpbi1ib3R0b206NXB4O2xp bmUtaGVpZ2h0OmluaXRpYWx9LmFkZHRoaXNfdG9vbGJveC5hZGR0aGlzX3ZlcnRp Y2FsX3N0eWxle3dpZHRoOjIwMHB4fS5hZGR0aGlzX2J1dHRvbl9mYWNlYm9va19s aWtlIC5mYl9pZnJhbWVfd2lkZ2V0e2xpbmUtaGVpZ2h0OjEwMCV9LmFkZHRoaXNf YnV0dG9uX2ZhY2Vib29rX2xpa2UgaWZyYW1lLmZiX2lmcmFtZV93aWRnZXRfbGlm dHttYXgtd2lkdGg6bm9uZX0uYWRkdGhpc190b29sYm94IGEuYWRkdGhpc19idXR0 b25fY291bnRlciwuYWRkdGhpc190b29sYm94IGEuYWRkdGhpc19idXR0b25fZmFj ZWJvb2tfbGlrZSwuYWRkdGhpc190b29sYm94IGEuYWRkdGhpc19idXR0b25fZmFj ZWJvb2tfc2VuZCwuYWRkdGhpc190b29sYm94IGEuYWRkdGhpc19idXR0b25fZmFj ZWJvb2tfc2hhcmUsLmFkZHRoaXNfdG9vbGJveCBhLmFkZHRoaXNfYnV0dG9uX2Zv dXJzcXVhcmUsLmFkZHRoaXNfdG9vbGJveCBhLmFkZHRoaXNfYnV0dG9uX2dvb2ds ZV9wbHVzb25lLC5hZGR0aGlzX3Rvb2xib3ggYS5hZGR0aGlzX2J1dHRvbl9saW5r ZWRpbl9jb3VudGVyLC5hZGR0aGlzX3Rvb2xib3ggYS5hZGR0aGlzX2J1dHRvbl9w aW50ZXJlc3RfcGluaXQsLmFkZHRoaXNfdG9vbGJveCBhLmFkZHRoaXNfYnV0dG9u X3N0dW1ibGV1cG9uX2JhZGdlLC5hZGR0aGlzX3Rvb2xib3ggYS5hZGR0aGlzX2J1 dHRvbl90d2VldHtkaXNwbGF5OmlubGluZS1ibG9ja30uYXQtc2hhcmUtdGJ4LWVs ZW1lbnQgLmdvb2dsZV9wbHVzb25lX2lmcmFtZV93aWRnZXQ+c3Bhbj5kaXZ7dmVy dGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0uYWRkdGhpc190b29sYm94IHNwYW4u YWRkdGhpc19mb2xsb3dfbGFiZWx7ZGlzcGxheTpub25lfS5hZGR0aGlzX3Rvb2xi b3guYWRkdGhpc192ZXJ0aWNhbF9zdHlsZSBzcGFuLmFkZHRoaXNfZm9sbG93X2xh YmVse2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5hZGR0aGlzX3Rv b2xib3guYWRkdGhpc192ZXJ0aWNhbF9zdHlsZSBhe2Rpc3BsYXk6YmxvY2t9LmFk ZHRoaXNfdG9vbGJveC5hZGR0aGlzX3ZlcnRpY2FsX3N0eWxlLmFkZHRoaXNfMzJ4 MzJfc3R5bGUgYXtsaW5lLWhlaWdodDoycGM7aGVpZ2h0OjJwY30uYWRkdGhpc190 b29sYm94LmFkZHRoaXNfdmVydGljYWxfc3R5bGUgLmF0MzAwYnN7bWFyZ2luLXJp Z2h0OjRweDtmbG9hdDpsZWZ0fS5hZGR0aGlzX3Rvb2xib3guYWRkdGhpc18yMHgy MF9zdHlsZSBzcGFue2xpbmUtaGVpZ2h0OjIwcHh9LmFkZHRoaXNfdG9vbGJveC5h ZGR0aGlzXzMyeDMyX3N0eWxlIHNwYW57bGluZS1oZWlnaHQ6MnBjfS5hZGR0aGlz X3Rvb2xib3guYWRkdGhpc19waWxsX2NvbWJvX3N0eWxlIC5hZGR0aGlzX2J1dHRv bl9jb21wYWN0IC5hdDE1dF9jb21wYWN0LC5hZGR0aGlzX3Rvb2xib3guYWRkdGhp c19waWxsX2NvbWJvX3N0eWxlIGF7ZmxvYXQ6bGVmdH0uYWRkdGhpc190b29sYm94 LmFkZHRoaXNfcGlsbF9jb21ib19zdHlsZSBhLmFkZHRoaXNfYnV0dG9uX3R3ZWV0 e21hcmdpbi10b3A6LTJweH0uYWRkdGhpc190b29sYm94LmFkZHRoaXNfcGlsbF9j b21ib19zdHlsZSAuYWRkdGhpc19idXR0b25fY29tcGFjdCAuYXQxNXRfY29tcGFj dHttYXJnaW4tcmlnaHQ6NHB4fS5hZGR0aGlzX2RlZmF1bHRfc3R5bGUgLmFkZHRo aXNfc2VwYXJhdG9ye21hcmdpbjowIDVweDtkaXNwbGF5OmlubGluZX1kaXYuYXRj bGVhcntjbGVhcjpib3RofS5hZGR0aGlzX2RlZmF1bHRfc3R5bGUgLmFkZHRoaXNf c2VwYXJhdG9yLC5hZGR0aGlzX2RlZmF1bHRfc3R5bGUgLmF0NC1pY29uLC5hZGR0 aGlzX2RlZmF1bHRfc3R5bGUgLmF0MzAwYiwuYWRkdGhpc19kZWZhdWx0X3N0eWxl IC5hdDMwMGJvLC5hZGR0aGlzX2RlZmF1bHRfc3R5bGUgLmF0MzAwYnMsLmFkZHRo aXNfZGVmYXVsdF9zdHlsZSAuYXQzMDBte2Zsb2F0OmxlZnR9LmF0MzAwYiBpbWcs LmF0MzAwYm8gaW1ne2JvcmRlcjowfWEuYXQzMDBiIC5hdDQtaWNvbixhLmF0MzAw bSAuYXQ0LWljb257ZGlzcGxheTpibG9ja30uYWRkdGhpc19kZWZhdWx0X3N0eWxl IC5hdDMwMGIsLmFkZHRoaXNfZGVmYXVsdF9zdHlsZSAuYXQzMDBibywuYWRkdGhp c19kZWZhdWx0X3N0eWxlIC5hdDMwMG17cGFkZGluZzowIDJweH0uYXQzMDBiLC5h dDMwMGJvLC5hdDMwMGJzLC5hdDMwMG17Y3Vyc29yOnBvaW50ZXJ9LmFkZHRoaXNf YnV0dG9uX2ZhY2Vib29rX2xpa2UuYXQzMDBiOmhvdmVyLC5hZGR0aGlzX2J1dHRv bl9mYWNlYm9va19saWtlLmF0MzAwYnM6aG92ZXIsLmFkZHRoaXNfYnV0dG9uX2Zh Y2Vib29rX3NlbmQuYXQzMDBiOmhvdmVyLC5hZGR0aGlzX2J1dHRvbl9mYWNlYm9v a19zZW5kLmF0MzAwYnM6aG92ZXJ7b3BhY2l0eToxfS5hZGR0aGlzXzIweDIwX3N0 eWxlIC5hdDE1dCwuYWRkdGhpc18yMHgyMF9zdHlsZSAuYXQzMDBic3tvdmVyZmxv dzpoaWRkZW47ZGlzcGxheTpibG9jaztoZWlnaHQ6MjBweCFpbXBvcnRhbnQ7d2lk dGg6MjBweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MjBweCFpbXBvcnRhbnR9LmFk ZHRoaXNfMzJ4MzJfc3R5bGUgLmF0MTV0LC5hZGR0aGlzXzMyeDMyX3N0eWxlIC5h dDMwMGJze292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO2hlaWdodDoycGMh aW1wb3J0YW50O3dpZHRoOjJwYyFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MnBjIWlt cG9ydGFudH0uYXQzMDBic3tvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9jazti YWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDtoZWlnaHQ6MXBjO3dpZHRoOjFwYztsaW5l LWhlaWdodDoxcGMhaW1wb3J0YW50fS5hZGR0aGlzX2RlZmF1bHRfc3R5bGUgLmF0 MTV0X2NvbXBhY3QsLmFkZHRoaXNfZGVmYXVsdF9zdHlsZSAuYXQxNXRfZXhwYW5k ZWR7bWFyZ2luLXJpZ2h0OjRweH0jYXRfc2hhcmUgLmF0X2l0ZW17d2lkdGg6MTIz cHghaW1wb3J0YW50O3BhZGRpbmc6NHB4O21hcmdpbi1yaWdodDoycHg7Ym9yZGVy OjFweCBzb2xpZCAjZmZmfSNhdDE2cHtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdl L3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFvQUFBQUtDQVlB QUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkps WVdSNWNjbGxQQUFBQUJ0SlJFRlVlTnBpWkdCZ2FHQWdBakF4RUFsR0ZWSkhJVUNB QVFEY25nQ1VncUdNcXdBQUFBQkpSVTVFcmtKZ2dnPT0pO3otaW5kZXg6MTAwMDAw MDE7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt3aWR0aDozMDBw eDtwYWRkaW5nOjEwcHg7bWFyZ2luOjAgYXV0bzttYXJnaW4tdG9wOi0xODVweDtt YXJnaW4tbGVmdDotMTU1cHg7Zm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHRh aG9tYSx2ZXJkYW5hLHNhbnMtc2VyaWY7Zm9udC1zaXplOjlwdDtjb2xvcjojNWU1 ZTVlfSNhdF9zaGFyZXttYXJnaW46MDtwYWRkaW5nOjB9I2F0MTZwdHtwb3NpdGlv bjpyZWxhdGl2ZTtiYWNrZ3JvdW5kOiNmMmYyZjI7aGVpZ2h0OjEzcHg7cGFkZGlu Zzo1cHggMTBweH0jYXQxNnB0IGEsI2F0MTZwdCBoNHtmb250LXdlaWdodDo3MDB9 I2F0MTZwdCBoNHtkaXNwbGF5OmlubGluZTttYXJnaW46MDtwYWRkaW5nOjA7Zm9u dC1zaXplOjlwdDtjb2xvcjojNGM0YzRjO2N1cnNvcjpkZWZhdWx0fSNhdDE2cHQg YXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NXB4O3JpZ2h0OjEwcHg7Y29sb3I6IzRj NGM0Yzt0ZXh0LWRlY29yYXRpb246bm9uZTtwYWRkaW5nOjJweH0jYXQxNXNwdHg6 Zm9jdXMsI2F0MTZwdCBhOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWR9I2F0MTVz ICNhdDE2cGYgYXt0b3A6MXB4fSNfYXRzc2h7d2lkdGg6MXB4IWltcG9ydGFudDto ZWlnaHQ6MXB4IWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnR9LmF0bXt3aWR0 aDoxMHBjIWltcG9ydGFudDtwYWRkaW5nOjA7bWFyZ2luOjA7bGluZS1oZWlnaHQ6 OXB0O2xldHRlci1zcGFjaW5nOm5vcm1hbDtmb250LWZhbWlseTphcmlhbCxoZWx2 ZXRpY2EsdGFob21hLHZlcmRhbmEsc2Fucy1zZXJpZjtmb250LXNpemU6OXB0O2Nv bG9yOiM0NDQ7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlW Qk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBb0FBQUFLQ0FZQUFBQ05Ncys5QUFBQUdY UkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFC dEpSRUZVZU5waVpHQmdhR0FnQWpBeEVBbEdGVkpISVVDQUFRRGNuZ0NVZ3FHTXF3 QUFBQUJKUlU1RXJrSmdnZz09KTtwYWRkaW5nOjRweH0uYXRtLWZ7dGV4dC1hbGln bjpyaWdodDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3BhZGRpbmc6NXB4IDhw eH0uYXRtLWl7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2Q1ZDZk NjtwYWRkaW5nOjA7bWFyZ2luOjA7Ym94LXNoYWRvdzoxcHggMXB4IDVweCByZ2Jh KDAsMCwwLC4xNSl9LmF0bS1ze21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAh aW1wb3J0YW50fS5hdG0tcyBhOmZvY3Vze2JvcmRlcjp0cmFuc3BhcmVudDtvdXRs aW5lOjA7dHJhbnNpdGlvbjpub25lfSNhdF9ob3Zlci5hdG0tcyBhLC5hdG0tcyBh e2Rpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cGFkZGluZzo0cHgg MTBweDtjb2xvcjojMjM1ZGFiIWltcG9ydGFudDtmb250LXdlaWdodDo0MDA7Zm9u dC1zdHlsZTpub3JtYWw7dHJhbnNpdGlvbjpub25lfSNhdF9ob3Zlci5hdG0tcyAu YXRfYm9sZHtjb2xvcjojMjM1ZGFiIWltcG9ydGFudH0jYXRfaG92ZXIuYXRtLXMg YTpob3ZlciwuYXRtLXMgYTpob3ZlcntiYWNrZ3JvdW5kOiMyMDk1ZjA7dGV4dC1k ZWNvcmF0aW9uOm5vbmU7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9I2F0X2hvdmVyLmF0 bS1zIC5hdF9ib2xke2ZvbnQtd2VpZ2h0OjcwMH0jYXRfaG92ZXIuYXRtLXMgYTpo b3ZlciAuYXRfYm9sZHtjb2xvcjojZmZmIWltcG9ydGFudH0uYXRtLXMgYSAuYXQt bGFiZWx7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1sZWZ0OjVweDtkaXJl Y3Rpb246bHRyfS5hdF9QaW5JdEJ1dHRvbntkaXNwbGF5OmJsb2NrO3dpZHRoOjQw cHg7aGVpZ2h0OjIwcHg7cGFkZGluZzowO21hcmdpbjowO2JhY2tncm91bmQtaW1h Z2U6dXJsKC8vczcuYWRkdGhpcy5jb20vc3RhdGljL3QwMC9waW5pdDAwLnBuZyk7 YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5hdF9QaW5JdEJ1dHRvbjpob3Zl cntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIwcHh9LmFkZHRoaXNfdG9vbGJveCAu YWRkdGhpc19idXR0b25fcGludGVyZXN0X3Bpbml0e3Bvc2l0aW9uOnJlbGF0aXZl fS5hdC1zaGFyZS10YngtZWxlbWVudCAuZmJfaWZyYW1lX3dpZGdldCBzcGFue3Zl cnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudH0jYXQxNnBme2hlaWdodDph dXRvO3RleHQtYWxpZ246cmlnaHQ7cGFkZGluZzo0cHggOHB4fS5hdC1wcml2YWN5 LWluZm97cG9zaXRpb246YWJzb2x1dGU7bGVmdDo3cHg7Ym90dG9tOjdweDtjdXJz b3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTpoZWx2 ZXRpY2EsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtsaW5lLWhlaWdo dDo5cHQ7bGV0dGVyLXNwYWNpbmc6LjJweDtjb2xvcjojNjY2fS5hdC1wcml2YWN5 LWluZm86aG92ZXJ7Y29sb3I6IzAwMH0uYm9keSAud3NiLXNvY2lhbC1zaGFyZSAu d3NiLXNvY2lhbC1zaGFyZS1idXR0b24tdmVydHtwYWRkaW5nLXRvcDowO3BhZGRp bmctYm90dG9tOjB9LmJvZHkgLndzYi1zb2NpYWwtc2hhcmUuYWRkdGhpc19jb3Vu dGVyX3N0eWxlIC5hZGR0aGlzX2J1dHRvbl90d2VldC53c2Itc29jaWFsLXNoYXJl LWJ1dHRvbntwYWRkaW5nLXRvcDo0MHB4fS5ib2R5IC53c2Itc29jaWFsLXNoYXJl LmFkZHRoaXNfY291bnRlcl9zdHlsZSAuYWRkdGhpc19idXR0b25fZ29vZ2xlX3Bs dXNvbmUud3NiLXNvY2lhbC1zaGFyZS1idXR0b257cGFkZGluZy10b3A6MH0uYm9k eSAud3NiLXNvY2lhbC1zaGFyZS5hZGR0aGlzX2NvdW50ZXJfc3R5bGUgLmFkZHRo aXNfYnV0dG9uX2ZhY2Vib29rX2xpa2Uud3NiLXNvY2lhbC1zaGFyZS1idXR0b257 cGFkZGluZy10b3A6MjFweH1AbWVkaWEgcHJpbnR7I2F0NC1mb2xsb3csI2F0NC1z aGFyZSwjYXQ0LXRoYW5reW91LCNhdDQtd2hhdHNuZXh0LCNhdDRtLW1vYmlsZSwj YXQxNXMsLmF0NCwuYXQ0LXJlY29tbWVuZGVke2Rpc3BsYXk6bm9uZSFpbXBvcnRh bnR9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDAwcHgpey5hdDR3aW57 d2lkdGg6MTAwJX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6NzAwcHgp IGFuZCAobWF4LXdpZHRoOjQwMHB4KXsuYXQ0LXRoYW5reW91LWlubmVyIC5hdDQt cmVjb21tZW5kZWQtY29udGFpbmVye2hlaWdodDoxMjJweDtvdmVyZmxvdzpoaWRk ZW59LmF0NC10aGFua3lvdS1pbm5lciAuYXQ0LXJlY29tbWVuZGVkIC5hdDQtcmVj b21tZW5kZWQtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItYm90dG9tOjFweCBzb2xp ZCAjYzVjNWM1fX0iLCIiXSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDcxMyk7 InN0cmluZyI9PXR5cGVvZiBhJiYoYT1bW2UuaWQsYSwiIl1dKTtuKDM0MSkoYSx7 fSk7YS5sb2NhbHMmJihlLmV4cG9ydHM9YS5sb2NhbHMpfSxmdW5jdGlvbihlLHQs bil7dD1lLmV4cG9ydHM9bigzNDApKCksdC5wdXNoKFtlLmlkLCcuYXQtYnJhbmRp bmctbG9nb3tmb250LWZhbWlseTpoZWx2ZXRpY2EsYXJpYWwsc2Fucy1zZXJpZjt0 ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTBweDtkaXNwbGF5OmlubGlu ZS1ibG9jazttYXJnaW46MnB4IDA7bGV0dGVyLXNwYWNpbmc6LjJweH0uYXQtYnJh bmRpbmctbG9nbyAuYXQtYnJhbmRpbmctaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVy bCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB QUFBb0FBQUFLQ0FNQUFBQzY3RCtQQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5 aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFBWlFURlJGLy8vLytHbE5Va2NjMVFB QUFCMUpSRUZVZU5waVlJUURCalFtQXdNbWt3RU0wSm5ZMVdJeEZ5REFBQkdlQUZF dWRpWnNBQUFBQUVsRlRrU3VRbUNDIil9LmF0LWJyYW5kaW5nLWxvZ28gLmF0LWJy YW5kaW5nLWljb24sLmF0LWJyYW5kaW5nLWxvZ28gLmF0LXByaXZhY3ktaWNvbntk aXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTBweDt3aWR0aDoxMHB4O21hcmdp bi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6M3B4O21hcmdpbi1ib3R0b206LTFweDti YWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LmF0LWJyYW5kaW5nLWxvZ28gLmF0 LXByaXZhY3ktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9w bmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBa0FBQUFLQ0FNQUFB QlIyNFNNQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlX UjVjY2xsUEFBQUFCaFFURlJGOGZyOW90L3hYY2ZuMi9QNUFLdmEvLy8vLy8vL0FL VFdvZGpoakFBQUFBZDBVazVULy8vLy8vLy9BQnBMQTBZQUFBQTZTVVJCVkhqYUpN ekJEUUF3Q0FKQVFhajdiOXhpZlYwa1VLSjljaVd4bHpXRVdJNWdNRjY1S1VUdjBW S2tqVmVUZXJxRS94Nys5QlZnQUVYYkFXSThRRGNmQUFBQUFFbEZUa1N1UW1DQyIp fS5hdC1icmFuZGluZy1sb2dvIHNwYW57dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmF0 LWJyYW5kaW5nLWxvZ28gLmF0LWJyYW5kaW5nLWFkZHRoaXMsLmF0LWJyYW5kaW5n LWxvZ28gLmF0LWJyYW5kaW5nLXBvd2VyZWQtYnl7Y29sb3I6IzY2Nn0uYXQtYnJh bmRpbmctbG9nbyAuYXQtYnJhbmRpbmctYWRkdGhpczpob3Zlcntjb2xvcjojMzMz fS5hdC1jdi13aXRoLWltYWdlIC5hdC1icmFuZGluZy1hZGR0aGlzLC5hdC1jdi13 aXRoLWltYWdlIC5hdC1icmFuZGluZy1hZGR0aGlzOmhvdmVye2NvbG9yOiNmZmZ9 YS5hdC1icmFuZGluZy1sb2dvOnZpc2l0ZWR7Y29sb3I6aW5pdGlhbH0uYXQtYnJh bmRpbmctaW5mb3tkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjAgNXB4O2Nv bG9yOiM2NjY7Ym9yZGVyOjFweCBzb2xpZCAjNjY2O2JvcmRlci1yYWRpdXM6NTAl O2ZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjlwdDtvcGFjaXR5Oi43O3RyYW5z aXRpb246YWxsIC4zcyBlYXNlO3RleHQtZGVjb3JhdGlvbjpub25lfS5hdC1icmFu ZGluZy1pbmZvIHNwYW57Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdo dDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3Np dGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LmF0LWJyYW5kaW5nLWluZm86YmVmb3Jl e2NvbnRlbnQ6XCdpXCc7Zm9udC1mYW1pbHk6VGltZXMgTmV3IFJvbWFufS5hdC1i cmFuZGluZy1pbmZvOmhvdmVye2NvbG9yOiMwNzgwZGY7Ym9yZGVyLWNvbG9yOiMw NzgwZGZ9JywiIl0pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0 aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1 bmN0aW9uIGkoZSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe3Jl dHVybiBudWxsfX1mdW5jdGlvbiBvKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShl KX1mdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lKXJldHVybiExO3ZhciB0PWUuZXhw aXJlcztyZXR1cm4gbS5kZWZhdWx0KCktbmV3IERhdGUodCkuZ2V0VGltZSgpPGd9 ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLnZhbHVlO3JldHVybiB0PT09ITF9dC5fX2Vz TW9kdWxlPSEwO3ZhciBkPW4oNzE1KSx1PWEoZCksYz1uKDcxNyksbD1hKGMpLGY9 big3MTgpLHA9YShmKSxoPW4oNzE5KSxtPWEoaCksZz0xOGU1LF89e2dldFZhbHVl OmZ1bmN0aW9uKCl7dmFyIGU9aSh1LmRlZmF1bHQuZ2V0KCJjd3ciKSksdD1yKGUp JiZzKGUpO3JldHVybiBsLmRlZmF1bHQoKT80OnQ/MjpwLmRlZmF1bHQoKT8xOjB9 LHN0YXJ0OmZ1bmN0aW9uKGUpe2Uub24oImFkZHRoaXMtaW50ZXJuYWwuY29va2ll LnN0YXR1cyIsZnVuY3Rpb24oZSl7dmFyIHQ9e3ZhbHVlOkJvb2xlYW4oZS5kYXRh LmNvb2tpYWJsZSksZXhwaXJlczptLmRlZmF1bHQoKStnfTt1LmRlZmF1bHQuYWRk KCJjd3ciLG8odCkpfSl9fTt0LmRlZmF1bHQ9XyxlLmV4cG9ydHM9dC5kZWZhdWx0 fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gYShlKXtpZihsKXJldHVybiBmLmxv Y2FsU3RvcmFnZS5nZXRJdGVtKHArZSl9ZnVuY3Rpb24gaShlLHQpe2lmKGwpe3Zh ciBuPXArZTt0cnl7Zi5sb2NhbFN0b3JhZ2Vbbl09dH1jYXRjaChlKXtpZigiUVVP VEFfRVhDRUVERURfRVJSIj09PWUubmFtZSl7ZCgpO3RyeXtmLmxvY2FsU3RvcmFn ZVtuXT10fWNhdGNoKGUpe319fX19ZnVuY3Rpb24gbyhlKXtpZihlJiYiZnVuY3Rp b24iPT10eXBlb2YgZSlmb3IodmFyIHQgaW4gZi5sb2NhbFN0b3JhZ2UpZi5sb2Nh bFN0b3JhZ2UuaGFzT3duUHJvcGVydHkodCkmJmUodCxmLmxvY2FsU3RvcmFnZVt0 XSl9ZnVuY3Rpb24gcihlKXt2YXIgdD17fTtpZihsKXJldHVybiBvKGZ1bmN0aW9u KG4sYSl7biYmbi5pbmRleE9mJiYwPT09bi5pbmRleE9mKHArKGV8fCIiKSkmJih0 W25dPWEpfSksdH1mdW5jdGlvbiBzKGUpe3ZhciB0PTA7cmV0dXJuIG8oZnVuY3Rp b24obil7biYmbi5pbmRleE9mJiYwPT09bi5pbmRleE9mKHArKGV8fCIiKSkmJnQr K30pLHQ+MH1mdW5jdGlvbiBkKCl7byhmdW5jdGlvbihlKXswPT09ZS5pbmRleE9m KHApJiZmLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpfSl9ZnVuY3Rpb24gdShl KXt2YXIgdD1yKCk7T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbih0KXsw PT09dC5pbmRleE9mKHArZSkmJmYubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odCl9 KX1mdW5jdGlvbiBjKGUpe2wmJmYubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSl9 dmFyIGw9big3MTYpLGY9d2luZG93LHA9Il9hdC4iO2UuZXhwb3J0cz17Z2V0QWxs OnIscmVtb3ZlQWxsOmQsYWRkOmksZ2V0OmEscmVtb3ZlOmMsZXhpc3RzOnMscmVt b3ZlQnlQcmVmaXg6dX19LGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oKXt0 cnl7dmFyIGU9ImFkZHRoaXMtdGVzdCIsdD13aW5kb3cubG9jYWxTdG9yYWdlO3Jl dHVybiB0LnNldEl0ZW0oZSwiMSIpLHQucmVtb3ZlSXRlbShlKSxudWxsIT10fWNh dGNoKGUpe3JldHVybiExfX0oKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtl LmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLmRvTm90VHJhY2sm JiJ1bnNwZWNpZmllZCIhPT1uYXZpZ2F0b3IuZG9Ob3RUcmFjayYmIm5vIiE9PW5h dmlnYXRvci5kb05vdFRyYWNrJiYiMCIhPW5hdmlnYXRvci5kb05vdFRyYWNrfX0s ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7dmFyIGU9 YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP2kuZGg6 YXJndW1lbnRzWzBdO3JldHVybiBlLmluZGV4T2YoIi5nb3YiKT4tMXx8ZS5pbmRl eE9mKCIubWlsIik+LTF9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1hO3ZhciBp PW4oNjMpO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7InVzZSBz dHJpY3QiO2Z1bmN0aW9uIG4oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX1l LmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3c/RGF0ZS5ub3coKTpu KCl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSx0 KXt2YXIgbj10Lm9uY2UsYT12b2lkIDAhPT1uJiZuOyFpLm1hcmtlclN1cHBvcnQo KXx8YSYmb1tlXXx8KG9bZV09ITAscGVyZm9ybWFuY2UubWFyaygiYWRkdGhpcy4i K2UpKX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWE7dmFyIGk9big3MjEpO2Fk ZHRoaXMucGVyZk1hcmtlcnN8fChhZGR0aGlzLnBlcmZNYXJrZXJzPXt9KTt2YXIg bz1hZGR0aGlzLnBlcmZNYXJrZXJzO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0 aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtyZXR1cm4gd2luZG93 LnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlIGluc3Rh bmNlb2YgRnVuY3Rpb259ZnVuY3Rpb24gYSgpe3JldHVybiBuKCkmJnBlcmZvcm1h bmNlLm1hcmsgaW5zdGFuY2VvZiBGdW5jdGlvbn10Ll9fZXNNb2R1bGU9ITAsdC5i YXNpY1N1cHBvcnQ9bix0Lm1hcmtlclN1cHBvcnQ9YX0sZnVuY3Rpb24oZSx0KXsi dXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe312YXIgYT17c21sOjEsc21sbW86MSxz bWxzaDoxLHNtbGZ3OjEsc21scmU6MSxzbWx3bjoxLHNtbHdybjoxLHNtbHJlYjox LHNtbHJlYmg6MSxzbWxyZWJ2OjEsc21sdHk6MSxjb2Q6MSxqc2M6MSx3bm06MSxp c3Q6MX0saT1be25hbWU6InBlci0xIixmZWVkOlsidmlld3NybmQiXSx2ZWN0b3I6 W10saXNQcm9DZWxsOiExfSx7bmFtZToicGVyLTIiLGZlZWQ6WyJ2aWV3czIiXSx2 ZWN0b3I6W10saXNQcm9DZWxsOiEwfSx7bmFtZToicGVyLTMiLGZlZWQ6WyJ2aWV3 czIiXSx2ZWN0b3I6WyJ1cmwiXSxpc1Byb0NlbGw6ITB9LHtuYW1lOiJwZXItNCIs ZmVlZDpbInZpZXdzMiJdLHZlY3RvcjpbImNsdXN0ZXJzIl0saXNQcm9DZWxsOiEw fSx7bmFtZToicGVyLTExIixmZWVkOlsidmlld3NjZiJdLHZlY3RvcjpbXSxpc1By b0NlbGw6ITF9LHtuYW1lOiJwZXItMTIiLGZlZWQ6WyJ2aWV3czIiXSx2ZWN0b3I6 WyJjbHVzdGVyczIiXSxpc1Byb0NlbGw6ITB9LHtuYW1lOiJwZXItMTMiLGZlZWQ6 WyJ2aWV3czIiXSx2ZWN0b3I6WyJjbHVzdGVyczIiLCJ1cmwiXSxpc1Byb0NlbGw6 ITF9LHtuYW1lOiJwZXItMTUiLGZlZWQ6WyJjb250cm9sZmVlZCJdLHZlY3Rvcjpb XSxpc1Byb0NlbGw6ITF9XTtuLnByb3RvdHlwZT17Z2V0Q29uZmlnOmZ1bmN0aW9u KGUpe2lmKCFlfHwhZS5fZGVmYXVsdHx8IWUuX2RlZmF1bHQud2lkZ2V0cylyZXR1 cm57fTtmb3IodmFyIHQgaW4gZS5fZGVmYXVsdC53aWRnZXRzKWlmKGFbdF0pcmV0 dXJuIGk7cmV0dXJue319fSxlLmV4cG9ydHM9bmV3IG59LGZ1bmN0aW9uKGUsdCxu KXsidXNlIHN0cmljdCI7dmFyIGE9bigxMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUs dCl7dmFyIG4saSxvLHI9MCxzPVtdO2lmKGUmJmUubGVuZ3RoKXt0cnl7Zm9yKDsr K3I8ZS5sZW5ndGg7KWlmKG49ZVtyXSwoIXR8fHQmJm4uaXNQcm9DZWxsKSYmcy5w dXNoKG4pLG89ImFiPSIrbi5uYW1lKyIoJnwkKSIsZG9jdW1lbnQubG9jYXRpb24u aGFzaC5tYXRjaChvKSl7aT1uO2JyZWFrfWl8fChpPXNbfn4oTWF0aC5yYW5kb20o KSpzLmxlbmd0aCldKX1jYXRjaChlKXthLmVycm9yKGUpfXJldHVybiBpfX19LGZ1 bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXt0cnl7aWYo MT09PWUubm9kZVR5cGUpcmV0dXJuITF9Y2F0Y2goZSl7fXJldHVybiEwfWZ1bmN0 aW9uIGkoZSx0KXsiKiI9PT10P3IuZXJyb3IoIkNhbid0IHVzZSAqIGFzIGEgdGFy Z2V0IG9yaWdpbiIpOnQ/ZXx8ci5lcnJvcigiTmVlZCB0byBwcm92aWRlIGFuIGlm cmFtZSIpOnIuZXJyb3IoIk5lZWQgdG8gcHJvdmlkZSBhIHRhcmdldCBvcmlnaW4i KSxhKGUpPyh0aGlzLl9pZnJhbWU9bnVsbCx0aGlzLl90YXJnZXRXaW5kb3c9ZSx0 aGlzLl9yZWFkeT0hMCx0aGlzLl9pbnRlcnZhbD1udWxsKToodGhpcy5faWZyYW1l PWUsdGhpcy5fdGFyZ2V0V2luZG93PW51bGwsdGhpcy5fcmVhZHk9ITEsdGhpcy5f aW50ZXJ2YWw9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtudWxsIT09dGhpcy5faWZy YW1lLmNvbnRlbnRXaW5kb3cmJih0aGlzLl90YXJnZXRXaW5kb3c9dGhpcy5faWZy YW1lLmNvbnRlbnRXaW5kb3csdGhpcy5fcmVhZHk9ITAsc2V0VGltZW91dCh0aGlz Ll9kcmFpblF1ZXVlLmJpbmQodGhpcykpLGNsZWFySW50ZXJ2YWwodGhpcy5faW50 ZXJ2YWwpLHRoaXMuX2ludGVydmFsPW51bGwpfS5iaW5kKHRoaXMpLDApKSx0aGlz Ll90YXJnZXRPcmlnaW49dCx0aGlzLl9xdWV1ZT1bXX12YXIgbz1uKDU1Mikscj1u KDEzKTtpLnByb3RvdHlwZT17cG9zdDpmdW5jdGlvbihlKXtvJiYodGhpcy5fcmVh ZHkmJnZvaWQgMCE9PXRoaXMuX3RhcmdldFdpbmRvdyYmIltvYmplY3QgRnVuY3Rp b25dIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzLl90YXJn ZXRXaW5kb3cucG9zdE1lc3NhZ2UpP3RoaXMuX3RhcmdldFdpbmRvdy5wb3N0TWVz c2FnZShlLHRoaXMuX3RhcmdldE9yaWdpbik6dGhpcy5fcXVldWUucHVzaChlKSl9 LF9kcmFpblF1ZXVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXRoaXMuX3JlYWR5KXRo cm93IG5ldyBFcnJvcigiQ2Fubm90IGRyYWluIHF1ZXVlIGJlZm9yZSBwb3N0bWFu IGlzIHJlYWR5ISIpO2ZvcihlPXRoaXMuX3F1ZXVlLnBvcCgpO2U7KXRoaXMucG9z dChlKSxlPXRoaXMuX3F1ZXVlLnBvcCgpfX0sZS5leHBvcnRzPWl9LGZ1bmN0aW9u KGUsdCxuKXtmdW5jdGlvbiBhKGUsdCxuKXt2YXIgbz10aGlzLHI9bmV3IGkobyk7 dD10fHwiIixyLmRlY29yYXRlKHIpLmRlY29yYXRlKG8pLHRoaXMuY2FsbGJhY2tz PVtdLHRoaXMucmVhZHk9ITEsdGhpcy5sb2FkaW5nPSExLHRoaXMuaWQ9ZSx0aGlz LnVybD10LCJmdW5jdGlvbiI9PXR5cGVvZiBuP3RoaXMudGVzdD1uOiJ1bmRlZmlu ZWQiPT10eXBlb2Ygbj90aGlzLnRlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4hMH06dGhp cy50ZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBfd2luZG93 JiZfd2luZG93W25dfSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9u KGUpe3ZhciB0PWUuZGF0YT9lLmRhdGEucmVzb3VyY2U6bnVsbDt0JiZ0LmlkPT09 by5pZCYmby5sb2FkaW5nJiYoby5sb2FkaW5nPSExLG8ucmVhZHk9ITAsci5maXJl KGUudHlwZSx0LHtyZXNvdXJjZTp0fSkpfSl9dmFyIGk9big3MjYpLkV2ZW50RGlz cGF0Y2hlcixvPW4oNzI4KSxyPW4oNTU0KSxzPWRvY3VtZW50LGQ9d2luZG93LmFk ZHRoaXNfY29uZmlnfHx7fSx1PVtdO2UuZXhwb3J0cz1hLGEucHJvdG90eXBlLmxv YWQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHUsYz1kLnVpX3VzZV9jc3MhPT0hMTtp ZihlIGluc3RhbmNlb2YgRnVuY3Rpb24mJnRoaXMuY2FsbGJhY2tzLnB1c2goZSks dGhpcy5sb2FkaW5nKXJldHVybiAxO2lmKCIuY3NzIj09PXRoaXMudXJsLnN1YnN0 cih0aGlzLnVybC5sZW5ndGgtNCkpe2lmKGMpe2ZvcihuPXMuZ2V0RWxlbWVudHNC eVRhZ05hbWUoImxpbmsiKSx1PW4ubGVuZ3RoLTE7dT49MDt1LS0paWYoInN0eWxl c2hlZXQiPT09blt1XS5yZWwmJm8oblt1XS5ocmVmKT09PW8odGhpcy51cmwpKXtp PW5bdV07YnJlYWt9aXx8KHQ9cy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIp WzBdfHxzLmRvY3VtZW50RWxlbWVudCxpPXMuY3JlYXRlRWxlbWVudCgibGluayIp LGkucmVsPSJzdHlsZXNoZWV0IixpLnR5cGU9InRleHQvY3NzIixpLmhyZWY9dGhp cy51cmwsaS5tZWRpYT0ibm9uLWV4aXN0YW50LW1lZGlhIix0LmFwcGVuZENoaWxk KGksdC5maXJzdENoaWxkKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5tZWRpYT0i YWxsIn0pKX19ZWxzZSBpPXIodGhpcy51cmwsMSk7cmV0dXJuIHRoaXMubG9hZGlu Zz0hMCxhLm1vbml0b3IodGhpcyksaX0sYS5sb2FkaW5nPXUsYS5tb25pdG9yPWZ1 bmN0aW9uIGUodCl7dmFyIG4saSxvO2Zvcih0JiZ0IGluc3RhbmNlb2YgYSYmdS5w dXNoKHQpLG49MDtuPHUubGVuZ3RoOylpZihvPXVbbl0sbyYmby50ZXN0KCkpZm9y KHUuc3BsaWNlKG4sMSksYS5maXJlKCJsb2FkIixvLHtyZXNvdXJjZTpvfSksaT0w O2k8by5jYWxsYmFja3MubGVuZ3RoO2krKylvLmNhbGxiYWNrc1tpXSgpO2Vsc2Ug bisrO3UubGVuZ3RoJiZzZXRUaW1lb3V0KGUsMjUpfTt2YXIgYz1uZXcgaShhKTtj LmRlY29yYXRlKGMpLmRlY29yYXRlKGEpfSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rp b24gYShlLHQsbixhLGkpe3RoaXMudHlwZT1lLHRoaXMudHJpZ2dlclR5cGU9dHx8 ZSx0aGlzLnRhcmdldD1udWxsPT09bj9uOm58fGEsdGhpcy50cmlnZ2VyVGFyZ2V0 PWF8fG4sdGhpcy5kYXRhPWl8fHt9LHRoaXMuc2VyaWFsaXplPWZ1bmN0aW9uKCl7 aWYoaCl7dmFyIGU9bSh7fSx0aGlzLmRhdGEpO3JldHVybiBlLmVsZW1lbnQ9bnVs bCxKU09OLnN0cmluZ2lmeSh7cmVtb3RlRXZlbnQ6e2RhdGE6ZSx0eXBlOnRoaXMu dHlwZSx0cmlnZ2VyVHlwZTp0aGlzLnRyaWdnZXJUeXBlLHRhcmdldDp7fSx0cmln Z2VyVGFyZ2V0Ont9fX0pfXJldHVybiIifX1mdW5jdGlvbiBpKGUsdCl7dGhpcy50 YXJnZXQ9ZSx0aGlzLnF1ZXVlcz17fSx0aGlzLnJlbW90ZURpc3BhdGNoZXI9bnVs bCx0aGlzLnJlbW90ZUZpbHRlcj1udWxsLHRoaXMuZGVmYXVsdEV2ZW50VHlwZT10 fHxhfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5xdWV1ZXM7cmV0dXJuIHRbZV18 fCh0W2VdPVtdKSx0W2VdfWZ1bmN0aW9uIHIoZSx0KXt0aGlzLmdldFF1ZXVlKGUp LnB1c2godCl9ZnVuY3Rpb24gcyhlLHQpe2UmJmUucG9zdE1lc3NhZ2UmJih0aGlz LnJlbW90ZURpc3BhdGNoZXI9ZSx0aGlzLnJlbW90ZUZpbHRlcj10KX1mdW5jdGlv biBkKGUsdCl7dGhpcy5maXJlZEV2ZW50cy5oYXNPd25Qcm9wZXJ0eShlKT90KHRo aXMuZmlyZWRFdmVudHNbZV0pOnRoaXMub25jZShlLHQpfWZ1bmN0aW9uIHUoZSx0 KXt2YXIgbj10aGlzLGE9ZnVuY3Rpb24oKXt2YXIgaT1BcnJheS5wcm90b3R5cGUu c2xpY2UuY2FsbChhcmd1bWVudHMsMCk7dC5hcHBseSh0aGlzLGkpLG4ucmVtb3Zl RXZlbnRMaXN0ZW5lcihlLGEpfTtuLmFkZEV2ZW50TGlzdGVuZXIoZSxhKX1mdW5j dGlvbiBjKGUsdCl7dmFyIG49dGhpcy5nZXRRdWV1ZShlKSxhPSJzdHJpbmciPT10 eXBlb2Ygbj9uLmluZGV4T2YodCk6LTE7YSE9PS0xJiZuLnNwbGljZShhLDEpfWZ1 bmN0aW9uIGwoZSx0LG4sYSl7dmFyIGk9dGhpczt0aGlzLmZpcmVkRXZlbnRzW2Vd fHwodGhpcy5maXJlZEV2ZW50c1tlXT1uKSxhP2kuZGlzcGF0Y2hFdmVudChuZXcg aS5kZWZhdWx0RXZlbnRUeXBlKGUsZSx0LGkudGFyZ2V0LG4pKTpzZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7aS5kaXNwYXRjaEV2ZW50KG5ldyBpLmRlZmF1bHRFdmVudFR5 cGUoZSxlLHQsaS50YXJnZXQsbikpfSl9ZnVuY3Rpb24gZihlKXt2YXIgdCxuPWUu dGFyZ2V0LGE9dGhpcy5nZXRRdWV1ZShlLnR5cGUpO2Zvcih0PTA7dDxhLmxlbmd0 aDt0Kyspbj9hW3RdLmNhbGwobixlLmNsb25lKCkpOmFbdF0oZS5jbG9uZSgpKTt0 cnl7IWh8fCF0aGlzLnJlbW90ZURpc3BhdGNoZXJ8fCJmdW5jdGlvbiIhPXR5cGVv ZiB0aGlzLnJlbW90ZURpc3BhdGNoZXIucG9zdE1lc3NhZ2V8fHRoaXMucmVtb3Rl RmlsdGVyJiYwIT09ZS50eXBlLmluZGV4T2YodGhpcy5yZW1vdGVGaWx0ZXIpfHx0 aGlzLnJlbW90ZURpc3BhdGNoZXIucG9zdE1lc3NhZ2UoZS5zZXJpYWxpemUoKSwi KiIpfWNhdGNoKGUpe319ZnVuY3Rpb24gcChlKXtpZihlKXtmb3IodmFyIHQgaW4g XylpZihfLmhhc093blByb3BlcnR5KHQpKXt2YXIgbj1fW3RdO24uYmluZCYmKGVb dF09bi5iaW5kKHRoaXMpKX1yZXR1cm4gZX19dmFyIGg9big3MjcpLG09big4KSxn PWZ1bmN0aW9uKCl7fSxfPXtmaXJlZEV2ZW50czp7fSxjb25zdHJ1Y3RvcjppLGdl dFF1ZXVlOm8sYWRkRXZlbnRMaXN0ZW5lcjpyLG9uY2U6dSxhZnRlcjpkLHJlbW92 ZUV2ZW50TGlzdGVuZXI6YyxvbjpyLG9mZjpjLGFkZFJlbW90ZURpc3BhdGNoZXI6 cyxkaXNwYXRjaEV2ZW50OmYsZmlyZTpsLGRlY29yYXRlOnB9LHY9e2NvbnN0cnVj dG9yOmEsYnViYmxlczohMSxwcmV2ZW50RGVmYXVsdDpnLHN0b3BQcm9wYWdhdGlv bjpnLGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9y KHRoaXMudHlwZSx0aGlzLnRyaWdnZXJUeXBlLHRoaXMudGFyZ2V0LHRoaXMudHJp Z2dlclRhcmdldCx0aGlzLmRhdGEgaW5zdGFuY2VvZiBFdmVudD90aGlzLmRhdGE6 bSh7fSx0aGlzLmRhdGEpKX19O2UuZXhwb3J0cz17UG9seUV2ZW50OmEsRXZlbnRE aXNwYXRjaGVyOml9LG0oYS5wcm90b3R5cGUsdiksbShpLnByb3RvdHlwZSxfKX0s ZnVuY3Rpb24oZSx0KXt2YXIgbj13aW5kb3cuSlNPTiYmImZ1bmN0aW9uIj09dHlw ZW9mIHdpbmRvdy5KU09OLnBhcnNlJiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93 LkpTT04uc3RyaW5naWZ5O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2UuZXhw b3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW2EtekEtWl0rOi8s IiIpfX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGEoZSl7ZSBpbnN0YW5jZW9m IEFycmF5fHwoZT1bZV0pO2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKysp e3ZhciBhPWVbbl07YSBpbnN0YW5jZW9mIGk/dC5wdXNoKGEpOihhPW5ldyBpKGEu bmFtZSxhLmhyZWZ8fGEudXJsfHwoKHdpbmRvdy5fYXRjfHx7fSkucnNyY3N8fHt9 KVthLm5hbWVdLGEudGVzdD9hLnRlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4hMH0pLHQu cHVzaChhKSl9cmV0dXJuIHR9dmFyIGk9big3MjUpLG89big3MjYpLkV2ZW50RGlz cGF0Y2hlcixyPW4oMTApO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPXRoaXMs dD1uZXcgbyhlKTt0LmRlY29yYXRlKHQpLmRlY29yYXRlKGUpLHRoaXMucmVzb3Vy Y2VzPWFyZ3VtZW50cy5sZW5ndGgmJmFyZ3VtZW50c1swXWluc3RhbmNlb2YgQXJy YXk/YXJndW1lbnRzWzBdOnIoYXJndW1lbnRzKSx0aGlzLndhaXRpbmc9dGhpcy5y ZXNvdXJjZXMubGVuZ3RoLHRoaXMubG9hZGluZz0hMSwhdGhpcy5yZXNvdXJjZXN8 fHRoaXMucmVzb3VyY2VzWzBdaW5zdGFuY2VvZiBpfHwodGhpcy5yZXNvdXJjZXM9 YSh0aGlzLnJlc291cmNlcykpLHRoaXMuY2hlY2tsb2FkPWZ1bmN0aW9uKCl7dGhp cy53YWl0aW5nLS0sMD09PXRoaXMud2FpdGluZyYmdC5maXJlKCJsb2FkIix0aGlz LnJlc291cmNlcyx7cmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzfSl9LHRoaXMuYWRk PWZ1bmN0aW9uKGUpe2UmJih0aGlzLndhaXRpbmcrKyx0aGlzLnJlc291cmNlcy5w dXNoKGUpKX0sdGhpcy5sb2FkPWZ1bmN0aW9uKCl7aWYoIXRoaXMubG9hZGluZyl7 Zm9yKHZhciB0PTA7dDx0aGlzLnJlc291cmNlcy5sZW5ndGg7dCsrKXRoaXMucmVz b3VyY2VzW3RdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHRoaXMuY2hlY2tsb2Fk LmJpbmQoZSkpLHRoaXMucmVzb3VyY2VzW3RdLmxvYWQoKTt0aGlzLmxvYWRpbmc9 ITB9fX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDMpLGk9big1OTIpO2UuZXhw b3J0cz1mdW5jdGlvbihlLHQsbixvLHIscyl7YShbImNsb3NlIixlLHQsbixvLHIs c10pLGkoKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDMpLGk9big1OTIpO2Uu ZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7YShbInNlbmQiLGUsdCxuXSksaSgpfX0s ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVy biBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCl7 ZS5zZXJ2aWNlc19leGNsdWRlKz0oZS5zZXJ2aWNlc19leGNsdWRlLmxlbmd0aD8i LCI6IiIpK3R9ZnVuY3Rpb24gbyhlKXtlLnNlcnZpY2VzX2V4Y2x1ZGU9ZS5zZXJ2 aWNlc19leGNsdWRlfHwiIiwhcy5kZWZhdWx0KCJtc2kiKXx8cy5kZWZhdWx0KCJp ZTExIil8fHMuZGVmYXVsdCgiaWUxMCIpfHxpKGUsInNsYWNrIikscy5kZWZhdWx0 KCJpcGEiKSYmaShlLCJwcmludCIpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9 bzt2YXIgcj1uKDUpLHM9YShyKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlv bihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD17dGg6MSxwbDoxLHNs OjEsZ2w6MSxodToxLGlzOjEsbmI6MSxzZToxLHN1OjEsc3c6MX07cmV0dXJuISF0 W2VdfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9 e2VuOiJlbi1VUyIsYXI6ImFyIixjYToiY2EiLHpoOiJ6aC1DTiIsaHI6ImhyIixj czoiY3MiLGRhOiJkYSIsbmw6Im5sIixldDoiZXQiLGZpOiJmaSIsZnI6ImZyIixk ZToiZGUiLGVsOiJlbCIsaGU6Iml3IixoaToiaGkiLGh1OiJodSIsaWQ6ImlkIixp dDoiaXQiLGphOiJqYSIsa286ImtvIixsdjoibHYiLGx0OiJsdCIsbXM6Im1zIixu bzoibm8iLGZhOiJmYSIscGw6InBsIixwdDoicHQtQlIiLHJvOiJybyIscnU6InJ1 Iixzcjoic3IiLHNrOiJzayIsc2w6InNsIixlczoiZXMiLHN2OiJzdiIsdGg6InRo Iix0cjoidHIiLHVrOiJ1ayIsdmk6InZpIn07cmV0dXJuIHRbZV18fG51bGx9fSxm dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxuKXt2YXIg aT0iIixvPTAscj0tMTtpZih2b2lkIDA9PT1uJiYobj0zMDApLGUmJihpPWUuc3Vi c3RyKDAsbiksaSE9PWUmJigocj1pLmxhc3RJbmRleE9mKCIlIikpPj1pLmxlbmd0 aC00JiYoaT1pLnN1YnN0cigwLHIpKSxpIT09ZSkpKXtmb3IodmFyIHMgaW4gYSlh W3NdIT09dHx8KG89MSk7b3x8YS5wdXNoKHQpfXJldHVybiBpfXZhciBhPVtdO2Uu ZXhwb3J0cz17dHJ1bmNhdGlvbkxpc3Q6YSx0cnVuY2F0ZVVSTDpufX0sZnVuY3Rp b24obW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uIGV2bChz cmMsc2NvcGUpe2lmKHNjb3BlKXt2YXIgZXZsO3JldHVybiBldmFsKCJldmwgPSAi K3NyYyksZXZsfXJldHVybiBldmFsKHNyYyl9fSxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO3ZhciBhPW4oMTEpLmFycmF5O2UuZXhwb3J0cz1mdW5jdGlvbihl LHQsbil7aWYoYShlKSl7dmFyIGk9ZS5sZW5ndGg7Zm9yKG49cGFyc2VJbnQobil8 fDAsbj1uPDA/aStuOm4sbj1uPDA/MDpuO248aTtuKyspaWYoZVtuXT09PXQpcmV0 dXJuIG47cmV0dXJuLTF9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rp b24oZSl7aWYobnVsbD09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXJldHVybiBlO2lm KGUgaW5zdGFuY2VvZiBPYmplY3Qpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWUu aGFzT3duUHJvcGVydHkobikmJih0Kz0odC5sZW5ndGg+MD8iLCI6IiIpK2Vbbl0p O3JldHVybiB0fXJldHVybiBudWxsfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9 ZnVuY3Rpb24oZSx0KXt2YXIgbj13aW5kb3c7bi5hZGR0aGlzX3NoYXJlfHwobi5h ZGR0aGlzX3NoYXJlPXt9KSwodHx8ZSE9PWFkZHRoaXNfc2hhcmUudXJsKSYmKGFk ZHRoaXNfc2hhcmUuaW1wX3VybD0wKX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlv biBhKCl7az0wLHc9e30seT1bXX1mdW5jdGlvbiBpKGUpe3JldHVybiBlPm0uaGln aD8zOmU+bS5tZWQ/MjoxfWZ1bmN0aW9uIG8oKXt2YXIgZSx0PVtdO3MoKTtmb3Io ZSBpbiB3KXQucHVzaCh7bmFtZTplLHNjb3JlOmkod1tlXSl9KTtyZXR1cm4gdC5z b3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2NvcmU+dC5zY29yZT8xOi0xfSks dH1mdW5jdGlvbiByKCl7cygpO3ZhciBlLHQ9e307Zm9yKGUgaW4gdyl0W2VdPWko d1tlXSk7cmV0dXJuIHR9ZnVuY3Rpb24gcygpe3ZhciBlLHQ7aWYoIWspe3ZhciBl LG4sYSxpLG89KGgucmNrKGIpfHwiIikuc3BsaXQoIiwiKTtmb3IoZT0wLHQ9by5s ZW5ndGg7ZTx0O2UrKyluPW9bZV0uc3BsaXQoIjsiKSxhPW4ucG9wKCksaT1uLnBv cCgpfHwiIix3W2ldPWEseS5wdXNoKGkpLGE+QyYmKEM9YSxwPWkpO2s9MX19ZnVu Y3Rpb24gZChlKXtyZXR1cm4gdy5oYXNPd25Qcm9wZXJ0eShlKX1mdW5jdGlvbiB1 KCl7Zm9yKHZhciBlLHQ9ITEsbj0oaC5yY2soInNzaHMiKXx8IiIpLnNwbGl0KCIs Iik7dD09PSExJiYwIT09bi5sZW5ndGg7KWU9bi5wb3AoKSx3Lmhhc093blByb3Bl cnR5KGUpJiZ3W2VdPT1NYXRoLm1pbih3KSYmKHQ9ZSk7dD09PSExJiYodD15LnBv cCgpKSxkZWxldGUgd1t0XX1mdW5jdGlvbiBjKCl7dmFyIGUsdD17fSxuPVtdO2Zv cihlIGluIHcpdy5oYXNPd25Qcm9wZXJ0eShlKSYmd1tlXS8yPj0xJiYodFtlXT1w YXJzZUludCh3W2VdLzIpLG4ucHVzaChlKSk7dz10LHk9bn1mdW5jdGlvbiBsKGUp e2lmKHMoKSwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuITE7aWYoZT1lLnJlcGxh Y2UoL19bYS16QS1aMC05XSovaSwiIikseD09PSExKXt4PSEwLHkubGVuZ3RoKzE+ PV8mJiFkKGUpJiZ1KCksZChlKT93W2VdKys6d1tlXT0iMSIsd1tlXT49diYmYygp O3ZhciB0PWYodyk7aC5zY2soYixlc2NhcGUodCksITEsIWcpfX1mdW5jdGlvbiBm KGUpe3ZhciB0LG4sYT1bXTtpZigib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuITE7 Zm9yKG4gaW4gZSluLmxlbmd0aD4xJiZhLnB1c2gobisiOyIrZVtuXSk7cmV0dXJu IHQ9YS5qb2luKCIsIil9dmFyIHAsaD1uKDU3KSxtPXtoaWdoOjQsbWVkOjJ9LGc9 ZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIuYWRkdGhpcy5jb20iLnN1 YnN0cigxKSk+LTEsXz0xMCx2PTIwLGI9KGc/IiI6Il9fYXQiKSsic3NjIix3PXt9 LHg9ITEseT1bXSxrPTAsQz0wO2UuZXhwb3J0cz17cmVzZXQ6YSxnZXQ6cixnZXRT ZXJ2aWNlczpvLHVwZGF0ZTpsfX0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGEo KXtyZXR1cm4gZy5qb2luKGgpfWZ1bmN0aW9uIGkoKXtpZighbSl7dmFyIGU9Yy5y Y2socCl8fCIiO2UmJihnPWwoZSkuc3BsaXQoaCkpLG09MX19ZnVuY3Rpb24gbygp e2koKSxnLmxlbmd0aCYmYy5zY2socCxmKGEoKSksMCwhMCl9ZnVuY3Rpb24gcigp e3JldHVybiBpKCksZ31mdW5jdGlvbiBzKGUpe2koKSwic3RyaW5nIj09dHlwZW9m IGUmJihlPVtlXSk7Zm9yKHZhciB0PTA7dDxnLmxlbmd0aDt0KyspZm9yKHZhciBu PTA7bjxlLmxlbmd0aDtuKyspaWYoZ1t0XT09PWVbbl0pcmV0dXJuO2Zvcih2YXIg bj0wO248ZS5sZW5ndGg7bisrKWcucHVzaChlW25dKTtvKCl9ZnVuY3Rpb24gZChl KXtmb3IodmFyIHQ9MDt0PGcubGVuZ3RoO3QrKylpZihnW3RdPT09ZSl7Zy5zcGxp Y2UodCwxKTticmVha31vKCl9ZnVuY3Rpb24gdSgpe2c9W119dmFyIGM9big1Nyk7 ZS5leHBvcnRzPXtyZXNldDp1LGFkZDpzLHJlbW92ZTpkLGdldDpyLHRvS1Y6YX07 dmFyIGw9d2luZG93LmRlY29kZVVSSUNvbXBvbmVudCxmPXdpbmRvdy5lbmNvZGVV UklDb21wb25lbnQscD0iX19hdHRhZyIsaD0iLCIsbT0wLGc9W119LGZ1bmN0aW9u KGUsdCl7dmFyIG49W10sYT17fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIg aSxvPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2lmKHQ9dHx8e30sdC5jYWNoZUR1cmF0 aW9uPXZvaWQgMCE9PXQuY2FjaGVEdXJhdGlvbj90LmNhY2hlRHVyYXRpb246M2Uz LCFlKXJldHVybiExO2lmKGUuc2Nyb2xsQ2hlY2tJRCl7aWYoaT1lLnNjcm9sbENo ZWNrSUQsIShvLW5baV0+dC5jYWNoZUR1cmF0aW9uKSlyZXR1cm4gYVtpXTtuW2ld PW99ZWxzZSBlLnNjcm9sbENoZWNrSUQ9bi5sZW5ndGgsbltuLmxlbmd0aF09byxp PWUuc2Nyb2xsQ2hlY2tJRDt2YXIgcj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp LHM9e3RvcDowLGxlZnQ6MCxib3R0b206d2luZG93LmlubmVySGVpZ2h0fHxkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LHJpZ2h0OndpbmRvdy5p bm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh9 LGQ9MCx1PU1hdGgubWF4KHIudG9wLHMudG9wKSxjPU1hdGgubWluKHIuYm90dG9t LHMuYm90dG9tKSxsPU1hdGgubWF4KHIubGVmdCxzLmxlZnQpLGY9TWF0aC5taW4o ci5yaWdodCxzLnJpZ2h0KSxwPShyLnJpZ2h0LXIubGVmdCkqKHIuYm90dG9tLXIu dG9wKTtyZXR1cm4gZD1jPnUmJmY+bD8oYy11KSooZi1sKTowLGFbaV09ZC9wLGFb aV19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBu LGEsaSxvLHIscyxkLHU7Zm9yKG49MyZlLmxlbmd0aCxhPWUubGVuZ3RoLW4saT10 LHI9MzQzMjkxODM1MyxzPTQ2MTg0NTkwNyx1PTA7dTxhOylkPTI1NSZlLmNoYXJD b2RlQXQodSl8KDI1NSZlLmNoYXJDb2RlQXQoKyt1KSk8PDh8KDI1NSZlLmNoYXJD b2RlQXQoKyt1KSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrdSkpPDwyNCwrK3Us ZD0oNjU1MzUmZCkqcisoKChkPj4+MTYpKnImNjU1MzUpPDwxNikmNDI5NDk2NzI5 NSxkPWQ8PDE1fGQ+Pj4xNyxkPSg2NTUzNSZkKSpzKygoKGQ+Pj4xNikqcyY2NTUz NSk8PDE2KSY0Mjk0OTY3Mjk1LGlePWQsaT1pPDwxM3xpPj4+MTksbz01Kig2NTUz NSZpKSsoKDUqKGk+Pj4xNikmNjU1MzUpPDwxNikmNDI5NDk2NzI5NSxpPSg2NTUz NSZvKSsyNzQ5MisoKChvPj4+MTYpKzU4OTY0JjY1NTM1KTw8MTYpO3N3aXRjaChk PTAsbil7Y2FzZSAzOmRePSgyNTUmZS5jaGFyQ29kZUF0KHUrMikpPDwxNjtjYXNl IDI6ZF49KDI1NSZlLmNoYXJDb2RlQXQodSsxKSk8PDg7Y2FzZSAxOmRePTI1NSZl LmNoYXJDb2RlQXQodSksZD0oNjU1MzUmZCkqcisoKChkPj4+MTYpKnImNjU1MzUp PDwxNikmNDI5NDk2NzI5NSxkPWQ8PDE1fGQ+Pj4xNyxkPSg2NTUzNSZkKSpzKygo KGQ+Pj4xNikqcyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1LGlePWR9cmV0dXJuIGle PWUubGVuZ3RoLGlePWk+Pj4xNixpPTIyNDY4MjI1MDcqKDY1NTM1JmkpKygoMjI0 NjgyMjUwNyooaT4+PjE2KSY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1LGlePWk+Pj4x MyxpPTMyNjY0ODk5MDkqKDY1NTM1JmkpKygoMzI2NjQ4OTkwOSooaT4+PjE2KSY2 NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1LGlePWk+Pj4xNixpPj4+MH19LGZ1bmN0aW9u KGUsdCxuKXt2YXIgYT1uKDc0NSksaT13aW5kb3csbz0hMTtlLmV4cG9ydHM9ZnVu Y3Rpb24oZSl7aWYoIW8pe3ZhciB0PWEoKTtpLmFkZHRoaXNfY29uZmlnP2FkZHRo aXNfY29uZmlnLmRhdGFfdXNlX2Nvb2tpZXM9PT0hMSYmKF9hdGMueGNrPTEpOmku YWRkdGhpc19jb25maWc9e3VzZXJuYW1lOmkuYWRkdGhpc19wdWJ9LGkuYWRkdGhp c19zaGFyZXx8KGkuYWRkdGhpc19zaGFyZT17fSksYWRkdGhpc19zaGFyZS51cmx8 fChpLmFkZHRoaXNfdXJsfHx2b2lkIDAhPT1hZGR0aGlzX3NoYXJlLmltcF91cmx8 fChhZGR0aGlzX3NoYXJlLmltcF91cmw9MSksYWRkdGhpc19zaGFyZS51cmw9KGku YWRkdGhpc191cmx8fGV8fHQudXJsfHwiIikuc3BsaXQoIiN7Iikuc2hpZnQoKSks YWRkdGhpc19zaGFyZS50aXRsZXx8KGFkZHRoaXNfc2hhcmUudGl0bGU9KGkuYWRk dGhpc190aXRsZXx8dC50aXRsZXx8ZG9jdW1lbnQudGl0bGUpLnNwbGl0KCIjeyIp LnNoaWZ0KCkpLCFhZGR0aGlzX3NoYXJlLmRlc2NyaXB0aW9uJiZ0LmRlc2NyaXB0 aW9uJiYoYWRkdGhpc19zaGFyZS5kZXNjcmlwdGlvbj10LmRlc2NyaXB0aW9uKSxv PSEwfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIGE9big3NDYp O2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlLHQsbixpLG8scixzPWEoKSxkPXt9 O2ZvcihyPTA7cjxzLmxlbmd0aDtyKyspZT1zW3JdfHx7fSx0PWUuZ2V0QXR0cmli dXRlP2UuZ2V0QXR0cmlidXRlKCJwcm9wZXJ0eSIpOiIiLG49KHR8fGUubmFtZXx8 IiIpLnRvTG93ZXJDYXNlKCksbz1lLmNvbnRlbnQsMD09PW4uaW5kZXhPZigib2c6 IikmJihpPW4uc3BsaXQoIjoiKS5wb3AoKSxkW2ldPW8pO3JldHVybiBkfX0sZnVu Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG47ZS5leHBvcnRzPWZ1bmN0aW9u KCl7aWYoIW4pe3ZhciBlPWRvY3VtZW50O249ZS5nZXRFbGVtZW50c0J5VGFnTmFt ZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJNRVRBIik6W10sX2F0ZS5tZXRhPW59 cmV0dXJuIG59fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gYShlKXt2YXIgdD1v KChlLmFkdXJsfHwiIikrKGUuYWRldnx8IiIpKSxuPTA7aWYoIWNbdF0pe2lmKGNb dF09MSxlLmFkdXJsJiYic3RyaW5nIj09dHlwZW9mIGUuYWR1cmwmJihfYXRlLnBp eHU9ZS5hZHVybCxuPTEpLGUuYWRldiYmInN0cmluZyI9PXR5cGVvZiBlLmFkZXYp e3ZhciBhPWUuYWRldjt0cnl7YT11KGEpfWNhdGNoKGUpe31hPWEuc3BsaXQoIjsi KSxuPTE7Zm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspe2Zvcih2YXIgcj1hW2ld LnNwbGl0KCIsIikscz17fSxsPTA7bDxyLmxlbmd0aDtsKyspe3ZhciBmPXJbbF0u c3BsaXQoIj0iKTtzW2ZbMF1dPWZbMV19ZC5hZGR0aGlzJiZkLmFkZHRoaXMuYWQu ZXZlbnQocyl9fXJldHVybiBufX1mdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPXMu Z24oInNjcmlwdCIpLGE9MDthPG4ubGVuZ3RoO2ErKyl7dmFyIGk9blthXS5zcmN8 fCIiO2kmJihpPW8oaSkpLChuW2FdLnNyY3x8IiIpLmluZGV4T2YodHx8ImFkZHRo aXNfd2lkZ2V0LmpzIik+LTEmJiFjW2ldJiYoY1tpXT0xLGUocihuW2FdLnNyYykp KX19dmFyIG89bigzNzcpLHI9bigzMyk7ZS5leHBvcnRzPXtwcm9jZXNzQWRFdmVu dHM6YSxwcm9jZXNzQWxsU2NyaXB0czppfTt2YXIgcz1kb2N1bWVudCxkPXdpbmRv dyx1PWQuZGVjb2RlVVJJQ29tcG9uZW50LGM9e319LGZ1bmN0aW9uKGUsdCl7ZS5l eHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT1lfHx7fSwiYXRfdGFncyJp biBlJiYoZS5hdF90YWc9ZS5hdF90YWdzKSwiYXRfdGFnImluIGUmJnQudXNlci5y ZWFkeShmdW5jdGlvbigpe24uY29va2llLnRhZy5hZGQoZS5hdF90YWcpfSksZX19 LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUsdCxuLGEpe3ZhciBkOyJudW1i ZXIiIT10eXBlb2YgZSYmKGQ9ZSxlPTMyKmQubGVuZ3RoKSx0aGlzLm09ZSx0aGlz Lms9dDt2YXIgdT1NYXRoLmNlaWwoZS8zMiksYz0tMTtpZihzKXt2YXIgbD0xPDxN YXRoLmNlaWwoTWF0aC5sb2coTWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGguTE4y LzgpKS9NYXRoLkxOMiksZj0xPT09bD9VaW50OEFycmF5OjI9PT1sP1VpbnQxNkFy cmF5OlVpbnQzMkFycmF5LHA9bmV3IEFycmF5QnVmZmVyKGwqdCksaD10aGlzLmJ1 Y2tldHM9bmV3IEludDMyQXJyYXkodSk7aWYoZClmb3IoOysrYzx1OyloW2NdPWRb Y107ZWxzZSBpZihhKWZvcihjPS0xOysrYzx1OyloW2NdPWFbY107aWYodGhpcy5f bG9jYXRpb25zPW5ldyBmKHApLG4pZm9yKGM9MDtjPG4ubGVuZ3RoO2MrKyl0aGlz Ll9sb2NhdGlvbnNbY109bltjXX1lbHNle3ZhciBoPXRoaXMuYnVja2V0cz1hfHxb XTtpZihkKWZvcig7KytjPHU7KWhbY109ZFtjXTtlbHNlIGZvcig7KytjPHU7KWhb Y109MDt0aGlzLl9sb2NhdGlvbnM9bnx8W119dGhpcy5sb2NhdGlvbnM9ZnVuY3Rp b24oZSl7Zm9yKHZhciB0PXRoaXMuayxuPXRoaXMubSxhPXRoaXMuX2xvY2F0aW9u cyxpPXIoZSkscz1vKGkpLGQ9LTEsdT1pJW47KytkPHQ7KWFbZF09dTwwP3Urbjp1 LHU9KHUrcyklbjtyZXR1cm4gYX0sdGhpcy5hZGQ9ZnVuY3Rpb24oZSl7Zm9yKHZh ciB0PXRoaXMubG9jYXRpb25zKGUrIiIpLG49LTEsYT10aGlzLmssaT10aGlzLmJ1 Y2tldHM7KytuPGE7KWlbTWF0aC5mbG9vcih0W25dLzMyKV18PTE8PHRbbl0lMzJ9 LHRoaXMudGVzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj10aGlzLmxvY2F0aW9u cyhlKyIiKSxhPS0xLGk9dGhpcy5rLG89dGhpcy5idWNrZXRzOysrYTxpOylpZih0 PW5bYV0sMD09PShvW01hdGguZmxvb3IodC8zMildJjE8PHQlMzIpKXJldHVybiEx O3JldHVybiEwfSx0aGlzLnNpemU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5i dWNrZXRzLHQ9MCxuPTAsYT1lLmxlbmd0aDtuPGE7KytuKXQrPWkoZVtuXSk7cmV0 dXJuLXRoaXMubSpNYXRoLmxvZygxLXQvdGhpcy5tKS90aGlzLmt9fWZ1bmN0aW9u IGkoZSl7cmV0dXJuIGUtPWU+PjEmMTQzMTY1NTc2NSxlPSg4NTg5OTM0NTkmZSkr KGU+PjImODU4OTkzNDU5KSwxNjg0MzAwOSooZSsoZT4+NCkmMjUyNjQ1MTM1KT4+ MjR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSs9KGU8PDEpKyhlPDw0KSsoZTw8Nykr KGU8PDgpKyhlPDwyNCksZSs9ZTw8MTMsZV49ZT4+NyxlKz1lPDwzLGVePWU+PjE3 LGUrPWU8PDUsNDI5NDk2NzI5NSZlfXZhciByPW4oNzA2KTtlLmV4cG9ydHM9YTt2 YXIgcz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyfSxmdW5jdGlvbihl LHQsbil7ZnVuY3Rpb24gYShlKXt2YXIgdD1fYXRjLl9kYXRlfHxuZXcgRGF0ZSxu PXQuZ2V0RGF0ZSgpLGE9dC5nZXRNb250aCgpKzE7cmV0dXJuIGE8MTAmJihhPSIw IithKSxuPDEwJiYobj0iMCIrbiksZSsiLiIrKGErIiIrbil9ZnVuY3Rpb24gaShl LHQsbixhLGkpe2Z1bmN0aW9uIHMoZSl7aWYoX2F0ZS51bHMpe3ZhciB0PUpTT04u cGFyc2Uoci5nZXQoZSl8fCJ7fSIpLG49cGFyc2VJbnQodC5tKXx8ZCxhPXBhcnNl SW50KHQuayl8fHUsaT10Lmwscz10LmI7cmV0dXJuIG5ldyBvKG4sYSxpLHMpfXJl dHVybiBudWxsfXZhciBjO3JldHVybiBlPWV8fCJwYmYiLGM9dCYmbiYmYSYmaT9u ZXcgbyh0LG4sYSxpKTp0JiZuP25ldyBvKHQsbik6X2F0ZS51bHM/cyhlKTpuZXcg byhkLHUpLGMubmFtZT1lLGMuc2F2ZT1mdW5jdGlvbigpe2lmKF9hdGUudWxzKXt2 YXIgZT17bTpjLm0sazpjLmssbDpjLl9sb2NhdGlvbnMsYjpjLmJ1Y2tldHN9O3Iu YWRkKGMubmFtZSxKU09OLnN0cmluZ2lmeShlKSl9fSxjLnJlbW92ZT1mdW5jdGlv bigpe3IucmVtb3ZlQnlQcmVmaXgoYy5uYW1lKX0sY312YXIgbz1uKDc0OSkscj1u KDcxNSkscz0zLGQ9NjAwLHU9MjtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LG4sbyl7 ZnVuY3Rpb24gZChlKXtyZXR1cm4gZT0oZXx8IiIpLnNwbGl0KCIuIikucG9wKCks NCE9PWUubGVuZ3RoP3t9OnttOnBhcnNlSW50KGUuc3Vic3RyKDAsMikpLGQ6cGFy c2VJbnQoZS5zdWJzdHIoMiw0KSl9fXZhciB1LGM9e307cmV0dXJuIHQ/dGhpcyBp bnN0YW5jZW9mIGU/KHRoaXMubmFtZT10LHRoaXMuZ2V0PWZ1bmN0aW9uKGUpe3Jl dHVybiBfYXRlLmljaD9udWxsOmNbZV09aShlKX0sdGhpcy5pc0VtcHR5PWZ1bmN0 aW9uKCl7cmV0dXJuIXIuZXhpc3RzKHRoaXMubmFtZSl9LHRoaXMuYWRkPWZ1bmN0 aW9uKGUpe3JldHVybiBjW2VdfHwodGhpcy5nZXQoZSksdGhpcy5wcnVuZSgpKSxj W2VdfSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGUpe3JldHVybiEhci5nZXQodGhp cy5uYW1lKyIuIitlKX0sdGhpcy5wcnVuZT1mdW5jdGlvbihlKXtyLnJlbW92ZSh0 aGlzLm5hbWUpO3ZhciBuPXRoaXMuZ2V0Q3VycmVudEJsb29tcygpLGE9ZCh0aGlz LmdlbmVyYXRlTmFtZSgpKSxpPWEubSxvPWEuZDtlPU1hdGgubWluKGV8fHMsMzEp O3ZhciB1PU9iamVjdC5rZXlzKG4pLm1hcChmdW5jdGlvbihlKXt2YXIgdD1kKGUp O3JldHVybiB0Lm5hbWU9ZSx0fSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3ZhciBhPW4u bSxzPW4uZDtyZXR1cm4hIWEmJighKGE+aXx8YT09PWkmJnM8by1lfHxhPGktMXx8 YT09PWktMSYmKG8+ZXx8czwzMS1lKSl8fChyLnJlbW92ZSh0KSwhMSkpfSkubWFw KGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWV9KTtmb3IodS5zb3J0KGZ1bmN0aW9u KGUsdCl7cmV0dXJuIHBhcnNlSW50KGUpPHBhcnNlSW50KHQpPzE6LTF9KTt1Lmxl bmd0aD4zOylyLnJlbW92ZSh1LnBvcCgpKX0sdGhpcy50ZXN0QWxsPWZ1bmN0aW9u KGUpe3ZhciB0O2lmKCF1KXt2YXIgbj10aGlzLmdldEN1cnJlbnRCbG9vbXMoKTtm b3IodCBpbiBuKW4uaGFzT3duUHJvcGVydHkodCkmJiFjW3RdJiYoY1t0XT10aGlz LmdldCh0KSk7dT0xfWZvcih0IGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eSh0KSYm Y1t0XSYmY1t0XS50ZXN0KGUpKXJldHVybiEwO3JldHVybiExfSx0aGlzLmdlbmVy YXRlTmFtZT1mdW5jdGlvbigpe3JldHVybihvfHxhKS5jYWxsKHRoaXMsdGhpcy5u YW1lKX0sdm9pZCh0aGlzLmdldEN1cnJlbnRCbG9vbXM9ZnVuY3Rpb24oKXtyZXR1 cm4gci5nZXRBbGwodGhpcy5uYW1lKX0pKTpuZXcgZSh0LG4sbyk6bnVsbH19LGZ1 bmN0aW9uKGUsdCxuKXt2YXIgYT1uKDMyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXty ZXR1cm4hKCF3aW5kb3cuYXRfc3ViJiYhYSgiYWRkdGhpc193aWRnZXQuanMiKS5s aWJyYXJ5KX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUpe3ZhciB0PShl fHxkb2N1bWVudC5sb2NhdGlvbi5ocmVmKS5zcGxpdCgiIyIpLnNoaWZ0KCk7cmV0 dXJuISFyLnRlc3RBbGwodCl8fHIudGVzdEFsbCh0KyIvIil9ZnVuY3Rpb24gaShl KXtpZighcygpJiZ3aW5kb3cuSlNPTil7dmFyIHQ9KGV8fGRvY3VtZW50LmxvY2F0 aW9uLmhyZWYpLnNwbGl0KCIjIikuc2hpZnQoKSxuPXIuZ2VuZXJhdGVOYW1lKCk7 ci5jb250YWlucyhuKXx8ci5hZGQobiksb3x8KG89ci5nZXQobikpLCFvfHx1fHxv LnRlc3QodCl8fCh1PTEsc2V0VGltZW91dChmdW5jdGlvbigpe28uYWRkKHQpLG8u c2F2ZShuKX0sNWUzKSl9fXZhciBvLHI9big3NTApLHM9big3NTEpLGQ9Imhpc3Qi LHU9MCxyPW5ldyByKGQsMyk7ZS5leHBvcnRzPXtsb2dVUkw6aSxzZWVuQmVmb3Jl OmF9fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gYShlLHQpe3ZvaWQgMD09PWV8 fGEuaXNXYXRjaGluZyhlKXx8KHQ9dHx8e30sdC5taW5QZXJjZW50VmlzaWJsZT12 b2lkIDAhPT10Lm1pblBlcmNlbnRWaXNpYmxlP3QubWluUGVyY2VudFZpc2libGU6 LjUsdC5taW5EdXJhdGlvblZpc2libGU9dm9pZCAwIT09dC5taW5EdXJhdGlvblZp c2libGU/dC5taW5EdXJhdGlvblZpc2libGU6MWUzLHQuc2FtcGxlUmF0ZT12b2lk IDAhPT10LnNhbXBsZVJhdGU/dC5zYW1wbGVSYXRlOjEsdC5vblZpZXc9dm9pZCAw IT09dC5vblZpZXc/dC5vblZpZXc6ZnVuY3Rpb24oKXt9LHRoaXMuZWxlbWVudD1l LHRoaXMuc2FtcGxlVGltZW91dD0xZTMvdC5zYW1wbGVSYXRlLHRoaXMubWluUGVy Y2VudFZpc2libGU9dC5taW5QZXJjZW50VmlzaWJsZSx0aGlzLm1pbkR1cmF0aW9u VmlzaWJsZT10Lm1pbkR1cmF0aW9uVmlzaWJsZSx0aGlzLm9uVmlldz10Lm9uVmll dyx0aGlzLmludGVydmFsPW51bGwsdGhpcy5maXJzdFNlZW49bnVsbCx0aGlzLndh c1ZpZXdlZD0hMSxhLndhdGNoTGlzdC5wdXNoKGUpLGEud2F0Y2hlcnMucHVzaCh0 aGlzKSl9dmFyIGk9big1NjIpLG89big3NDIpO2UuZXhwb3J0cz1hLGEucHJvdG90 eXBlLmNoZWNrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PW8odGhpcy5lbGVtZW50 LHtjYWNoZUR1cmF0aW9uOnRoaXMuc2FtcGxlVGltZW91dH0pO3RoaXMuaW50ZXJ2 YWx8fHRoaXMud2FzVmlld2VkfHx0PnRoaXMubWluUGVyY2VudFZpc2libGUmJih0 aGlzLmZpcnN0U2Vlbj1uZXcgRGF0ZSx0aGlzLmludGVydmFsPXNldEludGVydmFs KGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IERhdGUsbj1vKGUuZWxlbWVudCx7Y2FjaGVE dXJhdGlvbjp0aGlzLnNhbXBsZVRpbWVvdXR9KTtuPmUubWluUGVyY2VudFZpc2li bGU/dC5nZXRUaW1lKCktZS5maXJzdFNlZW4uZ2V0VGltZSgpPmUubWluRHVyYXRp b25WaXNpYmxlJiYoY2xlYXJJbnRlcnZhbChlLmludGVydmFsKSxlLmludGVydmFs PW51bGwsZS53YXNWaWV3ZWQ9ITAsZS5vblZpZXcoKSxhLndhdGNoTGlzdC5zcGxp Y2UoYS53YXRjaExpc3QuaW5kZXhPZih0aGlzLmVsZW1lbnQpLDEpLGEud2F0Y2hl cnMuc3BsaWNlKGEud2F0Y2hlcnMuaW5kZXhPZih0aGlzKSwxKSk6KGNsZWFySW50 ZXJ2YWwoZS5pbnRlcnZhbCksZS5pbnRlcnZhbD1udWxsLGUuZmlyc3RTZWVuPW51 bGwpfSx0aGlzLnNhbXBsZVRpbWVvdXQpKX0sYS5pc1dhdGNoaW5nPWZ1bmN0aW9u KGUpe2Zvcih2YXIgdD1hLndhdGNoTGlzdC5sZW5ndGgtMTt0Pj0wO3QtLSlpZihh LndhdGNoTGlzdFt0XT09PWUpcmV0dXJuITA7cmV0dXJuITF9LGEuaGFuZGxlcj1m dW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtmb3IodmFyIGU9YS53YXRj aGVycy5sZW5ndGg7ZS0tOylhLndhdGNoZXJzW2VdLmNoZWNrKCl9KX0sYS5yZXNp emVIYW5kbGVyPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEucmVzaXplSGFuZGxl clRpbWVvdXQpLGEucmVzaXplSGFuZGxlclRpbWVvdXQ9c2V0VGltZW91dChhLmhh bmRsZXIsMWUzKX0sYS5tZXNzYWdlSGFuZGxlcj1mdW5jdGlvbihlKXt2YXIgdD1l JiZlLmRhdGEmJmUuZGF0YS5pbmRleE9mIGluc3RhbmNlb2YgRnVuY3Rpb24mJjA9 PT1lLmRhdGEuaW5kZXhPZigiX2F0YWZpdj0iKTtpZih0KWZvcih2YXIgbixvPWUu ZGF0YS5zdWJzdHJpbmcoIl9hdGFmaXY9Ii5sZW5ndGgpLHI9by5zcGxpdCgiIyIp LHM9clswXSxkPWRlY29kZVVSSUNvbXBvbmVudChyWzFdfHwiIiksdT0wO3U8ZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpLmxlbmd0aDt1Kysp aWYobj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbdV0s bi5zcmMucmVwbGFjZSgvXmh0dHBzPzovLCIiKT09PWQucmVwbGFjZSgvXmh0dHBz PzovLCIiKSl7bmV3IGEobix7bWluUGVyY2VudFZpc2libGU6LjUsbWluRHVyYXRp b25WaXNpYmxlOjFlMyxvblZpZXc6ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJpbWciKTtlLnNyYz0iLy9jZi5hZGR0aGlzLmNvbS9yZWQv cC5wbmc/Z2VuPTIwMDAmcmI9MCZwY289Y2xrLTEwMCZldj12aWV3X3RyYWNrZXIm cHhpZD00MDMxJmRzcGlkPTYiK3MsaShlKSxkb2N1bWVudC5ib2R5LmFwcGVuZENo aWxkKGUpfX0pLGEuaGFuZGxlcigpO2JyZWFrfX0sYS5yZXNpemVIYW5kbGVyVGlt ZW91dD1udWxsLGEud2F0Y2hMaXN0PVtdLGEud2F0Y2hlcnM9W119LGZ1bmN0aW9u KGUsdCxuKXtlLmV4cG9ydHM9e3NvdXJjZTooMD09PWRvY3VtZW50LmxvY2F0aW9u LmhyZWYuaW5kZXhPZigiaHR0cHMiKT8iaHR0cHM6IjoiaHR0cDoiKStfYXRyKyJz dGF0aWMvIituKDc1NSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0ic2guZTRl OGFmNGRlNTk1ZmRiMTBlYzE0NTlkLmh0bWwifSxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l OntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMDt2YXIgaT1uKDYyMiksbz1hKGkp LHI9big1NzApLHM9YShyKSxkPW4oNTk5KSx1PWEoZCksYz1uKDIzKSxsPW4oNzU3 KSxmPWEobCkscD1uKDYzKSxoPWEocCksbT1uKDMxKSxnPWEobSksXz1uKDY5MSks dj1hKF8pLGI9bigzMCksdz1hKGIpLHg9big3NjApLHk9YSh4KSxrPW4oODIpLEM9 big3NjQpLE09big3NjUpLEE9big3NjYpLE89W24oNzY3KSxuKDc2OSksbig3NzIp LG4oNzczKSxuKDc3NCksbig3NzUpLG4oNzc2KSxuKDc3Nyksbig3NzgpXSxFPSEx LFM9e30sST1bXSxUPWZ1bmN0aW9uKGUpe3RyeXtvLmRlZmF1bHQoUyxlKX1jYXRj aChlKXt9fSxOPWZ1bmN0aW9uKCl7aWYoIXdpbmRvdy5hZGR0aGlzLmZpcmVkRXhp dEV2ZW50JiYhTS5pc0JsYWNrbGlzdGVkKCkpe3dpbmRvdy5hZGR0aGlzLmZpcmVk RXhpdEV2ZW50PSEwO3ZhciBlO2U9d2luZG93LmFkZHRoaXNfY29uZmlnLndpeD9m LmRlZmF1bHQod2luZG93LmFkZHRoaXNfY29uZmlnLndpeC51cmwpOmYuZGVmYXVs dChoLmRlZmF1bHQuZHUpO3ZhciB0PXYuZGVmYXVsdC5nZXRQQ09zKCk7SS5mb3JF YWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlKFMpfSksTy5mb3JFYWNoKGZ1bmN0aW9u KGUpe3JldHVybiBUKGUuZ2V0UGFyYW1zKCkpfSksdC5sZW5ndGgmJlQoe2FsOnQu am9pbigiLCIpfSksVChDLmdldENvdW50UmVxdWVzdHNJbmZvKCkpLFQoQS5nZXRB UElzVXNlZCgpKSxUKHtiYTooeS5kZWZhdWx0LmdldFJlcXVlc3RDb3VudCgpPjAm JjEpfCh5LmRlZmF1bHQuZ2V0UmVzcG9uc2VDb3VudCgpPjAmJjIpfCh3LmRlZmF1 bHQuaXNQYXlpbmdDdXN0b21lcigpJiY0KSxzaWQ6X2F0ZS50cmFjay5zc2lkKCks cmV2OndpbmRvdy5fYXRjLnJldixwdWI6Zy5kZWZhdWx0KCksZHA6ZS5kb21haW4s ZnA6ZS5wYXRoLHBmbTp1LmRlZmF1bHQucG9seWZpbGxNZXRob2RJRCxpY25zOmsu Z2V0SW5jbHVkZWRJY29ucygpfSksdS5kZWZhdWx0KCIvL20uYWRkdGhpcy5jb20v bGl2ZS9yZWRfbG9qc29uLzEwMGVuZy5qc29uPyIrcy5kZWZhdWx0KFMpLCIiKX19 LGo9ZnVuY3Rpb24oZSl7SS5wdXNoKGUpfSxEPWZ1bmN0aW9uKCl7RXx8KGMubGlz dGVuKHdpbmRvdywidW5sb2FkIixOKSxjLmxpc3Rlbih3aW5kb3csImJlZm9yZXVu bG9hZCIsTiksTy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0KCl9 KSxFPSEwKX07dC5kZWZhdWx0PXtzZXR1cDpELHVwZGF0ZTpULGFkZExpc3RlbmVy Omp9LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0 cmljdCI7dmFyIGE9big3NTgpLGk9big1NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihl KXt2YXIgdD1hKGkoZSx7ZGVmcmFnOjF9KSk7cmV0dXJue2RvbWFpbjp0WzBdLHBh dGg6dC5zbGljZSgxKS5qb2luKCIvIikuc3BsaXQoIiMiKS5zaGlmdCgpfX19LGZ1 bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUpe2lmKCFlfHwhZS5wYXRobmFtZSly ZXR1cm5bXTt2YXIgdD1lLnBhdGhuYW1lLnNwbGl0KCIvIiksbj10LmZpbHRlcihm dW5jdGlvbihlKXtyZXR1cm4hIWV9KTtyZXR1cm4gMD09PW4ubGVuZ3RoP1tdOih0 LnNoaWZ0KCksdCl9dmFyIGk9big3NTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2 YXIgdD1pKGUpO2lmKCFlfHwhdHx8IXQuaG9zdClyZXR1cm5bXTt2YXIgbj1hKHQp O3JldHVybiBuLnVuc2hpZnQodC5ob3N0KSwodC5zZWFyY2h8fHQuaGFzaCkmJigx PT09bi5sZW5ndGg/bi5wdXNoKCIiK3Quc2VhcmNoK3QuaGFzaCk6bltuLmxlbmd0 aC0xXT1uW24ubGVuZ3RoLTFdKygiIit0LnNlYXJjaCt0Lmhhc2gpKSxufX0sZnVu Y3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0PXdpbmRvdy5kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIHQuaHJlZj1lLHR9ZS5leHBvcnRzPW59 LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1 cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEw O3ZhciBpPW4oNzYxKSxvPW4oMzY1KSxyPW4oNTk2KSxzPWEociksZD1uKDc2Miks dT1hKGQpLGM9big3NjMpLGw9YShjKTt0LmRlZmF1bHQ9bmV3IHMuZGVmYXVsdCgi Ly9tLmFkZHRoaXMuY29tL2xpdmUvcmVkX2xvanNvbi8zMDBsby5qc29uIikuYWx3 YXlzKCJzaSIpLm9wdGlvbmFsKCJia2wiLHUuZGVmYXVsdCgwLDEpKS5yZXF1aXJl ZCgiYmwiLGwuZGVmYXVsdCkub3B0aW9uYWwoInBkdCIsbC5kZWZhdWx0KS5vcHRp b25hbCgic2lkIikub3B0aW9uYWwoInB1YiIpLm9wdGlvbmFsKCJyZXYiKS5vcHRp b25hbCgibG4iKS5hbHdheXMoInBjIikub3B0aW9uYWwoImNiIix1LmRlZmF1bHQo MCwxKSkub3B0aW9uYWwoImFkdTYiKS5vcHRpb25hbCgidXVkIix1LmRlZmF1bHQo MSkpLm9wdGlvbmFsKCJhYiIpLmFsd2F5cygiZHAiKS5vcHRpb25hbCgiZHIiKS5v cHRpb25hbCgiZnAiKS5yZXF1aXJlZCgiZnIiLGZ1bmN0aW9uKGUpe3JldHVybiJz dHJpbmciPT10eXBlb2YgZX0pLm9wdGlvbmFsKCJwcm8iLHUuZGVmYXVsdCgxKSku b3B0aW9uYWwoImZjdSIpLmFsd2F5cygib2YiLHUuZGVmYXVsdCgwLDEsMiwzLDQp KS5vcHRpb25hbCgibnQiKS5vcHRpb25hbCgidHIiKS5vcHRpb25hbCgic3IiKS5v cHRpb25hbCgicGQiLHUuZGVmYXVsdCgwLDEpKS5hbHdheXMoImlydCIsdS5kZWZh dWx0KDAsMSkpLm9wdGlvbmFsKCJ2Y2wiLHUuZGVmYXVsdCgwLDEsMiwzKSkub3B0 aW9uYWwoIm1kIix1LmRlZmF1bHQoMCwxLDIpKS5vcHRpb25hbCgiY3QiLHUuZGVm YXVsdCgwLDEpKS5vcHRpb25hbCgidGN0Iix1LmRlZmF1bHQoMCwxKSkub3B0aW9u YWwoImFidCIsdS5kZWZhdWx0KDAsMSkpLm9wdGlvbmFsKCJjZG4iLHUuZGVmYXVs dCgwLDEsMiwzKSkub3B0aW9uYWwoImxubGMiKS5vcHRpb25hbCgiYXQzbm8iLHUu ZGVmYXVsdCgxKSkub3B0aW9uYWwoInBpIixsLmRlZmF1bHQpLm9wdGlvbmFsKCJ2 ciIsbC5kZWZhdWx0KS5hbHdheXMoInJiIixmdW5jdGlvbihlKXt2YXIgdD1vLkRJ UkVDVHxvLlNFQVJDSHxvLk9OX0RPTUFJTnxvLk9GRl9ET01BSU47cmV0dXJuIGV8 dD09PXR9KS5hbHdheXMoImdlbiIsdS5kZWZhdWx0KGkuVklFVyxpLlBPUCxpLlNI QVJFLGkuRk9MTE9XLGkuQ09NTUVOVCxpLkNVU1RPTSkpLm9wdGlvbmFsKCJjaHIi KS5vcHRpb25hbCgibWsiLGZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gZS5zcGxpdCgi LCIpLCEwfWNhdGNoKGUpe3JldHVybiExfX0pLm9wdGlvbmFsKCJyZWYiKS5yZXF1 aXJlZCgiY29sYyIsbC5kZWZhdWx0KS5vcHRpb25hbCgid3B2Iikub3B0aW9uYWwo IndwYnYiKS5vcHRpb25hbCgiYWRkdGhpc19wbHVnaW5faW5mbyIpLnJlcXVpcmVk KCJqc2wiLGwuZGVmYXVsdCkub3B0aW9uYWwoInV2cyIsL15bMC05YS1mXXsxOX0k LykucmVxdWlyZWQoInNraXBiIix1LmRlZmF1bHQoMCwxKSkuZm9yY2UoITApLmpz b25wKCJjYWxsYmFjayIpLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUs dCl7ZS5leHBvcnRzPXtOT09QOi0xLENMSUNLOjUwLFZJRVc6MTAwLFBPUDoyMDAs Q09QWToyNTAsU0hBUkU6MzAwLEZPTExPVzozNTAsQ09NTUVOVDozNzUsQ1VTVE9N OjJlMyxFTkdBR0VNRU5UOjIxMDB9fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0 IjtmdW5jdGlvbiBuKCl7dmFyIGU9YXJndW1lbnRzO3JldHVybiBmdW5jdGlvbih0 KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihlW25dPT09dClyZXR1cm4h MDtyZXR1cm4hMX19dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1uLGUuZXhwb3J0 cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u IG4oZSl7cmV0dXJuIGU9PT1wYXJzZUludChlKX10Ll9fZXNNb2R1bGU9ITAsdC5k ZWZhdWx0PW4sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1 c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7bysrfWZ1bmN0aW9uIGkoKXtyZXR1cm57 c2NyOm8sc2N2OnI/MTowfX10Ll9fZXNNb2R1bGU9ITAsdC5pbmNyZW1lbnQ9YSx0 LmdldENvdW50UmVxdWVzdHNJbmZvPWk7dmFyIG89MCxyPTA+TWF0aC5yYW5kb20o KTt0LmNvbWJDb3VudHM9ciwiQ09NQklORV9DT1VOVFMiaW4gd2luZG93JiYodC5j b21iQ291bnRzPXI9d2luZG93LkNPTUJJTkVfQ09VTlRTKX0sZnVuY3Rpb24oZSx0 LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIGE9dm9pZCAwLGk9 ZnVuY3Rpb24oKXtyZXR1cm4gYX07dC5pc0JsYWNrbGlzdGVkPWk7dmFyIG89ZnVu Y3Rpb24oZSl7YT0iRE9NQUlOX0JMQUNLTElTVEVEImluIHdpbmRvdz93aW5kb3cu RE9NQUlOX0JMQUNLTElTVEVEOiEhZX07dC5zZXRCbGFja2xpc3RlZD1vfSxmdW5j dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7bz0hMH1mdW5jdGlv biBhKCl7cj0hMH1mdW5jdGlvbiBpKCl7cmV0dXJue2FwaXU6MHwobz09PSEwJiYx KXwocj09PSEwJiYyKX19dC5fX2VzTW9kdWxlPSEwLHQubWFya0Rhc2hib2FyZD1u LHQubWFya1NtYXJ0TGF5ZXJzPWEsdC5nZXRBUElzVXNlZD1pO3ZhciBvPXZvaWQg MCxyPXZvaWQgMH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYSxp LG8scj1uKDc2OCkscz1uKDY1NCksZD0hMSx1PWZ1bmN0aW9uKGUpe3ZhciB0PWRv Y3VtZW50LmRvY3VtZW50RWxlbWVudCxuPWUuZGF0YS55LG89bit0LmNsaWVudEhl aWdodDtpPXZvaWQgMCE9PWk/TWF0aC5tYXgoaSxvKTpvLGE9dm9pZCAwIT09YT9N YXRoLm1pbihhLG4pOm59O2UuZXhwb3J0cz17c3RhcnQ6ZnVuY3Rpb24oKXtkfHwo big2OTMpLnNldHVwKCksYWRkdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhZGR0aGlz LmV2ZW50cy5zY3JvbGwiLHUpLG89cygpLGQ9ITApfSxnZXRQYXJhbXM6ZnVuY3Rp b24oKXtyZXR1cm4gZD97c2g6aT9pLWE6MCxwaDpyKCl8fDAsaXZoOm98fDB9Ont9 fX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlv bigpe3ZhciBlPWRvY3VtZW50LmJvZHksdD1kb2N1bWVudC5kb2N1bWVudEVsZW1l bnQsbj0wO3JldHVybiBlJiYobj1NYXRoLm1heChuLGUuc2Nyb2xsSGVpZ2h0LGUu b2Zmc2V0SGVpZ2h0LGUuY2xpZW50SGVpZ2h0KSksdCYmKG49TWF0aC5tYXgobix0 LnNjcm9sbEhlaWdodCx0Lm9mZnNldEhlaWdodCx0LmNsaWVudEhlaWdodCkpLHdp bmRvdy5pbm5lckhlaWdodCYmKG49TWF0aC5tYXgobix3aW5kb3cuaW5uZXJIZWln aHQpKSxufX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgYT1uKDc3 MCksaT1uKDcxOSksbz1uKDc3MSkuZ2V0UHJlRHdlbGxUaW1lLHI9ITEscz1pKCks ZD0wLHU9ZnVuY3Rpb24oKXt2YXIgZT1pKCksdD1hKCk7dCE9PSEwJiZ2b2lkIDAh PT10fHwoZCs9ZS1zKSxzPWV9O2UuZXhwb3J0cz17c3RhcnQ6ZnVuY3Rpb24oKXty fHwoc2V0SW50ZXJ2YWwodSwxZTMpLHI9ITApfSxnZXRQYXJhbXM6ZnVuY3Rpb24o KXtpZighcilyZXR1cm57fTt2YXIgZT17ZHQ6ZH0sdD1vKCk7cmV0dXJuIHZvaWQg MCE9PXQmJihlLnBkdD10KSxlfX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiJ2aXNpYmlsaXR5U3RhdGUiaW4g ZG9jdW1lbnQ/InZpc2libGUiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOiJo YXNGb2N1cyJpbiBkb2N1bWVudD9kb2N1bWVudC5oYXNGb2N1cygpOnZvaWQgMH19 LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1 cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gaShlKXtm b3IodmFyIHQ9ZS5uYW1lLG49ZS5zdGFydFRpbWUsYT1lLmR1cmF0aW9uLGk9bnVs bCxvPTA7bzx5Lmxlbmd0aDtvKyspaWYodC5zZWFyY2goeVtvXS5yZWdleCk+LTEp e2k9eVtvXS5uYW1lO2JyZWFrfXJldHVybntuYW1lOmksc3RhcnRUaW1lOm4sZHVy YXRpb246YX19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lLm5hbWU7cmV0dXJuIEJvb2xl YW4odCl9ZnVuY3Rpb24gcihlKXt2YXIgdD0hMTtpZihlJiZlLm5hbWUpe3ZhciBu PXYuZGVmYXVsdChlLm5hbWUpO24mJm4uZG9tYWluJiYobj1uLmRvbWFpbix0PW4u aW5kZXhPZigiLmFkZHRoaXMuY29tIik+LTEpfXJldHVybiB0fWZ1bmN0aW9uIHMo ZSl7cmV0dXJuIGUubmFtZS5zZWFyY2godyl9ZnVuY3Rpb24gZChlKXtyZXR1cm4g ZS5uYW1lLnNlYXJjaCh4KX1mdW5jdGlvbiB1KGUpe3ZhciB0PWUuc3RhcnRUaW1l LG49ZS5kdXJhdGlvbixhPWUubmFtZTtyZXR1cm57c3RhcnRUaW1lOnQsZHVyYXRp b246bixuYW1lOmF9fWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZS5zdGFydFRpbWUt dC5zdGFydFRpbWV9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS5uYW1lLm1hdGNoKGsp fWZ1bmN0aW9uIGYoKXtyZXR1cm4gYi5iYXNpY1N1cHBvcnQoKT9wZXJmb3JtYW5j ZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLm1hcCh1KS5maWx0ZXIociku bWFwKGkpLmZpbHRlcihvKS5zb3J0KGMpOltdfWZ1bmN0aW9uIHAoKXtyZXR1cm4g Yi5iYXNpY1N1cHBvcnQoKT9wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJt YXJrIikubWFwKHUpLmZpbHRlcihsKS5zb3J0KGMpLm1hcChmdW5jdGlvbihlKXt2 YXIgdD1lLm5hbWUsbj1lLnN0YXJ0VGltZTtyZXR1cm57bmFtZTprLmV4ZWModClb MV0sc3RhcnRUaW1lOm59fSk6W119ZnVuY3Rpb24gaCgpe3JldHVybiBiLmJhc2lj U3VwcG9ydCgpP2YoKS5maWx0ZXIocykuc2hpZnQoKTpudWxsfWZ1bmN0aW9uIG0o KXt2YXIgZT1oKCk7cmV0dXJuIGU/cGFyc2VJbnQoZS5zdGFydFRpbWUpOnZvaWQg MH1mdW5jdGlvbiBnKCl7cmV0dXJuIGIuYmFzaWNTdXBwb3J0KCk/ZigpLmZpbHRl cihkKS5wb3AoKTpudWxsfXQuX19lc01vZHVsZT0hMCx0LmdldEFkZFRoaXNSZXNv dXJjZXM9Zix0LmdldEFkZFRoaXNNYXJrZXJzPXAsdC5nZXRGaXJzdEFkZFRoaXNX aWRnZXQ9aCx0LmdldFByZUR3ZWxsVGltZT1tLHQuZ2V0Rmlyc3RTaEZyYW1lPWc7 dmFyIF89big3NTcpLHY9YShfKSxiPW4oNzIxKSx3PS9hZGR0aGlzX3dpZGdldFwu anMvLHg9L3NoXC5bMC05YS1mXStcLmh0bWwvLHk9W3tyZWdleDp3LG5hbWU6Indp ZGdldCJ9LHtyZWdleDp4LG5hbWU6InNoIn0se3JlZ2V4Oi9ib29zdC8sbmFtZToi Ym9vc3QifSx7cmVnZXg6L3JlZF9sb2pzb25cLzMwMGxvXC5qc29uLyxuYW1lOiJs b2pzb24ifSx7cmVnZXg6L2V1LXRlc3RcLmFkZHRoaXNcLmNvbS8sbmFtZToiZXV0 ZXN0In1dLGs9L15hZGR0aGlzXC4oXFMrKSQvfSxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO3ZhciBhLGksbyxyPW4oMjMpLmxpc3RlbixzPSExLGQ9ZnVuY3Rp b24oZSl7dmFyIHQ9ZS5zcmMuc3BsaXQoIjovLyIpLnBvcCgpLG49YVt0XTt2b2lk IDA9PT1uP2FbdF09MTphW3RdKyt9LHU9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0 LmtleXMoYSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKyJ8IithW2VdfSkuam9p bigiLCIpfSxjPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVu dDtpZihlKXt2YXIgdD0iSUZSQU1FIj09PWUudGFnTmFtZSxuPWUhPT1vO3QmJm4m JmQoZSksbz1lfX0sbD1mdW5jdGlvbigpe2krKyxvPWRvY3VtZW50LmFjdGl2ZUVs ZW1lbnR9O2UuZXhwb3J0cz17c3RhcnQ6ZnVuY3Rpb24oKXtzfHwoYT17fSxpPTAs bz1kb2N1bWVudC5hY3RpdmVFbGVtZW50LHNldEludGVydmFsKGMsMTAwKSxyKHdp bmRvdywiYmx1ciIsYykscih3aW5kb3csImNsaWNrIixsKSxzPSEwKX0sZ2V0UGFy YW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHM/e2ljdDp1KCkscGN0Oml9Ont9fX19LGZ1 bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4g ZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwO3Zh ciBpPW4oNzcxKSxvPW4oNDQpLHI9YShvKTt0LmRlZmF1bHQ9e3N0YXJ0OmZ1bmN0 aW9uKCl7dGhpcy5sb2pzb25TZXQ9ITEsdGhpcy5sb2pzb25TdGFydFRpbWU9MCx0 aGlzLmxvanNvbkR1cmF0aW9uPTAsX2F0ZS5lZC5hZGRFdmVudExpc3RlbmVyKCJh ZGR0aGlzLWludGVybmFsLmxvanNvbi5yZXEiLHRoaXMub25Mb2pzb25SZXF1ZXN0 ZWQuYmluZCh0aGlzKSl9LGdldFBhcmFtczpmdW5jdGlvbigpe3ZhciBlPXRoaXMu Z2V0UmVzb3VyY2VQZXJmKCksdD10aGlzLmdldFJlbmRlclBlcmYoKSxuPXt9O3Jl dHVybiBlJiYobi5wZXJmPWUpLHQmJihuLnJuZHI9dCksbn0sb25Mb2pzb25SZXF1 ZXN0ZWQ6ZnVuY3Rpb24oZSl7dGhpcy5sb2pzb25TZXR8fCh0aGlzLmxvanNvblNl dD0hMCx0aGlzLmxvanNvblN0YXJ0VGltZT1lLmRhdGEuc3RhcnRUaW1lLHRoaXMu bG9qc29uRHVyYXRpb249ZS5kYXRhLmR1cmF0aW9uKX0sZ2V0UmVzb3VyY2VQZXJm OmZ1bmN0aW9uKCl7dmFyIGU9aS5nZXRGaXJzdFNoRnJhbWUoKSx0PWU/ZS5zdGFy dFRpbWUrZS5kdXJhdGlvbjpudWxsLG49aS5nZXRBZGRUaGlzUmVzb3VyY2VzKCk7 cmV0dXJuIG51bGwhPT10JiZ0aGlzLmxvanNvblNldCYmbi5wdXNoKHtzdGFydFRp bWU6dCt0aGlzLmxvanNvblN0YXJ0VGltZSxkdXJhdGlvbjp0aGlzLmxvanNvbkR1 cmF0aW9uLG5hbWU6ImxvanNvbiJ9KSxyLmRlZmF1bHQobixmdW5jdGlvbihlKXty ZXR1cm5bZS5uYW1lLGUuc3RhcnRUaW1lLnRvRml4ZWQoMCksZS5kdXJhdGlvbi50 b0ZpeGVkKDApXS5qb2luKCJ8Iil9KS5qb2luKCIsIil9LGdldFJlbmRlclBlcmY6 ZnVuY3Rpb24oKXtyZXR1cm4gci5kZWZhdWx0KGkuZ2V0QWRkVGhpc01hcmtlcnMo KSxmdW5jdGlvbihlKXtyZXR1cm5bZS5uYW1lLGUuc3RhcnRUaW1lLnRvRml4ZWQo MCldLmpvaW4oInwiKX0pLmpvaW4oIiwiKX19LGUuZXhwb3J0cz10LmRlZmF1bHR9 LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9 ZS5kYXRhfHx7fSxuPXQuc3ZjLGE9dC5wY28sbz10LmNtbyxyPXQuY3JzLHM9dC5j c287aT17fSxuJiYoaS5zaD1uKSxvJiYoaS5jbT1vKSxzJiYoaS5jcz0xKSxyJiYo aS5jcj0xKSxhJiYoaS5zcGM9YSl9dmFyIGE9ITEsaT1udWxsO2UuZXhwb3J0cz17 c3RhcnQ6ZnVuY3Rpb24oKXthfHwoX2F0ZS5lZC5hZGRFdmVudExpc3RlbmVyKCJh ZGR0aGlzLWludGVybmFsLmNvbXBhY3QiLG4pLGE9ITApfSxnZXRQYXJhbXM6ZnVu Y3Rpb24oKXtyZXR1cm4gYT97Y21lbnU6SlNPTi5zdHJpbmdpZnkoaSl9Ont9fX19 LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIg bj0hMSxhPTAsaT0wLG89MCxyPTA7dC5kZWZhdWx0PXtzdGFydDpmdW5jdGlvbigp e258fChfYXRlLmVkLm9uKCJhZGR0aGlzLWludGVybmFsLnBpeGVsYXRvci5waXhl bC1kcm9wIixmdW5jdGlvbihlKXt2YXIgdD1lLmlmcmFtZTt0P2krKzphKyt9KSxf YXRlLmVkLm9uKCJhZGR0aGlzLWludGVybmFsLnBpeGVsYXRvci5waXhlbC1sb2Fk IixmdW5jdGlvbihlKXt2YXIgdD1lLmlmcmFtZTt0P3IrKzpvKyt9KSxuPSEwKX0s Z2V0UGFyYW1zOmZ1bmN0aW9uKCl7cmV0dXJuIG4/e3BwZDphLHBwbDpvfTp7fX19 LGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj dCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBhPW4oNDQpLGk9ITEsbz17fTt0LmRlZmF1 bHQ9e3N0YXJ0OmZ1bmN0aW9uKCl7aXx8KF9hdGUuZWQub24oImFkZHRoaXMtaW50 ZXJuYWwuZmJzaGFyZWNvdW50IixmdW5jdGlvbihlKXshZS5kYXRhLnNoYXJlJiZl LmRhdGEuZXJyb3I/b1tlLmRhdGEuZXJyb3IuY29kZV0/b1tlLmRhdGEuZXJyb3Iu Y29kZV0rKzpvW2UuZGF0YS5lcnJvci5jb2RlXT0xOm9bLTFdP29bLTFdKys6b1st MV09MX0pLGk9ITApfSxnZXRQYXJhbXM6ZnVuY3Rpb24oKXtpZighaSlyZXR1cm57 fTt2YXIgZT1PYmplY3Qua2V5cyhvKSx0PWEoZSxmdW5jdGlvbihlKXtyZXR1cm4g ZSsifCIrb1tlXX0pO3JldHVybntmYmU6dC5qb2luKCIsIil8fCIifX19LGUuZXhw b3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0 aW9uIG4oZSl7dmFyIHQ9ISghZXx8IWUuZGF0YSkmJiJleHBhbmRlZCI9PT1lLmRh dGEucGFuZTt0JiZyLnZpZXdzKyt9ZnVuY3Rpb24gYSgpe3Iuc2hhcmVzKyt9ZnVu Y3Rpb24gaSgpe3IuYWRkVGhpc0xpbmtDbGlja3MrK312YXIgbz0hMSxyPXt9O2Uu ZXhwb3J0cz17c3RhcnQ6ZnVuY3Rpb24oKXtvfHwocj17dmlld3M6MCxzaGFyZXM6 MCxhZGRUaGlzTGlua0NsaWNrczowfSxfYXRlLmVkLmFkZEV2ZW50TGlzdGVuZXIo ImFkZHRoaXMubWVudS5vcGVuIixuKSxfYXRlLmVkLmFkZEV2ZW50TGlzdGVuZXIo ImFkZHRoaXMuZXhwYW5kZWQubW9uaXRvci5zaGFyZSIsYSksX2F0ZS5lZC5hZGRF dmVudExpc3RlbmVyKCJhZGR0aGlzLmV4cGFuZGVkLm1vbml0b3IuYXQtbGluay1j bGljayIsaSksbz0hMCl9LGdldFBhcmFtczpmdW5jdGlvbigpe3JldHVybiBvP3t4 bXY6ci52aWV3cyx4bXM6ci5zaGFyZXMseG1sYzpyLmFkZFRoaXNMaW5rQ2xpY2tz fTp7fX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEo ZSl7cmV0dXJuIG51bGwhPT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpfWZ1bmN0 aW9uIGkoZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlfXQuX19lc01vZHVs ZT0hMDt2YXIgbz1uKDcyMSkscj0hMSxzPXthbmd1bGFyOmZ1bmN0aW9uKCl7cmV0 dXJuIGkod2luZG93LmFuZ3VsYXIpfHxhKCJbbmctYXBwXSIpfSxiYWNrYm9uZTpm dW5jdGlvbigpe3JldHVybiBpKHdpbmRvdy5CYWNrYm9uZSl9LGVtYmVyOmZ1bmN0 aW9uKCl7cmV0dXJuIGkod2luZG93LkVtYmVyKX0scmVhY3Q6ZnVuY3Rpb24oKXty ZXR1cm4gaSh3aW5kb3cuUmVhY3QpfHxhKCJbZGF0YS1yZWFjdGlkXSIpfSxtaXRo cmlsOmZ1bmN0aW9uIGUoKXt2YXIgZT13aW5kb3cubTtyZXR1cm4gaShlKSYmaShl LnZlcnNpb24pfSxtb290b29sczpmdW5jdGlvbiBlKCl7dmFyIGU9d2luZG93Lk1v b1Rvb2xzO3JldHVybiBpKGUpJiZpKGUudmVyc2lvbil9LGtub2Nrb3V0OmZ1bmN0 aW9uIGUoKXt2YXIgZT13aW5kb3cua287cmV0dXJuIGkoZSkmJmkoZS52ZXJzaW9u KX0sanF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93LmpRdWVyeSkmJmko d2luZG93LmpRdWVyeS5mbikmJmkod2luZG93LmpRdWVyeS5mbi5qcXVlcnkpfHxp KHdpbmRvdy4kKSYmaSh3aW5kb3cuJC5mbikmJmkod2luZG93LiQuZm4uanF1ZXJ5 KX0sZG9qbzpmdW5jdGlvbigpe3JldHVybiBpKHdpbmRvdy5kb2pvKX0sbWV0ZW9y OmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93Lk1ldGVvcil9LGV4dGpzOmZ1bmN0 aW9uKCl7cmV0dXJuIGkod2luZG93LkV4dCl9LHl1aTpmdW5jdGlvbigpe3JldHVy biBpKHdpbmRvdy5ZVUkpfHxpKHdpbmRvdy5ZQUhPTyl9LHZ1ZTpmdW5jdGlvbigp e3JldHVybiBpKHdpbmRvdy5WdWUpfSx3ZWJwYWNrOmZ1bmN0aW9uKCl7cmV0dXJu IGkod2luZG93LndlYnBhY2tKc29ucCl9LHVuZGVyc2NvcmU6ZnVuY3Rpb24oKXty ZXR1cm4gaSh3aW5kb3cuXykmJmkod2luZG93Ll8ubWFwT2JqZWN0KX0sbG9kYXNo OmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93Ll8pJiZpKHdpbmRvdy5fLm1hcFZh bHVlcyl9LG9yYWNsZWpldDpmdW5jdGlvbigpe3JldHVybiBpKHdpbmRvdy5vaikm Jmkod2luZG93Lm9qLnZlcnNpb24pfSxwb2x5bWVyOmZ1bmN0aW9uKCl7cmV0dXJu IGkod2luZG93LlBvbHltZXIpJiZpKHdpbmRvdy5Qb2x5bWVyLnZlcnNpb24pfSxk MzpmdW5jdGlvbigpe3JldHVybiBpKHdpbmRvdy5kMykmJmkod2luZG93LmQzLnZl cnNpb24pfSxjYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93LmNhc3QpJiZp KHdpbmRvdy5jYXN0LmZyYW1ld29yaykmJmkod2luZG93LmNhc3QuZnJhbWV3b3Jr LlZFUlNJT04pfSxyZWR1eDpmdW5jdGlvbigpe3JldHVybiBpKHdpbmRvdy5SZWR1 eCl9LHJpb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5kb3cucmlvdCl9LHpvbmU6 ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5kb3cuWm9uZSl9LGhhbW1lcjpmdW5jdGlv bigpe3JldHVybiBpKHdpbmRvdy5IYW1tZXIpfSxzcGY6ZnVuY3Rpb24oKXtyZXR1 cm4gaSh3aW5kb3cuc3BmKX0sdGhyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5k b3cuVEhSRUUpfSxzcXVhcmVzcGFjZTpmdW5jdGlvbigpe3JldHVybiBpKHdpbmRv dy5TcXVhcmVzcGFjZSl9LGNsYXNzaWU6ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5k b3cuY2xhc3NpZSl9LGJhYnlsb246ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5kb3cu QkFCWUxPTil9LHJhbWRhOmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93LlIpJiZp KHdpbmRvdy5hcHBseVNwZWMpJiZpKHdpbmRvdy5SLmFzc29jUGF0aCl9LGF1cmVs aWE6ZnVuY3Rpb24oKXtyZXR1cm4gYSgiW2F1cmVsaWEtYXBwXSIpfSxwcm90b3R5 cGU6ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5kb3cuUHJvdG90eXBlKSYmaSh3aW5k b3cuUHJvdG90eXBlLlZlcnNpb24pfSxnb29nbGVhbmFseXRpY3M6ZnVuY3Rpb24o KXtyZXR1cm4gaSh3aW5kb3cuX2dhcSl8fGkod2luZG93Ll9nYXQpfHxpKHdpbmRv dy5nYSl8fGkod2luZG93Lkdvb2dsZUFuYWx5dGljc09iamVjdCl9LGZhY2Vib29r OmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93LkZCKXx8aSh3aW5kb3cuZmJBc3lu Y0luaXQpfSxzaGFyZXRoaXM6ZnVuY3Rpb24oKXtyZXR1cm4gaSh3aW5kb3cuX19z aGFyZXRoaXNfXyl9LGFkZHRvYW55OmZ1bmN0aW9uKCl7cmV0dXJuIGkod2luZG93 LmEyYV9zaG93X2Ryb3Bkb3duKXx8aSh3aW5kb3cuYTJhX2luaXQpfSxzdW1vOmZ1 bmN0aW9uKCl7cmV0dXJuIGkod2luZG93Ll9fc21Mb2FkZWQpfX0sZD17YW5ndWxh cjpmdW5jdGlvbigpe3ZhciBlPXZvaWQgMDtyZXR1cm4gaSh3aW5kb3cuYW5ndWxh cikmJmkod2luZG93LmFuZ3VsYXIudmVyc2lvbikmJmkod2luZG93LmFuZ3VsYXIu dmVyc2lvbi5mdWxsKSYmInN0cmluZyI9PXR5cGVvZiB3aW5kb3cuYW5ndWxhci52 ZXJzaW9uLmZ1bGwmJihlPXdpbmRvdy5hbmd1bGFyLnZlcnNpb24uZnVsbCksZX0s YmFja2JvbmU6ZnVuY3Rpb24oKXt2YXIgZT12b2lkIDA7cmV0dXJuIGkod2luZG93 LkJhY2tib25lKSYmaSh3aW5kb3cuQmFja2JvbmUuVkVSU0lPTikmJiJzdHJpbmci PT10eXBlb2Ygd2luZG93LkJhY2tib25lLlZFUlNJT04mJihlPXdpbmRvdy5CYWNr Ym9uZS5WRVJTSU9OKSxlfSxlbWJlcjpmdW5jdGlvbigpe3ZhciBlPXZvaWQgMDty ZXR1cm4gaSh3aW5kb3cuRW1iZXIpJiZpKHdpbmRvdy5FbWJlci5WRVJTSU9OKSYm InN0cmluZyI9PXR5cGVvZiB3aW5kb3cuRW1iZXIuVkVSU0lPTiYmKGU9d2luZG93 LkVtYmVyLlZFUlNJT04pLGV9LHJlYWN0OmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAw O3JldHVybiBpKHdpbmRvdy5SZWFjdCkmJmkod2luZG93LlJlYWN0LnZlcnNpb24p JiYic3RyaW5nIj09dHlwZW9mIHdpbmRvdy5SZWFjdC52ZXJzaW9uJiYoZT13aW5k b3cuUmVhY3QudmVyc2lvbiksZX0sbWl0aHJpbDpmdW5jdGlvbigpe3ZhciBlPXZv aWQgMDtyZXR1cm4gaSh3aW5kb3cubSkmJmkod2luZG93Lm0udmVyc2lvbikmJiJz dHJpbmciPT10eXBlb2Ygd2luZG93Lm0udmVyc2lvbiYmKGU9d2luZG93Lm0udmVy c2lvbiksZX0sbW9vdG9vbHM6ZnVuY3Rpb24oKXt2YXIgZT12b2lkIDA7cmV0dXJu IGkod2luZG93Lk1vb1Rvb2xzKSYmaSh3aW5kb3cuTW9vVG9vbHMudmVyc2lvbikm JiJzdHJpbmciPT10eXBlb2Ygd2luZG93Lk1vb1Rvb2xzLnZlcnNpb24mJihlPXdp bmRvdy5Nb29Ub29scy52ZXJzaW9uKSxlfSxrbm9ja291dDpmdW5jdGlvbigpe3Zh ciBlPXZvaWQgMDtyZXR1cm4gaSh3aW5kb3cua28pJiZpKHdpbmRvdy5rby52ZXJz aW9uKSYmInN0cmluZyI9PXR5cGVvZiB3aW5kb3cua28udmVyc2lvbiYmKGU9d2lu ZG93LmtvLnZlcnNpb24pLGV9LGpxdWVyeTpmdW5jdGlvbigpe3ZhciBlPXZvaWQg MDtyZXR1cm4gaSh3aW5kb3cualF1ZXJ5KSYmaSh3aW5kb3cualF1ZXJ5LmZuKSYm aSh3aW5kb3cualF1ZXJ5LmZuLmpxdWVyeSkmJiJzdHJpbmciPT10eXBlb2Ygd2lu ZG93LmpRdWVyeS5mbi5qcXVlcnk/ZT13aW5kb3cualF1ZXJ5LmZuLmpxdWVyeTpp KHdpbmRvdy4kKSYmaSh3aW5kb3cuJC5mbikmJmkod2luZG93LiQuZm4uanF1ZXJ5 KSYmInN0cmluZyI9PXR5cGVvZiB3aW5kb3cuJC5mbi5qcXVlcnkmJihlPXdpbmRv dy4kLmZuLmpxdWVyeSksZX0sZG9qbzpmdW5jdGlvbigpe3ZhciBlPXZvaWQgMDty ZXR1cm4gaSh3aW5kb3cuZG9qbykmJmkod2luZG93LmRvam8udmVyc2lvbikmJmko d2luZG93LmRvam8udmVyc2lvbi5tYWpvcikmJihlPXdpbmRvdy5kb2pvLnZlcnNp b24ubWFqb3IsaSh3aW5kb3cuZG9qby52ZXJzaW9uLm1pbm9yKSYmKGU9ZSsiLiIr d2luZG93LmRvam8udmVyc2lvbi5taW5vcixpKHdpbmRvdy5kb2pvLnZlcnNpb24u cGF0Y2gpJiYoZT1lKyIuIit3aW5kb3cuZG9qby52ZXJzaW9uLnBhdGNoKSksaSh3 aW5kb3cuZG9qby52ZXJzaW9uLmZsYWcpJiYoZSs9d2luZG93LmRvam8udmVyc2lv bi5mbGFnKSksZX0sbWV0ZW9yOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAwO3JldHVy biBpKHdpbmRvdy5NZXRlb3IpJiZpKHdpbmRvdy5NZXRlb3IucmVsZWFzZSkmJiJz dHJpbmciPT10eXBlb2Ygd2luZG93Lk1ldGVvci5yZWxlYXNlJiYoZT13aW5kb3cu TWV0ZW9yLnJlbGVhc2UpLGV9LGV4dGpzOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAw O3JldHVybiBpKHdpbmRvdy5FeHQpJiZpKHdpbmRvdy5FeHQudmVyc2lvbikmJiJz dHJpbmciPT10eXBlb2Ygd2luZG93LkV4dC52ZXJzaW9uJiYoZT13aW5kb3cuRXh0 LnZlcnNpb24pLGV9LHl1aTpmdW5jdGlvbigpe3ZhciBlPXZvaWQgMDtyZXR1cm4g aSh3aW5kb3cuWVVJKSYmaSh3aW5kb3cuWVVJLnZlcnNpb24pJiYic3RyaW5nIj09 dHlwZW9mIHdpbmRvdy5ZVUkudmVyc2lvbj9lPXdpbmRvdy5ZVUkudmVyc2lvbjpp KHdpbmRvdy5ZQUhPTykmJmkod2luZG93LllBSE9PLnZlcnNpb24pJiYic3RyaW5n Ij09dHlwZW9mIHdpbmRvdy5ZQUhPTy52ZXJzaW9uJiYoZT13aW5kb3cuWUFIT08u dmVyc2lvbiksZX0sdnVlOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAwO3JldHVybiBp KHdpbmRvdy5WdWUpJiZpKHdpbmRvdy5WdWUudmVyc2lvbikmJiJzdHJpbmciPT10 eXBlb2Ygd2luZG93LlZ1ZS52ZXJzaW9uJiYoZT13aW5kb3cuVnVlLnZlcnNpb24p LGV9LHVuZGVyc2NvcmU6ZnVuY3Rpb24oKXt2YXIgZT12b2lkIDA7cmV0dXJuIGko d2luZG93Ll8pJiZpKHdpbmRvdy5fLlZFUlNJT04pJiYic3RyaW5nIj09dHlwZW9m IHdpbmRvdy5fLlZFUlNJT04mJmkod2luZG93Ll8ubWFwT2JqZWN0KSYmKGU9d2lu ZG93Ll8uVkVSU0lPTiksZX0sbG9kYXNoOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAw O3JldHVybiBpKHdpbmRvdy5fKSYmaSh3aW5kb3cuXy5WRVJTSU9OKSYmInN0cmlu ZyI9PXR5cGVvZiB3aW5kb3cuXy5WRVJTSU9OJiZpKHdpbmRvdy5fLm1hcFZhbHVl cykmJihlPXdpbmRvdy5fLlZFUlNJT04pLGV9LG9yYWNsZWpldDpmdW5jdGlvbigp e3ZhciBlPXZvaWQgMDtyZXR1cm4gaSh3aW5kb3cub2opJiZpKHdpbmRvdy5vai52 ZXJzaW9uKSYmInN0cmluZyI9PXR5cGVvZiB3aW5kb3cub2oudmVyc2lvbiYmKGU9 d2luZG93Lm9qLnZlcnNpb24pLGV9LHBvbHltZXI6ZnVuY3Rpb24oKXt2YXIgZT12 b2lkIDA7cmV0dXJuIGkod2luZG93LlBvbHltZXIpJiZpKHdpbmRvdy5Qb2x5bWVy LnZlcnNpb24pJiYic3RyaW5nIj09dHlwZW9mIHdpbmRvdy5Qb2x5bWVyLnZlcnNp b24mJihlPXdpbmRvdy5Qb2x5bWVyLnZlcnNpb24pLGV9LGQzOmZ1bmN0aW9uKCl7 dmFyIGU9dm9pZCAwO3JldHVybiBpKHdpbmRvdy5kMykmJmkod2luZG93LmQzLnZl cnNpb24pJiYic3RyaW5nIj09dHlwZW9mIHdpbmRvdy5kMy52ZXJzaW9uJiYoZT13 aW5kb3cuZDMudmVyc2lvbiksZX0sY2FzdDpmdW5jdGlvbigpe3ZhciBlPXZvaWQg MDtyZXR1cm4gaSh3aW5kb3cuY2FzdCkmJmkod2luZG93LmNhc3QuZnJhbWV3b3Jr KSYmaSh3aW5kb3cuY2FzdC5mcmFtZXdvcmsuVkVSU0lPTikmJihlPXdpbmRvdy5j YXN0LmZyYW1ld29yay5WRVJTSU9OKSxlfSxoYW1tZXI6ZnVuY3Rpb24oKXt2YXIg ZT12b2lkIDA7cmV0dXJuIGkod2luZG93LkhhbW1lcikmJmkod2luZG93LkhhbW1l ci5WRVJTSU9OKSYmKGU9d2luZG93LkhhbW1lci5WRVJTSU9OKSxlfSx0aHJlZTpm dW5jdGlvbigpe3ZhciBlPXZvaWQgMDtyZXR1cm4gaSh3aW5kb3cuVEhSRUUpJiZp KHdpbmRvdy5USFJFRS5SRVZJU0lPTikmJihlPXdpbmRvdy5USFJFRS5SRVZJU0lP TiksZX0scHJvdG90eXBlOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LlByb3RvdHlw ZS5WZXJzaW9uO3JldHVybiBlfSxnb29nbGVhbmFseXRpY3M6ZnVuY3Rpb24oKXt2 YXIgZT0iYW5hbHl0aWNzLmpzIjtyZXR1cm4oaSh3aW5kb3cuX2dhcSl8fGkod2lu ZG93Ll9nYXQpKSYmKGU9ImdhLmpzIiksZX19O3QuZGVmYXVsdD17c3RhcnQ6ZnVu Y3Rpb24oKXshciYmby5iYXNpY1N1cHBvcnQoKSYmKHI9ITApfSxnZXRQYXJhbXM6 ZnVuY3Rpb24oKXtpZighcilyZXR1cm57fTt2YXIgZT1PYmplY3Qua2V5cyhzKS5m aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHNbZV0oKX0pLHQ9ZS5tYXAoZnVuY3Rp b24oZSl7dmFyIHQ9dm9pZCAwO3JldHVybiBkW2VdJiYodD1kW2VdKCkpLHR8fCh0 PSJ1bmsiKSxlKyItIit0fSk7cmV0dXJuIGUubGVuZ3RoP3tqc2Z3OmUsanNmd3Y6 dH06e319fSxlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l OntkZWZhdWx0OmV9fWZ1bmN0aW9uIGkoKXt2YXIgZT1yLmRlZmF1bHQoKTtlLl9o YXNNb3VudGVkRXhwYW5kZWRNZW51fHwhZnVuY3Rpb24oKXtlLl9oYXNMb2FkZWRS ZXNvdXJjZXN8fGQuZGVmYXVsdCgpO3ZhciB0PXZvaWQgMCE9PXdpbmRvdy5wYWdl WU9mZnNldD93aW5kb3cucGFnZVlPZmZzZXQ6ZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50P2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A6ZG9jdW1lbnQu Ym9keS5zY3JvbGxUb3Asbj0uMTUqYy5kZWZhdWx0KCksYT1uK3QsaT1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgiYXQtZXhwYW5kZWQtbWVudS1ob3N0Iiksbz1kb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCIuYXQtZXhwYW5kZWQtbWVudSIpLHI9ZG9jdW1l bnQucXVlcnlTZWxlY3RvcigiLmF0LWV4cGFuZGVkLW1lbnUtY2xvc2UiKSxzPWZ1 bmN0aW9uKCl7aC5kZWZhdWx0KGksImF0LWV4cGFuZGVkLW1lbnUtaGlkZGVuIiks Zi5kZWZhdWx0LnVubGlzdGVuKHIsImNsaWNrIixzKSxzPW51bGx9O2YuZGVmYXVs dC5saXN0ZW4ociwiY2xpY2siLHMpLG8uc3R5bGUudG9wPWErInB4IixnLmRlZmF1 bHQoaSwiYXQtZXhwYW5kZWQtbWVudS1oaWRkZW4iKX0oKX10Ll9fZXNNb2R1bGU9 ITAsdC5kZWZhdWx0PWk7dmFyIG89big2MTQpLHI9YShvKSxzPW4oMzkwKSxkPWEo cyksdT1uKDY1NCksYz1hKHUpLGw9bigyMyksZj1hKGwpLHA9bigzNTIpLGg9YShw KSxtPW4oMzU0KSxnPWEobSk7ZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24o ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3ZhciBuLGE9W10saT17 fSxvPU1hdGgubWluKChlLmF0dHJpYnV0ZXN8fFtdKS5sZW5ndGh8fDAsMTYwKSxy PXQucmVwbGFjZSgvOi9nLCItIik7aWYoaXNOYU4obykpcmV0dXJuIGk7Zm9yKHZh ciBzPTA7czxvO3MrKylpZihuPWUuYXR0cmlidXRlc1tzXSl7aWYoYT1uLm5hbWUu c3BsaXQodCsiOiIpLCFhfHwxPT09YS5sZW5ndGgpe2lmKDAhPT1uLm5hbWUuaW5k ZXhPZigiZGF0YS0iKSljb250aW51ZTtpZihhPW4ubmFtZS5zcGxpdCgiZGF0YS0i K3IrIi0iKSwhYXx8MT09PWEubGVuZ3RoKWNvbnRpbnVlfTI9PT1hLmxlbmd0aCYm KGlbYS5wb3AoKV09bi52YWx1ZSl9cmV0dXJuIGl9dC5fX2VzTW9kdWxlPSEwLHQu ZGVmYXVsdD1uLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsi dXNlIHN0cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl P2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBpPW4oNzgyKSxvPWEo aSkscj1uKDU4KSxzPXsic3ZraGwuYXJnIjoxLCJ1cXNoeXkuZ2kiOjF9LGQ9ZnVu Y3Rpb24oZSl7cmV0dXJuISFzW28uZGVmYXVsdChyLmdldERvbWFpbk5vUHJvdG9j b2woZSkpXX07dC5jb250YWlucz1kfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0 Ijt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3JldHVybiBl LnJlcGxhY2UoL1thLXpBLVpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5m cm9tQ2hhckNvZGUoKGU8PSJaIj85MDoxMjIpPj0oZT1lLmNoYXJDb2RlQXQoMCkr MTMpP2U6ZS0yNil9KX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0 LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNN b2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9big3ODQp LG89YShpKTt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0LG4sYSl7dmFyIGk9e2NvbmY6 dHx8e30sc2hhcmU6bnx8e319O3JldHVybiBpLmNvbmY9by5kZWZhdWx0KGUsdCwi Y29uZiIsYSksaS5zaGFyZT1vLmRlZmF1bHQoZSxuLCJzaGFyZSIsYSksaX0sZS5l eHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm dW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDpl fX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9big3ODApLG89YShpKSxyPXtlbWFpbF92 YXJzOjEscGFzc3Rocm91Z2g6MSxtb2R1bGVzOjEsdGVtcGxhdGVzOjEsc2Vydmlj ZXNfY3VzdG9tOjF9O3QuZGVmYXVsdD1mdW5jdGlvbihlLHQsbixhKXt2YXIgaSxz PXR8fHt9LGQ9e30sdT1vLmRlZmF1bHQoZSwiYWRkdGhpcyIpO2lmKCJbb2JqZWN0 IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHMpJiYh cy5ub2RlVHlwZSlmb3IoaSBpbiBzKWRbaV09c1tpXTtpZihhKWZvcihpIGluIGVb bl0pZFtpXT1lW25dW2ldO2ZvcihpIGluIHUpaWYodS5oYXNPd25Qcm9wZXJ0eShp KSl7aWYoc1tpXSYmIWEpZFtpXT1zW2ldO2Vsc2V7dmFyIGM9dVtpXTtjP2RbaV09 YzpzW2ldJiYoZFtpXT1zW2ldKSwidHJ1ZSI9PT1kW2ldP2RbaV09ITA6ImZhbHNl Ij09PWRbaV0mJihkW2ldPSExKX1pZih2b2lkIDAhPT1kW2ldJiZyW2ldJiYic3Ry aW5nIj09dHlwZW9mIGRbaV0pdHJ5e2RbaV09SlNPTi5wYXJzZShkW2ldLnJlcGxh Y2UoLycvZywnIicpKX1jYXRjaChlKXtkW2ldPV9hdGUuZXZsKCIoIitkW2ldKyIp OyIsITApfX1yZXR1cm4gZH0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24o ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9f ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9big3 ODMpLG89YShpKSxyPWRvY3VtZW50LHM9dm9pZCAwLGQ9ZnVuY3Rpb24oZSx0LGEp e3N8fChzPSEwLGUuYnV0dG9uPWZ1bmN0aW9uKGUsbixhKXtuPW58fHt9LG4ucHJv ZHVjdHx8KG4ucHJvZHVjdD0ibWVuLTMwMCIpLHQoZSx7Y29uZjpuLHNoYXJlOmF9 LHtpbnRlcm5hbDoiaW1nIn0pfSxlLnRvb2xib3g9ZnVuY3Rpb24oZSx0LGkscyxk KXtmb3IodmFyIHU9X2F0ZS51dGlsLnNlbGVjdChlKSxjPWZ1bmN0aW9uKGUsdCxu KXt2YXIgYT1yLmNlKGUpO3JldHVybiBhLmNsYXNzTmFtZT10LG4mJihhLmlkPW4p LGF9LGw9ZnVuY3Rpb24oZSl7ZS5pc0hvdmVyZWQ9MSxlLnRpbWVvdXQ9c2V0VGlt ZW91dChmdW5jdGlvbigpe2UuaXNIb3ZlcmVkJiYoZS5nZXRFbGVtZW50c0J5VGFn TmFtZSgidWwiKVswXS5zdHlsZS5kaXNwbGF5PSJibG9jayIpfSw1MDApfSxmPWZ1 bmN0aW9uKGUpe2UuaXNIb3ZlcmVkPTAsZS50aW1lb3V0JiZjbGVhclRpbWVvdXQo ZS50aW1lb3V0KSxlLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2UuaXNI b3ZlcmVkfHwoZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidWwiKVswXS5zdHlsZS5k aXNwbGF5PSJub25lIil9LDUwMCl9LHA9MDtwPHUubGVuZ3RoO3ArKyl7dmFyIGg9 dVtwXSxtPW8uZGVmYXVsdChoLHQsaSxzKSxnPXIuY2UoImRpdiIpLF89dm9pZCAw O2lmKGguc2VydmljZXM9e30saCYmaC5jbGFzc05hbWUmJihtLmNvbmYucHJvZHVj dHx8KG0uY29uZi5wcm9kdWN0PSJ0YngiKyhoLmNsYXNzTmFtZS5pbmRleE9mKCIz MngzMiIpPi0xPyIzMiI6aC5jbGFzc05hbWUuaW5kZXhPZigiMjB4MjAiKT4tMT8i MjAiOiIiKSsiLTMwMCIpLGguY2xhc3NOYW1lLmluZGV4T2YoInBlZWthYm9vX3N0 eWxlIik+LTEmJihfYXRjLl9sZFBrY3NzfHwobi5lKDIyNSxmdW5jdGlvbigpe24o Nzg2KX0pLF9hdGMuX2xkUGtjc3M9MSksaC5wZWVrYWJvb3x8KGgucGVla2Fib289 ITAsaC5vbm1vdXNlb3Zlcj1sLmJpbmQodm9pZCAwLGgpLGgub25tb3VzZW91dD1m LmJpbmQodm9pZCAwLGgpKSksaC5jbGFzc05hbWUuaW5kZXhPZigiZmxvYXRpbmdf c3R5bGUiKT4tMSYmKF9hdGMuX2xkQmFyY3NzfHwobi5lKDIyNixmdW5jdGlvbigp e24oNzg4KX0pLF9hdGMuX2xkQmFyY3NzPTEpLCFoLmZpeGVkKSkpe2guZml4ZWQ9 ITA7Zm9yKHZhciB2PWMoIkRJViIsImF0LWZsb2F0aW5nYmFyLWlubmVyIiksYj1j KCJESVYiLCJhdC1mbG9hdGluZ2Jhci1zaGFyZSIpLHc9YygiRElWIiwiYWRkdGhp c19pbnRlcm5hbF9jb250YWluZXIiKTtoLmNoaWxkTm9kZXMubGVuZ3RoPjA7KXcu YXBwZW5kQ2hpbGQoaC5maXJzdENoaWxkKTtiLmFwcGVuZENoaWxkKHcpLHYuYXBw ZW5kQ2hpbGQoYiksaC5hcHBlbmRDaGlsZCh2KX1oJiZoLmdldEVsZW1lbnRzQnlU YWdOYW1lJiYoXz1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIiksXyYmYShfLG0u Y29uZixtLnNoYXJlLCFzLCFzKSxoLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hdGNsZWFy IikubGVuZ3RoPDEmJmguYXBwZW5kQ2hpbGQoZykpLGcuY2xhc3NOYW1lPSJhdGNs ZWFyIn19KX07dC5pbml0aWFsaXplPWR9LCwsLCxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l OntkZWZhdWx0OmV9fWZ1bmN0aW9uIGkoKXt2YXIgZT1kb2N1bWVudC5jaGFyc2V0 fHxkb2N1bWVudC5jaGFyYWN0ZXJTZXR8fGRvY3VtZW50LmlucHV0RW5jb2Rpbmd8 fGRvY3VtZW50LmRlZmF1bHRDaGFyc2V0O2lmKCFlKWZvcih2YXIgdD1yLmRlZmF1 bHQoKSxuPTA7bjx0Lmxlbmd0aCYmIShlPXRbbl0uZ2V0QXR0cmlidXRlKCJjaGFy c2V0IikpO24rKyk7cmV0dXJuIWV8fGUubGVuZ3RoPjE0PyIiOmV9dC5fX2VzTW9k dWxlPSEwLHQuZGVmYXVsdD1pO3ZhciBvPW4oNzQ2KSxyPWEobyk7ZS5leHBvcnRz PXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv biBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9f ZXNNb2R1bGU9ITA7dmFyIGk9big1NjIpLG89YShpKSxyPW4oNzI0KSxzPWEociks ZD1udWxsLHU9e2dldENvbnRhaW5lcjpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50 cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT9kb2N1bWVudDphcmd1 bWVudHNbMF07cmV0dXJuIGUuZ2V0RWxlbWVudEJ5SWQoIl9hdHNzaCIpfHx1LmNy ZWF0ZUNvbnRhaW5lcihlKX0sY3JlYXRlQ29udGFpbmVyOmZ1bmN0aW9uKCl7dmFy IGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP2Rv Y3VtZW50OmFyZ3VtZW50c1swXSx0PWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0 dXJuIHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0LmlkPSJfYXRzc2giLG8u ZGVmYXVsdCh0KSxlLmJvZHkuaW5zZXJ0QmVmb3JlKHQsZS5ib2R5LmZpcnN0Q2hp bGQpLHR9LGdldFBvc3RNYW46ZnVuY3Rpb24oKXtyZXR1cm4gZH0sY3JlYXRlUG9z dE1hbjpmdW5jdGlvbihlLHQpe2Q9bmV3IHMuZGVmYXVsdChlLHQpfX07dC5kZWZh dWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug c3RyaWN0IjtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7 ZGVmYXVsdDplfX1mdW5jdGlvbiBpKGUsdCl7ci5kZWZhdWx0Lm9uTG9hZCh0Lm9u TG9hZCkub25FcnJvcih0Lm9uRXJyb3IpLm9uRGF0YUVycm9yKHQub25EYXRhRXJy b3IpLmdvKGUpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIgbz1uKDc2 MCkscj1hKG8pO2UuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCl7ZS5l eHBvcnRzPWZ1bmN0aW9uKGUsdCxuLGEsaSl7dmFyIG89d2luZG93LmRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxyPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVF bGVtZW50KCJkaXYiKTtyLmNsYXNzTmFtZT1uLHZvaWQgMCE9PWkmJihyLnN0eWxl LndpZHRoPWkpLHZvaWQgMCE9PWE/ci5zdHlsZS5oZWlnaHQ9YTpyLnN0eWxlLmhl aWdodD0iMjVweCIsInN0cmluZyI9PXR5cGVvZiB0P28uaW5uZXJIVE1MPXQ6by5h cHBlbmRDaGlsZCh0KSxyLmFwcGVuZENoaWxkKG8pLGUuYXBwZW5kQ2hpbGQocil9 fSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gYSgpe3ZhciBlPXdpbmRvdy5kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIGVbImRhdGEtcGluaXQtZG8i XT0iYnV0dG9uQm9va21hcmsiLGUuaHJlZj0iaHR0cHM6Ly93d3cucGludGVyZXN0 LmNvbS9waW4vY3JlYXRlL2J1dHRvbi8iLGV9dmFyIGk9big3OTMpLG89big1NTQp LHI9Ii8vYXNzZXRzLnBpbnRlcmVzdC5jb20vanMvcGluaXQuanMiO2UuZXhwb3J0 cz1mdW5jdGlvbihlKXtpKGUsYSgpLCJwaW5faXRfaWZyYW1lX3dpZGdldCIpLG8o ciwhMCwhMCx2b2lkIDAsd2luZG93LmRvY3VtZW50LmJvZHkpfX0sZnVuY3Rpb24o ZSx0LG4pe3ZhciBhPW4oNzIpLGk9big3Myksbz1uKDc0KSxyPW4oNzk2KTtlLmV4 cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWFbZV18fHZvaWQgMCE9 PWlbZV18fHZvaWQgMCE9PW9bZV18fHZvaWQgMCE9PXJbZV19fSxmdW5jdGlvbihl LHQpe2UuZXhwb3J0cz17YW1hem9uc21pbGU6e25hbWU6IkFtYXpvbiBTbWlsZSJ9 LGNhc2htZTp7bmFtZToiQ2FzaC5tZSJ9LHBhdHJlb246e30scGF5cGFsbWU6e25h bWU6IlBheXBhbC5NZSJ9LHZlbm1vOnt9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBh PW4oMzY4KS5nZXRPYmplY3RXaXRoUHJvcCxpPXsibWFpbC5nb29nbGUuY29tIjoi Z21haWwiLCJtYWlsLnlhaG9vLmNvbSI6InlhaG9vbWFpbCIsIm1haWwuYW9sLmNv bSI6ImFvbG1haWwiLCJtYWlsLmxpdmUuY29tIjoiaG90bWFpbCJ9O2UuZXhwb3J0 cz1mdW5jdGlvbihlKXtyZXR1cm4gZT1lLnNwbGl0KCIuIikuc2xpY2UoLTMpLmpv aW4oIi4iKSxpW2VdP2lbZV06KGU9ZS5zcGxpdCgiLiIpLnNsaWNlKC0yKS5zaGlm dCgpLGEoIm5hbWUiKVtlXT9lOiIiKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0 cmljdCI7ZnVuY3Rpb24gYShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2Rl ZmF1bHQ6ZX19ZnVuY3Rpb24gaShlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8 PTJ8fHZvaWQgMD09PWFyZ3VtZW50c1syXT9fYXRlLmVkOmFyZ3VtZW50c1syXSxh PXIuZGVmYXVsdC5nZXRDb250YWluZXIoKSxpPWEuZmlyc3RFbGVtZW50Q2hpbGQ7 aXx8Yy5kZWZhdWx0LmVycm9yKCJDb3VsZCBub3QgZmluZCB0aGUgc2ggZnJhbWUh IiksZC5kZWZhdWx0LnJlc2NhbigpLHdpbmRvdy5hZGR0aGlzX3NoYXJlPXdpbmRv dy5hZGR0aGlzX3NoYXJlfHx7fSx3aW5kb3cuYWRkdGhpc19zaGFyZS51cmw9InN0 cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wP2U6ZC5kZWZhdWx0LmR1LHdpbmRv dy5hZGR0aGlzX3NoYXJlLnRpdGxlPSJzdHJpbmciPT10eXBlb2YgdD90OmQuZGVm YXVsdC50aXRsZSxfYXRlLmR1PWwudHJ1bmNhdGVVUkwoZC5kZWZhdWx0LmR1KTt2 YXIgbz1EYXRlLm5vdygpO2lmKG8tQz41MDApe3ZhciBzPWZ1bmN0aW9uKCl7dmFy IGU9Zy5kZWZhdWx0LmdldExvanNvblJlcXVlc3RPYmplY3QoKTtpZighdy5kZWZh dWx0Lm9iamVjdChlKSlyZXR1cm57djp2b2lkIDB9O3ZhciB0PXkuZGVmYXVsdCh3 aW5kb3cubG9jYXRpb24uaHJlZiksbj1oLmRlZmF1bHQoZSx7ZHA6dC5kb21haW4s ZHI6ZS5kcCxmcDpsLnRydW5jYXRlVVJMKHQucGF0aCwiZnAiLDUwMCksZnI6ZS5m cCxjb2xjOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSk7Zy5kZWZhdWx0LnNldExvanNv blJlcXVlc3RPYmplY3Qobiksdi5kZWZhdWx0KG4se29uTG9hZDpmdW5jdGlvbih0 KXtpZih2b2lkIDA9PT1lfHx2b2lkIDA9PT1lLmJrbHx8MSE9PWUuYmtsKXt2YXIg bj10WyJwcm8tY29uZmlnIl18fHt9O19hdGUuZWQuZmlyZSgiYWRkdGhpcy5sb2pz b24ucmVzcG9uc2UiLG51bGwse2J0Mjp0LmJ0Mixsb2M6dC5sb2MsY29uZmlnOm4u X2RlZmF1bHQ/bjpudWxsLHBybzp0LnByb3x8ITEscGVyQ29uZmlnOnRbInBlci1j b25maWciXXx8e30sc3Vic2NyaXB0aW9uOnQuc3Vic2NyaXB0aW9uLGN1c3RvbU1l c3NhZ2VzOnQuY3VzdG9tTWVzc2FnZXN9KX19LG9uRXJyb3I6ZnVuY3Rpb24oZSl7 Y29uc29sZS5sb2coZSl9LG9uRGF0YUVycm9yOmZ1bmN0aW9uKGUpe2NvbnNvbGUu bG9nKGUpfX0pLEM9bzt2YXIgcz1pLnNyYzthLnJlbW92ZUNoaWxkKGkpLF9hdGUu c2lkPWYubWFrZUNVSUQoKTt2YXIgZD1fYXRlLnRyYWNrLmN0ZigpO2Quc3JjPXMu cmVwbGFjZSgvc2lkXD1bYS16QS1aMC05XSsvLCJzaWQ9IitfYXRlLnNpZCksYS5h cHBlbmRDaGlsZChkKSxyLmRlZmF1bHQuY3JlYXRlUG9zdE1hbihkLGQuc3JjKSxr LnJlZnJlc2hDYWxsTGF5ZXJzKCl9KCk7aWYoIm9iamVjdCI9PXR5cGVvZiBzKXJl dHVybiBzLnZ9bi5maXJlKCJhZGR0aGlzLmxheWVycy5yZWZyZXNoIixudWxsLG51 bGwsITApfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIgbz1uKDc5MSks cj1hKG8pLHM9big2MyksZD1hKHMpLHU9bigxMyksYz1hKHUpLGw9big3MzUpLGY9 big1OSkscD1uKDgpLGg9YShwKSxtPW4oMzApLGc9YShtKSxfPW4oNzkyKSx2PWEo XyksYj1uKDExKSx3PWEoYikseD1uKDc1NykseT1hKHgpLGs9big3OTkpLEM9RGF0 ZS5ub3coKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l OntkZWZhdWx0OmV9fWZ1bmN0aW9uIGkoKXtpZih2b2lkIDAhPT1kLmRlZmF1bHQm JnZvaWQgMCE9PWQuZGVmYXVsdC5nZXRMYXllcnNDb25maWcpe3ZhciBlPWQuZGVm YXVsdC5nZXRMYXllcnNDb25maWcoKTtpZihlKXt2YXIgdD1yLmRlZmF1bHQoe2Nm czoxfSxlKTt2b2lkIDAhPT10JiZ2b2lkIDAhPT10Ll9kZWZhdWx0JiZ2b2lkIDAh PT10Ll9kZWZhdWx0LndpZGdldHMmJnZvaWQgMCE9PXQuX2RlZmF1bHQud2lkZ2V0 cy5zaGZzJiZkZWxldGUgdC5fZGVmYXVsdC53aWRnZXRzLnNoZnMsdm9pZCAwIT09 d2luZG93JiZ2b2lkIDAhPT13aW5kb3cuYWRkdGhpcyYmdm9pZCAwIT09d2luZG93 LmFkZHRoaXMubGF5ZXJzJiZ3aW5kb3cuYWRkdGhpcy5sYXllcnModCl9fX10Ll9f ZXNNb2R1bGU9ITAsdC5yZWZyZXNoQ2FsbExheWVycz1pO3ZhciBvPW4oOCkscj1h KG8pLHM9bigzMCksZD1hKHMpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi O2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0 OmV9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gZVt0XT1lW3RdfHx7fSxmdW5jdGlv bihuLGEpe3ZhciBpPWEudG9TdHJpbmcoKSxvPWQuZGVmYXVsdChpKSxzPWVbdF1b b107cmV0dXJuIHM/IXIuZGVmYXVsdChzLG4pJiYocy5wdXNoKG4pLGEoKSwhMCk6 KGVbdF1bb109W25dLGEoKSwhMCl9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9 aTt2YXIgbz1uKDY2Nikscj1hKG8pLHM9bigzNzcpLGQ9YShzKTtlLmV4cG9ydHM9 dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u IGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuX19l c01vZHVsZT0hMDt2YXIgaT1uKDU0Nyksbz1hKGkpLHI9big2NTMpLHM9YShyKSxk PW4oNjMpLHU9YShkKSxjPW4oNTU5KSxsPWEoYyksZj1uKDY5MSkscD1hKGYpLGg9 ZnVuY3Rpb24oZSx0LG4pe2UmJiFmdW5jdGlvbigpe3ZhciBhPXNldEludGVydmFs KGZ1bmN0aW9uKCl7ZS5jbG9zZWQmJihjbGVhckludGVydmFsKGEpLHQmJiJmdW5j dGlvbiI9PXR5cGVvZiB0JiZ0KG4pKX0sMTAwKX0oKX0sbT1mdW5jdGlvbihlKXt2 YXIgdD12b2lkIDA7c3dpdGNoKGUpe2Nhc2Uid29yZHByZXNzIjp0PSJibG9nIjti cmVhaztkZWZhdWx0OnQ9InVzZXIifXJldHVybiB0fSxnPWZ1bmN0aW9uKGUpe3Jl dHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKX0sXz1mdW5jdGlvbihl KXt2YXIgdD1lLnR5cGUsbj1lLmJ1dHRvblNlbGVjdG9yLGE9ZS5jbGljayxpPWUu Y2xvc2Uscj1lLnByb2R1Y3QsZD1lLmVsZW1lbnQsYz12b2lkIDA9PT1kP2RvY3Vt ZW50OmQ7aWYoInN0cmluZyIhPXR5cGVvZiBuJiZhJiYiZnVuY3Rpb24iIT10eXBl b2YgYSYmaSYmImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEVycm9yKCJC YWQgT3B0aW9ucyIpO3AuZGVmYXVsdC5hZGRQQ08ocik7dmFyIGY9ZnVuY3Rpb24o ZSl7dmFyIG49ZS50YXJnZXQsZD1nKG4uYXR0cmlidXRlcykubWFwKGZ1bmN0aW9u KGUpe3JldHVybltlLm5hbWUsZV19KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1 cm4gZVt0WzBdXT10WzFdLnZhbHVlLGV9LHt9KTt1LmRlZmF1bHQucmVzY2FuKCk7 dmFyIGM9ZFsiZGF0YS1zZXJ2aWNlIl0sZj1kWyJkYXRhLXRpdGxlIl18fHdpbmRv dy5hZGR0aGlzX3NoYXJlLnRpdGxlfHx1LmRlZmF1bHQudGl0bGUscD1kWyJkYXRh LXVybCJdfHx3aW5kb3cuYWRkdGhpc19zaGFyZS51cmx8fHUuZGVmYXVsdC5kdSxf PWRbImRhdGEtZGVzY3JpcHRpb24iXXx8d2luZG93LmFkZHRoaXNfc2hhcmUuZGVz Y3JpcHRpb24sdj1kWyJkYXRhLW1lZGlhIl18fHdpbmRvdy5hZGR0aGlzX3NoYXJl Lm1lZGlhLGI9ZFsiZGF0YS11c2VybmFtZSJdLHc9ZFsiZGF0YS11c2VydHlwZSJd fHxtKGMpLHg9dm9pZCAwO3dpbmRvdy5hZGR0aGlzX2NvbmZpZyYmKHg9bC5kZWZh dWx0KHdpbmRvdy5hZGR0aGlzX2NvbmZpZykpO3ZhciB5PXZvaWQgMDt3aW5kb3cu YWRkdGhpc19zaGFyZSYmKHk9bC5kZWZhdWx0KHdpbmRvdy5hZGR0aGlzX3NoYXJl KSk7dmFyIGs9dm9pZCAwLEM9e307c3dpdGNoKHQpe2Nhc2Uic2hhcmUiOkM9e3Nl cnZpY2U6YyxtZWRpYTp2LHVybDpwLHRpdGxlOmYsZGVzY3JpcHRpb246X30saz1v LmRlZmF1bHQoYyx7bWVkaWE6dix1cmw6cCx0aXRsZTpmLGRlc2NyaXB0aW9uOl8s cHJvZHVjdDpyfSk7YnJlYWs7Y2FzZSJmb2xsb3ciOkM9e3NlcnZpY2U6Yyx1c2Vy bmFtZTpiLHVzZXJ0eXBlOnd9LGs9cy5kZWZhdWx0KGMse2lkOmIsdXNlclR5cGU6 d30scix4LHkpfWgoayxpLEMpLGEmJmEoQyl9O2coYy5xdWVyeVNlbGVjdG9yQWxs KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFkZEV2ZW50TGlzdGVu ZXIoImNsaWNrIixmKX0pfTt0LmRlZmF1bHQ9ZnVuY3Rpb24oZSl7ZS5zaGFyZUJ1 dHRvbj1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQg MD09PWFyZ3VtZW50c1swXT97fTphcmd1bWVudHNbMF07cmV0dXJuIHQuZWxlbWVu dD1kb2N1bWVudCx0LmJ1dHRvblNlbGVjdG9yPXQuYnV0dG9uX3NlbGVjdG9yfHwi LmFkZHRoaXNfc2hhcmVfYnV0dG9uIix0LnR5cGU9InNoYXJlIix0LnByb2R1Y3Q9 InNiYXBpIixfKHQpLGV9LGUuZm9sbG93QnV0dG9uPWZ1bmN0aW9uKCl7dmFyIHQ9 YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3t9OmFy Z3VtZW50c1swXTtyZXR1cm4gdC5lbGVtZW50PWRvY3VtZW50LHQuYnV0dG9uU2Vs ZWN0b3I9dC5idXR0b25fc2VsZWN0b3J8fCIuYWRkdGhpc19mb2xsb3dfYnV0dG9u Iix0LnR5cGU9ImZvbGxvdyIsdC5wcm9kdWN0PSJmYmFwaSIsXyh0KSxlfSxlLnNo YXJlPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAw PT09YXJndW1lbnRzWzBdP3t9OmFyZ3VtZW50c1swXSxuPXQuY29udGFpbmVyX3Nl bGVjdG9yfHwiLmFkZHRoaXNfc2hhcmUiLGE9dC5idXR0b25fc2VsZWN0b3J8fCIu YWRkdGhpc19zaGFyZV9idXR0b24iLGk9dC5jbGljayxvPXQuY2xvc2U7aWYoInN0 cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigiQmFkIE9wdGlvbnMiKTty ZXR1cm4gZyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKG4pKS5tYXAoZnVuY3Rp b24oZSl7dC5lbGVtZW50PWUsXyh7ZWxlbWVudDplLGNsaWNrOmksY2xvc2U6byxi dXR0b25TZWxlY3RvcjphLHR5cGU6InNoYXJlIixwcm9kdWN0OiJzYXBpIn0pfSks ZX0sZS5mb2xsb3c9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0w fHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdLG49dC5jb250 YWluZXJfc2VsZWN0b3J8fCIuYWRkdGhpc19mb2xsb3ciLGE9dC5idXR0b25fc2Vs ZWN0b3J8fCIuYWRkdGhpc19mb2xsb3dfYnV0dG9uIixpPXQuY2xpY2ssbz10LmNs b3NlO2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIkJhZCBP cHRpb25zIik7cmV0dXJuIGcoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChuKSku bWFwKGZ1bmN0aW9uKGUpe3QuZWxlbWVudD1lLF8oe2VsZW1lbnQ6ZSxjbGljazpp LGNsb3NlOm8sYnV0dG9uU2VsZWN0b3I6YSx0eXBlOiJmb2xsb3ciLHByb2R1Y3Q6 ImZhcGkifSl9KSxlfX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0 LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7cmV0dXJuIHIrIj9yZXY9Iit3 aW5kb3cuX2F0Yy5yZXYrIiZjPSIrJF9fJC5zZXJpYWxpemUoKSsiJnB1Yj0iK28o KSsiJmRldmljZT0iKyExPyJtb2JpbGUiOiJkZXNrdG9wIn12YXIgaT1uKDIzKS5s aXN0ZW4sbz1uKDU0KSxyPSIvL20uYWRkdGhpc2VkZ2UuY29tL2xpdmUvanNlIjsi dW5kZWZpbmVkIiE9dHlwZW9mICRfXyQmJih3aW5kb3cubmF2aWdhdG9yLnNlbmRC ZWFjb24/aSh3aW5kb3csImJlZm9yZXVubG9hZCIsZnVuY3Rpb24oKXtuYXZpZ2F0 b3Iuc2VuZEJlYWNvbihhKCksInt9Iil9KTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7 dmFyIGU9bmV3IEltYWdlO2Uuc3JjPWEoKX0sMjVlMykpfV0pKTs= ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=estaticas-general.css Content-Type: text/css; name=estaticas-general.css Content-Location: https://euroresidentes.com/css/estaticas-general.css Content-Transfer-Encoding: 8bit /*GENERAL*/ @charset "utf-8"; html { overflow-x: hidden; } body {background-color: #ffffff;overflow-x: hidden;padding:0;} h1 {font-family: 'Montserrat', 'Open Sans',sans-serif;font-size: 35px;margin-left: 10px;margin-bottom: 25px;margin-top: 20px;font-weight: bold;font-style: normal;color: #393636;} h2 {font-family: 'Montserrat', 'Open Sans', sans-serif;font-size:25px;margin-bottom: 25px; font-weight:600;font-style: normal;line-height: 30px;color:#393636;} h3 {font-family: 'Montserrat', 'Open Sans', sans-serif;font-size: 20px;margin-bottom: 20px;line-height: 22px;font-weight:600;font-style: normal;color:#393636;} h4 {font-family: 'Montserrat', 'Open Sans', sans-serif;font-size: 16px;line-height: 18px;font-weight: 400;font-style: normal;line-height:20px;color:#393636;} p {margin-bottom: 20px; font-family: 'Open Sans', sans-serif;font-size: 16px;line-height: 20px;} div, li {font-family: 'Open Sans', sans-serif; font-size: 16px;} ul{padding-left:15px;} h2 a:link {color: #384654;} h3 a:link {color: #384654;} h4 a:link {color: #384654;} h2 a:visited {color: #384654;} h3 a:visited {color: #384654;} h4 a:visited {color: #384654;} h2 a:hover {color: #D95A57;} h3 a:hover {color: #D95A57;} h4 a:hover {color: #D95A57;} a:visited {color: #0088cc;} a:hover {color: #0088cc;text-decoration: underline;} .header_texto a, .header_texto a:hover, .header_texto a:visited, .header_texto a:active{color: #ffffff;} .div-gpt{text-align: center;margin:20px 0;} @media print { a[href]:after { content: "";} } section.principal{margin-top:120px;} .row{margin-right: -15px; margin-left: -15px;} .opacidad:hover { opacity:0.8;} header {height:80px;background-color:#fff !important;box-shadow: 0 0 10px 0 rgba(0,0,0,0.5) !important;border:0 !important;margin-left:0 !important; margin-right:0 !important; border-radius: 0 !important;} /*---*/ .toggle-nav {display:none;} .menu-ul{margin: 0px !important; } .dropdown-menu-general{display: none;} .dropdown-menu{top: 25px;} .main-sublist:hover { opacity: .7; background-color: #e4e4ff;} .main-sublist-salud { border-left: solid 3px #0c8a2d;} .main-sublist-estilo { border-left: solid 3px #f25958;} .main-sublist-hogar { border-left: solid 3px #00cccc;} .main-sublist-horoscopos { border-left: solid 3px #6a0e75;} .main-sublist-amor { border-left: solid 3px red; } .main-sublist-empresa { border-left: solid 3px #00CCCC; } .main-sublist-tecnologia { border-left: solid 3px #ff6633;} .main-sublist-alimentacion { border-left: solid 3px red;} .bootstradapt{ z-index: 999999;} .bootstradapt .menu-ul>li{padding: 10px 2em 10px 2em;} .main-sublist{padding: 10px 5px; min-width:150px;} .dropdown-menu a :hover{color: #555; } .yamm-content .row{margin:0px;} /*---*/ /*HEADER*/ header nav{z-index: 99999;} header .image-logo { margin-top: 20px; } header .image-logo img{width:100%;} header .info-blog .title-blog{position: relative;height:80px;} header .info-blog .title { margin-bottom: 0; border-radius: 4px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; position: absolute; left: 0; bottom: -2px; max-width: 250px; text-align: left; color: #fff !important; background-color: #DB5954; padding: 15px 25px; max-width: fit-content; font-size: 22px !important; font-weight: 500 !important; font-family: 'Montserrat', sans-serif;transform: translateY(-2px);} header .header-search2 {margin-top:20px;} header .header-search2 input, header .header-search2 button{height:32px; margin: 0!important; border: 1px solid #EFEBE7;font-family: 'Open Sans', sans-serif;font-size: 14px;padding:5px;border-right: 1px solid #fff;color:#666;} header .header-search2 button{background-color:#fff; transform: translateX(-6px);border-right: 1px solid #EFEBE7;border-left: 1px solid #fff;} .header-social-media .social-profile-icons{display: inline-block;margin-top:12px;width:100%;text-align: center;} .header-social-media .social-profile-icons ul li { display: inline-block;margin-top:10px;background: none; border: none; /*float: left;*/ list-style-type: none; margin: 0 1.5px 3px 1.5px!important; padding: 0!important; border: none!important;} .header-social-media .social-profile-icons ul li a { height: 32px; width: 32px; display: block; float: left; text-align: center; line-height: 30px; color: #FFF!important; transition: all .4s; padding: 0; position: relative;font-size: 14px;} /*Enlaces de interes*/ .row .interesting-links{ margin-top: 10px;} .interesting img{min-height: 150px;margin: 10px 0 10px 0;} .interesting hr{margin-bottom: 10px;} .interesting-links a{color: #525260}; .interesting-links a:hover, .interesting a:focus{color: #F07445 !important;} .interesting.nuevo > div{min-height: 310px;} /*Social Media Icons*/ .social-media-icons{width:100%;margin-top:15px;float:left;} .social-profile-icons .social-facebook a, #share-buttons .fa-facebook, .social-media-icons .social-facebook{ background: #5d82d1 } .social-profile-icons .social-gplus a, #share-buttons .fa-google-plus, .social-media-icons .social-gplus { background: #eb5e4c; } .social-profile-icons .social-pinterest a, #share-buttons .fa-pinterest, .social-media-icons .social-pinterest { background: #e13138;} .social-profile-icons .social-twitter a, #share-buttons .fa-twitter, .social-media-icons .social-twitter { background: #40bff5;} .social-profile-icons .social-youtube a, #share-buttons .fa-youtube, .social-media-icons .social-youtubes { background: #c9322b;} #share-buttons .fa-linkedin{ background: #0077B5; } #share-buttons .fa-envelope{ background: #666666; } #share-buttons .fa{font-size: 14px;height:32px; width: 32px;color:#ffffff;line-height: 32px;text-align: center;margin-bottom:5px;} #pageshare{background:transparent !important;} .social-media-icons a { text-align: center; display: inline-block; line-height: 30px;color: #fff; height:32px; width:32px; } .social-media-icons button{background: #666; border: none; height: 32px; vertical-align: bottom;color:#fff;} .social-media-icons button span{margin-right:10px;} .botones-compartir {margin: 20px 0px 10px;font-size: 30px;text-align: center;} #pageshare {position:fixed; bottom:15%; left:0; float:left; border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#fff;z-index:10;} /*---*/ .bgheader{background-color: #ffffff; background-repeat: repeat-x;background-image: url(http://www.euroresidentes.com/imagenes/home/bg_grey.jpg);} .header {width: 100%;color: #FFFFFF;font-family: "Open Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;line-height: 1,5em;font-style: normal;font-size: large;text-align: left;border-radius: 10px 10px 0px 0px;margin-top: 0px;float: left;min-height: 40px;} .header_logo{margin-top: 16px;margin-left:5px;margin-bottom:20px;} .cap_ocio {text-align: left;background-color: #F3F3F3;font-size: 16px;padding: 10px;margin: 0 0 10px 0;} .lista li {margin-bottom:12px;} .social_media{margin-top: 30px;margin-bottom:20px;margin-left: 130px;} .social_media img {margin-right:3px;float:left;} .share_buttons{ margin-top: 10px; margin-right: 5px; margin-bottom: 10px;} .share_buttons img {float:right; min-height: 20px; min-width: 20px; margin-right: 3px;} .buscador{text-align: center; margin-top: 10px !important;padding: 5px;display: inline-block;min-width: 300px;margin-left: -17px;} .buscador input[type="text"]{border:1px solid #c4c4c4;} .buscador .btn{background-color:#DB5954;color:#fff;padding:4px 20px; border-radius:2px; border-color:#DB5954;margin-left:4px !important;} /*---*/ /*Menu izquierda*/ /*---*/ .menu_izquierda {color: #333333;border-top-color: #406773;background-color: #F2F2ED;padding: 10px;font-size: small;border-top-style: solid;} .menu_izquierda ul {margin-left: 0;} .menu_izquierda li {padding: 8px;border-bottom: 1px solid #CCCCCC;list-style-position: inside;list-style-type: none;} .menu_izquierda li {padding: 8px;border-bottom: 1px solid #CCCCCC;list-style-position: inside;list-style-type: none;} .menu_izquierda li a.gris {color:#333;text-decoration:none;} .menu_izquierda li a:hover.gris {text-decoration:underline;} .intro {padding-bottom: 10px;} .pie{ color: #666; background-color: #EFEFEF;text-align: left; float:left;padding: 30px;margin-top: 20px !important;margin-bottom:20px !important;width: 100%;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin-left: auto;margin-right: auto;} .social_media_pie{margin-top: 10px; margin-bottom:60px;} .social_media_pie img {margin-right:3px; float:left;} .diccionario thead th{color: #ffffff;background-color: #406773;} .diccionario th{background-color: #EEE;} /*---*/ /*Colores Texto*/ /*---*/ .texto-verde{color: #00B200;} .texto-rojo{color: #FF3300; } .texto-resaltado-bg-verde{color: #FFF;background-color: #090;padding:8px;} .texto-resaltado-bg-verde1{color: #333;background-color: #C6FFC6;padding: 8px; } .texto-resaltado-bg-naranja{color: #FFF;background-color: #FF8A00;padding:8px;} .texto-resaltado-bg-rojo{color: #FFF;background-color: #FF3300;padding:8px;} .texto-resaltado-bg-gris{color: #FFF;background-color: #333;padding:8px;} .texto-resaltado-bg-gris1{color: #FFF;background-color: #999;padding:8px;} .texto-resaltado-bg-gris2{color: #393636;background-color: #F2F2F2;padding: 8px; } .texto-resaltado-bg-azul{color: #FFF;background-color: #00BFFF;padding:8px;} .texto-resaltado-bg-amarillo{color: #FFF;background-color: #FFBF00;padding:8px;} .texto-resaltado-bg-morado{color: #FFF;background-color: #300040;padding:8px;} /*---*/ /* BOOTSTRAP OVERRRIDES */ .btn-success:visited{ color: #ffffff; background-color: #51a351; *background-color: #499249;} .flex-video { position: relative; padding-top: 1.5625em; padding-bottom: 67.5%; height: 0; margin-bottom: 1em; overflow: hidden; } .flex-video.widescreen {padding-bottom: 57.25%; } .flex-video.vimeo {padding-top: 0; }.flex-video iframe, .flex-video object,.flex-video embed,.flex-video video {position: absolute;top: 0;left: 2px;width: 100%;height: 100%;} .navbar-inner { background-size:cover;} .nabvar-logo{ font-family: "Crete Round";} .feedback-box{ background-color: #ACE1F1; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px;padding: 10px;float: left;} .feedback-box a:link { color: #ffffff; text-decoration: none;} .feedback-box a:visited { text-decoration: none; color: #ffffff;} .feedback-box a:hover { text-decoration: underline; color:#ffffff;} .feedback-box a:active { text-decoration: none;} .feedback_title{ font-weight: bold; font-size: 20px; margin:10px;} .contact{ background-color: #3FC3C8; border-radius: 5px 5px 5px 5px; padding:10px; text-align: center; color: white; font-size: 14px;} .box_textarea { border:1px solid #999999; width:91%; color: black; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;} /*CONTENIDO*/ /*.navSuenos{margin-top:120px;}*/ .navSuenos li{display: inline-block;list-style: none;padding:5px 10px;border-radius: 4px;} .navSuenos li a{color:#333;} .navSuenos li.root{background-color:#1F9F9E;} .navSuenos li.root a{color:#fff;} .texto_autor {font-family: 'Montserrat', sans-serif;background-color: #f2f2f2; margin-right: 20px; font-size: 14px; padding: 5px; border-radius: 4px;} .enlaceautor {font-family: 'Montserrat', sans-serif;font-size: 10px;line-height: 5px; line-height:16px; } .contenido_principal{font-size: small;} .contenido_principal img{float: left;padding: 5px;} .publicidad_cuadro{float: left;margin-right: 2em;padding-top: 15px; } .publi_rectangular {text-align: center;padding: 25px 0 25px 0 ; } .publi_rectangular_sup {text-align: center;padding: 10px 0 25px 0 ;} .publi_rectangular_sup img {vertical-align: top;} .pub-bottom{margin-bottom: 20px;} .zona_busca {padding: 10px 0 25px 0 ;} hr {height: 1px; border-top: 1px solid grey; margin-bottom: 10px;} .imagen_izquierda {float: left;margin-right:10px;vertical-align: top;} .imagen_derecha {float: right;margin-top:20px;margin-left:20px;margin-right:20px;margin-bottom:30px;} #preview a:hover {text-decoration: underline !important;} .img-responsive{ max-width:100%;display:block;height:auto;} .frases_contenido p {display:block;padding: 5px 10px 20px 8px;} .horoscopos{margin-top: 10px;margin-bottom:20px;} .horoscopos img {margin-right:5px;margin-bottom:10px;} .caja {border: thin solid #CCCCCC;padding: 5px;} .caja_padding_inferior{ padding-bottom: 30px;} .caja_margen_inferior{ margin-bottom: 10px;} a.enlaceautor {font-family: 'Montserrat', sans-serif;color: #666;text-decoration:none;} a.enlaceautor:link {font-family: 'Montserrat', sans-serif;color: #666;text-decoration:none;} a.enlaceautor:visited {font-family: 'Montserrat', sans-serif;color: #666;} a.enlaceautor:hover {font-family: 'Montserrat', sans-serif;color: #00CCFF;text-decoration:none;} a.texto_autor {font-family: 'Montserrat', sans-serif;color: #666;text-decoration:none;} a.texto_autor:link {font-family: 'Montserrat', sans-serif;color: #666;text-decoration:none;} a.texto_autor:visited {font-family: 'Montserrat', sans-serif;color: #666;} a.texto_autor:hover {font-family: 'Montserrat', sans-serif;color: #666;text-decoration:underline;} .noticia-principal { font-family: 'Montserrat', Helvetica, Arial, sans-serif; font-size: 27px; line-height: 30px;margin-bottom: 20px; font-weight: bold;} /*Footer*/ .footer{background-color:#fff !important;padding: 0 !important;margin:20px 0;overflow-x: hidden;} .footer .container{padding-top:10px; padding-bottom: 10px;} .footer .wdgts{background-color: #eef5f7 !important;} .footer .copy, footer .copyright{text-align: center;margin-bottom: 10px;} .footer .logo{text-align: left;margin-bottom: 10px;} .footer h6, footer h6 a{ font-family: 'Open Sans', sans-serif; color:#555555!important;font-size: 18px; font-weight: 700; text-transform: none; } .footer a, .footer a:link, .footer a:visited, .footer a:active {color: #333;text-decoration: none;text-align: center;} .footer a:hover {text-decoration: underline;color:#666;} .footer iframe{border:0;} .footer .img-responsive{width: 100%;max-width: 350px;} .footer p{margin-right:20px;} @media (max-width: 768px) { /*tablet*/ .bgheader {margin-left: -20px;margin-right: -20px;} .bgheader .container {margin-left: 20px;margin-right: 20px;} .table-responsive {width: 100%;margin-bottom: 15px;overflow-x: scroll;overflow-y: hidden;border: 1px solid #dddddd;} .table-responsive > .table {margin-bottom: 0;background-color: #fff;} .interesting img{min-height: 50px;} .interesting.nuevo > div { min-height: inherit; } } @media (max-width: 480px) { /*mobile*/ ul{padding-left:0px;} section.principal{margin-top:80px;} header{max-height: 60px;} header .logo-movil img{margin-top:15px; margin-left:10px; max-width: 180px;} .footer ul, .post ul {padding-left:10px;} .footer .col-md-4, .footer .col-md-3{padding:0 30px;} .footer .logo{text-align: center;} .post{padding:15px !important;} .relationed>div:nth-of-type(2),.relationed>div:nth-of-type(3), .relationed>div:nth-last-of-type(2),.relationed>div:nth-last-of-type(1){border:0 !important;} } @media screen and (min-width: 2560px) {/*large desktop*/ .menu {width:100%;padding:10px 18px;padding: 0px 15px;line-height: 10px !important;} .dropdown-menu{width: 90%; max-width: 1170px; padding: 1em 3em;} .dropdown-menu a {} .main-sublist{ margin-bottom: 15px ; width: 45%; float: left; padding: 5px 10px;} .menu menu-ul {display:inline-block;} .menu .list {margin:0px;float:left;list-style:none;font-size:14px;padding:5px 2em 5px 2em;} .menu .list:hover{background-color: #bbb; } .menu .list a:hover{text-decoration: none;} .menu .list:last-child {margin-right:0px;} .menu a { text-shadow:0px 1px 0px rgba(0,0,0,0.5);color:#555; transition:color linear 0.15s;} .menu .menu-list{color:#555;} .menu a:hover, .menu .current-item a { text-decoration:none; color:#66a992;} } @media screen and (max-width: 2560px) { /* under desktop */ .wrap { width:90%;} .menu { display:inline-block; right:0; position: fixed;z-index: 99;} .dropdown-menu{width: 170px; top: 0 !important; left: -170px; margin-left: -5px; margin-top: -2px;} .menu .list{width: 100%; padding: 1em 2em 1em .5em;} .menu .menu-ul.active { display:none; } .main-sublist{margin-left: 10px; padding: 10px 5px; margin-bottom: 10px; } .menu .menu-ul {position: absolute;top: 100%;right: 0px;z-index: 1000;float: left; min-width: 160px; padding: 5px 0;margin: 2px 0 0; font-size: 14px; text-align: left; list-style: none; background-color: #fff; -webkit-background-clip: padding-box;background-clip: padding-box;border: 1px solid rgba(0,0,0,.15);border-radius: 4px;-webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175);box-shadow: 0 6px 12px rgba(0,0,0,.175);} .menu .menu-ul:after { width:0px; height:0px;position:absolute; top:0%; left:22px; content:''; transform: translate(590%, -100%); border-left:7px solid transparent; border-right:7px solid transparent; } .menu li { margin:5px 0px 5px 0px; float:none; display:block; line-height: 15px; } .menu a { display:block;} .toggle-nav { float:right;display:inline-block;box-shadow:0px 1px 1px rgba(0,0,0,0.15);border-radius:3px;background:#ff343d;text-shadow:0px 1px 0px rgba(0,0,0,0.5);color:#999;font-size: 1.5em;font-weight: bold;line-height: 45px;transition:color linear 0.15s;top: -10px;padding: 0px;} .toggle-nav:hover, .toggle-nav.active { text-decoration:none;} .header_logo{width: 70% !important; margin-top: 10px;} .bgheader{background-image:inherit !important;} } /*** inicio template.css***/ iframe{border:0;} .discussss{margin-top:15px;} .post{padding: 20px; background-color: white; display: inline-block; text-align: left;} .diccionario{border: 2px solid #EFEBE7; margin-top: 30px; padding-bottom: 15px; margin-bottom: 15px;} .diccionario h4{color: #337ab7;} .diccionario button{background-color: #256E8E; border: 1px solid white; height: 40px;} .diccionario a {color: #ffffff;} .diccionario a:hover {color: #3CB6EC;} .relationed{margin-top: 15px;} .relationed>div{padding-top: 15px; padding-bottom: 15px;} .relationed>div:nth-of-type(2),.relationed>div:nth-of-type(3){border-top: 2px solid #EFEBE7;} .relationed>div:nth-last-of-type(2),.relationed>div:nth-last-of-type(1){border-bottom: 2px solid #EFEBE7;} .relationed>div:nth-of-type(1){border: none; padding: 0; margin: 0;} .btnSuenos{background-color: #0E9F9F;} .navHoroscopos{background-color: #660066; font-size: 14px; position: relative;} .navHoroscopos>nav>li>a{padding: 12px;} .navHoroscopos>nav>li>ul{display: none; position: absolute; padding-left: 0px; margin-top: 10px; z-index: 2; background-color: #984a98;} .navHoroscopos>nav>li>ul>li{display: block; margin: 0; padding: 7px; border-top: 1px solid #efebe7;} .navHoroscopos>nav>li>ul>li:hover{background-color: #660066;} .navHoroscopos>nav>li>ul:hover{display: block;} .navHoroscopos>nav>li:hover>ul{display: block;} #ulHoroscopos{left: 15px;} #ulSignos{left: 140px;} #ulEsoterismo{left: 330px;} #ulOtros{left: 445px;} .navHoroscoposMobile>li{cursor: pointer;} .navHoroscoposMobile>li>a{z-index: 5;} .navHoroscoposMobile>ul{display: none; z-index: 2; padding-left: 0px; background-color: #660066; margin-top: 0px; margin-bottom: 0px;} .navHoroscoposMobile>ul>li{background-color: #660066 !important; padding-left: 30px !important;} .navFrases,.btnFrases{background-color: #FF3333} .navFrases>nav>li>ul{background-color: #af2121} .navFrases>nav>li>ul>li:hover{background-color: #FF3333;} .navFrasesMobile>li{cursor: pointer;} .navFrasesMobile>li>a{z-index: 5;} .navFrasesMobile>ul{display: none; z-index: 2; padding-left: 0px; background-color: #af2121; margin-top: 0px; margin-bottom: 0px;} .navFrasesMobile>ul>li{background-color: #FF3333 !important; padding-left: 30px !important;} /*** fin template.css***/ /*** inicio style.css ***/ .zodiac-img{margin: 3em auto 3em auto;} hr{margin-top: 10px; margin-bottom: 10px;border:0.5px solid #c8c8c8;} .hypertext{/*background-color: #52525f; */width: 100%; /*padding: 8px 0 8px 0;*/ font-size: 20px; margin-top: 30px; text-indent: 10px;} .hypertext ul{padding: 0 0px 0 0px;margin-bottom: 0;} .hypertext li{list-style: none; color: black; margin-top: 10px;padding-bottom: 10px; border-bottom: 0.5px solid #c8c8c8;} .hypertext li:last-of-type{border-bottom: 0;} .hypertext a{text-decoration: none; /*color:#26B5FF;*/ color: white;} .hypertext .collapse.in {display: flex;} .zodiac-hypertext .hypertext:last-child{ margin-bottom: 2em;} .zodiac-description{line-height: 1.8; margin-top:2.5em; margin-bottom:2.5em; letter-spacing: 2px; font-size:22px;} .intro-description{line-height: 1.8; margin-top:2.5em; margin-bottom:2.5em; letter-spacing: 2px; font-size:22px;} .navidad-description{font-size:16px; font-weight: 400; margin-bottom:30px; line-height: 1.5;} .hypertext .panel-heading{background-color: #52525f; color:white; } .hypertext .panel-body{background-color: #e5e5e5; color: #525260; padding: 0 50px; } .hypertext .panel-body a{background-color: #e5e5e5; color: #525260;font-size: 16px; line-height: 18px;} .hypertext .panel-body a:hover{color:#333;} .hypertext .panel-heading .glyphicon-menu-down{font-size: 24px; float:right} /*** fin style.css ***/ ------------KiXPWrvk5mnvVYxLCI6WyS Content-Disposition: inline; filename=jquery.min.js Content-Type: text/javascript; charset=UTF-8; name=jquery.min.js Content-Location: https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js Content-Transfer-Encoding: Quoted-Printable /*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.or= g/license */ !function(a,b){"use strict";"object"=3D=3Dtypeof module&&"object"=3D=3Dt= ypeof module.exports?module.exports=3Da.document?b(a,!0):function(a){if(= !a.document)throw new Error("jQuery requires a window with a document");= return b(a)}:b(a)}("undefined"!=3Dtypeof window?window:this,function(a,b= ){"use strict";var c=3D[],d=3Da.document,e=3DObject.getPrototypeOf,f=3Dc= .slice,g=3Dc.concat,h=3Dc.push,i=3Dc.indexOf,j=3D{},k=3Dj.toString,l=3Dj= .hasOwnProperty,m=3Dl.toString,n=3Dm.call(Object),o=3D{};function p(a,b)= {b=3Db||d;var c=3Db.createElement("script");c.text=3Da,b.head.appendChil= d(c).parentNode.removeChild(c)}var q=3D"3.2.1",r=3Dfunction(a,b){return = new r.fn.init(a,b)},s=3D/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=3D/^-ms-/= ,u=3D/-([a-z])/g,v=3Dfunction(a,b){return b.toUpperCase()};r.fn=3Dr.prot= otype=3D{jquery:q,constructor:r,length:0,toArray:function(){return f.cal= l(this)},get:function(a){return null=3D=3Da?f.call(this):a<0?this[a+this= .length]:this[a]},pushStack:function(a){var b=3Dr.merge(this.constructor= (),a);return b.prevObject=3Dthis,b},each:function(a){return r.each(this,= a)},map:function(a){return this.pushStack(r.map(this,function(b,c){retur= n a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,= arguments))},first:function(){return this.eq(0)},last:function(){return = this.eq(-1)},eq:function(a){var b=3Dthis.length,c=3D+a+(a<0?b:0);return = this.pushStack(c>=3D0&&c0= &&b-1 in a)}var x=3Dfunction(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,= t,u=3D"sizzle"+1*new Date,v=3Da.document,w=3D0,x=3D0,y=3Dha(),z=3Dha(),A= =3Dha(),B=3Dfunction(a,b){return a=3D=3D=3Db&&(l=3D!0),0},C=3D{}.hasOwnP= roperty,D=3D[],E=3DD.pop,F=3DD.push,G=3DD.push,H=3DD.slice,I=3Dfunction(= a,b){for(var c=3D0,d=3Da.length;c+~]|"+K+")"+K+"*"),S=3Dnew RegExp("=3D"+K+"*([^\\]'\"]*?)"+K+"*= \\]","g"),T=3Dnew RegExp(N),U=3Dnew RegExp("^"+L+"$"),V=3D{ID:new RegExp= ("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*= ])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^= :(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([= +-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new = RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|o= dd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=3D[^= -]|$)","i")},W=3D/^(?:input|select|textarea|button)$/i,X=3D/^h\d$/i,Y=3D= /^[^{]+\{\s*\[native \w/,Z=3D/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=3D/[+~= ]/,_=3Dnew RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=3Dfunct= ion(a,b,c){var d=3D"0x"+b-65536;return d!=3D=3Dd||c?b:d<0?String.fromCha= rCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=3D/([\0= -\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=3Dfunction(a,b){retu= rn b?"\0"=3D=3D=3Da?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1)= .toString(16)+" ":"\\"+a},da=3Dfunction(){m()},ea=3Dta(function(a){retur= n a.disabled=3D=3D=3D!0&&("form"in a||"label"in a)},{dir:"parentNode",ne= xt:"legend"});try{G.apply(D=3DH.call(v.childNodes),v.childNodes),D[v.chi= ldNodes.length].nodeType}catch(fa){G=3D{apply:D.length?function(a,b){F.a= pply(a,H.call(b))}:function(a,b){var c=3Da.length,d=3D0;while(a[c++]=3Db= [d++]);a.length=3Dc-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=3Db&&b.= ownerDocument,w=3Db?b.nodeType:9;if(d=3Dd||[],"string"!=3Dtypeof a||!a||= 1!=3D=3Dw&&9!=3D=3Dw&&11!=3D=3Dw)return d;if(!e&&((b?b.ownerDocument||b:= v)!=3D=3Dn&&m(b),b=3Db||n,p)){if(11!=3D=3Dw&&(l=3DZ.exec(a)))if(f=3Dl[1]= ){if(9=3D=3D=3Dw){if(!(j=3Db.getElementById(f)))return d;if(j.id=3D=3D=3D= f)return d.push(j),d}else if(s&&(j=3Ds.getElementById(f))&&t(b,j)&&j.id=3D= =3D=3Df)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsBy= TagName(a)),d;if((f=3Dl[3])&&c.getElementsByClassName&&b.getElementsByCl= assName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+"= "]&&(!q||!q.test(a))){if(1!=3D=3Dw)s=3Db,r=3Da;else if("object"!=3D=3Db= .nodeName.toLowerCase()){(k=3Db.getAttribute("id"))?k=3Dk.replace(ba,ca)= :b.setAttribute("id",k=3Du),o=3Dg(a),h=3Do.length;while(h--)o[h]=3D"#"+k= +" "+sa(o[h]);r=3Do.join(","),s=3D$.test(a)&&qa(b.parentNode)||b}if(r)tr= y{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k=3D=3D=3D= u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function = ha(){var a=3D[];function b(c,e){return a.push(c+" ")>d.cacheLength&&dele= te b[a.shift()],b[c+" "]=3De}return b}function ia(a){return a[u]=3D!0,a}= function ja(a){var b=3Dn.createElement("fieldset");try{return!!a(b)}catc= h(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=3Dnull= }}function ka(a,b){var c=3Da.split("|"),e=3Dc.length;while(e--)d.attrHan= dle[c[e]]=3Db}function la(a,b){var c=3Db&&a,d=3Dc&&1=3D=3D=3Da.nodeType&= &1=3D=3D=3Db.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)wh= ile(c=3Dc.nextSibling)if(c=3D=3D=3Db)return-1;return a?1:-1}function ma(= a){return function(b){var c=3Db.nodeName.toLowerCase();return"input"=3D=3D= =3Dc&&b.type=3D=3D=3Da}}function na(a){return function(b){var c=3Db.node= Name.toLowerCase();return("input"=3D=3D=3Dc||"button"=3D=3D=3Dc)&&b.type= =3D=3D=3Da}}function oa(a){return function(b){return"form"in b?b.parentN= ode&&b.disabled=3D=3D=3D!1?"label"in b?"label"in b.parentNode?b.parentNo= de.disabled=3D=3D=3Da:b.disabled=3D=3D=3Da:b.isDisabled=3D=3D=3Da||b.isD= isabled!=3D=3D!a&&ea(b)=3D=3D=3Da:b.disabled=3D=3D=3Da:"label"in b&&b.di= sabled=3D=3D=3Da}}function pa(a){return ia(function(b){return b=3D+b,ia(= function(c,d){var e,f=3Da([],c.length,b),g=3Df.length;while(g--)c[e=3Df[= g]]&&(c[e]=3D!(d[e]=3Dc[e]))})})}function qa(a){return a&&"undefined"!=3D= typeof a.getElementsByTagName&&a}c=3Dga.support=3D{},f=3Dga.isXML=3Dfunc= tion(a){var b=3Da&&(a.ownerDocument||a).documentElement;return!!b&&"HTML= "!=3D=3Db.nodeName},m=3Dga.setDocument=3Dfunction(a){var b,e,g=3Da?a.own= erDocument||a:v;return g!=3D=3Dn&&9=3D=3D=3Dg.nodeType&&g.documentElemen= t?(n=3Dg,o=3Dn.documentElement,p=3D!f(n),v!=3D=3Dn&&(e=3Dn.defaultView)&= &e.top!=3D=3De&&(e.addEventListener?e.addEventListener("unload",da,!1):e= .attachEvent&&e.attachEvent("onunload",da)),c.attributes=3Dja(function(a= ){return a.className=3D"i",!a.getAttribute("className")}),c.getElementsB= yTagName=3Dja(function(a){return a.appendChild(n.createComment("")),!a.g= etElementsByTagName("*").length}),c.getElementsByClassName=3DY.test(n.ge= tElementsByClassName),c.getById=3Dja(function(a){return o.appendChild(a)= .id=3Du,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById= ?(d.filter.ID=3Dfunction(a){var b=3Da.replace(_,aa);return function(a){r= eturn a.getAttribute("id")=3D=3D=3Db}},d.find.ID=3Dfunction(a,b){if("und= efined"!=3Dtypeof b.getElementById&&p){var c=3Db.getElementById(a);retur= n c?[c]:[]}}):(d.filter.ID=3Dfunction(a){var b=3Da.replace(_,aa);return = function(a){var c=3D"undefined"!=3Dtypeof a.getAttributeNode&&a.getAttri= buteNode("id");return c&&c.value=3D=3D=3Db}},d.find.ID=3Dfunction(a,b){i= f("undefined"!=3Dtypeof b.getElementById&&p){var c,d,e,f=3Db.getElementB= yId(a);if(f){if(c=3Df.getAttributeNode("id"),c&&c.value=3D=3D=3Da)return= [f];e=3Db.getElementsByName(a),d=3D0;while(f=3De[d++])if(c=3Df.getAttrib= uteNode("id"),c&&c.value=3D=3D=3Da)return[f]}return[]}}),d.find.TAG=3Dc.= getElementsByTagName?function(a,b){return"undefined"!=3Dtypeof b.getElem= entsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void= 0}:function(a,b){var c,d=3D[],e=3D0,f=3Db.getElementsByTagName(a);if("*= "=3D=3D=3Da){while(c=3Df[e++])1=3D=3D=3Dc.nodeType&&d.push(c);return d}r= eturn f},d.find.CLASS=3Dc.getElementsByClassName&&function(a,b){if("unde= fined"!=3Dtypeof b.getElementsByClassName&&p)return b.getElementsByClass= Name(a)},r=3D[],q=3D[],(c.qsa=3DY.test(n.querySelectorAll))&&(ja(functio= n(a){o.appendChild(a).innerHTML=3D"",a= .querySelectorAll("[msallowcapture^=3D'']").length&&q.push("[*^$]=3D"+K+= "*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+= "*(?:value|"+J+")"),a.querySelectorAll("[id~=3D"+u+"-]").length||q.push(= "~=3D"),a.querySelectorAll(":checked").length||q.push(":checked"),a.quer= ySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.= innerHTML=3D"";var b=3Dn.createElement("input");b.setAttr= ibute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.query= SelectorAll("[name=3Dd]").length&&q.push("name"+K+"*[*^$|!~]?=3D"),2!=3D= =3Da.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled")= ,o.appendChild(a).disabled=3D!0,2!=3D=3Da.querySelectorAll(":disabled").= length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push= (",.*:")})),(c.matchesSelector=3DY.test(s=3Do.matches||o.webkitMatchesSe= lector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&= &ja(function(a){c.disconnectedMatch=3Ds.call(a,"*"),s.call(a,"[s!=3D'']:= x"),r.push("!=3D",N)}),q=3Dq.length&&new RegExp(q.join("|")),r=3Dr.lengt= h&&new RegExp(r.join("|")),b=3DY.test(o.compareDocumentPosition),t=3Db||= Y.test(o.contains)?function(a,b){var c=3D9=3D=3D=3Da.nodeType?a.document= Element:a,d=3Db&&b.parentNode;return a=3D=3D=3Dd||!(!d||1!=3D=3Dd.nodeTy= pe||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDo= cumentPosition(d)))}:function(a,b){if(b)while(b=3Db.parentNode)if(b=3D=3D= =3Da)return!0;return!1},B=3Db?function(a,b){if(a=3D=3D=3Db)return l=3D!0= ,0;var d=3D!a.compareDocumentPosition-!b.compareDocumentPosition;return = d?d:(d=3D(a.ownerDocument||a)=3D=3D=3D(b.ownerDocument||b)?a.compareDocu= mentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)=3D=3D= =3Dd?a=3D=3D=3Dn||a.ownerDocument=3D=3D=3Dv&&t(v,a)?-1:b=3D=3D=3Dn||b.ow= nerDocument=3D=3D=3Dv&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,= b){if(a=3D=3D=3Db)return l=3D!0,0;var c,d=3D0,e=3Da.parentNode,f=3Db.par= entNode,g=3D[a],h=3D[b];if(!e||!f)return a=3D=3D=3Dn?-1:b=3D=3D=3Dn?1:e?= -1:f?1:k?I(k,a)-I(k,b):0;if(e=3D=3D=3Df)return la(a,b);c=3Da;while(c=3Dc= .parentNode)g.unshift(c);c=3Db;while(c=3Dc.parentNode)h.unshift(c);while= (g[d]=3D=3D=3Dh[d])d++;return d?la(g[d],h[d]):g[d]=3D=3D=3Dv?-1:h[d]=3D=3D= =3Dv?1:0},n):n},ga.matches=3Dfunction(a,b){return ga(a,null,null,b)},ga.= matchesSelector=3Dfunction(a,b){if((a.ownerDocument||a)!=3D=3Dn&&m(a),b=3D= b.replace(S,"=3D'$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b)= )&&(!q||!q.test(b)))try{var d=3Ds.call(a,b);if(d||c.disconnectedMatch||a= .document&&11!=3D=3Da.document.nodeType)return d}catch(e){}return ga(b,n= ,null,[a]).length>0},ga.contains=3Dfunction(a,b){return(a.ownerDocument|= |a)!=3D=3Dn&&m(a),t(a,b)},ga.attr=3Dfunction(a,b){(a.ownerDocument||a)!=3D= =3Dn&&m(a);var e=3Dd.attrHandle[b.toLowerCase()],f=3De&&C.call(d.attrHan= dle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!=3D=3Df?f:c.attribut= es||!p?a.getAttribute(b):(f=3Da.getAttributeNode(b))&&f.specified?f.valu= e:null},ga.escape=3Dfunction(a){return(a+"").replace(ba,ca)},ga.error=3D= function(a){throw new Error("Syntax error, unrecognized expression: "+a)= },ga.uniqueSort=3Dfunction(a){var b,d=3D[],e=3D0,f=3D0;if(l=3D!c.detectD= uplicates,k=3D!c.sortStable&&a.slice(0),a.sort(B),l){while(b=3Da[f++])b=3D= =3D=3Da[f]&&(e=3Dd.push(f));while(e--)a.splice(d[e],1)}return k=3Dnull,a= },e=3Dga.getText=3Dfunction(a){var b,c=3D"",d=3D0,f=3Da.nodeType;if(f){i= f(1=3D=3D=3Df||9=3D=3D=3Df||11=3D=3D=3Df){if("string"=3D=3Dtypeof a.text= Content)return a.textContent;for(a=3Da.firstChild;a;a=3Da.nextSibling)c+= =3De(a)}else if(3=3D=3D=3Df||4=3D=3D=3Df)return a.nodeValue}else while(b= =3Da[d++])c+=3De(b);return c},d=3Dga.selectors=3D{cacheLength:50,createP= seudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",f= irst:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~"= :{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=3Da[1]= .replace(_,aa),a[3]=3D(a[3]||a[4]||a[5]||"").replace(_,aa),"~=3D"=3D=3D=3D= a[2]&&(a[3]=3D" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=3D= a[1].toLowerCase(),"nth"=3D=3D=3Da[1].slice(0,3)?(a[3]||ga.error(a[0]),a= [4]=3D+(a[4]?a[5]+(a[6]||1):2*("even"=3D=3D=3Da[3]||"odd"=3D=3D=3Da[3]))= ,a[5]=3D+(a[7]+a[8]||"odd"=3D=3D=3Da[3])):a[3]&&ga.error(a[0]),a},PSEUDO= :function(a){var b,c=3D!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?= a[2]=3Da[4]||a[5]||"":c&&T.test(c)&&(b=3Dg(c,!0))&&(b=3Dc.indexOf(")",c.= length-b)-c.length)&&(a[0]=3Da[0].slice(0,b),a[2]=3Dc.slice(0,b)),a.slic= e(0,3))}},filter:{TAG:function(a){var b=3Da.replace(_,aa).toLowerCase();= return"*"=3D=3D=3Da?function(){return!0}:function(a){return a.nodeName&&= a.nodeName.toLowerCase()=3D=3D=3Db}},CLASS:function(a){var b=3Dy[a+" "];= return b||(b=3Dnew RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){r= eturn b.test("string"=3D=3Dtypeof a.className&&a.className||"undefined"!= =3Dtypeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(= a,b,c){return function(d){var e=3Dga.attr(d,a);return null=3D=3De?"!=3D"= =3D=3D=3Db:!b||(e+=3D"","=3D"=3D=3D=3Db?e=3D=3D=3Dc:"!=3D"=3D=3D=3Db?e!=3D= =3Dc:"^=3D"=3D=3D=3Db?c&&0=3D=3D=3De.indexOf(c):"*=3D"=3D=3D=3Db?c&&e.in= dexOf(c)>-1:"$=3D"=3D=3D=3Db?c&&e.slice(-c.length)=3D=3D=3Dc:"~=3D"=3D=3D= =3Db?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|=3D"=3D=3D=3Db&&(e=3D=3D= =3Dc||e.slice(0,c.length+1)=3D=3D=3Dc+"-"))}},CHILD:function(a,b,c,d,e){= var f=3D"nth"!=3D=3Da.slice(0,3),g=3D"last"!=3D=3Da.slice(-4),h=3D"of-ty= pe"=3D=3D=3Db;return 1=3D=3D=3Dd&&0=3D=3D=3De?function(a){return!!a.pare= ntNode}:function(b,c,i){var j,k,l,m,n,o,p=3Df!=3D=3Dg?"nextSibling":"pre= viousSibling",q=3Db.parentNode,r=3Dh&&b.nodeName.toLowerCase(),s=3D!i&&!= h,t=3D!1;if(q){if(f){while(p){m=3Db;while(m=3Dm[p])if(h?m.nodeName.toLow= erCase()=3D=3D=3Dr:1=3D=3D=3Dm.nodeType)return!1;o=3Dp=3D"only"=3D=3D=3D= a&&!o&&"nextSibling"}return!0}if(o=3D[g?q.firstChild:q.lastChild],g&&s){= m=3Dq,l=3Dm[u]||(m[u]=3D{}),k=3Dl[m.uniqueID]||(l[m.uniqueID]=3D{}),j=3D= k[a]||[],n=3Dj[0]=3D=3D=3Dw&&j[1],t=3Dn&&j[2],m=3Dn&&q.childNodes[n];whi= le(m=3D++n&&m&&m[p]||(t=3Dn=3D0)||o.pop())if(1=3D=3D=3Dm.nodeType&&++t&&= m=3D=3D=3Db){k[a]=3D[w,n,t];break}}else if(s&&(m=3Db,l=3Dm[u]||(m[u]=3D{= }),k=3Dl[m.uniqueID]||(l[m.uniqueID]=3D{}),j=3Dk[a]||[],n=3Dj[0]=3D=3D=3D= w&&j[1],t=3Dn),t=3D=3D=3D!1)while(m=3D++n&&m&&m[p]||(t=3Dn=3D0)||o.pop()= )if((h?m.nodeName.toLowerCase()=3D=3D=3Dr:1=3D=3D=3Dm.nodeType)&&++t&&(s= &&(l=3Dm[u]||(m[u]=3D{}),k=3Dl[m.uniqueID]||(l[m.uniqueID]=3D{}),k[a]=3D= [w,t]),m=3D=3D=3Db))break;return t-=3De,t=3D=3D=3Dd||t%d=3D=3D=3D0&&t/d>= =3D0}}},PSEUDO:function(a,b){var c,e=3Dd.pseudos[a]||d.setFilters[a.toLo= werCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length= >1?(c=3D[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(funct= ion(a,c){var d,f=3De(a,b),g=3Df.length;while(g--)d=3DI(a,f[g]),a[d]=3D!(= c[d]=3Df[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(functio= n(a){var b=3D[],c=3D[],d=3Dh(a.replace(P,"$1"));return d[u]?ia(function(= a,b,c,e){var f,g=3Dd(a,null,e,[]),h=3Da.length;while(h--)(f=3Dg[h])&&(a[= h]=3D!(b[h]=3Df))}):function(a,e,f){return b[0]=3Da,d(b,null,f,c),b[0]=3D= null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).le= ngth>0}}),contains:ia(function(a){return a=3Da.replace(_,aa),function(b)= {return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(funct= ion(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=3Da.repl= ace(_,aa).toLowerCase(),function(b){var c;do if(c=3Dp?b.lang:b.getAttrib= ute("xml:lang")||b.getAttribute("lang"))return c=3Dc.toLowerCase(),c=3D=3D= =3Da||0=3D=3D=3Dc.indexOf(a+"-");while((b=3Db.parentNode)&&1=3D=3D=3Db.n= odeType);return!1}}),target:function(b){var c=3Da.location&&a.location.h= ash;return c&&c.slice(1)=3D=3D=3Db.id},root:function(a){return a=3D=3D=3D= o},focus:function(a){return a=3D=3D=3Dn.activeElement&&(!n.hasFocus||n.h= asFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(= !0),checked:function(a){var b=3Da.nodeName.toLowerCase();return"input"=3D= =3D=3Db&&!!a.checked||"option"=3D=3D=3Db&&!!a.selected},selected:functio= n(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected=3D=3D=3D= !0},empty:function(a){for(a=3Da.firstChild;a;a=3Da.nextSibling)if(a.node= Type<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},= header:function(a){return X.test(a.nodeName)},input:function(a){return W= .test(a.nodeName)},button:function(a){var b=3Da.nodeName.toLowerCase();r= eturn"input"=3D=3D=3Db&&"button"=3D=3D=3Da.type||"button"=3D=3D=3Db},tex= t:function(a){var b;return"input"=3D=3D=3Da.nodeName.toLowerCase()&&"tex= t"=3D=3D=3Da.type&&(null=3D=3D(b=3Da.getAttribute("type"))||"text"=3D=3D= =3Db.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,= b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(funct= ion(a,b){for(var c=3D0;c=3D0;)a.push(d);return a}),gt:pa(function(a,b,= c){for(var d=3Dc<0?c+b:c;++d1?function(b,c,d){var e=3Da.length;whil= e(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var= d=3D0,e=3Db.length;d-1&&(f[j]=3D!(g[j]=3Dl))}}else r=3Dw= a(r=3D=3D=3Dg?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}fun= ction ya(a){for(var b,c,e,f=3Da.length,g=3Dd.relative[a[0].type],h=3Dg||= d.relative[" "],i=3Dg?1:0,k=3Dta(function(a){return a=3D=3D=3Db},h,!0),l= =3Dta(function(a){return I(b,a)>-1},h,!0),m=3D[function(a,c,d){var e=3D!= g&&(d||c!=3D=3Dj)||((b=3Dc).nodeType?k(a,c,d):l(a,c,d));return b=3Dnull,= e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1)= .concat({value:" "=3D=3D=3Da[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=3Da.length>0,f=3Dfunction(f,g,= h,i,k){var l,o,q,r=3D0,s=3D"0",t=3Df&&[],u=3D[],v=3Dj,x=3Df||e&&d.find.T= AG("*",k),y=3Dw+=3Dnull=3D=3Dv?1:Math.random()||.1,z=3Dx.length;for(k&&(= j=3Dg=3D=3D=3Dn||g||k);s!=3D=3Dz&&null!=3D(l=3Dx[s]);s++){if(e&&l){o=3D0= ,g||l.ownerDocument=3D=3D=3Dn||(m(l),h=3D!p);while(q=3Da[o++])if(q(l,g||= n,h)){i.push(l);break}k&&(w=3Dy)}c&&((l=3D!q&&l)&&r--,f&&t.push(l))}if(r= +=3Ds,c&&s!=3D=3Dr){o=3D0;while(q=3Db[o++])q(t,u,g,h);if(f){if(r>0)while= (s--)t[s]||u[s]||(u[s]=3DE.call(i));u=3Dwa(u)}G.apply(i,u),k&&!f&&u.leng= th>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=3Dy,j=3Dv),t};return c= ?ia(f):f}return h=3Dga.compile=3Dfunction(a,b){var c,d=3D[],e=3D[],f=3DA= [a+" "];if(!f){b||(b=3Dg(a)),c=3Db.length;while(c--)f=3Dya(b[c]),f[u]?d.= push(f):e.push(f);f=3DA(a,za(e,d)),f.selector=3Da}return f},i=3Dga.selec= t=3Dfunction(a,b,c,e){var f,i,j,k,l,m=3D"function"=3D=3Dtypeof a&&a,n=3D= !e&&g(a=3Dm.selector||a);if(c=3Dc||[],1=3D=3D=3Dn.length){if(i=3Dn[0]=3D= n[0].slice(0),i.length>2&&"ID"=3D=3D=3D(j=3Di[0]).type&&9=3D=3D=3Db.node= Type&&p&&d.relative[i[1].type]){if(b=3D(d.find.ID(j.matches[0].replace(_= ,aa),b)||[])[0],!b)return c;m&&(b=3Db.parentNode),a=3Da.slice(i.shift().= value.length)}f=3DV.needsContext.test(a)?0:i.length;while(f--){if(j=3Di[= f],d.relative[k=3Dj.type])break;if((l=3Dd.find[k])&&(e=3Dl(j.matches[0].= replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1)= ,a=3De.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(= e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=3Du.split("= ").sort(B).join("")=3D=3D=3Du,c.detectDuplicates=3D!!l,m(),c.sortDetache= d=3Dja(function(a){return 1&a.compareDocumentPosition(n.createElement("f= ieldset"))}),ja(function(a){return a.innerHTML=3D"","#= "=3D=3D=3Da.firstChild.getAttribute("href")})||ka("type|href|height|widt= h",function(a,b,c){if(!c)return a.getAttribute(b,"type"=3D=3D=3Db.toLowe= rCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML=3D"",a.firstChild.setAttribute("value",""),""=3D=3D=3Da.firstChild.getAtt= ribute("value")})||ka("value",function(a,b,c){if(!c&&"input"=3D=3D=3Da.n= odeName.toLowerCase())return a.defaultValue}),ja(function(a){return null= =3D=3Da.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)ret= urn a[b]=3D=3D=3D!0?b.toLowerCase():(d=3Da.getAttributeNode(b))&&d.speci= fied?d.value:null}),ga}(a);r.find=3Dx,r.expr=3Dx.selectors,r.expr[":"]=3D= r.expr.pseudos,r.uniqueSort=3Dr.unique=3Dx.uniqueSort,r.text=3Dx.getText= ,r.isXMLDoc=3Dx.isXML,r.contains=3Dx.contains,r.escapeSelector=3Dx.escap= e;var y=3Dfunction(a,b,c){var d=3D[],e=3Dvoid 0!=3D=3Dc;while((a=3Da[b])= &&9!=3D=3Da.nodeType)if(1=3D=3D=3Da.nodeType){if(e&&r(a).is(c))break;d.p= ush(a)}return d},z=3Dfunction(a,b){for(var c=3D[];a;a=3Da.nextSibling)1=3D= =3D=3Da.nodeType&&a!=3D=3Db&&c.push(a);return c},A=3Dr.expr.match.needsC= ontext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()=3D=3D= =3Db.toLowerCase()}var C=3D/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f= ]*\/?>(?:<\/\1>|)$/i,D=3D/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isF= unction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!=3D=3Dc}):b.node= Type?r.grep(a,function(a){return a=3D=3D=3Db!=3D=3Dc}):"string"!=3Dtypeo= f b?r.grep(a,function(a){return i.call(b,a)>-1!=3D=3Dc}):D.test(b)?r.fil= ter(b,a,c):(b=3Dr.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1= !=3D=3Dc&&1=3D=3D=3Da.nodeType}))}r.filter=3Dfunction(a,b,c){var d=3Db[0= ];return c&&(a=3D":not("+a+")"),1=3D=3D=3Db.length&&1=3D=3D=3Dd.nodeType= ?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a= ){return 1=3D=3D=3Da.nodeType}))},r.fn.extend({find:function(a){var b,c,= d=3Dthis.length,e=3Dthis;if("string"!=3Dtypeof a)return this.pushStack(r= (a).filter(function(){for(b=3D0;b= 1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||= [],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:fun= ction(a){return!!E(this,"string"=3D=3Dtypeof a&&A.test(a)?r(a):a||[],!1)= .length}});var F,G=3D/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=3Dr.fn.init= =3Dfunction(a,b,c){var e,f;if(!a)return this;if(c=3Dc||F,"string"=3D=3Dt= ypeof a){if(e=3D"<"=3D=3D=3Da[0]&&">"=3D=3D=3Da[a.length-1]&&a.length>=3D= 3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a)= :this.constructor(b).find(a);if(e[1]){if(b=3Db instanceof r?b[0]:b,r.mer= ge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(= e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e])= :this.attr(e,b[e]);return this}return f=3Dd.getElementById(e[2]),f&&(thi= s[0]=3Df,this.length=3D1),this}return a.nodeType?(this[0]=3Da,this.lengt= h=3D1,this):r.isFunction(a)?void 0!=3D=3Dc.ready?c.ready(a):a(r):r.makeA= rray(a,this)};H.prototype=3Dr.fn,F=3Dr(d);var I=3D/^(?:parents|prev(?:Un= til|All))/,J=3D{children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({ha= s:function(a){var b=3Dr(a,this),c=3Db.length;return this.filter(function= (){for(var a=3D0;a-1:1=3D=3D=3Dc.nodeType&&r.find.m= atchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r= .uniqueSort(f):f)},index:function(a){return a?"string"=3D=3Dtypeof a?i.c= all(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNo= de?this.first().prevAll().length:-1},add:function(a,b){return this.pushS= tack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){retu= rn this.add(null=3D=3Da?this.prevObject:this.prevObject.filter(a))}});fu= nction K(a,b){while((a=3Da[b])&&1!=3D=3Da.nodeType);return a}r.each({par= ent:function(a){var b=3Da.parentNode;return b&&11!=3D=3Db.nodeType?b:nul= l},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a= ,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibli= ng")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a= ){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSib= ling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil= :function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){r= eturn z((a.parentNode||{}).firstChild,a)},children:function(a){return z(= a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocume= nt:(B(a,"template")&&(a=3Da.content||a),r.merge([],a.childNodes))}},func= tion(a,b){r.fn[a]=3Dfunction(c,d){var e=3Dr.map(this,b,c);return"Until"!= =3D=3Da.slice(-5)&&(d=3Dc),d&&"string"=3D=3Dtypeof d&&(e=3Dr.filter(d,e)= ),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pus= hStack(e)}});var L=3D/[^\x20\t\r\n\f]+/g;function M(a){var b=3D{};return= r.each(a.match(L)||[],function(a,c){b[c]=3D!0}),b}r.Callbacks=3Dfunctio= n(a){a=3D"string"=3D=3Dtypeof a?M(a):r.extend({},a);var b,c,d,e,f=3D[],g= =3D[],h=3D-1,i=3Dfunction(){for(e=3De||a.once,d=3Db=3D!0;g.length;h=3D-1= ){c=3Dg.shift();while(++h-1)f.splice(c,1),c<=3Dh&&h--}),this},ha= s:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){re= turn f&&(f=3D[]),this},disable:function(){return e=3Dg=3D[],f=3Dc=3D"",t= his},disabled:function(){return!f},lock:function(){return e=3Dg=3D[],c||= b||(f=3Dc=3D""),this},locked:function(){return!!e},fireWith:function(a,c= ){return e||(c=3Dc||[],c=3D[a,c.slice?c.slice():c],g.push(c),b||i()),thi= s},fire:function(){return j.fireWith(this,arguments),this},fired:functio= n(){return!!d}};return j};function N(a){return a}function O(a){throw a}f= unction P(a,b,c,d){var e;try{a&&r.isFunction(e=3Da.promise)?e.call(a).do= ne(b).fail(c):a&&r.isFunction(e=3Da.then)?e.call(a,b,c):b.apply(void 0,[= a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b= ){var c=3D[["notify","progress",r.Callbacks("memory"),r.Callbacks("memor= y"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once me= mory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callb= acks("once memory"),1,"rejected"]],d=3D"pending",e=3D{state:function(){r= eturn d},always:function(){return f.done(arguments).fail(arguments),this= },"catch":function(a){return e.then(null,a)},pipe:function(){var a=3Darg= uments;return r.Deferred(function(b){r.each(c,function(c,d){var e=3Dr.is= Function(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=3De&&e.apply(this,ar= guments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(= b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=3Dn= ull}).promise()},then:function(b,d,e){var f=3D0;function g(b,c,d,e){retu= rn function(){var h=3Dthis,i=3Darguments,j=3Dfunction(){var a,j;if(!(b=3Df&&(d!=3D=3DO&&(h=3Dvoid 0,i=3D[a]),c.rejectWith(h,i))}};b?k():(r= .Deferred.getStackHook&&(k.stackTrace=3Dr.Deferred.getStackHook()),a.set= Timeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunctio= n(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].= add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return = null!=3Da?r.extend(a,e):e}},f=3D{};return r.each(c,function(a,b){var g=3D= b[2],h=3Db[5];e[b[1]]=3Dg.add,h&&g.add(function(){d=3Dh},c[3-a][2].disab= le,c[0][2].lock),g.add(b[3].fire),f[b[0]]=3Dfunction(){return f[b[0]+"Wi= th"](this=3D=3D=3Df?void 0:this,arguments),this},f[b[0]+"With"]=3Dg.fire= With}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=3Darguments= .length,c=3Db,d=3DArray(c),e=3Df.call(arguments),g=3Dr.Deferred(),h=3Dfu= nction(a){return function(c){d[a]=3Dthis,e[a]=3Darguments.length>1?f.cal= l(arguments):c,--b||g.resolveWith(d,e)}};if(b<=3D1&&(P(a,g.done(h(c)).re= solve,g.reject,!b),"pending"=3D=3D=3Dg.state()||r.isFunction(e[c]&&e[c].= then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise(= )}});var Q=3D/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.= Deferred.exceptionHook=3Dfunction(b,c){a.console&&a.console.warn&&b&&Q.t= est(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.st= ack,c)},r.readyException=3Dfunction(b){a.setTimeout(function(){throw b})= };var R=3Dr.Deferred();r.fn.ready=3Dfunction(a){return R.then(a)["catch"= ](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait= :1,ready:function(a){(a=3D=3D=3D!0?--r.readyWait:r.isReady)||(r.isReady=3D= !0,a!=3D=3D!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=3D= R.then;function S(){d.removeEventListener("DOMContentLoaded",S), a.removeEventListener("load",S),r.ready()}"complete"=3D=3D=3Dd.readyStat= e||"loading"!=3D=3Dd.readyState&&!d.documentElement.doScroll?a.setTimeou= t(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener(= "load",S));var T=3Dfunction(a,b,c,d,e,f,g){var h=3D0,i=3Da.length,j=3Dnu= ll=3D=3Dc;if("object"=3D=3D=3Dr.type(c)){e=3D!0;for(h in c)T(a,b,h,c[h],= !0,f,g)}else if(void 0!=3D=3Dd&&(e=3D!0,r.isFunction(d)||(g=3D!0),j&&(g?= (b.call(a,d),b=3Dnull):(j=3Db,b=3Dfunction(a,b,c){return j.call(r(a),c)}= )),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X= .remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b= =3D(b||"fx")+"queue",d=3DW.get(a,b),c&&(!d||Array.isArray(c)?d=3DW.acces= s(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=3Db||"fx= ";var c=3Dr.queue(a,b),d=3Dc.length,e=3Dc.shift(),f=3Dr._queueHooks(a,b)= ,g=3Dfunction(){r.dequeue(a,b)};"inprogress"=3D=3D=3De&&(e=3Dc.shift(),d= --),e&&("fx"=3D=3D=3Db&&c.unshift("inprogress"),delete f.stop,e.call(a,g= ,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=3Db+"queueHo= oks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").a= dd(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:functi= on(a,b){var c=3D2;return"string"!=3Dtypeof a&&(b=3Da,a=3D"fx",c--),argum= ents.length\x20\t\r\n\f]+)/i,la=3D/^$|\/(?:java|= ecma)script/i,ma=3D{option:[1,"",o.noCloneChecked=3D!!b.cl= oneNode(!0).lastChild.defaultValue}();var ra=3Dd.documentElement,sa=3D/^= key/,ta=3D/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=3D/^([^.]*= )(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(= ){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h= ;if("object"=3D=3Dtypeof b){"string"!=3Dtypeof c&&(d=3Dd||c,c=3Dvoid 0);= for(h in b)ya(a,h,c,d,b[h],f);return a}if(null=3D=3Dd&&null=3D=3De?(e=3D= c,d=3Dc=3Dvoid 0):null=3D=3De&&("string"=3D=3Dtypeof c?(e=3Dd,d=3Dvoid 0= ):(e=3Dd,d=3Dc,c=3Dvoid 0)),e=3D=3D=3D!1)e=3Dwa;else if(!e)return a;retu= rn 1=3D=3D=3Df&&(g=3De,e=3Dfunction(a){return r().off(a),g.apply(this,ar= guments)},e.guid=3Dg.guid||(g.guid=3Dr.guid++)),a.each(function(){r.even= t.add(this,b,e,d,c)})}r.event=3D{global:{},add:function(a,b,c,d,e){var f= ,g,h,i,j,k,l,m,n,o,p,q=3DW.get(a);if(q){c.handler&&(f=3Dc,c=3Df.handler,= e=3Df.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=3Dr.guid= ++),(i=3Dq.events)||(i=3Dq.events=3D{}),(g=3Dq.handle)||(g=3Dq.handle=3D= function(b){return"undefined"!=3Dtypeof r&&r.event.triggered!=3D=3Db.typ= e?r.event.dispatch.apply(a,arguments):void 0}),b=3D(b||"").match(L)||[""= ],j=3Db.length;while(j--)h=3Dua.exec(b[j])||[],n=3Dp=3Dh[1],o=3D(h[2]||"= ").split(".").sort(),n&&(l=3Dr.event.special[n]||{},n=3D(e?l.delegateTyp= e:l.bindType)||n,l=3Dr.event.special[n]||{},k=3Dr.extend({type:n,origTyp= e:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match= .needsContext.test(e),namespace:o.join(".")},f),(m=3Di[n])||(m=3Di[n]=3D= [],m.delegateCount=3D0,l.setup&&l.setup.call(a,d,o,g)!=3D=3D!1||a.addEve= ntListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.g= uid||(k.handler.guid=3Dc.guid)),e?m.splice(m.delegateCount++,0,k):m.push= (k),r.event.global[n]=3D!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k= ,l,m,n,o,p,q=3DW.hasData(a)&&W.get(a);if(q&&(i=3Dq.events)){b=3D(b||"").= match(L)||[""],j=3Db.length;while(j--)if(h=3Dua.exec(b[j])||[],n=3Dp=3Dh= [1],o=3D(h[2]||"").split(".").sort(),n){l=3Dr.event.special[n]||{},n=3D(= d?l.delegateType:l.bindType)||n,m=3Di[n]||[],h=3Dh[2]&&new RegExp("(^|\\= .)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=3Df=3Dm.length;while(f--)k=3Dm[= f],!e&&p!=3D=3Dk.origType||c&&c.guid!=3D=3Dk.guid||h&&!h.test(k.namespac= e)||d&&d!=3D=3Dk.selector&&("**"!=3D=3Dd||!k.selector)||(m.splice(f,1),k= .selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&= &(l.teardown&&l.teardown.call(a,o,q.handle)!=3D=3D!1||r.removeEvent(a,n,= q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r= .isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){va= r b=3Dr.event.fix(a),c,d,e,f,g,h,i=3Dnew Array(arguments.length),j=3D(W.= get(this,"events")||{})[b.type]||[],k=3Dr.event.special[b.type]||{};for(= i[0]=3Db,c=3D1;c=3D1))for(;j!=3D=3Dthis;j=3Dj.parentNod= e||this)if(1=3D=3D=3Dj.nodeType&&("click"!=3D=3Da.type||j.disabled!=3D=3D= !0)){for(f=3D[],g=3D{},c=3D0;c-1:r.find(e,this,n= ull,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}r= eturn j=3Dthis,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=3D/\s*$/g;function Ea(a,b){return B(a,"table")&&B(= 11!=3D=3Db.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function = Fa(a){return a.type=3D(null!=3D=3Da.getAttribute("type"))+"/"+a.type,a}f= unction Ga(a){var b=3DCa.exec(a.type);return b?a.type=3Db[1]:a.removeAtt= ribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1=3D=3D=3Db.nod= eType){if(W.hasData(a)&&(f=3DW.access(a),g=3DW.set(b,f),j=3Df.events)){d= elete g.handle,g.events=3D{};for(e in j)for(c=3D0,d=3Dj[e].length;c1&&"string"=3D=3Dtypeof q&&!o.checkClone&&Ba.= test(q))return a.each(function(e){var f=3Da.eq(e);s&&(b[0]=3Dq.call(this= ,e,f.html())),Ja(f,b,c,d)});if(m&&(e=3Dqa(b,a[0].ownerDocument,!1,a,d),f= =3De.firstChild,1=3D=3D=3De.childNodes.length&&(e=3Df),f||d)){for(h=3Dr.= map(na(e,"script"),Fa),i=3Dh.length;l")= },clone:function(a,b,c){var d,e,f,g,h=3Da.cloneNode(!0),i=3Dr.contains(a= .ownerDocument,a);if(!(o.noCloneChecked||1!=3D=3Da.nodeType&&11!=3D=3Da.= nodeType||r.isXMLDoc(a)))for(g=3Dna(h),f=3Dna(a),d=3D0,e=3Df.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=3D= r.event.special,f=3D0;void 0!=3D=3D(c=3Da[f]);f++)if(U(c)){if(b=3Dc[W.ex= pando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeE= vent(c,d,b.handle);c[W.expando]=3Dvoid 0}c[X.expando]&&(c[X.expando]=3Dv= oid 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:= function(a){return Ka(this,a)},text:function(a){return T(this,function(a= ){return void 0=3D=3D=3Da?r.text(this):this.empty().each(function(){1!=3D= =3Dthis.nodeType&&11!=3D=3Dthis.nodeType&&9!=3D=3Dthis.nodeType||(this.t= extContent=3Da)})},null,a,arguments.length)},append:function(){return Ja= (this,arguments,function(a){if(1=3D=3D=3Dthis.nodeType||11=3D=3D=3Dthis.= nodeType||9=3D=3D=3Dthis.nodeType){var b=3DEa(this,a);b.appendChild(a)}}= )},prepend:function(){return Ja(this,arguments,function(a){if(1=3D=3D=3D= this.nodeType||11=3D=3D=3Dthis.nodeType||9=3D=3D=3Dthis.nodeType){var b=3D= Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return J= a(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefo= re(a,this)})},after:function(){return Ja(this,arguments,function(a){this= .parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:f= unction(){for(var a,b=3D0;null!=3D(a=3Dthis[b]);b++)1=3D=3D=3Da.nodeType= &&(r.cleanData(na(a,!1)),a.textContent=3D"");return this},clone:function= (a,b){return a=3Dnull!=3Da&&a,b=3Dnull=3D=3Db?a:b,this.map(function(){re= turn r.clone(this,a,b)})},html:function(a){return T(this,function(a){var= b=3Dthis[0]||{},c=3D0,d=3Dthis.length;if(void 0=3D=3D=3Da&&1=3D=3D=3Db.= nodeType)return b.innerHTML;if("string"=3D=3Dtypeof a&&!Aa.test(a)&&!ma[= (ka.exec(a)||["",""])[1].toLowerCase()]){a=3Dr.htmlPrefilter(a);try{for(= ;c1)}});function _a(a,b,c,d,e){return new _a.prototype= .init(a,b,c,d,e)}r.Tween=3D_a,_a.prototype=3D{constructor:_a,init:functi= on(a,b,c,d,e,f){this.elem=3Da,this.prop=3Dc,this.easing=3De||r.easing._d= efault,this.options=3Db,this.start=3Dthis.now=3Dthis.cur(),this.end=3Dd,= this.unit=3Df||(r.cssNumber[c]?"":"px")},cur:function(){var a=3D_a.propH= ooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(th= is)},run:function(a){var b,c=3D_a.propHooks[this.prop];return this.optio= ns.duration?this.pos=3Db=3Dr.easing[this.easing](a,this.options.duration= *a,0,1,this.options.duration):this.pos=3Db=3Da,this.now=3D(this.end-this= .start)*b+this.start,this.options.step&&this.options.step.call(this.elem= ,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),thi= s}},_a.prototype.init.prototype=3D_a.prototype,_a.propHooks=3D{_default:= {get:function(a){var b;return 1!=3D=3Da.elem.nodeType||null!=3Da.elem[a.= prop]&&null=3D=3Da.elem.style[a.prop]?a.elem[a.prop]:(b=3Dr.css(a.elem,a= .prop,""),b&&"auto"!=3D=3Db?b:0)},set:function(a){r.fx.step[a.prop]?r.fx= .step[a.prop](a):1!=3D=3Da.elem.nodeType||null=3D=3Da.elem.style[r.cssPr= ops[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=3Da.now:r.style(a.elem,= a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=3D_a.propHooks.scrollLeft= =3D{set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=3D= a.now)}},r.easing=3D{linear:function(a){return a},swing:function(a){retu= rn.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=3D_a.prototype.init,r= .fx.step=3D{};var ab,bb,cb=3D/^(?:toggle|show|hide)$/,db=3D/queueHooks$/= ;function eb(){bb&&(d.hidden=3D=3D=3D!1&&a.requestAnimationFrame?a.reque= stAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}functio= n fb(){return a.setTimeout(function(){ab=3Dvoid 0}),ab=3Dr.now()}functio= n gb(a,b){var c,d=3D0,e=3D{height:a};for(b=3Db?1:0;d<4;d+=3D2-b)c=3Dca[d= ],e["margin"+c]=3De["padding"+c]=3Da;return b&&(e.opacity=3De.width=3Da)= ,e}function hb(a,b,c){for(var d,e=3D(kb.tweeners[b]||[]).concat(kb.tween= ers["*"]),f=3D0,g=3De.length;f1)},removeAttr:function(a){retu= rn this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:functio= n(a,b,c){var d,e,f=3Da.nodeType;if(3!=3D=3Df&&8!=3D=3Df&&2!=3D=3Df)retur= n"undefined"=3D=3Dtypeof a.getAttribute?r.prop(a,b,c):(1=3D=3D=3Df&&r.is= XMLDoc(a)||(e=3Dr.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)= ?lb:void 0)),void 0!=3D=3Dc?null=3D=3D=3Dc?void r.removeAttr(a,b):e&&"se= t"in e&&void 0!=3D=3D(d=3De.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&= "get"in e&&null!=3D=3D(d=3De.get(a,b))?d:(d=3Dr.find.attr(a,b), null=3D=3Dd?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioVa= lue&&"radio"=3D=3D=3Db&&B(a,"input")){var c=3Da.value;return a.setAttrib= ute("type",b),c&&(a.value=3Dc),b}}}},removeAttr:function(a,b){var c,d=3D= 0,e=3Db&&b.match(L);if(e&&1=3D=3D=3Da.nodeType)while(c=3De[d++])a.remove= Attribute(c)}}),lb=3D{set:function(a,b,c){return b=3D=3D=3D!1?r.removeAt= tr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\= w+/g),function(a,b){var c=3Dmb[b]||r.find.attr;mb[b]=3Dfunction(a,b,d){v= ar e,f,g=3Db.toLowerCase();return d||(f=3Dmb[g],mb[g]=3De,e=3Dnull!=3Dc(= a,b,d)?g:null,mb[g]=3Df),e}});var nb=3D/^(?:input|select|textarea|button= )$/i,ob=3D/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,= r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(= function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b= ,c){var d,e,f=3Da.nodeType;if(3!=3D=3Df&&8!=3D=3Df&&2!=3D=3Df)return 1=3D= =3D=3Df&&r.isXMLDoc(a)||(b=3Dr.propFix[b]||b,e=3Dr.propHooks[b]),void 0!= =3D=3Dc?e&&"set"in e&&void 0!=3D=3D(d=3De.set(a,c,b))?d:a[b]=3Dc:e&&"get= "in e&&null!=3D=3D(d=3De.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:func= tion(a){var b=3Dr.find.attr(a,"tabindex");return b?parseInt(b,10):nb.tes= t(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlF= or","class":"className"}}),o.optSelected||(r.propHooks.selected=3D{get:f= unction(a){var b=3Da.parentNode;return b&&b.parentNode&&b.parentNode.sel= ectedIndex,null},set:function(a){var b=3Da.parentNode;b&&(b.selectedInde= x,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readO= nly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap= ","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase= ()]=3Dthis});function pb(a){var b=3Da.match(L)||[];return b.join(" ")}fu= nction qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.ext= end({addClass:function(a){var b,c,d,e,f,g,h,i=3D0;if(r.isFunction(a))ret= urn this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if= ("string"=3D=3Dtypeof a&&a){b=3Da.match(L)||[];while(c=3Dthis[i++])if(e=3D= qb(c),d=3D1=3D=3D=3Dc.nodeType&&" "+pb(e)+" "){g=3D0;while(f=3Db[g++])d.= indexOf(" "+f+" ")<0&&(d+=3Df+" ");h=3Dpb(d),e!=3D=3Dh&&c.setAttribute("= class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=3D0;= if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.ca= ll(this,b,qb(this)))});if(!arguments.length)return this.attr("class","")= ;if("string"=3D=3Dtypeof a&&a){b=3Da.match(L)||[];while(c=3Dthis[i++])if= (e=3Dqb(c),d=3D1=3D=3D=3Dc.nodeType&&" "+pb(e)+" "){g=3D0;while(f=3Db[g+= +])while(d.indexOf(" "+f+" ")>-1)d=3Dd.replace(" "+f+" "," ");h=3Dpb(d),= e!=3D=3Dh&&c.setAttribute("class",h)}}return this},toggleClass:function(= a,b){var c=3Dtypeof a;return"boolean"=3D=3Dtypeof b&&"string"=3D=3D=3Dc?= b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(functio= n(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(functi= on(){var b,d,e,f;if("string"=3D=3D=3Dc){d=3D0,e=3Dr(this),f=3Da.match(L)= ||[];while(b=3Df[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else = void 0!=3D=3Da&&"boolean"!=3D=3Dc||(b=3Dqb(this),b&&W.set(this,"__classN= ame__",b),this.setAttribute&&this.setAttribute("class",b||a=3D=3D=3D!1?"= ":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=3D= 0;b=3D" "+a+" ";while(c=3Dthis[d++])if(1=3D=3D=3Dc.nodeType&&(" "+pb(qb(= c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=3D/\r/g;r.fn.extend({= val:function(a){var b,c,d,e=3Dthis[0];{if(arguments.length)return d=3Dr.= isFunction(a),this.each(function(c){var e;1=3D=3D=3Dthis.nodeType&&(e=3D= d?a.call(this,c,r(this).val()):a,null=3D=3De?e=3D"":"number"=3D=3Dtypeof= e?e+=3D"":Array.isArray(e)&&(e=3Dr.map(e,function(a){return null=3D=3Da= ?"":a+""})),b=3Dr.valHooks[this.type]||r.valHooks[this.nodeName.toLowerC= ase()],b&&"set"in b&&void 0!=3D=3Db.set(this,e,"value")||(this.value=3De= ))});if(e)return b=3Dr.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCa= se()],b&&"get"in b&&void 0!=3D=3D(c=3Db.get(e,"value"))?c:(c=3De.value,"= string"=3D=3Dtypeof c?c.replace(rb,""):null=3D=3Dc?"":c)}}}),r.extend({v= alHooks:{option:{get:function(a){var b=3Dr.find.attr(a,"value");return n= ull!=3Db?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=3Da.optio= ns,f=3Da.selectedIndex,g=3D"select-one"=3D=3D=3Da.type,h=3Dg?null:[],i=3D= g?f+1:e.length;for(d=3Df<0?i:g?f:0;d-1)&&(c=3D!0);retu= rn c||(a.selectedIndex=3D-1),f}}}}),r.each(["radio","checkbox"],function= (){r.valHooks[this]=3D{set:function(a,b){if(Array.isArray(b))return a.ch= ecked=3Dr.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=3D= function(a){return null=3D=3D=3Da.getAttribute("value")?"on":a.value})})= ;var sb=3D/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:fu= nction(b,c,e,f){var g,h,i,j,k,m,n,o=3D[e||d],p=3Dl.call(b,"type")?b.type= :b,q=3Dl.call(b,"namespace")?b.namespace.split("."):[];if(h=3Di=3De=3De|= |d,3!=3D=3De.nodeType&&8!=3D=3De.nodeType&&!sb.test(p+r.event.triggered)= &&(p.indexOf(".")>-1&&(q=3Dp.split("."),p=3Dq.shift(),q.sort()),k=3Dp.in= dexOf(":")<0&&"on"+p,b=3Db[r.expando]?b:new r.Event(p,"object"=3D=3Dtype= of b&&b),b.isTrigger=3Df?2:3,b.namespace=3Dq.join("."),b.rnamespace=3Db.= namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b= .result=3Dvoid 0,b.target||(b.target=3De),c=3Dnull=3D=3Dc?[b]:r.makeArra= y(c,[b]),n=3Dr.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!= =3D=3D!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=3Dn.delegateType||p= ,sb.test(j+p)||(h=3Dh.parentNode);h;h=3Dh.parentNode)o.push(h),i=3Dh;i=3D= =3D=3D(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=3D= 0;while((h=3Do[g++])&&!b.isPropagationStopped())b.type=3Dg>1?j:n.bindTyp= e||p,m=3D(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h= ,c),m=3Dk&&h[k],m&&m.apply&&U(h)&&(b.result=3Dm.apply(h,c),b.result=3D=3D= =3D!1&&b.preventDefault());return b.type=3Dp,f||b.isDefaultPrevented()||= n._default&&n._default.apply(o.pop(),c)!=3D=3D!1||!U(e)||k&&r.isFunction= (e[p])&&!r.isWindow(e)&&(i=3De[k],i&&(e[k]=3Dnull),r.event.triggered=3Dp= ,e[p](),r.event.triggered=3Dvoid 0,i&&(e[k]=3Di)),b.result}},simulate:fu= nction(a,b,c){var d=3Dr.extend(new r.Event,c,{type:a,isSimulated:!0});r.= event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return thi= s.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a= ,b){var c=3Dthis[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blu= r focus focusin focusout resize scroll click dblclick mousedown mouseup = mousemove mouseover mouseout mouseenter mouseleave change select submit = keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=3Df= unction(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(= b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mousele= ave(b||a)}}),o.focusin=3D"onfocusin"in a,o.focusin||r.each({focus:"focus= in",blur:"focusout"},function(a,b){var c=3Dfunction(a){r.event.simulate(= b,a.target,r.event.fix(a))};r.event.special[b]=3D{setup:function(){var d= =3Dthis.ownerDocument||this,e=3DW.access(d,b);e||d.addEventListener(a,c,= !0),W.access(d,b,(e||0)+1)},teardown:function(){var d=3Dthis.ownerDocume= nt||this,e=3DW.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,= c,!0),W.remove(d,b))}}});var tb=3Da.location,ub=3Dr.now(),vb=3D/\?/;r.pa= rseXML=3Dfunction(b){var c;if(!b||"string"!=3Dtypeof b)return null;try{c= =3D(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=3Dvoid 0}r= eturn c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid= XML: "+b),c};var wb=3D/\[\]$/,xb=3D/\r?\n/g,yb=3D/^(?:submit|button|ima= ge|reset|file)$/i,zb=3D/^(?:input|select|textarea|keygen)/i;function Ab(= a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?= d(a,e):Ab(a+"["+("object"=3D=3Dtypeof e&&null!=3De?b:"")+"]",e,c,d)});el= se if(c||"object"!=3D=3Dr.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",= b[e],c,d)}r.param=3Dfunction(a,b){var c,d=3D[],e=3Dfunction(a,b){var c=3D= r.isFunction(b)?b():b;d[d.length]=3DencodeURIComponent(a)+"=3D"+encodeUR= IComponent(null=3D=3Dc?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainO= bject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)A= b(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){retu= rn r.param(this.serializeArray())},serializeArray:function(){return this= .map(function(){var a=3Dr.prop(this,"elements");return a?r.makeArray(a):= this}).filter(function(){var a=3Dthis.type;return this.name&&!r(this).is= (":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.t= est(a))}).map(function(a,b){var c=3Dr(this).val();return null=3D=3Dc?nul= l:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replac= e(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var = Bb=3D/%20/g,Cb=3D/#.*$/,Db=3D/([?&])_=3D[^&]*/,Eb=3D/^(.*?):[ \t]*([^\r\= n]*)$/gm,Fb=3D/^(?:about|app|app-storage|.+-extension|file|res|widget):$= /,Gb=3D/^(?:GET|HEAD)$/,Hb=3D/^\/\//,Ib=3D{},Jb=3D{},Kb=3D"*/".concat("*= "),Lb=3Dd.createElement("a");Lb.href=3Dtb.href;function Mb(a){return fun= ction(b,c){"string"!=3Dtypeof b&&(c=3Db,b=3D"*");var d,e=3D0,f=3Db.toLow= erCase().match(L)||[];if(r.isFunction(c))while(d=3Df[e++])"+"=3D=3D=3Dd[= 0]?(d=3Dd.slice(1)||"*",(a[d]=3Da[d]||[]).unshift(c)):(a[d]=3Da[d]||[]).= push(c)}}function Nb(a,b,c,d){var e=3D{},f=3Da=3D=3D=3DJb;function g(h){= var i;return e[h]=3D!0,r.each(a[h]||[],function(a,h){var j=3Dh(b,c,d);re= turn"string"!=3Dtypeof j||f||e[j]?f?!(i=3Dj):void 0:(b.dataTypes.unshift= (j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a= ,b){var c,d,e=3Dr.ajaxSettings.flatOptions||{};for(c in b)void 0!=3D=3Db= [c]&&((e[c]?a:d||(d=3D{}))[c]=3Db[c]);return d&&r.extend(!0,a,d),a}funct= ion Pb(a,b,c){var d,e,f,g,h=3Da.contents,i=3Da.dataTypes;while("*"=3D=3D= =3Di[0])i.shift(),void 0=3D=3D=3Dd&&(d=3Da.mimeType||b.getResponseHeader= ("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);br= eak}if(i[0]in c)f=3Di[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i= [0]]){f=3De;break}g||(g=3De)}f=3Df||g}if(f)return f!=3D=3Di[0]&&i.unshif= t(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j=3D{},k=3Da.dataTypes.slic= e();if(k[1])for(g in a.converters)j[g.toLowerCase()]=3Da.converters[g];f= =3Dk.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=3Db= ),!i&&d&&a.dataFilter&&(b=3Da.dataFilter(b,a.dataType)),i=3Df,f=3Dk.shif= t())if("*"=3D=3D=3Df)f=3Di;else if("*"!=3D=3Di&&i!=3D=3Df){if(g=3Dj[i+" = "+f]||j["* "+f],!g)for(e in j)if(h=3De.split(" "),h[1]=3D=3D=3Df&&(g=3Dj= [i+" "+h[0]]||j["* "+h[0]])){g=3D=3D=3D!0?g=3Dj[e]:j[e]!=3D=3D!0&&(f=3Dh= [0],k.unshift(h[1]));break}if(g!=3D=3D!0)if(g&&a["throws"])b=3Dg(b);else= try{b=3Dg(b)}catch(l){return{state:"parsererror",error:g?l:"No conversi= on from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0= ,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb= .test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"applic= ation/x-www-form-urlencoded; charset=3DUTF-8",accepts:{"*":Kb,text:"text= /plain",html:"text/html",xml:"application/xml, text/xml",json:"applicati= on/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\= bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"re= sponseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON= .parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup= :function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)}= ,ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"=3D= =3Dtypeof b&&(c=3Db,b=3Dvoid 0),c=3Dc||{};var e,f,g,h,i,j,k,l,m,n,o=3Dr.= ajaxSetup({},c),p=3Do.context||o,q=3Do.context&&(p.nodeType||p.jquery)?r= (p):r.event,s=3Dr.Deferred(),t=3Dr.Callbacks("once memory"),u=3Do.status= Code||{},v=3D{},w=3D{},x=3D"canceled",y=3D{readyState:0,getResponseHeade= r:function(a){var b;if(k){if(!h){h=3D{};while(b=3DEb.exec(g))h[b[1].toLo= werCase()]=3Db[2]}b=3Dh[a.toLowerCase()]}return null=3D=3Db?null:b},getA= llResponseHeaders:function(){return k?g:null},setRequestHeader:function(= a,b){return null=3D=3Dk&&(a=3Dw[a.toLowerCase()]=3Dw[a.toLowerCase()]||a= ,v[a]=3Db),this},overrideMimeType:function(a){return null=3D=3Dk&&(o.mim= eType=3Da),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.sta= tus]);else for(b in a)u[b]=3D[u[b],a[b]];return this},abort:function(a){= var b=3Da||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=3D= ((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=3Dc.method|= |c.type||o.method||o.type,o.dataTypes=3D(o.dataType||"*").toLowerCase().= match(L)||[""],null=3D=3Do.crossDomain){j=3Dd.createElement("a");try{j.h= ref=3Do.url,j.href=3Dj.href,o.crossDomain=3DLb.protocol+"//"+Lb.host!=3D= j.protocol+"//"+j.host}catch(z){o.crossDomain=3D!0}}if(o.data&&o.process= Data&&"string"!=3Dtypeof o.data&&(o.data=3Dr.param(o.data,o.traditional)= ),Nb(Ib,o,c,y),k)return y;l=3Dr.event&&o.global,l&&0=3D=3D=3Dr.active++&= &r.event.trigger("ajaxStart"),o.type=3Do.type.toUpperCase(),o.hasContent= =3D!Gb.test(o.type),f=3Do.url.replace(Cb,""),o.hasContent?o.data&&o.proc= essData&&0=3D=3D=3D(o.contentType||"").indexOf("application/x-www-form-u= rlencoded")&&(o.data=3Do.data.replace(Bb,"+")):(n=3Do.url.slice(f.length= ),o.data&&(f+=3D(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache=3D=3D= =3D!1&&(f=3Df.replace(Db,"$1"),n=3D(vb.test(f)?"&":"?")+"_=3D"+ub++ +n),= o.url=3Df+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Mo= dified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-= Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!=3D=3D!1||c.cont= entType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestH= eader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dat= aTypes[0]]+("*"!=3D=3Do.dataTypes[0]?", "+Kb+"; q=3D0.01":""):o.accepts[= "*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeS= end&&(o.beforeSend.call(p,y,o)=3D=3D=3D!1||k))return y.abort();if(x=3D"a= bort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=3DNb(Jb,o,c,= y)){if(y.readyState=3D1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.asyn= c&&o.timeout>0&&(i=3Da.setTimeout(function(){y.abort("timeout")},o.timeo= ut));try{k=3D!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No= Transport");function A(b,c,d,h){var j,m,n,v,w,x=3Dc;k||(k=3D!0,i&&a.cle= arTimeout(i),e=3Dvoid 0,g=3Dh||"",y.readyState=3Db>0?4:0,j=3Db>=3D200&&b= <300||304=3D=3D=3Db,d&&(v=3DPb(o,y,d)),v=3DQb(o,v,y,j),j?(o.ifModified&&= (w=3Dy.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=3Dw),w=3D= y.getResponseHeader("etag"),w&&(r.etag[f]=3Dw)),204=3D=3D=3Db||"HEAD"=3D= =3D=3Do.type?x=3D"nocontent":304=3D=3D=3Db?x=3D"notmodified":(x=3Dv.stat= e,m=3Dv.data,n=3Dv.error,j=3D!n)):(n=3Dx,!b&&x||(x=3D"error",b<0&&(b=3D0= ))),y.status=3Db,y.statusText=3D(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.r= ejectWith(p,[y,x,n]),y.statusCode(u),u=3Dvoid 0,l&&q.trigger(j?"ajaxSucc= ess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxCom= plete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSO= N:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){re= turn r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r= [b]=3Dfunction(a,c,d,e){return r.isFunction(c)&&(e=3De||d,d=3Dc,c=3Dvoid= 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlain= Object(a)&&a))}}),r._evalUrl=3Dfunction(a){return r.ajax({url:a,type:"GE= T",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.ext= end({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=3Da.= call(this[0])),b=3Dr(a,this[0].ownerDocument).eq(0).clone(!0),this[0].pa= rentNode&&b.insertBefore(this[0]),b.map(function(){var a=3Dthis;while(a.= firstElementChild)a=3Da.firstElementChild;return a}).append(this)),this}= ,wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(th= is).wrapInner(a.call(this,b))}):this.each(function(){var b=3Dr(this),c=3D= b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b= =3Dr.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call= (this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each= (function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudo= s.hidden=3Dfunction(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.= visible=3Dfunction(a){return!!(a.offsetWidth||a.offsetHeight||a.getClien= tRects().length)},r.ajaxSettings.xhr=3Dfunction(){try{return new a.XMLHt= tpRequest}catch(b){}};var Rb=3D{0:200,1223:204},Sb=3Dr.ajaxSettings.xhr(= );o.cors=3D!!Sb&&"withCredentials"in Sb,o.ajax=3DSb=3D!!Sb,r.ajaxTranspo= rt(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:functio= n(e,f){var g,h=3Db.xhr();if(h.open(b.type,b.url,b.async,b.username,b.pas= sword),b.xhrFields)for(g in b.xhrFields)h[g]=3Db.xhrFields[g];b.mimeType= &&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X= -Requested-With"]||(e["X-Requested-With"]=3D"XMLHttpRequest");for(g in e= )h.setRequestHeader(g,e[g]);c=3Dfunction(a){return function(){c&&(c=3Dd=3D= h.onload=3Dh.onerror=3Dh.onabort=3Dh.onreadystatechange=3Dnull,"abort"=3D= =3D=3Da?h.abort():"error"=3D=3D=3Da?"number"!=3Dtypeof h.status?f(0,"err= or"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"tex= t"!=3D=3D(h.responseType||"text")||"string"!=3Dtypeof h.responseText?{bi= nary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.o= nload=3Dc(),d=3Dh.onerror=3Dc("error"),void 0!=3D=3Dh.onabort?h.onabort=3D= d:h.onreadystatechange=3Dfunction(){4=3D=3D=3Dh.readyState&&a.setTimeout= (function(){c&&d()})},c=3Dc("abort");try{h.send(b.hasContent&&b.data||nu= ll)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(= function(a){a.crossDomain&&(a.contents.script=3D!1)}),r.ajaxSetup({accep= ts:{script:"text/javascript, application/javascript, application/ecmascr= ipt, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\= b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r= .ajaxPrefilter("script",function(a){void 0=3D=3D=3Da.cache&&(a.cache=3D!= 1),a.crossDomain&&(a.type=3D"GET")}),r.ajaxTransport("script",function(a= ){if(a.crossDomain){var b,c;return{send:function(e,f){b=3Dr("