{"id":72645,"date":"2026-04-30T10:08:25","date_gmt":"2026-04-30T10:08:25","guid":{"rendered":"https:\/\/one.sightlinemg.com\/defensenews\/uncategorized\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/"},"modified":"2026-08-08T01:31:53","modified_gmt":"2026-08-08T01:31:53","slug":"investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions","status":"publish","type":"post","link":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/","title":{"rendered":"Investigation: Russian shadow airlines use Algeria as base for secretive missions"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">BERLIN\/VIENNA \u2014 A fleet of Russian military-affiliated cargo aircraft has made over a hundred flights to Algeria over the past year, likely delivering modern fighter jets and equipment to bolster an increasingly important Russian ally at Europe\u2019s southern flank, and using the country as a hub to project Russia\u2019s power deeper into Africa. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A Defense News investigation found at least 167 cargo flights linking Russia to Algeria between March 2025 and April 2026, making the North African country one of the key hubs in Moscow\u2019s global freight network. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Many of the flights connected airfields associated with United Aircraft Corporation, Russia\u2019s state-owned maker of military jets, to Algerian air bases. Several of the cargo flights also roughly coincided with the sighting of new Russian-made warplanes <a href=\"https:\/\/www.defensenews.com\/global\/europe\/2026\/02\/10\/russian-stealth-jets-have-arrived-in-north-africa-as-filmed-by-algerian-potato-farmer\/\" target=\"_blank\" rel=\"\">roaring over the Algerian countryside<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The uptick in air traffic comes amid ongoing deliveries of several types of Russian-made warplanes to Algeria. The country is currently receiving Su-57 fifth-generation stealth fighter jets and Su-35 fighters from Russia. It also operates a fleet of about 60 Su-30 multirole fighters and around 40 MiG-29 air-superiority fighters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At least some of the Russia-Algeria flights are likely linked to the flow of new-generation weaponry. \u201cI think this is a pretty reasonable explanation for these flights,\u201d said Margaux Garcia, a senior analyst with Washington-based C4ADS who tracks Russia\u2019s covert activities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its billion-dollar military export business following the invasion of Ukraine.<\/p>\n\n\n\n\n<iframe width=\"100%\" style=\"aspect-ratio: 16\/9;\" src=\"data:text\/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+UnVzc2lhJ3MgU2hhZG93IEFpcmxpbmVzOiBGbGlnaHQgQ2lyY3VpdHMgVGhyb3VnaCBBbGdlcmlhPC90aXRsZT4KPHN0eWxlPgovKiByZXF1aXJlZCBzdHlsZXMgKi8NCg0KLmxlYWZsZXQtcGFuZSwNCi5sZWFmbGV0LXRpbGUsDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3csDQoubGVhZmxldC10aWxlLWNvbnRhaW5lciwNCi5sZWFmbGV0LXBhbmUgPiBzdmcsDQoubGVhZmxldC1wYW5lID4gY2FudmFzLA0KLmxlYWZsZXQtem9vbS1ib3gsDQoubGVhZmxldC1pbWFnZS1sYXllciwNCi5sZWFmbGV0LWxheWVyIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJbGVmdDogMDsNCgl0b3A6IDA7DQoJfQ0KLmxlYWZsZXQtY29udGFpbmVyIHsNCglvdmVyZmxvdzogaGlkZGVuOw0KCX0NCi5sZWFmbGV0LXRpbGUsDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3cgew0KCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7DQoJICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsNCgkgICAgICAgIHVzZXItc2VsZWN0OiBub25lOw0KCSAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7DQoJfQ0KLyogUHJldmVudHMgSUUxMSBmcm9tIGhpZ2hsaWdodGluZyB0aWxlcyBpbiBibHVlICovDQoubGVhZmxldC10aWxlOjpzZWxlY3Rpb24gew0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KfQ0KLyogU2FmYXJpIHJlbmRlcnMgbm9uLXJldGluYSB0aWxlIG9uIHJldGluYSBiZXR0ZXIgd2l0aCB0aGlzLCBidXQgQ2hyb21lIGlzIHdvcnNlICovDQoubGVhZmxldC1zYWZhcmkgLmxlYWZsZXQtdGlsZSB7DQoJaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0Ow0KCX0NCi8qIGhhY2sgdGhhdCBwcmV2ZW50cyBodyBsYXllcnMgInN0cmV0Y2hpbmciIHdoZW4gbG9hZGluZyBuZXcgdGlsZXMgKi8NCi5sZWFmbGV0LXNhZmFyaSAubGVhZmxldC10aWxlLWNvbnRhaW5lciB7DQoJd2lkdGg6IDE2MDBweDsNCgloZWlnaHQ6IDE2MDBweDsNCgktd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsNCgl9DQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3cgew0KCWRpc3BsYXk6IGJsb2NrOw0KCX0NCi8qIC5sZWFmbGV0LWNvbnRhaW5lciBzdmc6IHJlc2V0IHN2ZyBtYXgtd2lkdGggZGVjbGVyYXRpb24gc2hpcHBlZCBpbiBKb29tbGEhIChqb29tbGEub3JnKSAzLnggKi8NCi8qIC5sZWFmbGV0LWNvbnRhaW5lciBpbWc6IG1hcCBpcyBicm9rZW4gaW4gRkYgaWYgeW91IGhhdmUgbWF4LXdpZHRoOiAxMDAlIG9uIHRpbGVzICovDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtb3ZlcmxheS1wYW5lIHN2ZyB7DQoJbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7DQoJbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50Ow0KCX0NCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1tYXJrZXItcGFuZSBpbWcsDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtc2hhZG93LXBhbmUgaW1nLA0KLmxlYWZsZXQtY29udGFpbmVyIC5sZWFmbGV0LXRpbGUtcGFuZSBpbWcsDQoubGVhZmxldC1jb250YWluZXIgaW1nLmxlYWZsZXQtaW1hZ2UtbGF5ZXIsDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtdGlsZSB7DQoJbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7DQoJbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50Ow0KCXdpZHRoOiBhdXRvOw0KCXBhZGRpbmc6IDA7DQoJfQ0KDQoubGVhZmxldC1jb250YWluZXIgaW1nLmxlYWZsZXQtdGlsZSB7DQoJLyogU2VlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MDAxMjAgKi8NCgltaXgtYmxlbmQtbW9kZTogcGx1cy1saWdodGVyOw0KfQ0KDQoubGVhZmxldC1jb250YWluZXIubGVhZmxldC10b3VjaC16b29tIHsNCgktbXMtdG91Y2gtYWN0aW9uOiBwYW4teCBwYW4teTsNCgl0b3VjaC1hY3Rpb246IHBhbi14IHBhbi15Ow0KCX0NCi5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLWRyYWcgew0KCS1tcy10b3VjaC1hY3Rpb246IHBpbmNoLXpvb207DQoJLyogRmFsbGJhY2sgZm9yIEZGIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBwaW5jaC16b29tICovDQoJdG91Y2gtYWN0aW9uOiBub25lOw0KCXRvdWNoLWFjdGlvbjogcGluY2gtem9vbTsNCn0NCi5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLWRyYWcubGVhZmxldC10b3VjaC16b29tIHsNCgktbXMtdG91Y2gtYWN0aW9uOiBub25lOw0KCXRvdWNoLWFjdGlvbjogbm9uZTsNCn0NCi5sZWFmbGV0LWNvbnRhaW5lciB7DQoJLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCi5sZWFmbGV0LWNvbnRhaW5lciBhIHsNCgktd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoNTEsIDE4MSwgMjI5LCAwLjQpOw0KfQ0KLmxlYWZsZXQtdGlsZSB7DQoJZmlsdGVyOiBpbmhlcml0Ow0KCXZpc2liaWxpdHk6IGhpZGRlbjsNCgl9DQoubGVhZmxldC10aWxlLWxvYWRlZCB7DQoJdmlzaWJpbGl0eTogaW5oZXJpdDsNCgl9DQoubGVhZmxldC16b29tLWJveCB7DQoJd2lkdGg6IDA7DQoJaGVpZ2h0OiAwOw0KCS1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsNCgkgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQoJei1pbmRleDogODAwOw0KCX0NCi8qIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODMxOSAqLw0KLmxlYWZsZXQtb3ZlcmxheS1wYW5lIHN2ZyB7DQoJLW1vei11c2VyLXNlbGVjdDogbm9uZTsNCgl9DQoNCi5sZWFmbGV0LXBhbmUgICAgICAgICB7IHotaW5kZXg6IDQwMDsgfQ0KDQoubGVhZmxldC10aWxlLXBhbmUgICAgeyB6LWluZGV4OiAyMDA7IH0NCi5sZWFmbGV0LW92ZXJsYXktcGFuZSB7IHotaW5kZXg6IDQwMDsgfQ0KLmxlYWZsZXQtc2hhZG93LXBhbmUgIHsgei1pbmRleDogNTAwOyB9DQoubGVhZmxldC1tYXJrZXItcGFuZSAgeyB6LWluZGV4OiA2MDA7IH0NCi5sZWFmbGV0LXRvb2x0aXAtcGFuZSAgIHsgei1pbmRleDogNjUwOyB9DQoubGVhZmxldC1wb3B1cC1wYW5lICAgeyB6LWluZGV4OiA3MDA7IH0NCg0KLmxlYWZsZXQtbWFwLXBhbmUgY2FudmFzIHsgei1pbmRleDogMTAwOyB9DQoubGVhZmxldC1tYXAtcGFuZSBzdmcgICAgeyB6LWluZGV4OiAyMDA7IH0NCg0KLmxlYWZsZXQtdm1sLXNoYXBlIHsNCgl3aWR0aDogMXB4Ow0KCWhlaWdodDogMXB4Ow0KCX0NCi5sdm1sIHsNCgliZWhhdmlvcjogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsUENGRVQwTlVXVkJGSUdoMGJXdytQR2gwYld3Z2JHRnVaejBpWlc0aVBqeG9aV0ZrUGp4dFpYUmhJR05vWVhKelpYUTlJblYwWmkwNElpOCtQRzFsZEdFZ2JtRnRaVDBpZG1sbGQzQnZjblFpSUdOdmJuUmxiblE5SW5kcFpIUm9QV1JsZG1salpTMTNhV1IwYUN3Z2FXNXBkR2xoYkMxelkyRnNaVDB4TGpBaUx6NDhiV1YwWVNCdVlXMWxQU0prWlhOamNtbHdkR2x2YmlJZ1kyOXVkR1Z1ZEQwaVZHaGxJRU5FVGlCbWIzSWdaWFpsY25sMGFHbHVaeUJ2YmlCdWNHMGlMejQ4YkdsdWF5QnlaV3c5SW1samIyNGlJSFI1Y0dVOUltbHRZV2RsTDJwd1pXY2lJR2h5WldZOUlpOW1ZWFpwWTI5dUxtcHdaeUl2UGp4c2FXNXJJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMTloYzNObGRITXZjM1I1YkdWekxVUTJXRkEzV1VWRExtTnpjeUl2UGp4c2FXNXJJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMTloYzNObGRITXZZMjlrWlMxc2FXZG9kQzFDTWt4SVZWTktVaTVqYzNNaUx6NDhjMk55YVhCMElIUjVjR1U5SW1sdGNHOXlkRzFoY0NJK2V5SnBiWEJ2Y25SeklqcDdJbkJ5WldGamRDSTZJbWgwZEhCek9pOHZkVzV3YTJjdVkyOXRMM0J5WldGamRFQXhNQzR5TlM0MEwyUnBjM1F2Y0hKbFlXTjBMbTF2WkhWc1pTNXFjeUlzSW5CeVpXRmpkQzlvYjI5cmN5STZJbWgwZEhCek9pOHZkVzV3YTJjdVkyOXRMM0J5WldGamRFQXhNQzR5TlM0MEwyaHZiMnR6TDJScGMzUXZhRzl2YTNNdWJXOWtkV3hsTG1weklpd2ljSEpsWVdOMEwycHplQzF5ZFc1MGFXMWxJam9pYUhSMGNITTZMeTkxYm5Cclp5NWpiMjB2Y0hKbFlXTjBRREV3TGpJMUxqUXZhbk40TFhKMWJuUnBiV1V2WkdsemRDOXFjM2hTZFc1MGFXMWxMbTF2WkhWc1pTNXFjeUo5ZlR3dmMyTnlhWEIwUGp4elkzSnBjSFFnZEhsd1pUMGliVzlrZFd4bElpQnpjbU05SW1oMGRIQnpPaTh2WVhCd0xuVnVjR3RuTG1OdmJTOWZZWE56WlhSekwzTmpjbWx3ZEhNdE5VeFhSelpNVVUwdWFuTWlJR1JsWm1WeVBqd3ZjMk55YVhCMFBqeDBhWFJzWlQ1VlRsQkxSend2ZEdsMGJHVStQSE5qY21sd2RDQmhjM2x1WXlCemNtTTlJbWgwZEhCek9pOHZkM2QzTG1kdmIyZHNaWFJoWjIxaGJtRm5aWEl1WTI5dEwyZDBZV2N2YW5NL2FXUTlWVUV0TVRRd016VXlNVGc0TFRFaVBqd3ZjMk55YVhCMFBqeHpZM0pwY0hRK2QybHVaRzkzTG1SaGRHRk1ZWGxsY2lBOUlIZHBibVJ2ZHk1a1lYUmhUR0Y1WlhJZ2ZId2dXMTA3Q21aMWJtTjBhVzl1SUdkMFlXY29LWHRrWVhSaFRHRjVaWEl1Y0hWemFDaGhjbWQxYldWdWRITXBPMzBLWjNSaFp5Z25hbk1uTENCdVpYY2dSR0YwWlNncEtUc0taM1JoWnlnblkyOXVabWxuSnl3Z0oxVkJMVEUwTURNMU1qRTRPQzB4SnlrN1BDOXpZM0pwY0hRK1BDOW9aV0ZrUGp4aWIyUjVQanhvWldGa1pYSWdZMnhoYzNNOUltSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB6TURBZ1ltY3RjMnhoZEdVdE1UQXdJSFJsZUhRdGMyeGhkR1V0T1RVd0lqNDhaR2wySUdOc1lYTnpQU0p3TFRRZ2JYZ3RZWFYwYnlCbWJHVjRJR3AxYzNScFpua3RZbVYwZDJWbGJpQnBkR1Z0Y3kxalpXNTBaWElnYkdjNmJXRjRMWGN0YzJOeVpXVnVMWGhzSWo0OGFERWdZMnhoYzNNOUluUmxlSFF0TW5oc0lHWnZiblF0WW05c1pDQnBibXhwYm1VdFlteHZZMnNpUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2ZFc1d2EyY3VZMjl0SWo1VlRsQkxSend2WVQ0OEwyZ3hQanh6Y0dGdUlHTnNZWE56UFNKcGJteHBibVV0WW14dlkyc2dhQzFtZFd4c0lqNDhZU0JvY21WbVBTSm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZkVzV3YTJjaVBqeHpkbWNnWVhKcFlTMW9hV1JrWlc0OUluUnlkV1VpSUdacGJHdzlJbU4xY25KbGJuUkRiMnh2Y2lJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQmpiR0Z6Y3owaWR5MDJJR2d0TmlJK1BIQmhkR2dnWm1sc2JDMXlkV3hsUFNKbGRtVnViMlJrSWlCa1BTSk5NVEl1TURBMklESmhPUzQ0TkRjZ09TNDRORGNnTUNBd0lEQXROaTQwT0RRZ01pNDBOQ0F4TUM0ek1pQXhNQzR6TWlBd0lEQWdNQzB6TGpNNU15QTJMakUzSURFd0xqUTRJREV3TGpRNElEQWdNQ0F3SURFdU16RTNJRFl1T1RVMUlERXdMakEwTlNBeE1DNHdORFVnTUNBd0lEQWdOUzQwSURRdU5ERTRZeTQxTURRdU1EazFMalk0TXkwdU1qSXpMalk0TXkwdU5EazBJREF0TGpJME5TMHVNREV0TVM0d05USXRMakF4TkMweExqa3dPQzB5TGpjNExqWXlMVE11TXpZMkxURXVNakV0TXk0ek5qWXRNUzR5TVdFeUxqY3hNU0F5TGpjeE1TQXdJREFnTUMweExqRXhMVEV1TldNdExqa3dOeTB1TmpNM0xqQTNMUzQyTWpFdU1EY3RMall5TVM0ek1UY3VNRFEwTGpZeUxqRTJNeTQ0T0RVdU16UTJMakkyTmk0eE9ETXVORGczTGpReU5pNDJORGN1TnpFdU1UTTFMakkxTXk0ek1UZ3VORGMyTGpVek9DNDJOVFZoTWk0d056a2dNaTR3TnprZ01DQXdJREFnTWk0ek55NHhPVFpqTGpBME5TMHVOVEl1TWpjdE1TNHdNRFl1TmpNMUxURXVNemN0TWk0eU1Ua3RMakkxT1MwMExqVTFOQzB4TGpFek9DMDBMalUxTkMwMUxqQTNZVFF1TURJeUlEUXVNREl5SURBZ01DQXhJREV1TURNeExUSXVOelVnTXk0M055QXpMamMzSURBZ01DQXhJQzR3T1RZdE1pNDNNVE56TGpnek9TMHVNamMxSURJdU56UTVJREV1TURWaE9TNHlOaUE1TGpJMklEQWdNQ0F4SURVdU1EQTBJREJqTVM0NU1EWXRNUzR6TWpVZ01pNDNOQzB4TGpBMUlESXVOelF0TVM0d05TNHpOeTQ0TlRndU5EQTJJREV1T0RJNExqRXdNU0F5TGpjeE0yRTBMakF4TnlBMExqQXhOeUF3SURBZ01TQXhMakF5T1NBeUxqYzFZekFnTXk0NU16a3RNaTR6TXprZ05DNDRNRFV0TkM0MU5qUWdOUzR3TlRoaE1pNDBOekVnTWk0ME56RWdNQ0F3SURFZ0xqWTNPU0F4TGpnNU4yTXdJREV1TXpjeUxTNHdNVElnTWk0ME56Y3RMakF4TWlBeUxqZ3hOQ0F3SUM0eU56SXVNVGd1TlRreUxqWTROeTQwT1RKaE1UQXVNRFVnTVRBdU1EVWdNQ0F3SURBZ05TNHpPRGd0TkM0ME1qRWdNVEF1TkRjeklERXdMalEzTXlBd0lEQWdNQ0F4TGpNeE15MDJMamswT0NBeE1DNHpNaUF4TUM0ek1pQXdJREFnTUMwekxqTTVMVFl1TVRZMVFUa3VPRFEzSURrdU9EUTNJREFnTUNBd0lERXlMakF3TnlBeVdpSWdZMnhwY0MxeWRXeGxQU0psZG1WdWIyUmtJajQ4TDNCaGRHZytQQzl6ZG1jK1BDOWhQand2YzNCaGJqNDhMMlJwZGo0OEwyaGxZV1JsY2o0OGJXRnBiaUJqYkdGemN6MGljSGd0TkNCd1lpMHlOQ0J0ZUMxaGRYUnZJR3huT20xaGVDMTNMWE5qY21WbGJpMTRiQ0JzWnpwd1lpMDBOQ0krUEdobFlXUmxjaUJqYkdGemN6MGljSFF0TmlCd1lpMDBJR3huT25CMExURTJJajQ4WkdsMklHTnNZWE56UFNKdFlpMDJJR1pzWlhnZ2FuVnpkR2xtZVMxaVpYUjNaV1Z1SUdsMFpXMXpMV05sYm5SbGNpSStQR2d4SUdOc1lYTnpQU0owWlhoMExXSnNZV05ySUhSbGVIUXRNM2hzSUd4bFlXUnBibWN0ZEdsbmFIUWdabTl1ZEMxelpXMXBZbTlzWkNJK2JHVmhabXhsZER3dmFERStQR1JwZGlCamJHRnpjejBpZEdWNGRDMXlhV2RvZENCM0xUUTRJajQ4YzNCaGJqNVdaWEp6YVc5dU9pQThMM053WVc0K1BITndZVzRnWkdGMFlTMW9lV1J5WVhSbFBTSjdKbkYxYjNRN2EyVjVKbkYxYjNRN09pWnhkVzkwTzFabGNuTnBiMjVUWld4bFkzUnZjaVp4ZFc5ME95d21jWFZ2ZER0d2NtOXdjeVp4ZFc5ME96cDdKbkYxYjNRN1lYWmhhV3hoWW14bFZHRm5jeVp4ZFc5ME96cDdKbkYxYjNRN1ltVjBZU1p4ZFc5ME96b21jWFZ2ZERzeExqZ3VNQzFpWlhSaExqTW1jWFZ2ZERzc0puRjFiM1E3YkdGMFpYTjBKbkYxYjNRN09pWnhkVzkwT3pFdU9TNDBKbkYxYjNRN0xDWnhkVzkwTzJGc2NHaGhKbkYxYjNRN09pWnhkVzkwT3pJdU1DNHdMV0ZzY0doaExqRW1jWFZ2ZER0OUxDWnhkVzkwTzJGMllXbHNZV0pzWlZabGNuTnBiMjV6Sm5GMWIzUTdPbHNtY1hWdmREc3lMakF1TUMxaGJIQm9ZUzR4Sm5GMWIzUTdMQ1p4ZFc5ME96SXVNQzR3TFdGc2NHaGhKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNDBKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHpKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHlKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHhKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU9DNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU9DNHdMV0psZEdFdU15WnhkVzkwT3l3bWNYVnZkRHN4TGpndU1DMWlaWFJoTGpJbWNYVnZkRHNzSm5GMWIzUTdNUzQ0TGpBdFltVjBZUzR4Sm5GMWIzUTdMQ1p4ZFc5ME96RXVPQzR3TFdKbGRHRXVNQ1p4ZFc5ME95d21jWFZ2ZERzeExqZ3VNQzFoYkhCb1lTNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU55NHhKbkYxYjNRN0xDWnhkVzkwT3pFdU55NHdKbkYxYjNRN0xDWnhkVzkwT3pFdU5pNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU5TNHhKbkYxYjNRN0xDWnhkVzkwT3pFdU5TNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU5DNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU15NDBKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHpKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHlKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHhKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1pNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1TNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHpKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHlKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHhKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHdMWEpqTGpNbWNYVnZkRHNzSm5GMWIzUTdNUzR3TGpBdGNtTXVNaVp4ZFc5ME95d21jWFZ2ZERzeExqQXVNQzF5WXk0eEpuRjFiM1E3TENaeGRXOTBPekV1TUM0d0xXSmxkR0V1TWlaeGRXOTBPeXdtY1hWdmREc3hMakF1TUMxaVpYUmhMakVtY1hWdmREc3NKbkYxYjNRN01DNDNMamNtY1hWdmREc3NKbkYxYjNRN01DNDNMalVtY1hWdmREc3NKbkYxYjNRN01DNDNMalFtY1hWdmREc3NKbkYxYjNRN01DNDNMak1tY1hWdmREc3NKbkYxYjNRN01DNDNMakltY1hWdmREc3NKbkYxYjNRN01DNDNMakVtY1hWdmREc3NKbkYxYjNRN01DNDNMakFtY1hWdmREc3NKbkYxYjNRN01DNDJMalFtY1hWdmREc3NKbkYxYjNRN01DNDJMak1tY1hWdmREc3NKbkYxYjNRN01DNDJMakltY1hWdmREc3NKbkYxYjNRN01DNDJMakVtY1hWdmREc3NKbkYxYjNRN01DNDJMakFtY1hWdmREc3NKbkYxYjNRN01DNDFMakVtY1hWdmREdGRMQ1p4ZFc5ME8yTjFjbkpsYm5SV1pYSnphVzl1Sm5GMWIzUTdPaVp4ZFc5ME96RXVPUzQwSm5GMWIzUTdMQ1p4ZFc5ME8zQmhkR2h1WVcxbFJtOXliV0YwSm5GMWIzUTdPaVp4ZFc5ME95OXNaV0ZtYkdWMFFDVnpMMlpwYkdWekwyUnBjM1FtY1hWdmREc3NKbkYxYjNRN1kyeGhjM01tY1hWdmREczZKbkYxYjNRN2R5MHlPQ0J3TFRFZ1ltOXlaR1Z5SUdKdmNtUmxjaTF6YkdGMFpTMHpNREFnWW1jdGMyeGhkR1V0TVRBd0lIUmxlSFF0YzIwbWNYVnZkRHQ5ZlNJK1BITmxiR1ZqZENCdVlXMWxQU0oyWlhKemFXOXVJaUJqYkdGemN6MGlkeTB5T0NCd0xURWdZbTl5WkdWeUlHSnZjbVJsY2kxemJHRjBaUzB6TURBZ1ltY3RjMnhoZEdVdE1UQXdJSFJsZUhRdGMyMGlQanh2Y0hSbmNtOTFjQ0JzWVdKbGJEMGlWR0ZuY3lJK1BHOXdkR2x2YmlCMllXeDFaVDBpTWk0d0xqQXRZV3h3YUdFdU1TSStZV3h3YUdFZ0tESXVNQzR3TFdGc2NHaGhMakVwUEM5dmNIUnBiMjQrUEc5d2RHbHZiaUIyWVd4MVpUMGlNUzQ0TGpBdFltVjBZUzR6SWo1aVpYUmhJQ2d4TGpndU1DMWlaWFJoTGpNcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmlCelpXeGxZM1JsWkNCMllXeDFaVDBpTVM0NUxqUWlQbXhoZEdWemRDQW9NUzQ1TGpRcFBDOXZjSFJwYjI0K1BDOXZjSFJuY205MWNENDhiM0IwWjNKdmRYQWdiR0ZpWld3OUlsWmxjbk5wYjI1eklqNDhiM0IwYVc5dUlIWmhiSFZsUFNJeUxqQXVNQzFoYkhCb1lTNHhJajR5TGpBdU1DMWhiSEJvWVM0eFBDOXZjSFJwYjI0K1BHOXdkR2x2YmlCMllXeDFaVDBpTWk0d0xqQXRZV3h3YUdFaVBqSXVNQzR3TFdGc2NHaGhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQnpaV3hsWTNSbFpDQjJZV3gxWlQwaU1TNDVMalFpUGpFdU9TNDBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMak1pUGpFdU9TNHpQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMaklpUGpFdU9TNHlQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMakVpUGpFdU9TNHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMakFpUGpFdU9TNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDRMakFpUGpFdU9DNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDRMakF0WW1WMFlTNHpJajR4TGpndU1DMWlaWFJoTGpNOEwyOXdkR2x2Ymo0OGIzQjBhVzl1SUhaaGJIVmxQU0l4TGpndU1DMWlaWFJoTGpJaVBqRXVPQzR3TFdKbGRHRXVNand2YjNCMGFXOXVQanh2Y0hScGIyNGdkbUZzZFdVOUlqRXVPQzR3TFdKbGRHRXVNU0krTVM0NExqQXRZbVYwWVM0eFBDOXZjSFJwYjI0K1BHOXdkR2x2YmlCMllXeDFaVDBpTVM0NExqQXRZbVYwWVM0d0lqNHhMamd1TUMxaVpYUmhMakE4TDI5d2RHbHZiajQ4YjNCMGFXOXVJSFpoYkhWbFBTSXhMamd1TUMxaGJIQm9ZUzR3SWo0eExqZ3VNQzFoYkhCb1lTNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDNMakVpUGpFdU55NHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDNMakFpUGpFdU55NHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDJMakFpUGpFdU5pNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDFMakVpUGpFdU5TNHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDFMakFpUGpFdU5TNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDBMakFpUGpFdU5DNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMalFpUGpFdU15NDBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMak1pUGpFdU15NHpQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMaklpUGpFdU15NHlQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMakVpUGpFdU15NHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMakFpUGpFdU15NHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHlMakFpUGpFdU1pNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHhMakFpUGpFdU1TNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMak1pUGpFdU1DNHpQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMaklpUGpFdU1DNHlQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMakVpUGpFdU1DNHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMakFpUGpFdU1DNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMakF0Y21NdU15SStNUzR3TGpBdGNtTXVNend2YjNCMGFXOXVQanh2Y0hScGIyNGdkbUZzZFdVOUlqRXVNQzR3TFhKakxqSWlQakV1TUM0d0xYSmpMakk4TDI5d2RHbHZiajQ4YjNCMGFXOXVJSFpoYkhWbFBTSXhMakF1TUMxeVl5NHhJajR4TGpBdU1DMXlZeTR4UEM5dmNIUnBiMjQrUEc5d2RHbHZiaUIyWVd4MVpUMGlNUzR3TGpBdFltVjBZUzR5SWo0eExqQXVNQzFpWlhSaExqSThMMjl3ZEdsdmJqNDhiM0IwYVc5dUlIWmhiSFZsUFNJeExqQXVNQzFpWlhSaExqRWlQakV1TUM0d0xXSmxkR0V1TVR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0M0lqNHdMamN1Tnp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0MUlqNHdMamN1TlR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0MElqNHdMamN1TkR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0eklqNHdMamN1TXp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0eUlqNHdMamN1TWp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0eElqNHdMamN1TVR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0d0lqNHdMamN1TUR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0MElqNHdMall1TkR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0eklqNHdMall1TXp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0eUlqNHdMall1TWp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0eElqNHdMall1TVR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0d0lqNHdMall1TUR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1TlM0eElqNHdMalV1TVR3dmIzQjBhVzl1UGp3dmIzQjBaM0p2ZFhBK1BDOXpaV3hsWTNRK1BDOXpjR0Z1UGp3dlpHbDJQand2WkdsMlBqeGthWFlnWTJ4aGMzTTlJbTEwTFRJaVBqeHdJR05zWVhOelBTSnRZaTB6SUd4bFlXUnBibWN0ZEdsbmFIUWlQanh6Y0dGdVBrcGhkbUZUWTNKcGNIUWdiR2xpY21GeWVTQm1iM0lnYlc5aWFXeGxMV1p5YVdWdVpHeDVJR2x1ZEdWeVlXTjBhWFpsSUcxaGNITThMM053WVc0K1BDOXdQanhrYVhZZ1kyeGhjM005SW14bk9taHBaR1JsYmlJK1BIQWdZMnhoYzNNOUltMTBMVEVnZEdWNGRDMXpiU0JzWldGa2FXNW5MVFFpUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2YkdWaFpteGxkR3B6TG1OdmJTOGlJSFJwZEd4bFBTSldhWE5wZENCMGFHVWdiR1ZoWm14bGRDQjNaV0p6YVhSbElpQmpiR0Z6Y3owaWFXNXNhVzVsTFdac1pYZ2dhWFJsYlhNdFkyVnVkR1Z5SUdodmRtVnlPblJsZUhRdGMyeGhkR1V0T1RVd0lHaHZkbVZ5T25WdVpHVnliR2x1WlNJK1BITjJaeUJoY21saExXaHBaR1JsYmowaWRISjFaU0lnWm1sc2JEMGlibTl1WlNJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQmpiR0Z6Y3owaWR5MDJJR2d0TmlJK1BIQmhkR2dnYzNSeWIydGxQU0pqZFhKeVpXNTBRMjlzYjNJaUlITjBjbTlyWlMxc2FXNWxZMkZ3UFNKeWIzVnVaQ0lnYzNSeWIydGxMV3hwYm1WcWIybHVQU0p5YjNWdVpDSWdjM1J5YjJ0bExYZHBaSFJvUFNJeUlpQmtQU0pOTVRNdU1qRXpJRGt1TnpnM1lUTXVNemt4SURNdU16a3hJREFnTUNBd0xUUXVOemsxSURCc0xUTXVOREkxSURNdU5ESTJZVE11TXprZ015NHpPU0F3SURBZ01DQTBMamM1TlNBMExqYzVOR3d1TXpJeExTNHpNRFJ0TFM0ek1qRXROQzQwT1dFekxqTTVJRE11TXprZ01DQXdJREFnTkM0M09UVWdNR3d6TGpReU5DMHpMalF5Tm1FekxqTTVJRE11TXprZ01DQXdJREF0TkM0M09UUXROQzQzT1RWc0xURXVNREk0TGprMk1TSStQQzl3WVhSb1Bqd3ZjM1puUGp4emNHRnVJR05zWVhOelBTSnRiQzB4SWo1c1pXRm1iR1YwYW5NdVkyOXRQQzl6Y0dGdVBqd3ZZVDQ4TDNBK1BIQWdZMnhoYzNNOUltMTBMVEVnZEdWNGRDMXpiU0JzWldGa2FXNW5MVFFpUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5TVpXRm1iR1YwTDB4bFlXWnNaWFFpSUhScGRHeGxQU0pXYVdWM0lIUm9aU0JzWldGbWJHVjBJSEpsY0c5emFYUnZjbmtnYjI0Z1IybDBTSFZpSWlCamJHRnpjejBpYVc1c2FXNWxMV1pzWlhnZ2FYUmxiWE10WTJWdWRHVnlJR2h2ZG1WeU9uUmxlSFF0YzJ4aGRHVXRPVFV3SUdodmRtVnlPblZ1WkdWeWJHbHVaU0krUEhOMlp5QmhjbWxoTFdocFpHUmxiajBpZEhKMVpTSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUIyYVdWM1FtOTRQU0l3SURBZ01qUWdNalFpSUdOc1lYTnpQU0ozTFRZZ2FDMDJJajQ4Y0dGMGFDQm1hV3hzTFhKMWJHVTlJbVYyWlc1dlpHUWlJR1E5SWsweE1pNHdNRFlnTW1FNUxqZzBOeUE1TGpnME55QXdJREFnTUMwMkxqUTROQ0F5TGpRMElERXdMak15SURFd0xqTXlJREFnTUNBd0xUTXVNemt6SURZdU1UY2dNVEF1TkRnZ01UQXVORGdnTUNBd0lEQWdNUzR6TVRjZ05pNDVOVFVnTVRBdU1EUTFJREV3TGpBME5TQXdJREFnTUNBMUxqUWdOQzQwTVRoakxqVXdOQzR3T1RVdU5qZ3pMUzR5TWpNdU5qZ3pMUzQwT1RRZ01DMHVNalExTFM0d01TMHhMakExTWkwdU1ERTBMVEV1T1RBNExUSXVOemd1TmpJdE15NHpOall0TVM0eU1TMHpMak0yTmkweExqSXhZVEl1TnpFeElESXVOekV4SURBZ01DQXdMVEV1TVRFdE1TNDFZeTB1T1RBM0xTNDJNemN1TURjdExqWXlNUzR3TnkwdU5qSXhMak14Tnk0d05EUXVOakl1TVRZekxqZzROUzR6TkRZdU1qWTJMakU0TXk0ME9EY3VOREkyTGpZME55NDNNUzR4TXpVdU1qVXpMak14T0M0ME56WXVOVE00TGpZMU5XRXlMakEzT1NBeUxqQTNPU0F3SURBZ01DQXlMak0zTGpFNU5tTXVNRFExTFM0MU1pNHlOeTB4TGpBd05pNDJNelV0TVM0ek55MHlMakl4T1MwdU1qVTVMVFF1TlRVMExURXVNVE00TFRRdU5UVTBMVFV1TURkaE5DNHdNaklnTkM0d01qSWdNQ0F3SURFZ01TNHdNekV0TWk0M05TQXpMamMzSURNdU56Y2dNQ0F3SURFZ0xqQTVOaTB5TGpjeE0zTXVPRE01TFM0eU56VWdNaTQzTkRrZ01TNHdOV0U1TGpJMklEa3VNallnTUNBd0lERWdOUzR3TURRZ01HTXhMamt3TmkweExqTXlOU0F5TGpjMExURXVNRFVnTWk0M05DMHhMakExTGpNM0xqZzFPQzQwTURZZ01TNDRNamd1TVRBeElESXVOekV6WVRRdU1ERTNJRFF1TURFM0lEQWdNQ0F4SURFdU1ESTVJREl1TnpWak1DQXpMamt6T1MweUxqTXpPU0EwTGpnd05TMDBMalUyTkNBMUxqQTFPR0V5TGpRM01TQXlMalEzTVNBd0lEQWdNU0F1TmpjNUlERXVPRGszWXpBZ01TNHpOekl0TGpBeE1pQXlMalEzTnkwdU1ERXlJREl1T0RFMElEQWdMakkzTWk0eE9DNDFPVEl1TmpnM0xqUTVNbUV4TUM0d05TQXhNQzR3TlNBd0lEQWdNQ0ExTGpNNE9DMDBMalF5TVNBeE1DNDBOek1nTVRBdU5EY3pJREFnTUNBd0lERXVNekV6TFRZdU9UUTRJREV3TGpNeUlERXdMak15SURBZ01DQXdMVE11TXprdE5pNHhOalZCT1M0NE5EY2dPUzQ0TkRjZ01DQXdJREFnTVRJdU1EQTNJREphSWlCamJHbHdMWEoxYkdVOUltVjJaVzV2WkdRaVBqd3ZjR0YwYUQ0OEwzTjJaejQ4YzNCaGJpQmpiR0Z6Y3owaWJXd3RNU0krVEdWaFpteGxkQzlNWldGbWJHVjBQQzl6Y0dGdVBqd3ZZVDQ4TDNBK1BDOWthWFkrUEM5a2FYWStQQzlvWldGa1pYSStQRzVoZGlCamJHRnpjejBpY0hrdE1pSStQSE53WVc0K1BHRWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMnhsWVdac1pYUkFNUzQ1TGpRaUlHTnNZWE56UFNKMFpYaDBMV0pzZFdVdE5qQXdJR2h2ZG1WeU9uVnVaR1Z5YkdsdVpTSStiR1ZoWm14bGREd3ZZVDQ4TDNOd1lXNCtQSE53WVc0K0lDOGdQQzl6Y0dGdVBqeHpjR0Z1UG1ScGMzUThMM053WVc0K1BDOXVZWFkrUEdobFlXUmxjaUJqYkdGemN6MGljSGt0TXlCd2VDMDBJR0p2Y21SbGNpQmliM0prWlhJdGMyeGhkR1V0TXpBd0lHSm5MWE5zWVhSbExURXdNQ0IwWlhoMExYTnRJSE5sYkdWamRDMXViMjVsSWo0OGMzQmhiajR4SUdadmJHUmxjaXdnUEM5emNHRnVQanh6Y0dGdVBqY2dabWxzWlhNOEwzTndZVzQrUEM5b1pXRmtaWEkrUEcxaGFXNCtQSFJoWW14bElHTnNZWE56UFNKaWIzSmtaWEl0ZUNCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNekF3SUhjdFpuVnNiQ0J0WVhndGR5MW1kV3hzSUdKbkxYZG9hWFJsSWo0OGRHaGxZV1FnWTJ4aGMzTTlJbWhwWkdSbGJpSStQSFJ5UGp4MGFENDhMM1JvUGp4MGFENUdhV3hsYm1GdFpUd3ZkR2crUEhSb1BrTnZiblJsYm5RZ1ZIbHdaVHd2ZEdnK1BIUm9QbE5wZW1VOEwzUm9Qand2ZEhJK1BDOTBhR1ZoWkQ0OGRHSnZaSGsrUEhSeUlHTnNZWE56UFNKb2IzWmxjanBpWnkxemJHRjBaUzAxTUNJK1BIUmtJR05zWVhOelBTSndiQzAwSUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0IzTFRFeUlqNDhjM0JoYmlCamJHRnpjejBpZEdWNGRDMXpiR0YwWlMwMk1EQWlQanh6ZG1jZ1lYSnBZUzFvYVdSa1pXNDlJblJ5ZFdVaUlHWnBiR3c5SW01dmJtVWlJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lnWTJ4aGMzTTlJbmN0TmlCb0xUWWlQanh3WVhSb0lITjBjbTlyWlQwaVkzVnljbVZ1ZEVOdmJHOXlJaUJ6ZEhKdmEyVXRiR2x1WldOaGNEMGljbTkxYm1RaUlITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpSUhOMGNtOXJaUzEzYVdSMGFEMGlNaUlnWkQwaVRURXpMalVnT0VnMGJUQXRNbll4TTJFeElERWdNQ0F3SURBZ01TQXhhREUwWVRFZ01TQXdJREFnTUNBeExURldPV0V4SURFZ01DQXdJREF0TVMweGFDMDFMakF6TW1FeElERWdNQ0F3SURFdExqYzJPQzB1TXpac0xURXVPUzB5TGpJNFlURWdNU0F3SURBZ01DMHVOelk0TFM0ek5rZzFZVEVnTVNBd0lEQWdNQzB4SURGYUlqNDhMM0JoZEdnK1BDOXpkbWMrUEM5emNHRnVQand2ZEdRK1BIUmtJR052YkhOd1lXNDlJak1pSUdOc1lYTnpQU0p3Y2kweUlHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNJK1BHRWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMnhsWVdac1pYUkFNUzQ1TGpRaUlHTnNZWE56UFNKd2VTMHpJSGN0Wm5Wc2JDQnBibXhwYm1VdFlteHZZMnNnZEdWNGRDMWliSFZsTFRZd01DQm9iM1psY2pwMWJtUmxjbXhwYm1VaVBpNHVMend2WVQ0OEwzUmtQand2ZEhJK1BIUnlJR05zWVhOelBTSm9iM1psY2pwaVp5MXpiR0YwWlMwMU1DSStQSFJrSUdOc1lYTnpQU0p3YkMwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCM0xURXlJajQ4YzNCaGJpQmpiR0Z6Y3owaWRHVjRkQzF6YkdGMFpTMDJNREFpUGp4emRtY2dZWEpwWVMxb2FXUmtaVzQ5SW5SeWRXVWlJR1pwYkd3OUltNXZibVVpSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJZ1kyeGhjM005SW5jdE5pQm9MVFlpUGp4d1lYUm9JSE4wY205clpUMGlZM1Z5Y21WdWRFTnZiRzl5SWlCemRISnZhMlV0YkdsdVpXTmhjRDBpY205MWJtUWlJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUlITjBjbTlyWlMxM2FXUjBhRDBpTWlJZ1pEMGlUVEV6TGpVZ09FZzBiVEF0TW5ZeE0yRXhJREVnTUNBd0lEQWdNU0F4YURFMFlURWdNU0F3SURBZ01DQXhMVEZXT1dFeElERWdNQ0F3SURBdE1TMHhhQzAxTGpBek1tRXhJREVnTUNBd0lERXRMamMyT0MwdU16WnNMVEV1T1MweUxqSTRZVEVnTVNBd0lEQWdNQzB1TnpZNExTNHpOa2cxWVRFZ01TQXdJREFnTUMweElERmFJajQ4TDNCaGRHZytQQzl6ZG1jK1BDOXpjR0Z1UGp3dmRHUStQSFJrSUdOc1lYTnpQU0p3Y2kweUlHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCdFlYZ3RkeTAyTUNCemJUcHRZWGd0ZHkxNGJDSStQR1JwZGlCamJHRnpjejBpYjNabGNtWnNiM2N0YUdsa1pHVnVJSGRvYVhSbGMzQmhZMlV0Ym05M2NtRndJSFJsZUhRdFpXeHNhWEJ6YVhNaVBqeGhJR2h5WldZOUltaDBkSEJ6T2k4dllYQndMblZ1Y0d0bkxtTnZiUzlzWldGbWJHVjBRREV1T1M0MEwyWnBiR1Z6TDJScGMzUXZhVzFoWjJWeklpQmpiR0Z6Y3owaWNIa3RNeUIzTFdaMWJHd2dhVzVzYVc1bExXSnNiMk5ySUhSbGVIUXRZbXgxWlMwMk1EQWdhRzkyWlhJNmRXNWtaWEpzYVc1bElqNXBiV0ZuWlhNdlBDOWhQand2WkdsMlBqd3ZkR1ErUEhSa0lHTnNZWE56UFNKd2NpMHlJR0p2Y21SbGNpMWlJR0p2Y21SbGNpMXpiR0YwWlMweU1EQWdkR1Y0ZEMxemJTQm9hV1JrWlc0Z2MyMDZkR0ZpYkdVdFkyVnNiQ0krNG9DVFBDOTBaRDQ4ZEdRZ1kyeGhjM005SW5CeUxUUWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElIUmxlSFF0Y21sbmFIUWlQall1TlNCclFqd3ZkR1ErUEM5MGNqNDhkSElnWTJ4aGMzTTlJbWh2ZG1WeU9tSm5MWE5zWVhSbExUVXdJajQ4ZEdRZ1kyeGhjM005SW5Cc0xUUWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElIY3RNVElpUGp4emNHRnVJR05zWVhOelBTSjBaWGgwTFhOc1lYUmxMVFl3TUNJK1BITjJaeUJoY21saExXaHBaR1JsYmowaWRISjFaU0lnWm1sc2JEMGlibTl1WlNJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQmpiR0Z6Y3owaWR5MDJJR2d0TmlJK1BIQmhkR2dnYzNSeWIydGxQU0pqZFhKeVpXNTBRMjlzYjNJaUlITjBjbTlyWlMxc2FXNWxZMkZ3UFNKeWIzVnVaQ0lnYzNSeWIydGxMV3hwYm1WcWIybHVQU0p5YjNWdVpDSWdjM1J5YjJ0bExYZHBaSFJvUFNJeUlpQmtQU0pOTVRBZ00zWTBZVEVnTVNBd0lEQWdNUzB4SURGSU5XMDFJRFF0TWlBeUlESWdNbTAwTFRRZ01pQXlMVElnTW0wMUxURXlkakUyWVRFZ01TQXdJREFnTVMweElERklObUV4SURFZ01DQXdJREV0TVMweFZqY3VPVEUwWVRFZ01TQXdJREFnTVNBdU1qa3pMUzQzTURkc015NDVNVFF0TXk0NU1UUkJNU0F4SURBZ01DQXhJRGt1T1RFMElETklNVGhoTVNBeElEQWdNQ0F4SURFZ01Wb2lQand2Y0dGMGFENDhMM04yWno0OEwzTndZVzQrUEM5MFpENDhkR1FnWTJ4aGMzTTlJbkJ5TFRJZ1ltOXlaR1Z5TFdJZ1ltOXlaR1Z5TFhOc1lYUmxMVEl3TUNCMFpYaDBMWE50SUcxaGVDMTNMVFl3SUhOdE9tMWhlQzEzTFhoc0lqNDhaR2wySUdOc1lYTnpQU0p2ZG1WeVpteHZkeTFvYVdSa1pXNGdkMmhwZEdWemNHRmpaUzF1YjNkeVlYQWdkR1Y0ZEMxbGJHeHBjSE5wY3lJK1BHRWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMnhsWVdac1pYUkFNUzQ1TGpRdlptbHNaWE12WkdsemRDOXNaV0ZtYkdWMExYTnlZeTVsYzIwdWFuTWlJR05zWVhOelBTSndlUzB6SUhjdFpuVnNiQ0JwYm14cGJtVXRZbXh2WTJzZ2RHVjRkQzFpYkhWbExUWXdNQ0JvYjNabGNqcDFibVJsY214cGJtVWlQbXhsWVdac1pYUXRjM0pqTG1WemJTNXFjend2WVQ0OEwyUnBkajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYUdsa1pHVnVJSE50T25SaFlteGxMV05sYkd3aVBuUmxlSFF2YW1GMllYTmpjbWx3ZER3dmRHUStQSFJrSUdOc1lYTnpQU0p3Y2kwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCMFpYaDBMWEpwWjJoMElqNDBNalVnYTBJOEwzUmtQand2ZEhJK1BIUnlJR05zWVhOelBTSm9iM1psY2pwaVp5MXpiR0YwWlMwMU1DSStQSFJrSUdOc1lYTnpQU0p3YkMwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCM0xURXlJajQ4YzNCaGJpQmpiR0Z6Y3owaWRHVjRkQzF6YkdGMFpTMDJNREFpUGp4emRtY2dZWEpwWVMxb2FXUmtaVzQ5SW5SeWRXVWlJR1pwYkd3OUltNXZibVVpSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJZ1kyeGhjM005SW5jdE5pQm9MVFlpUGp4d1lYUm9JSE4wY205clpUMGlZM1Z5Y21WdWRFTnZiRzl5SWlCemRISnZhMlV0YkdsdVpXTmhjRDBpY205MWJtUWlJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUlITjBjbTlyWlMxM2FXUjBhRDBpTWlJZ1pEMGlUVEV3SUROMk5HRXhJREVnTUNBd0lERXRNU0F4U0RWdE5TQTBMVElnTWlBeUlESnROQzAwSURJZ01pMHlJREp0TlMweE1uWXhObUV4SURFZ01DQXdJREV0TVNBeFNEWmhNU0F4SURBZ01DQXhMVEV0TVZZM0xqa3hOR0V4SURFZ01DQXdJREVnTGpJNU15MHVOekEzYkRNdU9URTBMVE11T1RFMFFURWdNU0F3SURBZ01TQTVMamt4TkNBelNERTRZVEVnTVNBd0lEQWdNU0F4SURGYUlqNDhMM0JoZEdnK1BDOXpkbWMrUEM5emNHRnVQand2ZEdRK1BIUmtJR05zWVhOelBTSndjaTB5SUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0J0WVhndGR5MDJNQ0J6YlRwdFlYZ3RkeTE0YkNJK1BHUnBkaUJqYkdGemN6MGliM1psY21ac2IzY3RhR2xrWkdWdUlIZG9hWFJsYzNCaFkyVXRibTkzY21Gd0lIUmxlSFF0Wld4c2FYQnphWE1pUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2WVhCd0xuVnVjR3RuTG1OdmJTOXNaV0ZtYkdWMFFERXVPUzQwTDJacGJHVnpMMlJwYzNRdmJHVmhabXhsZEMxemNtTXVaWE50TG1wekxtMWhjQ0lnWTJ4aGMzTTlJbkI1TFRNZ2R5MW1kV3hzSUdsdWJHbHVaUzFpYkc5amF5QjBaWGgwTFdKc2RXVXROakF3SUdodmRtVnlPblZ1WkdWeWJHbHVaU0krYkdWaFpteGxkQzF6Y21NdVpYTnRMbXB6TG0xaGNEd3ZZVDQ4TDJScGRqNDhMM1JrUGp4MFpDQmpiR0Z6Y3owaWNISXRNaUJpYjNKa1pYSXRZaUJpYjNKa1pYSXRjMnhoZEdVdE1qQXdJSFJsZUhRdGMyMGdhR2xrWkdWdUlITnRPblJoWW14bExXTmxiR3dpUG1Gd2NHeHBZMkYwYVc5dUwycHpiMjQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TkNCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnZEdWNGRDMXlhV2RvZENJK09EWTJJR3RDUEM5MFpENDhMM1J5UGp4MGNpQmpiR0Z6Y3owaWFHOTJaWEk2WW1jdGMyeGhkR1V0TlRBaVBqeDBaQ0JqYkdGemN6MGljR3d0TkNCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnZHkweE1pSStQSE53WVc0Z1kyeGhjM005SW5SbGVIUXRjMnhoZEdVdE5qQXdJajQ4YzNabklHRnlhV0V0YUdsa1pHVnVQU0owY25WbElpQm1hV3hzUFNKdWIyNWxJaUIyYVdWM1FtOTRQU0l3SURBZ01qUWdNalFpSUdOc1lYTnpQU0ozTFRZZ2FDMDJJajQ4Y0dGMGFDQnpkSEp2YTJVOUltTjFjbkpsYm5SRGIyeHZjaUlnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lpQnpkSEp2YTJVdGJHbHVaV3B2YVc0OUluSnZkVzVrSWlCemRISnZhMlV0ZDJsa2RHZzlJaklpSUdROUlrMHhNQ0F6ZGpSaE1TQXhJREFnTUNBeExURWdNVWcxYlRVZ05DMHlJRElnTWlBeWJUUXROQ0F5SURJdE1pQXliVFV0TVRKMk1UWmhNU0F4SURBZ01DQXhMVEVnTVVnMllURWdNU0F3SURBZ01TMHhMVEZXTnk0NU1UUmhNU0F4SURBZ01DQXhJQzR5T1RNdExqY3dOMnd6TGpreE5DMHpMamt4TkVFeElERWdNQ0F3SURFZ09TNDVNVFFnTTBneE9HRXhJREVnTUNBd0lERWdNU0F4V2lJK1BDOXdZWFJvUGp3dmMzWm5Qand2YzNCaGJqNDhMM1JrUGp4MFpDQmpiR0Z6Y3owaWNISXRNaUJpYjNKa1pYSXRZaUJpYjNKa1pYSXRjMnhoZEdVdE1qQXdJSFJsZUhRdGMyMGdiV0Y0TFhjdE5qQWdjMjA2YldGNExYY3RlR3dpUGp4a2FYWWdZMnhoYzNNOUltOTJaWEptYkc5M0xXaHBaR1JsYmlCM2FHbDBaWE53WVdObExXNXZkM0poY0NCMFpYaDBMV1ZzYkdsd2MybHpJajQ4WVNCb2NtVm1QU0pvZEhSd2N6b3ZMMkZ3Y0M1MWJuQnJaeTVqYjIwdmJHVmhabXhsZEVBeExqa3VOQzltYVd4bGN5OWthWE4wTDJ4bFlXWnNaWFF0YzNKakxtcHpJaUJqYkdGemN6MGljSGt0TXlCM0xXWjFiR3dnYVc1c2FXNWxMV0pzYjJOcklIUmxlSFF0WW14MVpTMDJNREFnYUc5MlpYSTZkVzVrWlhKc2FXNWxJajVzWldGbWJHVjBMWE55WXk1cWN6d3ZZVDQ4TDJScGRqNDhMM1JrUGp4MFpDQmpiR0Z6Y3owaWNISXRNaUJpYjNKa1pYSXRZaUJpYjNKa1pYSXRjMnhoZEdVdE1qQXdJSFJsZUhRdGMyMGdhR2xrWkdWdUlITnRPblJoWW14bExXTmxiR3dpUG5SbGVIUXZhbUYyWVhOamNtbHdkRHd2ZEdRK1BIUmtJR05zWVhOelBTSndjaTAwSUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0IwWlhoMExYSnBaMmgwSWo0ME5UQWdhMEk4TDNSa1Bqd3ZkSEkrUEhSeUlHTnNZWE56UFNKb2IzWmxjanBpWnkxemJHRjBaUzAxTUNJK1BIUmtJR05zWVhOelBTSndiQzAwSUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0IzTFRFeUlqNDhjM0JoYmlCamJHRnpjejBpZEdWNGRDMXpiR0YwWlMwMk1EQWlQanh6ZG1jZ1lYSnBZUzFvYVdSa1pXNDlJblJ5ZFdVaUlHWnBiR3c5SW01dmJtVWlJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lnWTJ4aGMzTTlJbmN0TmlCb0xUWWlQanh3WVhSb0lITjBjbTlyWlQwaVkzVnljbVZ1ZEVOdmJHOXlJaUJ6ZEhKdmEyVXRiR2x1WldOaGNEMGljbTkxYm1RaUlITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpSUhOMGNtOXJaUzEzYVdSMGFEMGlNaUlnWkQwaVRURXdJRE4yTkdFeElERWdNQ0F3SURFdE1TQXhTRFZ0TlNBMExUSWdNaUF5SURKdE5DMDBJRElnTWkweUlESnROUzB4TW5ZeE5tRXhJREVnTUNBd0lERXRNU0F4U0RaaE1TQXhJREFnTUNBeExURXRNVlkzTGpreE5HRXhJREVnTUNBd0lERWdMakk1TXkwdU56QTNiRE11T1RFMExUTXVPVEUwUVRFZ01TQXdJREFnTVNBNUxqa3hOQ0F6U0RFNFlURWdNU0F3SURBZ01TQXhJREZhSWo0OEwzQmhkR2crUEM5emRtYytQQzl6Y0dGdVBqd3ZkR1ErUEhSa0lHTnNZWE56UFNKd2NpMHlJR0p2Y21SbGNpMWlJR0p2Y21SbGNpMXpiR0YwWlMweU1EQWdkR1Y0ZEMxemJTQnRZWGd0ZHkwMk1DQnpiVHB0WVhndGR5MTRiQ0krUEdScGRpQmpiR0Z6Y3owaWIzWmxjbVpzYjNjdGFHbGtaR1Z1SUhkb2FYUmxjM0JoWTJVdGJtOTNjbUZ3SUhSbGVIUXRaV3hzYVhCemFYTWlQanhoSUdoeVpXWTlJbWgwZEhCek9pOHZZWEJ3TG5WdWNHdG5MbU52YlM5c1pXRm1iR1YwUURFdU9TNDBMMlpwYkdWekwyUnBjM1F2YkdWaFpteGxkQzF6Y21NdWFuTXViV0Z3SWlCamJHRnpjejBpY0hrdE15QjNMV1oxYkd3Z2FXNXNhVzVsTFdKc2IyTnJJSFJsZUhRdFlteDFaUzAyTURBZ2FHOTJaWEk2ZFc1a1pYSnNhVzVsSWo1c1pXRm1iR1YwTFhOeVl5NXFjeTV0WVhBOEwyRStQQzlrYVhZK1BDOTBaRDQ4ZEdRZ1kyeGhjM005SW5CeUxUSWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElHaHBaR1JsYmlCemJUcDBZV0pzWlMxalpXeHNJajVoY0hCc2FXTmhkR2x2Ymk5cWMyOXVQQzkwWkQ0OGRHUWdZMnhoYzNNOUluQnlMVFFnWW05eVpHVnlMV0lnWW05eVpHVnlMWE5zWVhSbExUSXdNQ0IwWlhoMExYTnRJSFJsZUhRdGNtbG5hSFFpUGpnMk5pQnJRand2ZEdRK1BDOTBjajQ4ZEhJZ1kyeGhjM005SW1odmRtVnlPbUpuTFhOc1lYUmxMVFV3SWo0OGRHUWdZMnhoYzNNOUluQnNMVFFnWW05eVpHVnlMV0lnWW05eVpHVnlMWE5zWVhSbExUSXdNQ0IwWlhoMExYTnRJSGN0TVRJaVBqeHpjR0Z1SUdOc1lYTnpQU0owWlhoMExYTnNZWFJsTFRZd01DSStQSE4yWnlCaGNtbGhMV2hwWkdSbGJqMGlkSEoxWlNJZ1ptbHNiRDBpYm05dVpTSWdkbWxsZDBKdmVEMGlNQ0F3SURJMElESTBJaUJqYkdGemN6MGlkeTAySUdndE5pSStQSEJoZEdnZ2MzUnliMnRsUFNKamRYSnlaVzUwUTI5c2IzSWlJSE4wY205clpTMXNhVzVsWTJGd1BTSnliM1Z1WkNJZ2MzUnliMnRsTFd4cGJtVnFiMmx1UFNKeWIzVnVaQ0lnYzNSeWIydGxMWGRwWkhSb1BTSXlJaUJrUFNKTk1UQWdNM1kwWVRFZ01TQXdJREFnTVMweElERklOVzAxSURRdE1pQXlJRElnTW0wMExUUWdNaUF5TFRJZ01tMDFMVEV5ZGpFMllURWdNU0F3SURBZ01TMHhJREZJTm1FeElERWdNQ0F3SURFdE1TMHhWamN1T1RFMFlURWdNU0F3SURBZ01TQXVNamt6TFM0M01EZHNNeTQ1TVRRdE15NDVNVFJCTVNBeElEQWdNQ0F4SURrdU9URTBJRE5JTVRoaE1TQXhJREFnTUNBeElERWdNVm9pUGp3dmNHRjBhRDQ4TDNOMlp6NDhMM053WVc0K1BDOTBaRDQ4ZEdRZ1kyeGhjM005SW5CeUxUSWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElHMWhlQzEzTFRZd0lITnRPbTFoZUMxM0xYaHNJajQ4WkdsMklHTnNZWE56UFNKdmRtVnlabXh2ZHkxb2FXUmtaVzRnZDJocGRHVnpjR0ZqWlMxdWIzZHlZWEFnZEdWNGRDMWxiR3hwY0hOcGN5SStQR0VnYUhKbFpqMGlhSFIwY0hNNkx5OWhjSEF1ZFc1d2EyY3VZMjl0TDJ4bFlXWnNaWFJBTVM0NUxqUXZabWxzWlhNdlpHbHpkQzlzWldGbWJHVjBMbU56Y3lJZ1kyeGhjM005SW5CNUxUTWdkeTFtZFd4c0lHbHViR2x1WlMxaWJHOWpheUIwWlhoMExXSnNkV1V0TmpBd0lHaHZkbVZ5T25WdVpHVnliR2x1WlNJK2JHVmhabXhsZEM1amMzTThMMkUrUEM5a2FYWStQQzkwWkQ0OGRHUWdZMnhoYzNNOUluQnlMVElnWW05eVpHVnlMV0lnWW05eVpHVnlMWE5zWVhSbExUSXdNQ0IwWlhoMExYTnRJR2hwWkdSbGJpQnpiVHAwWVdKc1pTMWpaV3hzSWo1MFpYaDBMMk56Y3p3dmRHUStQSFJrSUdOc1lYTnpQU0p3Y2kwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCMFpYaDBMWEpwWjJoMElqNHhOQzQ0SUd0Q1BDOTBaRDQ4TDNSeVBqeDBjaUJqYkdGemN6MGlhRzkyWlhJNlltY3RjMnhoZEdVdE5UQWlQangwWkNCamJHRnpjejBpY0d3dE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2R5MHhNaUkrUEhOd1lXNGdZMnhoYzNNOUluUmxlSFF0YzJ4aGRHVXROakF3SWo0OGMzWm5JR0Z5YVdFdGFHbGtaR1Z1UFNKMGNuVmxJaUJtYVd4c1BTSnViMjVsSWlCMmFXVjNRbTk0UFNJd0lEQWdNalFnTWpRaUlHTnNZWE56UFNKM0xUWWdhQzAySWo0OGNHRjBhQ0J6ZEhKdmEyVTlJbU4xY25KbGJuUkRiMnh2Y2lJZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJaUJ6ZEhKdmEyVXRiR2x1WldwdmFXNDlJbkp2ZFc1a0lpQnpkSEp2YTJVdGQybGtkR2c5SWpJaUlHUTlJazB4TUNBemRqUmhNU0F4SURBZ01DQXhMVEVnTVVnMWJUVWdOQzB5SURJZ01pQXliVFF0TkNBeUlESXRNaUF5YlRVdE1USjJNVFpoTVNBeElEQWdNQ0F4TFRFZ01VZzJZVEVnTVNBd0lEQWdNUzB4TFRGV055NDVNVFJoTVNBeElEQWdNQ0F4SUM0eU9UTXRMamN3TjJ3ekxqa3hOQzB6TGpreE5FRXhJREVnTUNBd0lERWdPUzQ1TVRRZ00wZ3hPR0V4SURFZ01DQXdJREVnTVNBeFdpSStQQzl3WVhSb1Bqd3ZjM1puUGp3dmMzQmhiajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYldGNExYY3ROakFnYzIwNmJXRjRMWGN0ZUd3aVBqeGthWFlnWTJ4aGMzTTlJbTkyWlhKbWJHOTNMV2hwWkdSbGJpQjNhR2wwWlhOd1lXTmxMVzV2ZDNKaGNDQjBaWGgwTFdWc2JHbHdjMmx6SWo0OFlTQm9jbVZtUFNKb2RIUndjem92TDJGd2NDNTFibkJyWnk1amIyMHZiR1ZoWm14bGRFQXhMamt1TkM5bWFXeGxjeTlrYVhOMEwyeGxZV1pzWlhRdWFuTWlJR05zWVhOelBTSndlUzB6SUhjdFpuVnNiQ0JwYm14cGJtVXRZbXh2WTJzZ2RHVjRkQzFpYkhWbExUWXdNQ0JvYjNabGNqcDFibVJsY214cGJtVWlQbXhsWVdac1pYUXVhbk04TDJFK1BDOWthWFkrUEM5MFpENDhkR1FnWTJ4aGMzTTlJbkJ5TFRJZ1ltOXlaR1Z5TFdJZ1ltOXlaR1Z5TFhOc1lYUmxMVEl3TUNCMFpYaDBMWE50SUdocFpHUmxiaUJ6YlRwMFlXSnNaUzFqWld4c0lqNTBaWGgwTDJwaGRtRnpZM0pwY0hROEwzUmtQangwWkNCamJHRnpjejBpY0hJdE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2RHVjRkQzF5YVdkb2RDSStNVFE0SUd0Q1BDOTBaRDQ4TDNSeVBqeDBjaUJqYkdGemN6MGlhRzkyWlhJNlltY3RjMnhoZEdVdE5UQWlQangwWkNCamJHRnpjejBpY0d3dE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2R5MHhNaUkrUEhOd1lXNGdZMnhoYzNNOUluUmxlSFF0YzJ4aGRHVXROakF3SWo0OGMzWm5JR0Z5YVdFdGFHbGtaR1Z1UFNKMGNuVmxJaUJtYVd4c1BTSnViMjVsSWlCMmFXVjNRbTk0UFNJd0lEQWdNalFnTWpRaUlHTnNZWE56UFNKM0xUWWdhQzAySWo0OGNHRjBhQ0J6ZEhKdmEyVTlJbU4xY25KbGJuUkRiMnh2Y2lJZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJaUJ6ZEhKdmEyVXRiR2x1WldwdmFXNDlJbkp2ZFc1a0lpQnpkSEp2YTJVdGQybGtkR2c5SWpJaUlHUTlJazB4TUNBemRqUmhNU0F4SURBZ01DQXhMVEVnTVVnMWJUVWdOQzB5SURJZ01pQXliVFF0TkNBeUlESXRNaUF5YlRVdE1USjJNVFpoTVNBeElEQWdNQ0F4TFRFZ01VZzJZVEVnTVNBd0lEQWdNUzB4TFRGV055NDVNVFJoTVNBeElEQWdNQ0F4SUM0eU9UTXRMamN3TjJ3ekxqa3hOQzB6TGpreE5FRXhJREVnTUNBd0lERWdPUzQ1TVRRZ00wZ3hPR0V4SURFZ01DQXdJREVnTVNBeFdpSStQQzl3WVhSb1Bqd3ZjM1puUGp3dmMzQmhiajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYldGNExYY3ROakFnYzIwNmJXRjRMWGN0ZUd3aVBqeGthWFlnWTJ4aGMzTTlJbTkyWlhKbWJHOTNMV2hwWkdSbGJpQjNhR2wwWlhOd1lXTmxMVzV2ZDNKaGNDQjBaWGgwTFdWc2JHbHdjMmx6SWo0OFlTQm9jbVZtUFNKb2RIUndjem92TDJGd2NDNTFibkJyWnk1amIyMHZiR1ZoWm14bGRFQXhMamt1TkM5bWFXeGxjeTlrYVhOMEwyeGxZV1pzWlhRdWFuTXViV0Z3SWlCamJHRnpjejBpY0hrdE15QjNMV1oxYkd3Z2FXNXNhVzVsTFdKc2IyTnJJSFJsZUhRdFlteDFaUzAyTURBZ2FHOTJaWEk2ZFc1a1pYSnNhVzVsSWo1c1pXRm1iR1YwTG1wekxtMWhjRHd2WVQ0OEwyUnBkajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYUdsa1pHVnVJSE50T25SaFlteGxMV05sYkd3aVBtRndjR3hwWTJGMGFXOXVMMnB6YjI0OEwzUmtQangwWkNCamJHRnpjejBpY0hJdE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2RHVjRkQzF5YVdkb2RDSStNakkySUd0Q1BDOTBaRDQ4TDNSeVBqd3ZkR0p2WkhrK1BDOTBZV0pzWlQ0OEwyMWhhVzQrUEM5dFlXbHVQand2WW05a2VUNDhMMmgwYld3KyIpOw0KCWRpc3BsYXk6IGlubGluZS1ibG9jazsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJfQ0KDQoNCi8qIGNvbnRyb2wgcG9zaXRpb25pbmcgKi8NCg0KLmxlYWZsZXQtY29udHJvbCB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXotaW5kZXg6IDgwMDsNCglwb2ludGVyLWV2ZW50czogdmlzaWJsZVBhaW50ZWQ7IC8qIElFIDktMTAgZG9lc24ndCBoYXZlIGF1dG8gKi8NCglwb2ludGVyLWV2ZW50czogYXV0bzsNCgl9DQoubGVhZmxldC10b3AsDQoubGVhZmxldC1ib3R0b20gew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl6LWluZGV4OiAxMDAwOw0KCXBvaW50ZXItZXZlbnRzOiBub25lOw0KCX0NCi5sZWFmbGV0LXRvcCB7DQoJdG9wOiAwOw0KCX0NCi5sZWFmbGV0LXJpZ2h0IHsNCglyaWdodDogMDsNCgl9DQoubGVhZmxldC1ib3R0b20gew0KCWJvdHRvbTogMDsNCgl9DQoubGVhZmxldC1sZWZ0IHsNCglsZWZ0OiAwOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wgew0KCWZsb2F0OiBsZWZ0Ow0KCWNsZWFyOiBib3RoOw0KCX0NCi5sZWFmbGV0LXJpZ2h0IC5sZWFmbGV0LWNvbnRyb2wgew0KCWZsb2F0OiByaWdodDsNCgl9DQoubGVhZmxldC10b3AgLmxlYWZsZXQtY29udHJvbCB7DQoJbWFyZ2luLXRvcDogMTBweDsNCgl9DQoubGVhZmxldC1ib3R0b20gLmxlYWZsZXQtY29udHJvbCB7DQoJbWFyZ2luLWJvdHRvbTogMTBweDsNCgl9DQoubGVhZmxldC1sZWZ0IC5sZWFmbGV0LWNvbnRyb2wgew0KCW1hcmdpbi1sZWZ0OiAxMHB4Ow0KCX0NCi5sZWFmbGV0LXJpZ2h0IC5sZWFmbGV0LWNvbnRyb2wgew0KCW1hcmdpbi1yaWdodDogMTBweDsNCgl9DQoNCg0KLyogem9vbSBhbmQgZmFkZSBhbmltYXRpb25zICovDQoNCi5sZWFmbGV0LWZhZGUtYW5pbSAubGVhZmxldC1wb3B1cCB7DQoJb3BhY2l0eTogMDsNCgktd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBsaW5lYXI7DQoJICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgbGluZWFyOw0KCSAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsNCgl9DQoubGVhZmxldC1mYWRlLWFuaW0gLmxlYWZsZXQtbWFwLXBhbmUgLmxlYWZsZXQtcG9wdXAgew0KCW9wYWNpdHk6IDE7DQoJfQ0KLmxlYWZsZXQtem9vbS1hbmltYXRlZCB7DQoJLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7DQoJICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7DQoJICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7DQoJfQ0Kc3ZnLmxlYWZsZXQtem9vbS1hbmltYXRlZCB7DQoJd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsNCn0NCg0KLmxlYWZsZXQtem9vbS1hbmltIC5sZWFmbGV0LXpvb20tYW5pbWF0ZWQgew0KCS13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOw0KCSAgIC1tb3otdHJhbnNpdGlvbjogICAgLW1vei10cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOw0KCSAgICAgICAgdHJhbnNpdGlvbjogICAgICAgICB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOw0KCX0NCi5sZWFmbGV0LXpvb20tYW5pbSAubGVhZmxldC10aWxlLA0KLmxlYWZsZXQtcGFuLWFuaW0gLmxlYWZsZXQtdGlsZSB7DQoJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOw0KCSAgIC1tb3otdHJhbnNpdGlvbjogbm9uZTsNCgkgICAgICAgIHRyYW5zaXRpb246IG5vbmU7DQoJfQ0KDQoubGVhZmxldC16b29tLWFuaW0gLmxlYWZsZXQtem9vbS1oaWRlIHsNCgl2aXNpYmlsaXR5OiBoaWRkZW47DQoJfQ0KDQoNCi8qIGN1cnNvcnMgKi8NCg0KLmxlYWZsZXQtaW50ZXJhY3RpdmUgew0KCWN1cnNvcjogcG9pbnRlcjsNCgl9DQoubGVhZmxldC1ncmFiIHsNCgljdXJzb3I6IC13ZWJraXQtZ3JhYjsNCgljdXJzb3I6ICAgIC1tb3otZ3JhYjsNCgljdXJzb3I6ICAgICAgICAgZ3JhYjsNCgl9DQoubGVhZmxldC1jcm9zc2hhaXIsDQoubGVhZmxldC1jcm9zc2hhaXIgLmxlYWZsZXQtaW50ZXJhY3RpdmUgew0KCWN1cnNvcjogY3Jvc3NoYWlyOw0KCX0NCi5sZWFmbGV0LXBvcHVwLXBhbmUsDQoubGVhZmxldC1jb250cm9sIHsNCgljdXJzb3I6IGF1dG87DQoJfQ0KLmxlYWZsZXQtZHJhZ2dpbmcgLmxlYWZsZXQtZ3JhYiwNCi5sZWFmbGV0LWRyYWdnaW5nIC5sZWFmbGV0LWdyYWIgLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQoubGVhZmxldC1kcmFnZ2luZyAubGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIHsNCgljdXJzb3I6IG1vdmU7DQoJY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nOw0KCWN1cnNvcjogICAgLW1vei1ncmFiYmluZzsNCgljdXJzb3I6ICAgICAgICAgZ3JhYmJpbmc7DQoJfQ0KDQovKiBtYXJrZXIgJiBvdmVybGF5cyBpbnRlcmFjdGl2aXR5ICovDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3csDQoubGVhZmxldC1pbWFnZS1sYXllciwNCi5sZWFmbGV0LXBhbmUgPiBzdmcgcGF0aCwNCi5sZWFmbGV0LXRpbGUtY29udGFpbmVyIHsNCglwb2ludGVyLWV2ZW50czogbm9uZTsNCgl9DQoNCi5sZWFmbGV0LW1hcmtlci1pY29uLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQoubGVhZmxldC1pbWFnZS1sYXllci5sZWFmbGV0LWludGVyYWN0aXZlLA0KLmxlYWZsZXQtcGFuZSA+IHN2ZyBwYXRoLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQpzdmcubGVhZmxldC1pbWFnZS1sYXllci5sZWFmbGV0LWludGVyYWN0aXZlIHBhdGggew0KCXBvaW50ZXItZXZlbnRzOiB2aXNpYmxlUGFpbnRlZDsgLyogSUUgOS0xMCBkb2Vzbid0IGhhdmUgYXV0byAqLw0KCXBvaW50ZXItZXZlbnRzOiBhdXRvOw0KCX0NCg0KLyogdmlzdWFsIHR3ZWFrcyAqLw0KDQoubGVhZmxldC1jb250YWluZXIgew0KCWJhY2tncm91bmQ6ICNkZGQ7DQoJb3V0bGluZS1vZmZzZXQ6IDFweDsNCgl9DQoubGVhZmxldC1jb250YWluZXIgYSB7DQoJY29sb3I6ICMwMDc4QTg7DQoJfQ0KLmxlYWZsZXQtem9vbS1ib3ggew0KCWJvcmRlcjogMnB4IGRvdHRlZCAjMzhmOw0KCWJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC41KTsNCgl9DQoNCg0KLyogZ2VuZXJhbCB0eXBvZ3JhcGh5ICovDQoubGVhZmxldC1jb250YWluZXIgew0KCWZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTJweDsNCglmb250LXNpemU6IDAuNzVyZW07DQoJbGluZS1oZWlnaHQ6IDEuNTsNCgl9DQoNCg0KLyogZ2VuZXJhbCB0b29sYmFyIHN0eWxlcyAqLw0KDQoubGVhZmxldC1iYXIgew0KCWJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsMCwwLDAuNjUpOw0KCWJvcmRlci1yYWRpdXM6IDRweDsNCgl9DQoubGVhZmxldC1iYXIgYSB7DQoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsNCgl3aWR0aDogMjZweDsNCgloZWlnaHQ6IDI2cHg7DQoJbGluZS1oZWlnaHQ6IDI2cHg7DQoJZGlzcGxheTogYmxvY2s7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCgljb2xvcjogYmxhY2s7DQoJfQ0KLmxlYWZsZXQtYmFyIGEsDQoubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUgew0KCWJhY2tncm91bmQtcG9zaXRpb246IDUwJSA1MCU7DQoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCglkaXNwbGF5OiBibG9jazsNCgl9DQoubGVhZmxldC1iYXIgYTpob3ZlciwNCi5sZWFmbGV0LWJhciBhOmZvY3VzIHsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0Ow0KCX0NCi5sZWFmbGV0LWJhciBhOmZpcnN0LWNoaWxkIHsNCglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7DQoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsNCgl9DQoubGVhZmxldC1iYXIgYTpsYXN0LWNoaWxkIHsNCglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7DQoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsNCglib3JkZXItYm90dG9tOiBub25lOw0KCX0NCi5sZWFmbGV0LWJhciBhLmxlYWZsZXQtZGlzYWJsZWQgew0KCWN1cnNvcjogZGVmYXVsdDsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0Ow0KCWNvbG9yOiAjYmJiOw0KCX0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIGEgew0KCXdpZHRoOiAzMHB4Ow0KCWhlaWdodDogMzBweDsNCglsaW5lLWhlaWdodDogMzBweDsNCgl9DQoubGVhZmxldC10b3VjaCAubGVhZmxldC1iYXIgYTpmaXJzdC1jaGlsZCB7DQoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4Ow0KCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycHg7DQoJfQ0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIGE6bGFzdC1jaGlsZCB7DQoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4Ow0KCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7DQoJfQ0KDQovKiB6b29tIGNvbnRyb2wgKi8NCg0KLmxlYWZsZXQtY29udHJvbC16b29tLWluLA0KLmxlYWZsZXQtY29udHJvbC16b29tLW91dCB7DQoJZm9udDogYm9sZCAxOHB4ICdMdWNpZGEgQ29uc29sZScsIE1vbmFjbywgbW9ub3NwYWNlOw0KCXRleHQtaW5kZW50OiAxcHg7DQoJfQ0KDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLXpvb20taW4sIC5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtem9vbS1vdXQgIHsNCglmb250LXNpemU6IDIycHg7DQoJfQ0KDQoNCi8qIGxheWVycyBjb250cm9sICovDQoNCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzIHsNCglib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLDAsMCwwLjQpOw0KCWJhY2tncm91bmQ6ICNmZmY7DQoJYm9yZGVyLXJhZGl1czogNXB4Ow0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXRvZ2dsZSB7DQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJvQUFBQWFDQVFBQUFBRFE0UkZBQUFDZjBsRVFWUjRBWTFVTTNna0FSVGVQZHZkb1R4WEtjK3FUbDNhVTVVNmIyS2JrejNHdHEzWnc2emlMR05QenJZeDc5NDZUcjYvZWUvWGVDUTREM3lrUHRMNXRIbm80bjBkL2gzK3hmdVdIR0xYODFjbjdyMGlUTnpqcjdMcmx4Q3FQdGtiVFFFSGVxT3JUeTRZeXQzVkNpL0lPQjB2N3JWQzdxNDVRM0dyNUs2anQrM0dsNW5Db0RENE10TytqOTZXdThhdG1oR3FjTkdIT2J1ZjhPTS94M0FNeDM4KzRaMnNQcXpDeFJGSzJhRjJlNUpvbDU2WFRMeWdnQU1UTDU2WE9Nb1MxVzRwT3lqVWNHR1FkWnhVNnFSaDdCOVpwK1BmcE9GbHF0MHp5RFpja1BpMXR0bUlwMDNqWDhneUo4YS9QRzJ5dXRwUy9Wb2w3cGVaSWJaY0tCQUVFaGVFSUFnRmJEa3o1SDZacmttMmhWV0dpWEtpRjRZY3cwUldLZHRDMTZRN3FlM1g0aU9NeHJ1b256ZWdKeldhWEZyVTl1dE9Tc0xVbXJjMFlqZVdZakNXNFBETUFERWxwSlNTUTB2UXZBMVRtNi9KbEtucUZzMUVHeVppRkNxblJaVEVKSkppS1JZelZZekpjazJSbTZQNGlIK2NtU1kwWXppbVlhOGwwRXRUT0RGV2hjTUlNVnFkc0kydWlUdkttVGlzSURISjNvZDVHSUxWaEJDYXJDZlZSbW80dVRqa2hyaHpraUJWN1NzYXFTK1R6cnpNMXFwR0dVRnQyOHBJeVNRSFI2aDdGNktTd0dXbTk3YXkrWitacU1jRWpFV2ViRTd3eENTUXdwa2hKcW9aQTVpdkNkWkRqSmVwdUo5SVFqR0dVbXVYSmRCRlV5Z3hWcVZzeEZzTE1iRGU4WmJEWVZDR0t4cytXMDgwbWF4MWhGQ2FyQ2ZWK0MxS0FUd2NudkU5Z1JSdU1QMnByZGJXR293bTFLQjF5K3p3TU1FTmtNNzU1Y0oyeVBEdHFoVEk2RUQxTS84MnlJRHRDLzRqNEJpamplT2JmbHBPOUk5TXdYVENzU1g4aldBRmVIcjA1V29MVEo1RzhJUVZTLzd2d1I2b2hpcllNN2Y2SHpZcG9nZlMzUjJPQUFBQUFFbEZUa1N1UW1DQyIpOw0KCXdpZHRoOiAzNnB4Ow0KCWhlaWdodDogMzZweDsNCgl9DQoubGVhZmxldC1yZXRpbmEgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHsNCgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRFFBQUFBMENBUUFBQUJ2Y2ROZ0FBQUVza2xFUVZSNEFXTDRUeWRJaHBaSzFrcFdPbGcwdzNaWFA2RDJzb0J0RzQyamVJNlptUVRIekF4aVRiU0pzWUxqTzlIaFArV09tY3VoY2lWbm1IVlFjSm5wN0RGdlNjb3dab3JhZC8rVi9mVnpNZE1UMmc5Q3Y5Z3VYR3YvN3BZT3JYaDJVK1JSUjNkU2Q5SlJ4NmJJRmMvZWtxSEkyOUpDNnBKNVpFaDF5V2toa2JjRmVTanhneDNMMm0xY2IxQzdiY2V5eEErQ05qVC9JZmZmKy9rRGsydS93LzMzL0llQ01PU2FXWjRnbG9zcVQzRE5uTlpRN0NzNTgvM0NlNUhMNzhpWkgvdktWSWFZbHF6ZmRMdThWaTdkbnZVYkV6YTVJZHQzNnRxdVpGbGRsNk41Wi9QT0xvZjBYTEs2MW1aQ21KU1dqVkY5dEVqVWx1dTc0SVVYdmd0dHVWSUhFN1l4U2thWWhKWmFtN3lpTTlQdjgySllmbDlucHR4WmF4TUpFNFlTUHR5K3ZGMCtZMnVwOWQzd3dpamZqWmJhYnFtLzNiWjllY0tIc2lHbVJmbG5uMU1XNHBqSGY5b0x1ZnluMnozeTFENm44ZzhUWmh4eXppcExOUG5BVXBzT2l1V2ltZzUycHNyVFpZbk9XWU5EVE11V0JXYTB0SmI0cmdxMVV2bXV0cGFZRWJabHdVM0NMSm0vYXlZakhXNS9oN3hXTG45SGgxdmVwRGt5ZjdkRTdNdFQ1TFI0ZTd5WXBIcmtoT1VwRWZzc0JMcTJwUGhBcW9TV0tVa2s3RURxa21LNlJyQ0V6cURqaE5EV05FK1hTTXZrSlJEV2xaVG1DVzBsMFBIUUdSWlk1dDFMODNrVDBZM2wyU0l0azVKQVdIbDJkQ09CbStmUHUzZm81LzN2NjFSTUNPOUp4MkVFWVloYjBybU5RTVgvdm03Z3FPRUpMY1hUR3czQ0F1Uk5leWFQV3dqUjhQUnFLUTFQREEvZHB2K29uOVNob3g1MldGbngwS1k4b25IYXlySnptODdpNWg5eEd3L3Rma2V2MGpHc1FpenFlelVLamsxMmhCTUtKNGtiQ3FHUFZOWHVkeXlyU2hvdkd3NUNneHNSSUN4RjZhUm1TamxCbkhSemc3R3g4ZktxRXViSTJyYWhRWWRSMVlnRElSUU83SnZReUQ1MmhvSVF4MG14YTBPRHRXMklvem4xbGUyaUlSZHp3V2V3ZWR5Wnpld2lkdWVPR3Fsc24xTXZjblFwdVZ3TEdHMy9JUjFoSUt4Q2plbElEWjhsZHFXejI1aldBc25sZEVuSzBaeHJvMTlUR1ZiMmZmSVpFc0lPODlFSUVEdktNUHJ6bUJPUWNLUStycm95ZTZOZ1JSeHFSNFU4RUFrejBDTDZ1U0dPbTZLUUNkV2p2alJpU1AxQlBhbENSUzVpUVlpRUl2eHVCTUpFV2d6U29IQURjVk11TjdJdXFxVGV5VVBxMjJxRmltRnR4RHlCQkpFd055dDZUTTg4YmxGSGFvLzZ0V1dodXVPTTRTQUs0RUk0UW1GSEErU0V5V2xwNEVRb0oxM2NZR3pNdTd5c3pFSUJPbTJyVm1IVU5xd0FJUWFiSVNOTVJzdG1kaE5XY0ZMc1NtKzB0akpIMU1kUnhPNU54MFdETWhDdGdENk9LZ1plbGpKcUpLYzlwbzhqdXNrUjlYTjBZMWxaM21XakxSOUpDTzFqUkRNZDBmcFlDMlZudmpCU0VGZzd3QkVOYzBSOUhGbGIweHZGMStUQkVwRjY4ZCtESFI2SU9XVnYyQkVDdHhvNDZoT0ZVQmQvQVBVNTdXSW9Fd0poSWkyQ2RweVpYMG05M0JaaWNrdE1qMUFTOWRDbHRlVUZBVU5VSUV5Z1JaQ3RpazV6U3hJOU11YlRCSDFHT2lIc2lMSjNPQ29TWmtJTGE5UHhpTjBFYnZoc0FvOHRkQWY5U2VlcGQzNmxHV0htdE5BTlR2NUpkMHo0UVl5ZW8vVUVKcXhLUnBnNUxaeDZidExQc09hRW1kTXl4WWRsYzhMTWFKbmlrRGxoY2xxbVBpUW5URXBMVUlaRXdrUmFnallrRWliUUVyd2hrVEFLQ0xRRWJVZ2t6SlFXYy8wUHN0SEhjZkVkUStVQUFBQUFTVVZPUks1Q1lJST0iKTsNCgliYWNrZ3JvdW5kLXNpemU6IDI2cHggMjZweDsNCgl9DQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUgew0KCXdpZHRoOiA0NHB4Ow0KCWhlaWdodDogNDRweDsNCgl9DQoubGVhZmxldC1jb250cm9sLWxheWVycyAubGVhZmxldC1jb250cm9sLWxheWVycy1saXN0LA0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMtZXhwYW5kZWQgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHsNCglkaXNwbGF5OiBub25lOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWxpc3Qgew0KCWRpc3BsYXk6IGJsb2NrOw0KCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgl9DQoubGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCB7DQoJcGFkZGluZzogNnB4IDEwcHggNnB4IDZweDsNCgljb2xvcjogIzMzMzsNCgliYWNrZ3JvdW5kOiAjZmZmOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNjcm9sbGJhciB7DQoJb3ZlcmZsb3cteTogc2Nyb2xsOw0KCW92ZXJmbG93LXg6IGhpZGRlbjsNCglwYWRkaW5nLXJpZ2h0OiA1cHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VsZWN0b3Igew0KCW1hcmdpbi10b3A6IDJweDsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJdG9wOiAxcHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMgbGFiZWwgew0KCWRpc3BsYXk6IGJsb2NrOw0KCWZvbnQtc2l6ZTogMTNweDsNCglmb250LXNpemU6IDEuMDgzMzNlbTsNCgl9DQoubGVhZmxldC1jb250cm9sLWxheWVycy1zZXBhcmF0b3Igew0KCWhlaWdodDogMDsNCglib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsNCgltYXJnaW46IDVweCAtMTBweCA1cHggLTZweDsNCgl9DQoNCi8qIERlZmF1bHQgaWNvbiBVUkxzICovDQoubGVhZmxldC1kZWZhdWx0LWljb24tcGF0aCB7IC8qIHVzZWQgb25seSBpbiBwYXRoLWd1ZXNzaW5nIGhldXJpc3RpYywgc2VlIEwuSWNvbi5EZWZhdWx0ICovDQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQXBDQVlBQUFEQWs0TE9BQUFGZ1VsRVFWUjRBYTFYQTVCaldSVE4yb1cxN2QzWWFadHIyOTYySFV6YkROcGpzelcyNG1SdDI4cDQ3djd6cS9iWFp0cnAvbFduWHIzMzdqM25QQ2U4NU5jeXBnU0ZkdWdDcFc1WW9EQU1SYUlNcVJpNmFLcTVFM1lxRFFPM3FBd2pWV3JEOE5jcS9SQnB5a2Q4b1pVYi9rYUp1dG93OHIxYVA5SUkwV21MS0xJc0p5djF3L2txdzlDaDJNWWRCKysxMk9ueGVlL1FNd3ZmNC9Eay9MZnAvaTRueFRYdE9vUTRwVzVBajd3cGljaTFBOWVyZEFOMk9INjR4OE9TUDlqM0Z0M2I3YVdrVGcvRm05MXNpVHJhMGY5b241c1FyOUlOZWpINkNVVVVwYXZqRk5xMUIrT2FkaHhtbmZhOFJmRW1OOFZOQXNRaFBxRjU1eEhrTXp6M2pTbUNoV1U2ZjcvWFpLTkgrOStoQkxPSFlvenVLUVB4eU1QVUtrclgvSzB1V25mRmFKR1MxUVBSdFpzT1B0cjNOc1cwdXloNk5OQ09rVTNZeitiWGJUM0k4RzN4RTVFWExYdENYYmJxd0NPOXpQUVlQUlRaNXZJRFhEN1UrdzdyRkRFb1VVZjdpYkhJUjR5NmJMVlBYcno4SlZaRXFsMTN0cnh3dWUvdURpdmQzZmtXUmJTNi9JQTJiSUQ0dWswVXBGMU44cUxsYkJsWHM0RWU3SExUZlYxajU0QVB2T0RuU2ZPV0JxdEtWdmpnTEt6RjVZZEVrNWV3UmtHbEswaTMzRW9mZmZjN0hUNTZqRDcvNlUrcUgzQ3g3U0JMTm50SDVZSVB2T0RueWZJWFpZUlZEUHFnSHRMczVBQkhEM1l6THVlc3BiN3Q3OUZZMzREak13clZyY1R1d2xUNTVZTVB2T0JuUnJKNFZYVGRObll1ZzV1Y0hMQmpFcHQzMDcwMUEzVHMrSEVhNzN1NmRUM0ZOV3dmbFk4NmVNSFBrK1l1K2k2cHpVcFJyVzdTTkRnNUpIUjRLYXBtTTVXdjJFOFRmY2IxSG9xcUhNSFUrdVdERDd6ZzU0bXo1LzJCU25pemk5VDFEZzRRUVhMVG9HTkNrYjZ0YjFOVStRQWxHcjErK2VBRHJ6aG4vdThRMllaaFFWbFo1K0NBT3RxZmJobWFVQ1MxZXpORlZtMmltRGJQbVBuZzV3bXorZ3doK29IRGNlMGVVdFE2T0dESXlSMHVVaFVzb08zdmZEbW1nT2V6SDBtWk41OXg3TUJpKytXREwxZy9lRWlVM2F2bGlkTzY3MWJrTGZ3Ync1WFYyUDhQem8weWR5NHQyLzBldTMzeFlTT01PRDhoVGY0Q3JCdEdNU29YZlBMY2hYK0owcnVTZVB3M0xaZUswanVQSmJZenJoa0gwaW83QjNrMTY0aGlHdmF3aE9LTUxrclFMeVZwWmc4ckhGVzdFMnVIT0w4ODhJQlBsTloxRlB6c3RTSk02OTRmV3I2UndwdmNKSzYwKzBIQ0lMVEJ6WkxGTmR0QXpKYW9oemU2MFQ4cUJ6eWg1WnVPZzVlN3V3UXBwb2ZFbWYyKytEWXZteVNxR0J1S2FpY0YxYmxRamh1SGR2Q0lNdnA4d2hUVGZaekk3UmxkcHd0U3pMK0YxK3drZFoyVEJPVzJnSUY4OFBCVHpEL2dwZVJFQU1FYnhuSmNhSkhOSHJwemppMGdRQ1M2aGRrRWVZdDlERi8ycVBjRUM4Uk0yOEh3bXIzc2ROeWh0MDBieUF1dDJrM2d1ZldOdGd0T0VPRkdVd2NYV05EYmROYnBnQkd4RXZLa09Rc3hpdkp4MzNpb3cwVnc1UzZTVlRycFZxMTF5c0EyUnA3Z1RmUGZrdGM2emh0WEJCQythZFJMc2hmNnNHMlJmSFBaNUVBYzRzVlo4M3lDTjAwRmsvNGtnZ3U0MFpUdklFbTVnMjRxdFU0S2pCcngvQlRUSDhpZlZBU0FHN2dLcm5XeEpEY1U3eDhYNkVjY3pobTNvNllpY3ZzTFhXZmgzQ2gxVzBrOHgwblhGKzBmRnhndDRwaHo4UXZ5cGl3Q0NGS01xWENucVhFeGpxMTBiZUgrVVVBNytuRzZtZEcvUHUwZjNMZ0ZjR3JsMnMwa05OanBtb0o5bzRCMjlDTU84ZE1UNFE1b3g4dWl0RjZmcXNySk9yOHFud05iUnp2NmhTbkc1d1ArNjRDN2g5bHAzMGhLTnRLZFdqdGRrYnVQQTE5bko3VHozelIvaWJnQVJiaGI0QWxoYXZjQmVibVRIY0ZsMmZ2WUVuVzBveDl4TXhLQlM4YnRKK0tpRWJxOXpBNFJ0aFFYRGhQYTBUOVRFZTY5Z1d1cHdjNnVCVXBocXVYZ2YrL0ZySWp3ZUhRUzQvcGR1TWU1RVJVTUhVZDl4djhaUjk4Q3hrUzRGMm4zRVVyVVoxMEVZTnc3QldtOXgxR2lQc3NpM0dnaUdSREtXUllaZlhsT04rZGZOYk0rR2dJd1lkd0FBQUFBU1VWT1JLNUNZSUk9Iik7DQoJfQ0KDQoNCi8qIGF0dHJpYnV0aW9uIGFuZCBzY2FsZSBjb250cm9scyAqLw0KDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiB7DQoJYmFja2dyb3VuZDogI2ZmZjsNCgliYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7DQoJbWFyZ2luOiAwOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24sDQoubGVhZmxldC1jb250cm9sLXNjYWxlLWxpbmUgew0KCXBhZGRpbmc6IDAgNXB4Ow0KCWNvbG9yOiAjMzMzOw0KCWxpbmUtaGVpZ2h0OiAxLjQ7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhIHsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhOmhvdmVyLA0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhOmZvY3VzIHsNCgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCgl9DQoubGVhZmxldC1hdHRyaWJ1dGlvbi1mbGFnIHsNCglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsNCgl2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsNCgl3aWR0aDogMWVtOw0KCWhlaWdodDogMC42NjY5ZW07DQoJfQ0KLmxlYWZsZXQtbGVmdCAubGVhZmxldC1jb250cm9sLXNjYWxlIHsNCgltYXJnaW4tbGVmdDogNXB4Ow0KCX0NCi5sZWFmbGV0LWJvdHRvbSAubGVhZmxldC1jb250cm9sLXNjYWxlIHsNCgltYXJnaW4tYm90dG9tOiA1cHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lIHsNCglib3JkZXI6IDJweCBzb2xpZCAjNzc3Ow0KCWJvcmRlci10b3A6IG5vbmU7DQoJbGluZS1oZWlnaHQ6IDEuMTsNCglwYWRkaW5nOiAycHggNXB4IDFweDsNCgl3aGl0ZS1zcGFjZTogbm93cmFwOw0KCS1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsNCgkgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQoJYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOw0KCXRleHQtc2hhZG93OiAxcHggMXB4ICNmZmY7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lOm5vdCg6Zmlyc3QtY2hpbGQpIHsNCglib3JkZXItdG9wOiAycHggc29saWQgIzc3NzsNCglib3JkZXItYm90dG9tOiBub25lOw0KCW1hcmdpbi10b3A6IC0ycHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgew0KCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjNzc3Ow0KCX0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiwNCi5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIHsNCglib3gtc2hhZG93OiBub25lOw0KCX0NCi5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIHsNCglib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7DQoJYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsNCgl9DQoNCg0KLyogcG9wdXAgKi8NCg0KLmxlYWZsZXQtcG9wdXAgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJbWFyZ2luLWJvdHRvbTogMjBweDsNCgl9DQoubGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXIgew0KCXBhZGRpbmc6IDFweDsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCWJvcmRlci1yYWRpdXM6IDEycHg7DQoJfQ0KLmxlYWZsZXQtcG9wdXAtY29udGVudCB7DQoJbWFyZ2luOiAxM3B4IDI0cHggMTNweCAyMHB4Ow0KCWxpbmUtaGVpZ2h0OiAxLjM7DQoJZm9udC1zaXplOiAxM3B4Ow0KCWZvbnQtc2l6ZTogMS4wODMzM2VtOw0KCW1pbi1oZWlnaHQ6IDFweDsNCgl9DQoubGVhZmxldC1wb3B1cC1jb250ZW50IHAgew0KCW1hcmdpbjogMTdweCAwOw0KCW1hcmdpbjogMS4zZW0gMDsNCgl9DQoubGVhZmxldC1wb3B1cC10aXAtY29udGFpbmVyIHsNCgl3aWR0aDogNDBweDsNCgloZWlnaHQ6IDIwcHg7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWxlZnQ6IDUwJTsNCgltYXJnaW4tdG9wOiAtMXB4Ow0KCW1hcmdpbi1sZWZ0OiAtMjBweDsNCglvdmVyZmxvdzogaGlkZGVuOw0KCXBvaW50ZXItZXZlbnRzOiBub25lOw0KCX0NCi5sZWFmbGV0LXBvcHVwLXRpcCB7DQoJd2lkdGg6IDE3cHg7DQoJaGVpZ2h0OiAxN3B4Ow0KCXBhZGRpbmc6IDFweDsNCg0KCW1hcmdpbjogLTEwcHggYXV0byAwOw0KCXBvaW50ZXItZXZlbnRzOiBhdXRvOw0KDQoJLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJfQ0KLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLA0KLmxlYWZsZXQtcG9wdXAtdGlwIHsNCgliYWNrZ3JvdW5kOiB3aGl0ZTsNCgljb2xvcjogIzMzMzsNCglib3gtc2hhZG93OiAwIDNweCAxNHB4IHJnYmEoMCwwLDAsMC40KTsNCgl9DQoubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbiB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglyaWdodDogMDsNCglib3JkZXI6IG5vbmU7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCXdpZHRoOiAyNHB4Ow0KCWhlaWdodDogMjRweDsNCglmb250OiAxNnB4LzI0cHggVGFob21hLCBWZXJkYW5hLCBzYW5zLXNlcmlmOw0KCWNvbG9yOiAjNzU3NTc1Ow0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCgl9DQoubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbjpob3ZlciwNCi5sZWFmbGV0LWNvbnRhaW5lciBhLmxlYWZsZXQtcG9wdXAtY2xvc2UtYnV0dG9uOmZvY3VzIHsNCgljb2xvcjogIzU4NTg1ODsNCgl9DQoubGVhZmxldC1wb3B1cC1zY3JvbGxlZCB7DQoJb3ZlcmZsb3c6IGF1dG87DQoJfQ0KDQoubGVhZmxldC1vbGRpZSAubGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXIgew0KCS1tcy16b29tOiAxOw0KCX0NCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LXBvcHVwLXRpcCB7DQoJd2lkdGg6IDI0cHg7DQoJbWFyZ2luOiAwIGF1dG87DQoNCgktbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0Lk1hdHJpeChNMTE9MC43MDcxMDY3OCwgTTEyPTAuNzA3MTA2NzgsIE0yMT0tMC43MDcxMDY3OCwgTTIyPTAuNzA3MTA2NzgpIjsNCglmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5NYXRyaXgoTTExPTAuNzA3MTA2NzgsIE0xMj0wLjcwNzEwNjc4LCBNMjE9LTAuNzA3MTA2NzgsIE0yMj0wLjcwNzEwNjc4KTsNCgl9DQoNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LWNvbnRyb2wtem9vbSwNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLA0KLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtdGlwIHsNCglib3JkZXI6IDFweCBzb2xpZCAjOTk5Ow0KCX0NCg0KDQovKiBkaXYgaWNvbiAqLw0KDQoubGVhZmxldC1kaXYtaWNvbiB7DQoJYmFja2dyb3VuZDogI2ZmZjsNCglib3JkZXI6IDFweCBzb2xpZCAjNjY2Ow0KCX0NCg0KDQovKiBUb29sdGlwICovDQovKiBCYXNlIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnQgdGhhdCBoYXMgYSB0b29sdGlwICovDQoubGVhZmxldC10b29sdGlwIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJcGFkZGluZzogNnB4Ow0KCWJhY2tncm91bmQtY29sb3I6ICNmZmY7DQoJYm9yZGVyOiAxcHggc29saWQgI2ZmZjsNCglib3JkZXItcmFkaXVzOiAzcHg7DQoJY29sb3I6ICMyMjI7DQoJd2hpdGUtc3BhY2U6IG5vd3JhcDsNCgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOw0KCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7DQoJLW1zLXVzZXItc2VsZWN0OiBub25lOw0KCXVzZXItc2VsZWN0OiBub25lOw0KCXBvaW50ZXItZXZlbnRzOiBub25lOw0KCWJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuNCk7DQoJfQ0KLmxlYWZsZXQtdG9vbHRpcC5sZWFmbGV0LWludGVyYWN0aXZlIHsNCgljdXJzb3I6IHBvaW50ZXI7DQoJcG9pbnRlci1ldmVudHM6IGF1dG87DQoJfQ0KLmxlYWZsZXQtdG9vbHRpcC10b3A6YmVmb3JlLA0KLmxlYWZsZXQtdG9vbHRpcC1ib3R0b206YmVmb3JlLA0KLmxlYWZsZXQtdG9vbHRpcC1sZWZ0OmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJcG9pbnRlci1ldmVudHM6IG5vbmU7DQoJYm9yZGVyOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQoJY29udGVudDogIiI7DQoJfQ0KDQovKiBEaXJlY3Rpb25zICovDQoNCi5sZWFmbGV0LXRvb2x0aXAtYm90dG9tIHsNCgltYXJnaW4tdG9wOiA2cHg7DQp9DQoubGVhZmxldC10b29sdGlwLXRvcCB7DQoJbWFyZ2luLXRvcDogLTZweDsNCn0NCi5sZWFmbGV0LXRvb2x0aXAtYm90dG9tOmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSB7DQoJbGVmdDogNTAlOw0KCW1hcmdpbi1sZWZ0OiAtNnB4Ow0KCX0NCi5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSB7DQoJYm90dG9tOiAwOw0KCW1hcmdpbi1ib3R0b206IC0xMnB4Ow0KCWJvcmRlci10b3AtY29sb3I6ICNmZmY7DQoJfQ0KLmxlYWZsZXQtdG9vbHRpcC1ib3R0b206YmVmb3JlIHsNCgl0b3A6IDA7DQoJbWFyZ2luLXRvcDogLTEycHg7DQoJbWFyZ2luLWxlZnQ6IC02cHg7DQoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsNCgl9DQoubGVhZmxldC10b29sdGlwLWxlZnQgew0KCW1hcmdpbi1sZWZ0OiAtNnB4Ow0KfQ0KLmxlYWZsZXQtdG9vbHRpcC1yaWdodCB7DQoJbWFyZ2luLWxlZnQ6IDZweDsNCn0NCi5sZWFmbGV0LXRvb2x0aXAtbGVmdDpiZWZvcmUsDQoubGVhZmxldC10b29sdGlwLXJpZ2h0OmJlZm9yZSB7DQoJdG9wOiA1MCU7DQoJbWFyZ2luLXRvcDogLTZweDsNCgl9DQoubGVhZmxldC10b29sdGlwLWxlZnQ6YmVmb3JlIHsNCglyaWdodDogMDsNCgltYXJnaW4tcmlnaHQ6IC0xMnB4Ow0KCWJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOw0KCX0NCi5sZWFmbGV0LXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHsNCglsZWZ0OiAwOw0KCW1hcmdpbi1sZWZ0OiAtMTJweDsNCglib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7DQoJfQ0KDQovKiBQcmludGluZyAqLw0KDQpAbWVkaWEgcHJpbnQgew0KCS8qIFByZXZlbnQgcHJpbnRlcnMgZnJvbSByZW1vdmluZyBiYWNrZ3JvdW5kLWltYWdlcyBvZiBjb250cm9scy4gKi8NCgkubGVhZmxldC1jb250cm9sIHsNCgkJLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0Ow0KCQlwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0Ow0KCQl9DQoJfQ0KCjwvc3R5bGU+CjxzdHlsZT4KOnJvb3QgewogIC0tYmc6IzBlMGUwZTsgLS1zdXJmYWNlOiMxNjE2MTY7IC0tYm9yZGVyOiMyYTJhMmE7CiAgLS10ZXh0OiNkNGQyY2U7IC0tdGV4dC1tdXRlZDojN2E3ODc2OwogIC0tZ2VsaXg6IzRmYjNjMDsgLS1hdmlhY29uOiNmMGI0Mjk7IC0tdm9sZ2FkbmVwcjojZTA1ZjVmOyAtLW11bHRpOiNiMDc4ZDQ7CiAgLS1hbGdlcmlhOiNmN2M5NDg7Cn0KKiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MDt9Cmh0bWwsYm9keXtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7b3ZlcmZsb3c6aGlkZGVuO30KI21hcHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO30KI2hlYWRlcnsKICBwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt6LWluZGV4OjkwMDsKICBiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsMC44OCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMTBweCk7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4OwogIHBhZGRpbmc6MTJweCAyMHB4O3RleHQtYWxpZ246Y2VudGVyO21heC13aWR0aDo2MDBweDt3aWR0aDo5MiU7Cn0KI2hlYWRlciBoMXtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjAyZW07Y29sb3I6I2ZmZjtsaW5lLWhlaWdodDoxLjM7fQojaGVhZGVyIHB7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDozcHg7bGV0dGVyLXNwYWNpbmc6LjAyZW07fQojcGFuZWx7CiAgcG9zaXRpb246YWJzb2x1dGU7dG9wOjEyMHB4O2xlZnQ6MTZweDt6LWluZGV4OjkwMDsKICBiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsMC44OCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMTBweCk7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4OwogIHBhZGRpbmc6MTRweDttaW4td2lkdGg6MjEwcHg7bWF4LXdpZHRoOjIyNHB4Owp9CiNwYW5lbCBoM3tmb250LXNpemU6MTBweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjFlbTtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tYm90dG9tOjEwcHg7fQouYWlybGluZS1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4O2N1cnNvcjpwb2ludGVyO30KLmFpcmxpbmUtcm93IGxhYmVse2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2ZsZXg6MTt9Ci5zd2F0Y2h7d2lkdGg6MjhweDtoZWlnaHQ6M3B4O2JvcmRlci1yYWRpdXM6MnB4O2ZsZXgtc2hyaW5rOjA7fQouYWlybGluZS1yb3cgaW5wdXR7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLXRleHQpO30KLmRpdmlkZXJ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYm9yZGVyKTttYXJnaW46MTBweCAwO30KLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21hcmdpbi1ib3R0b206N3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O30KLmZpbHRlci1yb3cgaW5wdXR7Y3Vyc29yOnBvaW50ZXI7fQouZmlsdGVyLXJvdyBsYWJlbHtjdXJzb3I6cG9pbnRlcjtmbGV4OjE7fQoucGlsbC1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjVweDttYXJnaW4tdG9wOjRweDt9Ci5waWxsewogIGZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjIwcHg7Y3Vyc29yOnBvaW50ZXI7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7CiAgY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7dHJhbnNpdGlvbjphbGwgLjE1czsKfQoucGlsbDpob3Zlcntib3JkZXItY29sb3I6IzU1NTtjb2xvcjp2YXIoLS10ZXh0KTt9Ci5waWxsLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLXRleHQpO2NvbG9yOiMwZTBlMGU7Ym9yZGVyLWNvbG9yOnZhcigtLXRleHQpO2ZvbnQtd2VpZ2h0OjYwMDt9Ci5zeW0tY29uZmlybWVke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDtiYWNrZ3JvdW5kOiNmZmY7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHg7fQouc3ltLWFtYmlndW91c3tkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMnB4O2hlaWdodDowO2JvcmRlci10b3A6MnB4IGRhc2hlZCAjODg4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4O30KLnN5bS1ub3Rle2ZvbnQtc2l6ZToxMHB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NnB4O2xpbmUtaGVpZ2h0OjEuNDt9CiNzdGF0c3sKICBwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MTZweDtsZWZ0OjE2cHg7ei1pbmRleDo5MDA7CiAgYmFja2dyb3VuZDpyZ2JhKDE0LDE0LDE0LDAuODgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDEwcHgpOwogIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDsKICBwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsKfQojc3RhdHMgc3Bhbntjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo2MDA7fQojZm9jdXMtYmFubmVyewogIHBvc2l0aW9uOmFic29sdXRlO2JvdHRvbToxNnB4O2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3otaW5kZXg6MTAwMDsKICBiYWNrZ3JvdW5kOnJnYmEoMjQ3LDIwMSw3MiwwLjE1KTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigxMHB4KTsKICBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjQ3LDIwMSw3MiwwLjQpO2JvcmRlci1yYWRpdXM6OHB4OwogIHBhZGRpbmc6OXB4IDE2cHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojZjdjOTQ4OwogIGRpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7d2hpdGUtc3BhY2U6bm93cmFwOwp9CiNmb2N1cy1iYW5uZXIgYnV0dG9uewogIGJhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZjdjOTQ4O2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyOwogIHBhZGRpbmc6MCAycHg7bGluZS1oZWlnaHQ6MTtvcGFjaXR5Oi44O3RyYW5zaXRpb246b3BhY2l0eSAuMTVzOwp9CiNmb2N1cy1iYW5uZXIgYnV0dG9uOmhvdmVye29wYWNpdHk6MTt9CiN0b29sdGlwewogIHBvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsMC45NSk7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6NnB4OwogIHBhZGRpbmc6MTBweCAxMnB4O2ZvbnQtc2l6ZToxMS41cHg7bGluZS1oZWlnaHQ6MS42OwogIHBvaW50ZXItZXZlbnRzOm5vbmU7bWF4LXdpZHRoOjI2MHB4O2Rpc3BsYXk6bm9uZTsKICBib3gtc2hhZG93OjAgNHB4IDIwcHggcmdiYSgwLDAsMCwuNSk7Cn0KI3Rvb2x0aXAgLnR0LXJvdXRle2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtjb2xvcjojZmZmO21hcmdpbi1ib3R0b206NHB4O30KI3Rvb2x0aXAgLnR0LWFpcmxpbmV7Zm9udC1zaXplOjExcHg7bWFyZ2luLWJvdHRvbToycHg7fQojdG9vbHRpcCAudHQtbWV0YXtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6MTAuNXB4O30KLmxlYWZsZXQtY29udGFpbmVye2JhY2tncm91bmQ6IzBlMGUwZTt9Ci5sZWFmbGV0LWNvbnRyb2wtem9vbXtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcikhaW1wb3J0YW50O2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSkhaW1wb3J0YW50O30KLmxlYWZsZXQtY29udHJvbC16b29tIGF7Y29sb3I6dmFyKC0tdGV4dCkhaW1wb3J0YW50O2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSkhaW1wb3J0YW50O30KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbntiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsLjcpIWltcG9ydGFudDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjlweCFpbXBvcnRhbnQ7fQoubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uIGF7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkhaW1wb3J0YW50O30KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0ibWFwIj48L2Rpdj4KPGRpdiBpZD0iaGVhZGVyIj4KICA8aDE+UlVTU0lBJ1MgU0hBRE9XIEFJUkxJTkVTOiBGTElHSFQgQ0lSQ1VJVFMgVEhST1VHSCBBTEdFUklBPC9oMT4KICA8cD5HZWxpeCBBaXJsaW5lcywgQXZpYWNvbiBaaXRvdHJhbnMgJmFtcDsgVm9sZ2EtRG5lcHIgQWlybGluZXMgJm1pZGRvdDsgTWFyIDIwMjUg4oCTIEFwciAyMDI2ICZtaWRkb3Q7IExpbmVzIGluZGljYXRlIGNvbm5lY3Rpb25zIGJldHdlZW4gY2l0aWVzLCBub3QgYWN0dWFsIGZsaWdodCBwYXRoczwvcD4KPC9kaXY+CjxkaXYgaWQ9InBhbmVsIj4KICA8aDM+QWlybGluZXM8L2gzPgogIDxkaXYgY2xhc3M9ImFpcmxpbmUtcm93Ij4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiLWdlbGl4IiBjaGVja2VkPgogICAgPGRpdiBjbGFzcz0ic3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1nZWxpeCkiPjwvZGl2PgogICAgPGxhYmVsIGZvcj0iY2ItZ2VsaXgiPkdlbGl4IEFpcmxpbmVzPC9sYWJlbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJhaXJsaW5lLXJvdyI+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYi1hdmlhY29uIiBjaGVja2VkPgogICAgPGRpdiBjbGFzcz0ic3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1hdmlhY29uKSI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJjYi1hdmlhY29uIj5BdmlhY29uIFppdG90cmFuczwvbGFiZWw+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWlybGluZS1yb3ciPgogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2ItdmQiIGNoZWNrZWQ+CiAgICA8ZGl2IGNsYXNzPSJzd2F0Y2giIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLXZvbGdhZG5lcHIpIj48L2Rpdj4KICAgIDxsYWJlbCBmb3I9ImNiLXZkIj5Wb2xnYS1EbmVwciBBaXJsaW5lczwvbGFiZWw+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWlybGluZS1yb3ciIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxOHB4Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN3YXRjaCIgc3R5bGU9ImJhY2tncm91bmQ6I2IwNzhkNCI+PC9kaXY+CiAgICA8bGFiZWwgc3R5bGU9ImN1cnNvcjpkZWZhdWx0O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5NdWx0aXBsZSBhaXJsaW5lczwvbGFiZWw+CiAgPC9kaXY+CiAgPGhyIGNsYXNzPSJkaXZpZGVyIj4KICA8aDM+RmlsdGVyczwvaDM+CiAgPGRpdiBjbGFzcz0iZmlsdGVyLXJvdyI+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYi1hbGdlcmlhLW9ubHkiPgogICAgPGxhYmVsIGZvcj0iY2ItYWxnZXJpYS1vbmx5Ij5BbGdlcmlhIHJvdXRlcyBvbmx5PC9sYWJlbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmaWx0ZXItcm93Ij4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiLWhpZGUtYW1iIj4KICAgIDxsYWJlbCBmb3I9ImNiLWhpZGUtYW1iIj5IaWRlIHVuY2VydGFpbiByb3V0ZXM8L2xhYmVsPgogIDwvZGl2PgogIDxociBjbGFzcz0iZGl2aWRlciI+CiAgPGgzPk1pbi4gZmxpZ2h0czwvaDM+CiAgPGRpdiBjbGFzcz0icGlsbC1ncm91cCI+CiAgICA8YnV0dG9uIGNsYXNzPSJwaWxsIGFjdGl2ZSIgZGF0YS1taW49IjEiPjErPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJwaWxsIiBkYXRhLW1pbj0iMiI+Mis8L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9InBpbGwiIGRhdGEtbWluPSIzIj4zKzwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0icGlsbCIgZGF0YS1taW49IjUiPjUrPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJwaWxsIiBkYXRhLW1pbj0iMTAiPjEwKzwvYnV0dG9uPgogIDwvZGl2PgogIDxociBjbGFzcz0iZGl2aWRlciI+CiAgPGgzPktleTwvaDM+CiAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjExcHg7bWFyZ2luLWJvdHRvbTo1cHgiPjxzcGFuIGNsYXNzPSJzeW0tY29uZmlybWVkIj48L3NwYW4+IENvbmZpcm1lZDwvZGl2PgogIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O21hcmdpbi1ib3R0b206NXB4Ij48c3BhbiBjbGFzcz0ic3ltLWFtYmlndW91cyI+PC9zcGFuPiBVbmNlcnRhaW4gLyBpbmZlcnJlZDwvZGl2PgogIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O21hcmdpbi1ib3R0b206NXB4Ij4KICAgIDxzdmcgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMTAgMTAiPjxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSI1IiBmaWxsPSIjZjdjOTQ4Ii8+PC9zdmc+CiAgICAmbmJzcDtBbGdlcmlhbiBsb2NhdGlvbgogIDwvZGl2PgogIDxwIGNsYXNzPSJzeW0tbm90ZSI+SG92ZXIgcm91dGVzIHRvIGlzb2xhdGUuIENsaWNrIGEgY2l0eSB0byBmb2N1cy48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJzdGF0cyI+CiAgPHNwYW4gaWQ9InN0YXQtcm91dGVzIj7igJQ8L3NwYW4+IHJvdXRlcyAmbWlkZG90OyBBbGdlcmlhLXJlbGF0ZWQgZmxpZ2h0cyB0cmFja2VkICZtaWRkb3Q7IE1hciAyMDI14oCTQXByIDIwMjYKPC9kaXY+CjxkaXYgaWQ9ImZvY3VzLWJhbm5lciI+CiAgPHNwYW4gaWQ9ImZvY3VzLWxhYmVsIj48L3NwYW4+CiAgPGJ1dHRvbiBpZD0iZm9jdXMtY2xlYXIiIHRpdGxlPSJDbGVhciBmb2N1cyI+JiN4MjcxNTs8L2J1dHRvbj4KPC9kaXY+CjxkaXYgaWQ9InRvb2x0aXAiPjwvZGl2PgoKPHNjcmlwdD4KLyogQHByZXNlcnZlCiAqIExlYWZsZXQgMS45LjQsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cHM6Ly9sZWFmbGV0anMuY29tCiAqIChjKSAyMDEwLTIwMjMgVmxhZGltaXIgQWdhZm9ua2luLCAoYykgMjAxMC0yMDExIENsb3VkTWFkZQogKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLGUpOmUoKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikubGVhZmxldD17fSl9KHRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwodCl7Zm9yKHZhciBlLGksbj0xLG89YXJndW1lbnRzLmxlbmd0aDtuPG87bisrKWZvcihlIGluIGk9YXJndW1lbnRzW25dKXRbZV09aVtlXTtyZXR1cm4gdH12YXIgUj1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0KXtyZXR1cm4gTi5wcm90b3R5cGU9dCxuZXcgTn07ZnVuY3Rpb24gTigpe31mdW5jdGlvbiBhKHQsZSl7dmFyIGksbj1BcnJheS5wcm90b3R5cGUuc2xpY2U7cmV0dXJuIHQuYmluZD90LmJpbmQuYXBwbHkodCxuLmNhbGwoYXJndW1lbnRzLDEpKTooaT1uLmNhbGwoYXJndW1lbnRzLDIpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxpLmxlbmd0aD9pLmNvbmNhdChuLmNhbGwoYXJndW1lbnRzKSk6YXJndW1lbnRzKX0pfXZhciBEPTA7ZnVuY3Rpb24gaCh0KXtyZXR1cm4iX2xlYWZsZXRfaWQiaW4gdHx8KHQuX2xlYWZsZXRfaWQ9KytEKSx0Ll9sZWFmbGV0X2lkfWZ1bmN0aW9uIGoodCxlLGkpe3ZhciBuLG8scz1mdW5jdGlvbigpe249ITEsbyYmKHIuYXBwbHkoaSxvKSxvPSExKX0scj1mdW5jdGlvbigpe24\/bz1hcmd1bWVudHM6KHQuYXBwbHkoaSxhcmd1bWVudHMpLHNldFRpbWVvdXQocyxlKSxuPSEwKX07cmV0dXJuIHJ9ZnVuY3Rpb24gSCh0LGUsaSl7dmFyIG49ZVsxXSxlPWVbMF0sbz1uLWU7cmV0dXJuIHQ9PT1uJiZpP3Q6KCh0LWUpJW8rbyklbytlfWZ1bmN0aW9uIHUoKXtyZXR1cm4hMX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuITE9PT1lP3Q6KGU9TWF0aC5wb3coMTAsdm9pZCAwPT09ZT82OmUpLE1hdGgucm91bmQodCplKS9lKX1mdW5jdGlvbiBXKHQpe3JldHVybiB0LnRyaW0\/dC50cmltKCk6dC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9ZnVuY3Rpb24gRih0KXtyZXR1cm4gVyh0KS5zcGxpdCgvXHMrLyl9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgaSBpbiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwib3B0aW9ucyIpfHwodC5vcHRpb25zPXQub3B0aW9ucz9SKHQub3B0aW9ucyk6e30pLGUpdC5vcHRpb25zW2ldPWVbaV07cmV0dXJuIHQub3B0aW9uc31mdW5jdGlvbiBVKHQsZSxpKXt2YXIgbixvPVtdO2ZvcihuIGluIHQpby5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChpP24udG9VcHBlckNhc2UoKTpuKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHRbbl0pKTtyZXR1cm4oZSYmLTEhPT1lLmluZGV4T2YoIj8iKT8iJiI6Ij8iKStvLmpvaW4oIiYiKX12YXIgVj0vXHsgKihbXHdfIC1dKykgKlx9L2c7ZnVuY3Rpb24gcSh0LGkpe3JldHVybiB0LnJlcGxhY2UoVixmdW5jdGlvbih0LGUpe2U9aVtlXTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHZhcmlhYmxlICIrdCk7cmV0dXJuIGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU\/ZShpKTplfSl9dmFyIGQ9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX07ZnVuY3Rpb24gRyh0LGUpe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfXZhciBLPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9IjtmdW5jdGlvbiBZKHQpe3JldHVybiB3aW5kb3dbIndlYmtpdCIrdF18fHdpbmRvd1sibW96Iit0XXx8d2luZG93WyJtcyIrdF19dmFyIFg9MDtmdW5jdGlvbiBKKHQpe3ZhciBlPStuZXcgRGF0ZSxpPU1hdGgubWF4KDAsMTYtKGUtWCkpO3JldHVybiBYPWUraSx3aW5kb3cuc2V0VGltZW91dCh0LGkpfXZhciAkPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fFkoIlJlcXVlc3RBbmltYXRpb25GcmFtZSIpfHxKLFE9d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHxZKCJDYW5jZWxBbmltYXRpb25GcmFtZSIpfHxZKCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKXx8ZnVuY3Rpb24odCl7d2luZG93LmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24geCh0LGUsaSl7aWYoIWl8fCQhPT1KKXJldHVybiAkLmNhbGwod2luZG93LGEodCxlKSk7dC5jYWxsKGUpfWZ1bmN0aW9uIHIodCl7dCYmUS5jYWxsKHdpbmRvdyx0KX12YXIgdHQ9e19fcHJvdG9fXzpudWxsLGV4dGVuZDpsLGNyZWF0ZTpSLGJpbmQ6YSxnZXQgbGFzdElkKCl7cmV0dXJuIER9LHN0YW1wOmgsdGhyb3R0bGU6aix3cmFwTnVtOkgsZmFsc2VGbjp1LGZvcm1hdE51bTppLHRyaW06VyxzcGxpdFdvcmRzOkYsc2V0T3B0aW9uczpjLGdldFBhcmFtU3RyaW5nOlUsdGVtcGxhdGU6cSxpc0FycmF5OmQsaW5kZXhPZjpHLGVtcHR5SW1hZ2VVcmw6SyxyZXF1ZXN0Rm46JCxjYW5jZWxGbjpRLHJlcXVlc3RBbmltRnJhbWU6eCxjYW5jZWxBbmltRnJhbWU6cn07ZnVuY3Rpb24gZXQoKXt9ZXQuZXh0ZW5kPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtjKHRoaXMpLHRoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmNhbGxJbml0SG9va3MoKX12YXIgaSxuPWUuX19zdXBlcl9fPXRoaXMucHJvdG90eXBlLG89UihuKTtmb3IoaSBpbihvLmNvbnN0cnVjdG9yPWUpLnByb3RvdHlwZT1vLHRoaXMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsaSkmJiJwcm90b3R5cGUiIT09aSYmIl9fc3VwZXJfXyIhPT1pJiYoZVtpXT10aGlzW2ldKTtpZih0LnN0YXRpY3MmJmwoZSx0LnN0YXRpY3MpLHQuaW5jbHVkZXMpe3ZhciBzPXQuaW5jbHVkZXM7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBMJiZMJiZMLk1peGluKXtzPWQocyk\/czpbc107Zm9yKHZhciByPTA7cjxzLmxlbmd0aDtyKyspc1tyXT09PUwuTWl4aW4uRXZlbnRzJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQgaW5jbHVkZSBvZiBMLk1peGluLkV2ZW50czogdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLCBwbGVhc2UgaW5oZXJpdCBmcm9tIEwuRXZlbnRlZCBpbnN0ZWFkLiIsKG5ldyBFcnJvcikuc3RhY2spfWwuYXBwbHkobnVsbCxbb10uY29uY2F0KHQuaW5jbHVkZXMpKX1yZXR1cm4gbChvLHQpLGRlbGV0ZSBvLnN0YXRpY3MsZGVsZXRlIG8uaW5jbHVkZXMsby5vcHRpb25zJiYoby5vcHRpb25zPW4ub3B0aW9ucz9SKG4ub3B0aW9ucyk6e30sbChvLm9wdGlvbnMsdC5vcHRpb25zKSksby5faW5pdEhvb2tzPVtdLG8uY2FsbEluaXRIb29rcz1mdW5jdGlvbigpe2lmKCF0aGlzLl9pbml0SG9va3NDYWxsZWQpe24uY2FsbEluaXRIb29rcyYmbi5jYWxsSW5pdEhvb2tzLmNhbGwodGhpcyksdGhpcy5faW5pdEhvb2tzQ2FsbGVkPSEwO2Zvcih2YXIgdD0wLGU9by5faW5pdEhvb2tzLmxlbmd0aDt0PGU7dCsrKW8uX2luaXRIb29rc1t0XS5jYWxsKHRoaXMpfX0sZX0sZXQuaW5jbHVkZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnByb3RvdHlwZS5vcHRpb25zO3JldHVybiBsKHRoaXMucHJvdG90eXBlLHQpLHQub3B0aW9ucyYmKHRoaXMucHJvdG90eXBlLm9wdGlvbnM9ZSx0aGlzLm1lcmdlT3B0aW9ucyh0Lm9wdGlvbnMpKSx0aGlzfSxldC5tZXJnZU9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGwodGhpcy5wcm90b3R5cGUub3B0aW9ucyx0KSx0aGlzfSxldC5hZGRJbml0SG9vaz1mdW5jdGlvbih0KXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7dGhpc1t0XS5hcHBseSh0aGlzLGUpfTtyZXR1cm4gdGhpcy5wcm90b3R5cGUuX2luaXRIb29rcz10aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzfHxbXSx0aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzLnB1c2goaSksdGhpc307dmFyIGU9e29uOmZ1bmN0aW9uKHQsZSxpKXtpZigib2JqZWN0Ij09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb24obix0W25dLGUpO2Vsc2UgZm9yKHZhciBvPTAscz0odD1GKHQpKS5sZW5ndGg7bzxzO28rKyl0aGlzLl9vbih0W29dLGUsaSk7cmV0dXJuIHRoaXN9LG9mZjpmdW5jdGlvbih0LGUsaSl7aWYoYXJndW1lbnRzLmxlbmd0aClpZigib2JqZWN0Ij09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb2ZmKG4sdFtuXSxlKTtlbHNle3Q9Rih0KTtmb3IodmFyIG89MT09PWFyZ3VtZW50cy5sZW5ndGgscz0wLHI9dC5sZW5ndGg7czxyO3MrKylvP3RoaXMuX29mZih0W3NdKTp0aGlzLl9vZmYodFtzXSxlLGkpfWVsc2UgZGVsZXRlIHRoaXMuX2V2ZW50cztyZXR1cm4gdGhpc30sX29uOmZ1bmN0aW9uKHQsZSxpLG4peyJmdW5jdGlvbiIhPXR5cGVvZiBlP2NvbnNvbGUud2Fybigid3JvbmcgbGlzdGVuZXIgdHlwZTogIit0eXBlb2YgZSk6ITE9PT10aGlzLl9saXN0ZW5zKHQsZSxpKSYmKGU9e2ZuOmUsY3R4Omk9aT09PXRoaXM\/dm9pZCAwOml9LG4mJihlLm9uY2U9ITApLHRoaXMuX2V2ZW50cz10aGlzLl9ldmVudHN8fHt9LHRoaXMuX2V2ZW50c1t0XT10aGlzLl9ldmVudHNbdF18fFtdLHRoaXMuX2V2ZW50c1t0XS5wdXNoKGUpKX0sX29mZjpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzO2lmKHRoaXMuX2V2ZW50cyYmKG49dGhpcy5fZXZlbnRzW3RdKSlpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7aWYodGhpcy5fZmlyaW5nQ291bnQpZm9yKG89MCxzPW4ubGVuZ3RoO288cztvKyspbltvXS5mbj11O2RlbGV0ZSB0aGlzLl9ldmVudHNbdF19ZWxzZSJmdW5jdGlvbiIhPXR5cGVvZiBlP2NvbnNvbGUud2Fybigid3JvbmcgbGlzdGVuZXIgdHlwZTogIit0eXBlb2YgZSk6ITEhPT0oZT10aGlzLl9saXN0ZW5zKHQsZSxpKSkmJihpPW5bZV0sdGhpcy5fZmlyaW5nQ291bnQmJihpLmZuPXUsdGhpcy5fZXZlbnRzW3RdPW49bi5zbGljZSgpKSxuLnNwbGljZShlLDEpKX0sZmlyZTpmdW5jdGlvbih0LGUsaSl7aWYodGhpcy5saXN0ZW5zKHQsaSkpe3ZhciBuPWwoe30sZSx7dHlwZTp0LHRhcmdldDp0aGlzLHNvdXJjZVRhcmdldDplJiZlLnNvdXJjZVRhcmdldHx8dGhpc30pO2lmKHRoaXMuX2V2ZW50cyl7dmFyIG89dGhpcy5fZXZlbnRzW3RdO2lmKG8pe3RoaXMuX2ZpcmluZ0NvdW50PXRoaXMuX2ZpcmluZ0NvdW50KzF8fDE7Zm9yKHZhciBzPTAscj1vLmxlbmd0aDtzPHI7cysrKXt2YXIgYT1vW3NdLGg9YS5mbjthLm9uY2UmJnRoaXMub2ZmKHQsaCxhLmN0eCksaC5jYWxsKGEuY3R4fHx0aGlzLG4pfXRoaXMuX2ZpcmluZ0NvdW50LS19fWkmJnRoaXMuX3Byb3BhZ2F0ZUV2ZW50KG4pfXJldHVybiB0aGlzfSxsaXN0ZW5zOmZ1bmN0aW9uKHQsZSxpLG4peyJzdHJpbmciIT10eXBlb2YgdCYmY29uc29sZS53YXJuKCcic3RyaW5nIiB0eXBlIGFyZ3VtZW50IGV4cGVjdGVkJyk7dmFyIG89ZSxzPSgiZnVuY3Rpb24iIT10eXBlb2YgZSYmKG49ISFlLGk9bz12b2lkIDApLHRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW3RdKTtpZihzJiZzLmxlbmd0aCYmITEhPT10aGlzLl9saXN0ZW5zKHQsbyxpKSlyZXR1cm4hMDtpZihuKWZvcih2YXIgciBpbiB0aGlzLl9ldmVudFBhcmVudHMpaWYodGhpcy5fZXZlbnRQYXJlbnRzW3JdLmxpc3RlbnModCxlLGksbikpcmV0dXJuITA7cmV0dXJuITF9LF9saXN0ZW5zOmZ1bmN0aW9uKHQsZSxpKXtpZih0aGlzLl9ldmVudHMpe3ZhciBuPXRoaXMuX2V2ZW50c1t0XXx8W107aWYoIWUpcmV0dXJuISFuLmxlbmd0aDtpPT09dGhpcyYmKGk9dm9pZCAwKTtmb3IodmFyIG89MCxzPW4ubGVuZ3RoO288cztvKyspaWYobltvXS5mbj09PWUmJm5bb10uY3R4PT09aSlyZXR1cm4gb31yZXR1cm4hMX0sb25jZTpmdW5jdGlvbih0LGUsaSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KWZvcih2YXIgbiBpbiB0KXRoaXMuX29uKG4sdFtuXSxlLCEwKTtlbHNlIGZvcih2YXIgbz0wLHM9KHQ9Rih0KSkubGVuZ3RoO288cztvKyspdGhpcy5fb24odFtvXSxlLGksITApO3JldHVybiB0aGlzfSxhZGRFdmVudFBhcmVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZlbnRQYXJlbnRzPXRoaXMuX2V2ZW50UGFyZW50c3x8e30sdGhpcy5fZXZlbnRQYXJlbnRzW2godCldPXQsdGhpc30scmVtb3ZlRXZlbnRQYXJlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2V2ZW50UGFyZW50cyYmZGVsZXRlIHRoaXMuX2V2ZW50UGFyZW50c1toKHQpXSx0aGlzfSxfcHJvcGFnYXRlRXZlbnQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2V2ZW50UGFyZW50cyl0aGlzLl9ldmVudFBhcmVudHNbZV0uZmlyZSh0LnR5cGUsbCh7bGF5ZXI6dC50YXJnZXQscHJvcGFnYXRlZEZyb206dC50YXJnZXR9LHQpLCEwKX19LGl0PShlLmFkZEV2ZW50TGlzdGVuZXI9ZS5vbixlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZS5jbGVhckFsbEV2ZW50TGlzdGVuZXJzPWUub2ZmLGUuYWRkT25lVGltZUV2ZW50TGlzdGVuZXI9ZS5vbmNlLGUuZmlyZUV2ZW50PWUuZmlyZSxlLmhhc0V2ZW50TGlzdGVuZXJzPWUubGlzdGVucyxldC5leHRlbmQoZSkpO2Z1bmN0aW9uIHAodCxlLGkpe3RoaXMueD1pP01hdGgucm91bmQodCk6dCx0aGlzLnk9aT9NYXRoLnJvdW5kKGUpOmV9dmFyIG50PU1hdGgudHJ1bmN8fGZ1bmN0aW9uKHQpe3JldHVybiAwPHQ\/TWF0aC5mbG9vcih0KTpNYXRoLmNlaWwodCl9O2Z1bmN0aW9uIG0odCxlLGkpe3JldHVybiB0IGluc3RhbmNlb2YgcD90OmQodCk\/bmV3IHAodFswXSx0WzFdKTpudWxsPT10P3Q6Im9iamVjdCI9PXR5cGVvZiB0JiYieCJpbiB0JiYieSJpbiB0P25ldyBwKHQueCx0LnkpOm5ldyBwKHQsZSxpKX1mdW5jdGlvbiBmKHQsZSl7aWYodClmb3IodmFyIGk9ZT9bdCxlXTp0LG49MCxvPWkubGVuZ3RoO248bztuKyspdGhpcy5leHRlbmQoaVtuXSl9ZnVuY3Rpb24gXyh0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2YgZj90Om5ldyBmKHQsZSl9ZnVuY3Rpb24gcyh0LGUpe2lmKHQpZm9yKHZhciBpPWU\/W3QsZV06dCxuPTAsbz1pLmxlbmd0aDtuPG87bisrKXRoaXMuZXh0ZW5kKGlbbl0pfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIHM\/dDpuZXcgcyh0LGUpfWZ1bmN0aW9uIHYodCxlLGkpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgTGF0TG5nIG9iamVjdDogKCIrdCsiLCAiK2UrIikiKTt0aGlzLmxhdD0rdCx0aGlzLmxuZz0rZSx2b2lkIDAhPT1pJiYodGhpcy5hbHQ9K2kpfWZ1bmN0aW9uIHcodCxlLGkpe3JldHVybiB0IGluc3RhbmNlb2Ygdj90OmQodCkmJiJvYmplY3QiIT10eXBlb2YgdFswXT8zPT09dC5sZW5ndGg\/bmV3IHYodFswXSx0WzFdLHRbMl0pOjI9PT10Lmxlbmd0aD9uZXcgdih0WzBdLHRbMV0pOm51bGw6bnVsbD09dD90OiJvYmplY3QiPT10eXBlb2YgdCYmImxhdCJpbiB0P25ldyB2KHQubGF0LCJsbmciaW4gdD90LmxuZzp0Lmxvbix0LmFsdCk6dm9pZCAwPT09ZT9udWxsOm5ldyB2KHQsZSxpKX1wLnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQobSh0KSl9LF9hZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1YnRyYWN0KG0odCkpfSxfc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXN9LGRpdmlkZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdmlkZUJ5KHQpfSxfZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dCx0aGlzLnkvPXQsdGhpc30sbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0aXBseUJ5KHQpfSxfbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxzY2FsZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcCh0aGlzLngqdC54LHRoaXMueSp0LnkpfSx1bnNjYWxlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKHRoaXMueC90LngsdGhpcy55L3QueSl9LHJvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm91bmQoKX0sX3JvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzfSxmbG9vcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX2Zsb29yKCl9LF9mbG9vcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpc30sY2VpbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX2NlaWwoKX0sX2NlaWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzfSx0cnVuYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3RydW5jKCl9LF90cnVuYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9bnQodGhpcy54KSx0aGlzLnk9bnQodGhpcy55KSx0aGlzfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKHQpe3ZhciBlPSh0PW0odCkpLngtdGhpcy54LHQ9dC55LXRoaXMueTtyZXR1cm4gTWF0aC5zcXJ0KGUqZSt0KnQpfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9bSh0KSkueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdD1tKHQpLE1hdGguYWJzKHQueCk8PU1hdGguYWJzKHRoaXMueCkmJk1hdGguYWJzKHQueSk8PU1hdGguYWJzKHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBvaW50KCIraSh0aGlzLngpKyIsICIraSh0aGlzLnkpKyIpIn19LGYucHJvdG90eXBlPXtleHRlbmQ6ZnVuY3Rpb24odCl7dmFyIGUsaTtpZih0KXtpZih0IGluc3RhbmNlb2YgcHx8Im51bWJlciI9PXR5cGVvZiB0WzBdfHwieCJpbiB0KWU9aT1tKHQpO2Vsc2UgaWYoZT0odD1fKHQpKS5taW4saT10Lm1heCwhZXx8IWkpcmV0dXJuIHRoaXM7dGhpcy5taW58fHRoaXMubWF4Pyh0aGlzLm1pbi54PU1hdGgubWluKGUueCx0aGlzLm1pbi54KSx0aGlzLm1heC54PU1hdGgubWF4KGkueCx0aGlzLm1heC54KSx0aGlzLm1pbi55PU1hdGgubWluKGUueSx0aGlzLm1pbi55KSx0aGlzLm1heC55PU1hdGgubWF4KGkueSx0aGlzLm1heC55KSk6KHRoaXMubWluPWUuY2xvbmUoKSx0aGlzLm1heD1pLmNsb25lKCkpfXJldHVybiB0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG0oKHRoaXMubWluLngrdGhpcy5tYXgueCkvMiwodGhpcy5taW4ueSt0aGlzLm1heC55KS8yLHQpfSxnZXRCb3R0b21MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5taW4ueCx0aGlzLm1heC55KX0sZ2V0VG9wUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLm1heC54LHRoaXMubWluLnkpfSxnZXRUb3BMZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWlufSxnZXRCb3R0b21SaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC5zdWJ0cmFjdCh0aGlzLm1pbil9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuKHQ9KCJudW1iZXIiPT10eXBlb2YgdFswXXx8dCBpbnN0YW5jZW9mIHA\/bTpfKSh0KSlpbnN0YW5jZW9mIGY\/KGU9dC5taW4saT10Lm1heCk6ZT1pPXQsZS54Pj10aGlzLm1pbi54JiZpLng8PXRoaXMubWF4LngmJmUueT49dGhpcy5taW4ueSYmaS55PD10aGlzLm1heC55fSxpbnRlcnNlY3RzOmZ1bmN0aW9uKHQpe3Q9Xyh0KTt2YXIgZT10aGlzLm1pbixpPXRoaXMubWF4LG49dC5taW4sdD10Lm1heCxvPXQueD49ZS54JiZuLng8PWkueCx0PXQueT49ZS55JiZuLnk8PWkueTtyZXR1cm4gbyYmdH0sb3ZlcmxhcHM6ZnVuY3Rpb24odCl7dD1fKHQpO3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj10Lm1pbix0PXQubWF4LG89dC54PmUueCYmbi54PGkueCx0PXQueT5lLnkmJm4ueTxpLnk7cmV0dXJuIG8mJnR9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLm1pbnx8IXRoaXMubWF4KX0scGFkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj1NYXRoLmFicyhlLngtaS54KSp0LHQ9TWF0aC5hYnMoZS55LWkueSkqdDtyZXR1cm4gXyhtKGUueC1uLGUueS10KSxtKGkueCtuLGkueSt0KSl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4hIXQmJih0PV8odCksdGhpcy5taW4uZXF1YWxzKHQuZ2V0VG9wTGVmdCgpKSYmdGhpcy5tYXguZXF1YWxzKHQuZ2V0Qm90dG9tUmlnaHQoKSkpfX0scy5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O2lmKHQgaW5zdGFuY2VvZiB2KWk9ZT10O2Vsc2V7aWYoISh0IGluc3RhbmNlb2YgcykpcmV0dXJuIHQ\/dGhpcy5leHRlbmQodyh0KXx8Zyh0KSk6dGhpcztpZihlPXQuX3NvdXRoV2VzdCxpPXQuX25vcnRoRWFzdCwhZXx8IWkpcmV0dXJuIHRoaXN9cmV0dXJuIG58fG8\/KG4ubGF0PU1hdGgubWluKGUubGF0LG4ubGF0KSxuLmxuZz1NYXRoLm1pbihlLmxuZyxuLmxuZyksby5sYXQ9TWF0aC5tYXgoaS5sYXQsby5sYXQpLG8ubG5nPU1hdGgubWF4KGkubG5nLG8ubG5nKSk6KHRoaXMuX3NvdXRoV2VzdD1uZXcgdihlLmxhdCxlLmxuZyksdGhpcy5fbm9ydGhFYXN0PW5ldyB2KGkubGF0LGkubG5nKSksdGhpc30scGFkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NvdXRoV2VzdCxpPXRoaXMuX25vcnRoRWFzdCxuPU1hdGguYWJzKGUubGF0LWkubGF0KSp0LHQ9TWF0aC5hYnMoZS5sbmctaS5sbmcpKnQ7cmV0dXJuIG5ldyBzKG5ldyB2KGUubGF0LW4sZS5sbmctdCksbmV3IHYoaS5sYXQrbixpLmxuZyt0KSl9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgdigodGhpcy5fc291dGhXZXN0LmxhdCt0aGlzLl9ub3J0aEVhc3QubGF0KS8yLCh0aGlzLl9zb3V0aFdlc3QubG5nK3RoaXMuX25vcnRoRWFzdC5sbmcpLzIpfSxnZXRTb3V0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0fSxnZXROb3J0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9ydGhFYXN0fSxnZXROb3J0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5nZXROb3J0aCgpLHRoaXMuZ2V0V2VzdCgpKX0sZ2V0U291dGhFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMuZ2V0U291dGgoKSx0aGlzLmdldEVhc3QoKSl9LGdldFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0LmxuZ30sZ2V0U291dGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0LmxhdH0sZ2V0RWFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3J0aEVhc3QubG5nfSxnZXROb3J0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3J0aEVhc3QubGF0fSxjb250YWluczpmdW5jdGlvbih0KXt0PSgibnVtYmVyIj09dHlwZW9mIHRbMF18fHQgaW5zdGFuY2VvZiB2fHwibGF0ImluIHQ\/dzpnKSh0KTt2YXIgZSxpLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O3JldHVybiB0IGluc3RhbmNlb2Ygcz8oZT10LmdldFNvdXRoV2VzdCgpLGk9dC5nZXROb3J0aEVhc3QoKSk6ZT1pPXQsZS5sYXQ+PW4ubGF0JiZpLmxhdDw9by5sYXQmJmUubG5nPj1uLmxuZyYmaS5sbmc8PW8ubG5nfSxpbnRlcnNlY3RzOmZ1bmN0aW9uKHQpe3Q9Zyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxvPXQubGF0Pj1lLmxhdCYmbi5sYXQ8PWkubGF0LHQ9dC5sbmc+PWUubG5nJiZuLmxuZzw9aS5sbmc7cmV0dXJuIG8mJnR9LG92ZXJsYXBzOmZ1bmN0aW9uKHQpe3Q9Zyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxvPXQubGF0PmUubGF0JiZuLmxhdDxpLmxhdCx0PXQubG5nPmUubG5nJiZuLmxuZzxpLmxuZztyZXR1cm4gbyYmdH0sdG9CQm94U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuZ2V0V2VzdCgpLHRoaXMuZ2V0U291dGgoKSx0aGlzLmdldEVhc3QoKSx0aGlzLmdldE5vcnRoKCldLmpvaW4oIiwiKX0sZXF1YWxzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuISF0JiYodD1nKHQpLHRoaXMuX3NvdXRoV2VzdC5lcXVhbHModC5nZXRTb3V0aFdlc3QoKSxlKSYmdGhpcy5fbm9ydGhFYXN0LmVxdWFscyh0LmdldE5vcnRoRWFzdCgpLGUpKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuX3NvdXRoV2VzdHx8IXRoaXMuX25vcnRoRWFzdCl9fTt2YXIgb3Q9e2xhdExuZ1RvUG9pbnQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMucHJvamVjdGlvbi5wcm9qZWN0KHQpLGU9dGhpcy5zY2FsZShlKTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1hdGlvbi5fdHJhbnNmb3JtKHQsZSl9LHBvaW50VG9MYXRMbmc6ZnVuY3Rpb24odCxlKXtlPXRoaXMuc2NhbGUoZSksdD10aGlzLnRyYW5zZm9ybWF0aW9uLnVudHJhbnNmb3JtKHQsZSk7cmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QodCl9LHByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi5wcm9qZWN0KHQpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QodCl9LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAyNTYqTWF0aC5wb3coMix0KX0sem9vbTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codC8yNTYpL01hdGguTE4yfSxnZXRQcm9qZWN0ZWRCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHRoaXMuaW5maW5pdGU\/bnVsbDooZT10aGlzLnByb2plY3Rpb24uYm91bmRzLHQ9dGhpcy5zY2FsZSh0KSxuZXcgZih0aGlzLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybShlLm1pbix0KSx0aGlzLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybShlLm1heCx0KSkpfSxpbmZpbml0ZTohKHYucHJvdG90eXBlPXtlcXVhbHM6ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQmJih0PXcodCksTWF0aC5tYXgoTWF0aC5hYnModGhpcy5sYXQtdC5sYXQpLE1hdGguYWJzKHRoaXMubG5nLXQubG5nKSk8PSh2b2lkIDA9PT1lPzFlLTk6ZSkpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4iTGF0TG5nKCIraSh0aGlzLmxhdCx0KSsiLCAiK2kodGhpcy5sbmcsdCkrIikifSxkaXN0YW5jZVRvOmZ1bmN0aW9uKHQpe3JldHVybiBzdC5kaXN0YW5jZSh0aGlzLHcodCkpfSx3cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHN0LndyYXBMYXRMbmcodGhpcyl9LHRvQm91bmRzOmZ1bmN0aW9uKHQpe3ZhciB0PTE4MCp0LzQwMDc1MDE3LGU9dC9NYXRoLmNvcyhNYXRoLlBJLzE4MCp0aGlzLmxhdCk7cmV0dXJuIGcoW3RoaXMubGF0LXQsdGhpcy5sbmctZV0sW3RoaXMubGF0K3QsdGhpcy5sbmcrZV0pfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdih0aGlzLmxhdCx0aGlzLmxuZyx0aGlzLmFsdCl9fSksd3JhcExhdExuZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBMbmc\/SCh0LmxuZyx0aGlzLndyYXBMbmcsITApOnQubG5nO3JldHVybiBuZXcgdih0aGlzLndyYXBMYXQ\/SCh0LmxhdCx0aGlzLndyYXBMYXQsITApOnQubGF0LGUsdC5hbHQpfSx3cmFwTGF0TG5nQm91bmRzOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Q2VudGVyKCksaT10aGlzLndyYXBMYXRMbmcoZSksbj1lLmxhdC1pLmxhdCxlPWUubG5nLWkubG5nO3JldHVybiAwPT1uJiYwPT1lP3Q6KGk9dC5nZXRTb3V0aFdlc3QoKSx0PXQuZ2V0Tm9ydGhFYXN0KCksbmV3IHMobmV3IHYoaS5sYXQtbixpLmxuZy1lKSxuZXcgdih0LmxhdC1uLHQubG5nLWUpKSl9fSxzdD1sKHt9LG90LHt3cmFwTG5nOlstMTgwLDE4MF0sUjo2MzcxZTMsZGlzdGFuY2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLlBJLzE4MCxuPXQubGF0Kmksbz1lLmxhdCppLHM9TWF0aC5zaW4oKGUubGF0LXQubGF0KSppLzIpLGU9TWF0aC5zaW4oKGUubG5nLXQubG5nKSppLzIpLHQ9cypzK01hdGguY29zKG4pKk1hdGguY29zKG8pKmUqZSxpPTIqTWF0aC5hdGFuMihNYXRoLnNxcnQodCksTWF0aC5zcXJ0KDEtdCkpO3JldHVybiB0aGlzLlIqaX19KSxydD02Mzc4MTM3LHJ0PXtSOnJ0LE1BWF9MQVRJVFVERTo4NS4wNTExMjg3Nzk4LHByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5QSS8xODAsaT10aGlzLk1BWF9MQVRJVFVERSxpPU1hdGgubWF4KE1hdGgubWluKGksdC5sYXQpLC1pKSxpPU1hdGguc2luKGkqZSk7cmV0dXJuIG5ldyBwKHRoaXMuUip0LmxuZyplLHRoaXMuUipNYXRoLmxvZygoMStpKS8oMS1pKSkvMil9LHVucHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT0xODAvTWF0aC5QSTtyZXR1cm4gbmV3IHYoKDIqTWF0aC5hdGFuKE1hdGguZXhwKHQueS90aGlzLlIpKS1NYXRoLlBJLzIpKmUsdC54KmUvdGhpcy5SKX0sYm91bmRzOm5ldyBmKFstKHJ0PXJ0Kk1hdGguUEkpLC1ydF0sW3J0LHJ0XSl9O2Z1bmN0aW9uIGF0KHQsZSxpLG4pe2QodCk\/KHRoaXMuX2E9dFswXSx0aGlzLl9iPXRbMV0sdGhpcy5fYz10WzJdLHRoaXMuX2Q9dFszXSk6KHRoaXMuX2E9dCx0aGlzLl9iPWUsdGhpcy5fYz1pLHRoaXMuX2Q9bil9ZnVuY3Rpb24gaHQodCxlLGksbil7cmV0dXJuIG5ldyBhdCh0LGUsaSxuKX1hdC5wcm90b3R5cGU9e3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm0odC5jbG9uZSgpLGUpfSxfdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueD0oZT1lfHwxKSoodGhpcy5fYSp0LngrdGhpcy5fYiksdC55PWUqKHRoaXMuX2MqdC55K3RoaXMuX2QpLHR9LHVudHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBwKCh0LngvKGU9ZXx8MSktdGhpcy5fYikvdGhpcy5fYSwodC55L2UtdGhpcy5fZCkvdGhpcy5fYyl9fTt2YXIgbHQ9bCh7fSxzdCx7Y29kZToiRVBTRzozODU3Iixwcm9qZWN0aW9uOnJ0LHRyYW5zZm9ybWF0aW9uOmh0KGx0PS41LyhNYXRoLlBJKnJ0LlIpLC41LC1sdCwuNSl9KSx1dD1sKHt9LGx0LHtjb2RlOiJFUFNHOjkwMDkxMyJ9KTtmdW5jdGlvbiBjdCh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdCl9ZnVuY3Rpb24gZHQodCxlKXtmb3IodmFyIGksbixvLHMscj0iIixhPTAsaD10Lmxlbmd0aDthPGg7YSsrKXtmb3IoaT0wLG49KG89dFthXSkubGVuZ3RoO2k8bjtpKyspcis9KGk\/IkwiOiJNIikrKHM9b1tpXSkueCsiICIrcy55O3IrPWU\/Yi5zdmc\/InoiOiJ4IjoiIn1yZXR1cm4gcnx8Ik0wIDAifXZhciBfdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUscHQ9IkFjdGl2ZVhPYmplY3QiaW4gd2luZG93LG10PXB0JiYhZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcixuPSJtc0xhdW5jaFVyaSJpbiBuYXZpZ2F0b3ImJiEoImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCksZnQ9eSgid2Via2l0IiksZ3Q9eSgiYW5kcm9pZCIpLHZ0PXkoImFuZHJvaWQgMiIpfHx5KCJhbmRyb2lkIDMiKSx5dD1wYXJzZUludCgvV2ViS2l0XC8oWzAtOV0rKXwkLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpWzFdLDEwKSx5dD1ndCYmeSgiR29vZ2xlIikmJnl0PDUzNyYmISgiQXVkaW9Ob2RlImluIHdpbmRvdykseHQ9ISF3aW5kb3cub3BlcmEsd3Q9IW4mJnkoImNocm9tZSIpLGJ0PXkoImdlY2tvIikmJiFmdCYmIXh0JiYhcHQsUHQ9IXd0JiZ5KCJzYWZhcmkiKSxMdD15KCJwaGFudG9tIiksbz0iT1RyYW5zaXRpb24iaW4gX3QsVHQ9MD09PW5hdmlnYXRvci5wbGF0Zm9ybS5pbmRleE9mKCJXaW4iKSxNdD1wdCYmInRyYW5zaXRpb24iaW4gX3QsenQ9IldlYktpdENTU01hdHJpeCJpbiB3aW5kb3cmJiJtMTEiaW4gbmV3IHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgmJiF2dCxfdD0iTW96UGVyc3BlY3RpdmUiaW4gX3QsQ3Q9IXdpbmRvdy5MX0RJU0FCTEVfM0QmJihNdHx8enR8fF90KSYmIW8mJiFMdCxadD0idW5kZWZpbmVkIiE9dHlwZW9mIG9yaWVudGF0aW9ufHx5KCJtb2JpbGUiKSxTdD1adCYmZnQsRXQ9WnQmJnp0LGt0PSF3aW5kb3cuUG9pbnRlckV2ZW50JiZ3aW5kb3cuTVNQb2ludGVyRXZlbnQsT3Q9ISghd2luZG93LlBvaW50ZXJFdmVudCYmIWt0KSxBdD0ib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8ISF3aW5kb3cuVG91Y2hFdmVudCxCdD0hd2luZG93LkxfTk9fVE9VQ0gmJihBdHx8T3QpLEl0PVp0JiZ4dCxSdD1adCYmYnQsTnQ9MTwod2luZG93LmRldmljZVBpeGVsUmF0aW98fHdpbmRvdy5zY3JlZW4uZGV2aWNlWERQSS93aW5kb3cuc2NyZWVuLmxvZ2ljYWxYRFBJKSxEdD1mdW5jdGlvbigpe3ZhciB0PSExO3RyeXt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXt0PSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0UGFzc2l2ZUV2ZW50U3VwcG9ydCIsdSxlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdFBhc3NpdmVFdmVudFN1cHBvcnQiLHUsZSl9Y2F0Y2godCl7fXJldHVybiB0fSgpLGp0PSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCxIdD0hKCFkb2N1bWVudC5jcmVhdGVFbGVtZW50TlN8fCFjdCgic3ZnIikuY3JlYXRlU1ZHUmVjdCksV3Q9ISFIdCYmKChXdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPSI8c3ZnLz4iLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI9PT0oV3QuZmlyc3RDaGlsZCYmV3QuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkpKTtmdW5jdGlvbiB5KHQpe3JldHVybiAwPD1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0KX12YXIgYj17aWU6cHQsaWVsdDk6bXQsZWRnZTpuLHdlYmtpdDpmdCxhbmRyb2lkOmd0LGFuZHJvaWQyMzp2dCxhbmRyb2lkU3RvY2s6eXQsb3BlcmE6eHQsY2hyb21lOnd0LGdlY2tvOmJ0LHNhZmFyaTpQdCxwaGFudG9tOkx0LG9wZXJhMTI6byx3aW46VHQsaWUzZDpNdCx3ZWJraXQzZDp6dCxnZWNrbzNkOl90LGFueTNkOkN0LG1vYmlsZTpadCxtb2JpbGVXZWJraXQ6U3QsbW9iaWxlV2Via2l0M2Q6RXQsbXNQb2ludGVyOmt0LHBvaW50ZXI6T3QsdG91Y2g6QnQsdG91Y2hOYXRpdmU6QXQsbW9iaWxlT3BlcmE6SXQsbW9iaWxlR2Vja286UnQscmV0aW5hOk50LHBhc3NpdmVFdmVudHM6RHQsY2FudmFzOmp0LHN2ZzpIdCx2bWw6IUh0JiZmdW5jdGlvbigpe3RyeXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPSh0LmlubmVySFRNTD0nPHY6c2hhcGUgYWRqPSIxIi8+Jyx0LmZpcnN0Q2hpbGQpO3JldHVybiBlLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjVk1MKSIsZSYmIm9iamVjdCI9PXR5cGVvZiBlLmFkan1jYXRjaCh0KXtyZXR1cm4hMX19KCksaW5saW5lU3ZnOld0LG1hYzowPT09bmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoIk1hYyIpLGxpbnV4OjA9PT1uYXZpZ2F0b3IucGxhdGZvcm0uaW5kZXhPZigiTGludXgiKX0sRnQ9Yi5tc1BvaW50ZXI\/Ik1TUG9pbnRlckRvd24iOiJwb2ludGVyZG93biIsVXQ9Yi5tc1BvaW50ZXI\/Ik1TUG9pbnRlck1vdmUiOiJwb2ludGVybW92ZSIsVnQ9Yi5tc1BvaW50ZXI\/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIixxdD1iLm1zUG9pbnRlcj8iTVNQb2ludGVyQ2FuY2VsIjoicG9pbnRlcmNhbmNlbCIsR3Q9e3RvdWNoc3RhcnQ6RnQsdG91Y2htb3ZlOlV0LHRvdWNoZW5kOlZ0LHRvdWNoY2FuY2VsOnF0fSxLdD17dG91Y2hzdGFydDpmdW5jdGlvbih0LGUpe2UuTVNQT0lOVEVSX1RZUEVfVE9VQ0gmJmUucG9pbnRlclR5cGU9PT1lLk1TUE9JTlRFUl9UWVBFX1RPVUNIJiZPKGUpO2VlKHQsZSl9LHRvdWNobW92ZTplZSx0b3VjaGVuZDplZSx0b3VjaGNhbmNlbDplZX0sWXQ9e30sWHQ9ITE7ZnVuY3Rpb24gSnQodCxlLGkpe3JldHVybiJ0b3VjaHN0YXJ0IiE9PWV8fFh0fHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihGdCwkdCwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihVdCxRdCwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihWdCx0ZSwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihxdCx0ZSwhMCksWHQ9ITApLEt0W2VdPyhpPUt0W2VdLmJpbmQodGhpcyxpKSx0LmFkZEV2ZW50TGlzdGVuZXIoR3RbZV0saSwhMSksaSk6KGNvbnNvbGUud2Fybigid3JvbmcgZXZlbnQgc3BlY2lmaWVkOiIsZSksdSl9ZnVuY3Rpb24gJHQodCl7WXRbdC5wb2ludGVySWRdPXR9ZnVuY3Rpb24gUXQodCl7WXRbdC5wb2ludGVySWRdJiYoWXRbdC5wb2ludGVySWRdPXQpfWZ1bmN0aW9uIHRlKHQpe2RlbGV0ZSBZdFt0LnBvaW50ZXJJZF19ZnVuY3Rpb24gZWUodCxlKXtpZihlLnBvaW50ZXJUeXBlIT09KGUuTVNQT0lOVEVSX1RZUEVfTU9VU0V8fCJtb3VzZSIpKXtmb3IodmFyIGkgaW4gZS50b3VjaGVzPVtdLFl0KWUudG91Y2hlcy5wdXNoKFl0W2ldKTtlLmNoYW5nZWRUb3VjaGVzPVtlXSx0KGUpfX12YXIgaWU9MjAwO2Z1bmN0aW9uIG5lKHQsaSl7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsaSk7dmFyIG4sbz0wO2Z1bmN0aW9uIGUodCl7dmFyIGU7MSE9PXQuZGV0YWlsP249dC5kZXRhaWw6Im1vdXNlIj09PXQucG9pbnRlclR5cGV8fHQuc291cmNlQ2FwYWJpbGl0aWVzJiYhdC5zb3VyY2VDYXBhYmlsaXRpZXMuZmlyZXNUb3VjaEV2ZW50c3x8KChlPU5lKHQpKS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTExhYmVsRWxlbWVudCYmdC5hdHRyaWJ1dGVzLmZvcn0pJiYhZS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudHx8dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50fSl8fCgoZT1EYXRlLm5vdygpKS1vPD1pZT8yPT09KytuJiZpKGZ1bmN0aW9uKHQpe3ZhciBlLGksbj17fTtmb3IoaSBpbiB0KWU9dFtpXSxuW2ldPWUmJmUuYmluZD9lLmJpbmQodCk6ZTtyZXR1cm4odD1uKS50eXBlPSJkYmxjbGljayIsbi5kZXRhaWw9MixuLmlzVHJ1c3RlZD0hMSxuLl9zaW11bGF0ZWQ9ITAsbn0odCkpOm49MSxvPWUpKX1yZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSkse2RibGNsaWNrOmksc2ltRGJsY2xpY2s6ZX19dmFyIG9lLHNlLHJlLGFlLGhlLGxlLHVlPXdlKFsidHJhbnNmb3JtIiwid2Via2l0VHJhbnNmb3JtIiwiT1RyYW5zZm9ybSIsIk1velRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIl0pLGNlPXdlKFsid2Via2l0VHJhbnNpdGlvbiIsInRyYW5zaXRpb24iLCJPVHJhbnNpdGlvbiIsIk1velRyYW5zaXRpb24iLCJtc1RyYW5zaXRpb24iXSksZGU9IndlYmtpdFRyYW5zaXRpb24iPT09Y2V8fCJPVHJhbnNpdGlvbiI9PT1jZT9jZSsiRW5kIjoidHJhbnNpdGlvbmVuZCI7ZnVuY3Rpb24gX2UodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOnR9ZnVuY3Rpb24gcGUodCxlKXt2YXIgaT10LnN0eWxlW2VdfHx0LmN1cnJlbnRTdHlsZSYmdC5jdXJyZW50U3R5bGVbZV07cmV0dXJuImF1dG8iPT09KGk9aSYmImF1dG8iIT09aXx8IWRvY3VtZW50LmRlZmF1bHRWaWV3P2k6KHQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpKT90W2VdOm51bGwpP251bGw6aX1mdW5jdGlvbiBQKHQsZSxpKXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIHQuY2xhc3NOYW1lPWV8fCIiLGkmJmkuYXBwZW5kQ2hpbGQodCksdH1mdW5jdGlvbiBUKHQpe3ZhciBlPXQucGFyZW50Tm9kZTtlJiZlLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIG1lKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gZmUodCl7dmFyIGU9dC5wYXJlbnROb2RlO2UmJmUubGFzdENoaWxkIT09dCYmZS5hcHBlbmRDaGlsZCh0KX1mdW5jdGlvbiBnZSh0KXt2YXIgZT10LnBhcmVudE5vZGU7ZSYmZS5maXJzdENoaWxkIT09dCYmZS5pbnNlcnRCZWZvcmUodCxlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIHZlKHQsZSl7cmV0dXJuIHZvaWQgMCE9PXQuY2xhc3NMaXN0P3QuY2xhc3NMaXN0LmNvbnRhaW5zKGUpOjA8KHQ9eGUodCkpLmxlbmd0aCYmbmV3IFJlZ0V4cCgiKF58XFxzKSIrZSsiKFxcc3wkKSIpLnRlc3QodCl9ZnVuY3Rpb24gTSh0LGUpe3ZhciBpO2lmKHZvaWQgMCE9PXQuY2xhc3NMaXN0KWZvcih2YXIgbj1GKGUpLG89MCxzPW4ubGVuZ3RoO288cztvKyspdC5jbGFzc0xpc3QuYWRkKG5bb10pO2Vsc2UgdmUodCxlKXx8eWUodCwoKGk9eGUodCkpP2krIiAiOiIiKStlKX1mdW5jdGlvbiB6KHQsZSl7dm9pZCAwIT09dC5jbGFzc0xpc3Q\/dC5jbGFzc0xpc3QucmVtb3ZlKGUpOnllKHQsVygoIiAiK3hlKHQpKyIgIikucmVwbGFjZSgiICIrZSsiICIsIiAiKSkpfWZ1bmN0aW9uIHllKHQsZSl7dm9pZCAwPT09dC5jbGFzc05hbWUuYmFzZVZhbD90LmNsYXNzTmFtZT1lOnQuY2xhc3NOYW1lLmJhc2VWYWw9ZX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4gdm9pZCAwPT09KHQ9dC5jb3JyZXNwb25kaW5nRWxlbWVudD90LmNvcnJlc3BvbmRpbmdFbGVtZW50OnQpLmNsYXNzTmFtZS5iYXNlVmFsP3QuY2xhc3NOYW1lOnQuY2xhc3NOYW1lLmJhc2VWYWx9ZnVuY3Rpb24gQyh0LGUpe2lmKCJvcGFjaXR5ImluIHQuc3R5bGUpdC5zdHlsZS5vcGFjaXR5PWU7ZWxzZSBpZigiZmlsdGVyImluIHQuc3R5bGUpe3ZhciBpPSExLG49IkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhIjt0cnl7aT10LmZpbHRlcnMuaXRlbShuKX1jYXRjaCh0KXtpZigxPT09ZSlyZXR1cm59ZT1NYXRoLnJvdW5kKDEwMCplKSxpPyhpLkVuYWJsZWQ9MTAwIT09ZSxpLk9wYWNpdHk9ZSk6dC5zdHlsZS5maWx0ZXIrPSIgcHJvZ2lkOiIrbisiKG9wYWNpdHk9IitlKyIpIn19ZnVuY3Rpb24gd2UodCl7Zm9yKHZhciBlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXWluIGUpcmV0dXJuIHRbaV07cmV0dXJuITF9ZnVuY3Rpb24gYmUodCxlLGkpe2U9ZXx8bmV3IHAoMCwwKTt0LnN0eWxlW3VlXT0oYi5pZTNkPyJ0cmFuc2xhdGUoIitlLngrInB4LCIrZS55KyJweCkiOiJ0cmFuc2xhdGUzZCgiK2UueCsicHgsIitlLnkrInB4LDApIikrKGk\/IiBzY2FsZSgiK2krIikiOiIiKX1mdW5jdGlvbiBaKHQsZSl7dC5fbGVhZmxldF9wb3M9ZSxiLmFueTNkP2JlKHQsZSk6KHQuc3R5bGUubGVmdD1lLngrInB4Iix0LnN0eWxlLnRvcD1lLnkrInB4Iil9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIHQuX2xlYWZsZXRfcG9zfHxuZXcgcCgwLDApfWZ1bmN0aW9uIExlKCl7Uyh3aW5kb3csImRyYWdzdGFydCIsTyl9ZnVuY3Rpb24gVGUoKXtrKHdpbmRvdywiZHJhZ3N0YXJ0IixPKX1mdW5jdGlvbiBNZSh0KXtmb3IoOy0xPT09dC50YWJJbmRleDspdD10LnBhcmVudE5vZGU7dC5zdHlsZSYmKHplKCksbGU9KGhlPXQpLnN0eWxlLm91dGxpbmVTdHlsZSx0LnN0eWxlLm91dGxpbmVTdHlsZT0ibm9uZSIsUyh3aW5kb3csImtleWRvd24iLHplKSl9ZnVuY3Rpb24gemUoKXtoZSYmKGhlLnN0eWxlLm91dGxpbmVTdHlsZT1sZSxsZT1oZT12b2lkIDAsayh3aW5kb3csImtleWRvd24iLHplKSl9ZnVuY3Rpb24gQ2UodCl7Zm9yKDshKCh0PXQucGFyZW50Tm9kZSkub2Zmc2V0V2lkdGgmJnQub2Zmc2V0SGVpZ2h0fHx0PT09ZG9jdW1lbnQuYm9keSk7KTtyZXR1cm4gdH1mdW5jdGlvbiBaZSh0KXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4OmUud2lkdGgvdC5vZmZzZXRXaWR0aHx8MSx5OmUuaGVpZ2h0L3Qub2Zmc2V0SGVpZ2h0fHwxLGJvdW5kaW5nQ2xpZW50UmVjdDplfX1hZT0ib25zZWxlY3RzdGFydCJpbiBkb2N1bWVudD8ocmU9ZnVuY3Rpb24oKXtTKHdpbmRvdywic2VsZWN0c3RhcnQiLE8pfSxmdW5jdGlvbigpe2sod2luZG93LCJzZWxlY3RzdGFydCIsTyl9KTooc2U9d2UoWyJ1c2VyU2VsZWN0IiwiV2Via2l0VXNlclNlbGVjdCIsIk9Vc2VyU2VsZWN0IiwiTW96VXNlclNlbGVjdCIsIm1zVXNlclNlbGVjdCJdKSxyZT1mdW5jdGlvbigpe3ZhciB0O3NlJiYodD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsb2U9dFtzZV0sdFtzZV09Im5vbmUiKX0sZnVuY3Rpb24oKXtzZSYmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZVtzZV09b2Usb2U9dm9pZCAwKX0pO3B0PXtfX3Byb3RvX186bnVsbCxUUkFOU0ZPUk06dWUsVFJBTlNJVElPTjpjZSxUUkFOU0lUSU9OX0VORDpkZSxnZXQ6X2UsZ2V0U3R5bGU6cGUsY3JlYXRlOlAscmVtb3ZlOlQsZW1wdHk6bWUsdG9Gcm9udDpmZSx0b0JhY2s6Z2UsaGFzQ2xhc3M6dmUsYWRkQ2xhc3M6TSxyZW1vdmVDbGFzczp6LHNldENsYXNzOnllLGdldENsYXNzOnhlLHNldE9wYWNpdHk6Qyx0ZXN0UHJvcDp3ZSxzZXRUcmFuc2Zvcm06YmUsc2V0UG9zaXRpb246WixnZXRQb3NpdGlvbjpQZSxnZXQgZGlzYWJsZVRleHRTZWxlY3Rpb24oKXtyZXR1cm4gcmV9LGdldCBlbmFibGVUZXh0U2VsZWN0aW9uKCl7cmV0dXJuIGFlfSxkaXNhYmxlSW1hZ2VEcmFnOkxlLGVuYWJsZUltYWdlRHJhZzpUZSxwcmV2ZW50T3V0bGluZTpNZSxyZXN0b3JlT3V0bGluZTp6ZSxnZXRTaXplZFBhcmVudE5vZGU6Q2UsZ2V0U2NhbGU6WmV9O2Z1bmN0aW9uIFModCxlLGksbil7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKWtlKHQsbyxlW29dLGkpO2Vsc2UgZm9yKHZhciBzPTAscj0oZT1GKGUpKS5sZW5ndGg7czxyO3MrKylrZSh0LGVbc10saSxuKTtyZXR1cm4gdGhpc312YXIgRT0iX2xlYWZsZXRfZXZlbnRzIjtmdW5jdGlvbiBrKHQsZSxpLG4pe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKVNlKHQpLGRlbGV0ZSB0W0VdO2Vsc2UgaWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKU9lKHQsbyxlW29dLGkpO2Vsc2UgaWYoZT1GKGUpLDI9PT1hcmd1bWVudHMubGVuZ3RoKVNlKHQsZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1HKGUsdCl9KTtlbHNlIGZvcih2YXIgcz0wLHI9ZS5sZW5ndGg7czxyO3MrKylPZSh0LGVbc10saSxuKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBTZSh0LGUpe2Zvcih2YXIgaSBpbiB0W0VdKXt2YXIgbj1pLnNwbGl0KC9cZC8pWzBdO2UmJiFlKG4pfHxPZSh0LG4sbnVsbCxudWxsLGkpfX12YXIgRWU9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHdoZWVsOiEoIm9ud2hlZWwiaW4gd2luZG93KSYmIm1vdXNld2hlZWwifTtmdW5jdGlvbiBrZShlLHQsaSxuKXt2YXIgbyxzLHI9dCtoKGkpKyhuPyJfIitoKG4pOiIiKTtlW0VdJiZlW0VdW3JdfHwocz1vPWZ1bmN0aW9uKHQpe3JldHVybiBpLmNhbGwobnx8ZSx0fHx3aW5kb3cuZXZlbnQpfSwhYi50b3VjaE5hdGl2ZSYmYi5wb2ludGVyJiYwPT09dC5pbmRleE9mKCJ0b3VjaCIpP289SnQoZSx0LG8pOmIudG91Y2gmJiJkYmxjbGljayI9PT10P289bmUoZSxvKToiYWRkRXZlbnRMaXN0ZW5lciJpbiBlPyJ0b3VjaHN0YXJ0Ij09PXR8fCJ0b3VjaG1vdmUiPT09dHx8IndoZWVsIj09PXR8fCJtb3VzZXdoZWVsIj09PXQ\/ZS5hZGRFdmVudExpc3RlbmVyKEVlW3RdfHx0LG8sISFiLnBhc3NpdmVFdmVudHMmJntwYXNzaXZlOiExfSk6Im1vdXNlZW50ZXIiPT09dHx8Im1vdXNlbGVhdmUiPT09dD9lLmFkZEV2ZW50TGlzdGVuZXIoRWVbdF0sbz1mdW5jdGlvbih0KXt0PXR8fHdpbmRvdy5ldmVudCxXZShlLHQpJiZzKHQpfSwhMSk6ZS5hZGRFdmVudExpc3RlbmVyKHQscywhMSk6ZS5hdHRhY2hFdmVudCgib24iK3QsbyksZVtFXT1lW0VdfHx7fSxlW0VdW3JdPW8pfWZ1bmN0aW9uIE9lKHQsZSxpLG4sbyl7bz1vfHxlK2goaSkrKG4\/Il8iK2gobik6IiIpO3ZhciBzLHIsaT10W0VdJiZ0W0VdW29dO2kmJighYi50b3VjaE5hdGl2ZSYmYi5wb2ludGVyJiYwPT09ZS5pbmRleE9mKCJ0b3VjaCIpPyhuPXQscj1pLEd0W3M9ZV0\/bi5yZW1vdmVFdmVudExpc3RlbmVyKEd0W3NdLHIsITEpOmNvbnNvbGUud2Fybigid3JvbmcgZXZlbnQgc3BlY2lmaWVkOiIscykpOmIudG91Y2gmJiJkYmxjbGljayI9PT1lPyhuPWksKHI9dCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLG4uZGJsY2xpY2spLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLG4uc2ltRGJsY2xpY2spKToicmVtb3ZlRXZlbnRMaXN0ZW5lciJpbiB0P3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihFZVtlXXx8ZSxpLCExKTp0LmRldGFjaEV2ZW50KCJvbiIrZSxpKSx0W0VdW29dPW51bGwpfWZ1bmN0aW9uIEFlKHQpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbj90LnN0b3BQcm9wYWdhdGlvbigpOnQub3JpZ2luYWxFdmVudD90Lm9yaWdpbmFsRXZlbnQuX3N0b3BwZWQ9ITA6dC5jYW5jZWxCdWJibGU9ITAsdGhpc31mdW5jdGlvbiBCZSh0KXtyZXR1cm4ga2UodCwid2hlZWwiLEFlKSx0aGlzfWZ1bmN0aW9uIEllKHQpe3JldHVybiBTKHQsIm1vdXNlZG93biB0b3VjaHN0YXJ0IGRibGNsaWNrIGNvbnRleHRtZW51IixBZSksdC5fbGVhZmxldF9kaXNhYmxlX2NsaWNrPSEwLHRoaXN9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdD90LnByZXZlbnREZWZhdWx0KCk6dC5yZXR1cm5WYWx1ZT0hMSx0aGlzfWZ1bmN0aW9uIFJlKHQpe3JldHVybiBPKHQpLEFlKHQpLHRoaXN9ZnVuY3Rpb24gTmUodCl7aWYodC5jb21wb3NlZFBhdGgpcmV0dXJuIHQuY29tcG9zZWRQYXRoKCk7Zm9yKHZhciBlPVtdLGk9dC50YXJnZXQ7aTspZS5wdXNoKGkpLGk9aS5wYXJlbnROb2RlO3JldHVybiBlfWZ1bmN0aW9uIERlKHQsZSl7dmFyIGksbjtyZXR1cm4gZT8obj0oaT1aZShlKSkuYm91bmRpbmdDbGllbnRSZWN0LG5ldyBwKCh0LmNsaWVudFgtbi5sZWZ0KS9pLngtZS5jbGllbnRMZWZ0LCh0LmNsaWVudFktbi50b3ApL2kueS1lLmNsaWVudFRvcCkpOm5ldyBwKHQuY2xpZW50WCx0LmNsaWVudFkpfXZhciBqZT1iLmxpbnV4JiZiLmNocm9tZT93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzpiLm1hYz8zKndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOjA8d2luZG93LmRldmljZVBpeGVsUmF0aW8\/Mip3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzoxO2Z1bmN0aW9uIEhlKHQpe3JldHVybiBiLmVkZ2U\/dC53aGVlbERlbHRhWS8yOnQuZGVsdGFZJiYwPT09dC5kZWx0YU1vZGU\/LXQuZGVsdGFZL2plOnQuZGVsdGFZJiYxPT09dC5kZWx0YU1vZGU\/MjAqLXQuZGVsdGFZOnQuZGVsdGFZJiYyPT09dC5kZWx0YU1vZGU\/NjAqLXQuZGVsdGFZOnQuZGVsdGFYfHx0LmRlbHRhWj8wOnQud2hlZWxEZWx0YT8odC53aGVlbERlbHRhWXx8dC53aGVlbERlbHRhKS8yOnQuZGV0YWlsJiZNYXRoLmFicyh0LmRldGFpbCk8MzI3NjU\/MjAqLXQuZGV0YWlsOnQuZGV0YWlsP3QuZGV0YWlsLy0zMjc2NSo2MDowfWZ1bmN0aW9uIFdlKHQsZSl7dmFyIGk9ZS5yZWxhdGVkVGFyZ2V0O2lmKCFpKXJldHVybiEwO3RyeXtmb3IoO2kmJmkhPT10OylpPWkucGFyZW50Tm9kZX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4gaSE9PXR9dmFyIG10PXtfX3Byb3RvX186bnVsbCxvbjpTLG9mZjprLHN0b3BQcm9wYWdhdGlvbjpBZSxkaXNhYmxlU2Nyb2xsUHJvcGFnYXRpb246QmUsZGlzYWJsZUNsaWNrUHJvcGFnYXRpb246SWUscHJldmVudERlZmF1bHQ6TyxzdG9wOlJlLGdldFByb3BhZ2F0aW9uUGF0aDpOZSxnZXRNb3VzZVBvc2l0aW9uOkRlLGdldFdoZWVsRGVsdGE6SGUsaXNFeHRlcm5hbFRhcmdldDpXZSxhZGRMaXN0ZW5lcjpTLHJlbW92ZUxpc3RlbmVyOmt9LEZlPWl0LmV4dGVuZCh7cnVuOmZ1bmN0aW9uKHQsZSxpLG4pe3RoaXMuc3RvcCgpLHRoaXMuX2VsPXQsdGhpcy5faW5Qcm9ncmVzcz0hMCx0aGlzLl9kdXJhdGlvbj1pfHwuMjUsdGhpcy5fZWFzZU91dFBvd2VyPTEvTWF0aC5tYXgobnx8LjUsLjIpLHRoaXMuX3N0YXJ0UG9zPVBlKHQpLHRoaXMuX29mZnNldD1lLnN1YnRyYWN0KHRoaXMuX3N0YXJ0UG9zKSx0aGlzLl9zdGFydFRpbWU9K25ldyBEYXRlLHRoaXMuZmlyZSgic3RhcnQiKSx0aGlzLl9hbmltYXRlKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9pblByb2dyZXNzJiYodGhpcy5fc3RlcCghMCksdGhpcy5fY29tcGxldGUoKSl9LF9hbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbUlkPXgodGhpcy5fYW5pbWF0ZSx0aGlzKSx0aGlzLl9zdGVwKCl9LF9zdGVwOmZ1bmN0aW9uKHQpe3ZhciBlPStuZXcgRGF0ZS10aGlzLl9zdGFydFRpbWUsaT0xZTMqdGhpcy5fZHVyYXRpb247ZTxpP3RoaXMuX3J1bkZyYW1lKHRoaXMuX2Vhc2VPdXQoZS9pKSx0KToodGhpcy5fcnVuRnJhbWUoMSksdGhpcy5fY29tcGxldGUoKSl9LF9ydW5GcmFtZTpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fc3RhcnRQb3MuYWRkKHRoaXMuX29mZnNldC5tdWx0aXBseUJ5KHQpKTtlJiZ0Ll9yb3VuZCgpLFoodGhpcy5fZWwsdCksdGhpcy5maXJlKCJzdGVwIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe3IodGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZSgiZW5kIil9LF9lYXNlT3V0OmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCx0aGlzLl9lYXNlT3V0UG93ZXIpfX0pLEE9aXQuZXh0ZW5kKHtvcHRpb25zOntjcnM6bHQsY2VudGVyOnZvaWQgMCx6b29tOnZvaWQgMCxtaW5ab29tOnZvaWQgMCxtYXhab29tOnZvaWQgMCxsYXllcnM6W10sbWF4Qm91bmRzOnZvaWQgMCxyZW5kZXJlcjp2b2lkIDAsem9vbUFuaW1hdGlvbjohMCx6b29tQW5pbWF0aW9uVGhyZXNob2xkOjQsZmFkZUFuaW1hdGlvbjohMCxtYXJrZXJab29tQW5pbWF0aW9uOiEwLHRyYW5zZm9ybTNETGltaXQ6ODM4ODYwOCx6b29tU25hcDoxLHpvb21EZWx0YToxLHRyYWNrUmVzaXplOiEwfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1jKHRoaXMsZSksdGhpcy5faGFuZGxlcnM9W10sdGhpcy5fbGF5ZXJzPXt9LHRoaXMuX3pvb21Cb3VuZExheWVycz17fSx0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9pbml0Q29udGFpbmVyKHQpLHRoaXMuX2luaXRMYXlvdXQoKSx0aGlzLl9vblJlc2l6ZT1hKHRoaXMuX29uUmVzaXplLHRoaXMpLHRoaXMuX2luaXRFdmVudHMoKSxlLm1heEJvdW5kcyYmdGhpcy5zZXRNYXhCb3VuZHMoZS5tYXhCb3VuZHMpLHZvaWQgMCE9PWUuem9vbSYmKHRoaXMuX3pvb209dGhpcy5fbGltaXRab29tKGUuem9vbSkpLGUuY2VudGVyJiZ2b2lkIDAhPT1lLnpvb20mJnRoaXMuc2V0Vmlldyh3KGUuY2VudGVyKSxlLnpvb20se3Jlc2V0OiEwfSksdGhpcy5jYWxsSW5pdEhvb2tzKCksdGhpcy5fem9vbUFuaW1hdGVkPWNlJiZiLmFueTNkJiYhYi5tb2JpbGVPcGVyYSYmdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24sdGhpcy5fem9vbUFuaW1hdGVkJiYodGhpcy5fY3JlYXRlQW5pbVByb3h5KCksUyh0aGlzLl9wcm94eSxkZSx0aGlzLl9jYXRjaFRyYW5zaXRpb25FbmQsdGhpcykpLHRoaXMuX2FkZExheWVycyh0aGlzLm9wdGlvbnMubGF5ZXJzKX0sc2V0VmlldzpmdW5jdGlvbih0LGUsaSl7aWYoKGU9dm9pZCAwPT09ZT90aGlzLl96b29tOnRoaXMuX2xpbWl0Wm9vbShlKSx0PXRoaXMuX2xpbWl0Q2VudGVyKHcodCksZSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzKSxpPWl8fHt9LHRoaXMuX3N0b3AoKSx0aGlzLl9sb2FkZWQmJiFpLnJlc2V0JiYhMCE9PWkpJiYodm9pZCAwIT09aS5hbmltYXRlJiYoaS56b29tPWwoe2FuaW1hdGU6aS5hbmltYXRlfSxpLnpvb20pLGkucGFuPWwoe2FuaW1hdGU6aS5hbmltYXRlLGR1cmF0aW9uOmkuZHVyYXRpb259LGkucGFuKSksdGhpcy5fem9vbSE9PWU\/dGhpcy5fdHJ5QW5pbWF0ZWRab29tJiZ0aGlzLl90cnlBbmltYXRlZFpvb20odCxlLGkuem9vbSk6dGhpcy5fdHJ5QW5pbWF0ZWRQYW4odCxpLnBhbikpKXJldHVybiBjbGVhclRpbWVvdXQodGhpcy5fc2l6ZVRpbWVyKSx0aGlzO3JldHVybiB0aGlzLl9yZXNldFZpZXcodCxlLGkucGFuJiZpLnBhbi5ub01vdmVTdGFydCksdGhpc30sc2V0Wm9vbTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ\/dGhpcy5zZXRWaWV3KHRoaXMuZ2V0Q2VudGVyKCksdCx7em9vbTplfSk6KHRoaXMuX3pvb209dCx0aGlzKX0sem9vbUluOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9dHx8KGIuYW55M2Q\/dGhpcy5vcHRpb25zLnpvb21EZWx0YToxKSx0aGlzLnNldFpvb20odGhpcy5fem9vbSt0LGUpfSx6b29tT3V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9dHx8KGIuYW55M2Q\/dGhpcy5vcHRpb25zLnpvb21EZWx0YToxKSx0aGlzLnNldFpvb20odGhpcy5fem9vbS10LGUpfSxzZXRab29tQXJvdW5kOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLmdldFpvb21TY2FsZShlKSxvPXRoaXMuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLHQ9KHQgaW5zdGFuY2VvZiBwP3Q6dGhpcy5sYXRMbmdUb0NvbnRhaW5lclBvaW50KHQpKS5zdWJ0cmFjdChvKS5tdWx0aXBseUJ5KDEtMS9uKSxuPXRoaXMuY29udGFpbmVyUG9pbnRUb0xhdExuZyhvLmFkZCh0KSk7cmV0dXJuIHRoaXMuc2V0VmlldyhuLGUse3pvb206aX0pfSxfZ2V0Qm91bmRzQ2VudGVyWm9vbTpmdW5jdGlvbih0LGUpe2U9ZXx8e30sdD10LmdldEJvdW5kcz90LmdldEJvdW5kcygpOmcodCk7dmFyIGk9bShlLnBhZGRpbmdUb3BMZWZ0fHxlLnBhZGRpbmd8fFswLDBdKSxuPW0oZS5wYWRkaW5nQm90dG9tUmlnaHR8fGUucGFkZGluZ3x8WzAsMF0pLG89dGhpcy5nZXRCb3VuZHNab29tKHQsITEsaS5hZGQobikpO3JldHVybihvPSJudW1iZXIiPT10eXBlb2YgZS5tYXhab29tP01hdGgubWluKGUubWF4Wm9vbSxvKTpvKT09PTEvMD97Y2VudGVyOnQuZ2V0Q2VudGVyKCksem9vbTpvfTooZT1uLnN1YnRyYWN0KGkpLmRpdmlkZUJ5KDIpLG49dGhpcy5wcm9qZWN0KHQuZ2V0U291dGhXZXN0KCksbyksaT10aGlzLnByb2plY3QodC5nZXROb3J0aEVhc3QoKSxvKSx7Y2VudGVyOnRoaXMudW5wcm9qZWN0KG4uYWRkKGkpLmRpdmlkZUJ5KDIpLmFkZChlKSxvKSx6b29tOm99KX0sZml0Qm91bmRzOmZ1bmN0aW9uKHQsZSl7aWYoKHQ9Zyh0KSkuaXNWYWxpZCgpKXJldHVybiB0PXRoaXMuX2dldEJvdW5kc0NlbnRlclpvb20odCxlKSx0aGlzLnNldFZpZXcodC5jZW50ZXIsdC56b29tLGUpO3Rocm93IG5ldyBFcnJvcigiQm91bmRzIGFyZSBub3QgdmFsaWQuIil9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjplfSl9LHBhbkJ5OmZ1bmN0aW9uKHQsZSl7dmFyIGk7cmV0dXJuIGU9ZXx8e30sKHQ9bSh0KS5yb3VuZCgpKS54fHx0Lnk\/KCEwPT09ZS5hbmltYXRlfHx0aGlzLmdldFNpemUoKS5jb250YWlucyh0KT8odGhpcy5fcGFuQW5pbXx8KHRoaXMuX3BhbkFuaW09bmV3IEZlLHRoaXMuX3BhbkFuaW0ub24oe3N0ZXA6dGhpcy5fb25QYW5UcmFuc2l0aW9uU3RlcCxlbmQ6dGhpcy5fb25QYW5UcmFuc2l0aW9uRW5kfSx0aGlzKSksZS5ub01vdmVTdGFydHx8dGhpcy5maXJlKCJtb3Zlc3RhcnQiKSwhMSE9PWUuYW5pbWF0ZT8oTSh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksaT10aGlzLl9nZXRNYXBQYW5lUG9zKCkuc3VidHJhY3QodCkucm91bmQoKSx0aGlzLl9wYW5BbmltLnJ1bih0aGlzLl9tYXBQYW5lLGksZS5kdXJhdGlvbnx8LjI1LGUuZWFzZUxpbmVhcml0eSkpOih0aGlzLl9yYXdQYW5CeSh0KSx0aGlzLmZpcmUoIm1vdmUiKS5maXJlKCJtb3ZlZW5kIikpKTp0aGlzLl9yZXNldFZpZXcodGhpcy51bnByb2plY3QodGhpcy5wcm9qZWN0KHRoaXMuZ2V0Q2VudGVyKCkpLmFkZCh0KSksdGhpcy5nZXRab29tKCkpLHRoaXMpOnRoaXMuZmlyZSgibW92ZWVuZCIpfSxmbHlUbzpmdW5jdGlvbihuLG8sdCl7aWYoITE9PT0odD10fHx7fSkuYW5pbWF0ZXx8IWIuYW55M2QpcmV0dXJuIHRoaXMuc2V0VmlldyhuLG8sdCk7dGhpcy5fc3RvcCgpO3ZhciBzPXRoaXMucHJvamVjdCh0aGlzLmdldENlbnRlcigpKSxyPXRoaXMucHJvamVjdChuKSxlPXRoaXMuZ2V0U2l6ZSgpLGE9dGhpcy5fem9vbSxoPShuPXcobiksbz12b2lkIDA9PT1vP2E6byxNYXRoLm1heChlLngsZS55KSksaT1oKnRoaXMuZ2V0Wm9vbVNjYWxlKGEsbyksbD1yLmRpc3RhbmNlVG8ocyl8fDEsdT0xLjQyLGM9dSp1O2Z1bmN0aW9uIGQodCl7dD0oaSppLWgqaCsodD8tMToxKSpjKmMqbCpsKS8oMioodD9pOmgpKmMqbCksdD1NYXRoLnNxcnQodCp0KzEpLXQ7cmV0dXJuIHQ8MWUtOT8tMTg6TWF0aC5sb2codCl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4oTWF0aC5leHAodCktTWF0aC5leHAoLXQpKS8yfWZ1bmN0aW9uIHAodCl7cmV0dXJuKE1hdGguZXhwKHQpK01hdGguZXhwKC10KSkvMn12YXIgbT1kKDApO2Z1bmN0aW9uIGYodCl7cmV0dXJuIGgqKHAobSkqKF8odD1tK3UqdCkvcCh0KSktXyhtKSkvY312YXIgZz1EYXRlLm5vdygpLHY9KGQoMSktbSkvdSx5PXQuZHVyYXRpb24\/MWUzKnQuZHVyYXRpb246MWUzKnYqLjg7cmV0dXJuIHRoaXMuX21vdmVTdGFydCghMCx0Lm5vTW92ZVN0YXJ0KSxmdW5jdGlvbiB0KCl7dmFyIGU9KERhdGUubm93KCktZykveSxpPSgxLU1hdGgucG93KDEtZSwxLjUpKSp2O2U8PTE\/KHRoaXMuX2ZseVRvRnJhbWU9eCh0LHRoaXMpLHRoaXMuX21vdmUodGhpcy51bnByb2plY3Qocy5hZGQoci5zdWJ0cmFjdChzKS5tdWx0aXBseUJ5KGYoaSkvbCkpLGEpLHRoaXMuZ2V0U2NhbGVab29tKGgvKGU9aSxoKihwKG0pL3AobSt1KmUpKSksYSkse2ZseVRvOiEwfSkpOnRoaXMuX21vdmUobixvKS5fbW92ZUVuZCghMCl9LmNhbGwodGhpcyksdGhpc30sZmx5VG9Cb3VuZHM6ZnVuY3Rpb24odCxlKXt0PXRoaXMuX2dldEJvdW5kc0NlbnRlclpvb20odCxlKTtyZXR1cm4gdGhpcy5mbHlUbyh0LmNlbnRlcix0Lnpvb20sZSl9LHNldE1heEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdD1nKHQpLHRoaXMubGlzdGVucygibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKSYmdGhpcy5vZmYoIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcyksdC5pc1ZhbGlkKCk\/KHRoaXMub3B0aW9ucy5tYXhCb3VuZHM9dCx0aGlzLl9sb2FkZWQmJnRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcygpLHRoaXMub24oIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcykpOih0aGlzLm9wdGlvbnMubWF4Qm91bmRzPW51bGwsdGhpcyl9LHNldE1pblpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLm1pblpvb207cmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tPXQsdGhpcy5fbG9hZGVkJiZlIT09dCYmKHRoaXMuZmlyZSgiem9vbWxldmVsc2NoYW5nZSIpLHRoaXMuZ2V0Wm9vbSgpPHRoaXMub3B0aW9ucy5taW5ab29tKT90aGlzLnNldFpvb20odCk6dGhpc30sc2V0TWF4Wm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209dCx0aGlzLl9sb2FkZWQmJmUhPT10JiYodGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIiksdGhpcy5nZXRab29tKCk+dGhpcy5vcHRpb25zLm1heFpvb20pP3RoaXMuc2V0Wm9vbSh0KTp0aGlzfSxwYW5JbnNpZGVCb3VuZHM6ZnVuY3Rpb24odCxlKXt0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITA7dmFyIGk9dGhpcy5nZXRDZW50ZXIoKSx0PXRoaXMuX2xpbWl0Q2VudGVyKGksdGhpcy5fem9vbSxnKHQpKTtyZXR1cm4gaS5lcXVhbHModCl8fHRoaXMucGFuVG8odCxlKSx0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITEsdGhpc30scGFuSW5zaWRlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bSgoZT1lfHx7fSkucGFkZGluZ1RvcExlZnR8fGUucGFkZGluZ3x8WzAsMF0pLG49bShlLnBhZGRpbmdCb3R0b21SaWdodHx8ZS5wYWRkaW5nfHxbMCwwXSksbz10aGlzLnByb2plY3QodGhpcy5nZXRDZW50ZXIoKSksdD10aGlzLnByb2plY3QodCkscz10aGlzLmdldFBpeGVsQm91bmRzKCksaT1fKFtzLm1pbi5hZGQoaSkscy5tYXguc3VidHJhY3QobildKSxzPWkuZ2V0U2l6ZSgpO3JldHVybiBpLmNvbnRhaW5zKHQpfHwodGhpcy5fZW5mb3JjaW5nQm91bmRzPSEwLG49dC5zdWJ0cmFjdChpLmdldENlbnRlcigpKSxpPWkuZXh0ZW5kKHQpLmdldFNpemUoKS5zdWJ0cmFjdChzKSxvLngrPW4ueDwwPy1pLng6aS54LG8ueSs9bi55PDA\/LWkueTppLnksdGhpcy5wYW5Ubyh0aGlzLnVucHJvamVjdChvKSxlKSx0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITEpLHRoaXN9LGludmFsaWRhdGVTaXplOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9sb2FkZWQpcmV0dXJuIHRoaXM7dD1sKHthbmltYXRlOiExLHBhbjohMH0sITA9PT10P3thbmltYXRlOiEwfTp0KTt2YXIgZT10aGlzLmdldFNpemUoKSxpPSh0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9sYXN0Q2VudGVyPW51bGwsdGhpcy5nZXRTaXplKCkpLG49ZS5kaXZpZGVCeSgyKS5yb3VuZCgpLG89aS5kaXZpZGVCeSgyKS5yb3VuZCgpLG49bi5zdWJ0cmFjdChvKTtyZXR1cm4gbi54fHxuLnk\/KHQuYW5pbWF0ZSYmdC5wYW4\/dGhpcy5wYW5CeShuKToodC5wYW4mJnRoaXMuX3Jhd1BhbkJ5KG4pLHRoaXMuZmlyZSgibW92ZSIpLHQuZGVib3VuY2VNb3ZlZW5kPyhjbGVhclRpbWVvdXQodGhpcy5fc2l6ZVRpbWVyKSx0aGlzLl9zaXplVGltZXI9c2V0VGltZW91dChhKHRoaXMuZmlyZSx0aGlzLCJtb3ZlZW5kIiksMjAwKSk6dGhpcy5maXJlKCJtb3ZlZW5kIikpLHRoaXMuZmlyZSgicmVzaXplIix7b2xkU2l6ZTplLG5ld1NpemU6aX0pKTp0aGlzfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0Wm9vbSh0aGlzLl9saW1pdFpvb20odGhpcy5fem9vbSkpLHRoaXMub3B0aW9ucy56b29tU25hcHx8dGhpcy5maXJlKCJ2aWV3cmVzZXQiKSx0aGlzLl9zdG9wKCl9LGxvY2F0ZTpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiB0PXRoaXMuX2xvY2F0ZU9wdGlvbnM9bCh7dGltZW91dDoxZTQsd2F0Y2g6ITF9LHQpLCJnZW9sb2NhdGlvbiJpbiBuYXZpZ2F0b3I\/KGU9YSh0aGlzLl9oYW5kbGVHZW9sb2NhdGlvblJlc3BvbnNlLHRoaXMpLGk9YSh0aGlzLl9oYW5kbGVHZW9sb2NhdGlvbkVycm9yLHRoaXMpLHQud2F0Y2g\/dGhpcy5fbG9jYXRpb25XYXRjaElkPW5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGUsaSx0KTpuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGUsaSx0KSk6dGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcih7Y29kZTowLG1lc3NhZ2U6Ikdlb2xvY2F0aW9uIG5vdCBzdXBwb3J0ZWQuIn0pLHRoaXN9LHN0b3BMb2NhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCYmbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5fbG9jYXRpb25XYXRjaElkKSx0aGlzLl9sb2NhdGVPcHRpb25zJiYodGhpcy5fbG9jYXRlT3B0aW9ucy5zZXRWaWV3PSExKSx0aGlzfSxfaGFuZGxlR2VvbG9jYXRpb25FcnJvcjpmdW5jdGlvbih0KXt2YXIgZTt0aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQmJihlPXQuY29kZSx0PXQubWVzc2FnZXx8KDE9PT1lPyJwZXJtaXNzaW9uIGRlbmllZCI6Mj09PWU\/InBvc2l0aW9uIHVuYXZhaWxhYmxlIjoidGltZW91dCIpLHRoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0VmlldyYmIXRoaXMuX2xvYWRlZCYmdGhpcy5maXRXb3JsZCgpLHRoaXMuZmlyZSgibG9jYXRpb25lcnJvciIse2NvZGU6ZSxtZXNzYWdlOiJHZW9sb2NhdGlvbiBlcnJvcjogIit0KyIuIn0pKX0sX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2U6ZnVuY3Rpb24odCl7aWYodGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkKXt2YXIgZSxpLG49bmV3IHYodC5jb29yZHMubGF0aXR1ZGUsdC5jb29yZHMubG9uZ2l0dWRlKSxvPW4udG9Cb3VuZHMoMip0LmNvb3Jkcy5hY2N1cmFjeSkscz10aGlzLl9sb2NhdGVPcHRpb25zLHI9KHMuc2V0VmlldyYmKGU9dGhpcy5nZXRCb3VuZHNab29tKG8pLHRoaXMuc2V0VmlldyhuLHMubWF4Wm9vbT9NYXRoLm1pbihlLHMubWF4Wm9vbSk6ZSkpLHtsYXRsbmc6bixib3VuZHM6byx0aW1lc3RhbXA6dC50aW1lc3RhbXB9KTtmb3IoaSBpbiB0LmNvb3JkcykibnVtYmVyIj09dHlwZW9mIHQuY29vcmRzW2ldJiYocltpXT10LmNvb3Jkc1tpXSk7dGhpcy5maXJlKCJsb2NhdGlvbmZvdW5kIixyKX19LGFkZEhhbmRsZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSYmKGU9dGhpc1t0XT1uZXcgZSh0aGlzKSx0aGlzLl9oYW5kbGVycy5wdXNoKGUpLHRoaXMub3B0aW9uc1t0XSYmZS5lbmFibGUoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7aWYodGhpcy5faW5pdEV2ZW50cyghMCksdGhpcy5vcHRpb25zLm1heEJvdW5kcyYmdGhpcy5vZmYoIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcyksdGhpcy5fY29udGFpbmVySWQhPT10aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQpdGhyb3cgbmV3IEVycm9yKCJNYXAgY29udGFpbmVyIGlzIGJlaW5nIHJldXNlZCBieSBhbm90aGVyIGluc3RhbmNlIik7dHJ5e2RlbGV0ZSB0aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQsZGVsZXRlIHRoaXMuX2NvbnRhaW5lcklkfWNhdGNoKHQpe3RoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZD12b2lkIDAsdGhpcy5fY29udGFpbmVySWQ9dm9pZCAwfWZvcih2YXIgdCBpbiB2b2lkIDAhPT10aGlzLl9sb2NhdGlvbldhdGNoSWQmJnRoaXMuc3RvcExvY2F0ZSgpLHRoaXMuX3N0b3AoKSxUKHRoaXMuX21hcFBhbmUpLHRoaXMuX2NsZWFyQ29udHJvbFBvcyYmdGhpcy5fY2xlYXJDb250cm9sUG9zKCksdGhpcy5fcmVzaXplUmVxdWVzdCYmKHIodGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1udWxsKSx0aGlzLl9jbGVhckhhbmRsZXJzKCksdGhpcy5fbG9hZGVkJiZ0aGlzLmZpcmUoInVubG9hZCIpLHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0ucmVtb3ZlKCk7Zm9yKHQgaW4gdGhpcy5fcGFuZXMpVCh0aGlzLl9wYW5lc1t0XSk7cmV0dXJuIHRoaXMuX2xheWVycz1bXSx0aGlzLl9wYW5lcz1bXSxkZWxldGUgdGhpcy5fbWFwUGFuZSxkZWxldGUgdGhpcy5fcmVuZGVyZXIsdGhpc30sY3JlYXRlUGFuZTpmdW5jdGlvbih0LGUpe2U9UCgiZGl2IiwibGVhZmxldC1wYW5lIisodD8iIGxlYWZsZXQtIit0LnJlcGxhY2UoIlBhbmUiLCIiKSsiLXBhbmUiOiIiKSxlfHx0aGlzLl9tYXBQYW5lKTtyZXR1cm4gdCYmKHRoaXMuX3BhbmVzW3RdPWUpLGV9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0lmTG9hZGVkKCksdGhpcy5fbGFzdENlbnRlciYmIXRoaXMuX21vdmVkKCk\/dGhpcy5fbGFzdENlbnRlci5jbG9uZSgpOnRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LGdldFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fem9vbX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQaXhlbEJvdW5kcygpO3JldHVybiBuZXcgcyh0aGlzLnVucHJvamVjdCh0LmdldEJvdHRvbUxlZnQoKSksdGhpcy51bnByb2plY3QodC5nZXRUb3BSaWdodCgpKSl9LGdldE1pblpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zLm1pblpvb20\/dGhpcy5fbGF5ZXJzTWluWm9vbXx8MDp0aGlzLm9wdGlvbnMubWluWm9vbX0sZ2V0TWF4Wm9vbTpmdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzLm9wdGlvbnMubWF4Wm9vbT92b2lkIDA9PT10aGlzLl9sYXllcnNNYXhab29tPzEvMDp0aGlzLl9sYXllcnNNYXhab29tOnRoaXMub3B0aW9ucy5tYXhab29tfSxnZXRCb3VuZHNab29tOmZ1bmN0aW9uKHQsZSxpKXt0PWcodCksaT1tKGl8fFswLDBdKTt2YXIgbj10aGlzLmdldFpvb20oKXx8MCxvPXRoaXMuZ2V0TWluWm9vbSgpLHM9dGhpcy5nZXRNYXhab29tKCkscj10LmdldE5vcnRoV2VzdCgpLHQ9dC5nZXRTb3V0aEVhc3QoKSxpPXRoaXMuZ2V0U2l6ZSgpLnN1YnRyYWN0KGkpLHQ9Xyh0aGlzLnByb2plY3QodCxuKSx0aGlzLnByb2plY3QocixuKSkuZ2V0U2l6ZSgpLHI9Yi5hbnkzZD90aGlzLm9wdGlvbnMuem9vbVNuYXA6MSxhPWkueC90LngsaT1pLnkvdC55LHQ9ZT9NYXRoLm1heChhLGkpOk1hdGgubWluKGEsaSksbj10aGlzLmdldFNjYWxlWm9vbSh0LG4pO3JldHVybiByJiYobj1NYXRoLnJvdW5kKG4vKHIvMTAwKSkqKHIvMTAwKSxuPWU\/TWF0aC5jZWlsKG4vcikqcjpNYXRoLmZsb29yKG4vcikqciksTWF0aC5tYXgobyxNYXRoLm1pbihzLG4pKX0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplJiYhdGhpcy5fc2l6ZUNoYW5nZWR8fCh0aGlzLl9zaXplPW5ldyBwKHRoaXMuX2NvbnRhaW5lci5jbGllbnRXaWR0aHx8MCx0aGlzLl9jb250YWluZXIuY2xpZW50SGVpZ2h0fHwwKSx0aGlzLl9zaXplQ2hhbmdlZD0hMSksdGhpcy5fc2l6ZS5jbG9uZSgpfSxnZXRQaXhlbEJvdW5kczpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fZ2V0VG9wTGVmdFBvaW50KHQsZSk7cmV0dXJuIG5ldyBmKHQsdC5hZGQodGhpcy5nZXRTaXplKCkpKX0sZ2V0UGl4ZWxPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX3BpeGVsT3JpZ2lufSxnZXRQaXhlbFdvcmxkQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmdldFByb2plY3RlZEJvdW5kcyh2b2lkIDA9PT10P3RoaXMuZ2V0Wm9vbSgpOnQpfSxnZXRQYW5lOmZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90aGlzLl9wYW5lc1t0XTp0fSxnZXRQYW5lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYW5lc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sZ2V0Wm9vbVNjYWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gZT12b2lkIDA9PT1lP3RoaXMuX3pvb206ZSxpLnNjYWxlKHQpL2kuc2NhbGUoZSl9LGdldFNjYWxlWm9vbTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5jcnMsdD0oZT12b2lkIDA9PT1lP3RoaXMuX3pvb206ZSxpLnpvb20odCppLnNjYWxlKGUpKSk7cmV0dXJuIGlzTmFOKHQpPzEvMDp0fSxwcm9qZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9dm9pZCAwPT09ZT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KHcodCksZSl9LHVucHJvamVjdDpmdW5jdGlvbih0LGUpe3JldHVybiBlPXZvaWQgMD09PWU\/dGhpcy5fem9vbTplLHRoaXMub3B0aW9ucy5jcnMucG9pbnRUb0xhdExuZyhtKHQpLGUpfSxsYXllclBvaW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7dD1tKHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdCh0KX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2plY3Qodyh0KSkuX3JvdW5kKCkuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LHdyYXBMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5jcnMud3JhcExhdExuZyh3KHQpKX0sd3JhcExhdExuZ0JvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmNycy53cmFwTGF0TG5nQm91bmRzKGcodCkpfSxkaXN0YW5jZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmRpc3RhbmNlKHcodCksdyhlKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtKHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtKHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3Q9dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChtKHQpKTtyZXR1cm4gdGhpcy5sYXllclBvaW50VG9MYXRMbmcodCl9LGxhdExuZ1RvQ29udGFpbmVyUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQodGhpcy5sYXRMbmdUb0xheWVyUG9pbnQodyh0KSkpfSxtb3VzZUV2ZW50VG9Db250YWluZXJQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gRGUodCx0aGlzLl9jb250YWluZXIpfSxtb3VzZUV2ZW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCkpfSxtb3VzZUV2ZW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fY29udGFpbmVyPV9lKHQpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBub3QgZm91bmQuIik7aWYodC5fbGVhZmxldF9pZCl0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTtTKHQsInNjcm9sbCIsdGhpcy5fb25TY3JvbGwsdGhpcyksdGhpcy5fY29udGFpbmVySWQ9aCh0KX0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIsZT0odGhpcy5fZmFkZUFuaW1hdGVkPXRoaXMub3B0aW9ucy5mYWRlQW5pbWF0aW9uJiZiLmFueTNkLE0odCwibGVhZmxldC1jb250YWluZXIiKyhiLnRvdWNoPyIgbGVhZmxldC10b3VjaCI6IiIpKyhiLnJldGluYT8iIGxlYWZsZXQtcmV0aW5hIjoiIikrKGIuaWVsdDk\/IiBsZWFmbGV0LW9sZGllIjoiIikrKGIuc2FmYXJpPyIgbGVhZmxldC1zYWZhcmkiOiIiKSsodGhpcy5fZmFkZUFuaW1hdGVkPyIgbGVhZmxldC1mYWRlLWFuaW0iOiIiKSkscGUodCwicG9zaXRpb24iKSk7ImFic29sdXRlIiE9PWUmJiJyZWxhdGl2ZSIhPT1lJiYiZml4ZWQiIT09ZSYmInN0aWNreSIhPT1lJiYodC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSx0aGlzLl9pbml0UGFuZXMoKSx0aGlzLl9pbml0Q29udHJvbFBvcyYmdGhpcy5faW5pdENvbnRyb2xQb3MoKX0sX2luaXRQYW5lczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhbmVzPXt9O3RoaXMuX3BhbmVSZW5kZXJlcnM9e30sdGhpcy5fbWFwUGFuZT10aGlzLmNyZWF0ZVBhbmUoIm1hcFBhbmUiLHRoaXMuX2NvbnRhaW5lciksWih0aGlzLl9tYXBQYW5lLG5ldyBwKDAsMCkpLHRoaXMuY3JlYXRlUGFuZSgidGlsZVBhbmUiKSx0aGlzLmNyZWF0ZVBhbmUoIm92ZXJsYXlQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJzaGFkb3dQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJtYXJrZXJQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJ0b29sdGlwUGFuZSIpLHRoaXMuY3JlYXRlUGFuZSgicG9wdXBQYW5lIiksdGhpcy5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb258fChNKHQubWFya2VyUGFuZSwibGVhZmxldC16b29tLWhpZGUiKSxNKHQuc2hhZG93UGFuZSwibGVhZmxldC16b29tLWhpZGUiKSl9LF9yZXNldFZpZXc6ZnVuY3Rpb24odCxlLGkpe1oodGhpcy5fbWFwUGFuZSxuZXcgcCgwLDApKTt2YXIgbj0hdGhpcy5fbG9hZGVkLG89KHRoaXMuX2xvYWRlZD0hMCxlPXRoaXMuX2xpbWl0Wm9vbShlKSx0aGlzLmZpcmUoInZpZXdwcmVyZXNldCIpLHRoaXMuX3pvb20hPT1lKTt0aGlzLl9tb3ZlU3RhcnQobyxpKS5fbW92ZSh0LGUpLl9tb3ZlRW5kKG8pLHRoaXMuZmlyZSgidmlld3Jlc2V0IiksbiYmdGhpcy5maXJlKCJsb2FkIil9LF9tb3ZlU3RhcnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmdGhpcy5maXJlKCJ6b29tc3RhcnQiKSxlfHx0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHRoaXN9LF9tb3ZlOmZ1bmN0aW9uKHQsZSxpLG4pe3ZvaWQgMD09PWUmJihlPXRoaXMuX3pvb20pO3ZhciBvPXRoaXMuX3pvb20hPT1lO3JldHVybiB0aGlzLl96b29tPWUsdGhpcy5fbGFzdENlbnRlcj10LHRoaXMuX3BpeGVsT3JpZ2luPXRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKHQpLG4\/aSYmaS5waW5jaCYmdGhpcy5maXJlKCJ6b29tIixpKTooKG98fGkmJmkucGluY2gpJiZ0aGlzLmZpcmUoInpvb20iLGkpLHRoaXMuZmlyZSgibW92ZSIsaSkpLHRoaXN9LF9tb3ZlRW5kOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLmZpcmUoInpvb21lbmQiKSx0aGlzLmZpcmUoIm1vdmVlbmQiKX0sX3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9mbHlUb0ZyYW1lKSx0aGlzLl9wYW5BbmltJiZ0aGlzLl9wYW5BbmltLnN0b3AoKSx0aGlzfSxfcmF3UGFuQnk6ZnVuY3Rpb24odCl7Wih0aGlzLl9tYXBQYW5lLHRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KSl9LF9nZXRab29tU3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1heFpvb20oKS10aGlzLmdldE1pblpvb20oKX0sX3Bhbkluc2lkZU1heEJvdW5kczpmdW5jdGlvbigpe3RoaXMuX2VuZm9yY2luZ0JvdW5kc3x8dGhpcy5wYW5JbnNpZGVCb3VuZHModGhpcy5vcHRpb25zLm1heEJvdW5kcyl9LF9jaGVja0lmTG9hZGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xvYWRlZCl0aHJvdyBuZXcgRXJyb3IoIlNldCBtYXAgY2VudGVyIGFuZCB6b29tIGZpcnN0LiIpfSxfaW5pdEV2ZW50czpmdW5jdGlvbih0KXt0aGlzLl90YXJnZXRzPXt9O3ZhciBlPXQ\/azpTO2UoKHRoaXMuX3RhcmdldHNbaCh0aGlzLl9jb250YWluZXIpXT10aGlzKS5fY29udGFpbmVyLCJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2Vtb3ZlIGNvbnRleHRtZW51IGtleXByZXNzIGtleWRvd24ga2V5dXAiLHRoaXMuX2hhbmRsZURPTUV2ZW50LHRoaXMpLHRoaXMub3B0aW9ucy50cmFja1Jlc2l6ZSYmZSh3aW5kb3csInJlc2l6ZSIsdGhpcy5fb25SZXNpemUsdGhpcyksYi5hbnkzZCYmdGhpcy5vcHRpb25zLnRyYW5zZm9ybTNETGltaXQmJih0P3RoaXMub2ZmOnRoaXMub24pLmNhbGwodGhpcywibW92ZWVuZCIsdGhpcy5fb25Nb3ZlRW5kKX0sX29uUmVzaXplOmZ1bmN0aW9uKCl7cih0aGlzLl9yZXNpemVSZXF1ZXN0KSx0aGlzLl9yZXNpemVSZXF1ZXN0PXgoZnVuY3Rpb24oKXt0aGlzLmludmFsaWRhdGVTaXplKHtkZWJvdW5jZU1vdmVlbmQ6ITB9KX0sdGhpcyl9LF9vblNjcm9sbDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5zY3JvbGxUb3A9MCx0aGlzLl9jb250YWluZXIuc2Nyb2xsTGVmdD0wfSxfb25Nb3ZlRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0TWFwUGFuZVBvcygpO01hdGgubWF4KE1hdGguYWJzKHQueCksTWF0aC5hYnModC55KSk+PXRoaXMub3B0aW9ucy50cmFuc2Zvcm0zRExpbWl0JiZ0aGlzLl9yZXNldFZpZXcodGhpcy5nZXRDZW50ZXIoKSx0aGlzLmdldFpvb20oKSl9LF9maW5kRXZlbnRUYXJnZXRzOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLG49W10sbz0ibW91c2VvdXQiPT09ZXx8Im1vdXNlb3ZlciI9PT1lLHM9dC50YXJnZXR8fHQuc3JjRWxlbWVudCxyPSExO3M7KXtpZigoaT10aGlzLl90YXJnZXRzW2gocyldKSYmKCJjbGljayI9PT1lfHwicHJlY2xpY2siPT09ZSkmJnRoaXMuX2RyYWdnYWJsZU1vdmVkKGkpKXtyPSEwO2JyZWFrfWlmKGkmJmkubGlzdGVucyhlLCEwKSl7aWYobyYmIVdlKHMsdCkpYnJlYWs7aWYobi5wdXNoKGkpLG8pYnJlYWt9aWYocz09PXRoaXMuX2NvbnRhaW5lcilicmVhaztzPXMucGFyZW50Tm9kZX1yZXR1cm4gbj1uLmxlbmd0aHx8cnx8b3x8IXRoaXMubGlzdGVucyhlLCEwKT9uOlt0aGlzXX0sX2lzQ2xpY2tEaXNhYmxlZDpmdW5jdGlvbih0KXtmb3IoO3QmJnQhPT10aGlzLl9jb250YWluZXI7KXtpZih0Ll9sZWFmbGV0X2Rpc2FibGVfY2xpY2spcmV0dXJuITA7dD10LnBhcmVudE5vZGV9fSxfaGFuZGxlRE9NRXZlbnQ6ZnVuY3Rpb24odCl7dmFyIGUsaT10LnRhcmdldHx8dC5zcmNFbGVtZW50OyF0aGlzLl9sb2FkZWR8fGkuX2xlYWZsZXRfZGlzYWJsZV9ldmVudHN8fCJjbGljayI9PT10LnR5cGUmJnRoaXMuX2lzQ2xpY2tEaXNhYmxlZChpKXx8KCJtb3VzZWRvd24iPT09KGU9dC50eXBlKSYmTWUoaSksdGhpcy5fZmlyZURPTUV2ZW50KHQsZSkpfSxfbW91c2VFdmVudHM6WyJjbGljayIsImRibGNsaWNrIiwibW91c2VvdmVyIiwibW91c2VvdXQiLCJjb250ZXh0bWVudSJdLF9maXJlRE9NRXZlbnQ6ZnVuY3Rpb24odCxlLGkpeyJjbGljayI9PT10LnR5cGUmJigoYT1sKHt9LHQpKS50eXBlPSJwcmVjbGljayIsdGhpcy5fZmlyZURPTUV2ZW50KGEsYS50eXBlLGkpKTt2YXIgbj10aGlzLl9maW5kRXZlbnRUYXJnZXRzKHQsZSk7aWYoaSl7Zm9yKHZhciBvPVtdLHM9MDtzPGkubGVuZ3RoO3MrKylpW3NdLmxpc3RlbnMoZSwhMCkmJm8ucHVzaChpW3NdKTtuPW8uY29uY2F0KG4pfWlmKG4ubGVuZ3RoKXsiY29udGV4dG1lbnUiPT09ZSYmTyh0KTt2YXIgcixhPW5bMF0saD17b3JpZ2luYWxFdmVudDp0fTtmb3IoImtleXByZXNzIiE9PXQudHlwZSYmImtleWRvd24iIT09dC50eXBlJiYia2V5dXAiIT09dC50eXBlJiYocj1hLmdldExhdExuZyYmKCFhLl9yYWRpdXN8fGEuX3JhZGl1czw9MTApLGguY29udGFpbmVyUG9pbnQ9cj90aGlzLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQoYS5nZXRMYXRMbmcoKSk6dGhpcy5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSxoLmxheWVyUG9pbnQ9dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChoLmNvbnRhaW5lclBvaW50KSxoLmxhdGxuZz1yP2EuZ2V0TGF0TG5nKCk6dGhpcy5sYXllclBvaW50VG9MYXRMbmcoaC5sYXllclBvaW50KSkscz0wO3M8bi5sZW5ndGg7cysrKWlmKG5bc10uZmlyZShlLGgsITApLGgub3JpZ2luYWxFdmVudC5fc3RvcHBlZHx8ITE9PT1uW3NdLm9wdGlvbnMuYnViYmxpbmdNb3VzZUV2ZW50cyYmLTEhPT1HKHRoaXMuX21vdXNlRXZlbnRzLGUpKXJldHVybn19LF9kcmFnZ2FibGVNb3ZlZDpmdW5jdGlvbih0KXtyZXR1cm4odD10LmRyYWdnaW5nJiZ0LmRyYWdnaW5nLmVuYWJsZWQoKT90OnRoaXMpLmRyYWdnaW5nJiZ0LmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuYm94Wm9vbSYmdGhpcy5ib3hab29tLm1vdmVkKCl9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9oYW5kbGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ\/dC5jYWxsKGV8fHRoaXMse3RhcmdldDp0aGlzfSk6dGhpcy5vbigibG9hZCIsdCxlKSx0aGlzfSxfZ2V0TWFwUGFuZVBvczpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLl9tYXBQYW5lKXx8bmV3IHAoMCwwKX0sX21vdmVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0TWFwUGFuZVBvcygpO3JldHVybiB0JiYhdC5lcXVhbHMoWzAsMF0pfSxfZ2V0VG9wTGVmdFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQmJnZvaWQgMCE9PWU\/dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4odCxlKTp0aGlzLmdldFBpeGVsT3JpZ2luKCkpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LF9nZXROZXdQaXhlbE9yaWdpbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KGkpLl9hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKS5fcm91bmQoKX0sX2xhdExuZ1RvTmV3TGF5ZXJQb2ludDpmdW5jdGlvbih0LGUsaSl7aT10aGlzLl9nZXROZXdQaXhlbE9yaWdpbihpLGUpO3JldHVybiB0aGlzLnByb2plY3QodCxlKS5fc3VidHJhY3QoaSl9LF9sYXRMbmdCb3VuZHNUb05ld0xheWVyQm91bmRzOmZ1bmN0aW9uKHQsZSxpKXtpPXRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKGksZSk7cmV0dXJuIF8oW3RoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLGUpLl9zdWJ0cmFjdChpKSx0aGlzLnByb2plY3QodC5nZXROb3J0aFdlc3QoKSxlKS5fc3VidHJhY3QoaSksdGhpcy5wcm9qZWN0KHQuZ2V0U291dGhFYXN0KCksZSkuX3N1YnRyYWN0KGkpLHRoaXMucHJvamVjdCh0LmdldE5vcnRoRWFzdCgpLGUpLl9zdWJ0cmFjdChpKV0pfSxfZ2V0Q2VudGVyTGF5ZXJQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSl9LF9nZXRDZW50ZXJPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF0TG5nVG9MYXllclBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LF9saW1pdENlbnRlcjpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbztyZXR1cm4haXx8KG49dGhpcy5wcm9qZWN0KHQsZSksbz10aGlzLmdldFNpemUoKS5kaXZpZGVCeSgyKSxvPW5ldyBmKG4uc3VidHJhY3Qobyksbi5hZGQobykpLG89dGhpcy5fZ2V0Qm91bmRzT2Zmc2V0KG8saSxlKSxNYXRoLmFicyhvLngpPD0xJiZNYXRoLmFicyhvLnkpPD0xKT90OnRoaXMudW5wcm9qZWN0KG4uYWRkKG8pLGUpfSxfbGltaXRPZmZzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgaTtyZXR1cm4gZT8oaT1uZXcgZigoaT10aGlzLmdldFBpeGVsQm91bmRzKCkpLm1pbi5hZGQodCksaS5tYXguYWRkKHQpKSx0LmFkZCh0aGlzLl9nZXRCb3VuZHNPZmZzZXQoaSxlKSkpOnR9LF9nZXRCb3VuZHNPZmZzZXQ6ZnVuY3Rpb24odCxlLGkpe2U9Xyh0aGlzLnByb2plY3QoZS5nZXROb3J0aEVhc3QoKSxpKSx0aGlzLnByb2plY3QoZS5nZXRTb3V0aFdlc3QoKSxpKSksaT1lLm1pbi5zdWJ0cmFjdCh0Lm1pbiksZT1lLm1heC5zdWJ0cmFjdCh0Lm1heCk7cmV0dXJuIG5ldyBwKHRoaXMuX3JlYm91bmQoaS54LC1lLngpLHRoaXMuX3JlYm91bmQoaS55LC1lLnkpKX0sX3JlYm91bmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMDx0K2U\/TWF0aC5yb3VuZCh0LWUpLzI6TWF0aC5tYXgoMCxNYXRoLmNlaWwodCkpLU1hdGgubWF4KDAsTWF0aC5mbG9vcihlKSl9LF9saW1pdFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRNaW5ab29tKCksaT10aGlzLmdldE1heFpvb20oKSxuPWIuYW55M2Q\/dGhpcy5vcHRpb25zLnpvb21TbmFwOjE7cmV0dXJuIG4mJih0PU1hdGgucm91bmQodC9uKSpuKSxNYXRoLm1heChlLE1hdGgubWluKGksdCkpfSxfb25QYW5UcmFuc2l0aW9uU3RlcDpmdW5jdGlvbigpe3RoaXMuZmlyZSgibW92ZSIpfSxfb25QYW5UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7eih0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksdGhpcy5maXJlKCJtb3ZlZW5kIil9LF90cnlBbmltYXRlZFBhbjpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQpLl90cnVuYygpO3JldHVybiEoITAhPT0oZSYmZS5hbmltYXRlKSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKHQpKSYmKHRoaXMucGFuQnkodCxlKSwhMCl9LF9jcmVhdGVBbmltUHJveHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wcm94eT1QKCJkaXYiLCJsZWFmbGV0LXByb3h5IGxlYWZsZXQtem9vbS1hbmltYXRlZCIpO3RoaXMuX3BhbmVzLm1hcFBhbmUuYXBwZW5kQ2hpbGQodCksdGhpcy5vbigiem9vbWFuaW0iLGZ1bmN0aW9uKHQpe3ZhciBlPXVlLGk9dGhpcy5fcHJveHkuc3R5bGVbZV07YmUodGhpcy5fcHJveHksdGhpcy5wcm9qZWN0KHQuY2VudGVyLHQuem9vbSksdGhpcy5nZXRab29tU2NhbGUodC56b29tLDEpKSxpPT09dGhpcy5fcHJveHkuc3R5bGVbZV0mJnRoaXMuX2FuaW1hdGluZ1pvb20mJnRoaXMuX29uWm9vbVRyYW5zaXRpb25FbmQoKX0sdGhpcyksdGhpcy5vbigibG9hZCBtb3ZlZW5kIix0aGlzLl9hbmltTW92ZUVuZCx0aGlzKSx0aGlzLl9vbigidW5sb2FkIix0aGlzLl9kZXN0cm95QW5pbVByb3h5LHRoaXMpfSxfZGVzdHJveUFuaW1Qcm94eTpmdW5jdGlvbigpe1QodGhpcy5fcHJveHkpLHRoaXMub2ZmKCJsb2FkIG1vdmVlbmQiLHRoaXMuX2FuaW1Nb3ZlRW5kLHRoaXMpLGRlbGV0ZSB0aGlzLl9wcm94eX0sX2FuaW1Nb3ZlRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRDZW50ZXIoKSxlPXRoaXMuZ2V0Wm9vbSgpO2JlKHRoaXMuX3Byb3h5LHRoaXMucHJvamVjdCh0LGUpLHRoaXMuZ2V0Wm9vbVNjYWxlKGUsMSkpfSxfY2F0Y2hUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGluZ1pvb20mJjA8PXQucHJvcGVydHlOYW1lLmluZGV4T2YoInRyYW5zZm9ybSIpJiZ0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kKCl9LF9ub3RoaW5nVG9BbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxlLGkpe2lmKCF0aGlzLl9hbmltYXRpbmdab29tKXtpZihpPWl8fHt9LCF0aGlzLl96b29tQW5pbWF0ZWR8fCExPT09aS5hbmltYXRlfHx0aGlzLl9ub3RoaW5nVG9BbmltYXRlKCl8fE1hdGguYWJzKGUtdGhpcy5fem9vbSk+dGhpcy5vcHRpb25zLnpvb21BbmltYXRpb25UaHJlc2hvbGQpcmV0dXJuITE7dmFyIG49dGhpcy5nZXRab29tU2NhbGUoZSksbj10aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX2RpdmlkZUJ5KDEtMS9uKTtpZighMCE9PWkuYW5pbWF0ZSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG4pKXJldHVybiExO3goZnVuY3Rpb24oKXt0aGlzLl9tb3ZlU3RhcnQoITAsaS5ub01vdmVTdGFydHx8ITEpLl9hbmltYXRlWm9vbSh0LGUsITApfSx0aGlzKX1yZXR1cm4hMH0sX2FuaW1hdGVab29tOmZ1bmN0aW9uKHQsZSxpLG4pe3RoaXMuX21hcFBhbmUmJihpJiYodGhpcy5fYW5pbWF0aW5nWm9vbT0hMCx0aGlzLl9hbmltYXRlVG9DZW50ZXI9dCx0aGlzLl9hbmltYXRlVG9ab29tPWUsTSh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpKSx0aGlzLmZpcmUoInpvb21hbmltIix7Y2VudGVyOnQsem9vbTplLG5vVXBkYXRlOm59KSx0aGlzLl90ZW1wRmlyZVpvb21FdmVudHx8KHRoaXMuX3RlbXBGaXJlWm9vbUV2ZW50PXRoaXMuX3pvb20hPT10aGlzLl9hbmltYXRlVG9ab29tKSx0aGlzLl9tb3ZlKHRoaXMuX2FuaW1hdGVUb0NlbnRlcix0aGlzLl9hbmltYXRlVG9ab29tLHZvaWQgMCwhMCksc2V0VGltZW91dChhKHRoaXMuX29uWm9vbVRyYW5zaXRpb25FbmQsdGhpcyksMjUwKSl9LF9vblpvb21UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nWm9vbSYmKHRoaXMuX21hcFBhbmUmJnoodGhpcy5fbWFwUGFuZSwibGVhZmxldC16b29tLWFuaW0iKSx0aGlzLl9hbmltYXRpbmdab29tPSExLHRoaXMuX21vdmUodGhpcy5fYW5pbWF0ZVRvQ2VudGVyLHRoaXMuX2FuaW1hdGVUb1pvb20sdm9pZCAwLCEwKSx0aGlzLl90ZW1wRmlyZVpvb21FdmVudCYmdGhpcy5maXJlKCJ6b29tIiksZGVsZXRlIHRoaXMuX3RlbXBGaXJlWm9vbUV2ZW50LHRoaXMuZmlyZSgibW92ZSIpLHRoaXMuX21vdmVFbmQoITApKX19KTtmdW5jdGlvbiBVZSh0KXtyZXR1cm4gbmV3IEIodCl9dmFyIEI9ZXQuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjoidG9wcmlnaHQifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9ufSxzZXRQb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXA7cmV0dXJuIGUmJmUucmVtb3ZlQ29udHJvbCh0aGlzKSx0aGlzLm9wdGlvbnMucG9zaXRpb249dCxlJiZlLmFkZENvbnRyb2wodGhpcyksdGhpc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sYWRkVG86ZnVuY3Rpb24odCl7dGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9dDt2YXIgZT10aGlzLl9jb250YWluZXI9dGhpcy5vbkFkZCh0KSxpPXRoaXMuZ2V0UG9zaXRpb24oKSx0PXQuX2NvbnRyb2xDb3JuZXJzW2ldO3JldHVybiBNKGUsImxlYWZsZXQtY29udHJvbCIpLC0xIT09aS5pbmRleE9mKCJib3R0b20iKT90Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCk6dC5hcHBlbmRDaGlsZChlKSx0aGlzLl9tYXAub24oInVubG9hZCIsdGhpcy5yZW1vdmUsdGhpcyksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKFQodGhpcy5fY29udGFpbmVyKSx0aGlzLm9uUmVtb3ZlJiZ0aGlzLm9uUmVtb3ZlKHRoaXMuX21hcCksdGhpcy5fbWFwLm9mZigidW5sb2FkIix0aGlzLnJlbW92ZSx0aGlzKSx0aGlzLl9tYXA9bnVsbCksdGhpc30sX3JlZm9jdXNPbk1hcDpmdW5jdGlvbih0KXt0aGlzLl9tYXAmJnQmJjA8dC5zY3JlZW5YJiYwPHQuc2NyZWVuWSYmdGhpcy5fbWFwLmdldENvbnRhaW5lcigpLmZvY3VzKCl9fSksVmU9KEEuaW5jbHVkZSh7YWRkQ29udHJvbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGRUbyh0aGlzKSx0aGlzfSxyZW1vdmVDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbW92ZSgpLHRoaXN9LF9pbml0Q29udHJvbFBvczpmdW5jdGlvbigpe3ZhciBpPXRoaXMuX2NvbnRyb2xDb3JuZXJzPXt9LG49ImxlYWZsZXQtIixvPXRoaXMuX2NvbnRyb2xDb250YWluZXI9UCgiZGl2IixuKyJjb250cm9sLWNvbnRhaW5lciIsdGhpcy5fY29udGFpbmVyKTtmdW5jdGlvbiB0KHQsZSl7aVt0K2VdPVAoImRpdiIsbit0KyIgIituK2Usbyl9dCgidG9wIiwibGVmdCIpLHQoInRvcCIsInJpZ2h0IiksdCgiYm90dG9tIiwibGVmdCIpLHQoImJvdHRvbSIsInJpZ2h0Iil9LF9jbGVhckNvbnRyb2xQb3M6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fY29udHJvbENvcm5lcnMpVCh0aGlzLl9jb250cm9sQ29ybmVyc1t0XSk7VCh0aGlzLl9jb250cm9sQ29udGFpbmVyKSxkZWxldGUgdGhpcy5fY29udHJvbENvcm5lcnMsZGVsZXRlIHRoaXMuX2NvbnRyb2xDb250YWluZXJ9fSksQi5leHRlbmQoe29wdGlvbnM6e2NvbGxhcHNlZDohMCxwb3NpdGlvbjoidG9wcmlnaHQiLGF1dG9aSW5kZXg6ITAsaGlkZVNpbmdsZUJhc2U6ITEsc29ydExheWVyczohMSxzb3J0RnVuY3Rpb246ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIGk8bj8tMTpuPGk\/MTowfX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7Zm9yKHZhciBuIGluIGModGhpcyxpKSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHM9W10sdGhpcy5fbGF5ZXJzPVtdLHRoaXMuX2xhc3RaSW5kZXg9MCx0aGlzLl9oYW5kbGluZ0NsaWNrPSExLHRoaXMuX3ByZXZlbnRDbGljaz0hMSx0KXRoaXMuX2FkZExheWVyKHRbbl0sbik7Zm9yKG4gaW4gZSl0aGlzLl9hZGRMYXllcihlW25dLG4sITApfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksKHRoaXMuX21hcD10KS5vbigiem9vbWVuZCIsdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycyx0aGlzKTtmb3IodmFyIGU9MDtlPHRoaXMuX2xheWVycy5sZW5ndGg7ZSsrKXRoaXMuX2xheWVyc1tlXS5sYXllci5vbigiYWRkIHJlbW92ZSIsdGhpcy5fb25MYXllckNoYW5nZSx0aGlzKTtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gQi5wcm90b3R5cGUuYWRkVG8uY2FsbCh0aGlzLHQpLHRoaXMuX2V4cGFuZElmTm90Q29sbGFwc2VkKCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiem9vbWVuZCIsdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycyx0aGlzKTtmb3IodmFyIHQ9MDt0PHRoaXMuX2xheWVycy5sZW5ndGg7dCsrKXRoaXMuX2xheWVyc1t0XS5sYXllci5vZmYoImFkZCByZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyl9LGFkZEJhc2VMYXllcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9hZGRMYXllcih0LGUpLHRoaXMuX21hcD90aGlzLl91cGRhdGUoKTp0aGlzfSxhZGRPdmVybGF5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2FkZExheWVyKHQsZSwhMCksdGhpcy5fbWFwP3RoaXMuX3VwZGF0ZSgpOnRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3Qub2ZmKCJhZGQgcmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpO3Q9dGhpcy5fZ2V0TGF5ZXIoaCh0KSk7cmV0dXJuIHQmJnRoaXMuX2xheWVycy5zcGxpY2UodGhpcy5fbGF5ZXJzLmluZGV4T2YodCksMSksdGhpcy5fbWFwP3RoaXMuX3VwZGF0ZSgpOnRoaXN9LGV4cGFuZDpmdW5jdGlvbigpe00odGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIiksdGhpcy5fc2VjdGlvbi5zdHlsZS5oZWlnaHQ9bnVsbDt2YXIgdD10aGlzLl9tYXAuZ2V0U2l6ZSgpLnktKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRUb3ArNTApO3JldHVybiB0PHRoaXMuX3NlY3Rpb24uY2xpZW50SGVpZ2h0PyhNKHRoaXMuX3NlY3Rpb24sImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIiksdGhpcy5fc2VjdGlvbi5zdHlsZS5oZWlnaHQ9dCsicHgiKTp6KHRoaXMuX3NlY3Rpb24sImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIiksdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycygpLHRoaXN9LGNvbGxhcHNlOmZ1bmN0aW9uKCl7cmV0dXJuIHoodGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIiksdGhpc30sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD0ibGVhZmxldC1jb250cm9sLWxheWVycyIsZT10aGlzLl9jb250YWluZXI9UCgiZGl2Iix0KSxpPXRoaXMub3B0aW9ucy5jb2xsYXBzZWQsbj0oZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGFzcG9wdXAiLCEwKSxJZShlKSxCZShlKSx0aGlzLl9zZWN0aW9uPVAoInNlY3Rpb24iLHQrIi1saXN0IikpLG89KGkmJih0aGlzLl9tYXAub24oImNsaWNrIix0aGlzLmNvbGxhcHNlLHRoaXMpLFMoZSx7bW91c2VlbnRlcjp0aGlzLl9leHBhbmRTYWZlbHksbW91c2VsZWF2ZTp0aGlzLmNvbGxhcHNlfSx0aGlzKSksdGhpcy5fbGF5ZXJzTGluaz1QKCJhIix0KyItdG9nZ2xlIixlKSk7by5ocmVmPSIjIixvLnRpdGxlPSJMYXllcnMiLG8uc2V0QXR0cmlidXRlKCJyb2xlIiwiYnV0dG9uIiksUyhvLHtrZXlkb3duOmZ1bmN0aW9uKHQpezEzPT09dC5rZXlDb2RlJiZ0aGlzLl9leHBhbmRTYWZlbHkoKX0sY2xpY2s6ZnVuY3Rpb24odCl7Tyh0KSx0aGlzLl9leHBhbmRTYWZlbHkoKX19LHRoaXMpLGl8fHRoaXMuZXhwYW5kKCksdGhpcy5fYmFzZUxheWVyc0xpc3Q9UCgiZGl2Iix0KyItYmFzZSIsbiksdGhpcy5fc2VwYXJhdG9yPVAoImRpdiIsdCsiLXNlcGFyYXRvciIsbiksdGhpcy5fb3ZlcmxheXNMaXN0PVAoImRpdiIsdCsiLW92ZXJsYXlzIixuKSxlLmFwcGVuZENoaWxkKG4pfSxfZ2V0TGF5ZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLl9sYXllcnMubGVuZ3RoO2UrKylpZih0aGlzLl9sYXllcnNbZV0mJmgodGhpcy5fbGF5ZXJzW2VdLmxheWVyKT09PXQpcmV0dXJuIHRoaXMuX2xheWVyc1tlXX0sX2FkZExheWVyOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLl9tYXAmJnQub24oImFkZCByZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyksdGhpcy5fbGF5ZXJzLnB1c2goe2xheWVyOnQsbmFtZTplLG92ZXJsYXk6aX0pLHRoaXMub3B0aW9ucy5zb3J0TGF5ZXJzJiZ0aGlzLl9sYXllcnMuc29ydChhKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5zb3J0RnVuY3Rpb24odC5sYXllcixlLmxheWVyLHQubmFtZSxlLm5hbWUpfSx0aGlzKSksdGhpcy5vcHRpb25zLmF1dG9aSW5kZXgmJnQuc2V0WkluZGV4JiYodGhpcy5fbGFzdFpJbmRleCsrLHQuc2V0WkluZGV4KHRoaXMuX2xhc3RaSW5kZXgpKSx0aGlzLl9leHBhbmRJZk5vdENvbGxhcHNlZCgpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGFpbmVyKXttZSh0aGlzLl9iYXNlTGF5ZXJzTGlzdCksbWUodGhpcy5fb3ZlcmxheXNMaXN0KSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHM9W107Zm9yKHZhciB0LGUsaSxuPTAsbz0wO288dGhpcy5fbGF5ZXJzLmxlbmd0aDtvKyspaT10aGlzLl9sYXllcnNbb10sdGhpcy5fYWRkSXRlbShpKSxlPWV8fGkub3ZlcmxheSx0PXR8fCFpLm92ZXJsYXksbis9aS5vdmVybGF5PzA6MTt0aGlzLm9wdGlvbnMuaGlkZVNpbmdsZUJhc2UmJih0aGlzLl9iYXNlTGF5ZXJzTGlzdC5zdHlsZS5kaXNwbGF5PSh0PXQmJjE8bik\/IiI6Im5vbmUiKSx0aGlzLl9zZXBhcmF0b3Iuc3R5bGUuZGlzcGxheT1lJiZ0PyIiOiJub25lIn1yZXR1cm4gdGhpc30sX29uTGF5ZXJDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5faGFuZGxpbmdDbGlja3x8dGhpcy5fdXBkYXRlKCk7dmFyIGU9dGhpcy5fZ2V0TGF5ZXIoaCh0LnRhcmdldCkpLHQ9ZS5vdmVybGF5PyJhZGQiPT09dC50eXBlPyJvdmVybGF5YWRkIjoib3ZlcmxheXJlbW92ZSI6ImFkZCI9PT10LnR5cGU\/ImJhc2VsYXllcmNoYW5nZSI6bnVsbDt0JiZ0aGlzLl9tYXAuZmlyZSh0LGUpfSxfY3JlYXRlUmFkaW9FbGVtZW50OmZ1bmN0aW9uKHQsZSl7dD0nPGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIgbmFtZT0iJyt0KyciJysoZT8nIGNoZWNrZWQ9ImNoZWNrZWQiJzoiIikrIi8+IixlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmlubmVySFRNTD10LGUuZmlyc3RDaGlsZH0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dmFyIGUsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpLG49dGhpcy5fbWFwLmhhc0xheWVyKHQubGF5ZXIpLG49KHQub3ZlcmxheT8oKGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudHlwZT0iY2hlY2tib3giLGUuY2xhc3NOYW1lPSJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNlbGVjdG9yIixlLmRlZmF1bHRDaGVja2VkPW4pOmU9dGhpcy5fY3JlYXRlUmFkaW9FbGVtZW50KCJsZWFmbGV0LWJhc2UtbGF5ZXJzXyIraCh0aGlzKSxuKSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHMucHVzaChlKSxlLmxheWVySWQ9aCh0LmxheWVyKSxTKGUsImNsaWNrIix0aGlzLl9vbklucHV0Q2xpY2ssdGhpcyksZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKSxvPShuLmlubmVySFRNTD0iICIrdC5uYW1lLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7cmV0dXJuIGkuYXBwZW5kQ2hpbGQobyksby5hcHBlbmRDaGlsZChlKSxvLmFwcGVuZENoaWxkKG4pLCh0Lm92ZXJsYXk\/dGhpcy5fb3ZlcmxheXNMaXN0OnRoaXMuX2Jhc2VMYXllcnNMaXN0KS5hcHBlbmRDaGlsZChpKSx0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzKCksaX0sX29uSW5wdXRDbGljazpmdW5jdGlvbigpe2lmKCF0aGlzLl9wcmV2ZW50Q2xpY2spe3ZhciB0LGUsaT10aGlzLl9sYXllckNvbnRyb2xJbnB1dHMsbj1bXSxvPVtdO3RoaXMuX2hhbmRsaW5nQ2xpY2s9ITA7Zm9yKHZhciBzPWkubGVuZ3RoLTE7MDw9cztzLS0pdD1pW3NdLGU9dGhpcy5fZ2V0TGF5ZXIodC5sYXllcklkKS5sYXllcix0LmNoZWNrZWQ\/bi5wdXNoKGUpOnQuY2hlY2tlZHx8by5wdXNoKGUpO2ZvcihzPTA7czxvLmxlbmd0aDtzKyspdGhpcy5fbWFwLmhhc0xheWVyKG9bc10pJiZ0aGlzLl9tYXAucmVtb3ZlTGF5ZXIob1tzXSk7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl0aGlzLl9tYXAuaGFzTGF5ZXIobltzXSl8fHRoaXMuX21hcC5hZGRMYXllcihuW3NdKTt0aGlzLl9oYW5kbGluZ0NsaWNrPSExLHRoaXMuX3JlZm9jdXNPbk1hcCgpfX0sX2NoZWNrRGlzYWJsZWRMYXllcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPXRoaXMuX2xheWVyQ29udHJvbElucHV0cyxuPXRoaXMuX21hcC5nZXRab29tKCksbz1pLmxlbmd0aC0xOzA8PW87by0tKXQ9aVtvXSxlPXRoaXMuX2dldExheWVyKHQubGF5ZXJJZCkubGF5ZXIsdC5kaXNhYmxlZD12b2lkIDAhPT1lLm9wdGlvbnMubWluWm9vbSYmbjxlLm9wdGlvbnMubWluWm9vbXx8dm9pZCAwIT09ZS5vcHRpb25zLm1heFpvb20mJm4+ZS5vcHRpb25zLm1heFpvb219LF9leHBhbmRJZk5vdENvbGxhcHNlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJiF0aGlzLm9wdGlvbnMuY29sbGFwc2VkJiZ0aGlzLmV4cGFuZCgpLHRoaXN9LF9leHBhbmRTYWZlbHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zZWN0aW9uLGU9KHRoaXMuX3ByZXZlbnRDbGljaz0hMCxTKHQsImNsaWNrIixPKSx0aGlzLmV4cGFuZCgpLHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtrKHQsImNsaWNrIixPKSxlLl9wcmV2ZW50Q2xpY2s9ITF9KX19KSkscWU9Qi5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3BsZWZ0Iix6b29tSW5UZXh0Oic8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Kzwvc3Bhbj4nLHpvb21JblRpdGxlOiJab29tIGluIix6b29tT3V0VGV4dDonPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiYjeDIyMTI7PC9zcGFuPicsem9vbU91dFRpdGxlOiJab29tIG91dCJ9LG9uQWRkOmZ1bmN0aW9uKHQpe3ZhciBlPSJsZWFmbGV0LWNvbnRyb2wtem9vbSIsaT1QKCJkaXYiLGUrIiBsZWFmbGV0LWJhciIpLG49dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKG4uem9vbUluVGV4dCxuLnpvb21JblRpdGxlLGUrIi1pbiIsaSx0aGlzLl96b29tSW4pLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKG4uem9vbU91dFRleHQsbi56b29tT3V0VGl0bGUsZSsiLW91dCIsaSx0aGlzLl96b29tT3V0KSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyksaX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWQ9ITAsdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSx0aGlzfSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSx0aGlzfSxfem9vbUluOmZ1bmN0aW9uKHQpeyF0aGlzLl9kaXNhYmxlZCYmdGhpcy5fbWFwLl96b29tPHRoaXMuX21hcC5nZXRNYXhab29tKCkmJnRoaXMuX21hcC56b29tSW4odGhpcy5fbWFwLm9wdGlvbnMuem9vbURlbHRhKih0LnNoaWZ0S2V5PzM6MSkpfSxfem9vbU91dDpmdW5jdGlvbih0KXshdGhpcy5fZGlzYWJsZWQmJnRoaXMuX21hcC5fem9vbT50aGlzLl9tYXAuZ2V0TWluWm9vbSgpJiZ0aGlzLl9tYXAuem9vbU91dCh0aGlzLl9tYXAub3B0aW9ucy56b29tRGVsdGEqKHQuc2hpZnRLZXk\/MzoxKSl9LF9jcmVhdGVCdXR0b246ZnVuY3Rpb24odCxlLGksbixvKXtpPVAoImEiLGksbik7cmV0dXJuIGkuaW5uZXJIVE1MPXQsaS5ocmVmPSIjIixpLnRpdGxlPWUsaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJidXR0b24iKSxpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsZSksSWUoaSksUyhpLCJjbGljayIsUmUpLFMoaSwiY2xpY2siLG8sdGhpcyksUyhpLCJjbGljayIsdGhpcy5fcmVmb2N1c09uTWFwLHRoaXMpLGl9LF91cGRhdGVEaXNhYmxlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxlPSJsZWFmbGV0LWRpc2FibGVkIjt6KHRoaXMuX3pvb21JbkJ1dHRvbixlKSx6KHRoaXMuX3pvb21PdXRCdXR0b24sZSksdGhpcy5fem9vbUluQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsImZhbHNlIiksdGhpcy5fem9vbU91dEJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJmYWxzZSIpLCF0aGlzLl9kaXNhYmxlZCYmdC5fem9vbSE9PXQuZ2V0TWluWm9vbSgpfHwoTSh0aGlzLl96b29tT3V0QnV0dG9uLGUpLHRoaXMuX3pvb21PdXRCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpKSwhdGhpcy5fZGlzYWJsZWQmJnQuX3pvb20hPT10LmdldE1heFpvb20oKXx8KE0odGhpcy5fem9vbUluQnV0dG9uLGUpLHRoaXMuX3pvb21JbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpfX0pLEdlPShBLm1lcmdlT3B0aW9ucyh7em9vbUNvbnRyb2w6ITB9KSxBLmFkZEluaXRIb29rKGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnpvb21Db250cm9sJiYodGhpcy56b29tQ29udHJvbD1uZXcgcWUsdGhpcy5hZGRDb250cm9sKHRoaXMuem9vbUNvbnRyb2wpKX0pLEIuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjoiYm90dG9tbGVmdCIsbWF4V2lkdGg6MTAwLG1ldHJpYzohMCxpbXBlcmlhbDohMH0sb25BZGQ6ZnVuY3Rpb24odCl7dmFyIGU9ImxlYWZsZXQtY29udHJvbC1zY2FsZSIsaT1QKCJkaXYiLGUpLG49dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl9hZGRTY2FsZXMobixlKyItbGluZSIsaSksdC5vbihuLnVwZGF0ZVdoZW5JZGxlPyJtb3ZlZW5kIjoibW92ZSIsdGhpcy5fdXBkYXRlLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX3VwZGF0ZSx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZih0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGU\/Im1vdmVlbmQiOiJtb3ZlIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxlLGkpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPVAoImRpdiIsZSxpKSksdC5pbXBlcmlhbCYmKHRoaXMuX2lTY2FsZT1QKCJkaXYiLGUsaSkpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dC5nZXRTaXplKCkueS8yLHQ9dC5kaXN0YW5jZSh0LmNvbnRhaW5lclBvaW50VG9MYXRMbmcoWzAsZV0pLHQuY29udGFpbmVyUG9pbnRUb0xhdExuZyhbdGhpcy5vcHRpb25zLm1heFdpZHRoLGVdKSk7dGhpcy5fdXBkYXRlU2NhbGVzKHQpfSxfdXBkYXRlU2NhbGVzOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucy5tZXRyaWMmJnQmJnRoaXMuX3VwZGF0ZU1ldHJpYyh0KSx0aGlzLm9wdGlvbnMuaW1wZXJpYWwmJnQmJnRoaXMuX3VwZGF0ZUltcGVyaWFsKHQpfSxfdXBkYXRlTWV0cmljOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldFJvdW5kTnVtKHQpO3RoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX21TY2FsZSxlPDFlMz9lKyIgbSI6ZS8xZTMrIiBrbSIsZS90KX0sX3VwZGF0ZUltcGVyaWFsOmZ1bmN0aW9uKHQpe3ZhciBlLGksdD0zLjI4MDgzOTkqdDs1MjgwPHQ\/KGk9dGhpcy5fZ2V0Um91bmROdW0oZT10LzUyODApLHRoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX2lTY2FsZSxpKyIgbWkiLGkvZSkpOihpPXRoaXMuX2dldFJvdW5kTnVtKHQpLHRoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX2lTY2FsZSxpKyIgZnQiLGkvdCkpfSxfdXBkYXRlU2NhbGU6ZnVuY3Rpb24odCxlLGkpe3Quc3R5bGUud2lkdGg9TWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMubWF4V2lkdGgqaSkrInB4Iix0LmlubmVySFRNTD1lfSxfZ2V0Um91bmROdW06ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5wb3coMTAsKE1hdGguZmxvb3IodCkrIiIpLmxlbmd0aC0xKSx0PXQvZTtyZXR1cm4gZSoodD0xMDw9dD8xMDo1PD10PzU6Mzw9dD8zOjI8PXQ\/MjoxKX19KSksS2U9Qi5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21yaWdodCIscHJlZml4Oic8YSBocmVmPSJodHRwczovL2xlYWZsZXRqcy5jb20iIHRpdGxlPSJBIEphdmFTY3JpcHQgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcyI+JysoYi5pbmxpbmVTdmc\/JzxzdmcgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCAxMiA4IiBjbGFzcz0ibGVhZmxldC1hdHRyaWJ1dGlvbi1mbGFnIj48cGF0aCBmaWxsPSIjNEM3QkUxIiBkPSJNMCAwaDEydjRIMHoiLz48cGF0aCBmaWxsPSIjRkZENTAwIiBkPSJNMCA0aDEydjNIMHoiLz48cGF0aCBmaWxsPSIjRTBCQzAwIiBkPSJNMCA3aDEydjFIMHoiLz48L3N2Zz4gJzoiIikrIkxlYWZsZXQ8L2E+In0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtjKHRoaXMsdCksdGhpcy5fYXR0cmlidXRpb25zPXt9fSxvbkFkZDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4odC5hdHRyaWJ1dGlvbkNvbnRyb2w9dGhpcykuX2NvbnRhaW5lcj1QKCJkaXYiLCJsZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24iKSxJZSh0aGlzLl9jb250YWluZXIpLHQuX2xheWVycyl0Ll9sYXllcnNbZV0uZ2V0QXR0cmlidXRpb24mJnRoaXMuYWRkQXR0cmlidXRpb24odC5fbGF5ZXJzW2VdLmdldEF0dHJpYnV0aW9uKCkpO3JldHVybiB0aGlzLl91cGRhdGUoKSx0Lm9uKCJsYXllcmFkZCIsdGhpcy5fYWRkQXR0cmlidXRpb24sdGhpcyksdGhpcy5fY29udGFpbmVyfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZigibGF5ZXJhZGQiLHRoaXMuX2FkZEF0dHJpYnV0aW9uLHRoaXMpfSxfYWRkQXR0cmlidXRpb246ZnVuY3Rpb24odCl7dC5sYXllci5nZXRBdHRyaWJ1dGlvbiYmKHRoaXMuYWRkQXR0cmlidXRpb24odC5sYXllci5nZXRBdHRyaWJ1dGlvbigpKSx0LmxheWVyLm9uY2UoInJlbW92ZSIsZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0aW9uKHQubGF5ZXIuZ2V0QXR0cmlidXRpb24oKSl9LHRoaXMpKX0sc2V0UHJlZml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZml4PXQsdGhpcy5fdXBkYXRlKCksdGhpc30sYWRkQXR0cmlidXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHQmJih0aGlzLl9hdHRyaWJ1dGlvbnNbdF18fCh0aGlzLl9hdHRyaWJ1dGlvbnNbdF09MCksdGhpcy5fYXR0cmlidXRpb25zW3RdKyssdGhpcy5fdXBkYXRlKCkpLHRoaXN9LHJlbW92ZUF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLl9hdHRyaWJ1dGlvbnNbdF0mJih0aGlzLl9hdHRyaWJ1dGlvbnNbdF0tLSx0aGlzLl91cGRhdGUoKSksdGhpc30sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQsZT1bXTtmb3IodCBpbiB0aGlzLl9hdHRyaWJ1dGlvbnMpdGhpcy5fYXR0cmlidXRpb25zW3RdJiZlLnB1c2godCk7dmFyIGk9W107dGhpcy5vcHRpb25zLnByZWZpeCYmaS5wdXNoKHRoaXMub3B0aW9ucy5wcmVmaXgpLGUubGVuZ3RoJiZpLnB1c2goZS5qb2luKCIsICIpKSx0aGlzLl9jb250YWluZXIuaW5uZXJIVE1MPWkuam9pbignIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj58PC9zcGFuPiAnKX19fSksbj0oQS5tZXJnZU9wdGlvbnMoe2F0dHJpYnV0aW9uQ29udHJvbDohMH0pLEEuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXR0cmlidXRpb25Db250cm9sJiYobmV3IEtlKS5hZGRUbyh0aGlzKX0pLEIuTGF5ZXJzPVZlLEIuWm9vbT1xZSxCLlNjYWxlPUdlLEIuQXR0cmlidXRpb249S2UsVWUubGF5ZXJzPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IFZlKHQsZSxpKX0sVWUuem9vbT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHFlKHQpfSxVZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEdlKHQpfSxVZS5hdHRyaWJ1dGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEtlKHQpfSxldC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXR9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmFibGVkfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLmFkZEhvb2tzKCkpLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZCYmKHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZW1vdmVIb29rcygpKSx0aGlzfSxlbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfX0pKSxmdD0obi5hZGRUbz1mdW5jdGlvbih0LGUpe3JldHVybiB0LmFkZEhhbmRsZXIoZSx0aGlzKSx0aGlzfSx7RXZlbnRzOmV9KSxZZT1iLnRvdWNoPyJ0b3VjaHN0YXJ0IG1vdXNlZG93biI6Im1vdXNlZG93biIsWGU9aXQuZXh0ZW5kKHtvcHRpb25zOntjbGlja1RvbGVyYW5jZTozfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpLG4pe2ModGhpcyxuKSx0aGlzLl9lbGVtZW50PXQsdGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0PWV8fHQsdGhpcy5fcHJldmVudE91dGxpbmU9aX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZW5hYmxlZHx8KFModGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LFllLHRoaXMuX29uRG93bix0aGlzKSx0aGlzLl9lbmFibGVkPSEwKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuX2VuYWJsZWQmJihYZS5fZHJhZ2dpbmc9PT10aGlzJiZ0aGlzLmZpbmlzaERyYWcoITApLGsodGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LFllLHRoaXMuX29uRG93bix0aGlzKSx0aGlzLl9lbmFibGVkPSExLHRoaXMuX21vdmVkPSExKX0sX29uRG93bjpmdW5jdGlvbih0KXt2YXIgZSxpO3RoaXMuX2VuYWJsZWQmJih0aGlzLl9tb3ZlZD0hMSx2ZSh0aGlzLl9lbGVtZW50LCJsZWFmbGV0LXpvb20tYW5pbSIpfHwodC50b3VjaGVzJiYxIT09dC50b3VjaGVzLmxlbmd0aD9YZS5fZHJhZ2dpbmc9PT10aGlzJiZ0aGlzLmZpbmlzaERyYWcoKTpYZS5fZHJhZ2dpbmd8fHQuc2hpZnRLZXl8fDEhPT10LndoaWNoJiYxIT09dC5idXR0b24mJiF0LnRvdWNoZXN8fCgoWGUuX2RyYWdnaW5nPXRoaXMpLl9wcmV2ZW50T3V0bGluZSYmTWUodGhpcy5fZWxlbWVudCksTGUoKSxyZSgpLHRoaXMuX21vdmluZ3x8KHRoaXMuZmlyZSgiZG93biIpLGk9dC50b3VjaGVzP3QudG91Y2hlc1swXTp0LGU9Q2UodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRQb2ludD1uZXcgcChpLmNsaWVudFgsaS5jbGllbnRZKSx0aGlzLl9zdGFydFBvcz1QZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9wYXJlbnRTY2FsZT1aZShlKSxpPSJtb3VzZWRvd24iPT09dC50eXBlLFMoZG9jdW1lbnQsaT8ibW91c2Vtb3ZlIjoidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcyksUyhkb2N1bWVudCxpPyJtb3VzZXVwIjoidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHRoaXMuX29uVXAsdGhpcykpKSkpfSxfb25Nb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlO3RoaXMuX2VuYWJsZWQmJih0LnRvdWNoZXMmJjE8dC50b3VjaGVzLmxlbmd0aD90aGlzLl9tb3ZlZD0hMDohKGU9bmV3IHAoKGU9dC50b3VjaGVzJiYxPT09dC50b3VjaGVzLmxlbmd0aD90LnRvdWNoZXNbMF06dCkuY2xpZW50WCxlLmNsaWVudFkpLl9zdWJ0cmFjdCh0aGlzLl9zdGFydFBvaW50KSkueCYmIWUueXx8TWF0aC5hYnMoZS54KStNYXRoLmFicyhlLnkpPHRoaXMub3B0aW9ucy5jbGlja1RvbGVyYW5jZXx8KGUueC89dGhpcy5fcGFyZW50U2NhbGUueCxlLnkvPXRoaXMuX3BhcmVudFNjYWxlLnksTyh0KSx0aGlzLl9tb3ZlZHx8KHRoaXMuZmlyZSgiZHJhZ3N0YXJ0IiksdGhpcy5fbW92ZWQ9ITAsTShkb2N1bWVudC5ib2R5LCJsZWFmbGV0LWRyYWdnaW5nIiksdGhpcy5fbGFzdFRhcmdldD10LnRhcmdldHx8dC5zcmNFbGVtZW50LHdpbmRvdy5TVkdFbGVtZW50SW5zdGFuY2UmJnRoaXMuX2xhc3RUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuU1ZHRWxlbWVudEluc3RhbmNlJiYodGhpcy5fbGFzdFRhcmdldD10aGlzLl9sYXN0VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSxNKHRoaXMuX2xhc3RUYXJnZXQsImxlYWZsZXQtZHJhZy10YXJnZXQiKSksdGhpcy5fbmV3UG9zPXRoaXMuX3N0YXJ0UG9zLmFkZChlKSx0aGlzLl9tb3Zpbmc9ITAsdGhpcy5fbGFzdEV2ZW50PXQsdGhpcy5fdXBkYXRlUG9zaXRpb24oKSkpfSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD17b3JpZ2luYWxFdmVudDp0aGlzLl9sYXN0RXZlbnR9O3RoaXMuZmlyZSgicHJlZHJhZyIsdCksWih0aGlzLl9lbGVtZW50LHRoaXMuX25ld1BvcyksdGhpcy5maXJlKCJkcmFnIix0KX0sX29uVXA6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkJiZ0aGlzLmZpbmlzaERyYWcoKX0sZmluaXNoRHJhZzpmdW5jdGlvbih0KXt6KGRvY3VtZW50LmJvZHksImxlYWZsZXQtZHJhZ2dpbmciKSx0aGlzLl9sYXN0VGFyZ2V0JiYoeih0aGlzLl9sYXN0VGFyZ2V0LCJsZWFmbGV0LWRyYWctdGFyZ2V0IiksdGhpcy5fbGFzdFRhcmdldD1udWxsKSxrKGRvY3VtZW50LCJtb3VzZW1vdmUgdG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcyksayhkb2N1bWVudCwibW91c2V1cCB0b3VjaGVuZCB0b3VjaGNhbmNlbCIsdGhpcy5fb25VcCx0aGlzKSxUZSgpLGFlKCk7dmFyIGU9dGhpcy5fbW92ZWQmJnRoaXMuX21vdmluZzt0aGlzLl9tb3Zpbmc9ITEsWGUuX2RyYWdnaW5nPSExLGUmJnRoaXMuZmlyZSgiZHJhZ2VuZCIse25vSW5lcnRpYTp0LGRpc3RhbmNlOnRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKX0pfX0pO2Z1bmN0aW9uIEplKHQsZSxpKXtmb3IodmFyIG4sbyxzLHIsYSxoLGwsdT1bMSw0LDIsOF0sYz0wLGQ9dC5sZW5ndGg7YzxkO2MrKyl0W2NdLl9jb2RlPXNpKHRbY10sZSk7Zm9yKHM9MDtzPDQ7cysrKXtmb3IoaD11W3NdLG49W10sYz0wLG89KGQ9dC5sZW5ndGgpLTE7YzxkO289YysrKXI9dFtjXSxhPXRbb10sci5fY29kZSZoP2EuX2NvZGUmaHx8KChsPW9pKGEscixoLGUsaSkpLl9jb2RlPXNpKGwsZSksbi5wdXNoKGwpKTooYS5fY29kZSZoJiYoKGw9b2koYSxyLGgsZSxpKSkuX2NvZGU9c2kobCxlKSxuLnB1c2gobCkpLG4ucHVzaChyKSk7dD1ufXJldHVybiB0fWZ1bmN0aW9uICRlKHQsZSl7dmFyIGksbixvLHMscixhLGg7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImxhdGxuZ3Mgbm90IHBhc3NlZCIpO0kodCl8fChjb25zb2xlLndhcm4oImxhdGxuZ3MgYXJlIG5vdCBmbGF0ISBPbmx5IHRoZSBmaXJzdCByaW5nIHdpbGwgYmUgdXNlZCIpLHQ9dFswXSk7Zm9yKHZhciBsPXcoWzAsMF0pLHU9Zyh0KSxjPSh1LmdldE5vcnRoV2VzdCgpLmRpc3RhbmNlVG8odS5nZXRTb3V0aFdlc3QoKSkqdS5nZXROb3J0aEVhc3QoKS5kaXN0YW5jZVRvKHUuZ2V0Tm9ydGhXZXN0KCkpPDE3MDAmJihsPVFlKHQpKSx0Lmxlbmd0aCksZD1bXSxfPTA7XzxjO18rKyl7dmFyIHA9dyh0W19dKTtkLnB1c2goZS5wcm9qZWN0KHcoW3AubGF0LWwubGF0LHAubG5nLWwubG5nXSkpKX1mb3IoXz1yPWE9aD0wLGk9Yy0xO188YztpPV8rKyluPWRbX10sbz1kW2ldLHM9bi55Km8ueC1vLnkqbi54LGErPShuLngrby54KSpzLGgrPShuLnkrby55KSpzLHIrPTMqczt1PTA9PT1yP2RbMF06W2EvcixoL3JdLHU9ZS51bnByb2plY3QobSh1KSk7cmV0dXJuIHcoW3UubGF0K2wubGF0LHUubG5nK2wubG5nXSl9ZnVuY3Rpb24gUWUodCl7Zm9yKHZhciBlPTAsaT0wLG49MCxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBzPXcodFtvXSk7ZSs9cy5sYXQsaSs9cy5sbmcsbisrfXJldHVybiB3KFtlL24saS9uXSl9dmFyIHRpLGd0PXtfX3Byb3RvX186bnVsbCxjbGlwUG9seWdvbjpKZSxwb2x5Z29uQ2VudGVyOiRlLGNlbnRyb2lkOlFlfTtmdW5jdGlvbiBlaSh0LGUpe2lmKGUmJnQubGVuZ3RoKXt2YXIgaT10PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVt0WzBdXSxuPTEsbz0wLHM9dC5sZW5ndGg7bjxzO24rKykoZnVuY3Rpb24odCxlKXt2YXIgaT1lLngtdC54LGU9ZS55LXQueTtyZXR1cm4gaSppK2UqZX0pKHRbbl0sdFtvXSk+ZSYmKGkucHVzaCh0W25dKSxvPW4pO288cy0xJiZpLnB1c2godFtzLTFdKTtyZXR1cm4gaX0odCxlPWUqZSksbj1pLmxlbmd0aCxvPW5ldyh0eXBlb2YgVWludDhBcnJheSE9dm9pZCAwKyIiP1VpbnQ4QXJyYXk6QXJyYXkpKG4pO29bMF09b1tuLTFdPTEsZnVuY3Rpb24gdChlLGksbixvLHMpe3ZhciByLGEsaCxsPTA7Zm9yKGE9bysxO2E8PXMtMTthKyspaD1yaShlW2FdLGVbb10sZVtzXSwhMCksbDxoJiYocj1hLGw9aCk7bjxsJiYoaVtyXT0xLHQoZSxpLG4sbyxyKSx0KGUsaSxuLHIscykpfShpLG8sZSwwLG4tMSk7dmFyIHMscj1bXTtmb3Iocz0wO3M8bjtzKyspb1tzXSYmci5wdXNoKGlbc10pO3JldHVybiByfXJldHVybiB0LnNsaWNlKCl9ZnVuY3Rpb24gaWkodCxlLGkpe3JldHVybiBNYXRoLnNxcnQocmkodCxlLGksITApKX1mdW5jdGlvbiBuaSh0LGUsaSxuLG8pe3ZhciBzLHIsYSxoPW4\/dGk6c2kodCxpKSxsPXNpKGUsaSk7Zm9yKHRpPWw7Oyl7aWYoIShofGwpKXJldHVyblt0LGVdO2lmKGgmbClyZXR1cm4hMTthPXNpKHI9b2kodCxlLHM9aHx8bCxpLG8pLGkpLHM9PT1oPyh0PXIsaD1hKTooZT1yLGw9YSl9fWZ1bmN0aW9uIG9pKHQsZSxpLG4sbyl7dmFyIHMscixhPWUueC10LngsZT1lLnktdC55LGg9bi5taW4sbj1uLm1heDtyZXR1cm4gOCZpPyhzPXQueCthKihuLnktdC55KS9lLHI9bi55KTo0Jmk\/KHM9dC54K2EqKGgueS10LnkpL2Uscj1oLnkpOjImaT8ocz1uLngscj10LnkrZSoobi54LXQueCkvYSk6MSZpJiYocz1oLngscj10LnkrZSooaC54LXQueCkvYSksbmV3IHAocyxyLG8pfWZ1bmN0aW9uIHNpKHQsZSl7dmFyIGk9MDtyZXR1cm4gdC54PGUubWluLng\/aXw9MTp0Lng+ZS5tYXgueCYmKGl8PTIpLHQueTxlLm1pbi55P2l8PTQ6dC55PmUubWF4LnkmJihpfD04KSxpfWZ1bmN0aW9uIHJpKHQsZSxpLG4pe3ZhciBvPWUueCxlPWUueSxzPWkueC1vLHI9aS55LWUsYT1zKnMrcipyO3JldHVybiAwPGEmJigxPChhPSgodC54LW8pKnMrKHQueS1lKSpyKS9hKT8obz1pLngsZT1pLnkpOjA8YSYmKG8rPXMqYSxlKz1yKmEpKSxzPXQueC1vLHI9dC55LWUsbj9zKnMrcipyOm5ldyBwKG8sZSl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4hZCh0WzBdKXx8Im9iamVjdCIhPXR5cGVvZiB0WzBdWzBdJiZ2b2lkIDAhPT10WzBdWzBdfWZ1bmN0aW9uIGFpKHQpe3JldHVybiBjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQgdXNlIG9mIF9mbGF0LCBwbGVhc2UgdXNlIEwuTGluZVV0aWwuaXNGbGF0IGluc3RlYWQuIiksSSh0KX1mdW5jdGlvbiBoaSh0LGUpe3ZhciBpLG4sbyxzLHIsYTtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibGF0bG5ncyBub3QgcGFzc2VkIik7SSh0KXx8KGNvbnNvbGUud2FybigibGF0bG5ncyBhcmUgbm90IGZsYXQhIE9ubHkgdGhlIGZpcnN0IHJpbmcgd2lsbCBiZSB1c2VkIiksdD10WzBdKTtmb3IodmFyIGg9dyhbMCwwXSksbD1nKHQpLHU9KGwuZ2V0Tm9ydGhXZXN0KCkuZGlzdGFuY2VUbyhsLmdldFNvdXRoV2VzdCgpKSpsLmdldE5vcnRoRWFzdCgpLmRpc3RhbmNlVG8obC5nZXROb3J0aFdlc3QoKSk8MTcwMCYmKGg9UWUodCkpLHQubGVuZ3RoKSxjPVtdLGQ9MDtkPHU7ZCsrKXt2YXIgXz13KHRbZF0pO2MucHVzaChlLnByb2plY3QodyhbXy5sYXQtaC5sYXQsXy5sbmctaC5sbmddKSkpfWZvcihpPWQ9MDtkPHUtMTtkKyspaSs9Y1tkXS5kaXN0YW5jZVRvKGNbZCsxXSkvMjtpZigwPT09aSlhPWNbMF07ZWxzZSBmb3Iobj1kPTA7ZDx1LTE7ZCsrKWlmKG89Y1tkXSxzPWNbZCsxXSxpPChuKz1yPW8uZGlzdGFuY2VUbyhzKSkpe2E9W3MueC0ocj0obi1pKS9yKSoocy54LW8ueCkscy55LXIqKHMueS1vLnkpXTticmVha31sPWUudW5wcm9qZWN0KG0oYSkpO3JldHVybiB3KFtsLmxhdCtoLmxhdCxsLmxuZytoLmxuZ10pfXZhciB2dD17X19wcm90b19fOm51bGwsc2ltcGxpZnk6ZWkscG9pbnRUb1NlZ21lbnREaXN0YW5jZTppaSxjbG9zZXN0UG9pbnRPblNlZ21lbnQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiByaSh0LGUsaSl9LGNsaXBTZWdtZW50Om5pLF9nZXRFZGdlSW50ZXJzZWN0aW9uOm9pLF9nZXRCaXRDb2RlOnNpLF9zcUNsb3Nlc3RQb2ludE9uU2VnbWVudDpyaSxpc0ZsYXQ6SSxfZmxhdDphaSxwb2x5bGluZUNlbnRlcjpoaX0seXQ9e3Byb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKHQubG5nLHQubGF0KX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdih0LnksdC54KX0sYm91bmRzOm5ldyBmKFstMTgwLC05MF0sWzE4MCw5MF0pfSx4dD17Ujo2Mzc4MTM3LFJfTUlOT1I6NjM1Njc1Mi4zMTQyNDUxNzksYm91bmRzOm5ldyBmKFstMjAwMzc1MDguMzQyNzksLTE1NDk2NTcwLjczOTcyXSxbMjAwMzc1MDguMzQyNzksMTg3NjQ2NTYuMjMxMzhdKSxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguUEkvMTgwLGk9dGhpcy5SLG49dC5sYXQqZSxvPXRoaXMuUl9NSU5PUi9pLG89TWF0aC5zcXJ0KDEtbypvKSxzPW8qTWF0aC5zaW4obikscz1NYXRoLnRhbihNYXRoLlBJLzQtbi8yKS9NYXRoLnBvdygoMS1zKS8oMStzKSxvLzIpLG49LWkqTWF0aC5sb2coTWF0aC5tYXgocywxZS0xMCkpO3JldHVybiBuZXcgcCh0LmxuZyplKmksbil9LHVucHJvamVjdDpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT0xODAvTWF0aC5QSSxuPXRoaXMuUixvPXRoaXMuUl9NSU5PUi9uLHM9TWF0aC5zcXJ0KDEtbypvKSxyPU1hdGguZXhwKC10LnkvbiksYT1NYXRoLlBJLzItMipNYXRoLmF0YW4ociksaD0wLGw9LjE7aDwxNSYmMWUtNzxNYXRoLmFicyhsKTtoKyspZT1zKk1hdGguc2luKGEpLGU9TWF0aC5wb3coKDEtZSkvKDErZSkscy8yKSxhKz1sPU1hdGguUEkvMi0yKk1hdGguYXRhbihyKmUpLWE7cmV0dXJuIG5ldyB2KGEqaSx0LngqaS9uKX19LHd0PXtfX3Byb3RvX186bnVsbCxMb25MYXQ6eXQsTWVyY2F0b3I6eHQsU3BoZXJpY2FsTWVyY2F0b3I6cnR9LFB0PWwoe30sc3Qse2NvZGU6IkVQU0c6MzM5NSIscHJvamVjdGlvbjp4dCx0cmFuc2Zvcm1hdGlvbjpodChidD0uNS8oTWF0aC5QSSp4dC5SKSwuNSwtYnQsLjUpfSksbGk9bCh7fSxzdCx7Y29kZToiRVBTRzo0MzI2Iixwcm9qZWN0aW9uOnl0LHRyYW5zZm9ybWF0aW9uOmh0KDEvMTgwLDEsLTEvMTgwLC41KX0pLEx0PWwoe30sb3Qse3Byb2plY3Rpb246eXQsdHJhbnNmb3JtYXRpb246aHQoMSwwLC0xLDApLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygyLHQpfSx6b29tOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMn0sZGlzdGFuY2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLmxuZy10LmxuZyxlPWUubGF0LXQubGF0O3JldHVybiBNYXRoLnNxcnQoaSppK2UqZSl9LGluZmluaXRlOiEwfSksbz0ob3QuRWFydGg9c3Qsb3QuRVBTRzMzOTU9UHQsb3QuRVBTRzM4NTc9bHQsb3QuRVBTRzkwMDkxMz11dCxvdC5FUFNHNDMyNj1saSxvdC5TaW1wbGU9THQsaXQuZXh0ZW5kKHtvcHRpb25zOntwYW5lOiJvdmVybGF5UGFuZSIsYXR0cmlidXRpb246bnVsbCxidWJibGluZ01vdXNlRXZlbnRzOiEwfSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGRMYXllcih0aGlzKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW1vdmVGcm9tKHRoaXMuX21hcHx8dGhpcy5fbWFwVG9BZGQpfSxyZW1vdmVGcm9tOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LnJlbW92ZUxheWVyKHRoaXMpLHRoaXN9LGdldFBhbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcC5nZXRQYW5lKHQ\/dGhpcy5vcHRpb25zW3RdfHx0OnRoaXMub3B0aW9ucy5wYW5lKX0sYWRkSW50ZXJhY3RpdmVUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcC5fdGFyZ2V0c1toKHQpXT10aGlzfSxyZW1vdmVJbnRlcmFjdGl2ZVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRoaXMuX21hcC5fdGFyZ2V0c1toKHQpXSx0aGlzfSxnZXRBdHRyaWJ1dGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRpb259LF9sYXllckFkZDpmdW5jdGlvbih0KXt2YXIgZSxpPXQudGFyZ2V0O2kuaGFzTGF5ZXIodGhpcykmJih0aGlzLl9tYXA9aSx0aGlzLl96b29tQW5pbWF0ZWQ9aS5fem9vbUFuaW1hdGVkLHRoaXMuZ2V0RXZlbnRzJiYoZT10aGlzLmdldEV2ZW50cygpLGkub24oZSx0aGlzKSx0aGlzLm9uY2UoInJlbW92ZSIsZnVuY3Rpb24oKXtpLm9mZihlLHRoaXMpfSx0aGlzKSksdGhpcy5vbkFkZChpKSx0aGlzLmZpcmUoImFkZCIpLGkuZmlyZSgibGF5ZXJhZGQiLHtsYXllcjp0aGlzfSkpfX0pKSx1aT0oQS5pbmNsdWRlKHthZGRMYXllcjpmdW5jdGlvbih0KXt2YXIgZTtpZih0Ll9sYXllckFkZClyZXR1cm4gZT1oKHQpLHRoaXMuX2xheWVyc1tlXXx8KCh0aGlzLl9sYXllcnNbZV09dCkuX21hcFRvQWRkPXRoaXMsdC5iZWZvcmVBZGQmJnQuYmVmb3JlQWRkKHRoaXMpLHRoaXMud2hlblJlYWR5KHQuX2xheWVyQWRkLHQpKSx0aGlzO3Rocm93IG5ldyBFcnJvcigiVGhlIHByb3ZpZGVkIG9iamVjdCBpcyBub3QgYSBMYXllci4iKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9aCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdJiYodGhpcy5fbG9hZGVkJiZ0Lm9uUmVtb3ZlKHRoaXMpLGRlbGV0ZSB0aGlzLl9sYXllcnNbZV0sdGhpcy5fbG9hZGVkJiYodGhpcy5maXJlKCJsYXllcnJlbW92ZSIse2xheWVyOnR9KSx0LmZpcmUoInJlbW92ZSIpKSx0Ll9tYXA9dC5fbWFwVG9BZGQ9bnVsbCksdGhpc30saGFzTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGgodClpbiB0aGlzLl9sYXllcnN9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30sX2FkZExheWVyczpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPSh0PXQ\/ZCh0KT90Olt0XTpbXSkubGVuZ3RoO2U8aTtlKyspdGhpcy5hZGRMYXllcih0W2VdKX0sX2FkZFpvb21MaW1pdDpmdW5jdGlvbih0KXtpc05hTih0Lm9wdGlvbnMubWF4Wm9vbSkmJmlzTmFOKHQub3B0aW9ucy5taW5ab29tKXx8KHRoaXMuX3pvb21Cb3VuZExheWVyc1toKHQpXT10LHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSl9LF9yZW1vdmVab29tTGltaXQ6ZnVuY3Rpb24odCl7dD1oKHQpO3RoaXMuX3pvb21Cb3VuZExheWVyc1t0XSYmKGRlbGV0ZSB0aGlzLl96b29tQm91bmRMYXllcnNbdF0sdGhpcy5fdXBkYXRlWm9vbUxldmVscygpKX0sX3VwZGF0ZVpvb21MZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdCxlPTEvMCxpPS0xLzAsbj10aGlzLl9nZXRab29tU3BhbigpO2Zvcih0IGluIHRoaXMuX3pvb21Cb3VuZExheWVycyl2YXIgbz10aGlzLl96b29tQm91bmRMYXllcnNbdF0ub3B0aW9ucyxlPXZvaWQgMD09PW8ubWluWm9vbT9lOk1hdGgubWluKGUsby5taW5ab29tKSxpPXZvaWQgMD09PW8ubWF4Wm9vbT9pOk1hdGgubWF4KGksby5tYXhab29tKTt0aGlzLl9sYXllcnNNYXhab29tPWk9PT0tMS8wP3ZvaWQgMDppLHRoaXMuX2xheWVyc01pblpvb209ZT09PTEvMD92b2lkIDA6ZSxuIT09dGhpcy5fZ2V0Wm9vbVNwYW4oKSYmdGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIiksdm9pZCAwPT09dGhpcy5vcHRpb25zLm1heFpvb20mJnRoaXMuX2xheWVyc01heFpvb20mJnRoaXMuZ2V0Wm9vbSgpPnRoaXMuX2xheWVyc01heFpvb20mJnRoaXMuc2V0Wm9vbSh0aGlzLl9sYXllcnNNYXhab29tKSx2b2lkIDA9PT10aGlzLm9wdGlvbnMubWluWm9vbSYmdGhpcy5fbGF5ZXJzTWluWm9vbSYmdGhpcy5nZXRab29tKCk8dGhpcy5fbGF5ZXJzTWluWm9vbSYmdGhpcy5zZXRab29tKHRoaXMuX2xheWVyc01pblpvb20pfX0pLG8uZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGksbjtpZihjKHRoaXMsZSksdGhpcy5fbGF5ZXJzPXt9LHQpZm9yKGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspdGhpcy5hZGRMYXllcih0W2ldKX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9sYXllcnNbZV09dCx0aGlzLl9tYXAmJnRoaXMuX21hcC5hZGRMYXllcih0KSx0aGlzfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt0PXQgaW4gdGhpcy5fbGF5ZXJzP3Q6dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX2xheWVyc1t0XSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1t0XSksZGVsZXRlIHRoaXMuX2xheWVyc1t0XSx0aGlzfSxoYXNMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiB0P3Q6dGhpcy5nZXRMYXllcklkKHQpKWluIHRoaXMuX2xheWVyc30sY2xlYXJMYXllcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIodGhpcy5yZW1vdmVMYXllcix0aGlzKX0saW52b2tlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Zm9yKGUgaW4gdGhpcy5fbGF5ZXJzKShpPXRoaXMuX2xheWVyc1tlXSlbdF0mJmlbdF0uYXBwbHkoaSxuKTtyZXR1cm4gdGhpc30sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5lYWNoTGF5ZXIodC5hZGRMYXllcix0KX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5lYWNoTGF5ZXIodC5yZW1vdmVMYXllcix0KX0sZWFjaExheWVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIHRoaXMuX2xheWVycyl0LmNhbGwoZSx0aGlzLl9sYXllcnNbaV0pO3JldHVybiB0aGlzfSxnZXRMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF5ZXJzW3RdfSxnZXRMYXllcnM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIodC5wdXNoLHQpLHR9LHNldFpJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZva2UoInNldFpJbmRleCIsdCl9LGdldExheWVySWQ6aH0pKSxjaT11aS5leHRlbmQoe2FkZExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpP3RoaXM6KHQuYWRkRXZlbnRQYXJlbnQodGhpcyksdWkucHJvdG90eXBlLmFkZExheWVyLmNhbGwodGhpcyx0KSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk\/KCh0PXQgaW4gdGhpcy5fbGF5ZXJzP3RoaXMuX2xheWVyc1t0XTp0KS5yZW1vdmVFdmVudFBhcmVudCh0aGlzKSx1aS5wcm90b3R5cGUucmVtb3ZlTGF5ZXIuY2FsbCh0aGlzLHQpLHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLHtsYXllcjp0fSkpOnRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZSgic2V0U3R5bGUiLHQpfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnZva2UoImJyaW5nVG9Gcm9udCIpfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludm9rZSgiYnJpbmdUb0JhY2siKX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgcztmb3IodCBpbiB0aGlzLl9sYXllcnMpe3ZhciBpPXRoaXMuX2xheWVyc1t0XTtlLmV4dGVuZChpLmdldEJvdW5kcz9pLmdldEJvdW5kcygpOmkuZ2V0TGF0TG5nKCkpfXJldHVybiBlfX0pLGRpPWV0LmV4dGVuZCh7b3B0aW9uczp7cG9wdXBBbmNob3I6WzAsMF0sdG9vbHRpcEFuY2hvcjpbMCwwXSxjcm9zc09yaWdpbjohMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtjKHRoaXMsdCl9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oImljb24iLHQpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oInNoYWRvdyIsdCl9LF9jcmVhdGVJY29uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0SWNvblVybCh0KTtpZihpKXJldHVybiBpPXRoaXMuX2NyZWF0ZUltZyhpLGUmJiJJTUciPT09ZS50YWdOYW1lP2U6bnVsbCksdGhpcy5fc2V0SWNvblN0eWxlcyhpLHQpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJiIiIT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2lufHwoaS5jcm9zc09yaWdpbj0hMD09PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbj8iIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLGk7aWYoImljb24iPT09dCl0aHJvdyBuZXcgRXJyb3IoImljb25Vcmwgbm90IHNldCBpbiBJY29uIG9wdGlvbnMgKHNlZSB0aGUgZG9jcykuIik7cmV0dXJuIG51bGx9LF9zZXRJY29uU3R5bGVzOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5vcHRpb25zLG49aVtlKyJTaXplIl0sbj1tKG49Im51bWJlciI9PXR5cGVvZiBuP1tuLG5dOm4pLG89bSgic2hhZG93Ij09PWUmJmkuc2hhZG93QW5jaG9yfHxpLmljb25BbmNob3J8fG4mJm4uZGl2aWRlQnkoMiwhMCkpO3QuY2xhc3NOYW1lPSJsZWFmbGV0LW1hcmtlci0iK2UrIiAiKyhpLmNsYXNzTmFtZXx8IiIpLG8mJih0LnN0eWxlLm1hcmdpbkxlZnQ9LW8ueCsicHgiLHQuc3R5bGUubWFyZ2luVG9wPS1vLnkrInB4IiksbiYmKHQuc3R5bGUud2lkdGg9bi54KyJweCIsdC5zdHlsZS5oZWlnaHQ9bi55KyJweCIpfSxfY3JlYXRlSW1nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKGU9ZXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLnNyYz10LGV9LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBiLnJldGluYSYmdGhpcy5vcHRpb25zW3QrIlJldGluYVVybCJdfHx0aGlzLm9wdGlvbnNbdCsiVXJsIl19fSk7dmFyIF9pPWRpLmV4dGVuZCh7b3B0aW9uczp7aWNvblVybDoibWFya2VyLWljb24ucG5nIixpY29uUmV0aW5hVXJsOiJtYXJrZXItaWNvbi0yeC5wbmciLHNoYWRvd1VybDoibWFya2VyLXNoYWRvdy5wbmciLGljb25TaXplOlsyNSw0MV0saWNvbkFuY2hvcjpbMTIsNDFdLHBvcHVwQW5jaG9yOlsxLC0zNF0sdG9vbHRpcEFuY2hvcjpbMTYsLTI4XSxzaGFkb3dTaXplOls0MSw0MV19LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgX2kuaW1hZ2VQYXRoJiYoX2kuaW1hZ2VQYXRoPXRoaXMuX2RldGVjdEljb25QYXRoKCkpLCh0aGlzLm9wdGlvbnMuaW1hZ2VQYXRofHxfaS5pbWFnZVBhdGgpK2RpLnByb3RvdHlwZS5fZ2V0SWNvblVybC5jYWxsKHRoaXMsdCl9LF9zdHJpcFVybDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSxpKXtyZXR1cm4oZT1lLmV4ZWModCkpJiZlW2ldfXJldHVybih0PWUodCwvXnVybFwoKFsnIl0pPyguKylcMVwpJC8sMikpJiZlKHQsL14oLiopbWFya2VyLWljb25cLnBuZyQvLDEpfSxfZGV0ZWN0SWNvblBhdGg6ZnVuY3Rpb24oKXt2YXIgdD1QKCJkaXYiLCJsZWFmbGV0LWRlZmF1bHQtaWNvbi1wYXRoIixkb2N1bWVudC5ib2R5KSxlPXBlKHQsImJhY2tncm91bmQtaW1hZ2UiKXx8cGUodCwiYmFja2dyb3VuZEltYWdlIik7cmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksKGU9dGhpcy5fc3RyaXBVcmwoZSkpP2U6KHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tocmVmJD0ibGVhZmxldC5jc3MiXScpKT90LmhyZWYuc3Vic3RyaW5nKDAsdC5ocmVmLmxlbmd0aC0ibGVhZmxldC5jc3MiLmxlbmd0aC0xKToiIn19KSxwaT1uLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLl9tYXJrZXI9dH0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXJrZXIuX2ljb247dGhpcy5fZHJhZ2dhYmxlfHwodGhpcy5fZHJhZ2dhYmxlPW5ldyBYZSh0LHQsITApKSx0aGlzLl9kcmFnZ2FibGUub24oe2RyYWdzdGFydDp0aGlzLl9vbkRyYWdTdGFydCxwcmVkcmFnOnRoaXMuX29uUHJlRHJhZyxkcmFnOnRoaXMuX29uRHJhZyxkcmFnZW5kOnRoaXMuX29uRHJhZ0VuZH0sdGhpcykuZW5hYmxlKCksTSh0LCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQscHJlZHJhZzp0aGlzLl9vblByZURyYWcsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLmRpc2FibGUoKSx0aGlzLl9tYXJrZXIuX2ljb24mJnoodGhpcy5fbWFya2VyLl9pY29uLCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0sbW92ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ2dhYmxlJiZ0aGlzLl9kcmFnZ2FibGUuX21vdmVkfSxfYWRqdXN0UGFuOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcmtlcixpPWUuX21hcCxuPXRoaXMuX21hcmtlci5vcHRpb25zLmF1dG9QYW5TcGVlZCxvPXRoaXMuX21hcmtlci5vcHRpb25zLmF1dG9QYW5QYWRkaW5nLHM9UGUoZS5faWNvbikscj1pLmdldFBpeGVsQm91bmRzKCksYT1pLmdldFBpeGVsT3JpZ2luKCksYT1fKHIubWluLl9zdWJ0cmFjdChhKS5hZGQobyksci5tYXguX3N1YnRyYWN0KGEpLnN1YnRyYWN0KG8pKTthLmNvbnRhaW5zKHMpfHwobz1tKChNYXRoLm1heChhLm1heC54LHMueCktYS5tYXgueCkvKHIubWF4LngtYS5tYXgueCktKE1hdGgubWluKGEubWluLngscy54KS1hLm1pbi54KS8oci5taW4ueC1hLm1pbi54KSwoTWF0aC5tYXgoYS5tYXgueSxzLnkpLWEubWF4LnkpLyhyLm1heC55LWEubWF4LnkpLShNYXRoLm1pbihhLm1pbi55LHMueSktYS5taW4ueSkvKHIubWluLnktYS5taW4ueSkpLm11bHRpcGx5QnkobiksaS5wYW5CeShvLHthbmltYXRlOiExfSksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MuX2FkZChvKSx0aGlzLl9kcmFnZ2FibGUuX3N0YXJ0UG9zLl9hZGQobyksWihlLl9pY29uLHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zKSx0aGlzLl9vbkRyYWcodCksdGhpcy5fcGFuUmVxdWVzdD14KHRoaXMuX2FkanVzdFBhbi5iaW5kKHRoaXMsdCkpKX0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fb2xkTGF0TG5nPXRoaXMuX21hcmtlci5nZXRMYXRMbmcoKSx0aGlzLl9tYXJrZXIuY2xvc2VQb3B1cCYmdGhpcy5fbWFya2VyLmNsb3NlUG9wdXAoKSx0aGlzLl9tYXJrZXIuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0Iil9LF9vblByZURyYWc6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhbiYmKHIodGhpcy5fcGFuUmVxdWVzdCksdGhpcy5fcGFuUmVxdWVzdD14KHRoaXMuX2FkanVzdFBhbi5iaW5kKHRoaXMsdCkpKX0sX29uRHJhZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXJrZXIsaT1lLl9zaGFkb3csbj1QZShlLl9pY29uKSxvPWUuX21hcC5sYXllclBvaW50VG9MYXRMbmcobik7aSYmWihpLG4pLGUuX2xhdGxuZz1vLHQubGF0bG5nPW8sdC5vbGRMYXRMbmc9dGhpcy5fb2xkTGF0TG5nLGUuZmlyZSgibW92ZSIsdCkuZmlyZSgiZHJhZyIsdCl9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7cih0aGlzLl9wYW5SZXF1ZXN0KSxkZWxldGUgdGhpcy5fb2xkTGF0TG5nLHRoaXMuX21hcmtlci5maXJlKCJtb3ZlZW5kIikuZmlyZSgiZHJhZ2VuZCIsdCl9fSksbWk9by5leHRlbmQoe29wdGlvbnM6e2ljb246bmV3IF9pLGludGVyYWN0aXZlOiEwLGtleWJvYXJkOiEwLHRpdGxlOiIiLGFsdDoiTWFya2VyIix6SW5kZXhPZmZzZXQ6MCxvcGFjaXR5OjEscmlzZU9uSG92ZXI6ITEscmlzZU9mZnNldDoyNTAscGFuZToibWFya2VyUGFuZSIsc2hhZG93UGFuZToic2hhZG93UGFuZSIsYnViYmxpbmdNb3VzZUV2ZW50czohMSxhdXRvUGFuT25Gb2N1czohMCxkcmFnZ2FibGU6ITEsYXV0b1BhbjohMSxhdXRvUGFuUGFkZGluZzpbNTAsNTBdLGF1dG9QYW5TcGVlZDoxMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe2ModGhpcyxlKSx0aGlzLl9sYXRsbmc9dyh0KX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fem9vbUFuaW1hdGVkPXRoaXMuX3pvb21BbmltYXRlZCYmdC5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb24sdGhpcy5fem9vbUFuaW1hdGVkJiZ0Lm9uKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyksdGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLmVuYWJsZWQoKSYmKHRoaXMub3B0aW9ucy5kcmFnZ2FibGU9ITAsdGhpcy5kcmFnZ2luZy5yZW1vdmVIb29rcygpKSxkZWxldGUgdGhpcy5kcmFnZ2luZyx0aGlzLl96b29tQW5pbWF0ZWQmJnQub2ZmKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyksdGhpcy5fcmVtb3ZlSWNvbigpLHRoaXMuX3JlbW92ZVNoYWRvdygpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXtyZXR1cm57em9vbTp0aGlzLnVwZGF0ZSx2aWV3cmVzZXQ6dGhpcy51cGRhdGV9fSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbGF0bG5nO3JldHVybiB0aGlzLl9sYXRsbmc9dyh0KSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgibW92ZSIse29sZExhdExuZzplLGxhdGxuZzp0aGlzLl9sYXRsbmd9KX0sc2V0WkluZGV4T2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4T2Zmc2V0PXQsdGhpcy51cGRhdGUoKX0sZ2V0SWNvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbn0sc2V0SWNvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmljb249dCx0aGlzLl9tYXAmJih0aGlzLl9pbml0SWNvbigpLHRoaXMudXBkYXRlKCkpLHRoaXMuX3BvcHVwJiZ0aGlzLmJpbmRQb3B1cCh0aGlzLl9wb3B1cCx0aGlzLl9wb3B1cC5vcHRpb25zKSx0aGlzfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb259LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9pY29uJiZ0aGlzLl9tYXAmJih0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKS5yb3VuZCgpLHRoaXMuX3NldFBvcyh0KSksdGhpc30sX2luaXRJY29uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9ImxlYWZsZXQtem9vbS0iKyh0aGlzLl96b29tQW5pbWF0ZWQ\/ImFuaW1hdGVkIjoiaGlkZSIpLGk9dC5pY29uLmNyZWF0ZUljb24odGhpcy5faWNvbiksbj0hMSxpPShpIT09dGhpcy5faWNvbiYmKHRoaXMuX2ljb24mJnRoaXMuX3JlbW92ZUljb24oKSxuPSEwLHQudGl0bGUmJihpLnRpdGxlPXQudGl0bGUpLCJJTUciPT09aS50YWdOYW1lJiYoaS5hbHQ9dC5hbHR8fCIiKSksTShpLGUpLHQua2V5Ym9hcmQmJihpLnRhYkluZGV4PSIwIixpLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpKSx0aGlzLl9pY29uPWksdC5yaXNlT25Ib3ZlciYmdGhpcy5vbih7bW91c2VvdmVyOnRoaXMuX2JyaW5nVG9Gcm9udCxtb3VzZW91dDp0aGlzLl9yZXNldFpJbmRleH0pLHRoaXMub3B0aW9ucy5hdXRvUGFuT25Gb2N1cyYmUyhpLCJmb2N1cyIsdGhpcy5fcGFuT25Gb2N1cyx0aGlzKSx0Lmljb24uY3JlYXRlU2hhZG93KHRoaXMuX3NoYWRvdykpLG89ITE7aSE9PXRoaXMuX3NoYWRvdyYmKHRoaXMuX3JlbW92ZVNoYWRvdygpLG89ITApLGkmJihNKGksZSksaS5hbHQ9IiIpLHRoaXMuX3NoYWRvdz1pLHQub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksbiYmdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksdGhpcy5faW5pdEludGVyYWN0aW9uKCksaSYmbyYmdGhpcy5nZXRQYW5lKHQuc2hhZG93UGFuZSkuYXBwZW5kQ2hpbGQodGhpcy5fc2hhZG93KX0sX3JlbW92ZUljb246ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMucmlzZU9uSG92ZXImJnRoaXMub2ZmKHttb3VzZW92ZXI6dGhpcy5fYnJpbmdUb0Zyb250LG1vdXNlb3V0OnRoaXMuX3Jlc2V0WkluZGV4fSksdGhpcy5vcHRpb25zLmF1dG9QYW5PbkZvY3VzJiZrKHRoaXMuX2ljb24sImZvY3VzIix0aGlzLl9wYW5PbkZvY3VzLHRoaXMpLFQodGhpcy5faWNvbiksdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pY29uKSx0aGlzLl9pY29uPW51bGx9LF9yZW1vdmVTaGFkb3c6ZnVuY3Rpb24oKXt0aGlzLl9zaGFkb3cmJlQodGhpcy5fc2hhZG93KSx0aGlzLl9zaGFkb3c9bnVsbH0sX3NldFBvczpmdW5jdGlvbih0KXt0aGlzLl9pY29uJiZaKHRoaXMuX2ljb24sdCksdGhpcy5fc2hhZG93JiZaKHRoaXMuX3NoYWRvdyx0KSx0aGlzLl96SW5kZXg9dC55K3RoaXMub3B0aW9ucy56SW5kZXhPZmZzZXQsdGhpcy5fcmVzZXRaSW5kZXgoKX0sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbih0KXt0aGlzLl9pY29uJiYodGhpcy5faWNvbi5zdHlsZS56SW5kZXg9dGhpcy5fekluZGV4K3QpfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dD10aGlzLl9tYXAuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcsdC56b29tLHQuY2VudGVyKS5yb3VuZCgpO3RoaXMuX3NldFBvcyh0KX0sX2luaXRJbnRlcmFjdGlvbjpmdW5jdGlvbigpe3ZhciB0O3RoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmKE0odGhpcy5faWNvbiwibGVhZmxldC1pbnRlcmFjdGl2ZSIpLHRoaXMuYWRkSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5faWNvbikscGkmJih0PXRoaXMub3B0aW9ucy5kcmFnZ2FibGUsdGhpcy5kcmFnZ2luZyYmKHQ9dGhpcy5kcmFnZ2luZy5lbmFibGVkKCksdGhpcy5kcmFnZ2luZy5kaXNhYmxlKCkpLHRoaXMuZHJhZ2dpbmc9bmV3IHBpKHRoaXMpLHQmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlKCkpKX0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxfdXBkYXRlT3BhY2l0eTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5vcGFjaXR5O3RoaXMuX2ljb24mJkModGhpcy5faWNvbix0KSx0aGlzLl9zaGFkb3cmJkModGhpcy5fc2hhZG93LHQpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KHRoaXMub3B0aW9ucy5yaXNlT2Zmc2V0KX0sX3Jlc2V0WkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KDApfSxfcGFuT25Gb2N1czpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9tYXA7aSYmKHQ9KGU9dGhpcy5vcHRpb25zLmljb24ub3B0aW9ucykuaWNvblNpemU\/bShlLmljb25TaXplKTptKDAsMCksZT1lLmljb25BbmNob3I\/bShlLmljb25BbmNob3IpOm0oMCwwKSxpLnBhbkluc2lkZSh0aGlzLl9sYXRsbmcse3BhZGRpbmdUb3BMZWZ0OmUscGFkZGluZ0JvdHRvbVJpZ2h0OnQuc3VidHJhY3QoZSl9KSl9LF9nZXRQb3B1cEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbi5vcHRpb25zLnBvcHVwQW5jaG9yfSxfZ2V0VG9vbHRpcEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbi5vcHRpb25zLnRvb2x0aXBBbmNob3J9fSk7dmFyIGZpPW8uZXh0ZW5kKHtvcHRpb25zOntzdHJva2U6ITAsY29sb3I6IiMzMzg4ZmYiLHdlaWdodDozLG9wYWNpdHk6MSxsaW5lQ2FwOiJyb3VuZCIsbGluZUpvaW46InJvdW5kIixkYXNoQXJyYXk6bnVsbCxkYXNoT2Zmc2V0Om51bGwsZmlsbDohMSxmaWxsQ29sb3I6bnVsbCxmaWxsT3BhY2l0eTouMixmaWxsUnVsZToiZXZlbm9kZCIsaW50ZXJhY3RpdmU6ITAsYnViYmxpbmdNb3VzZUV2ZW50czohMH0sYmVmb3JlQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyPXQuZ2V0UmVuZGVyZXIodGhpcyl9LG9uQWRkOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX2luaXRQYXRoKHRoaXMpLHRoaXMuX3Jlc2V0KCksdGhpcy5fcmVuZGVyZXIuX2FkZFBhdGgodGhpcyl9LG9uUmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX3JlbW92ZVBhdGgodGhpcyl9LHJlZHJhdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX3JlbmRlcmVyLl91cGRhdGVQYXRoKHRoaXMpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHRoaXMsdCksdGhpcy5fcmVuZGVyZXImJih0aGlzLl9yZW5kZXJlci5fdXBkYXRlU3R5bGUodGhpcyksdGhpcy5vcHRpb25zLnN0cm9rZSYmdCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIndlaWdodCIpJiZ0aGlzLl91cGRhdGVCb3VuZHMoKSksdGhpc30sYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyJiZ0aGlzLl9yZW5kZXJlci5fYnJpbmdUb0Zyb250KHRoaXMpLHRoaXN9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyJiZ0aGlzLl9yZW5kZXJlci5fYnJpbmdUb0JhY2sodGhpcyksdGhpc30sZ2V0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXRofSxfcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0KCksdGhpcy5fdXBkYXRlKCl9LF9jbGlja1RvbGVyYW5jZTpmdW5jdGlvbigpe3JldHVybih0aGlzLm9wdGlvbnMuc3Ryb2tlP3RoaXMub3B0aW9ucy53ZWlnaHQvMjowKSsodGhpcy5fcmVuZGVyZXIub3B0aW9ucy50b2xlcmFuY2V8fDApfX0pLGdpPWZpLmV4dGVuZCh7b3B0aW9uczp7ZmlsbDohMCxyYWRpdXM6MTB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtjKHRoaXMsZSksdGhpcy5fbGF0bG5nPXcodCksdGhpcy5fcmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHNldExhdExuZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9sYXRsbmc7cmV0dXJuIHRoaXMuX2xhdGxuZz13KHQpLHRoaXMucmVkcmF3KCksdGhpcy5maXJlKCJtb3ZlIix7b2xkTGF0TG5nOmUsbGF0bG5nOnRoaXMuX2xhdGxuZ30pfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5yYWRpdXM9dGhpcy5fcmFkaXVzPXQsdGhpcy5yZWRyYXcoKX0sZ2V0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1c30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5yYWRpdXN8fHRoaXMuX3JhZGl1cztyZXR1cm4gZmkucHJvdG90eXBlLnNldFN0eWxlLmNhbGwodGhpcyx0KSx0aGlzLnNldFJhZGl1cyhlKSx0aGlzfSxfcHJvamVjdDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSx0aGlzLl91cGRhdGVCb3VuZHMoKX0sX3VwZGF0ZUJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JhZGl1cyxlPXRoaXMuX3JhZGl1c1l8fHQsaT10aGlzLl9jbGlja1RvbGVyYW5jZSgpLHQ9W3QraSxlK2ldO3RoaXMuX3B4Qm91bmRzPW5ldyBmKHRoaXMuX3BvaW50LnN1YnRyYWN0KHQpLHRoaXMuX3BvaW50LmFkZCh0KSl9LF91cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZVBhdGgoKX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5fdXBkYXRlQ2lyY2xlKHRoaXMpfSxfZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaXVzJiYhdGhpcy5fcmVuZGVyZXIuX2JvdW5kcy5pbnRlcnNlY3RzKHRoaXMuX3B4Qm91bmRzKX0sX2NvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLl9wb2ludCk8PXRoaXMuX3JhZGl1cyt0aGlzLl9jbGlja1RvbGVyYW5jZSgpfX0pO3ZhciB2aT1naS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlLGkpe2lmKGModGhpcyxlPSJudW1iZXIiPT10eXBlb2YgZT9sKHt9LGkse3JhZGl1czplfSk6ZSksdGhpcy5fbGF0bG5nPXcodCksaXNOYU4odGhpcy5vcHRpb25zLnJhZGl1cykpdGhyb3cgbmV3IEVycm9yKCJDaXJjbGUgcmFkaXVzIGNhbm5vdCBiZSBOYU4iKTt0aGlzLl9tUmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHNldFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbVJhZGl1cz10LHRoaXMucmVkcmF3KCl9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tUmFkaXVzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1bdGhpcy5fcmFkaXVzLHRoaXMuX3JhZGl1c1l8fHRoaXMuX3JhZGl1c107cmV0dXJuIG5ldyBzKHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuc3VidHJhY3QodCkpLHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuYWRkKHQpKSl9LHNldFN0eWxlOmZpLnByb3RvdHlwZS5zZXRTdHlsZSxfcHJvamVjdDpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scz10aGlzLl9sYXRsbmcubG5nLHI9dGhpcy5fbGF0bG5nLmxhdCxhPXRoaXMuX21hcCxoPWEub3B0aW9ucy5jcnM7aC5kaXN0YW5jZT09PXN0LmRpc3RhbmNlPyhuPU1hdGguUEkvMTgwLG89dGhpcy5fbVJhZGl1cy9zdC5SL24sdD1hLnByb2plY3QoW3IrbyxzXSksZT1hLnByb2plY3QoW3ItbyxzXSksZT10LmFkZChlKS5kaXZpZGVCeSgyKSxpPWEudW5wcm9qZWN0KGUpLmxhdCxuPU1hdGguYWNvcygoTWF0aC5jb3MobypuKS1NYXRoLnNpbihyKm4pKk1hdGguc2luKGkqbikpLyhNYXRoLmNvcyhyKm4pKk1hdGguY29zKGkqbikpKS9uLCFpc05hTihuKSYmMCE9PW58fChuPW8vTWF0aC5jb3MoTWF0aC5QSS8xODAqcikpLHRoaXMuX3BvaW50PWUuc3VidHJhY3QoYS5nZXRQaXhlbE9yaWdpbigpKSx0aGlzLl9yYWRpdXM9aXNOYU4obik\/MDplLngtYS5wcm9qZWN0KFtpLHMtbl0pLngsdGhpcy5fcmFkaXVzWT1lLnktdC55KToobz1oLnVucHJvamVjdChoLnByb2plY3QodGhpcy5fbGF0bG5nKS5zdWJ0cmFjdChbdGhpcy5fbVJhZGl1cywwXSkpLHRoaXMuX3BvaW50PWEubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksdGhpcy5fcmFkaXVzPXRoaXMuX3BvaW50LngtYS5sYXRMbmdUb0xheWVyUG9pbnQobykueCksdGhpcy5fdXBkYXRlQm91bmRzKCl9fSk7dmFyIHlpPWZpLmV4dGVuZCh7b3B0aW9uczp7c21vb3RoRmFjdG9yOjEsbm9DbGlwOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7Yyh0aGlzLGUpLHRoaXMuX3NldExhdExuZ3ModCl9LGdldExhdExuZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nc30sc2V0TGF0TG5nczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc2V0TGF0TG5ncyh0KSx0aGlzLnJlZHJhdygpfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2xhdGxuZ3MubGVuZ3RofSxjbG9zZXN0TGF5ZXJQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MS8wLGk9bnVsbCxuPXJpLG89MCxzPXRoaXMuX3BhcnRzLmxlbmd0aDtvPHM7bysrKWZvcih2YXIgcj10aGlzLl9wYXJ0c1tvXSxhPTEsaD1yLmxlbmd0aDthPGg7YSsrKXt2YXIgbCx1LGM9bih0LGw9clthLTFdLHU9clthXSwhMCk7YzxlJiYoZT1jLGk9bih0LGwsdSkpfXJldHVybiBpJiYoaS5kaXN0YW5jZT1NYXRoLnNxcnQoZSkpLGl9LGdldENlbnRlcjpmdW5jdGlvbigpe2lmKHRoaXMuX21hcClyZXR1cm4gaGkodGhpcy5fZGVmYXVsdFNoYXBlKCksdGhpcy5fbWFwLm9wdGlvbnMuY3JzKTt0aHJvdyBuZXcgRXJyb3IoIk11c3QgYWRkIGxheWVyIHRvIG1hcCBiZWZvcmUgdXNpbmcgZ2V0Q2VudGVyKCkiKX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JvdW5kc30sYWRkTGF0TG5nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9ZXx8dGhpcy5fZGVmYXVsdFNoYXBlKCksdD13KHQpLGUucHVzaCh0KSx0aGlzLl9ib3VuZHMuZXh0ZW5kKHQpLHRoaXMucmVkcmF3KCl9LF9zZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3RoaXMuX2JvdW5kcz1uZXcgcyx0aGlzLl9sYXRsbmdzPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHQpfSxfZGVmYXVsdFNoYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5fbGF0bG5ncyk\/dGhpcy5fbGF0bG5nczp0aGlzLl9sYXRsbmdzWzBdfSxfY29udmVydExhdExuZ3M6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLGk9SSh0KSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKWk\/KGVbbl09dyh0W25dKSx0aGlzLl9ib3VuZHMuZXh0ZW5kKGVbbl0pKTplW25dPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHRbbl0pO3JldHVybiBlfSxfcHJvamVjdDpmdW5jdGlvbigpe3ZhciB0PW5ldyBmO3RoaXMuX3JpbmdzPVtdLHRoaXMuX3Byb2plY3RMYXRsbmdzKHRoaXMuX2xhdGxuZ3MsdGhpcy5fcmluZ3MsdCksdGhpcy5fYm91bmRzLmlzVmFsaWQoKSYmdC5pc1ZhbGlkKCkmJih0aGlzLl9yYXdQeEJvdW5kcz10LHRoaXMuX3VwZGF0ZUJvdW5kcygpKX0sX3VwZGF0ZUJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NsaWNrVG9sZXJhbmNlKCksdD1uZXcgcCh0LHQpO3RoaXMuX3Jhd1B4Qm91bmRzJiYodGhpcy5fcHhCb3VuZHM9bmV3IGYoW3RoaXMuX3Jhd1B4Qm91bmRzLm1pbi5zdWJ0cmFjdCh0KSx0aGlzLl9yYXdQeEJvdW5kcy5tYXguYWRkKHQpXSkpfSxfcHJvamVjdExhdGxuZ3M6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG8scz10WzBdaW5zdGFuY2VvZiB2LHI9dC5sZW5ndGg7aWYocyl7Zm9yKG89W10sbj0wO248cjtuKyspb1tuXT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRbbl0pLGkuZXh0ZW5kKG9bbl0pO2UucHVzaChvKX1lbHNlIGZvcihuPTA7bjxyO24rKyl0aGlzLl9wcm9qZWN0TGF0bG5ncyh0W25dLGUsaSl9LF9jbGlwUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcmVuZGVyZXIuX2JvdW5kcztpZih0aGlzLl9wYXJ0cz1bXSx0aGlzLl9weEJvdW5kcyYmdGhpcy5fcHhCb3VuZHMuaW50ZXJzZWN0cyh0KSlpZih0aGlzLm9wdGlvbnMubm9DbGlwKXRoaXMuX3BhcnRzPXRoaXMuX3JpbmdzO2Vsc2UgZm9yKHZhciBlLGksbixvLHM9dGhpcy5fcGFydHMscj0wLGE9MCxoPXRoaXMuX3JpbmdzLmxlbmd0aDtyPGg7cisrKWZvcihlPTAsaT0obz10aGlzLl9yaW5nc1tyXSkubGVuZ3RoO2U8aS0xO2UrKykobj1uaShvW2VdLG9bZSsxXSx0LGUsITApKSYmKHNbYV09c1thXXx8W10sc1thXS5wdXNoKG5bMF0pLG5bMV09PT1vW2UrMV0mJmUhPT1pLTJ8fChzW2FdLnB1c2goblsxXSksYSsrKSl9LF9zaW1wbGlmeVBvaW50czpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9wYXJ0cyxlPXRoaXMub3B0aW9ucy5zbW9vdGhGYWN0b3IsaT0wLG49dC5sZW5ndGg7aTxuO2krKyl0W2ldPWVpKHRbaV0sZSl9LF91cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jbGlwUG9pbnRzKCksdGhpcy5fc2ltcGxpZnlQb2ludHMoKSx0aGlzLl91cGRhdGVQYXRoKCkpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLl91cGRhdGVQb2x5KHRoaXMpfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHIsYSxoPXRoaXMuX2NsaWNrVG9sZXJhbmNlKCk7aWYodGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmNvbnRhaW5zKHQpKWZvcihpPTAscz10aGlzLl9wYXJ0cy5sZW5ndGg7aTxzO2krKylmb3Iobj0wLG89KHI9KGE9dGhpcy5fcGFydHNbaV0pLmxlbmd0aCktMTtuPHI7bz1uKyspaWYoKGV8fDAhPT1uKSYmaWkodCxhW29dLGFbbl0pPD1oKXJldHVybiEwO3JldHVybiExfX0pO3lpLl9mbGF0PWFpO3ZhciB4aT15aS5leHRlbmQoe29wdGlvbnM6e2ZpbGw6ITB9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fbGF0bG5ncy5sZW5ndGh8fCF0aGlzLl9sYXRsbmdzWzBdLmxlbmd0aH0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXJldHVybiAkZSh0aGlzLl9kZWZhdWx0U2hhcGUoKSx0aGlzLl9tYXAub3B0aW9ucy5jcnMpO3Rocm93IG5ldyBFcnJvcigiTXVzdCBhZGQgbGF5ZXIgdG8gbWFwIGJlZm9yZSB1c2luZyBnZXRDZW50ZXIoKSIpfSxfY29udmVydExhdExuZ3M6ZnVuY3Rpb24odCl7dmFyIHQ9eWkucHJvdG90eXBlLl9jb252ZXJ0TGF0TG5ncy5jYWxsKHRoaXMsdCksZT10Lmxlbmd0aDtyZXR1cm4gMjw9ZSYmdFswXWluc3RhbmNlb2YgdiYmdFswXS5lcXVhbHModFtlLTFdKSYmdC5wb3AoKSx0fSxfc2V0TGF0TG5nczpmdW5jdGlvbih0KXt5aS5wcm90b3R5cGUuX3NldExhdExuZ3MuY2FsbCh0aGlzLHQpLEkodGhpcy5fbGF0bG5ncykmJih0aGlzLl9sYXRsbmdzPVt0aGlzLl9sYXRsbmdzXSl9LF9kZWZhdWx0U2hhcGU6ZnVuY3Rpb24oKXtyZXR1cm4oSSh0aGlzLl9sYXRsbmdzWzBdKT90aGlzLl9sYXRsbmdzOnRoaXMuX2xhdGxuZ3NbMF0pWzBdfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlbmRlcmVyLl9ib3VuZHMsZT10aGlzLm9wdGlvbnMud2VpZ2h0LGU9bmV3IHAoZSxlKSx0PW5ldyBmKHQubWluLnN1YnRyYWN0KGUpLHQubWF4LmFkZChlKSk7aWYodGhpcy5fcGFydHM9W10sdGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmludGVyc2VjdHModCkpaWYodGhpcy5vcHRpb25zLm5vQ2xpcCl0aGlzLl9wYXJ0cz10aGlzLl9yaW5ncztlbHNlIGZvcih2YXIgaSxuPTAsbz10aGlzLl9yaW5ncy5sZW5ndGg7bjxvO24rKykoaT1KZSh0aGlzLl9yaW5nc1tuXSx0LCEwKSkubGVuZ3RoJiZ0aGlzLl9wYXJ0cy5wdXNoKGkpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLl91cGRhdGVQb2x5KHRoaXMsITApfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGw9ITE7aWYoIXRoaXMuX3B4Qm91bmRzfHwhdGhpcy5fcHhCb3VuZHMuY29udGFpbnModCkpcmV0dXJuITE7Zm9yKG89MCxhPXRoaXMuX3BhcnRzLmxlbmd0aDtvPGE7bysrKWZvcihzPTAscj0oaD0oZT10aGlzLl9wYXJ0c1tvXSkubGVuZ3RoKS0xO3M8aDtyPXMrKylpPWVbc10sbj1lW3JdLGkueT50LnkhPW4ueT50LnkmJnQueDwobi54LWkueCkqKHQueS1pLnkpLyhuLnktaS55KStpLngmJihsPSFsKTtyZXR1cm4gbHx8eWkucHJvdG90eXBlLl9jb250YWluc1BvaW50LmNhbGwodGhpcyx0LCEwKX19KTt2YXIgd2k9Y2kuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7Yyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG89ZCh0KT90OnQuZmVhdHVyZXM7aWYobyl7Zm9yKGU9MCxpPW8ubGVuZ3RoO2U8aTtlKyspKChuPW9bZV0pLmdlb21ldHJpZXN8fG4uZ2VvbWV0cnl8fG4uZmVhdHVyZXN8fG4uY29vcmRpbmF0ZXMpJiZ0aGlzLmFkZERhdGEobik7cmV0dXJuIHRoaXN9dmFyIHMscj10aGlzLm9wdGlvbnM7cmV0dXJuKCFyLmZpbHRlcnx8ci5maWx0ZXIodCkpJiYocz1iaSh0LHIpKT8ocy5mZWF0dXJlPVppKHQpLHMuZGVmYXVsdE9wdGlvbnM9cy5vcHRpb25zLHRoaXMucmVzZXRTdHlsZShzKSxyLm9uRWFjaEZlYXR1cmUmJnIub25FYWNoRmVhdHVyZSh0LHMpLHRoaXMuYWRkTGF5ZXIocykpOnRoaXN9LHJlc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ\/dGhpcy5lYWNoTGF5ZXIodGhpcy5yZXNldFN0eWxlLHRoaXMpOih0Lm9wdGlvbnM9bCh7fSx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsdGhpcy5vcHRpb25zLnN0eWxlKSx0aGlzKX0sc2V0U3R5bGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe3RoaXMuX3NldExheWVyU3R5bGUodCxlKX0sdGhpcyl9LF9zZXRMYXllclN0eWxlOmZ1bmN0aW9uKHQsZSl7dC5zZXRTdHlsZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKHQuZmVhdHVyZSkpLHQuc2V0U3R5bGUoZSkpfX0pO2Z1bmN0aW9uIGJpKHQsZSl7dmFyIGksbixvLHMscj0iRmVhdHVyZSI9PT10LnR5cGU\/dC5nZW9tZXRyeTp0LGE9cj9yLmNvb3JkaW5hdGVzOm51bGwsaD1bXSxsPWUmJmUucG9pbnRUb0xheWVyLHU9ZSYmZS5jb29yZHNUb0xhdExuZ3x8TGk7aWYoIWEmJiFyKXJldHVybiBudWxsO3N3aXRjaChyLnR5cGUpe2Nhc2UiUG9pbnQiOnJldHVybiBQaShsLHQsaT11KGEpLGUpO2Nhc2UiTXVsdGlQb2ludCI6Zm9yKG89MCxzPWEubGVuZ3RoO288cztvKyspaT11KGFbb10pLGgucHVzaChQaShsLHQsaSxlKSk7cmV0dXJuIG5ldyBjaShoKTtjYXNlIkxpbmVTdHJpbmciOmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gbj1UaShhLCJMaW5lU3RyaW5nIj09PXIudHlwZT8wOjEsdSksbmV3IHlpKG4sZSk7Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIG49VGkoYSwiUG9seWdvbiI9PT1yLnR5cGU\/MToyLHUpLG5ldyB4aShuLGUpO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iobz0wLHM9ci5nZW9tZXRyaWVzLmxlbmd0aDtvPHM7bysrKXt2YXIgYz1iaSh7Z2VvbWV0cnk6ci5nZW9tZXRyaWVzW29dLHR5cGU6IkZlYXR1cmUiLHByb3BlcnRpZXM6dC5wcm9wZXJ0aWVzfSxlKTtjJiZoLnB1c2goYyl9cmV0dXJuIG5ldyBjaShoKTtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjpmb3Iobz0wLHM9ci5mZWF0dXJlcy5sZW5ndGg7bzxzO28rKyl7dmFyIGQ9Ymkoci5mZWF0dXJlc1tvXSxlKTtkJiZoLnB1c2goZCl9cmV0dXJuIG5ldyBjaShoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBHZW9KU09OIG9iamVjdC4iKX19ZnVuY3Rpb24gUGkodCxlLGksbil7cmV0dXJuIHQ\/dChlLGkpOm5ldyBtaShpLG4mJm4ubWFya2Vyc0luaGVyaXRPcHRpb25zJiZuKX1mdW5jdGlvbiBMaSh0KXtyZXR1cm4gbmV3IHYodFsxXSx0WzBdLHRbMl0pfWZ1bmN0aW9uIFRpKHQsZSxpKXtmb3IodmFyIG4sbz1bXSxzPTAscj10Lmxlbmd0aDtzPHI7cysrKW49ZT9UaSh0W3NdLGUtMSxpKTooaXx8TGkpKHRbc10pLG8ucHVzaChuKTtyZXR1cm4gb31mdW5jdGlvbiBNaSh0LGUpe3JldHVybiB2b2lkIDAhPT0odD13KHQpKS5hbHQ\/W2kodC5sbmcsZSksaSh0LmxhdCxlKSxpKHQuYWx0LGUpXTpbaSh0LmxuZyxlKSxpKHQubGF0LGUpXX1mdW5jdGlvbiB6aSh0LGUsaSxuKXtmb3IodmFyIG89W10scz0wLHI9dC5sZW5ndGg7czxyO3MrKylvLnB1c2goZT96aSh0W3NdLEkodFtzXSk\/MDplLTEsaSxuKTpNaSh0W3NdLG4pKTtyZXR1cm4hZSYmaSYmMDxvLmxlbmd0aCYmby5wdXNoKG9bMF0uc2xpY2UoKSksb31mdW5jdGlvbiBDaSh0LGUpe3JldHVybiB0LmZlYXR1cmU\/bCh7fSx0LmZlYXR1cmUse2dlb21ldHJ5OmV9KTpaaShlKX1mdW5jdGlvbiBaaSh0KXtyZXR1cm4iRmVhdHVyZSI9PT10LnR5cGV8fCJGZWF0dXJlQ29sbGVjdGlvbiI9PT10LnR5cGU\/dDp7dHlwZToiRmVhdHVyZSIscHJvcGVydGllczp7fSxnZW9tZXRyeTp0fX1UdD17dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBDaSh0aGlzLHt0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6TWkodGhpcy5nZXRMYXRMbmcoKSx0KX0pfX07ZnVuY3Rpb24gU2kodCxlKXtyZXR1cm4gbmV3IHdpKHQsZSl9bWkuaW5jbHVkZShUdCksdmkuaW5jbHVkZShUdCksZ2kuaW5jbHVkZShUdCkseWkuaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPSFJKHRoaXMuX2xhdGxuZ3MpO3JldHVybiBDaSh0aGlzLHt0eXBlOihlPyJNdWx0aSI6IiIpKyJMaW5lU3RyaW5nIixjb29yZGluYXRlczp6aSh0aGlzLl9sYXRsbmdzLGU\/MTowLCExLHQpfSl9fSkseGkuaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPSFJKHRoaXMuX2xhdGxuZ3MpLGk9ZSYmIUkodGhpcy5fbGF0bG5nc1swXSksdD16aSh0aGlzLl9sYXRsbmdzLGk\/MjplPzE6MCwhMCx0KTtyZXR1cm4gQ2kodGhpcyx7dHlwZTooaT8iTXVsdGkiOiIiKSsiUG9seWdvbiIsY29vcmRpbmF0ZXM6dD1lP3Q6W3RdfSl9fSksdWkuaW5jbHVkZSh7dG9NdWx0aVBvaW50OmZ1bmN0aW9uKGUpe3ZhciBpPVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbih0KXtpLnB1c2godC50b0dlb0pTT04oZSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSksQ2kodGhpcyx7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6aX0pfSx0b0dlb0pTT046ZnVuY3Rpb24oZSl7dmFyIGksbix0PXRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLmdlb21ldHJ5JiZ0aGlzLmZlYXR1cmUuZ2VvbWV0cnkudHlwZTtyZXR1cm4iTXVsdGlQb2ludCI9PT10P3RoaXMudG9NdWx0aVBvaW50KGUpOihpPSJHZW9tZXRyeUNvbGxlY3Rpb24iPT09dCxuPVtdLHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe3QudG9HZW9KU09OJiYodD10LnRvR2VvSlNPTihlKSxpP24ucHVzaCh0Lmdlb21ldHJ5KToiRmVhdHVyZUNvbGxlY3Rpb24iPT09KHQ9WmkodCkpLnR5cGU\/bi5wdXNoLmFwcGx5KG4sdC5mZWF0dXJlcyk6bi5wdXNoKHQpKX0pLGk\/Q2kodGhpcyx7Z2VvbWV0cmllczpuLHR5cGU6Ikdlb21ldHJ5Q29sbGVjdGlvbiJ9KTp7dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOm59KX19KTt2YXIgTXQ9U2ksRWk9by5leHRlbmQoe29wdGlvbnM6e29wYWNpdHk6MSxhbHQ6IiIsaW50ZXJhY3RpdmU6ITEsY3Jvc3NPcmlnaW46ITEsZXJyb3JPdmVybGF5VXJsOiIiLHpJbmRleDoxLGNsYXNzTmFtZToiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fdXJsPXQsdGhpcy5fYm91bmRzPWcoZSksYyh0aGlzLGkpfSxvbkFkZDpmdW5jdGlvbigpe3RoaXMuX2ltYWdlfHwodGhpcy5faW5pdEltYWdlKCksdGhpcy5vcHRpb25zLm9wYWNpdHk8MSYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpKSx0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJihNKHRoaXMuX2ltYWdlLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pbWFnZSkpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2ltYWdlKSx0aGlzLl9yZXNldCgpfSxvblJlbW92ZTpmdW5jdGlvbigpe1QodGhpcy5faW1hZ2UpLHRoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pbWFnZSl9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5faW1hZ2UmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxzZXRTdHlsZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5vcGFjaXR5JiZ0aGlzLnNldE9wYWNpdHkodC5vcGFjaXR5KSx0aGlzfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZmZSh0aGlzLl9pbWFnZSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZnZSh0aGlzLl9pbWFnZSksdGhpc30sc2V0VXJsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl91cmw9dCx0aGlzLl9pbWFnZSYmKHRoaXMuX2ltYWdlLnNyYz10KSx0aGlzfSxzZXRCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2JvdW5kcz1nKHQpLHRoaXMuX21hcCYmdGhpcy5fcmVzZXQoKSx0aGlzfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17em9vbTp0aGlzLl9yZXNldCx2aWV3cmVzZXQ6dGhpcy5fcmVzZXR9O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX2FuaW1hdGVab29tKSx0fSxzZXRaSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXg9dCx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm91bmRzfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ltYWdlfSxfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dmFyIHQ9IklNRyI9PT10aGlzLl91cmwudGFnTmFtZSxlPXRoaXMuX2ltYWdlPXQ\/dGhpcy5fdXJsOlAoImltZyIpO00oZSwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX3pvb21BbmltYXRlZCYmTShlLCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZNKGUsdGhpcy5vcHRpb25zLmNsYXNzTmFtZSksZS5vbnNlbGVjdHN0YXJ0PXUsZS5vbm1vdXNlbW92ZT11LGUub25sb2FkPWEodGhpcy5maXJlLHRoaXMsImxvYWQiKSxlLm9uZXJyb3I9YSh0aGlzLl9vdmVybGF5T25FcnJvcix0aGlzLCJlcnJvciIpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJiIiIT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2lufHwoZS5jcm9zc09yaWdpbj0hMD09PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbj8iIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLHRoaXMub3B0aW9ucy56SW5kZXgmJnRoaXMuX3VwZGF0ZVpJbmRleCgpLHQ\/dGhpcy5fdXJsPWUuc3JjOihlLnNyYz10aGlzLl91cmwsZS5hbHQ9dGhpcy5vcHRpb25zLmFsdCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKHQuem9vbSksdD10aGlzLl9tYXAuX2xhdExuZ0JvdW5kc1RvTmV3TGF5ZXJCb3VuZHModGhpcy5fYm91bmRzLHQuem9vbSx0LmNlbnRlcikubWluO2JlKHRoaXMuX2ltYWdlLHQsZSl9LF9yZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ltYWdlLGU9bmV3IGYodGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ib3VuZHMuZ2V0Tm9ydGhXZXN0KCkpLHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKSksaT1lLmdldFNpemUoKTtaKHQsZS5taW4pLHQuc3R5bGUud2lkdGg9aS54KyJweCIsdC5zdHlsZS5oZWlnaHQ9aS55KyJweCJ9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7Qyh0aGlzLl9pbWFnZSx0aGlzLm9wdGlvbnMub3BhY2l0eSl9LF91cGRhdGVaSW5kZXg6ZnVuY3Rpb24oKXt0aGlzLl9pbWFnZSYmdm9pZCAwIT09dGhpcy5vcHRpb25zLnpJbmRleCYmbnVsbCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJih0aGlzLl9pbWFnZS5zdHlsZS56SW5kZXg9dGhpcy5vcHRpb25zLnpJbmRleCl9LF9vdmVybGF5T25FcnJvcjpmdW5jdGlvbigpe3RoaXMuZmlyZSgiZXJyb3IiKTt2YXIgdD10aGlzLm9wdGlvbnMuZXJyb3JPdmVybGF5VXJsO3QmJnRoaXMuX3VybCE9PXQmJih0aGlzLl91cmw9dCx0aGlzLl9pbWFnZS5zcmM9dCl9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZHMuZ2V0Q2VudGVyKCl9fSksa2k9RWkuZXh0ZW5kKHtvcHRpb25zOnthdXRvcGxheTohMCxsb29wOiEwLGtlZXBBc3BlY3RSYXRpbzohMCxtdXRlZDohMSxwbGF5c0lubGluZTohMH0sX2luaXRJbWFnZTpmdW5jdGlvbigpe3ZhciB0PSJWSURFTyI9PT10aGlzLl91cmwudGFnTmFtZSxlPXRoaXMuX2ltYWdlPXQ\/dGhpcy5fdXJsOlAoInZpZGVvIik7aWYoTShlLCJsZWFmbGV0LWltYWdlLWxheWVyIiksdGhpcy5fem9vbUFuaW1hdGVkJiZNKGUsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJk0oZSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSxlLm9uc2VsZWN0c3RhcnQ9dSxlLm9ubW91c2Vtb3ZlPXUsZS5vbmxvYWRlZGRhdGE9YSh0aGlzLmZpcmUsdGhpcywibG9hZCIpLHQpe2Zvcih2YXIgaT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzb3VyY2UiKSxuPVtdLG89MDtvPGkubGVuZ3RoO28rKyluLnB1c2goaVtvXS5zcmMpO3RoaXMuX3VybD0wPGkubGVuZ3RoP246W2Uuc3JjXX1lbHNle2QodGhpcy5fdXJsKXx8KHRoaXMuX3VybD1bdGhpcy5fdXJsXSksIXRoaXMub3B0aW9ucy5rZWVwQXNwZWN0UmF0aW8mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLnN0eWxlLCJvYmplY3RGaXQiKSYmKGUuc3R5bGUub2JqZWN0Rml0PSJmaWxsIiksZS5hdXRvcGxheT0hIXRoaXMub3B0aW9ucy5hdXRvcGxheSxlLmxvb3A9ISF0aGlzLm9wdGlvbnMubG9vcCxlLm11dGVkPSEhdGhpcy5vcHRpb25zLm11dGVkLGUucGxheXNJbmxpbmU9ISF0aGlzLm9wdGlvbnMucGxheXNJbmxpbmU7Zm9yKHZhciBzPTA7czx0aGlzLl91cmwubGVuZ3RoO3MrKyl7dmFyIHI9UCgic291cmNlIik7ci5zcmM9dGhpcy5fdXJsW3NdLGUuYXBwZW5kQ2hpbGQocil9fX19KTt2YXIgT2k9RWkuZXh0ZW5kKHtfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW1hZ2U9dGhpcy5fdXJsO00odCwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX3pvb21BbmltYXRlZCYmTSh0LCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZNKHQsdGhpcy5vcHRpb25zLmNsYXNzTmFtZSksdC5vbnNlbGVjdHN0YXJ0PXUsdC5vbm1vdXNlbW92ZT11fX0pO3ZhciBBaT1vLmV4dGVuZCh7b3B0aW9uczp7aW50ZXJhY3RpdmU6ITEsb2Zmc2V0OlswLDBdLGNsYXNzTmFtZToiIixwYW5lOnZvaWQgMCxjb250ZW50OiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dCYmKHQgaW5zdGFuY2VvZiB2fHxkKHQpKT8odGhpcy5fbGF0bG5nPXcodCksYyh0aGlzLGUpKTooYyh0aGlzLHQpLHRoaXMuX3NvdXJjZT1lKSx0aGlzLm9wdGlvbnMuY29udGVudCYmKHRoaXMuX2NvbnRlbnQ9dGhpcy5vcHRpb25zLmNvbnRlbnQpfSxvcGVuT246ZnVuY3Rpb24odCl7cmV0dXJuKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3NvdXJjZS5fbWFwKS5oYXNMYXllcih0aGlzKXx8dC5hZGRMYXllcih0aGlzKSx0aGlzfSxjbG9zZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX21hcC5yZW1vdmVMYXllcih0aGlzKSx0aGlzfSx0b2dnbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcD90aGlzLmNsb3NlKCk6KGFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5fc291cmNlPXQ6dD10aGlzLl9zb3VyY2UsdGhpcy5fcHJlcGFyZU9wZW4oKSx0aGlzLm9wZW5Pbih0Ll9tYXApKSx0aGlzfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl96b29tQW5pbWF0ZWQ9dC5fem9vbUFuaW1hdGVkLHRoaXMuX2NvbnRhaW5lcnx8dGhpcy5faW5pdExheW91dCgpLHQuX2ZhZGVBbmltYXRlZCYmQyh0aGlzLl9jb250YWluZXIsMCksY2xlYXJUaW1lb3V0KHRoaXMuX3JlbW92ZVRpbWVvdXQpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy51cGRhdGUoKSx0Ll9mYWRlQW5pbWF0ZWQmJkModGhpcy5fY29udGFpbmVyLDEpLHRoaXMuYnJpbmdUb0Zyb250KCksdGhpcy5vcHRpb25zLmludGVyYWN0aXZlJiYoTSh0aGlzLl9jb250YWluZXIsImxlYWZsZXQtaW50ZXJhY3RpdmUiKSx0aGlzLmFkZEludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2NvbnRhaW5lcikpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Ll9mYWRlQW5pbWF0ZWQ\/KEModGhpcy5fY29udGFpbmVyLDApLHRoaXMuX3JlbW92ZVRpbWVvdXQ9c2V0VGltZW91dChhKFQsdm9pZCAwLHRoaXMuX2NvbnRhaW5lciksMjAwKSk6VCh0aGlzLl9jb250YWluZXIpLHRoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmKHoodGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9jb250YWluZXIpKX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9dyh0KSx0aGlzLl9tYXAmJih0aGlzLl91cGRhdGVQb3NpdGlvbigpLHRoaXMuX2FkanVzdFBhbigpKSx0aGlzfSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnR9LHNldENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbnRlbnQ9dCx0aGlzLnVwZGF0ZSgpLHRoaXN9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl91cGRhdGVDb250ZW50KCksdGhpcy5fdXBkYXRlTGF5b3V0KCksdGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iIix0aGlzLl9hZGp1c3RQYW4oKSl9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt6b29tOnRoaXMuX3VwZGF0ZVBvc2l0aW9uLHZpZXdyZXNldDp0aGlzLl91cGRhdGVQb3NpdGlvbn07cmV0dXJuIHRoaXMuX3pvb21BbmltYXRlZCYmKHQuem9vbWFuaW09dGhpcy5fYW5pbWF0ZVpvb20pLHR9LGlzT3BlbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fbWFwJiZ0aGlzLl9tYXAuaGFzTGF5ZXIodGhpcyl9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJmZlKHRoaXMuX2NvbnRhaW5lciksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZnZSh0aGlzLl9jb250YWluZXIpLHRoaXN9LF9wcmVwYXJlT3BlbjpmdW5jdGlvbih0KXtpZighKGk9dGhpcy5fc291cmNlKS5fbWFwKXJldHVybiExO2lmKGkgaW5zdGFuY2VvZiBjaSl7dmFyIGUsaT1udWxsLG49dGhpcy5fc291cmNlLl9sYXllcnM7Zm9yKGUgaW4gbilpZihuW2VdLl9tYXApe2k9bltlXTticmVha31pZighaSlyZXR1cm4hMTt0aGlzLl9zb3VyY2U9aX1pZighdClpZihpLmdldENlbnRlcil0PWkuZ2V0Q2VudGVyKCk7ZWxzZSBpZihpLmdldExhdExuZyl0PWkuZ2V0TGF0TG5nKCk7ZWxzZXtpZighaS5nZXRCb3VuZHMpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZ2V0IHNvdXJjZSBsYXllciBMYXRMbmcuIik7dD1pLmdldEJvdW5kcygpLmdldENlbnRlcigpfXJldHVybiB0aGlzLnNldExhdExuZyh0KSx0aGlzLl9tYXAmJnRoaXMudXBkYXRlKCksITB9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGVudCl7dmFyIHQ9dGhpcy5fY29udGVudE5vZGUsZT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fY29udGVudD90aGlzLl9jb250ZW50KHRoaXMuX3NvdXJjZXx8dGhpcyk6dGhpcy5fY29udGVudDtpZigic3RyaW5nIj09dHlwZW9mIGUpdC5pbm5lckhUTUw9ZTtlbHNle2Zvcig7dC5oYXNDaGlsZE5vZGVzKCk7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGUpfXRoaXMuZmlyZSgiY29udGVudHVwZGF0ZSIpfX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO3RoaXMuX21hcCYmKGU9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpLHQ9bSh0aGlzLm9wdGlvbnMub2Zmc2V0KSxpPXRoaXMuX2dldEFuY2hvcigpLHRoaXMuX3pvb21BbmltYXRlZD9aKHRoaXMuX2NvbnRhaW5lcixlLmFkZChpKSk6dD10LmFkZChlKS5hZGQoaSksZT10aGlzLl9jb250YWluZXJCb3R0b209LXQueSxpPXRoaXMuX2NvbnRhaW5lckxlZnQ9LU1hdGgucm91bmQodGhpcy5fY29udGFpbmVyV2lkdGgvMikrdC54LHRoaXMuX2NvbnRhaW5lci5zdHlsZS5ib3R0b209ZSsicHgiLHRoaXMuX2NvbnRhaW5lci5zdHlsZS5sZWZ0PWkrInB4Iil9LF9nZXRBbmNob3I6ZnVuY3Rpb24oKXtyZXR1cm5bMCwwXX19KSxCaT0oQS5pbmNsdWRlKHtfaW5pdE92ZXJsYXk6ZnVuY3Rpb24odCxlLGksbil7dmFyIG89ZTtyZXR1cm4gbyBpbnN0YW5jZW9mIHR8fChvPW5ldyB0KG4pLnNldENvbnRlbnQoZSkpLGkmJm8uc2V0TGF0TG5nKGkpLG99fSksby5pbmNsdWRlKHtfaW5pdE92ZXJsYXk6ZnVuY3Rpb24odCxlLGksbil7dmFyIG89aTtyZXR1cm4gbyBpbnN0YW5jZW9mIHQ\/KGMobyxuKSxvLl9zb3VyY2U9dGhpcyk6KG89ZSYmIW4\/ZTpuZXcgdChuLHRoaXMpKS5zZXRDb250ZW50KGkpLG99fSksQWkuZXh0ZW5kKHtvcHRpb25zOntwYW5lOiJwb3B1cFBhbmUiLG9mZnNldDpbMCw3XSxtYXhXaWR0aDozMDAsbWluV2lkdGg6NTAsbWF4SGVpZ2h0Om51bGwsYXV0b1BhbjohMCxhdXRvUGFuUGFkZGluZ1RvcExlZnQ6bnVsbCxhdXRvUGFuUGFkZGluZ0JvdHRvbVJpZ2h0Om51bGwsYXV0b1BhblBhZGRpbmc6WzUsNV0sa2VlcEluVmlldzohMSxjbG9zZUJ1dHRvbjohMCxhdXRvQ2xvc2U6ITAsY2xvc2VPbkVzY2FwZUtleTohMCxjbGFzc05hbWU6IiJ9LG9wZW5PbjpmdW5jdGlvbih0KXtyZXR1cm4hKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3NvdXJjZS5fbWFwKS5oYXNMYXllcih0aGlzKSYmdC5fcG9wdXAmJnQuX3BvcHVwLm9wdGlvbnMuYXV0b0Nsb3NlJiZ0LnJlbW92ZUxheWVyKHQuX3BvcHVwKSx0Ll9wb3B1cD10aGlzLEFpLnByb3RvdHlwZS5vcGVuT24uY2FsbCh0aGlzLHQpfSxvbkFkZDpmdW5jdGlvbih0KXtBaS5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzLHQpLHQuZmlyZSgicG9wdXBvcGVuIix7cG9wdXA6dGhpc30pLHRoaXMuX3NvdXJjZSYmKHRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cG9wZW4iLHtwb3B1cDp0aGlzfSwhMCksdGhpcy5fc291cmNlIGluc3RhbmNlb2YgZml8fHRoaXMuX3NvdXJjZS5vbigicHJlY2xpY2siLEFlKSl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe0FpLnByb3RvdHlwZS5vblJlbW92ZS5jYWxsKHRoaXMsdCksdC5maXJlKCJwb3B1cGNsb3NlIix7cG9wdXA6dGhpc30pLHRoaXMuX3NvdXJjZSYmKHRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cGNsb3NlIix7cG9wdXA6dGhpc30sITApLHRoaXMuX3NvdXJjZSBpbnN0YW5jZW9mIGZpfHx0aGlzLl9zb3VyY2Uub2ZmKCJwcmVjbGljayIsQWUpKX0sZ2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9QWkucHJvdG90eXBlLmdldEV2ZW50cy5jYWxsKHRoaXMpO3JldHVybih2b2lkIDAhPT10aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrP3RoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2s6dGhpcy5fbWFwLm9wdGlvbnMuY2xvc2VQb3B1cE9uQ2xpY2spJiYodC5wcmVjbGljaz10aGlzLmNsb3NlKSx0aGlzLm9wdGlvbnMua2VlcEluVmlldyYmKHQubW92ZWVuZD10aGlzLl9hZGp1c3RQYW4pLHR9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtcG9wdXAiLGU9dGhpcy5fY29udGFpbmVyPVAoImRpdiIsdCsiICIrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fCIiKSsiIGxlYWZsZXQtem9vbS1hbmltYXRlZCIpLGk9dGhpcy5fd3JhcHBlcj1QKCJkaXYiLHQrIi1jb250ZW50LXdyYXBwZXIiLGUpO3RoaXMuX2NvbnRlbnROb2RlPVAoImRpdiIsdCsiLWNvbnRlbnQiLGkpLEllKGUpLEJlKHRoaXMuX2NvbnRlbnROb2RlKSxTKGUsImNvbnRleHRtZW51IixBZSksdGhpcy5fdGlwQ29udGFpbmVyPVAoImRpdiIsdCsiLXRpcC1jb250YWluZXIiLGUpLHRoaXMuX3RpcD1QKCJkaXYiLHQrIi10aXAiLHRoaXMuX3RpcENvbnRhaW5lciksdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYoKGk9dGhpcy5fY2xvc2VCdXR0b249UCgiYSIsdCsiLWNsb3NlLWJ1dHRvbiIsZSkpLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpLGkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiQ2xvc2UgcG9wdXAiKSxpLmhyZWY9IiNjbG9zZSIsaS5pbm5lckhUTUw9JzxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mIzIxNTs8L3NwYW4+JyxTKGksImNsaWNrIixmdW5jdGlvbih0KXtPKHQpLHRoaXMuY2xvc2UoKX0sdGhpcykpfSxfdXBkYXRlTGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29udGVudE5vZGUsZT10LnN0eWxlLGk9KGUud2lkdGg9IiIsZS53aGl0ZVNwYWNlPSJub3dyYXAiLHQub2Zmc2V0V2lkdGgpLGk9TWF0aC5taW4oaSx0aGlzLm9wdGlvbnMubWF4V2lkdGgpLGk9KGk9TWF0aC5tYXgoaSx0aGlzLm9wdGlvbnMubWluV2lkdGgpLGUud2lkdGg9aSsxKyJweCIsZS53aGl0ZVNwYWNlPSIiLGUuaGVpZ2h0PSIiLHQub2Zmc2V0SGVpZ2h0KSxuPXRoaXMub3B0aW9ucy5tYXhIZWlnaHQsbz0ibGVhZmxldC1wb3B1cC1zY3JvbGxlZCI7KG4mJm48aT8oZS5oZWlnaHQ9bisicHgiLE0pOnopKHQsbyksdGhpcy5fY29udGFpbmVyV2lkdGg9dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRofSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIHQ9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlciksZT10aGlzLl9nZXRBbmNob3IoKTtaKHRoaXMuX2NvbnRhaW5lcix0LmFkZChlKSl9LF9hZGp1c3RQYW46ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLHMscixhO3RoaXMub3B0aW9ucy5hdXRvUGFuJiYodGhpcy5fbWFwLl9wYW5BbmltJiZ0aGlzLl9tYXAuX3BhbkFuaW0uc3RvcCgpLHRoaXMuX2F1dG9wYW5uaW5nP3RoaXMuX2F1dG9wYW5uaW5nPSExOih0PXRoaXMuX21hcCxlPXBhcnNlSW50KHBlKHRoaXMuX2NvbnRhaW5lciwibWFyZ2luQm90dG9tIiksMTApfHwwLGU9dGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodCtlLGE9dGhpcy5fY29udGFpbmVyV2lkdGgsKGk9bmV3IHAodGhpcy5fY29udGFpbmVyTGVmdCwtZS10aGlzLl9jb250YWluZXJCb3R0b20pKS5fYWRkKFBlKHRoaXMuX2NvbnRhaW5lcikpLGk9dC5sYXllclBvaW50VG9Db250YWluZXJQb2ludChpKSxvPW0odGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nKSxuPW0odGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nVG9wTGVmdHx8byksbz1tKHRoaXMub3B0aW9ucy5hdXRvUGFuUGFkZGluZ0JvdHRvbVJpZ2h0fHxvKSxzPXQuZ2V0U2l6ZSgpLHI9MCxpLngrYStvLng+cy54JiYocj1pLngrYS1zLngrby54KSxpLngtci1uLng8KGE9MCkmJihyPWkueC1uLngpLGkueStlK28ueT5zLnkmJihhPWkueStlLXMueStvLnkpLGkueS1hLW4ueTwwJiYoYT1pLnktbi55KSwocnx8YSkmJih0aGlzLm9wdGlvbnMua2VlcEluVmlldyYmKHRoaXMuX2F1dG9wYW5uaW5nPSEwKSx0LmZpcmUoImF1dG9wYW5zdGFydCIpLnBhbkJ5KFtyLGFdKSkpKX0sX2dldEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3NvdXJjZSYmdGhpcy5fc291cmNlLl9nZXRQb3B1cEFuY2hvcj90aGlzLl9zb3VyY2UuX2dldFBvcHVwQW5jaG9yKCk6WzAsMF0pfX0pKSxJaT0oQS5tZXJnZU9wdGlvbnMoe2Nsb3NlUG9wdXBPbkNsaWNrOiEwfSksQS5pbmNsdWRlKHtvcGVuUG9wdXA6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl9pbml0T3ZlcmxheShCaSx0LGUsaSkub3Blbk9uKHRoaXMpLHRoaXN9LGNsb3NlUG9wdXA6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3BvcHVwKSYmdC5jbG9zZSgpLHRoaXN9fSksby5pbmNsdWRlKHtiaW5kUG9wdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcG9wdXA9dGhpcy5faW5pdE92ZXJsYXkoQmksdGhpcy5fcG9wdXAsdCxlKSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWR8fCh0aGlzLm9uKHtjbGljazp0aGlzLl9vcGVuUG9wdXAsa2V5cHJlc3M6dGhpcy5fb25LZXlQcmVzcyxyZW1vdmU6dGhpcy5jbG9zZVBvcHVwLG1vdmU6dGhpcy5fbW92ZVBvcHVwfSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSEwKSx0aGlzfSx1bmJpbmRQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmKHRoaXMub2ZmKHtjbGljazp0aGlzLl9vcGVuUG9wdXAsa2V5cHJlc3M6dGhpcy5fb25LZXlQcmVzcyxyZW1vdmU6dGhpcy5jbG9zZVBvcHVwLG1vdmU6dGhpcy5fbW92ZVBvcHVwfSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSExLHRoaXMuX3BvcHVwPW51bGwpLHRoaXN9LG9wZW5Qb3B1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzIGluc3RhbmNlb2YgY2l8fCh0aGlzLl9wb3B1cC5fc291cmNlPXRoaXMpLHRoaXMuX3BvcHVwLl9wcmVwYXJlT3Blbih0fHx0aGlzLl9sYXRsbmcpJiZ0aGlzLl9wb3B1cC5vcGVuT24odGhpcy5fbWFwKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuY2xvc2UoKSx0aGlzfSx0b2dnbGVQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAudG9nZ2xlKHRoaXMpLHRoaXN9LGlzUG9wdXBPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuaXNPcGVuKCl9LHNldFBvcHVwQ29udGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksdGhpc30sZ2V0UG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXB9LF9vcGVuUG9wdXA6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5fcG9wdXAmJnRoaXMuX21hcCYmKFJlKHQpLGU9dC5sYXllcnx8dC50YXJnZXQsdGhpcy5fcG9wdXAuX3NvdXJjZSE9PWV8fGUgaW5zdGFuY2VvZiBmaT8odGhpcy5fcG9wdXAuX3NvdXJjZT1lLHRoaXMub3BlblBvcHVwKHQubGF0bG5nKSk6dGhpcy5fbWFwLmhhc0xheWVyKHRoaXMuX3BvcHVwKT90aGlzLmNsb3NlUG9wdXAoKTp0aGlzLm9wZW5Qb3B1cCh0LmxhdGxuZykpfSxfbW92ZVBvcHVwOmZ1bmN0aW9uKHQpe3RoaXMuX3BvcHVwLnNldExhdExuZyh0LmxhdGxuZyl9LF9vbktleVByZXNzOmZ1bmN0aW9uKHQpezEzPT09dC5vcmlnaW5hbEV2ZW50LmtleUNvZGUmJnRoaXMuX29wZW5Qb3B1cCh0KX19KSxBaS5leHRlbmQoe29wdGlvbnM6e3BhbmU6InRvb2x0aXBQYW5lIixvZmZzZXQ6WzAsMF0sZGlyZWN0aW9uOiJhdXRvIixwZXJtYW5lbnQ6ITEsc3RpY2t5OiExLG9wYWNpdHk6Ljl9LG9uQWRkOmZ1bmN0aW9uKHQpe0FpLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCksdGhpcy5zZXRPcGFjaXR5KHRoaXMub3B0aW9ucy5vcGFjaXR5KSx0LmZpcmUoInRvb2x0aXBvcGVuIix7dG9vbHRpcDp0aGlzfSksdGhpcy5fc291cmNlJiYodGhpcy5hZGRFdmVudFBhcmVudCh0aGlzLl9zb3VyY2UpLHRoaXMuX3NvdXJjZS5maXJlKCJ0b29sdGlwb3BlbiIse3Rvb2x0aXA6dGhpc30sITApKX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7QWkucHJvdG90eXBlLm9uUmVtb3ZlLmNhbGwodGhpcyx0KSx0LmZpcmUoInRvb2x0aXBjbG9zZSIse3Rvb2x0aXA6dGhpc30pLHRoaXMuX3NvdXJjZSYmKHRoaXMucmVtb3ZlRXZlbnRQYXJlbnQodGhpcy5fc291cmNlKSx0aGlzLl9zb3VyY2UuZmlyZSgidG9vbHRpcGNsb3NlIix7dG9vbHRpcDp0aGlzfSwhMCkpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1BaS5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMub3B0aW9ucy5wZXJtYW5lbnR8fCh0LnByZWNsaWNrPXRoaXMuY2xvc2UpLHR9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtdG9vbHRpcCAiKyh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lfHwiIikrIiBsZWFmbGV0LXpvb20tIisodGhpcy5fem9vbUFuaW1hdGVkPyJhbmltYXRlZCI6ImhpZGUiKTt0aGlzLl9jb250ZW50Tm9kZT10aGlzLl9jb250YWluZXI9UCgiZGl2Iix0KSx0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJyb2xlIiwidG9vbHRpcCIpLHRoaXMuX2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImlkIiwibGVhZmxldC10b29sdGlwLSIraCh0aGlzKSl9LF91cGRhdGVMYXlvdXQ6ZnVuY3Rpb24oKXt9LF9hZGp1c3RQYW46ZnVuY3Rpb24oKXt9LF9zZXRQb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMuX21hcCxuPXRoaXMuX2NvbnRhaW5lcixvPWkubGF0TG5nVG9Db250YWluZXJQb2ludChpLmdldENlbnRlcigpKSxpPWkubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQodCkscz10aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHI9bi5vZmZzZXRXaWR0aCxhPW4ub2Zmc2V0SGVpZ2h0LGg9bSh0aGlzLm9wdGlvbnMub2Zmc2V0KSxsPXRoaXMuX2dldEFuY2hvcigpLGk9InRvcCI9PT1zPyhlPXIvMixhKToiYm90dG9tIj09PXM\/KGU9ci8yLDApOihlPSJjZW50ZXIiPT09cz9yLzI6InJpZ2h0Ij09PXM\/MDoibGVmdCI9PT1zP3I6aS54PG8ueD8ocz0icmlnaHQiLDApOihzPSJsZWZ0IixyKzIqKGgueCtsLngpKSxhLzIpO3Q9dC5zdWJ0cmFjdChtKGUsaSwhMCkpLmFkZChoKS5hZGQobCkseihuLCJsZWFmbGV0LXRvb2x0aXAtcmlnaHQiKSx6KG4sImxlYWZsZXQtdG9vbHRpcC1sZWZ0IikseihuLCJsZWFmbGV0LXRvb2x0aXAtdG9wIikseihuLCJsZWFmbGV0LXRvb2x0aXAtYm90dG9tIiksTShuLCJsZWFmbGV0LXRvb2x0aXAtIitzKSxaKG4sdCl9LF91cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKTt0aGlzLl9zZXRQb3NpdGlvbih0KX0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX2NvbnRhaW5lciYmQyh0aGlzLl9jb250YWluZXIsdCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0PXRoaXMuX21hcC5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZyx0Lnpvb20sdC5jZW50ZXIpO3RoaXMuX3NldFBvc2l0aW9uKHQpfSxfZ2V0QW5jaG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuX2dldFRvb2x0aXBBbmNob3ImJiF0aGlzLm9wdGlvbnMuc3RpY2t5P3RoaXMuX3NvdXJjZS5fZ2V0VG9vbHRpcEFuY2hvcigpOlswLDBdKX19KSksUmk9KEEuaW5jbHVkZSh7b3BlblRvb2x0aXA6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl9pbml0T3ZlcmxheShJaSx0LGUsaSkub3Blbk9uKHRoaXMpLHRoaXN9LGNsb3NlVG9vbHRpcDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9zZSgpLHRoaXN9fSksby5pbmNsdWRlKHtiaW5kVG9vbHRpcDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90b29sdGlwJiZ0aGlzLmlzVG9vbHRpcE9wZW4oKSYmdGhpcy51bmJpbmRUb29sdGlwKCksdGhpcy5fdG9vbHRpcD10aGlzLl9pbml0T3ZlcmxheShJaSx0aGlzLl90b29sdGlwLHQsZSksdGhpcy5faW5pdFRvb2x0aXBJbnRlcmFjdGlvbnMoKSx0aGlzLl90b29sdGlwLm9wdGlvbnMucGVybWFuZW50JiZ0aGlzLl9tYXAmJnRoaXMuX21hcC5oYXNMYXllcih0aGlzKSYmdGhpcy5vcGVuVG9vbHRpcCgpLHRoaXN9LHVuYmluZFRvb2x0aXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG9vbHRpcCYmKHRoaXMuX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zKCEwKSx0aGlzLmNsb3NlVG9vbHRpcCgpLHRoaXMuX3Rvb2x0aXA9bnVsbCksdGhpc30sX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zOmZ1bmN0aW9uKHQpe3ZhciBlLGk7IXQmJnRoaXMuX3Rvb2x0aXBIYW5kbGVyc0FkZGVkfHwoZT10PyJvZmYiOiJvbiIsaT17cmVtb3ZlOnRoaXMuY2xvc2VUb29sdGlwLG1vdmU6dGhpcy5fbW92ZVRvb2x0aXB9LHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5wZXJtYW5lbnQ\/aS5hZGQ9dGhpcy5fb3BlblRvb2x0aXA6KGkubW91c2VvdmVyPXRoaXMuX29wZW5Ub29sdGlwLGkubW91c2VvdXQ9dGhpcy5jbG9zZVRvb2x0aXAsaS5jbGljaz10aGlzLl9vcGVuVG9vbHRpcCx0aGlzLl9tYXA\/dGhpcy5fYWRkRm9jdXNMaXN0ZW5lcnMoKTppLmFkZD10aGlzLl9hZGRGb2N1c0xpc3RlbmVycyksdGhpcy5fdG9vbHRpcC5vcHRpb25zLnN0aWNreSYmKGkubW91c2Vtb3ZlPXRoaXMuX21vdmVUb29sdGlwKSx0aGlzW2VdKGkpLHRoaXMuX3Rvb2x0aXBIYW5kbGVyc0FkZGVkPSF0KX0sb3BlblRvb2x0aXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJih0aGlzIGluc3RhbmNlb2YgY2l8fCh0aGlzLl90b29sdGlwLl9zb3VyY2U9dGhpcyksdGhpcy5fdG9vbHRpcC5fcHJlcGFyZU9wZW4odCkmJih0aGlzLl90b29sdGlwLm9wZW5Pbih0aGlzLl9tYXApLHRoaXMuZ2V0RWxlbWVudD90aGlzLl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyKHRoaXMpOnRoaXMuZWFjaExheWVyJiZ0aGlzLmVhY2hMYXllcih0aGlzLl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyLHRoaXMpKSksdGhpc30sY2xvc2VUb29sdGlwOmZ1bmN0aW9uKCl7aWYodGhpcy5fdG9vbHRpcClyZXR1cm4gdGhpcy5fdG9vbHRpcC5jbG9zZSgpfSx0b2dnbGVUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuX3Rvb2x0aXAudG9nZ2xlKHRoaXMpLHRoaXN9LGlzVG9vbHRpcE9wZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG9vbHRpcC5pc09wZW4oKX0sc2V0VG9vbHRpcENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuX3Rvb2x0aXAuc2V0Q29udGVudCh0KSx0aGlzfSxnZXRUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXB9LF9hZGRGb2N1c0xpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuZ2V0RWxlbWVudD90aGlzLl9hZGRGb2N1c0xpc3RlbmVyc09uTGF5ZXIodGhpcyk6dGhpcy5lYWNoTGF5ZXImJnRoaXMuZWFjaExheWVyKHRoaXMuX2FkZEZvY3VzTGlzdGVuZXJzT25MYXllcix0aGlzKX0sX2FkZEZvY3VzTGlzdGVuZXJzT25MYXllcjpmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC5nZXRFbGVtZW50JiZ0LmdldEVsZW1lbnQoKTtlJiYoUyhlLCJmb2N1cyIsZnVuY3Rpb24oKXt0aGlzLl90b29sdGlwLl9zb3VyY2U9dCx0aGlzLm9wZW5Ub29sdGlwKCl9LHRoaXMpLFMoZSwiYmx1ciIsdGhpcy5jbG9zZVRvb2x0aXAsdGhpcykpfSxfc2V0QXJpYURlc2NyaWJlZEJ5T25MYXllcjpmdW5jdGlvbih0KXt0PSJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldEVsZW1lbnQmJnQuZ2V0RWxlbWVudCgpO3QmJnQuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iix0aGlzLl90b29sdGlwLl9jb250YWluZXIuaWQpfSxfb3BlblRvb2x0aXA6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5fdG9vbHRpcCYmdGhpcy5fbWFwJiYodGhpcy5fbWFwLmRyYWdnaW5nJiZ0aGlzLl9tYXAuZHJhZ2dpbmcubW92aW5nKCkmJiF0aGlzLl9vcGVuT25jZUZsYWc\/KHRoaXMuX29wZW5PbmNlRmxhZz0hMCwoZT10aGlzKS5fbWFwLm9uY2UoIm1vdmVlbmQiLGZ1bmN0aW9uKCl7ZS5fb3Blbk9uY2VGbGFnPSExLGUuX29wZW5Ub29sdGlwKHQpfSkpOih0aGlzLl90b29sdGlwLl9zb3VyY2U9dC5sYXllcnx8dC50YXJnZXQsdGhpcy5vcGVuVG9vbHRpcCh0aGlzLl90b29sdGlwLm9wdGlvbnMuc3RpY2t5P3QubGF0bG5nOnZvaWQgMCkpKX0sX21vdmVUb29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGF0bG5nO3RoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kmJnQub3JpZ2luYWxFdmVudCYmKHQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQub3JpZ2luYWxFdmVudCksdD10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQodCksZT10aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKHQpKSx0aGlzLl90b29sdGlwLnNldExhdExuZyhlKX19KSxkaS5leHRlbmQoe29wdGlvbnM6e2ljb25TaXplOlsxMiwxMl0saHRtbDohMSxiZ1BvczpudWxsLGNsYXNzTmFtZToibGVhZmxldC1kaXYtaWNvbiJ9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7dmFyIHQ9dCYmIkRJViI9PT10LnRhZ05hbWU\/dDpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXRoaXMub3B0aW9ucztyZXR1cm4gZS5odG1sIGluc3RhbmNlb2YgRWxlbWVudD8obWUodCksdC5hcHBlbmRDaGlsZChlLmh0bWwpKTp0LmlubmVySFRNTD0hMSE9PWUuaHRtbD9lLmh0bWw6IiIsZS5iZ1BvcyYmKGU9bShlLmJnUG9zKSx0LnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbj0tZS54KyJweCAiKy1lLnkrInB4IiksdGhpcy5fc2V0SWNvblN0eWxlcyh0LCJpY29uIiksdH0sY3JlYXRlU2hhZG93OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSkpO2RpLkRlZmF1bHQ9X2k7dmFyIE5pPW8uZXh0ZW5kKHtvcHRpb25zOnt0aWxlU2l6ZToyNTYsb3BhY2l0eToxLHVwZGF0ZVdoZW5JZGxlOmIubW9iaWxlLHVwZGF0ZVdoZW5ab29taW5nOiEwLHVwZGF0ZUludGVydmFsOjIwMCx6SW5kZXg6MSxib3VuZHM6bnVsbCxtaW5ab29tOjAsbWF4Wm9vbTp2b2lkIDAsbWF4TmF0aXZlWm9vbTp2b2lkIDAsbWluTmF0aXZlWm9vbTp2b2lkIDAsbm9XcmFwOiExLHBhbmU6InRpbGVQYW5lIixjbGFzc05hbWU6IiIsa2VlcEJ1ZmZlcjoyfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KX0sb25BZGQ6ZnVuY3Rpb24oKXt0aGlzLl9pbml0Q29udGFpbmVyKCksdGhpcy5fbGV2ZWxzPXt9LHRoaXMuX3RpbGVzPXt9LHRoaXMuX3Jlc2V0VmlldygpfSxiZWZvcmVBZGQ6ZnVuY3Rpb24odCl7dC5fYWRkWm9vbUxpbWl0KHRoaXMpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVBbGxUaWxlcygpLFQodGhpcy5fY29udGFpbmVyKSx0Ll9yZW1vdmVab29tTGltaXQodGhpcyksdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fdGlsZVpvb209dm9pZCAwfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYoZmUodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWF4KSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYoZ2UodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWluKSksdGhpc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpc30sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4PXQsdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpc30saXNMb2FkaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmd9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9tYXAmJih0aGlzLl9yZW1vdmVBbGxUaWxlcygpLCh0PXRoaXMuX2NsYW1wWm9vbSh0aGlzLl9tYXAuZ2V0Wm9vbSgpKSkhPT10aGlzLl90aWxlWm9vbSYmKHRoaXMuX3RpbGVab29tPXQsdGhpcy5fdXBkYXRlTGV2ZWxzKCkpLHRoaXMuX3VwZGF0ZSgpKSx0aGlzfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3ByZXJlc2V0OnRoaXMuX2ludmFsaWRhdGVBbGwsdmlld3Jlc2V0OnRoaXMuX3Jlc2V0Vmlldyx6b29tOnRoaXMuX3Jlc2V0Vmlldyxtb3ZlZW5kOnRoaXMuX29uTW92ZUVuZH07cmV0dXJuIHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZXx8KHRoaXMuX29uTW92ZXx8KHRoaXMuX29uTW92ZT1qKHRoaXMuX29uTW92ZUVuZCx0aGlzLm9wdGlvbnMudXBkYXRlSW50ZXJ2YWwsdGhpcykpLHQubW92ZT10aGlzLl9vbk1vdmUpLHRoaXMuX3pvb21BbmltYXRlZCYmKHQuem9vbWFuaW09dGhpcy5fYW5pbWF0ZVpvb20pLHR9LGNyZWF0ZVRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9LGdldFRpbGVTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnRpbGVTaXplO3JldHVybiB0IGluc3RhbmNlb2YgcD90Om5ldyBwKHQsdCl9LF91cGRhdGVaSW5kZXg6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXImJnZvaWQgMCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJm51bGwhPT10aGlzLm9wdGlvbnMuekluZGV4JiYodGhpcy5fY29udGFpbmVyLnN0eWxlLnpJbmRleD10aGlzLm9wdGlvbnMuekluZGV4KX0sX3NldEF1dG9aSW5kZXg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9dGhpcy5nZXRQYW5lKCkuY2hpbGRyZW4sbj0tdCgtMS8wLDEvMCksbz0wLHM9aS5sZW5ndGg7bzxzO28rKyllPWlbb10uc3R5bGUuekluZGV4LGlbb10hPT10aGlzLl9jb250YWluZXImJmUmJihuPXQobiwrZSkpO2lzRmluaXRlKG4pJiYodGhpcy5vcHRpb25zLnpJbmRleD1uK3QoLTEsMSksdGhpcy5fdXBkYXRlWkluZGV4KCkpfSxfdXBkYXRlT3BhY2l0eTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCYmIWIuaWVsdDkpe0ModGhpcy5fY29udGFpbmVyLHRoaXMub3B0aW9ucy5vcGFjaXR5KTt2YXIgdCxlPStuZXcgRGF0ZSxpPSExLG49ITE7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpe3ZhciBvLHM9dGhpcy5fdGlsZXNbdF07cy5jdXJyZW50JiZzLmxvYWRlZCYmKG89TWF0aC5taW4oMSwoZS1zLmxvYWRlZCkvMjAwKSxDKHMuZWwsbyksbzwxP2k9ITA6KHMuYWN0aXZlP249ITA6dGhpcy5fb25PcGFxdWVUaWxlKHMpLHMuYWN0aXZlPSEwKSl9biYmIXRoaXMuX25vUHJ1bmUmJnRoaXMuX3BydW5lVGlsZXMoKSxpJiYocih0aGlzLl9mYWRlRnJhbWUpLHRoaXMuX2ZhZGVGcmFtZT14KHRoaXMuX3VwZGF0ZU9wYWNpdHksdGhpcykpfX0sX29uT3BhcXVlVGlsZTp1LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyfHwodGhpcy5fY29udGFpbmVyPVAoImRpdiIsImxlYWZsZXQtbGF5ZXIgIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKSx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzLm9wdGlvbnMub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSl9LF91cGRhdGVMZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlWm9vbSxlPXRoaXMub3B0aW9ucy5tYXhab29tO2lmKHZvaWQgMCE9PXQpe2Zvcih2YXIgaSBpbiB0aGlzLl9sZXZlbHMpaT1OdW1iZXIoaSksdGhpcy5fbGV2ZWxzW2ldLmVsLmNoaWxkcmVuLmxlbmd0aHx8aT09PXQ\/KHRoaXMuX2xldmVsc1tpXS5lbC5zdHlsZS56SW5kZXg9ZS1NYXRoLmFicyh0LWkpLHRoaXMuX29uVXBkYXRlTGV2ZWwoaSkpOihUKHRoaXMuX2xldmVsc1tpXS5lbCksdGhpcy5fcmVtb3ZlVGlsZXNBdFpvb20oaSksdGhpcy5fb25SZW1vdmVMZXZlbChpKSxkZWxldGUgdGhpcy5fbGV2ZWxzW2ldKTt2YXIgbj10aGlzLl9sZXZlbHNbdF0sbz10aGlzLl9tYXA7cmV0dXJuIG58fCgobj10aGlzLl9sZXZlbHNbdF09e30pLmVsPVAoImRpdiIsImxlYWZsZXQtdGlsZS1jb250YWluZXIgbGVhZmxldC16b29tLWFuaW1hdGVkIix0aGlzLl9jb250YWluZXIpLG4uZWwuc3R5bGUuekluZGV4PWUsbi5vcmlnaW49by5wcm9qZWN0KG8udW5wcm9qZWN0KG8uZ2V0UGl4ZWxPcmlnaW4oKSksdCkucm91bmQoKSxuLnpvb209dCx0aGlzLl9zZXRab29tVHJhbnNmb3JtKG4sby5nZXRDZW50ZXIoKSxvLmdldFpvb20oKSksdShuLmVsLm9mZnNldFdpZHRoKSx0aGlzLl9vbkNyZWF0ZUxldmVsKG4pKSx0aGlzLl9sZXZlbD1ufX0sX29uVXBkYXRlTGV2ZWw6dSxfb25SZW1vdmVMZXZlbDp1LF9vbkNyZWF0ZUxldmVsOnUsX3BydW5lVGlsZXM6ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0LGUsaSxuPXRoaXMuX21hcC5nZXRab29tKCk7aWYobj50aGlzLm9wdGlvbnMubWF4Wm9vbXx8bjx0aGlzLm9wdGlvbnMubWluWm9vbSl0aGlzLl9yZW1vdmVBbGxUaWxlcygpO2Vsc2V7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpKGk9dGhpcy5fdGlsZXNbdF0pLnJldGFpbj1pLmN1cnJlbnQ7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpKGk9dGhpcy5fdGlsZXNbdF0pLmN1cnJlbnQmJiFpLmFjdGl2ZSYmKGU9aS5jb29yZHMsdGhpcy5fcmV0YWluUGFyZW50KGUueCxlLnksZS56LGUuei01KXx8dGhpcy5fcmV0YWluQ2hpbGRyZW4oZS54LGUueSxlLnosZS56KzIpKTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5yZXRhaW58fHRoaXMuX3JlbW92ZVRpbGUodCl9fX0sX3JlbW92ZVRpbGVzQXRab29tOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1tlXS5jb29yZHMuej09PXQmJnRoaXMuX3JlbW92ZVRpbGUoZSl9LF9yZW1vdmVBbGxUaWxlczpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcyl0aGlzLl9yZW1vdmVUaWxlKHQpfSxfaW52YWxpZGF0ZUFsbDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl9sZXZlbHMpVCh0aGlzLl9sZXZlbHNbdF0uZWwpLHRoaXMuX29uUmVtb3ZlTGV2ZWwoTnVtYmVyKHQpKSxkZWxldGUgdGhpcy5fbGV2ZWxzW3RdO3RoaXMuX3JlbW92ZUFsbFRpbGVzKCksdGhpcy5fdGlsZVpvb209dm9pZCAwfSxfcmV0YWluUGFyZW50OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciB0PU1hdGguZmxvb3IodC8yKSxlPU1hdGguZmxvb3IoZS8yKSxpPWktMSxvPW5ldyBwKCt0LCtlKSxvPShvLno9aSx0aGlzLl90aWxlQ29vcmRzVG9LZXkobykpLG89dGhpcy5fdGlsZXNbb107cmV0dXJuIG8mJm8uYWN0aXZlP28ucmV0YWluPSEwOihvJiZvLmxvYWRlZCYmKG8ucmV0YWluPSEwKSxuPGkmJnRoaXMuX3JldGFpblBhcmVudCh0LGUsaSxuKSl9LF9yZXRhaW5DaGlsZHJlbjpmdW5jdGlvbih0LGUsaSxuKXtmb3IodmFyIG89Mip0O288Mip0KzI7bysrKWZvcih2YXIgcz0yKmU7czwyKmUrMjtzKyspe3ZhciByPW5ldyBwKG8scykscj0oci56PWkrMSx0aGlzLl90aWxlQ29vcmRzVG9LZXkocikpLHI9dGhpcy5fdGlsZXNbcl07ciYmci5hY3RpdmU\/ci5yZXRhaW49ITA6KHImJnIubG9hZGVkJiYoci5yZXRhaW49ITApLGkrMTxuJiZ0aGlzLl9yZXRhaW5DaGlsZHJlbihvLHMsaSsxLG4pKX19LF9yZXNldFZpZXc6ZnVuY3Rpb24odCl7dD10JiYodC5waW5jaHx8dC5mbHlUbyk7dGhpcy5fc2V0Vmlldyh0aGlzLl9tYXAuZ2V0Q2VudGVyKCksdGhpcy5fbWFwLmdldFpvb20oKSx0LHQpfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dGhpcy5fc2V0Vmlldyh0LmNlbnRlcix0Lnpvb20sITAsdC5ub1VwZGF0ZSl9LF9jbGFtcFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiB2b2lkIDAhPT1lLm1pbk5hdGl2ZVpvb20mJnQ8ZS5taW5OYXRpdmVab29tP2UubWluTmF0aXZlWm9vbTp2b2lkIDAhPT1lLm1heE5hdGl2ZVpvb20mJmUubWF4TmF0aXZlWm9vbTx0P2UubWF4TmF0aXZlWm9vbTp0fSxfc2V0VmlldzpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbz1NYXRoLnJvdW5kKGUpLG89dm9pZCAwIT09dGhpcy5vcHRpb25zLm1heFpvb20mJm8+dGhpcy5vcHRpb25zLm1heFpvb218fHZvaWQgMCE9PXRoaXMub3B0aW9ucy5taW5ab29tJiZvPHRoaXMub3B0aW9ucy5taW5ab29tP3ZvaWQgMDp0aGlzLl9jbGFtcFpvb20obykscz10aGlzLm9wdGlvbnMudXBkYXRlV2hlblpvb21pbmcmJm8hPT10aGlzLl90aWxlWm9vbTtuJiYhc3x8KHRoaXMuX3RpbGVab29tPW8sdGhpcy5fYWJvcnRMb2FkaW5nJiZ0aGlzLl9hYm9ydExvYWRpbmcoKSx0aGlzLl91cGRhdGVMZXZlbHMoKSx0aGlzLl9yZXNldEdyaWQoKSx2b2lkIDAhPT1vJiZ0aGlzLl91cGRhdGUodCksaXx8dGhpcy5fcHJ1bmVUaWxlcygpLHRoaXMuX25vUHJ1bmU9ISFpKSx0aGlzLl9zZXRab29tVHJhbnNmb3Jtcyh0LGUpfSxfc2V0Wm9vbVRyYW5zZm9ybXM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gdGhpcy5fbGV2ZWxzKXRoaXMuX3NldFpvb21UcmFuc2Zvcm0odGhpcy5fbGV2ZWxzW2ldLHQsZSl9LF9zZXRab29tVHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGksdC56b29tKSxlPXQub3JpZ2luLm11bHRpcGx5Qnkobikuc3VidHJhY3QodGhpcy5fbWFwLl9nZXROZXdQaXhlbE9yaWdpbihlLGkpKS5yb3VuZCgpO2IuYW55M2Q\/YmUodC5lbCxlLG4pOloodC5lbCxlKX0sX3Jlc2V0R3JpZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxlPXQub3B0aW9ucy5jcnMsaT10aGlzLl90aWxlU2l6ZT10aGlzLmdldFRpbGVTaXplKCksbj10aGlzLl90aWxlWm9vbSxvPXRoaXMuX21hcC5nZXRQaXhlbFdvcmxkQm91bmRzKHRoaXMuX3RpbGVab29tKTtvJiYodGhpcy5fZ2xvYmFsVGlsZVJhbmdlPXRoaXMuX3B4Qm91bmRzVG9UaWxlUmFuZ2UobykpLHRoaXMuX3dyYXBYPWUud3JhcExuZyYmIXRoaXMub3B0aW9ucy5ub1dyYXAmJltNYXRoLmZsb29yKHQucHJvamVjdChbMCxlLndyYXBMbmdbMF1dLG4pLngvaS54KSxNYXRoLmNlaWwodC5wcm9qZWN0KFswLGUud3JhcExuZ1sxXV0sbikueC9pLnkpXSx0aGlzLl93cmFwWT1lLndyYXBMYXQmJiF0aGlzLm9wdGlvbnMubm9XcmFwJiZbTWF0aC5mbG9vcih0LnByb2plY3QoW2Uud3JhcExhdFswXSwwXSxuKS55L2kueCksTWF0aC5jZWlsKHQucHJvamVjdChbZS53cmFwTGF0WzFdLDBdLG4pLnkvaS55KV19LF9vbk1vdmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJiF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20mJnRoaXMuX3VwZGF0ZSgpfSxfZ2V0VGlsZWRQaXhlbEJvdW5kczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAsaT1lLl9hbmltYXRpbmdab29tP01hdGgubWF4KGUuX2FuaW1hdGVUb1pvb20sZS5nZXRab29tKCkpOmUuZ2V0Wm9vbSgpLGk9ZS5nZXRab29tU2NhbGUoaSx0aGlzLl90aWxlWm9vbSksdD1lLnByb2plY3QodCx0aGlzLl90aWxlWm9vbSkuZmxvb3IoKSxlPWUuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIqaSk7cmV0dXJuIG5ldyBmKHQuc3VidHJhY3QoZSksdC5hZGQoZSkpfSxfdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcDtpZihlKXt2YXIgaT10aGlzLl9jbGFtcFpvb20oZS5nZXRab29tKCkpO2lmKHZvaWQgMD09PXQmJih0PWUuZ2V0Q2VudGVyKCkpLHZvaWQgMCE9PXRoaXMuX3RpbGVab29tKXt2YXIgbixlPXRoaXMuX2dldFRpbGVkUGl4ZWxCb3VuZHModCksbz10aGlzLl9weEJvdW5kc1RvVGlsZVJhbmdlKGUpLHM9by5nZXRDZW50ZXIoKSxyPVtdLGU9dGhpcy5vcHRpb25zLmtlZXBCdWZmZXIsYT1uZXcgZihvLmdldEJvdHRvbUxlZnQoKS5zdWJ0cmFjdChbZSwtZV0pLG8uZ2V0VG9wUmlnaHQoKS5hZGQoW2UsLWVdKSk7aWYoIShpc0Zpbml0ZShvLm1pbi54KSYmaXNGaW5pdGUoby5taW4ueSkmJmlzRmluaXRlKG8ubWF4LngpJiZpc0Zpbml0ZShvLm1heC55KSkpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gbG9hZCBhbiBpbmZpbml0ZSBudW1iZXIgb2YgdGlsZXMiKTtmb3IobiBpbiB0aGlzLl90aWxlcyl7dmFyIGg9dGhpcy5fdGlsZXNbbl0uY29vcmRzO2guej09PXRoaXMuX3RpbGVab29tJiZhLmNvbnRhaW5zKG5ldyBwKGgueCxoLnkpKXx8KHRoaXMuX3RpbGVzW25dLmN1cnJlbnQ9ITEpfWlmKDE8TWF0aC5hYnMoaS10aGlzLl90aWxlWm9vbSkpdGhpcy5fc2V0Vmlldyh0LGkpO2Vsc2V7Zm9yKHZhciBsPW8ubWluLnk7bDw9by5tYXgueTtsKyspZm9yKHZhciB1PW8ubWluLng7dTw9by5tYXgueDt1Kyspe3ZhciBjLGQ9bmV3IHAodSxsKTtkLno9dGhpcy5fdGlsZVpvb20sdGhpcy5faXNWYWxpZFRpbGUoZCkmJigoYz10aGlzLl90aWxlc1t0aGlzLl90aWxlQ29vcmRzVG9LZXkoZCldKT9jLmN1cnJlbnQ9ITA6ci5wdXNoKGQpKX1pZihyLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXN0YW5jZVRvKHMpLWUuZGlzdGFuY2VUbyhzKX0pLDAhPT1yLmxlbmd0aCl7dGhpcy5fbG9hZGluZ3x8KHRoaXMuX2xvYWRpbmc9ITAsdGhpcy5maXJlKCJsb2FkaW5nIikpO2Zvcih2YXIgXz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdT0wO3U8ci5sZW5ndGg7dSsrKXRoaXMuX2FkZFRpbGUoclt1XSxfKTt0aGlzLl9sZXZlbC5lbC5hcHBlbmRDaGlsZChfKX19fX19LF9pc1ZhbGlkVGlsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAub3B0aW9ucy5jcnM7aWYoIWUuaW5maW5pdGUpe3ZhciBpPXRoaXMuX2dsb2JhbFRpbGVSYW5nZTtpZighZS53cmFwTG5nJiYodC54PGkubWluLnh8fHQueD5pLm1heC54KXx8IWUud3JhcExhdCYmKHQueTxpLm1pbi55fHx0Lnk+aS5tYXgueSkpcmV0dXJuITF9cmV0dXJuIXRoaXMub3B0aW9ucy5ib3VuZHN8fChlPXRoaXMuX3RpbGVDb29yZHNUb0JvdW5kcyh0KSxnKHRoaXMub3B0aW9ucy5ib3VuZHMpLm92ZXJsYXBzKGUpKX0sX2tleVRvQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90aWxlQ29vcmRzVG9Cb3VuZHModGhpcy5fa2V5VG9UaWxlQ29vcmRzKHQpKX0sX3RpbGVDb29yZHNUb053U2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5nZXRUaWxlU2l6ZSgpLG49dC5zY2FsZUJ5KGkpLGk9bi5hZGQoaSk7cmV0dXJuW2UudW5wcm9qZWN0KG4sdC56KSxlLnVucHJvamVjdChpLHQueildfSxfdGlsZUNvb3Jkc1RvQm91bmRzOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fdGlsZUNvb3Jkc1RvTndTZSh0KSx0PW5ldyBzKHRbMF0sdFsxXSk7cmV0dXJuIHQ9dGhpcy5vcHRpb25zLm5vV3JhcD90OnRoaXMuX21hcC53cmFwTGF0TG5nQm91bmRzKHQpfSxfdGlsZUNvb3Jkc1RvS2V5OmZ1bmN0aW9uKHQpe3JldHVybiB0LngrIjoiK3QueSsiOiIrdC56fSxfa2V5VG9UaWxlQ29vcmRzOmZ1bmN0aW9uKHQpe3ZhciB0PXQuc3BsaXQoIjoiKSxlPW5ldyBwKCt0WzBdLCt0WzFdKTtyZXR1cm4gZS56PSt0WzJdLGV9LF9yZW1vdmVUaWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbGVzW3RdO2UmJihUKGUuZWwpLGRlbGV0ZSB0aGlzLl90aWxlc1t0XSx0aGlzLmZpcmUoInRpbGV1bmxvYWQiLHt0aWxlOmUuZWwsY29vcmRzOnRoaXMuX2tleVRvVGlsZUNvb3Jkcyh0KX0pKX0sX2luaXRUaWxlOmZ1bmN0aW9uKHQpe00odCwibGVhZmxldC10aWxlIik7dmFyIGU9dGhpcy5nZXRUaWxlU2l6ZSgpO3Quc3R5bGUud2lkdGg9ZS54KyJweCIsdC5zdHlsZS5oZWlnaHQ9ZS55KyJweCIsdC5vbnNlbGVjdHN0YXJ0PXUsdC5vbm1vdXNlbW92ZT11LGIuaWVsdDkmJnRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJkModCx0aGlzLm9wdGlvbnMub3BhY2l0eSl9LF9hZGRUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0VGlsZVBvcyh0KSxuPXRoaXMuX3RpbGVDb29yZHNUb0tleSh0KSxvPXRoaXMuY3JlYXRlVGlsZSh0aGlzLl93cmFwQ29vcmRzKHQpLGEodGhpcy5fdGlsZVJlYWR5LHRoaXMsdCkpO3RoaXMuX2luaXRUaWxlKG8pLHRoaXMuY3JlYXRlVGlsZS5sZW5ndGg8MiYmeChhKHRoaXMuX3RpbGVSZWFkeSx0aGlzLHQsbnVsbCxvKSksWihvLGkpLHRoaXMuX3RpbGVzW25dPXtlbDpvLGNvb3Jkczp0LGN1cnJlbnQ6ITB9LGUuYXBwZW5kQ2hpbGQobyksdGhpcy5maXJlKCJ0aWxlbG9hZHN0YXJ0Iix7dGlsZTpvLGNvb3Jkczp0fSl9LF90aWxlUmVhZHk6ZnVuY3Rpb24odCxlLGkpe2UmJnRoaXMuZmlyZSgidGlsZWVycm9yIix7ZXJyb3I6ZSx0aWxlOmksY29vcmRzOnR9KTt2YXIgbj10aGlzLl90aWxlQ29vcmRzVG9LZXkodCk7KGk9dGhpcy5fdGlsZXNbbl0pJiYoaS5sb2FkZWQ9K25ldyBEYXRlLHRoaXMuX21hcC5fZmFkZUFuaW1hdGVkPyhDKGkuZWwsMCkscih0aGlzLl9mYWRlRnJhbWUpLHRoaXMuX2ZhZGVGcmFtZT14KHRoaXMuX3VwZGF0ZU9wYWNpdHksdGhpcykpOihpLmFjdGl2ZT0hMCx0aGlzLl9wcnVuZVRpbGVzKCkpLGV8fChNKGkuZWwsImxlYWZsZXQtdGlsZS1sb2FkZWQiKSx0aGlzLmZpcmUoInRpbGVsb2FkIix7dGlsZTppLmVsLGNvb3Jkczp0fSkpLHRoaXMuX25vVGlsZXNUb0xvYWQoKSYmKHRoaXMuX2xvYWRpbmc9ITEsdGhpcy5maXJlKCJsb2FkIiksYi5pZWx0OXx8IXRoaXMuX21hcC5fZmFkZUFuaW1hdGVkP3godGhpcy5fcHJ1bmVUaWxlcyx0aGlzKTpzZXRUaW1lb3V0KGEodGhpcy5fcHJ1bmVUaWxlcyx0aGlzKSwyNTApKSl9LF9nZXRUaWxlUG9zOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNjYWxlQnkodGhpcy5nZXRUaWxlU2l6ZSgpKS5zdWJ0cmFjdCh0aGlzLl9sZXZlbC5vcmlnaW4pfSxfd3JhcENvb3JkczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgcCh0aGlzLl93cmFwWD9IKHQueCx0aGlzLl93cmFwWCk6dC54LHRoaXMuX3dyYXBZP0godC55LHRoaXMuX3dyYXBZKTp0LnkpO3JldHVybiBlLno9dC56LGV9LF9weEJvdW5kc1RvVGlsZVJhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0VGlsZVNpemUoKTtyZXR1cm4gbmV3IGYodC5taW4udW5zY2FsZUJ5KGUpLmZsb29yKCksdC5tYXgudW5zY2FsZUJ5KGUpLmNlaWwoKS5zdWJ0cmFjdChbMSwxXSkpfSxfbm9UaWxlc1RvTG9hZDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcylpZighdGhpcy5fdGlsZXNbdF0ubG9hZGVkKXJldHVybiExO3JldHVybiEwfX0pO3ZhciBEaT1OaS5leHRlbmQoe29wdGlvbnM6e21pblpvb206MCxtYXhab29tOjE4LHN1YmRvbWFpbnM6ImFiYyIsZXJyb3JUaWxlVXJsOiIiLHpvb21PZmZzZXQ6MCx0bXM6ITEsem9vbVJldmVyc2U6ITEsZGV0ZWN0UmV0aW5hOiExLGNyb3NzT3JpZ2luOiExLHJlZmVycmVyUG9saWN5OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdXJsPXQsKGU9Yyh0aGlzLGUpKS5kZXRlY3RSZXRpbmEmJmIucmV0aW5hJiYwPGUubWF4Wm9vbT8oZS50aWxlU2l6ZT1NYXRoLmZsb29yKGUudGlsZVNpemUvMiksZS56b29tUmV2ZXJzZT8oZS56b29tT2Zmc2V0LS0sZS5taW5ab29tPU1hdGgubWluKGUubWF4Wm9vbSxlLm1pblpvb20rMSkpOihlLnpvb21PZmZzZXQrKyxlLm1heFpvb209TWF0aC5tYXgoZS5taW5ab29tLGUubWF4Wm9vbS0xKSksZS5taW5ab29tPU1hdGgubWF4KDAsZS5taW5ab29tKSk6ZS56b29tUmV2ZXJzZT9lLm1pblpvb209TWF0aC5taW4oZS5tYXhab29tLGUubWluWm9vbSk6ZS5tYXhab29tPU1hdGgubWF4KGUubWluWm9vbSxlLm1heFpvb20pLCJzdHJpbmciPT10eXBlb2YgZS5zdWJkb21haW5zJiYoZS5zdWJkb21haW5zPWUuc3ViZG9tYWlucy5zcGxpdCgiIikpLHRoaXMub24oInRpbGV1bmxvYWQiLHRoaXMuX29uVGlsZVJlbW92ZSl9LHNldFVybDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl91cmw9PT10JiZ2b2lkIDA9PT1lJiYoZT0hMCksdGhpcy5fdXJsPXQsZXx8dGhpcy5yZWRyYXcoKSx0aGlzfSxjcmVhdGVUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7cmV0dXJuIFMoaSwibG9hZCIsYSh0aGlzLl90aWxlT25Mb2FkLHRoaXMsZSxpKSksUyhpLCJlcnJvciIsYSh0aGlzLl90aWxlT25FcnJvcix0aGlzLGUsaSkpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJiIiIT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2lufHwoaS5jcm9zc09yaWdpbj0hMD09PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbj8iIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLCJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLnJlZmVycmVyUG9saWN5JiYoaS5yZWZlcnJlclBvbGljeT10aGlzLm9wdGlvbnMucmVmZXJyZXJQb2xpY3kpLGkuYWx0PSIiLGkuc3JjPXRoaXMuZ2V0VGlsZVVybCh0KSxpfSxnZXRUaWxlVXJsOmZ1bmN0aW9uKHQpe3ZhciBlPXtyOmIucmV0aW5hPyJAMngiOiIiLHM6dGhpcy5fZ2V0U3ViZG9tYWluKHQpLHg6dC54LHk6dC55LHo6dGhpcy5fZ2V0Wm9vbUZvclVybCgpfTtyZXR1cm4gdGhpcy5fbWFwJiYhdGhpcy5fbWFwLm9wdGlvbnMuY3JzLmluZmluaXRlJiYodD10aGlzLl9nbG9iYWxUaWxlUmFuZ2UubWF4LnktdC55LHRoaXMub3B0aW9ucy50bXMmJihlLnk9dCksZVsiLXkiXT10KSxxKHRoaXMuX3VybCxsKGUsdGhpcy5vcHRpb25zKSl9LF90aWxlT25Mb2FkOmZ1bmN0aW9uKHQsZSl7Yi5pZWx0OT9zZXRUaW1lb3V0KGEodCx0aGlzLG51bGwsZSksMCk6dChudWxsLGUpfSxfdGlsZU9uRXJyb3I6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMub3B0aW9ucy5lcnJvclRpbGVVcmw7biYmZS5nZXRBdHRyaWJ1dGUoInNyYyIpIT09biYmKGUuc3JjPW4pLHQoaSxlKX0sX29uVGlsZVJlbW92ZTpmdW5jdGlvbih0KXt0LnRpbGUub25sb2FkPW51bGx9LF9nZXRab29tRm9yVXJsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGlsZVpvb20sZT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4odD10aGlzLm9wdGlvbnMuem9vbVJldmVyc2U\/ZS10OnQpK3RoaXMub3B0aW9ucy56b29tT2Zmc2V0fSxfZ2V0U3ViZG9tYWluOmZ1bmN0aW9uKHQpe3Q9TWF0aC5hYnModC54K3QueSkldGhpcy5vcHRpb25zLnN1YmRvbWFpbnMubGVuZ3RoO3JldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1t0XX0sX2Fib3J0TG9hZGluZzpmdW5jdGlvbigpe3ZhciB0LGUsaTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5jb29yZHMueiE9PXRoaXMuX3RpbGVab29tJiYoKGk9dGhpcy5fdGlsZXNbdF0uZWwpLm9ubG9hZD11LGkub25lcnJvcj11LGkuY29tcGxldGV8fChpLnNyYz1LLGU9dGhpcy5fdGlsZXNbdF0uY29vcmRzLFQoaSksZGVsZXRlIHRoaXMuX3RpbGVzW3RdLHRoaXMuZmlyZSgidGlsZWFib3J0Iix7dGlsZTppLGNvb3JkczplfSkpKX0sX3JlbW92ZVRpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07aWYoZSlyZXR1cm4gZS5lbC5zZXRBdHRyaWJ1dGUoInNyYyIsSyksTmkucHJvdG90eXBlLl9yZW1vdmVUaWxlLmNhbGwodGhpcyx0KX0sX3RpbGVSZWFkeTpmdW5jdGlvbih0LGUsaSl7aWYodGhpcy5fbWFwJiYoIWl8fGkuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PUspKXJldHVybiBOaS5wcm90b3R5cGUuX3RpbGVSZWFkeS5jYWxsKHRoaXMsdCxlLGkpfX0pO2Z1bmN0aW9uIGppKHQsZSl7cmV0dXJuIG5ldyBEaSh0LGUpfXZhciBIaT1EaS5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6IldNUyIscmVxdWVzdDoiR2V0TWFwIixsYXllcnM6IiIsc3R5bGVzOiIiLGZvcm1hdDoiaW1hZ2UvanBlZyIsdHJhbnNwYXJlbnQ6ITEsdmVyc2lvbjoiMS4xLjEifSxvcHRpb25zOntjcnM6bnVsbCx1cHBlcmNhc2U6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl91cmw9dDt2YXIgaSxuPWwoe30sdGhpcy5kZWZhdWx0V21zUGFyYW1zKTtmb3IoaSBpbiBlKWkgaW4gdGhpcy5vcHRpb25zfHwobltpXT1lW2ldKTt2YXIgdD0oZT1jKHRoaXMsZSkpLmRldGVjdFJldGluYSYmYi5yZXRpbmE\/MjoxLG89dGhpcy5nZXRUaWxlU2l6ZSgpO24ud2lkdGg9by54KnQsbi5oZWlnaHQ9by55KnQsdGhpcy53bXNQYXJhbXM9bn0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fY3JzPXRoaXMub3B0aW9ucy5jcnN8fHQub3B0aW9ucy5jcnMsdGhpcy5fd21zVmVyc2lvbj1wYXJzZUZsb2F0KHRoaXMud21zUGFyYW1zLnZlcnNpb24pO3ZhciBlPTEuMzw9dGhpcy5fd21zVmVyc2lvbj8iY3JzIjoic3JzIjt0aGlzLndtc1BhcmFtc1tlXT10aGlzLl9jcnMuY29kZSxEaS5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzLHQpfSxnZXRUaWxlVXJsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbGVDb29yZHNUb053U2UodCksaT10aGlzLl9jcnMsaT1fKGkucHJvamVjdChlWzBdKSxpLnByb2plY3QoZVsxXSkpLGU9aS5taW4saT1pLm1heCxlPSgxLjM8PXRoaXMuX3dtc1ZlcnNpb24mJnRoaXMuX2Nycz09PWxpP1tlLnksZS54LGkueSxpLnhdOltlLngsZS55LGkueCxpLnldKS5qb2luKCIsIiksaT1EaS5wcm90b3R5cGUuZ2V0VGlsZVVybC5jYWxsKHRoaXMsdCk7cmV0dXJuIGkrVSh0aGlzLndtc1BhcmFtcyxpLHRoaXMub3B0aW9ucy51cHBlcmNhc2UpKyh0aGlzLm9wdGlvbnMudXBwZXJjYXNlPyImQkJPWD0iOiImYmJveD0iKStlfSxzZXRQYXJhbXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbCh0aGlzLndtc1BhcmFtcyx0KSxlfHx0aGlzLnJlZHJhdygpLHRoaXN9fSk7RGkuV01TPUhpLGppLndtcz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgSGkodCxlKX07dmFyIFdpPW8uZXh0ZW5kKHtvcHRpb25zOntwYWRkaW5nOi4xfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KSxoKHRoaXMpLHRoaXMuX2xheWVycz10aGlzLl9sYXllcnN8fHt9fSxvbkFkZDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2luaXRDb250YWluZXIoKSxNKHRoaXMuX2NvbnRhaW5lciwibGVhZmxldC16b29tLWFuaW1hdGVkIikpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fdXBkYXRlKCksdGhpcy5vbigidXBkYXRlIix0aGlzLl91cGRhdGVQYXRocyx0aGlzKX0sb25SZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLm9mZigidXBkYXRlIix0aGlzLl91cGRhdGVQYXRocyx0aGlzKSx0aGlzLl9kZXN0cm95Q29udGFpbmVyKCl9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt2aWV3cmVzZXQ6dGhpcy5fcmVzZXQsem9vbTp0aGlzLl9vblpvb20sbW92ZWVuZDp0aGlzLl91cGRhdGUsem9vbWVuZDp0aGlzLl9vblpvb21FbmR9O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX29uQW5pbVpvb20pLHR9LF9vbkFuaW1ab29tOmZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZVRyYW5zZm9ybSh0LmNlbnRlcix0Lnpvb20pfSxfb25ab29tOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlVHJhbnNmb3JtKHRoaXMuX21hcC5nZXRDZW50ZXIoKSx0aGlzLl9tYXAuZ2V0Wm9vbSgpKX0sX3VwZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX21hcC5nZXRab29tU2NhbGUoZSx0aGlzLl96b29tKSxuPXRoaXMuX21hcC5nZXRTaXplKCkubXVsdGlwbHlCeSguNSt0aGlzLm9wdGlvbnMucGFkZGluZyksbz10aGlzLl9tYXAucHJvamVjdCh0aGlzLl9jZW50ZXIsZSksbj1uLm11bHRpcGx5QnkoLWkpLmFkZChvKS5zdWJ0cmFjdCh0aGlzLl9tYXAuX2dldE5ld1BpeGVsT3JpZ2luKHQsZSkpO2IuYW55M2Q\/YmUodGhpcy5fY29udGFpbmVyLG4saSk6Wih0aGlzLl9jb250YWluZXIsbil9LF9yZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl91cGRhdGUoKSx0aGlzLl91cGRhdGVUcmFuc2Zvcm0odGhpcy5fY2VudGVyLHRoaXMuX3pvb20pLHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0uX3Jlc2V0KCl9LF9vblpvb21FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fcHJvamVjdCgpfSxfdXBkYXRlUGF0aHM6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fdXBkYXRlKCl9LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMucGFkZGluZyxlPXRoaXMuX21hcC5nZXRTaXplKCksaT10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoZS5tdWx0aXBseUJ5KC10KSkucm91bmQoKTt0aGlzLl9ib3VuZHM9bmV3IGYoaSxpLmFkZChlLm11bHRpcGx5QnkoMSsyKnQpKS5yb3VuZCgpKSx0aGlzLl9jZW50ZXI9dGhpcy5fbWFwLmdldENlbnRlcigpLHRoaXMuX3pvb209dGhpcy5fbWFwLmdldFpvb20oKX19KSxGaT1XaS5leHRlbmQoe29wdGlvbnM6e3RvbGVyYW5jZTowfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1XaS5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7cmV0dXJuIHQudmlld3ByZXJlc2V0PXRoaXMuX29uVmlld1ByZVJlc2V0LHR9LF9vblZpZXdQcmVSZXNldDpmdW5jdGlvbigpe3RoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHM9ITB9LG9uQWRkOmZ1bmN0aW9uKCl7V2kucHJvdG90eXBlLm9uQWRkLmNhbGwodGhpcyksdGhpcy5fZHJhdygpfSxfaW5pdENvbnRhaW5lcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtTKHQsIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUsdGhpcyksUyh0LCJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBjb250ZXh0bWVudSIsdGhpcy5fb25DbGljayx0aGlzKSxTKHQsIm1vdXNlb3V0Iix0aGlzLl9oYW5kbGVNb3VzZU91dCx0aGlzKSx0Ll9sZWFmbGV0X2Rpc2FibGVfZXZlbnRzPSEwLHRoaXMuX2N0eD10LmdldENvbnRleHQoIjJkIil9LF9kZXN0cm95Q29udGFpbmVyOmZ1bmN0aW9uKCl7cih0aGlzLl9yZWRyYXdSZXF1ZXN0KSxkZWxldGUgdGhpcy5fY3R4LFQodGhpcy5fY29udGFpbmVyKSxrKHRoaXMuX2NvbnRhaW5lciksZGVsZXRlIHRoaXMuX2NvbnRhaW5lcn0sX3VwZGF0ZVBhdGhzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHMpe2Zvcih2YXIgdCBpbiB0aGlzLl9yZWRyYXdCb3VuZHM9bnVsbCx0aGlzLl9sYXllcnMpdGhpcy5fbGF5ZXJzW3RdLl91cGRhdGUoKTt0aGlzLl9yZWRyYXcoKX19LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjt0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20mJnRoaXMuX2JvdW5kc3x8KFdpLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyksdD10aGlzLl9ib3VuZHMsZT10aGlzLl9jb250YWluZXIsaT10LmdldFNpemUoKSxuPWIucmV0aW5hPzI6MSxaKGUsdC5taW4pLGUud2lkdGg9bippLngsZS5oZWlnaHQ9bippLnksZS5zdHlsZS53aWR0aD1pLngrInB4IixlLnN0eWxlLmhlaWdodD1pLnkrInB4IixiLnJldGluYSYmdGhpcy5fY3R4LnNjYWxlKDIsMiksdGhpcy5fY3R4LnRyYW5zbGF0ZSgtdC5taW4ueCwtdC5taW4ueSksdGhpcy5maXJlKCJ1cGRhdGUiKSl9LF9yZXNldDpmdW5jdGlvbigpe1dpLnByb3RvdHlwZS5fcmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzJiYodGhpcy5fcG9zdHBvbmVVcGRhdGVQYXRocz0hMSx0aGlzLl91cGRhdGVQYXRocygpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZURhc2hBcnJheSh0KTt0PSh0aGlzLl9sYXllcnNbaCh0KV09dCkuX29yZGVyPXtsYXllcjp0LHByZXY6dGhpcy5fZHJhd0xhc3QsbmV4dDpudWxsfTt0aGlzLl9kcmF3TGFzdCYmKHRoaXMuX2RyYXdMYXN0Lm5leHQ9dCksdGhpcy5fZHJhd0xhc3Q9dCx0aGlzLl9kcmF3Rmlyc3Q9dGhpcy5fZHJhd0ZpcnN0fHx0aGlzLl9kcmF3TGFzdH0sX2FkZFBhdGg6ZnVuY3Rpb24odCl7dGhpcy5fcmVxdWVzdFJlZHJhdyh0KX0sX3JlbW92ZVBhdGg6ZnVuY3Rpb24odCl7dmFyIGU9dC5fb3JkZXIsaT1lLm5leHQsZT1lLnByZXY7aT9pLnByZXY9ZTp0aGlzLl9kcmF3TGFzdD1lLGU\/ZS5uZXh0PWk6dGhpcy5fZHJhd0ZpcnN0PWksZGVsZXRlIHQuX29yZGVyLGRlbGV0ZSB0aGlzLl9sYXllcnNbaCh0KV0sdGhpcy5fcmVxdWVzdFJlZHJhdyh0KX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24odCl7dGhpcy5fZXh0ZW5kUmVkcmF3Qm91bmRzKHQpLHQuX3Byb2plY3QoKSx0Ll91cGRhdGUoKSx0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlRGFzaEFycmF5KHQpLHRoaXMuX3JlcXVlc3RSZWRyYXcodCl9LF91cGRhdGVEYXNoQXJyYXk6ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0Lm9wdGlvbnMuZGFzaEFycmF5KXtmb3IodmFyIGUsaT10Lm9wdGlvbnMuZGFzaEFycmF5LnNwbGl0KC9bLCBdKy8pLG49W10sbz0wO288aS5sZW5ndGg7bysrKXtpZihlPU51bWJlcihpW29dKSxpc05hTihlKSlyZXR1cm47bi5wdXNoKGUpfXQub3B0aW9ucy5fZGFzaEFycmF5PW59ZWxzZSB0Lm9wdGlvbnMuX2Rhc2hBcnJheT10Lm9wdGlvbnMuZGFzaEFycmF5fSxfcmVxdWVzdFJlZHJhdzpmdW5jdGlvbih0KXt0aGlzLl9tYXAmJih0aGlzLl9leHRlbmRSZWRyYXdCb3VuZHModCksdGhpcy5fcmVkcmF3UmVxdWVzdD10aGlzLl9yZWRyYXdSZXF1ZXN0fHx4KHRoaXMuX3JlZHJhdyx0aGlzKSl9LF9leHRlbmRSZWRyYXdCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU7dC5fcHhCb3VuZHMmJihlPSh0Lm9wdGlvbnMud2VpZ2h0fHwwKSsxLHRoaXMuX3JlZHJhd0JvdW5kcz10aGlzLl9yZWRyYXdCb3VuZHN8fG5ldyBmLHRoaXMuX3JlZHJhd0JvdW5kcy5leHRlbmQodC5fcHhCb3VuZHMubWluLnN1YnRyYWN0KFtlLGVdKSksdGhpcy5fcmVkcmF3Qm91bmRzLmV4dGVuZCh0Ll9weEJvdW5kcy5tYXguYWRkKFtlLGVdKSkpfSxfcmVkcmF3OmZ1bmN0aW9uKCl7dGhpcy5fcmVkcmF3UmVxdWVzdD1udWxsLHRoaXMuX3JlZHJhd0JvdW5kcyYmKHRoaXMuX3JlZHJhd0JvdW5kcy5taW4uX2Zsb29yKCksdGhpcy5fcmVkcmF3Qm91bmRzLm1heC5fY2VpbCgpKSx0aGlzLl9jbGVhcigpLHRoaXMuX2RyYXcoKSx0aGlzLl9yZWRyYXdCb3VuZHM9bnVsbH0sX2NsZWFyOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLl9yZWRyYXdCb3VuZHM7ZT8odD1lLmdldFNpemUoKSx0aGlzLl9jdHguY2xlYXJSZWN0KGUubWluLngsZS5taW4ueSx0LngsdC55KSk6KHRoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdGhpcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5fY29udGFpbmVyLndpZHRoLHRoaXMuX2NvbnRhaW5lci5oZWlnaHQpLHRoaXMuX2N0eC5yZXN0b3JlKCkpfSxfZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9yZWRyYXdCb3VuZHM7dGhpcy5fY3R4LnNhdmUoKSxpJiYoZT1pLmdldFNpemUoKSx0aGlzLl9jdHguYmVnaW5QYXRoKCksdGhpcy5fY3R4LnJlY3QoaS5taW4ueCxpLm1pbi55LGUueCxlLnkpLHRoaXMuX2N0eC5jbGlwKCkpLHRoaXMuX2RyYXdpbmc9ITA7Zm9yKHZhciBuPXRoaXMuX2RyYXdGaXJzdDtuO249bi5uZXh0KXQ9bi5sYXllciwoIWl8fHQuX3B4Qm91bmRzJiZ0Ll9weEJvdW5kcy5pbnRlcnNlY3RzKGkpKSYmdC5fdXBkYXRlUGF0aCgpO3RoaXMuX2RyYXdpbmc9ITEsdGhpcy5fY3R4LnJlc3RvcmUoKX0sX3VwZGF0ZVBvbHk6ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9kcmF3aW5nKXt2YXIgaSxuLG8scyxyPXQuX3BhcnRzLGE9ci5sZW5ndGgsaD10aGlzLl9jdHg7aWYoYSl7Zm9yKGguYmVnaW5QYXRoKCksaT0wO2k8YTtpKyspe2ZvcihuPTAsbz1yW2ldLmxlbmd0aDtuPG87bisrKXM9cltpXVtuXSxoW24\/ImxpbmVUbyI6Im1vdmVUbyJdKHMueCxzLnkpO2UmJmguY2xvc2VQYXRoKCl9dGhpcy5fZmlsbFN0cm9rZShoLHQpfX19LF91cGRhdGVDaXJjbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG87dGhpcy5fZHJhd2luZyYmIXQuX2VtcHR5KCkmJihlPXQuX3BvaW50LGk9dGhpcy5fY3R4LG49TWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXMpLDEpLDEhPShvPShNYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1c1kpLDEpfHxuKS9uKSYmKGkuc2F2ZSgpLGkuc2NhbGUoMSxvKSksaS5iZWdpblBhdGgoKSxpLmFyYyhlLngsZS55L28sbiwwLDIqTWF0aC5QSSwhMSksMSE9byYmaS5yZXN0b3JlKCksdGhpcy5fZmlsbFN0cm9rZShpLHQpKX0sX2ZpbGxTdHJva2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLm9wdGlvbnM7aS5maWxsJiYodC5nbG9iYWxBbHBoYT1pLmZpbGxPcGFjaXR5LHQuZmlsbFN0eWxlPWkuZmlsbENvbG9yfHxpLmNvbG9yLHQuZmlsbChpLmZpbGxSdWxlfHwiZXZlbm9kZCIpKSxpLnN0cm9rZSYmMCE9PWkud2VpZ2h0JiYodC5zZXRMaW5lRGFzaCYmdC5zZXRMaW5lRGFzaChlLm9wdGlvbnMmJmUub3B0aW9ucy5fZGFzaEFycmF5fHxbXSksdC5nbG9iYWxBbHBoYT1pLm9wYWNpdHksdC5saW5lV2lkdGg9aS53ZWlnaHQsdC5zdHJva2VTdHlsZT1pLmNvbG9yLHQubGluZUNhcD1pLmxpbmVDYXAsdC5saW5lSm9pbj1pLmxpbmVKb2luLHQuc3Ryb2tlKCkpfSxfb25DbGljazpmdW5jdGlvbih0KXtmb3IodmFyIGUsaSxuPXRoaXMuX21hcC5tb3VzZUV2ZW50VG9MYXllclBvaW50KHQpLG89dGhpcy5fZHJhd0ZpcnN0O287bz1vLm5leHQpKGU9by5sYXllcikub3B0aW9ucy5pbnRlcmFjdGl2ZSYmZS5fY29udGFpbnNQb2ludChuKSYmKCgiY2xpY2siPT09dC50eXBlfHwicHJlY2xpY2siPT09dC50eXBlKSYmdGhpcy5fbWFwLl9kcmFnZ2FibGVNb3ZlZChlKXx8KGk9ZSkpO3RoaXMuX2ZpcmVFdmVudCghIWkmJltpXSx0KX0sX29uTW91c2VNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlOyF0aGlzLl9tYXB8fHRoaXMuX21hcC5kcmFnZ2luZy5tb3ZpbmcoKXx8dGhpcy5fbWFwLl9hbmltYXRpbmdab29tfHwoZT10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSx0aGlzLl9oYW5kbGVNb3VzZUhvdmVyKHQsZSkpfSxfaGFuZGxlTW91c2VPdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faG92ZXJlZExheWVyO2UmJih6KHRoaXMuX2NvbnRhaW5lciwibGVhZmxldC1pbnRlcmFjdGl2ZSIpLHRoaXMuX2ZpcmVFdmVudChbZV0sdCwibW91c2VvdXQiKSx0aGlzLl9ob3ZlcmVkTGF5ZXI9bnVsbCx0aGlzLl9tb3VzZUhvdmVyVGhyb3R0bGVkPSExKX0sX2hhbmRsZU1vdXNlSG92ZXI6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fbW91c2VIb3ZlclRocm90dGxlZCl7Zm9yKHZhciBpLG4sbz10aGlzLl9kcmF3Rmlyc3Q7bztvPW8ubmV4dCkoaT1vLmxheWVyKS5vcHRpb25zLmludGVyYWN0aXZlJiZpLl9jb250YWluc1BvaW50KGUpJiYobj1pKTtuIT09dGhpcy5faG92ZXJlZExheWVyJiYodGhpcy5faGFuZGxlTW91c2VPdXQodCksbiYmKE0odGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5fZmlyZUV2ZW50KFtuXSx0LCJtb3VzZW92ZXIiKSx0aGlzLl9ob3ZlcmVkTGF5ZXI9bikpLHRoaXMuX2ZpcmVFdmVudCghIXRoaXMuX2hvdmVyZWRMYXllciYmW3RoaXMuX2hvdmVyZWRMYXllcl0sdCksdGhpcy5fbW91c2VIb3ZlclRocm90dGxlZD0hMCxzZXRUaW1lb3V0KGEoZnVuY3Rpb24oKXt0aGlzLl9tb3VzZUhvdmVyVGhyb3R0bGVkPSExfSx0aGlzKSwzMil9fSxfZmlyZUV2ZW50OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLl9tYXAuX2ZpcmVET01FdmVudChlLGl8fGUudHlwZSx0KX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dC5fb3JkZXI7biYmKGU9bi5uZXh0LGk9bi5wcmV2LGUmJigoZS5wcmV2PWkpP2kubmV4dD1lOmUmJih0aGlzLl9kcmF3Rmlyc3Q9ZSksbi5wcmV2PXRoaXMuX2RyYXdMYXN0LCh0aGlzLl9kcmF3TGFzdC5uZXh0PW4pLm5leHQ9bnVsbCx0aGlzLl9kcmF3TGFzdD1uLHRoaXMuX3JlcXVlc3RSZWRyYXcodCkpKX0sX2JyaW5nVG9CYWNrOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj10Ll9vcmRlcjtuJiYoZT1uLm5leHQsKGk9bi5wcmV2KSYmKChpLm5leHQ9ZSk\/ZS5wcmV2PWk6aSYmKHRoaXMuX2RyYXdMYXN0PWkpLG4ucHJldj1udWxsLG4ubmV4dD10aGlzLl9kcmF3Rmlyc3QsdGhpcy5fZHJhd0ZpcnN0LnByZXY9bix0aGlzLl9kcmF3Rmlyc3Q9bix0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpKSl9fSk7ZnVuY3Rpb24gVWkodCl7cmV0dXJuIGIuY2FudmFzP25ldyBGaSh0KTpudWxsfXZhciBWaT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZG9jdW1lbnQubmFtZXNwYWNlcy5hZGQoImx2bWwiLCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIpLGZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCI8bHZtbDoiK3QrJyBjbGFzcz0ibHZtbCI+Jyl9fWNhdGNoKHQpe31yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIjwiK3QrJyB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LmNvbTp2bWwiIGNsYXNzPSJsdm1sIj4nKX19KCksenQ9e19pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyPVAoImRpdiIsImxlYWZsZXQtdm1sLWNvbnRhaW5lciIpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9hbmltYXRpbmdab29tfHwoV2kucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKSx0aGlzLmZpcmUoInVwZGF0ZSIpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2NvbnRhaW5lcj1WaSgic2hhcGUiKTtNKGUsImxlYWZsZXQtdm1sLXNoYXBlICIrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fCIiKSksZS5jb29yZHNpemU9IjEgMSIsdC5fcGF0aD1WaSgicGF0aCIpLGUuYXBwZW5kQ2hpbGQodC5fcGF0aCksdGhpcy5fdXBkYXRlU3R5bGUodCksdGhpcy5fbGF5ZXJzW2godCldPXR9LF9hZGRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2NvbnRhaW5lcjt0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZSksdC5vcHRpb25zLmludGVyYWN0aXZlJiZ0LmFkZEludGVyYWN0aXZlVGFyZ2V0KGUpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXt2YXIgZT10Ll9jb250YWluZXI7VChlKSx0LnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KGUpLGRlbGV0ZSB0aGlzLl9sYXllcnNbaCh0KV19LF91cGRhdGVTdHlsZTpmdW5jdGlvbih0KXt2YXIgZT10Ll9zdHJva2UsaT10Ll9maWxsLG49dC5vcHRpb25zLG89dC5fY29udGFpbmVyO28uc3Ryb2tlZD0hIW4uc3Ryb2tlLG8uZmlsbGVkPSEhbi5maWxsLG4uc3Ryb2tlPyhlPWV8fCh0Ll9zdHJva2U9VmkoInN0cm9rZSIpKSxvLmFwcGVuZENoaWxkKGUpLGUud2VpZ2h0PW4ud2VpZ2h0KyJweCIsZS5jb2xvcj1uLmNvbG9yLGUub3BhY2l0eT1uLm9wYWNpdHksbi5kYXNoQXJyYXk\/ZS5kYXNoU3R5bGU9ZChuLmRhc2hBcnJheSk\/bi5kYXNoQXJyYXkuam9pbigiICIpOm4uZGFzaEFycmF5LnJlcGxhY2UoLyggKiwgKikvZywiICIpOmUuZGFzaFN0eWxlPSIiLGUuZW5kY2FwPW4ubGluZUNhcC5yZXBsYWNlKCJidXR0IiwiZmxhdCIpLGUuam9pbnN0eWxlPW4ubGluZUpvaW4pOmUmJihvLnJlbW92ZUNoaWxkKGUpLHQuX3N0cm9rZT1udWxsKSxuLmZpbGw\/KGk9aXx8KHQuX2ZpbGw9VmkoImZpbGwiKSksby5hcHBlbmRDaGlsZChpKSxpLmNvbG9yPW4uZmlsbENvbG9yfHxuLmNvbG9yLGkub3BhY2l0eT1uLmZpbGxPcGFjaXR5KTppJiYoby5yZW1vdmVDaGlsZChpKSx0Ll9maWxsPW51bGwpfSxfdXBkYXRlQ2lyY2xlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX3BvaW50LnJvdW5kKCksaT1NYXRoLnJvdW5kKHQuX3JhZGl1cyksbj1NYXRoLnJvdW5kKHQuX3JhZGl1c1l8fGkpO3RoaXMuX3NldFBhdGgodCx0Ll9lbXB0eSgpPyJNMCAwIjoiQUwgIitlLngrIiwiK2UueSsiICIraSsiLCIrbisiIDAsMjM1OTI2MDAiKX0sX3NldFBhdGg6ZnVuY3Rpb24odCxlKXt0Ll9wYXRoLnY9ZX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbih0KXtmZSh0Ll9jb250YWluZXIpfSxfYnJpbmdUb0JhY2s6ZnVuY3Rpb24odCl7Z2UodC5fY29udGFpbmVyKX19LHFpPWIudm1sP1ZpOmN0LEdpPVdpLmV4dGVuZCh7X2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXI9cWkoInN2ZyIpLHRoaXMuX2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLHRoaXMuX3Jvb3RHcm91cD1xaSgiZyIpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yb290R3JvdXApfSxfZGVzdHJveUNvbnRhaW5lcjpmdW5jdGlvbigpe1QodGhpcy5fY29udGFpbmVyKSxrKHRoaXMuX2NvbnRhaW5lciksZGVsZXRlIHRoaXMuX2NvbnRhaW5lcixkZWxldGUgdGhpcy5fcm9vdEdyb3VwLGRlbGV0ZSB0aGlzLl9zdmdTaXplfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO3RoaXMuX21hcC5fYW5pbWF0aW5nWm9vbSYmdGhpcy5fYm91bmRzfHwoV2kucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKSxlPSh0PXRoaXMuX2JvdW5kcykuZ2V0U2l6ZSgpLGk9dGhpcy5fY29udGFpbmVyLHRoaXMuX3N2Z1NpemUmJnRoaXMuX3N2Z1NpemUuZXF1YWxzKGUpfHwodGhpcy5fc3ZnU2l6ZT1lLGkuc2V0QXR0cmlidXRlKCJ3aWR0aCIsZS54KSxpLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixlLnkpKSxaKGksdC5taW4pLGkuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbdC5taW4ueCx0Lm1pbi55LGUueCxlLnldLmpvaW4oIiAiKSksdGhpcy5maXJlKCJ1cGRhdGUiKSl9LF9pbml0UGF0aDpmdW5jdGlvbih0KXt2YXIgZT10Ll9wYXRoPXFpKCJwYXRoIik7dC5vcHRpb25zLmNsYXNzTmFtZSYmTShlLHQub3B0aW9ucy5jbGFzc05hbWUpLHQub3B0aW9ucy5pbnRlcmFjdGl2ZSYmTShlLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5fdXBkYXRlU3R5bGUodCksdGhpcy5fbGF5ZXJzW2godCldPXR9LF9hZGRQYXRoOmZ1bmN0aW9uKHQpe3RoaXMuX3Jvb3RHcm91cHx8dGhpcy5faW5pdENvbnRhaW5lcigpLHRoaXMuX3Jvb3RHcm91cC5hcHBlbmRDaGlsZCh0Ll9wYXRoKSx0LmFkZEludGVyYWN0aXZlVGFyZ2V0KHQuX3BhdGgpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXtUKHQuX3BhdGgpLHQucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodC5fcGF0aCksZGVsZXRlIHRoaXMuX2xheWVyc1toKHQpXX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24odCl7dC5fcHJvamVjdCgpLHQuX3VwZGF0ZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fcGF0aCx0PXQub3B0aW9ucztlJiYodC5zdHJva2U\/KGUuc2V0QXR0cmlidXRlKCJzdHJva2UiLHQuY29sb3IpLGUuc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsdC5vcGFjaXR5KSxlLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LndlaWdodCksZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1saW5lY2FwIix0LmxpbmVDYXApLGUuc2V0QXR0cmlidXRlKCJzdHJva2UtbGluZWpvaW4iLHQubGluZUpvaW4pLHQuZGFzaEFycmF5P2Uuc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5Iix0LmRhc2hBcnJheSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiKSx0LmRhc2hPZmZzZXQ\/ZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNob2Zmc2V0Iix0LmRhc2hPZmZzZXQpOmUucmVtb3ZlQXR0cmlidXRlKCJzdHJva2UtZGFzaG9mZnNldCIpKTplLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwibm9uZSIpLHQuZmlsbD8oZS5zZXRBdHRyaWJ1dGUoImZpbGwiLHQuZmlsbENvbG9yfHx0LmNvbG9yKSxlLnNldEF0dHJpYnV0ZSgiZmlsbC1vcGFjaXR5Iix0LmZpbGxPcGFjaXR5KSxlLnNldEF0dHJpYnV0ZSgiZmlsbC1ydWxlIix0LmZpbGxSdWxlfHwiZXZlbm9kZCIpKTplLnNldEF0dHJpYnV0ZSgiZmlsbCIsIm5vbmUiKSl9LF91cGRhdGVQb2x5OmZ1bmN0aW9uKHQsZSl7dGhpcy5fc2V0UGF0aCh0LGR0KHQuX3BhcnRzLGUpKX0sX3VwZGF0ZUNpcmNsZTpmdW5jdGlvbih0KXt2YXIgZT10Ll9wb2ludCxpPU1hdGgubWF4KE1hdGgucm91bmQodC5fcmFkaXVzKSwxKSxuPSJhIitpKyIsIisoTWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXNZKSwxKXx8aSkrIiAwIDEsMCAiLGU9dC5fZW1wdHkoKT8iTTAgMCI6Ik0iKyhlLngtaSkrIiwiK2UueStuKzIqaSsiLDAgIituKzIqLWkrIiwwICI7dGhpcy5fc2V0UGF0aCh0LGUpfSxfc2V0UGF0aDpmdW5jdGlvbih0LGUpe3QuX3BhdGguc2V0QXR0cmlidXRlKCJkIixlKX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbih0KXtmZSh0Ll9wYXRoKX0sX2JyaW5nVG9CYWNrOmZ1bmN0aW9uKHQpe2dlKHQuX3BhdGgpfX0pO2Z1bmN0aW9uIEtpKHQpe3JldHVybiBiLnN2Z3x8Yi52bWw\/bmV3IEdpKHQpOm51bGx9Yi52bWwmJkdpLmluY2x1ZGUoenQpLEEuaW5jbHVkZSh7Z2V0UmVuZGVyZXI6ZnVuY3Rpb24odCl7dD0odD10Lm9wdGlvbnMucmVuZGVyZXJ8fHRoaXMuX2dldFBhbmVSZW5kZXJlcih0Lm9wdGlvbnMucGFuZSl8fHRoaXMub3B0aW9ucy5yZW5kZXJlcnx8dGhpcy5fcmVuZGVyZXIpfHwodGhpcy5fcmVuZGVyZXI9dGhpcy5fY3JlYXRlUmVuZGVyZXIoKSk7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCl8fHRoaXMuYWRkTGF5ZXIodCksdH0sX2dldFBhbmVSZW5kZXJlcjpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4ib3ZlcmxheVBhbmUiIT09dCYmdm9pZCAwIT09dCYmKHZvaWQgMD09PShlPXRoaXMuX3BhbmVSZW5kZXJlcnNbdF0pJiYoZT10aGlzLl9jcmVhdGVSZW5kZXJlcih7cGFuZTp0fSksdGhpcy5fcGFuZVJlbmRlcmVyc1t0XT1lKSxlKX0sX2NyZWF0ZVJlbmRlcmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZmVyQ2FudmFzJiZVaSh0KXx8S2kodCl9fSk7dmFyIFlpPXhpLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe3hpLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyx0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCksZSl9LHNldEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXRMYXRMbmdzKHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSl9LF9ib3VuZHNUb0xhdExuZ3M6ZnVuY3Rpb24odCl7cmV0dXJuWyh0PWcodCkpLmdldFNvdXRoV2VzdCgpLHQuZ2V0Tm9ydGhXZXN0KCksdC5nZXROb3J0aEVhc3QoKSx0LmdldFNvdXRoRWFzdCgpXX19KTtHaS5jcmVhdGU9cWksR2kucG9pbnRzVG9QYXRoPWR0LHdpLmdlb21ldHJ5VG9MYXllcj1iaSx3aS5jb29yZHNUb0xhdExuZz1MaSx3aS5jb29yZHNUb0xhdExuZ3M9VGksd2kubGF0TG5nVG9Db29yZHM9TWksd2kubGF0TG5nc1RvQ29vcmRzPXppLHdpLmdldEZlYXR1cmU9Q2ksd2kuYXNGZWF0dXJlPVppLEEubWVyZ2VPcHRpb25zKHtib3hab29tOiEwfSk7dmFyIF90PW4uZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj10Ll9jb250YWluZXIsdGhpcy5fcGFuZT10Ll9wYW5lcy5vdmVybGF5UGFuZSx0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHQub24oInVubG9hZCIsdGhpcy5fZGVzdHJveSx0aGlzKX0sYWRkSG9va3M6ZnVuY3Rpb24oKXtTKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtrKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0sbW92ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW92ZWR9LF9kZXN0cm95OmZ1bmN0aW9uKCl7VCh0aGlzLl9wYW5lKSxkZWxldGUgdGhpcy5fcGFuZX0sX3Jlc2V0U3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHRoaXMuX21vdmVkPSExfSxfY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGU6ZnVuY3Rpb24oKXswIT09dGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQpLHRoaXMuX3Jlc2V0U3RhdGVUaW1lb3V0PTApfSxfb25Nb3VzZURvd246ZnVuY3Rpb24odCl7aWYoIXQuc2hpZnRLZXl8fDEhPT10LndoaWNoJiYxIT09dC5idXR0b24pcmV0dXJuITE7dGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSx0aGlzLl9yZXNldFN0YXRlKCkscmUoKSxMZSgpLHRoaXMuX3N0YXJ0UG9pbnQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLFMoZG9jdW1lbnQse2NvbnRleHRtZW51OlJlLG1vdXNlbW92ZTp0aGlzLl9vbk1vdXNlTW92ZSxtb3VzZXVwOnRoaXMuX29uTW91c2VVcCxrZXlkb3duOnRoaXMuX29uS2V5RG93bn0sdGhpcyl9LF9vbk1vdXNlTW92ZTpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlZHx8KHRoaXMuX21vdmVkPSEwLHRoaXMuX2JveD1QKCJkaXYiLCJsZWFmbGV0LXpvb20tYm94Iix0aGlzLl9jb250YWluZXIpLE0odGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNyb3NzaGFpciIpLHRoaXMuX21hcC5maXJlKCJib3h6b29tc3RhcnQiKSksdGhpcy5fcG9pbnQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpO3ZhciB0PW5ldyBmKHRoaXMuX3BvaW50LHRoaXMuX3N0YXJ0UG9pbnQpLGU9dC5nZXRTaXplKCk7Wih0aGlzLl9ib3gsdC5taW4pLHRoaXMuX2JveC5zdHlsZS53aWR0aD1lLngrInB4Iix0aGlzLl9ib3guc3R5bGUuaGVpZ2h0PWUueSsicHgifSxfZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZWQmJihUKHRoaXMuX2JveCkseih0aGlzLl9jb250YWluZXIsImxlYWZsZXQtY3Jvc3NoYWlyIikpLGFlKCksVGUoKSxrKGRvY3VtZW50LHtjb250ZXh0bWVudTpSZSxtb3VzZW1vdmU6dGhpcy5fb25Nb3VzZU1vdmUsbW91c2V1cDp0aGlzLl9vbk1vdXNlVXAsa2V5ZG93bjp0aGlzLl9vbktleURvd259LHRoaXMpfSxfb25Nb3VzZVVwOmZ1bmN0aW9uKHQpezEhPT10LndoaWNoJiYxIT09dC5idXR0b258fCh0aGlzLl9maW5pc2goKSx0aGlzLl9tb3ZlZCYmKHRoaXMuX2NsZWFyRGVmZXJyZWRSZXNldFN0YXRlKCksdGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQ9c2V0VGltZW91dChhKHRoaXMuX3Jlc2V0U3RhdGUsdGhpcyksMCksdD1uZXcgcyh0aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9zdGFydFBvaW50KSx0aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9wb2ludCkpLHRoaXMuX21hcC5maXRCb3VuZHModCkuZmlyZSgiYm94em9vbWVuZCIse2JveFpvb21Cb3VuZHM6dH0pKSl9LF9vbktleURvd246ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJih0aGlzLl9maW5pc2goKSx0aGlzLl9jbGVhckRlZmVycmVkUmVzZXRTdGF0ZSgpLHRoaXMuX3Jlc2V0U3RhdGUoKSl9fSksQ3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJib3hab29tIixfdCksQS5tZXJnZU9wdGlvbnMoe2RvdWJsZUNsaWNrWm9vbTohMH0pLG4uZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LF9vbkRvdWJsZUNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPWUuZ2V0Wm9vbSgpLG49ZS5vcHRpb25zLnpvb21EZWx0YSxpPXQub3JpZ2luYWxFdmVudC5zaGlmdEtleT9pLW46aStuOyJjZW50ZXIiPT09ZS5vcHRpb25zLmRvdWJsZUNsaWNrWm9vbT9lLnNldFpvb20oaSk6ZS5zZXRab29tQXJvdW5kKHQuY29udGFpbmVyUG9pbnQsaSl9fSkpLFp0PShBLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiZG91YmxlQ2xpY2tab29tIixDdCksQS5tZXJnZU9wdGlvbnMoe2RyYWdnaW5nOiEwLGluZXJ0aWE6ITAsaW5lcnRpYURlY2VsZXJhdGlvbjozNDAwLGluZXJ0aWFNYXhTcGVlZDoxLzAsZWFzZUxpbmVhcml0eTouMix3b3JsZENvcHlKdW1wOiExLG1heEJvdW5kc1Zpc2Nvc2l0eTowfSksbi5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5fZHJhZ2dhYmxlfHwodD10aGlzLl9tYXAsdGhpcy5fZHJhZ2dhYmxlPW5ldyBYZSh0Ll9tYXBQYW5lLHQuX2NvbnRhaW5lciksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5vbigicHJlZHJhZyIsdGhpcy5fb25QcmVEcmFnTGltaXQsdGhpcyksdC5vcHRpb25zLndvcmxkQ29weUp1bXAmJih0aGlzLl9kcmFnZ2FibGUub24oInByZWRyYWciLHRoaXMuX29uUHJlRHJhZ1dyYXAsdGhpcyksdC5vbigiem9vbWVuZCIsdGhpcy5fb25ab29tRW5kLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX29uWm9vbUVuZCx0aGlzKSkpLE0odGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtZ3JhYiBsZWFmbGV0LXRvdWNoLWRyYWciKSx0aGlzLl9kcmFnZ2FibGUuZW5hYmxlKCksdGhpcy5fcG9zaXRpb25zPVtdLHRoaXMuX3RpbWVzPVtdfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3oodGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtZ3JhYiIpLHoodGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtdG91Y2gtZHJhZyIpLHRoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCl9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sbW92aW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3Zpbmd9LF9vbkRyYWdTdGFydDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fbWFwO2UuX3N0b3AoKSx0aGlzLl9tYXAub3B0aW9ucy5tYXhCb3VuZHMmJnRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kc1Zpc2Nvc2l0eT8odD1nKHRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kcyksdGhpcy5fb2Zmc2V0TGltaXQ9Xyh0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludCh0LmdldE5vcnRoV2VzdCgpKS5tdWx0aXBseUJ5KC0xKSx0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludCh0LmdldFNvdXRoRWFzdCgpKS5tdWx0aXBseUJ5KC0xKS5hZGQodGhpcy5fbWFwLmdldFNpemUoKSkpLHRoaXMuX3Zpc2Nvc2l0eT1NYXRoLm1pbigxLE1hdGgubWF4KDAsdGhpcy5fbWFwLm9wdGlvbnMubWF4Qm91bmRzVmlzY29zaXR5KSkpOnRoaXMuX29mZnNldExpbWl0PW51bGwsZS5maXJlKCJtb3Zlc3RhcnQiKS5maXJlKCJkcmFnc3RhcnQiKSxlLm9wdGlvbnMuaW5lcnRpYSYmKHRoaXMuX3Bvc2l0aW9ucz1bXSx0aGlzLl90aW1lcz1bXSl9LF9vbkRyYWc6ZnVuY3Rpb24odCl7dmFyIGUsaTt0aGlzLl9tYXAub3B0aW9ucy5pbmVydGlhJiYoZT10aGlzLl9sYXN0VGltZT0rbmV3IERhdGUsaT10aGlzLl9sYXN0UG9zPXRoaXMuX2RyYWdnYWJsZS5fYWJzUG9zfHx0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcyx0aGlzLl9wb3NpdGlvbnMucHVzaChpKSx0aGlzLl90aW1lcy5wdXNoKGUpLHRoaXMuX3BydW5lUG9zaXRpb25zKGUpKSx0aGlzLl9tYXAuZmlyZSgibW92ZSIsdCkuZmlyZSgiZHJhZyIsdCl9LF9wcnVuZVBvc2l0aW9uczpmdW5jdGlvbih0KXtmb3IoOzE8dGhpcy5fcG9zaXRpb25zLmxlbmd0aCYmNTA8dC10aGlzLl90aW1lc1swXTspdGhpcy5fcG9zaXRpb25zLnNoaWZ0KCksdGhpcy5fdGltZXMuc2hpZnQoKX0sX29uWm9vbUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRTaXplKCkuZGl2aWRlQnkoMiksZT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KFswLDBdKTt0aGlzLl9pbml0aWFsV29ybGRPZmZzZXQ9ZS5zdWJ0cmFjdCh0KS54LHRoaXMuX3dvcmxkV2lkdGg9dGhpcy5fbWFwLmdldFBpeGVsV29ybGRCb3VuZHMoKS5nZXRTaXplKCkueH0sX3Zpc2NvdXNMaW1pdDpmdW5jdGlvbih0LGUpe3JldHVybiB0LSh0LWUpKnRoaXMuX3Zpc2Nvc2l0eX0sX29uUHJlRHJhZ0xpbWl0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0aGlzLl92aXNjb3NpdHkmJnRoaXMuX29mZnNldExpbWl0JiYodD10aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy5zdWJ0cmFjdCh0aGlzLl9kcmFnZ2FibGUuX3N0YXJ0UG9zKSxlPXRoaXMuX29mZnNldExpbWl0LHQueDxlLm1pbi54JiYodC54PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LngsZS5taW4ueCkpLHQueTxlLm1pbi55JiYodC55PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LnksZS5taW4ueSkpLHQueD5lLm1heC54JiYodC54PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LngsZS5tYXgueCkpLHQueT5lLm1heC55JiYodC55PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LnksZS5tYXgueSkpLHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zPXRoaXMuX2RyYWdnYWJsZS5fc3RhcnRQb3MuYWRkKHQpKX0sX29uUHJlRHJhZ1dyYXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93b3JsZFdpZHRoLGU9TWF0aC5yb3VuZCh0LzIpLGk9dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0LG49dGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueCxvPShuLWUraSkldCtlLWksbj0obitlK2kpJXQtZS1pLHQ9TWF0aC5hYnMobytpKTxNYXRoLmFicyhuK2kpP286bjt0aGlzLl9kcmFnZ2FibGUuX2Fic1Bvcz10aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy5jbG9uZSgpLHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLng9dH0sX29uRHJhZ0VuZDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzPXRoaXMuX21hcCxyPXMub3B0aW9ucyxhPSFyLmluZXJ0aWF8fHQubm9JbmVydGlhfHx0aGlzLl90aW1lcy5sZW5ndGg8MjtzLmZpcmUoImRyYWdlbmQiLHQpLCFhJiYodGhpcy5fcHJ1bmVQb3NpdGlvbnMoK25ldyBEYXRlKSx0PXRoaXMuX2xhc3RQb3Muc3VidHJhY3QodGhpcy5fcG9zaXRpb25zWzBdKSxhPSh0aGlzLl9sYXN0VGltZS10aGlzLl90aW1lc1swXSkvMWUzLGU9ci5lYXNlTGluZWFyaXR5LGE9KHQ9dC5tdWx0aXBseUJ5KGUvYSkpLmRpc3RhbmNlVG8oWzAsMF0pLGk9TWF0aC5taW4oci5pbmVydGlhTWF4U3BlZWQsYSksdD10Lm11bHRpcGx5QnkoaS9hKSxuPWkvKHIuaW5lcnRpYURlY2VsZXJhdGlvbiplKSwobz10Lm11bHRpcGx5QnkoLW4vMikucm91bmQoKSkueHx8by55KT8obz1zLl9saW1pdE9mZnNldChvLHMub3B0aW9ucy5tYXhCb3VuZHMpLHgoZnVuY3Rpb24oKXtzLnBhbkJ5KG8se2R1cmF0aW9uOm4sZWFzZUxpbmVhcml0eTplLG5vTW92ZVN0YXJ0OiEwLGFuaW1hdGU6ITB9KX0pKTpzLmZpcmUoIm1vdmVlbmQiKX19KSksU3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJkcmFnZ2luZyIsWnQpLEEubWVyZ2VPcHRpb25zKHtrZXlib2FyZDohMCxrZXlib2FyZFBhbkRlbHRhOjgwfSksbi5leHRlbmQoe2tleUNvZGVzOntsZWZ0OlszN10scmlnaHQ6WzM5XSxkb3duOls0MF0sdXA6WzM4XSx6b29tSW46WzE4NywxMDcsNjEsMTcxXSx6b29tT3V0OlsxODksMTA5LDU0LDE3M119LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fc2V0UGFuRGVsdGEodC5vcHRpb25zLmtleWJvYXJkUGFuRGVsdGEpLHRoaXMuX3NldFpvb21EZWx0YSh0Lm9wdGlvbnMuem9vbURlbHRhKX0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjt0LnRhYkluZGV4PD0wJiYodC50YWJJbmRleD0iMCIpLFModCx7Zm9jdXM6dGhpcy5fb25Gb2N1cyxibHVyOnRoaXMuX29uQmx1cixtb3VzZWRvd246dGhpcy5fb25Nb3VzZURvd259LHRoaXMpLHRoaXMuX21hcC5vbih7Zm9jdXM6dGhpcy5fYWRkSG9va3MsYmx1cjp0aGlzLl9yZW1vdmVIb29rc30sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlSG9va3MoKSxrKHRoaXMuX21hcC5fY29udGFpbmVyLHtmb2N1czp0aGlzLl9vbkZvY3VzLGJsdXI6dGhpcy5fb25CbHVyLG1vdXNlZG93bjp0aGlzLl9vbk1vdXNlRG93bn0sdGhpcyksdGhpcy5fbWFwLm9mZih7Zm9jdXM6dGhpcy5fYWRkSG9va3MsYmx1cjp0aGlzLl9yZW1vdmVIb29rc30sdGhpcyl9LF9vbk1vdXNlRG93bjpmdW5jdGlvbigpe3ZhciB0LGUsaTt0aGlzLl9mb2N1c2VkfHwoaT1kb2N1bWVudC5ib2R5LHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9aS5zY3JvbGxUb3B8fHQuc2Nyb2xsVG9wLGk9aS5zY3JvbGxMZWZ0fHx0LnNjcm9sbExlZnQsdGhpcy5fbWFwLl9jb250YWluZXIuZm9jdXMoKSx3aW5kb3cuc2Nyb2xsVG8oaSxlKSl9LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMCx0aGlzLl9tYXAuZmlyZSgiZm9jdXMiKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5fbWFwLmZpcmUoImJsdXIiKX0sX3NldFBhbkRlbHRhOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9wYW5LZXlzPXt9LGk9dGhpcy5rZXlDb2RlcyxuPTAsbz1pLmxlZnQubGVuZ3RoO248bztuKyspZVtpLmxlZnRbbl1dPVstMSp0LDBdO2ZvcihuPTAsbz1pLnJpZ2h0Lmxlbmd0aDtuPG87bisrKWVbaS5yaWdodFtuXV09W3QsMF07Zm9yKG49MCxvPWkuZG93bi5sZW5ndGg7bjxvO24rKyllW2kuZG93bltuXV09WzAsdF07Zm9yKG49MCxvPWkudXAubGVuZ3RoO248bztuKyspZVtpLnVwW25dXT1bMCwtMSp0XX0sX3NldFpvb21EZWx0YTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fem9vbUtleXM9e30saT10aGlzLmtleUNvZGVzLG49MCxvPWkuem9vbUluLmxlbmd0aDtuPG87bisrKWVbaS56b29tSW5bbl1dPXQ7Zm9yKG49MCxvPWkuem9vbU91dC5sZW5ndGg7bjxvO24rKyllW2kuem9vbU91dFtuXV09LXR9LF9hZGRIb29rczpmdW5jdGlvbigpe1MoZG9jdW1lbnQsImtleWRvd24iLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7ayhkb2N1bWVudCwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpe2lmKCEodC5hbHRLZXl8fHQuY3RybEtleXx8dC5tZXRhS2V5KSl7dmFyIGUsaSxuPXQua2V5Q29kZSxvPXRoaXMuX21hcDtpZihuIGluIHRoaXMuX3BhbktleXMpby5fcGFuQW5pbSYmby5fcGFuQW5pbS5faW5Qcm9ncmVzc3x8KGk9dGhpcy5fcGFuS2V5c1tuXSx0LnNoaWZ0S2V5JiYoaT1tKGkpLm11bHRpcGx5QnkoMykpLG8ub3B0aW9ucy5tYXhCb3VuZHMmJihpPW8uX2xpbWl0T2Zmc2V0KG0oaSksby5vcHRpb25zLm1heEJvdW5kcykpLG8ub3B0aW9ucy53b3JsZENvcHlKdW1wPyhlPW8ud3JhcExhdExuZyhvLnVucHJvamVjdChvLnByb2plY3Qoby5nZXRDZW50ZXIoKSkuYWRkKGkpKSksby5wYW5UbyhlKSk6by5wYW5CeShpKSk7ZWxzZSBpZihuIGluIHRoaXMuX3pvb21LZXlzKW8uc2V0Wm9vbShvLmdldFpvb20oKSsodC5zaGlmdEtleT8zOjEpKnRoaXMuX3pvb21LZXlzW25dKTtlbHNle2lmKDI3IT09bnx8IW8uX3BvcHVwfHwhby5fcG9wdXAub3B0aW9ucy5jbG9zZU9uRXNjYXBlS2V5KXJldHVybjtvLmNsb3NlUG9wdXAoKX1SZSh0KX19fSkpLEV0PShBLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwia2V5Ym9hcmQiLFN0KSxBLm1lcmdlT3B0aW9ucyh7c2Nyb2xsV2hlZWxab29tOiEwLHdoZWVsRGVib3VuY2VUaW1lOjQwLHdoZWVsUHhQZXJab29tTGV2ZWw6NjB9KSxuLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtTKHRoaXMuX21hcC5fY29udGFpbmVyLCJ3aGVlbCIsdGhpcy5fb25XaGVlbFNjcm9sbCx0aGlzKSx0aGlzLl9kZWx0YT0wfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe2sodGhpcy5fbWFwLl9jb250YWluZXIsIndoZWVsIix0aGlzLl9vbldoZWVsU2Nyb2xsLHRoaXMpfSxfb25XaGVlbFNjcm9sbDpmdW5jdGlvbih0KXt2YXIgZT1IZSh0KSxpPXRoaXMuX21hcC5vcHRpb25zLndoZWVsRGVib3VuY2VUaW1lLGU9KHRoaXMuX2RlbHRhKz1lLHRoaXMuX2xhc3RNb3VzZVBvcz10aGlzLl9tYXAubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCksdGhpcy5fc3RhcnRUaW1lfHwodGhpcy5fc3RhcnRUaW1lPStuZXcgRGF0ZSksTWF0aC5tYXgoaS0oK25ldyBEYXRlLXRoaXMuX3N0YXJ0VGltZSksMCkpO2NsZWFyVGltZW91dCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9c2V0VGltZW91dChhKHRoaXMuX3BlcmZvcm1ab29tLHRoaXMpLGUpLFJlKHQpfSxfcGVyZm9ybVpvb206ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10LmdldFpvb20oKSxpPXRoaXMuX21hcC5vcHRpb25zLnpvb21TbmFwfHwwLG49KHQuX3N0b3AoKSx0aGlzLl9kZWx0YS8oNCp0aGlzLl9tYXAub3B0aW9ucy53aGVlbFB4UGVyWm9vbUxldmVsKSksbj00Kk1hdGgubG9nKDIvKDErTWF0aC5leHAoLU1hdGguYWJzKG4pKSkpL01hdGguTE4yLGk9aT9NYXRoLmNlaWwobi9pKSppOm4sbj10Ll9saW1pdFpvb20oZSsoMDx0aGlzLl9kZWx0YT9pOi1pKSktZTt0aGlzLl9kZWx0YT0wLHRoaXMuX3N0YXJ0VGltZT1udWxsLG4mJigiY2VudGVyIj09PXQub3B0aW9ucy5zY3JvbGxXaGVlbFpvb20\/dC5zZXRab29tKGUrbik6dC5zZXRab29tQXJvdW5kKHRoaXMuX2xhc3RNb3VzZVBvcyxlK24pKX19KSksa3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJzY3JvbGxXaGVlbFpvb20iLEV0KSxBLm1lcmdlT3B0aW9ucyh7dGFwSG9sZDpiLnRvdWNoTmF0aXZlJiZiLnNhZmFyaSYmYi5tb2JpbGUsdGFwVG9sZXJhbmNlOjE1fSksbi5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7Uyh0aGlzLl9tYXAuX2NvbnRhaW5lciwidG91Y2hzdGFydCIsdGhpcy5fb25Eb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe2sodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uRG93bix0aGlzKX0sX29uRG93bjpmdW5jdGlvbih0KXt2YXIgZTtjbGVhclRpbWVvdXQodGhpcy5faG9sZFRpbWVvdXQpLDE9PT10LnRvdWNoZXMubGVuZ3RoJiYoZT10LnRvdWNoZXNbMF0sdGhpcy5fc3RhcnRQb3M9dGhpcy5fbmV3UG9zPW5ldyBwKGUuY2xpZW50WCxlLmNsaWVudFkpLHRoaXMuX2hvbGRUaW1lb3V0PXNldFRpbWVvdXQoYShmdW5jdGlvbigpe3RoaXMuX2NhbmNlbCgpLHRoaXMuX2lzVGFwVmFsaWQoKSYmKFMoZG9jdW1lbnQsInRvdWNoZW5kIixPKSxTKGRvY3VtZW50LCJ0b3VjaGVuZCB0b3VjaGNhbmNlbCIsdGhpcy5fY2FuY2VsQ2xpY2tQcmV2ZW50KSx0aGlzLl9zaW11bGF0ZUV2ZW50KCJjb250ZXh0bWVudSIsZSkpfSx0aGlzKSw2MDApLFMoZG9jdW1lbnQsInRvdWNoZW5kIHRvdWNoY2FuY2VsIGNvbnRleHRtZW51Iix0aGlzLl9jYW5jZWwsdGhpcyksUyhkb2N1bWVudCwidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcykpfSxfY2FuY2VsQ2xpY2tQcmV2ZW50OmZ1bmN0aW9uIHQoKXtrKGRvY3VtZW50LCJ0b3VjaGVuZCIsTyksayhkb2N1bWVudCwidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHQpfSxfY2FuY2VsOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KSxrKGRvY3VtZW50LCJ0b3VjaGVuZCB0b3VjaGNhbmNlbCBjb250ZXh0bWVudSIsdGhpcy5fY2FuY2VsLHRoaXMpLGsoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlLHRoaXMpfSxfb25Nb3ZlOmZ1bmN0aW9uKHQpe3Q9dC50b3VjaGVzWzBdO3RoaXMuX25ld1Bvcz1uZXcgcCh0LmNsaWVudFgsdC5jbGllbnRZKX0sX2lzVGFwVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpPD10aGlzLl9tYXAub3B0aW9ucy50YXBUb2xlcmFuY2V9LF9zaW11bGF0ZUV2ZW50OmZ1bmN0aW9uKHQsZSl7dD1uZXcgTW91c2VFdmVudCh0LHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsdmlldzp3aW5kb3csc2NyZWVuWDplLnNjcmVlblgsc2NyZWVuWTplLnNjcmVlblksY2xpZW50WDplLmNsaWVudFgsY2xpZW50WTplLmNsaWVudFl9KTt0Ll9zaW11bGF0ZWQ9ITAsZS50YXJnZXQuZGlzcGF0Y2hFdmVudCh0KX19KSksT3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJ0YXBIb2xkIixrdCksQS5tZXJnZU9wdGlvbnMoe3RvdWNoWm9vbTpiLnRvdWNoLGJvdW5jZUF0Wm9vbUxpbWl0czohMH0pLG4uZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe00odGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtdG91Y2gtem9vbSIpLFModGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydCx0aGlzKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt6KHRoaXMuX21hcC5fY29udGFpbmVyLCJsZWFmbGV0LXRvdWNoLXpvb20iKSxrKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LF9vblRvdWNoU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMuX21hcDshdC50b3VjaGVzfHwyIT09dC50b3VjaGVzLmxlbmd0aHx8bi5fYW5pbWF0aW5nWm9vbXx8dGhpcy5fem9vbWluZ3x8KGU9bi5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMF0pLGk9bi5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMV0pLHRoaXMuX2NlbnRlclBvaW50PW4uZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSx0aGlzLl9zdGFydExhdExuZz1uLmNvbnRhaW5lclBvaW50VG9MYXRMbmcodGhpcy5fY2VudGVyUG9pbnQpLCJjZW50ZXIiIT09bi5vcHRpb25zLnRvdWNoWm9vbSYmKHRoaXMuX3BpbmNoU3RhcnRMYXRMbmc9bi5jb250YWluZXJQb2ludFRvTGF0TG5nKGUuYWRkKGkpLl9kaXZpZGVCeSgyKSkpLHRoaXMuX3N0YXJ0RGlzdD1lLmRpc3RhbmNlVG8oaSksdGhpcy5fc3RhcnRab29tPW4uZ2V0Wm9vbSgpLHRoaXMuX21vdmVkPSExLHRoaXMuX3pvb21pbmc9ITAsbi5fc3RvcCgpLFMoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksUyhkb2N1bWVudCwidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHRoaXMuX29uVG91Y2hFbmQsdGhpcyksTyh0KSl9LF9vblRvdWNoTW92ZTpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMmJjI9PT10LnRvdWNoZXMubGVuZ3RoJiZ0aGlzLl96b29taW5nKXt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1swXSksbj1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1sxXSksbz1pLmRpc3RhbmNlVG8obikvdGhpcy5fc3RhcnREaXN0O2lmKHRoaXMuX3pvb209ZS5nZXRTY2FsZVpvb20obyx0aGlzLl9zdGFydFpvb20pLCFlLm9wdGlvbnMuYm91bmNlQXRab29tTGltaXRzJiYodGhpcy5fem9vbTxlLmdldE1pblpvb20oKSYmbzwxfHx0aGlzLl96b29tPmUuZ2V0TWF4Wm9vbSgpJiYxPG8pJiYodGhpcy5fem9vbT1lLl9saW1pdFpvb20odGhpcy5fem9vbSkpLCJjZW50ZXIiPT09ZS5vcHRpb25zLnRvdWNoWm9vbSl7aWYodGhpcy5fY2VudGVyPXRoaXMuX3N0YXJ0TGF0TG5nLDE9PW8pcmV0dXJufWVsc2V7aT1pLl9hZGQobikuX2RpdmlkZUJ5KDIpLl9zdWJ0cmFjdCh0aGlzLl9jZW50ZXJQb2ludCk7aWYoMT09byYmMD09PWkueCYmMD09PWkueSlyZXR1cm47dGhpcy5fY2VudGVyPWUudW5wcm9qZWN0KGUucHJvamVjdCh0aGlzLl9waW5jaFN0YXJ0TGF0TG5nLHRoaXMuX3pvb20pLnN1YnRyYWN0KGkpLHRoaXMuX3pvb20pfXRoaXMuX21vdmVkfHwoZS5fbW92ZVN0YXJ0KCEwLCExKSx0aGlzLl9tb3ZlZD0hMCkscih0aGlzLl9hbmltUmVxdWVzdCk7bj1hKGUuX21vdmUsZSx0aGlzLl9jZW50ZXIsdGhpcy5fem9vbSx7cGluY2g6ITAscm91bmQ6ITF9LHZvaWQgMCk7dGhpcy5fYW5pbVJlcXVlc3Q9eChuLHRoaXMsITApLE8odCl9fSxfb25Ub3VjaEVuZDpmdW5jdGlvbigpe3RoaXMuX21vdmVkJiZ0aGlzLl96b29taW5nPyh0aGlzLl96b29taW5nPSExLHIodGhpcy5fYW5pbVJlcXVlc3QpLGsoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksayhkb2N1bWVudCwidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHRoaXMuX29uVG91Y2hFbmQsdGhpcyksdGhpcy5fbWFwLm9wdGlvbnMuem9vbUFuaW1hdGlvbj90aGlzLl9tYXAuX2FuaW1hdGVab29tKHRoaXMuX2NlbnRlcix0aGlzLl9tYXAuX2xpbWl0Wm9vbSh0aGlzLl96b29tKSwhMCx0aGlzLl9tYXAub3B0aW9ucy56b29tU25hcCk6dGhpcy5fbWFwLl9yZXNldFZpZXcodGhpcy5fY2VudGVyLHRoaXMuX21hcC5fbGltaXRab29tKHRoaXMuX3pvb20pKSk6dGhpcy5fem9vbWluZz0hMX19KSksWGk9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJ0b3VjaFpvb20iLE90KSxBLkJveFpvb209X3QsQS5Eb3VibGVDbGlja1pvb209Q3QsQS5EcmFnPVp0LEEuS2V5Ym9hcmQ9U3QsQS5TY3JvbGxXaGVlbFpvb209RXQsQS5UYXBIb2xkPWt0LEEuVG91Y2hab29tPU90LHQuQm91bmRzPWYsdC5Ccm93c2VyPWIsdC5DUlM9b3QsdC5DYW52YXM9RmksdC5DaXJjbGU9dmksdC5DaXJjbGVNYXJrZXI9Z2ksdC5DbGFzcz1ldCx0LkNvbnRyb2w9Qix0LkRpdkljb249UmksdC5EaXZPdmVybGF5PUFpLHQuRG9tRXZlbnQ9bXQsdC5Eb21VdGlsPXB0LHQuRHJhZ2dhYmxlPVhlLHQuRXZlbnRlZD1pdCx0LkZlYXR1cmVHcm91cD1jaSx0Lkdlb0pTT049d2ksdC5HcmlkTGF5ZXI9TmksdC5IYW5kbGVyPW4sdC5JY29uPWRpLHQuSW1hZ2VPdmVybGF5PUVpLHQuTGF0TG5nPXYsdC5MYXRMbmdCb3VuZHM9cyx0LkxheWVyPW8sdC5MYXllckdyb3VwPXVpLHQuTGluZVV0aWw9dnQsdC5NYXA9QSx0Lk1hcmtlcj1taSx0Lk1peGluPWZ0LHQuUGF0aD1maSx0LlBvaW50PXAsdC5Qb2x5VXRpbD1ndCx0LlBvbHlnb249eGksdC5Qb2x5bGluZT15aSx0LlBvcHVwPUJpLHQuUG9zQW5pbWF0aW9uPUZlLHQuUHJvamVjdGlvbj13dCx0LlJlY3RhbmdsZT1ZaSx0LlJlbmRlcmVyPVdpLHQuU1ZHPUdpLHQuU1ZHT3ZlcmxheT1PaSx0LlRpbGVMYXllcj1EaSx0LlRvb2x0aXA9SWksdC5UcmFuc2Zvcm1hdGlvbj1hdCx0LlV0aWw9dHQsdC5WaWRlb092ZXJsYXk9a2ksdC5iaW5kPWEsdC5ib3VuZHM9Xyx0LmNhbnZhcz1VaSx0LmNpcmNsZT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG5ldyB2aSh0LGUsaSl9LHQuY2lyY2xlTWFya2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBnaSh0LGUpfSx0LmNvbnRyb2w9VWUsdC5kaXZJY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUmkodCl9LHQuZXh0ZW5kPWwsdC5mZWF0dXJlR3JvdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGNpKHQsZSl9LHQuZ2VvSlNPTj1TaSx0Lmdlb0pzb249TXQsdC5ncmlkTGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBOaSh0KX0sdC5pY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZGkodCl9LHQuaW1hZ2VPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IEVpKHQsZSxpKX0sdC5sYXRMbmc9dyx0LmxhdExuZ0JvdW5kcz1nLHQubGF5ZXJHcm91cD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgdWkodCxlKX0sdC5tYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEEodCxlKX0sdC5tYXJrZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG1pKHQsZSl9LHQucG9pbnQ9bSx0LnBvbHlnb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHhpKHQsZSl9LHQucG9seWxpbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHlpKHQsZSl9LHQucG9wdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEJpKHQsZSl9LHQucmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBZaSh0LGUpfSx0LnNldE9wdGlvbnM9Yyx0LnN0YW1wPWgsdC5zdmc9S2ksdC5zdmdPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IE9pKHQsZSxpKX0sdC50aWxlTGF5ZXI9amksdC50b29sdGlwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBJaSh0LGUpfSx0LnRyYW5zZm9ybWF0aW9uPWh0LHQudmVyc2lvbj0iMS45LjQiLHQudmlkZW9PdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IGtpKHQsZSxpKX0sd2luZG93LkwpO3Qubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuTD1YaSx0aGlzfSx3aW5kb3cuTD10fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWxlYWZsZXQuanMubWFwCjwvc2NyaXB0Pgo8c2NyaXB0Pgpjb25zdCBST1VURVMgPSBbeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIkFsZ2llcnMiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMTIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTYiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiA4LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMTciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBKdWwgMjYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCA3IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgU2VwIDEzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDE0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgT2N0IDIxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogNTUuNzUsICJ0b19sb24iOiAzNy42Mn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIk5vdWFrY2hvdHQiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiAxOC4wOCwgInRvX2xvbiI6IC0xNS45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTm91YWtjaG90dCIsICJ0b19jaXR5IjogIkNhcmFjYXMiLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDEyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgT2N0IDI2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifSwgeyJkYXRlIjogIjIwMjYgQXByIDE5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDE4LjA4LCAiZnJvbV9sb24iOiAtMTUuOTcsICJ0b19sYXQiOiAxMC40OSwgInRvX2xvbiI6IC02Ni44OH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiU29jaGkiLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDEyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifSwgeyJkYXRlIjogIjIwMjUgTWF5IDEyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjYgQXByIDE2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDQzLjYsICJ0b19sb24iOiAzOS43M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQnVzaGVociIsICJ0b19jaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAxMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAyOC45NywgImZyb21fbG9uIjogNTAuODMsICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNZXhpY28gQ2l0eSIsICJ0b19jaXR5IjogIkNhcmFjYXMiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDEzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDE5LjQzLCAiZnJvbV9sb24iOiAtOTkuMTMsICJ0b19sYXQiOiAxMC40OSwgInRvX2xvbiI6IC02Ni44OH0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQ2FyYWNhcyIsICJ0b19jaXR5IjogIk1leGljbyBDaXR5IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiAxMC40OSwgImZyb21fbG9uIjogLTY2Ljg4LCAidG9fbGF0IjogMTkuNDMsICJ0b19sb24iOiAtOTkuMTN9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJVbHlhbm92c2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiA1NC4zMiwgInRvX2xvbiI6IDQ4LjM3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIktvbXNvbW9sc2stb24tQW11ciIsICJjb3VudCI6IDIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMzEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNTUuMDEsICJmcm9tX2xvbiI6IDgyLjkzLCAidG9fbGF0IjogNTAuNTUsICJ0b19sb24iOiAxMzcuMDF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlVsYW4tVWRlIiwgInRvX2NpdHkiOiAiU29jaGkiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDE1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifSwgeyJkYXRlIjogIjIwMjUgQXByIDIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNTEuODMsICJmcm9tX2xvbiI6IDEwNy42MSwgInRvX2xhdCI6IDQzLjYsICJ0b19sb24iOiAzOS43M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiS29tc29tb2xzay1vbi1BbXVyIiwgInRvX2NpdHkiOiAiVWxhbi1VZGUiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDE1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifSwgeyJkYXRlIjogIjIwMjUgQXByIDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNSBBcHIgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogNTAuNTUsICJmcm9tX2xvbiI6IDEzNy4wMSwgInRvX2xhdCI6IDUxLjgzLCAidG9fbG9uIjogMTA3LjYxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJOb3Vha2Nob3R0IiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAxNiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IE9jdCAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In0sIHsiZGF0ZSI6ICIyMDI2IEFwciAyMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAxOC4wOCwgImZyb21fbG9uIjogLTE1Ljk3LCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJDYXJhY2FzIiwgInRvX2NpdHkiOiAiTm91YWtjaG90dCIsICJjb3VudCI6IDQsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNSBPY3QgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMTAuNDksICJmcm9tX2xvbiI6IC02Ni44OCwgInRvX2xhdCI6IDE4LjA4LCAidG9fbG9uIjogLTE1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDE2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifSwgeyJkYXRlIjogIjIwMjUgQXByIDMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiAzNS44NywgInRvX2xvbiI6IDcuMTF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBBcHIgNCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAzNS44NywgImZyb21fbG9uIjogNy4xMSwgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFzdHJha2hhbiIsICJ0b19jaXR5IjogIkh5ZGVyYWJhZCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMjEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNDYuMzUsICJmcm9tX2xvbiI6IDQ4LjAzLCAidG9fbGF0IjogMTcuMzksICJ0b19sb24iOiA3OC40OX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiQXN0cmFraGFuIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAyMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In0sIHsiZGF0ZSI6ICIyMDI2IEphbiAzMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiA0Ni4zNSwgInRvX2xvbiI6IDQ4LjAzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJNdW1iYWkiLCAiY291bnQiOiA0LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXByIDciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMjgiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAxNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiAxOS4wOSwgInRvX2xvbiI6IDcyLjg3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJVbHlhbm92c2siLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBcHIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogNTQuMzIsICJmcm9tX2xvbiI6IDQ4LjM3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVGFyYXoiLCAidG9fY2l0eSI6ICJVcnVtcWkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXByIDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDQyLjksICJmcm9tX2xvbiI6IDcxLjM3LCAidG9fbGF0IjogNDMuODMsICJ0b19sb24iOiA4Ny42Mn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTml6aG5ldmFydG92c2siLCAidG9fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXByIDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDYwLjkzLCAiZnJvbV9sb24iOiA3Ni41NywgInRvX2xhdCI6IDUwLjU1LCAidG9fbG9uIjogMTM3LjAxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJVbGFuLVVkZSIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBcHIgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTYiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogNTEuODMsICJmcm9tX2xvbiI6IDEwNy42MSwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogNCwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNSBBcHIgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTIiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDM1Ljg3LCAidG9fbG9uIjogNy4xMX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VtIEVsIEJvdWFnaGkgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJGdWphaXJhaCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1heSAzIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDM1Ljg3LCAiZnJvbV9sb24iOiA3LjExLCAidG9fbGF0IjogMjUuMTEsICJ0b19sb24iOiA1Ni4zNH0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiVWx5YW5vdnNrIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1heSAxMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI2IEphbiAyNyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiA1NC4zMiwgImZyb21fbG9uIjogNDguMzcsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUaWFuamluIiwgInRvX2NpdHkiOiAiQmxhZ292ZXNjaGNoZW5zayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMzkuMzQsICJmcm9tX2xvbiI6IDExNy4zNiwgInRvX2xhdCI6IDUwLjI3LCAidG9fbG9uIjogMTI3LjU0fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiTGFyaW5vIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogNDguMjcsICJ0b19sb24iOiA0MS40fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJCbGFnb3Zlc2hjaGVuc2siLCAidG9fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDUwLjI3LCAiZnJvbV9sb24iOiAxMjcuNTQsICJ0b19sYXQiOiA1MC41NSwgInRvX2xvbiI6IDEzNy4wMX0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTGFyaW5vIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTXVtYmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE1IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDQ4LjI3LCAiZnJvbV9sb24iOiA0MS40LCAidG9fbGF0IjogMTkuMDksICJ0b19sb24iOiA3Mi44N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VtIEVsIEJvdWFnaGkgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJJc3RhbmJ1bCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM1Ljg3LCAiZnJvbV9sb24iOiA3LjExLCAidG9fbGF0IjogNDEuMDEsICJ0b19sb24iOiAyOC45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiUG9ydCBTdWRhbiIsICJ0b19jaXR5IjogIktpZ2FsaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXkgMTgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMTkuNTcsICJmcm9tX2xvbiI6IDM3LjIyLCAidG9fbGF0IjogLTEuOTQsICJ0b19sb24iOiAzMC4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiSXN0YW5idWwiLCAidG9fY2l0eSI6ICJQb3J0IFN1ZGFuIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1heSAxOCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn0sIHsiZGF0ZSI6ICIyMDI2IEphbiA5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDQxLjAxLCAiZnJvbV9sb24iOiAyOC45NywgInRvX2xhdCI6IDE5LjU3LCAidG9fbG9uIjogMzcuMjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIk1vc2NvdyIsICJjb3VudCI6IDYsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBKdWwgMjEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMTEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNTUuNzUsICJ0b19sb24iOiAzNy42Mn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDE4LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBKdWwgMjIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBKdWwgMjgiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IEF1ZyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCA0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMTQiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMTkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyA3IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDI5IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjYgSmFuIDIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAyNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJDb25ha3J5IiwgImNvdW50IjogNSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgSnVsIDIzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgSnVsIDI5IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgQXVnIDIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDkuNTQsICJ0b19sb24iOiAtMTMuNjh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkNvbmFrcnkiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogNCwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgSnVsIDI1IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgSnVsIDI5IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgQXVnIDIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTQiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogOS41NCwgImZyb21fbG9uIjogLTEzLjY4LCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMTEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEp1bCAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IEF1ZyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgU2VwIDYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMTUiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI2IE1hciAxIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAyMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAyNiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIlVydW1xaSIsICJ0b19jaXR5IjogIk11bHRhbiIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBKdWwgMzAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNDMuODMsICJmcm9tX2xvbiI6IDg3LjYyLCAidG9fbGF0IjogMzAuMiwgInRvX2xvbiI6IDcxLjQzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJCYWt1IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyA3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDQwLjQxLCAidG9fbG9uIjogNDkuODd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkJha3UiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNDAuNDEsICJmcm9tX2xvbiI6IDQ5Ljg3LCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJDb25ha3J5IiwgInRvX2NpdHkiOiAiQnJhc2lsaWEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDEwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDkuNTQsICJmcm9tX2xvbiI6IC0xMy42OCwgInRvX2xhdCI6IC0xNS44LCAidG9fbG9uIjogLTQ3LjkzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJCcmFzaWxpYSIsICJ0b19jaXR5IjogIlNhbnRhIENydXoiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDEzIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IC0xNS44LCAiZnJvbV9sb24iOiAtNDcuOTMsICJ0b19sYXQiOiAtMTcuOCwgInRvX2xvbiI6IC02My4xOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTm92b3NpYmlyc2siLCAidG9fY2l0eSI6ICJTb2NoaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTUuMDEsICJmcm9tX2xvbiI6IDgyLjkzLCAidG9fbGF0IjogNDMuNiwgInRvX2xvbiI6IDM5LjczfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJCb2dvdGEiLCAidG9fY2l0eSI6ICJDYXJhY2FzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAxNCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiA0LjcxLCAiZnJvbV9sb24iOiAtNzQuMDcsICJ0b19sYXQiOiAxMC40OSwgInRvX2xvbiI6IC02Ni44OH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU2FudGEgQ3J1eiIsICJ0b19jaXR5IjogIkJvZ28iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDE0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IC0xNy44LCAiZnJvbV9sb24iOiAtNjMuMTgsICJ0b19sYXQiOiA0LjcxLCAidG9fbG9uIjogLTc0LjA3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUb2x1Y2EiLCAidG9fY2l0eSI6ICJIYXZhbmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDE1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDE5LjI4LCAiZnJvbV9sb24iOiAtOTkuNjUsICJ0b19sYXQiOiAyMy4xMywgInRvX2xvbiI6IC04Mi4zOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ2FyYWNhcyIsICJ0b19jaXR5IjogIlRvbHVjYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMTUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTAuNDksICJmcm9tX2xvbiI6IC02Ni44OCwgInRvX2xhdCI6IDE5LjI4LCAidG9fbG9uIjogLTk5LjY1fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJDYXJhY2FzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAxNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAyMy4xMywgImZyb21fbG9uIjogLTgyLjM4LCAidG9fbGF0IjogMTAuNDksICJ0b19sb24iOiAtNjYuODh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk5vdWFrY2hvdHQiLCAidG9fY2l0eSI6ICJBbm5hYmEgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMTkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTguMDgsICJmcm9tX2xvbiI6IC0xNS45NywgInRvX2xhdCI6IDM2LjgzLCAidG9fbG9uIjogNy44MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQW5uYWJhIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDIwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifSwgeyJkYXRlIjogIjIwMjYgRmViIDUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMzYuODMsICJmcm9tX2xvbiI6IDcuODEsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJKYWlwdXIiLCAidG9fY2l0eSI6ICJEaGFrYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMjYuOTEsICJmcm9tX2xvbiI6IDc1Ljc5LCAidG9fbGF0IjogMjMuNzIsICJ0b19sb24iOiA5MC40MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU29jaGkiLCAidG9fY2l0eSI6ICJEYWxhbWFuIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAyMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiA0My42LCAiZnJvbV9sb24iOiAzOS43MywgInRvX2xhdCI6IDM2LjcxLCAidG9fbG9uIjogMjguNzl9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIlVseWFub3ZzayIsICJ0b19jaXR5IjogIklya3V0c2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDI2IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDU0LjMyLCAiZnJvbV9sb24iOiA0OC4zNywgInRvX2xhdCI6IDUyLjI4LCAidG9fbG9uIjogMTA0LjI4fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIiwgInRvX2NpdHkiOiAiRHp5bW9naSBBaXIgQmFzZSIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCA4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDUyLjI4LCAiZnJvbV9sb24iOiAxMDQuMjgsICJ0b19sYXQiOiA1MC41NSwgInRvX2xvbiI6IDEzNy4wMX0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiRHp5b21naSBBaXIgQmFzZSIsICJ0b19jaXR5IjogIklya3V0c2siLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDI4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNTAuNTUsICJmcm9tX2xvbiI6IDEzNy4wMSwgInRvX2xhdCI6IDUyLjI4LCAidG9fbG9uIjogMTA0LjI4fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNdW1iYWkiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogMTkuMDksICJmcm9tX2xvbiI6IDcyLjg3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiSXJrdXRzayIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDQsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAxMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IEFwciAyNiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiA1Mi4yOCwgImZyb21fbG9uIjogMTA0LjI4LCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiWWVsdHNvdmthIEFpciBCYXNlLCBOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogMTAsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMzAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxNyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyOSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyA0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMjciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMzEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNTQuOTMsICJmcm9tX2xvbiI6IDgyLjk3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTm92b3NpYmlyc2siLCAidG9fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UsIE5vdm9zaWJpcnNrIiwgImNvdW50IjogMywgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAyNyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiA1NS4wMSwgImZyb21fbG9uIjogODIuOTMsICJ0b19sYXQiOiA1NC45MywgInRvX2xvbiI6IDgyLjk3fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJJcmt1dHNrIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNDQuMjIsICJmcm9tX2xvbiI6IDQzLjA4LCAidG9fbGF0IjogNTIuMjgsICJ0b19sb24iOiAxMDQuMjh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk5pYW1leSIsICJ0b19jaXR5IjogIk91YWdkb3Vnb3UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogMTMuNTEsICJmcm9tX2xvbiI6IDIuMTIsICJ0b19sYXQiOiAxMi4zNywgInRvX2xvbiI6IC0xLjUyfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UsIE5vdm9zaWJpcnNrIiwgImNvdW50IjogNSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDE3IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDIxIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDgiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMzEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNDQuMjIsICJmcm9tX2xvbiI6IDQzLjA4LCAidG9fbGF0IjogNTQuOTMsICJ0b19sb24iOiA4Mi45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VhZ2RvdWdvdSIsICJ0b19jaXR5IjogIkthbm8iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogMTIuMzcsICJmcm9tX2xvbiI6IC0xLjUyLCAidG9fbGF0IjogMTIuMCwgInRvX2xvbiI6IDguNTJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk5vdm9zaWJpcnNrIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMTIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyMiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODM0In0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyA2IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDI4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjYgSmFuIDEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBGZWIgMjYiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDcifSwgeyJkYXRlIjogIjIwMjUgQXVnIDMwIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDI0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifV0sICJmcm9tX2xhdCI6IDU1LjAxLCAiZnJvbV9sb24iOiA4Mi45MywgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk11bWJhaSIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgOSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAxOS4wOSwgImZyb21fbG9uIjogNzIuODcsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiQWluIE91c2VyYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS40NSwgInRvX2xvbiI6IDIuODd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFpbiBPdXNzZXJhIiwgInRvX2NpdHkiOiAiUml5YWRoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMzUuNDUsICJmcm9tX2xvbiI6IDIuODcsICJ0b19sYXQiOiAyNC42OSwgInRvX2xvbiI6IDQ2LjcyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJSaXlhZGgiLCAidG9fY2l0eSI6ICJUcmFiem9uIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxMyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAyNC42OSwgImZyb21fbG9uIjogNDYuNzIsICJ0b19sYXQiOiA0MS4wLCAidG9fbG9uIjogMzkuNzN9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIkdvYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgMTYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogMTUuMzgsICJ0b19sb24iOiA3My44OH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU2hhcmphaCIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAyNS4zNCwgImZyb21fbG9uIjogNTUuMzksICJ0b19sYXQiOiAyNS4yLCAidG9fbG9uIjogNTUuMjd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkJpc2hrZWsiLCAidG9fY2l0eSI6ICJNYXJ5IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAyMyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiA0Mi44NywgImZyb21fbG9uIjogNzQuNTksICJ0b19sYXQiOiAzNy42LCAidG9fbG9uIjogNjEuODN9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkR1YmFpIiwgInRvX2NpdHkiOiAiQWRkaXMgQWJhYmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDE4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDI1LjIsICJmcm9tX2xvbiI6IDU1LjI3LCAidG9fbGF0IjogOS4wMSwgInRvX2xvbiI6IDM4Ljc2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJKYWlwdXIiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDE4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDI2LjkxLCAiZnJvbV9sb24iOiA3NS43OSwgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFidWphIiwgInRvX2NpdHkiOiAiQWNjcmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDE5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDkuMDcsICJmcm9tX2xvbiI6IDcuNDksICJ0b19sYXQiOiA1LjU1LCAidG9fbG9uIjogLTAuMn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiS2luc2hhc2EiLCAidG9fY2l0eSI6ICJBYnVqYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMTkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogLTQuMzIsICJmcm9tX2xvbiI6IDE1LjMyLCAidG9fbGF0IjogOS4wNywgInRvX2xvbiI6IDcuNDl9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk5haXJvYmkiLCAidG9fY2l0eSI6ICJLaW5zaGFzYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMTkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogLTEuMjgsICJmcm9tX2xvbiI6IDM2LjgyLCAidG9fbGF0IjogLTQuMzIsICJ0b19sb24iOiAxNS4zMn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VhZ2RvdWdvdSIsICJ0b19jaXR5IjogIkFsZ2llcmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMTIuMzcsICJmcm9tX2xvbiI6IC0xLjUyLCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBY2NyYSIsICJ0b19jaXR5IjogIk91YWdkb3Vnb3UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDIwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDUuNTUsICJmcm9tX2xvbiI6IC0wLjIsICJ0b19sYXQiOiAxMi4zNywgInRvX2xvbiI6IC0xLjUyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJGdWphaXJhaCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogMjUuMTEsICJ0b19sb24iOiA1Ni4zNH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVXJ1bXFpIiwgInRvX2NpdHkiOiAiTmFiZXJlemhueWUgQ2hlbG55IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDIyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDQzLjgzLCAiZnJvbV9sb24iOiA4Ny42MiwgInRvX2xhdCI6IDU1LjcyLCAidG9fbG9uIjogNTIuMzh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlllcmV2YW4iLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDI0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDQwLjE4LCAiZnJvbV9sb24iOiA0NC41MSwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiWWVyZXZhbiIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNDAuMTgsICJ0b19sb24iOiA0NC41MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiRGFrYXIiLCAidG9fY2l0eSI6ICJOb3Vha2Nob3R0IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE9jdCAyNSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAxNC43MiwgImZyb21fbG9uIjogLTE3LjQ3LCAidG9fbGF0IjogMTguMDgsICJ0b19sb24iOiAtMTUuOTd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlJhYmF0IiwgInRvX2NpdHkiOiAiRGFrYXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDI1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDM0LjAyLCAiZnJvbV9sb24iOiAtNi44MywgInRvX2xhdCI6IDE0LjcyLCAidG9fbG9uIjogLTE3LjQ3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiUmFiYXQiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiAzNC4wMiwgInRvX2xvbiI6IC02LjgzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJGdWphaXJhaCIsICJ0b19jaXR5IjogIkVudGViYmUiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDI1LjExLCAiZnJvbV9sb24iOiA1Ni4zNCwgInRvX2xhdCI6IDAuMDUsICJ0b19sb24iOiAzMi40NH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ2FyYWNhcyIsICJ0b19jaXR5IjogIkhhdmFuYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTAuNDksICJmcm9tX2xvbiI6IC02Ni44OCwgInRvX2xhdCI6IDIzLjEzLCAidG9fbG9uIjogLTgyLjM4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNYW5hZ3VhIiwgInRvX2NpdHkiOiAiQ2FyYWNhcyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTIuMTMsICJmcm9tX2xvbiI6IC04Ni4yOCwgInRvX2xhdCI6IDEwLjQ5LCAidG9fbG9uIjogLTY2Ljg4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJNYW5hZ3VhIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE9jdCAyOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAyMy4xMywgImZyb21fbG9uIjogLTgyLjM4LCAidG9fbGF0IjogMTIuMTMsICJ0b19sb24iOiAtODYuMjh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkVudGViYmUiLCAidG9fY2l0eSI6ICJPdWFnZG91Z291IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE9jdCAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAwLjA1LCAiZnJvbV9sb24iOiAzMi40NCwgInRvX2xhdCI6IDEyLjM3LCAidG9fbG9uIjogLTEuNTJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk91YWdkb3Vnb3UiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDMxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDEyLjM3LCAiZnJvbV9sb24iOiAtMS41MiwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIlNvY2hpIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDMxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifSwgeyJkYXRlIjogIjIwMjYgQXByIDIzIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogNDMuNiwgInRvX2xvbiI6IDM5LjczfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJZZWthdGVyaW5idXJnIiwgInRvX2NpdHkiOiAiVmxhZGl2b3N0b2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTYuODQsICJmcm9tX2xvbiI6IDYwLjYsICJ0b19sYXQiOiA0My4xMiwgInRvX2xvbiI6IDEzMS44OX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIllla2F0ZXJpbmJ1cmciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDU2Ljg0LCAidG9fbG9uIjogNjAuNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU29jaGkiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJWbGFkaXZvc3RvayIsICJ0b19jaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiA1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDQzLjEyLCAiZnJvbV9sb24iOiAxMzEuODksICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiA4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDUyLjM1LCAidG9fbG9uIjogMTA0LjJ9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIklya3V0c2sgTm9ydGh3ZXN0IEFpcnBvcnQiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgOSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiAxMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1NS4wMSwgImZyb21fbG9uIjogODIuOTMsICJ0b19sYXQiOiAyNS4yLCAidG9fbG9uIjogNTUuMjd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkR1YmFpIiwgInRvX2NpdHkiOiAiTm92b3NpYmlyc2siLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDEyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDI1IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDI1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDI1LjIsICJmcm9tX2xvbiI6IDU1LjI3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDI0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjYgSmFuIDE1IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDI1LjIsICJ0b19sb24iOiA1NS4yN30sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTm92b3NpYmlyc2siLCAidG9fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiAyNiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1NS4wMSwgImZyb21fbG9uIjogODIuOTMsICJ0b19sYXQiOiA1Mi4zNSwgInRvX2xvbiI6IDEwNC4yfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiAyOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIkNvbnN0YW50aW5lIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDQzLjYsICJmcm9tX2xvbiI6IDM5LjczLCAidG9fbGF0IjogMzYuMzcsICJ0b19sb24iOiA2LjYxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBY2hpbnNrIiwgInRvX2NpdHkiOiAiTm92b3NpYmlyc2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDU2LjI3LCAiZnJvbV9sb24iOiA5MC41LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiWWVsdHNvdmthIEFpciBCYXNlLCBOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNTQuOTMsICJ0b19sb24iOiA4Mi45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ29uc3RhbnRpbmUiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9XSwgImZyb21fbGF0IjogMzYuMzcsICJmcm9tX2xvbiI6IDYuNjEsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIlllbHRzb3ZrYSBBaXIgQmFzZSwgTm92b3NpYmlyc2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDQiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiA1NC45MywgInRvX2xvbiI6IDgyLjk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUdW5pcyIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyA0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDM2LjgxLCAiZnJvbV9sb24iOiAxMC4xOCwgInRvX2xhdCI6IDI1LjIsICJ0b19sb24iOiA1NS4yN30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiRHViYWkiLCAidG9fY2l0eSI6ICJBa3RhdSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgNSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiAyNS4yLCAiZnJvbV9sb24iOiA1NS4yNywgInRvX2xhdCI6IDQzLjY1LCAidG9fbG9uIjogNTEuMTd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFrdGF1IiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyA1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDQzLjY1LCAiZnJvbV9sb24iOiA1MS4xNywgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJVZmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiA1NC43NCwgInRvX2xvbiI6IDU1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJVZmEiLCAidG9fY2l0eSI6ICJHb2EiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDE0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifV0sICJmcm9tX2xhdCI6IDU0Ljc0LCAiZnJvbV9sb24iOiA1NS45NywgInRvX2xhdCI6IDE1LjM4LCAidG9fbG9uIjogNzMuODh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkJpc2hrZWsiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogNDIuODcsICJmcm9tX2xvbiI6IDc0LjU5LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ2hpdGEiLCAidG9fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDI3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDUyLjAzLCAiZnJvbV9sb24iOiAxMTMuNSwgInRvX2xhdCI6IDUwLjU1LCAidG9fbG9uIjogMTM3LjAxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAidG9fY2l0eSI6ICJDaGl0YSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTAuNTUsICJmcm9tX2xvbiI6IDEzNy4wMSwgInRvX2xhdCI6IDUyLjAzLCAidG9fbG9uIjogMTEzLjV9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkNoaXRhIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAyOCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiA1Mi4wMywgImZyb21fbG9uIjogMTEzLjUsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiTGFnaG91YXQiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDMzLjc2LCAidG9fbG9uIjogMi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiQWluIE91c3NlcmEiLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In0sIHsiZGF0ZSI6ICIyMDI2IEZlYiAxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDM1LjQ1LCAidG9fbG9uIjogMi44N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVGVocmFuIiwgInRvX2NpdHkiOiAiVWZhIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAzMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNS42OCwgImZyb21fbG9uIjogNTEuNDIsICJ0b19sYXQiOiA1NC43NCwgInRvX2xvbiI6IDU1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJVZmEiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTQuNzQsICJmcm9tX2xvbiI6IDU1Ljk3LCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWluIE91c3NlcmEiLCAidG9fY2l0eSI6ICJJc3RhbmJ1bCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDM1LjQ1LCAiZnJvbV9sb24iOiAyLjg3LCAidG9fbGF0IjogNDEuMDEsICJ0b19sb24iOiAyOC45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiUG9ydCBTdWRhbiIsICJ0b19jaXR5IjogIklzdGFuYnVsIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiA5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDE5LjU3LCAiZnJvbV9sb24iOiAzNy4yMiwgInRvX2xhdCI6IDQxLjAxLCAidG9fbG9uIjogMjguOTd9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkthemFuIiwgInRvX2NpdHkiOiAiWmhlbmd6aG91IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiA5IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiA1NS44LCAiZnJvbV9sb24iOiA0OS4xMSwgInRvX2xhdCI6IDM0Ljc1LCAidG9fbG9uIjogMTEzLjYyfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJaaGVuZ3pob3UiLCAidG9fY2l0eSI6ICJVbGFuLVVkZSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDM0Ljc1LCAiZnJvbV9sb24iOiAxMTMuNjIsICJ0b19sYXQiOiA1MS44MywgInRvX2xvbiI6IDEwNy42MX0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiVWxhbi1VZGUiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTEiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDUxLjgzLCAiZnJvbV9sb24iOiAxMDcuNjEsICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIlR1cmttZW5iYXNoaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTEiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDU1LjAxLCAiZnJvbV9sb24iOiA4Mi45MywgInRvX2xhdCI6IDQwLjA3LCAidG9fbG9uIjogNTMuMDF9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIlR1cmttZW5iYXNoaSIsICJ0b19jaXR5IjogIkRhbW1hbSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTIiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDQwLjA3LCAiZnJvbV9sb24iOiA1My4wMSwgInRvX2xhdCI6IDI2LjQzLCAidG9fbG9uIjogNTAuMX0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiRGFtbWFtIiwgInRvX2NpdHkiOiAiUml5YWRoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAxMiIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NCJ9XSwgImZyb21fbGF0IjogMjYuNDMsICJmcm9tX2xvbiI6IDUwLjEsICJ0b19sYXQiOiAyNC42OSwgInRvX2xvbiI6IDQ2LjcyfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJSaXlhZGgiLCAidG9fY2l0eSI6ICJDYWlybyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDI0LjY5LCAiZnJvbV9sb24iOiA0Ni43MiwgInRvX2xhdCI6IDMwLjA2LCAidG9fbG9uIjogMzEuMjV9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkNhaXJvIiwgInRvX2NpdHkiOiAiQmVjaGFyIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDEzIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiAzMC4wNiwgImZyb21fbG9uIjogMzEuMjUsICJ0b19sYXQiOiAzMS42NywgInRvX2xvbiI6IC0yLjI1fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJCZWNoYXIiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTQiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDMxLjY3LCAiZnJvbV9sb24iOiAtMi4yNSwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiRHViYWkiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDE2IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiAyNS4yLCAiZnJvbV9sb24iOiA1NS4yNywgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIlVseWFub3ZzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTciLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDU0LjMyLCAidG9fbG9uIjogNDguMzd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAyOCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiA1OS45NSwgInRvX2xvbiI6IDMwLjMyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUaWFuamluIiwgInRvX2NpdHkiOiAiS2hhYmFyb3ZzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMzkuMzQsICJmcm9tX2xvbiI6IDExNy4zNiwgInRvX2xhdCI6IDQ4LjQ4LCAidG9fbG9uIjogMTM1LjA4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJLaGFiYXJvdnNrIiwgInRvX2NpdHkiOiAiS29tc29tb2xzay1vbi1BbXVyIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODM0In1dLCAiZnJvbV9sYXQiOiA0OC40OCwgImZyb21fbG9uIjogMTM1LjA4LCAidG9fbGF0IjogNTAuNTUsICJ0b19sb24iOiAxMzcuMDF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgInRvX2NpdHkiOiAiU29jaGkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDMwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDU5Ljk1LCAiZnJvbV9sb24iOiAzMC4zMiwgInRvX2xhdCI6IDQzLjYsICJ0b19sb24iOiAzOS43M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWluIE91c3NlcmEiLCAidG9fY2l0eSI6ICJBbm5hYmEgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODM0In1dLCAiZnJvbV9sYXQiOiAzNS40NSwgImZyb21fbG9uIjogMi44NywgInRvX2xhdCI6IDM2LjgzLCAidG9fbG9uIjogNy44MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTm91YWtjaG90dCIsICJ0b19jaXR5IjogIlNhbWFuYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAxOC4wOCwgImZyb21fbG9uIjogLTE1Ljk3LCAidG9fbGF0IjogMTkuMjEsICJ0b19sb24iOiAtNjkuMzN9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlNhbWFuYSIsICJ0b19jaXR5IjogIlNhbiBBbnRvbmlvIGRlIGxvcyBCYVx1MDBmMW9zIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDE5LjIxLCAiZnJvbV9sb24iOiAtNjkuMzMsICJ0b19sYXQiOiAyMi44NywgInRvX2xvbiI6IC04Mi41fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJTYW1hbmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMjMuMTMsICJmcm9tX2xvbiI6IC04Mi4zOCwgInRvX2xhdCI6IDE5LjIxLCAidG9fbG9uIjogLTY5LjMzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJTYW1hbmEiLCAidG9fY2l0eSI6ICJDYXNhYmxhbmNhIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDE5LjIxLCAiZnJvbV9sb24iOiAtNjkuMzMsICJ0b19sYXQiOiAzMy41NywgInRvX2xvbiI6IC03LjU5fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJVbHlhbm92c2siLCAidG9fY2l0eSI6ICJVbHlhbm92c2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDUiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzQifV0sICJmcm9tX2xhdCI6IDU0LjMyLCAiZnJvbV9sb24iOiA0OC4zNywgInRvX2xhdCI6IDU0LjMyLCAidG9fbG9uIjogNDguMzd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkNhc2FibGFuY2EiLCAidG9fY2l0eSI6ICJNdXJtYW5zayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgNiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAzMy41NywgImZyb21fbG9uIjogLTcuNTksICJ0b19sYXQiOiA2OC45NywgInRvX2xvbiI6IDMzLjA3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNdXJtYW5zayIsICJ0b19jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDY4Ljk3LCAiZnJvbV9sb24iOiAzMy4wNywgInRvX2xhdCI6IDU5Ljk1LCAidG9fbG9uIjogMzAuMzJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDU5Ljk1LCAiZnJvbV9sb24iOiAzMC4zMiwgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkZ1amFpcmFoIiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA4IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDgxIn1dLCAiZnJvbV9sYXQiOiAyNS4xMSwgImZyb21fbG9uIjogNTYuMzQsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJCZWNoYXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwODEifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogMzEuNjcsICJ0b19sb24iOiAtMi4yNX0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQmVjaGFyIiwgInRvX2NpdHkiOiAiQ2Fpcm8iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwODEifV0sICJmcm9tX2xhdCI6IDMxLjY3LCAiZnJvbV9sb24iOiAtMi4yNSwgInRvX2xhdCI6IDMwLjA2LCAidG9fbG9uIjogMzEuMjV9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkNhaXJvIiwgInRvX2NpdHkiOiAiUml5YWRoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxMCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA4MSJ9XSwgImZyb21fbGF0IjogMzAuMDYsICJmcm9tX2xvbiI6IDMxLjI1LCAidG9fbGF0IjogMjQuNjksICJ0b19sb24iOiA0Ni43Mn0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiUml5YWRoIiwgInRvX2NpdHkiOiAiRHViYWkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDgxIn1dLCAiZnJvbV9sYXQiOiAyNC42OSwgImZyb21fbG9uIjogNDYuNzIsICJ0b19sYXQiOiAyNS4yLCAidG9fbG9uIjogNTUuMjd9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkJhcmFudmljeSIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxNyIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NyJ9XSwgImZyb21fbGF0IjogNTMuMTMsICJmcm9tX2xvbiI6IDI2LjAyLCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiT3JhbiIsICJjb3VudCI6IDIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxOCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NyJ9LCB7ImRhdGUiOiAiMjAyNiBNYXIgMTMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDcifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDM1LjY5LCAidG9fbG9uIjogLTAuNjN9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIk91bSBlbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDI3IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS44NywgInRvX2xvbiI6IDcuMTF9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk91bSBlbCBCb3VhZ2hpIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAyNyIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NyJ9XSwgImZyb21fbGF0IjogMzUuODcsICJmcm9tX2xvbiI6IDcuMTEsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIklya3V0c2sgTm9ydGh3ZXN0IEFpcnBvcnQiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDIiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDcifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDUyLjM1LCAidG9fbG9uIjogMTA0LjJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIklya3V0c2sgTm9ydGh3ZXN0IEFpcnBvcnQiLCAidG9fY2l0eSI6ICJBYmFrYW4iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1My43MiwgInRvX2xvbiI6IDkxLjQxfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBYmFrYW4iLCAidG9fY2l0eSI6ICJZYW5vdm8gQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA1My43MiwgImZyb21fbG9uIjogOTEuNDEsICJ0b19sYXQiOiA1Mi4xMywgInRvX2xvbiI6IDI0LjU2fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJZYW5vdm8gQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDEyIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA1Mi4xMywgImZyb21fbG9uIjogMjQuNTYsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJVbHlhbm92c2siLCAidG9fY2l0eSI6ICJEZWxoaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBNYXIgMTMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzQifV0sICJmcm9tX2xhdCI6IDU0LjMyLCAiZnJvbV9sb24iOiA0OC4zNywgInRvX2xhdCI6IDI4LjYxLCAidG9fbG9uIjogNzcuMjF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIlllbHRzb3ZrYSBBaXIgQmFzZSIsICJjb3VudCI6IDIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBNYXIgMjUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiA1NC45MywgInRvX2xvbiI6IDgyLjk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiA0LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDI2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifSwgeyJkYXRlIjogIjIwMjYgTWFyIDMxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifSwgeyJkYXRlIjogIjIwMjYgQXByIDMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA1NC45MywgImZyb21fbG9uIjogODIuOTcsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJBaW4gT3Vzc2VyYSBBaXIgYmFzZSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IE1hciAyNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS40NSwgInRvX2xvbiI6IDIuODd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFpbiBPdXNzZXJhIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiQW5uYWJhIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDI3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM1LjQ1LCAiZnJvbV9sb24iOiAyLjg3LCAidG9fbGF0IjogMzYuODMsICJ0b19sb24iOiA3LjgxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJWb2xnb2dyYWQiLCAidG9fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDMwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDQ4LjcxLCAiZnJvbV9sb24iOiA0NC41MSwgInRvX2xhdCI6IDU0LjkzLCAidG9fbG9uIjogODIuOTd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIkxhZ2hvdWF0IEFpciBCYXNlIiwgImNvdW50IjogMywgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn0sIHsiZGF0ZSI6ICIyMDI2IEFwciAxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDMzLjc2LCAidG9fbG9uIjogMi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTGFnaG91YXQgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJBbm5hYmEgQWlyIEJhc2UiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgNCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn0sIHsiZGF0ZSI6ICIyMDI2IEFwciA5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDMzLjc2LCAiZnJvbV9sb24iOiAyLjkzLCAidG9fbGF0IjogMzYuODMsICJ0b19sb24iOiA3LjgxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJEdWJhaSIsICJ0b19jaXR5IjogIkRhc29ndXoiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDYiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMjUuMiwgImZyb21fbG9uIjogNTUuMjcsICJ0b19sYXQiOiA0MS44NCwgInRvX2xvbiI6IDU5Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJEYXNvZ3V6IiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciA2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifSwgeyJkYXRlIjogIjIwMjYgQXByIDE0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDQxLjg0LCAiZnJvbV9sb24iOiA1OS45NywgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFubmFiYSBBaXIgQmFzZSIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDEyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM2LjgzLCAiZnJvbV9sb24iOiA3LjgxLCAidG9fbGF0IjogMjUuMiwgInRvX2xvbiI6IDU1LjI3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJSYWJhdCIsICJ0b19jaXR5IjogIk5vdWFrY2hvdHQiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDE4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM0LjAyLCAiZnJvbV9sb24iOiAtNi44MywgInRvX2xhdCI6IDE4LjA4LCAidG9fbG9uIjogLTE1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJDYXJhY2FzIiwgInRvX2NpdHkiOiAiU2FuIEFudG9uaW8gZGUgbG9zIEJhXHUwMGYxb3MgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDE5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDEwLjQ5LCAiZnJvbV9sb24iOiAtNjYuODgsICJ0b19sYXQiOiAyMi44NywgInRvX2xvbiI6IC04Mi41fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJUb2x1Y2EiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDIwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDIzLjEzLCAiZnJvbV9sb24iOiAtODIuMzgsICJ0b19sYXQiOiAxOS4yOCwgInRvX2xvbiI6IC05OS42NX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVG9sdWNhIiwgInRvX2NpdHkiOiAiQ2FyYWNhcyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMjAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMTkuMjgsICJmcm9tX2xvbiI6IC05OS42NSwgInRvX2xhdCI6IDEwLjQ5LCAidG9fbG9uIjogLTY2Ljg4fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJIYWlrb3UiLCAidG9fY2l0eSI6ICJJcmt1dHNrIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciAxMCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9XSwgImZyb21fbGF0IjogMjAuMDQsICJmcm9tX2xvbiI6IDExMC4zNCwgInRvX2xhdCI6IDUyLjI4LCAidG9fbG9uIjogMTA0LjI4fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIiwgInRvX2NpdHkiOiAiSXJrdXRzayBOb3J0aHdlc3QgQWlycG9ydCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDUyLjI4LCAiZnJvbV9sb24iOiAxMDQuMjgsICJ0b19sYXQiOiA1Mi4zNSwgInRvX2xvbiI6IDEwNC4yfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgInRvX2NpdHkiOiAiS3Jhc25veWFyc2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1Ni4wMSwgInRvX2xvbiI6IDkyLjg2fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJLcmFzbm95YXJzayIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMTEiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDU2LjAxLCAiZnJvbV9sb24iOiA5Mi44NiwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciAxMiIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogMzUuODcsICJmcm9tX2xvbiI6IDcuMTEsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk5pYW1leSIsICJ0b19jaXR5IjogIkFsZ2llcnMiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMjMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifSwgeyJkYXRlIjogIjIwMjYgQXByIDIxIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In0sIHsiZGF0ZSI6ICIyMDI2IEFwciAyNCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjYiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifSwgeyJkYXRlIjogIjIwMjYgQXByIDI3IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In1dLCAiZnJvbV9sYXQiOiAxMy41MSwgImZyb21fbG9uIjogMi4xMiwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiAzNS44NywgInRvX2xvbiI6IDcuMTF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkRhbGFtYW4iLCAidG9fY2l0eSI6ICJPdW0gRWwgQm91YWdoaSBBaXIgQmFzZSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogMzYuNzEsICJmcm9tX2xvbiI6IDI4Ljc5LCAidG9fbGF0IjogMzUuODcsICJ0b19sb24iOiA3LjExfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBaW4gT3Vzc2VyYSIsICJ0b19jaXR5IjogIlNoYXJqYWgiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNS40NSwgImZyb21fbG9uIjogMi44NywgInRvX2xhdCI6IDI1LjM0LCAidG9fbG9uIjogNTUuMzl9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIkNvbnN0YW50aW5lIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAxMyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNi4zNywgInRvX2xvbiI6IDYuNjF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkNvbnN0YW50aW5lIiwgInRvX2NpdHkiOiAiWWVrYXRlcmluYnVyZyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDIyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDM2LjM3LCAiZnJvbV9sb24iOiA2LjYxLCAidG9fbGF0IjogNTYuODQsICJ0b19sb24iOiA2MC42fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiQWluIE91c3NlcmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAyNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDM1LjQ1LCAidG9fbG9uIjogMi44N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWluIE91c3NlcmEiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNS40NSwgImZyb21fbG9uIjogMi44NywgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIlRlaHJhbiIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAzMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS42OCwgInRvX2xvbiI6IDUxLjQyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJMYWdob3VhdCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDE2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDMzLjc2LCAidG9fbG9uIjogMi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQW5uYWJhIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBNYXIgMjgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAzNi44MywgImZyb21fbG9uIjogNy44MSwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFubmFiYSBBaXIgQmFzZSIsICJ0b19jaXR5IjogIkZ1amFpcmFoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgNSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAzNi44MywgImZyb21fbG9uIjogNy44MSwgInRvX2xhdCI6IDI1LjExLCAidG9fbG9uIjogNTYuMzR9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJOaWFtZXkiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciAyMSIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifSwgeyJkYXRlIjogIjIwMjYgQXByIDI0IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In0sIHsiZGF0ZSI6ICIyMDI2IEFwciAyNiIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjciLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogMTMuNTEsICJ0b19sb24iOiAyLjEyfV07CmNvbnN0IE5PREVTICA9IFt7ImNpdHkiOiAiU29jaGkiLCAiY291bnQiOiAyMCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQzLjYsICJsb24iOiAzOS43M30sIHsiY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogOTEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM2Ljc0LCAibG9uIjogMy4wNn0sIHsiY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiA1OSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU1Ljc1LCAibG9uIjogMzcuNjJ9LCB7ImNpdHkiOiAiTm91YWtjaG90dCIsICJjb3VudCI6IDE2LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTguMDgsICJsb24iOiAtMTUuOTd9LCB7ImNpdHkiOiAiQ2FyYWNhcyIsICJjb3VudCI6IDE2LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTAuNDksICJsb24iOiAtNjYuODh9LCB7ImNpdHkiOiAiQnVzaGVociIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAyOC45NywgImxvbiI6IDUwLjgzfSwgeyJjaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogNDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1NS4wMSwgImxvbiI6IDgyLjkzfSwgeyJjaXR5IjogIk1leGljbyBDaXR5IiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE5LjQzLCAibG9uIjogLTk5LjEzfSwgeyJjaXR5IjogIlVseWFub3ZzayIsICJjb3VudCI6IDksICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1NC4zMiwgImxvbiI6IDQ4LjM3fSwgeyJjaXR5IjogIktvbXNvbW9sc2stb24tQW11ciIsICJjb3VudCI6IDEyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTAuNTUsICJsb24iOiAxMzcuMDF9LCB7ImNpdHkiOiAiVWxhbi1VZGUiLCAiY291bnQiOiAxMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUxLjgzLCAibG9uIjogMTA3LjYxfSwgeyJjaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMTYsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1Ljg3LCAibG9uIjogNy4xMX0sIHsiY2l0eSI6ICJBc3RyYWtoYW4iLCAiY291bnQiOiAzLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDYuMzUsICJsb24iOiA0OC4wM30sIHsiY2l0eSI6ICJIeWRlcmFiYWQiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTcuMzksICJsb24iOiA3OC40OX0sIHsiY2l0eSI6ICJNdW1iYWkiLCAiY291bnQiOiA3LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTkuMDksICJsb24iOiA3Mi44N30sIHsiY2l0eSI6ICJUYXJheiIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0Mi45LCAibG9uIjogNzEuMzd9LCB7ImNpdHkiOiAiVXJ1bXFpIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQzLjgzLCAibG9uIjogODcuNjJ9LCB7ImNpdHkiOiAiTml6aG5ldmFydG92c2siLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNjAuOTMsICJsb24iOiA3Ni41N30sIHsiY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiA5MywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQ0LjIyLCAibG9uIjogNDMuMDh9LCB7ImNpdHkiOiAiRnVqYWlyYWgiLCAiY291bnQiOiA1LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjUuMTEsICJsb24iOiA1Ni4zNH0sIHsiY2l0eSI6ICJUaWFuamluIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM5LjM0LCAibG9uIjogMTE3LjM2fSwgeyJjaXR5IjogIkJsYWdvdmVzY2hjaGVuc2siLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTAuMjcsICJsb24iOiAxMjcuNTR9LCB7ImNpdHkiOiAiTGFyaW5vIEFpciBCYXNlIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQ4LjI3LCAibG9uIjogNDEuNH0sIHsiY2l0eSI6ICJCbGFnb3Zlc2hjaGVuc2siLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTAuMjcsICJsb24iOiAxMjcuNTR9LCB7ImNpdHkiOiAiSXN0YW5idWwiLCAiY291bnQiOiA1LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDEuMDEsICJsb24iOiAyOC45N30sIHsiY2l0eSI6ICJQb3J0IFN1ZGFuIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE5LjU3LCAibG9uIjogMzcuMjJ9LCB7ImNpdHkiOiAiS2lnYWxpIiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IC0xLjk0LCAibG9uIjogMzAuMDZ9LCB7ImNpdHkiOiAiQ29uYWtyeSIsICJjb3VudCI6IDEwLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogOS41NCwgImxvbiI6IC0xMy42OH0sIHsiY2l0eSI6ICJNdWx0YW4iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMzAuMiwgImxvbiI6IDcxLjQzfSwgeyJjaXR5IjogIkJha3UiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDAuNDEsICJsb24iOiA0OS44N30sIHsiY2l0eSI6ICJCcmFzaWxpYSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAtMTUuOCwgImxvbiI6IC00Ny45M30sIHsiY2l0eSI6ICJTYW50YSBDcnV6IiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IC0xNy44LCAibG9uIjogLTYzLjE4fSwgeyJjaXR5IjogIkJvZ290YSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0LjcxLCAibG9uIjogLTc0LjA3fSwgeyJjaXR5IjogIkJvZ28iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNC43MSwgImxvbiI6IC03NC4wN30sIHsiY2l0eSI6ICJUb2x1Y2EiLCAiY291bnQiOiA0LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTkuMjgsICJsb24iOiAtOTkuNjV9LCB7ImNpdHkiOiAiSGF2YW5hIiwgImNvdW50IjogNiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDIzLjEzLCAibG9uIjogLTgyLjM4fSwgeyJjaXR5IjogIkFubmFiYSBBaXIgQmFzZSIsICJjb3VudCI6IDExLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNi44MywgImxvbiI6IDcuODF9LCB7ImNpdHkiOiAiSmFpcHVyIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDI2LjkxLCAibG9uIjogNzUuNzl9LCB7ImNpdHkiOiAiRGhha2EiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjMuNzIsICJsb24iOiA5MC40MX0sIHsiY2l0eSI6ICJEYWxhbWFuIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM2LjcxLCAibG9uIjogMjguNzl9LCB7ImNpdHkiOiAiSXJrdXRzayIsICJjb3VudCI6IDE1LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTIuMjgsICJsb24iOiAxMDQuMjh9LCB7ImNpdHkiOiAiRHp5bW9naSBBaXIgQmFzZSIsICJjb3VudCI6IDMsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1MC41NSwgImxvbiI6IDEzNy4wMX0sIHsiY2l0eSI6ICJEenlvbWdpIEFpciBCYXNlIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUwLjU1LCAibG9uIjogMTM3LjAxfSwgeyJjaXR5IjogIlllbHRzb3ZrYSBBaXIgQmFzZSwgTm92b3NpYmlyc2siLCAiY291bnQiOiAyMCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU0LjkzLCAibG9uIjogODIuOTd9LCB7ImNpdHkiOiAiTmlhbWV5IiwgImNvdW50IjogMTEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAxMy41MSwgImxvbiI6IDIuMTJ9LCB7ImNpdHkiOiAiT3VhZ2RvdWdvdSIsICJjb3VudCI6IDYsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAxMi4zNywgImxvbiI6IC0xLjUyfSwgeyJjaXR5IjogIkthbm8iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTIuMCwgImxvbiI6IDguNTJ9LCB7ImNpdHkiOiAiQWluIE91c2VyYSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJBaW4gT3Vzc2VyYSIsICJjb3VudCI6IDksICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJSaXlhZGgiLCAiY291bnQiOiA2LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjQuNjksICJsb24iOiA0Ni43Mn0sIHsiY2l0eSI6ICJUcmFiem9uIiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQxLjAsICJsb24iOiAzOS43M30sIHsiY2l0eSI6ICJHb2EiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTUuMzgsICJsb24iOiA3My44OH0sIHsiY2l0eSI6ICJTaGFyamFoIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDI1LjM0LCAibG9uIjogNTUuMzl9LCB7ImNpdHkiOiAiRHViYWkiLCAiY291bnQiOiAxNSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDI1LjIsICJsb24iOiA1NS4yN30sIHsiY2l0eSI6ICJCaXNoa2VrIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQyLjg3LCAibG9uIjogNzQuNTl9LCB7ImNpdHkiOiAiTWFyeSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAzNy42LCAibG9uIjogNjEuODN9LCB7ImNpdHkiOiAiQWRkaXMgQWJhYmEiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogOS4wMSwgImxvbiI6IDM4Ljc2fSwgeyJjaXR5IjogIkFidWphIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDkuMDcsICJsb24iOiA3LjQ5fSwgeyJjaXR5IjogIkFjY3JhIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUuNTUsICJsb24iOiAtMC4yfSwgeyJjaXR5IjogIktpbnNoYXNhIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IC00LjMyLCAibG9uIjogMTUuMzJ9LCB7ImNpdHkiOiAiTmFpcm9iaSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAtMS4yOCwgImxvbiI6IDM2LjgyfSwgeyJjaXR5IjogIkFsZ2llcmEiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNi43NCwgImxvbiI6IDMuMDZ9LCB7ImNpdHkiOiAiTmFiZXJlemhueWUgQ2hlbG55IiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU1LjcyLCAibG9uIjogNTIuMzh9LCB7ImNpdHkiOiAiWWVyZXZhbiIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0MC4xOCwgImxvbiI6IDQ0LjUxfSwgeyJjaXR5IjogIkRha2FyIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE0LjcyLCAibG9uIjogLTE3LjQ3fSwgeyJjaXR5IjogIlJhYmF0IiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM0LjAyLCAibG9uIjogLTYuODN9LCB7ImNpdHkiOiAiRW50ZWJiZSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAwLjA1LCAibG9uIjogMzIuNDR9LCB7ImNpdHkiOiAiTWFuYWd1YSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAxMi4xMywgImxvbiI6IC04Ni4yOH0sIHsiY2l0eSI6ICJZZWthdGVyaW5idXJnIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU2Ljg0LCAibG9uIjogNjAuNn0sIHsiY2l0eSI6ICJWbGFkaXZvc3RvayIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0My4xMiwgImxvbiI6IDEzMS44OX0sIHsiY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgImNvdW50IjogOCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUyLjM1LCAibG9uIjogMTA0LjJ9LCB7ImNpdHkiOiAiQ29uc3RhbnRpbmUiLCAiY291bnQiOiA1LCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNi4zNywgImxvbiI6IDYuNjF9LCB7ImNpdHkiOiAiQWNoaW5zayIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1Ni4yNywgImxvbiI6IDkwLjV9LCB7ImNpdHkiOiAiVHVuaXMiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMzYuODEsICJsb24iOiAxMC4xOH0sIHsiY2l0eSI6ICJBa3RhdSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0My42NSwgImxvbiI6IDUxLjE3fSwgeyJjaXR5IjogIlVmYSIsICJjb3VudCI6IDQsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1NC43NCwgImxvbiI6IDU1Ljk3fSwgeyJjaXR5IjogIkNoaXRhIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUyLjAzLCAibG9uIjogMTEzLjV9LCB7ImNpdHkiOiAiTGFnaG91YXQiLCAiY291bnQiOiAzLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzMy43NiwgImxvbiI6IDIuOTN9LCB7ImNpdHkiOiAiVGVocmFuIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM1LjY4LCAibG9uIjogNTEuNDJ9LCB7ImNpdHkiOiAiS2F6YW4iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTUuOCwgImxvbiI6IDQ5LjExfSwgeyJjaXR5IjogIlpoZW5nemhvdSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAzNC43NSwgImxvbiI6IDExMy42Mn0sIHsiY2l0eSI6ICJUdXJrbWVuYmFzaGkiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDAuMDcsICJsb24iOiA1My4wMX0sIHsiY2l0eSI6ICJEYW1tYW0iLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjYuNDMsICJsb24iOiA1MC4xfSwgeyJjaXR5IjogIkNhaXJvIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDMwLjA2LCAibG9uIjogMzEuMjV9LCB7ImNpdHkiOiAiQmVjaGFyIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiB0cnVlLCAibGF0IjogMzEuNjcsICJsb24iOiAtMi4yNX0sIHsiY2l0eSI6ICJTdC4gUGV0ZXJzYnVyZyIsICJjb3VudCI6IDQsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1OS45NSwgImxvbiI6IDMwLjMyfSwgeyJjaXR5IjogIktoYWJhcm92c2siLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDguNDgsICJsb24iOiAxMzUuMDh9LCB7ImNpdHkiOiAiU2FtYW5hIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE5LjIxLCAibG9uIjogLTY5LjMzfSwgeyJjaXR5IjogIlNhbiBBbnRvbmlvIGRlIGxvcyBCYVx1MDBmMW9zIEFpciBCYXNlIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDIyLjg3LCAibG9uIjogLTgyLjV9LCB7ImNpdHkiOiAiQ2FzYWJsYW5jYSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAzMy41NywgImxvbiI6IC03LjU5fSwgeyJjaXR5IjogIk11cm1hbnNrIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDY4Ljk3LCAibG9uIjogMzMuMDd9LCB7ImNpdHkiOiAiQmFyYW52aWN5IiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUzLjEzLCAibG9uIjogMjYuMDJ9LCB7ImNpdHkiOiAiT3JhbiIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjY5LCAibG9uIjogLTAuNjN9LCB7ImNpdHkiOiAiT3VtIGVsIEJvdWFnaGkgQWlyIEJhc2UiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNS44NywgImxvbiI6IDcuMTF9LCB7ImNpdHkiOiAiQWJha2FuIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUzLjcyLCAibG9uIjogOTEuNDF9LCB7ImNpdHkiOiAiWWFub3ZvIEFpciBCYXNlIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUyLjEzLCAibG9uIjogMjQuNTZ9LCB7ImNpdHkiOiAiRGVsaGkiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjguNjEsICJsb24iOiA3Ny4yMX0sIHsiY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UiLCAiY291bnQiOiA3LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTQuOTMsICJsb24iOiA4Mi45N30sIHsiY2l0eSI6ICJBaW4gT3Vzc2VyYSBBaXIgYmFzZSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJBaW4gT3Vzc2VyYSBBaXIgQmFzZSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJWb2xnb2dyYWQiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDguNzEsICJsb24iOiA0NC41MX0sIHsiY2l0eSI6ICJMYWdob3VhdCBBaXIgQmFzZSIsICJjb3VudCI6IDUsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDMzLjc2LCAibG9uIjogMi45M30sIHsiY2l0eSI6ICJEYXNvZ3V6IiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQxLjg0LCAibG9uIjogNTkuOTd9LCB7ImNpdHkiOiAiSGFpa291IiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDIwLjA0LCAibG9uIjogMTEwLjM0fSwgeyJjaXR5IjogIktyYXNub3lhcnNrIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU2LjAxLCAibG9uIjogOTIuODZ9XTsKCmNvbnN0IENPTE9SUyA9IHsKICAnR2VsaXggQWlybGluZXMnOiAgICAgICcjNGZiM2MwJywKICAnQXZpYWNvbiBaaXRvdHJhbnMnOiAgICcjZjBiNDI5JywKICAnVm9sZ2EtRG5lcHIgQWlybGluZXMnOicjZTA1ZjVmJywKICAnbXVsdGlwbGUnOiAgICAgICAgICAgICcjYjA3OGQ0JywKfTsKZnVuY3Rpb24gZ2V0Q29sb3IoYWlybGluZXMpIHsKICByZXR1cm4gYWlybGluZXMubGVuZ3RoID09PSAxID8gKENPTE9SU1thaXJsaW5lc1swXV0gfHwgJyNhYWEnKSA6IENPTE9SU1snbXVsdGlwbGUnXTsKfQoKY29uc3QgbWFwID0gTC5tYXAoJ21hcCcsIHsgY2VudGVyOlszMCwyMF0sIHpvb206Mywgem9vbUNvbnRyb2w6dHJ1ZSB9KTsKTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9kYXJrX2FsbC97en0ve3h9L3t5fXtyfS5wbmcnLCB7CiAgYXR0cmlidXRpb246JyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiPk9wZW5TdHJlZXRNYXA8L2E+ICZjb3B5OyA8YSBocmVmPSJodHRwczovL2NhcnRvLmNvbS9hdHRyaWJ1dGlvbnMiPkNBUlRPPC9hPicsCiAgc3ViZG9tYWluczonYWJjZCcsIG1heFpvb206MTkKfSkuYWRkVG8obWFwKTsKCmZ1bmN0aW9uIGFyY1BvaW50cyhsYXQxLGxvbjEsbGF0Mixsb24yLG49NjAsY3Vydj0wLjI1KSB7CiAgbGV0IGxvMT1sb24xLGxvMj1sb24yOwogIGlmIChNYXRoLmFicyhsbzItbG8xKT4xODApIHsgaWYobG8yPmxvMSkgbG8xKz0zNjA7IGVsc2UgbG8yKz0zNjA7IH0KICBjb25zdCBtTGF0PShsYXQxK2xhdDIpLzIsIG1Mb249KGxvMStsbzIpLzI7CiAgY29uc3QgZGxhdD1sYXQyLWxhdDEsZGxvbj1sbzItbG8xLGxlbj1NYXRoLnNxcnQoZGxhdCpkbGF0K2Rsb24qZGxvbil8fDE7CiAgY29uc3QgY0xhdD1tTGF0KygtZGxvbi9sZW4qY3VydipsZW4pLCBjTG9uPW1Mb24rKGRsYXQvbGVuKmN1cnYqbGVuKTsKICBjb25zdCBwdHM9W107CiAgZm9yKGxldCBpPTA7aTw9bjtpKyspewogICAgY29uc3QgdD1pL247CiAgICBsZXQgbGF0PSgxLXQpKigxLXQpKmxhdDErMiooMS10KSp0KmNMYXQrdCp0KmxhdDI7CiAgICBsZXQgbG9uPSgxLXQpKigxLXQpKmxvMSsyKigxLXQpKnQqY0xvbit0KnQqbG8yOwogICAgd2hpbGUobG9uPjE4MClsb24tPTM2MDsgd2hpbGUobG9uPC0xODApbG9uKz0zNjA7CiAgICBwdHMucHVzaChbbGF0LGxvbl0pOwogIH0KICByZXR1cm4gcHRzOwp9CgpsZXQgbWluRmxpZ2h0cz0xLCBmb2N1c0NpdHk9bnVsbCwgcm91dGVMYXllcnM9W10sIG5vZGVMYXllcnM9W107CmNvbnN0IHRvb2x0aXA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2x0aXAnKTsKCmZ1bmN0aW9uIGJ1aWxkVGlwKHIpIHsKICBjb25zdCBjb2xvcj1nZXRDb2xvcihyLmFpcmxpbmVzKTsKICBjb25zdCBjb25mPXIuYW1iaWd1b3VzCiAgICA\/JzxzcGFuIHN0eWxlPSJjb2xvcjojODg4Ij4mIzk2NTE7IFVuY2VydGFpbiAvIGluZmVycmVkPC9zcGFuPicKICAgIDonPHNwYW4gc3R5bGU9ImNvbG9yOiM2ZGFhNDUiPiYjMTAwMDM7IENvbmZpcm1lZDwvc3Bhbj4nOwogIGNvbnN0IGFsZ1RhZz1yLnRvdWNoZXNfYWxnZXJpYT8nICZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjojZjdjOTQ4Ij4mIzk3MzM7IEFsZ2VyaWE8L3NwYW4+JzonJzsKICBjb25zdCB0eXBlcz1bLi4ubmV3IFNldChyLmZsaWdodHMubWFwKGY9PmYuYWlyY3JhZnRfdHlwZSkpXS5qb2luKCcsICcpOwogIGxldCBoPWA8ZGl2IGNsYXNzPSJ0dC1yb3V0ZSI+JHtyLmZyb21fY2l0eX0gJnJhcnI7ICR7ci50b19jaXR5fTwvZGl2PmA7CiAgaCs9YDxkaXYgY2xhc3M9InR0LWFpcmxpbmUiIHN0eWxlPSJjb2xvcjoke2NvbG9yfSI+JHtyLmFpcmxpbmVzLmpvaW4oJywgJyl9PC9kaXY+YDsKICBoKz1gPGRpdiBjbGFzcz0idHQtbWV0YSI+JHt0eXBlc30gJm1pZGRvdDsgJHtyLmNvdW50fSBmbGlnaHQke3IuY291bnQ+MT8ncyc6Jyd9PC9kaXY+YDsKICBoKz1gPGRpdiBjbGFzcz0idHQtbWV0YSI+JHtjb25mfSR7YWxnVGFnfTwvZGl2PmA7CiAgcmV0dXJuIGg7Cn0KCmZ1bmN0aW9uIHJlbmRlckFsbCgpIHsKICByb3V0ZUxheWVycy5mb3JFYWNoKG89Pm8ubGF5ZXIucmVtb3ZlKCkpOyByb3V0ZUxheWVycz1bXTsKICBub2RlTGF5ZXJzLmZvckVhY2gobz0+by5sYXllci5yZW1vdmUoKSk7ICBub2RlTGF5ZXJzPVtdOwoKICBjb25zdCBzaG93R2VsaXg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiLWdlbGl4JykuY2hlY2tlZDsKICBjb25zdCBzaG93QXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiLWF2aWFjb24nKS5jaGVja2VkOwogIGNvbnN0IHNob3dWRD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2ItdmQnKS5jaGVja2VkOwogIGNvbnN0IGFsZ09ubHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiLWFsZ2VyaWEtb25seScpLmNoZWNrZWQ7CiAgY29uc3QgaGlkZUFtYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2ItaGlkZS1hbWInKS5jaGVja2VkOwogIGNvbnN0IGFmPW5ldyBTZXQoKTsKICBpZihzaG93R2VsaXgpIGFmLmFkZCgnR2VsaXggQWlybGluZXMnKTsKICBpZihzaG93QXYpICAgIGFmLmFkZCgnQXZpYWNvbiBaaXRvdHJhbnMnKTsKICBpZihzaG93VkQpICAgIGFmLmFkZCgnVm9sZ2EtRG5lcHIgQWlybGluZXMnKTsKCiAgY29uc3QgZm9jdXNDaXRpZXM9bmV3IFNldCgpOwogIGlmKGZvY3VzQ2l0eSkgewogICAgUk9VVEVTLmZvckVhY2gocj0+ewogICAgICBpZihyLmZyb21fY2l0eT09PWZvY3VzQ2l0eXx8ci50b19jaXR5PT09Zm9jdXNDaXR5KXsKICAgICAgICBmb2N1c0NpdGllcy5hZGQoci5mcm9tX2NpdHkpOyBmb2N1c0NpdGllcy5hZGQoci50b19jaXR5KTsKICAgICAgfQogICAgfSk7CiAgfQoKICBsZXQgc2hvd249MDsKICBST1VURVMuZm9yRWFjaChyPT57CiAgICBpZighci5haXJsaW5lcy5zb21lKGE9PmFmLmhhcyhhKSkpIHJldHVybjsKICAgIGlmKGFsZ09ubHkmJiFyLnRvdWNoZXNfYWxnZXJpYSkgcmV0dXJuOwogICAgaWYoaGlkZUFtYiYmci5hbWJpZ3VvdXMpIHJldHVybjsKICAgIGlmKHIuY291bnQ8bWluRmxpZ2h0cykgcmV0dXJuOwogICAgaWYoZm9jdXNDaXR5JiZyLmZyb21fY2l0eSE9PWZvY3VzQ2l0eSYmci50b19jaXR5IT09Zm9jdXNDaXR5KSByZXR1cm47CgogICAgY29uc3QgY29sb3I9Z2V0Q29sb3Ioci5haXJsaW5lcyk7CiAgICBjb25zdCB3ZWlnaHQ9TWF0aC5taW4oMStyLmNvdW50KjAuNiw1KTsKICAgIGNvbnN0IG9wYWNpdHk9ci50b3VjaGVzX2FsZ2VyaWE\/MC44NTowLjIyOwogICAgY29uc3QgcHRzPWFyY1BvaW50cyhyLmZyb21fbGF0LHIuZnJvbV9sb24sci50b19sYXQsci50b19sb24pOwogICAgY29uc3QgbGluZT1MLnBvbHlsaW5lKHB0cyx7Y29sb3Isd2VpZ2h0LG9wYWNpdHksZGFzaEFycmF5OnIuYW1iaWd1b3VzPyc2IDQnOm51bGwsc21vb3RoRmFjdG9yOjF9KTsKCiAgICBsaW5lLm9uKCdtb3VzZW92ZXInLGZ1bmN0aW9uKCl7CiAgICAgIHJvdXRlTGF5ZXJzLmZvckVhY2gobz0+eyBpZihvLmxheWVyIT09bGluZSkgby5sYXllci5zZXRTdHlsZSh7b3BhY2l0eTowLjA0fSk7IH0pOwogICAgICBsaW5lLnNldFN0eWxlKHtvcGFjaXR5OjEsd2VpZ2h0OndlaWdodCsxLjV9KTsKICAgICAgdG9vbHRpcC5zdHlsZS5kaXNwbGF5PSdibG9jayc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MPWJ1aWxkVGlwKHIpOwogICAgfSk7CiAgICBsaW5lLm9uKCdtb3VzZW1vdmUnLGZ1bmN0aW9uKGUpewogICAgICB0b29sdGlwLnN0eWxlLmxlZnQ9KGUub3JpZ2luYWxFdmVudC5jbGllbnRYKzE1KSsncHgnOwogICAgICB0b29sdGlwLnN0eWxlLnRvcD0oZS5vcmlnaW5hbEV2ZW50LmNsaWVudFktMTApKydweCc7CiAgICB9KTsKICAgIGxpbmUub24oJ21vdXNlb3V0JyxmdW5jdGlvbigpewogICAgICByb3V0ZUxheWVycy5mb3JFYWNoKG89Pm8ubGF5ZXIuc2V0U3R5bGUoe29wYWNpdHk6by5kZWZhdWx0T3BhY2l0eSx3ZWlnaHQ6by53ZWlnaHR9KSk7CiAgICAgIHRvb2x0aXAuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICB9KTsKCiAgICBsaW5lLmFkZFRvKG1hcCk7CiAgICByb3V0ZUxheWVycy5wdXNoKHtsYXllcjpsaW5lLGRlZmF1bHRPcGFjaXR5Om9wYWNpdHksd2VpZ2h0LHJ9KTsKICAgIHNob3duKys7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXQtcm91dGVzJykudGV4dENvbnRlbnQ9c2hvd247CgogIE5PREVTLmZvckVhY2gobj0+ewogICAgY29uc3QgaXNBbGc9bi5pbl9hbGdlcmlhOwogICAgY29uc3QgaW5Gb2N1cz0hZm9jdXNDaXR5fHxmb2N1c0NpdGllcy5oYXMobi5jaXR5KTsKICAgIGNvbnN0IGZhZGVPcD1pbkZvY3VzPyhpc0FsZz8wLjk1OjAuODApOjAuMTI7CiAgICBjb25zdCBjaXJjbGU9TC5jaXJjbGVNYXJrZXIoW24ubGF0LG4ubG9uXSx7CiAgICAgIHJhZGl1czppc0FsZz9NYXRoLm1heCg0LE1hdGgubWluKDExLDMrbi5jb3VudCowLjQpKTpNYXRoLm1heCgyLE1hdGgubWluKDYsMS41K24uY291bnQqMC4yKSksCiAgICAgIGNvbG9yOmlzQWxnPycjZjdjOTQ4JzonIzg4ODg4OCcsCiAgICAgIGZpbGxDb2xvcjppc0FsZz8nI2Y3Yzk0OCc6JyM4ODg4ODgnLAogICAgICBmaWxsT3BhY2l0eTpmYWRlT3Asd2VpZ2h0OmlzQWxnPzEuNTowLjUsb3BhY2l0eTpmYWRlT3AKICAgIH0pOwogICAgY2lyY2xlLmJpbmRUb29sdGlwKGlzQWxnP2A8YiBzdHlsZT0iY29sb3I6I2Y3Yzk0OCI+JHtuLmNpdHl9PC9iPmA6YDxiPiR7bi5jaXR5fTwvYj5gLHtkaXJlY3Rpb246J3RvcCcscGVybWFuZW50OmZhbHNlfSk7CiAgICBjaXJjbGUub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICBmb2N1c0NpdHk9Zm9jdXNDaXR5PT09bi5jaXR5P251bGw6bi5jaXR5OwogICAgICB1cGRhdGVGb2N1c0Jhbm5lcigpOwogICAgICByZW5kZXJBbGwoKTsKICAgIH0pOwogICAgY2lyY2xlLmFkZFRvKG1hcCk7CiAgICBub2RlTGF5ZXJzLnB1c2goe2xheWVyOmNpcmNsZSxjaXR5Om4uY2l0eX0pOwogIH0pOwp9CgpmdW5jdGlvbiB1cGRhdGVGb2N1c0Jhbm5lcigpewogIGNvbnN0IGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvY3VzLWJhbm5lcicpOwogIGlmKGZvY3VzQ2l0eSl7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9jdXMtbGFiZWwnKS50ZXh0Q29udGVudD0nU2hvd2luZyByb3V0ZXMgdGhyb3VnaDogJytmb2N1c0NpdHk7CiAgICBiLnN0eWxlLmRpc3BsYXk9J2ZsZXgnOwogIH1lbHNle2Iuc3R5bGUuZGlzcGxheT0nbm9uZSc7fQp9Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9jdXMtY2xlYXInKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9Pntmb2N1c0NpdHk9bnVsbDt1cGRhdGVGb2N1c0Jhbm5lcigpO3JlbmRlckFsbCgpO30pOwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGlsbCcpLmZvckVhY2goYnRuPT57CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBpbGwnKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIG1pbkZsaWdodHM9cGFyc2VJbnQodGhpcy5kYXRhc2V0Lm1pbik7CiAgICByZW5kZXJBbGwoKTsKICB9KTsKfSk7ClsnY2ItZ2VsaXgnLCdjYi1hdmlhY29uJywnY2ItdmQnLCdjYi1hbGdlcmlhLW9ubHknLCdjYi1oaWRlLWFtYiddLmZvckVhY2goaWQ9PnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxyZW5kZXJBbGwpOwp9KTsKCnJlbmRlckFsbCgpOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"><\/iframe>\n\n\n\n\n<p class=\"wp-block-paragraph\">Algiers bought 73% of its weapons from Russia between 2018 and 2022, and though the share of Russian-origin weapons has declined in recent years, Russia remains Algeria\u2019s top supplier of arms, according to data from the Stockholm International Peace Research Institute. The country has recently placed several large orders for new aircraft, including the ones manufactured at the very sites the cargo aircraft tracked for this investigation frequently visited. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since the start of Russia\u2019s invasion of Ukraine and the imposition of harsh Western sanctions as a result, government-affiliated airlines have grown in importance for the Kremlin. In its \u201cShadow Airlines\u201d investigation, Defense News has tracked about a dozen operators and manually retraced thousands of flight routes, providing a first-of-its-kind comprehensive picture of this unreported underworld. This article is the first in a multi-part series that uncovers this peculiar network of front companies, airlines and Soviet-era freight planes that move Russian weapons and influence around the world.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Defense News tracked Russian cargo flights to the Oum El Bouaghi Air Base, Ain Oussera Air Base, Annaba Air Base, Laghouat Air Base and B\u00e9char in Algeria, among other destinations. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some flights may also have touched down in other parts of Algeria, but many of the aircraft appeared to be involved in tracking-evasion techniques such as turning off their ADS-B transponders or misdeclaring airports in their itineraries. Particularly flights heading south out of Algiers, the capital and a key hub for the shadow airlines, frequently dropped off ADS-B tracking radars even though other nearby aircraft remained within coverage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to an air cargo industry insider, who wished to remain unnamed to speak freely, this is a known evasion technique deliberately employed by pilots. It also matches other clandestine flights that Defense News has tracked.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aircraft were frequently observed visiting key Russian fighter jet production sites shortly before heading to Algeria. For instance, Algeria-bound aircraft visited Komsomolsk-on-Amur, the sole production site for both the Su-57 and Su-35, at least a dozen times during the period investigated. There were also at least eight flights through Irkutsk Northwest airport, which is central to the Su-30 production line. At least 28 flights relating to Algeria went through Yeltsovka Airport near Novosibirsk, which is the only facility producing and maintaining the Su-34 frontline bomber. Algeria is known to operate or have ordered all of these aircraft and is the first foreign buyer for several of them. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Within Russia, the airport of Mineralnye Vody \u2013 a civilian installation with a runway nearly 4,000 meters long \u2013 plays a key role in the logistics supply chain on these Algeria flights. About two-thirds of all flights landed here from other Russian destinations before heading onward to Algeria. The airport, located in the North Caucasus, Russia\u2019s far southwestern edge, is a convenient staging location as it minimizes the flight distance between the motherland and destinations in Africa and the Middle East.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The workhorse<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Ilyushin Il-76, the workhorse of these shadow airline operators, typically has a range of around 5,000 kilometers when reasonably loaded. That limits Russia\u2019s power projection abilities without access to intermediary airports for refueling, which are hard to come by given Russia\u2019s current status as a pariah in much of the world. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Data collected by Defense News suggests that Algeria may not only be a destination but also a transit spot for Russian military equipment or support flowing elsewhere into Africa. Between July and September, two Il-76 planes operated by Gelix Airlines, RA-76373 and RA-76360, made eight return flights between Russia and Conakry, Guinea, by way of Algiers. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"3958\" height=\"2250\" src=\"\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png\" alt=\"\" class=\"wp-image-120623\" srcset=\"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png 3958w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png?resize=300,171 300w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png?resize=768,437 768w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png?resize=1024,582 1024w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png?resize=1536,873 1536w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Algiers-closeup.png.png?resize=2048,1164 2048w\" sizes=\"auto, (max-width: 3958px) 100vw, 3958px\" \/><figcaption class=\"wp-element-caption\">An Antonov 124 and an Ilyushin 76 of Russia&#8217;s &#8220;shadow airlines&#8221; fleet are pictured parking at Algiers Airport, Algeria, April 18, 2026.\u00a0(Planet Labs\/provided by James Martin Center for Nonproliferation Studies. Annotations: Linus H\u00f6ller\/staff)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Guinea, a frequent onward destination from Algeria for the shadow airline fleet, has long been a key Russian-aligned country in West Africa, and ties have deepened further since a military junta took over in a coup in 2021. Russia is deeply involved in the country\u2019s mining sector, especially for bauxite, and the country also serves as a key gateway for Russian weapons deliveries into the Sahel region.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In January 2025, <a href=\"https:\/\/www.lemonde.fr\/en\/international\/article\/2025\/01\/24\/russia-delivers-armored-vehicles-to-mali-and-restructures-military-presence_6737390_4.html\" target=\"_blank\" rel=\"\">Le Monde<\/a> documented that two sanctioned Russian cargo ships unloaded over 2,000 tons of military cargo, including light tanks and armored vehicles, at Conakry, from where the convoy then drove north to Mali.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Additionally, Algeria appears to serve as a gateway for Russia into the turbulent country of Niger, where Russian paramilitary forces have been active and the Kremlin has a deep web of interests, not least the country\u2019s vast uranium deposits. An investigation by Italian newspaper Il Foglio from December 2025 showed an airlift operation was <a href=\"https:\/\/www.ilfoglio.it\/esteri\/2025\/12\/23\/news\/inside-russias-air-route-for-transporting-uranium-from-niger-via-libya-and-syria--118963\" target=\"_blank\" rel=\"\">underway<\/a> to move many tons of uranium purchased by state-owned Rosatom from Niger to Russia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In recent days, a super-heavy Antonov An-124 \u201cRuslan\u201d aircraft operated by Volga-Dnepr Airlines started flying regular shuttles between Algiers and sub-Saharan Africa, with tracking data suggesting the destination was likely Niamey, the capital of Niger, although the transponder signal is spotty. Satellite imagery reviewed by Defense News shows a large aircraft with dimensions that match those of the An-124 parked at Niamey airport on at least two of the dates in question. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The An-124 is capable of carrying well over 100,000 kg in payload and is the world\u2019s largest operational heavy-lift aircraft. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The aircraft in question, RA-82079, has flown the circuit between Algeria and Niger at least eight times since April 21, and remains in the area at the time of writing. It previously came to Algeria from the Irkutsk Northwest Airport, the assembly site for the Su-30 aircraft, by way of Mineralnye Vody and first landing in Africa at the Oum El Bouaghi air base, where one of Algeria\u2019s Su-30 squadrons is based. From there, it leaped over to Algiers, where it sat for nine days before beginning the shuttle flights to Niger.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2620\" height=\"2250\" src=\"\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png\" alt=\"\" class=\"wp-image-120626\" srcset=\"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png 2620w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png?resize=300,258 300w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png?resize=768,660 768w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png?resize=1024,879 1024w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png?resize=1536,1319 1536w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Niamey-An-124-2026.04.26-annotated.png.png?resize=2048,1759 2048w\" sizes=\"auto, (max-width: 2620px) 100vw, 2620px\" \/><figcaption class=\"wp-element-caption\">An Russian An-124 cargo aircraft sits at Niamey airport in Niger on April 26, 2026. (Planet Labs\/provided by James Martin Center for Nonproliferation Studies. Annotations: Linus H\u00f6ller\/staff)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Three other An-124 aircraft operated by Volga-Dnepr have visited Algeria in the past year, including on unusual routes flying to military bases deep in the Algerian Sahara desert by way of Saudi Arabia and Egypt. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algeria has also served as a stopover for intercontinental flight itineraries.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In March 2025, one of the same aircraft that flew to Guinea \u2013 RA-76373 \u2013 had stopped in Algeria and its southwesterly neighbor, Mauritania, on an unusual mission to and from Latin America, where it visited Venezuela and Mexico. Similarly, a plane with the tail number RA-78765 used Algiers and Conakry as stops on the way to a multi-hop tour of Latin America that took it through Brazil, Bolivia, Colombia, Venezuela, Mexico and Cuba, before returning to Russia by way of Venezuela, Mauritania and Annaba Air Base in northeastern Algeria. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the route back to Russia, the United Arab Emirates \u2013 particularly Dubai, Sharjah and Fujairah \u2013 have emerged as common stops, appearing 25 times across multiple operators and aircraft types in the data. On several occasions, aircraft flew directly from Algerian military air bases to Emirati airports before returning to Russia or continuing onward to Central Asia, another key region for Russian sanctions evasion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The United Arab Emirates itself has been identified in Western government reports and financial investigations as a key sanctions-evasion hub for Russian entities since 2022, offering financial infrastructure, a transshipment hub to obscure supply chains, and airspace access that Russia lacks elsewhere.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2018Air Wagner\u2019<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The flight patterns also point to a second type of activity entrusted to the shadow airlines: serving as the logistics arm for Russia\u2019s paramilitary forces abroad, such as the former Wagner Group and current Africa Corps, the group\u2019s successor. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algiers appears to be a convenient staging ground for West African operations, and one that may be under less scrutiny than some other staging grounds previously used by Russia for supplying its mercenaries on the continent. Planes tracked for this investigation made frequent flights to the Algerian capital with only short stays there, and sometimes, aircraft operating on separate circuits converged in Algiers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of these airlines is Aviacon Zitotrans, which has been sanctioned by the United States, Canada and Ukraine. The U.S. Treasury Department, in an explanation accompanying the sanctions listing in 2023, said that \u201cAviacon Zitotrans has shipped military equipment such as rockets, warheads, and helicopter parts all over the world,\u201d including to \u201cVenezuela, Africa, and other locations.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Candace Rondeaux, director of public intelligence firm Future Frontlines and the author of an authoritative book on the Wagner Group\u2019s history, said she estimates at least half of the flights by airlines like Gelix and Aviacon Zitotrans are flown on behalf of the Kremlin\u2019s State Property Management Office. That bureau lies outside the structures of the Ministry of Defense and is instead directly subordinate to the president of the Russian Federation, Vladimir Putin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Russian government operates two of its own, technically civilian, airlines: the 223rd and 224th Flight Units, which are also frequently used for special-mission air lifts. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to the 224th Flight Unit\u2019s English-language website, the Office of the President of the Russian Federation is the airline\u2019s main customer. It also lists Rossiya Special Flight Unit, which is responsible primarily for VIP transport, Russia\u2019s state-owned arms dealer Rosoboronexport, and the warplane maker MiG as \u201cother major customers.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2621\" height=\"2250\" src=\"\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png\" alt=\"\" class=\"wp-image-120629\" srcset=\"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png 2621w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png?resize=300,258 300w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png?resize=768,659 768w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png?resize=1024,879 1024w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png?resize=1536,1319 1536w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Laghouat-Gelix-Il-76-2025.12.29.PNG.png?resize=2048,1758 2048w\" sizes=\"auto, (max-width: 2621px) 100vw, 2621px\" \/><figcaption class=\"wp-element-caption\">A Russian Il-76 aircraft flying for Gelix Airlines is pictured at Laghouat Air Base, Algeria, Dec. 29, 2025. (Planet Labs\/provided by James Martin Center for Nonproliferation Studies. Annotations: Linus H\u00f6ller\/staff)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">While Russia\u2019s air force and the 224th Flight Unit operate heavy Antonov and Ilyushin cargo aircraft in their own fleets, the use of charter airlines gives the Kremlin more capacity and easier access to civilian aviation procedures than flying government- or military-owned planes abroad, not to mention a layer of obfuscation and plausible deniability. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Analytics firm Dallas Analytics recently <a href=\"https:\/\/dallas-analytics.com\/russias-shadow-airlift\/\" target=\"_blank\" rel=\"\">published<\/a> an investigation that included internal Russian government documents and Ministry of Defense air waybills, finding that Russia\u2019s military aviation maintenance backbone is \u201ccollapsing due to sanctions and absent spare parts,\u201d with repair facilities effectively insolvent and growing numbers of military aircraft grounded. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cBy placing a portion of its fleet on the civil registry and painting them in standard commercial liveries, the Ministry of Defense exploits civil aviation protocols. This allows them to bypass diplomatic red tape and fly into crucial transit nodes like the UAE, Turkey, or various African states under the guise of civilian charter flights,\u201d Dallas Analytics wrote in their report. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The report made public a series of original primary documents that prove the military nature of at least some of the flights, including ones predating the full-scale war in Ukraine. Among them are air waybills that confirm that Aviacon Zitotrans transported Russian military helicopters to Laos in November 2020 under explicit orders from the Russian Ministry of Defense, and a separate set of waybills shows the same airline executing shipments of defense electronics to China on behalf of two of Russia\u2019s leading jet engine manufacturers. Dallas Analytics also published documents regarding the shipment of complete missile systems to India via Aviacon Zitotrans in late 2022. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These various airlines have traditionally served a key logistical function, particularly far from Russia\u2019s shores, and were an integral part of the Wagner Group\u2019s African operations, flying in personnel, weapons and gear, and flying out gold on behalf of the Corp\u2019s former boss, Yevgeniy Prigozhin, said Rondeaux. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While the Wagner Group had its wings clipped after Prigozhin\u2019s ill-fated coup attempt in the summer of 2023, the logistics networks and even many of the mercenary operations in sub-Saharan Africa have remained, if sometimes under new management. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cThe media, even intelligence services, have bought this idea that the Wagner brand was dead, and therefore there\u2019s no connectivity,\u201d said Rondeaux. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cNothing has changed about Russia\u2019s need to circumvent sanctions. In fact, it\u2019s become only more urgent to do so,\u201d she added.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Garcia, the senior C4ADS analyst, said that in places like Mali, approximately 80% of the Africa Corps\u2019 personnel had previously served with the Wagner Group. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Air carriers like those operating in Algeria are key to maintaining these semi-covert missions and serve as wet leasing companies, said Rondeaux. They \u201cprovide crews, they provide a flight plan &#8230; essentially they manage the logistical arm of what we called Air Wagner.\u201d <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rapid growth<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gelix Airlines has emerged as a key player in recent years, with many flights that raise questions about their purpose on unconventional routes to conflict zones. A combination of hopping around West African locations known to base Russian mercenaries and regular flights back to the Russian mainland should raise eyebrows, said Garcia. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"5577\" height=\"3718\" src=\"\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg\" alt=\"\" class=\"wp-image-120632\" srcset=\"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg 5577w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg?resize=300,200 300w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg?resize=768,512 768w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg?resize=1024,683 1024w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg?resize=1536,1024 1536w, https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/GettyImages-2262871149.jpg.jpg?resize=2048,1365 2048w\" sizes=\"auto, (max-width: 5577px) 100vw, 5577px\" \/><figcaption class=\"wp-element-caption\">Antonov An-124 cargo planes of the Russian Volga-Dnepr Group parked at Leipzig\/Halle Airport, Germany, Feb. 19, 2026. (Jan Woitas\/picture alliance via Getty Images)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In an email interview with Defense News, Gelix CEO Vadim Baldin disputed the notion that there was no commercial demand on the routes flown by Gelix. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cGuinea, Somalia, Myanmar, Yeltsovka airports, and Irkutsk Northwest Airport \u2212 all of these are takeoff and landing points for our aircraft,\u201d Baldin said, adding he was \u201cnot able to say anything specific\u201d about the nature of the cargo, other than it was \u201cnot military.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Baldin said Gelix flights \u201ctransport cars, machinery, and containers. In short, everything that can be legally loaded onto an Il-76.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Asked about his company\u2019s flights to United Aircraft Corporation-affiliated airports, he said that \u201cwe adhere to purely businesslike relationships with all participants in the air transportation market.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Speaking to Russian business newspaper <a href=\"https:\/\/www.kommersant.ru\/doc\/8574459\" target=\"_blank\" rel=\"\">Kommersant<\/a> on April 10, Baldin reported that 2025\u2019s revenue surged more than twofold compared to the previous year. He attributed it to \u201cflights to Latin American countries (Mexico, Venezuela) and a number of West African countries (Mauritania, Guinea),\u201d the paper wrote. Flight hours tripled in 2025, and the upswing meant that Gelix is \u201cseen and entrusted with complex tasks in difficult climatic conditions, which opens up access to new tenders,\u201d Baldin said. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cThe guys who come to us to find a job imagine that they will work in white shirts,\u201d Baldin was quoted by a company social media account in the Russian VK social network in March. \u201cBut we have slightly different conditions.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Speaking to Defense News, Baldin confirmed that \u201cAlgeria is indeed an important hub for international logistics,\u201d but emphasized that \u201cit is only one of 36 countries to which our airline flies.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">He said it was \u201cabsolutely correct\u201d that Algeria plays a key role due to its location, which makes it a key refueling point and cargo logistics point to extend the Russian Ilyushins\u2019 reach. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The company is used to executing a range of special missions. In August of last year, the firm became the third in Russia to be licensed to transport nuclear materials and radioactive substances aboard planes, <a href=\"http:\/\/pech.gosnadzor.ru\/news\/67\/17881\/\" target=\"_blank\" rel=\"\">according<\/a> to the Russian government agency Rostekhnadzor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cThere is a certain demand for the delivery of equipment that contains radioactive elements to polar stations,\u201d the CEO was quoted as saying at the time. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The company has existed since the 1990s, but for decades was only a helicopter operator focused on regional tourism and local air lifts. Then, in 2021, the company received three heavy-lift Ilyushin Il-76D aircraft from the state-owned diamond mining company Alrosa. The aircraft are fully owned by Gelix, Baldin confirmed. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new aircraft were reportedly based in Ulyanovsk, the Russian \u201caviation capital,\u201d rather than Gelix\u2019s longstanding headquarters in Perm. And despite being built in the years immediately after the fall of the Soviet Union, the aircraft were retrofitted with the required gear specifically with an eye toward flying abroad, as Russian business journal Kommersant <a href=\"https:\/\/www.kommersant.ru\/doc\/4858689\" target=\"_blank\" rel=\"\">reported<\/a>. In the same article, a Russian air freight director was cited as saying that the free market was currently \u201cnot the most favorable\u201d for air cargo. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Operators flying the Ilyushin Il-76 are of particular interest to analysts, said analyst Garcia, as the aircraft type is renowned for having been used to transport weapons or troops. \u201cWe find them quite interesting when they\u2019re taken on by private sector companies that are operating in areas that we know armed group activity occurs in,\u201d she said. Gelix Airlines\u2019 shift from decades of helicopter operations to long-haul Il-76 flights to unstable parts of the world stands out as a red flag, she said. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cIndeed, the life of Gelix Airlines has taken a dramatic turn since my arrival as director,\u201d Baldin told Defense News in an email. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Friends in high places<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aviacon Zitotrans, the charter operator of the majority of the Russian flights to Algeria in the past year, has also been known to fly military equipment elsewhere on Russia\u2019s behalf. Ahead of the U.S. intervention in Venezuela, an Aviacon Zitotrans-owned aircraft traveled to Venezuela, a story that was <a href=\"https:\/\/www.defensenews.com\/global\/the-americas\/2025\/10\/28\/heavy-russian-cargo-plane-lands-in-caracas-amid-us-venezuela-tensions\/\" target=\"_blank\" rel=\"\">first reported<\/a> by Defense News. Russian lawmakers later <a href=\"https:\/\/www.defensenews.com\/global\/the-americas\/2026\/02\/02\/russian-cargo-plane-arrives-in-cuba-echoing-frantic-caracas-buildup\/\" target=\"_blank\" rel=\"\">revealed<\/a> that air defense systems were aboard the aircraft. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Like the Wagner group, many of the shadow airlines appear to have grown out of legitimate businesses that have found a lucrative gig in serving the Kremlin\u2019s more sensitive missions. Prigozhin famously started his career as a restaurateur who catered Putin\u2019s events before he branched out into military logistics, private security for major state-affiliated enterprises, and from there, into the world of private military contractors. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And like the web of actors surrounding the private military contractor world in Russia, which is comprised of opportunists, military veterans, and security forces protecting the oil and gas industry, the shadow airlines world, too, bears the hallmarks of a tangled web. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On several occasions, for example, aircraft linked to the sanctioned Aviacon Zitotrans were spotted operating under Gelix callsigns, including while flying out of a military airbase in Ethiopia and St. Petersburg. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Asked about the discrepancy, Gelix\u2019s CEO, Vadim Baldin, told Defense News that it was an artifact of the aircraft leasing model. Databases used by journalists, he said, don\u2019t necessarily update fast enough to reflect who is operating aircraft that are merely leased to temporarily expand a fleet rather than owned by an airline. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The leaders of both companies appear well-established in the relevant political circles, and both have ties to the Russian Federation\u2019s government. Baldin, who has led Gelix since 2020, represented the Russian Federation on the boards of two state-owned military-industrial companies \u2013 Special Design Bureau Salyut, a defense electronics manufacturer, and Design Bureau Gorizont, an avionics and special-purpose electronics maker \u2013 between 2014 and 2017, according to Russian bibliographical database viperson.ru. Both are subordinate to Minpromtorg, the Russian Ministry of Industry and Trade.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">He has also posted on Telegram about awards for completing training with the ruling party\u2019s United Russia Party Higher Party School and funding a monument for soldiers killed during the so-called \u201cSpecial Military Operation,\u201d the Russian government\u2019s state-approved euphemism for the war in Ukraine. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Baldin, born in 1974, has previously served as the deputy chairman of the Expert Council of the Commission of the Russian Union of Industrialists and Entrepreneurs on the Military-Industrial Complex and aerospace-related advisory bodies. Combined with his educational and practical background in civil aviation, this placed him at the critical nexus between the military and civil worlds at which Russia\u2019s shadow airlines operate. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of Gelix\u2019s flights tracked for this investigation, more than three-quarters stopped at Russian military aviation plants before heading to Algeria, more than any other operator. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The owner of Aviacon Zitotrans, Valery Savelyev, meanwhile, has served as a regional deputy for Putin\u2019s \u201cUnited Russia\u201d ruling party. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike Aviacon Zitotrans, Gelix Airlines, the operator that flew repeatedly via Algeria to West Africa, is not sanctioned by any country. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Russian and Algerian governments, as well as Aviacon Zitotrans, did not immediately respond to a request for comment in time for publication. Volga-Dnepr Airlines acknowledged receipt of Defense News\u2019 questions but did not provide answers by press time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.<\/p>\n","protected":false},"author":7,"featured_media":120619,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-post-featured-layout","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_meta-robots-noindex":"","_yoast_wpseo_meta-robots-nofollow":"","_yoast_wpseo_canonical":"","_acf":"","_yoast_wpseo_primary_category":46,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_smg_distribution_targets":[]},"categories":[7,160,46,11,36],"tags":[],"coauthors":[3463],"class_list":["post-72645","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-air","category-daily-news-roundup","category-europe","category-global","category-newsletters"],"acf":{"subheadline":"\u2018Air Wagner\u2019 is alive and well, flying missions throughout West Africa and Latin America","legacy_arc_id":"XIOAR3R23BHVZD43AWLELYBU6Y","arc_canonical_url":"\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/","remove_feature_photo":false,"is_sponsored":false,"subtype":"featured-layout","redirect_url":"","disable_inline_ads":false,"native_logo_pretext":"Presented By:"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Investigation: Russian shadow airlines use Algeria as base for secretive missions - Defense News<\/title>\n<meta name=\"description\" content=\"Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Investigation: Russian shadow airlines use Algeria as base for secretive missions\" \/>\n<meta property=\"og:description\" content=\"Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/\" \/>\n<meta property=\"og:site_name\" content=\"Defense News\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-30T10:08:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-08T01:31:53+00:00\" \/>\n<meta name=\"author\" content=\"Linus H\u00f6ller\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Linus H\u00f6ller\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\\\/\\\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"Article\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#article\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/\"\n\t            },\n\t            \"author\": {\n\t                \"name\": \"migration\",\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#\\\/schema\\\/person\\\/cc76c831bb37a926738c8391fca7a3b1\"\n\t            },\n\t            \"headline\": \"Investigation: Russian shadow airlines use Algeria as base for secretive missions\",\n\t            \"datePublished\": \"2026-04-30T10:08:25+00:00\",\n\t            \"dateModified\": \"2026-08-08T01:31:53+00:00\",\n\t            \"mainEntityOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/\"\n\t            },\n\t            \"wordCount\": 3557,\n\t            \"commentCount\": 0,\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#organization\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/one.sightlinemg.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png\",\n\t            \"articleSection\": [\n\t                \"Air Warfare\",\n\t                \"Daily News Roundup\",\n\t                \"Europe\",\n\t                \"Global\",\n\t                \"Newsletters\"\n\t            ],\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"CommentAction\",\n\t                    \"name\": \"Comment\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#respond\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/\",\n\t            \"url\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/\",\n\t            \"name\": \"Investigation: Russian shadow airlines use Algeria as base for secretive missions - Defense News\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/one.sightlinemg.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png\",\n\t            \"datePublished\": \"2026-04-30T10:08:25+00:00\",\n\t            \"dateModified\": \"2026-08-08T01:31:53+00:00\",\n\t            \"description\": \"Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.\",\n\t            \"breadcrumb\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#breadcrumb\"\n\t            },\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#primaryimage\",\n\t            \"url\": \"https:\\\/\\\/one.sightlinemg.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png\",\n\t            \"contentUrl\": \"https:\\\/\\\/one.sightlinemg.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png\"\n\t        },\n\t        {\n\t            \"@type\": \"BreadcrumbList\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/2026\\\/04\\\/30\\\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\\\/#breadcrumb\",\n\t            \"itemListElement\": [\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 1,\n\t                    \"name\": \"Home\",\n\t                    \"item\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/\",\n\t                    \"ad_zone\": \"home\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 2,\n\t                    \"name\": \"Global\",\n\t                    \"item\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/\",\n\t                    \"ad_zone\": \"global\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 3,\n\t                    \"name\": \"Europe\",\n\t                    \"item\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/global\\\/europe\\\/\",\n\t                    \"ad_zone\": \"europe\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 4,\n\t                    \"name\": \"Investigation: Russian shadow airlines use Algeria as base for secretive missions\"\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#website\",\n\t            \"url\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/\",\n\t            \"name\": \"Defense News\",\n\t            \"description\": \"Covering the politics, business and technology of defense | Defense News\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#organization\",\n\t            \"name\": \"Defense News\",\n\t            \"url\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#\\\/schema\\\/logo\\\/image\\\/\",\n\t                \"url\": \"https:\\\/\\\/one.sightlinemg.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/defensenews-logo-white.png\",\n\t                \"contentUrl\": \"https:\\\/\\\/one.sightlinemg.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/defensenews-logo-white.png\",\n\t                \"caption\": \"Defense News\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#\\\/schema\\\/logo\\\/image\\\/\"\n\t            }\n\t        },\n\t        {\n\t            \"@type\": \"Person\",\n\t            \"@id\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/#\\\/schema\\\/person\\\/cc76c831bb37a926738c8391fca7a3b1\",\n\t            \"name\": \"migration\",\n\t            \"image\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9e8d47be443ce94ce7fc357677b5f9c70235bb1f59e7267a102a74af58c04f59?s=96&d=mm&r=gcf4cb6ee0ec29e49e7a963234e4340ec\",\n\t                \"url\": \"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9e8d47be443ce94ce7fc357677b5f9c70235bb1f59e7267a102a74af58c04f59?s=96&d=mm&r=g\",\n\t                \"contentUrl\": \"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9e8d47be443ce94ce7fc357677b5f9c70235bb1f59e7267a102a74af58c04f59?s=96&d=mm&r=g\",\n\t                \"caption\": \"migration\"\n\t            },\n\t            \"url\": \"https:\\\/\\\/one.sightlinemg.com\\\/defensenews\\\/author\\\/migration\\\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Investigation: Russian shadow airlines use Algeria as base for secretive missions - Defense News","description":"Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Investigation: Russian shadow airlines use Algeria as base for secretive missions","og_description":"Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.","og_url":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/","og_site_name":"Defense News","article_published_time":"2026-04-30T10:08:25+00:00","article_modified_time":"2026-08-08T01:31:53+00:00","author":"Linus H\u00f6ller","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Linus H\u00f6ller","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#article","isPartOf":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/"},"author":{"name":"migration","@id":"https:\/\/one.sightlinemg.com\/defensenews\/#\/schema\/person\/cc76c831bb37a926738c8391fca7a3b1"},"headline":"Investigation: Russian shadow airlines use Algeria as base for secretive missions","datePublished":"2026-04-30T10:08:25+00:00","dateModified":"2026-08-08T01:31:53+00:00","mainEntityOfPage":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/"},"wordCount":3557,"commentCount":0,"publisher":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/#organization"},"image":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#primaryimage"},"thumbnailUrl":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png","articleSection":["Air Warfare","Daily News Roundup","Europe","Global","Newsletters"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/","url":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/","name":"Investigation: Russian shadow airlines use Algeria as base for secretive missions - Defense News","isPartOf":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/#website"},"primaryImageOfPage":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#primaryimage"},"image":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#primaryimage"},"thumbnailUrl":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png","datePublished":"2026-04-30T10:08:25+00:00","dateModified":"2026-08-08T01:31:53+00:00","description":"Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.","breadcrumb":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#primaryimage","url":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png","contentUrl":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png"},{"@type":"BreadcrumbList","@id":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/2026\/04\/30\/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/one.sightlinemg.com\/defensenews\/","ad_zone":"home"},{"@type":"ListItem","position":2,"name":"Global","item":"https:\/\/one.sightlinemg.com\/defensenews\/global\/","ad_zone":"global"},{"@type":"ListItem","position":3,"name":"Europe","item":"https:\/\/one.sightlinemg.com\/defensenews\/global\/europe\/","ad_zone":"europe"},{"@type":"ListItem","position":4,"name":"Investigation: Russian shadow airlines use Algeria as base for secretive missions"}]},{"@type":"WebSite","@id":"https:\/\/one.sightlinemg.com\/defensenews\/#website","url":"https:\/\/one.sightlinemg.com\/defensenews\/","name":"Defense News","description":"Covering the politics, business and technology of defense | Defense News","publisher":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/one.sightlinemg.com\/defensenews\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/one.sightlinemg.com\/defensenews\/#organization","name":"Defense News","url":"https:\/\/one.sightlinemg.com\/defensenews\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/one.sightlinemg.com\/defensenews\/#\/schema\/logo\/image\/","url":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/06\/defensenews-logo-white.png","contentUrl":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/06\/defensenews-logo-white.png","caption":"Defense News"},"image":{"@id":"https:\/\/one.sightlinemg.com\/defensenews\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/one.sightlinemg.com\/defensenews\/#\/schema\/person\/cc76c831bb37a926738c8391fca7a3b1","name":"migration","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9e8d47be443ce94ce7fc357677b5f9c70235bb1f59e7267a102a74af58c04f59?s=96&d=mm&r=gcf4cb6ee0ec29e49e7a963234e4340ec","url":"https:\/\/secure.gravatar.com\/avatar\/9e8d47be443ce94ce7fc357677b5f9c70235bb1f59e7267a102a74af58c04f59?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9e8d47be443ce94ce7fc357677b5f9c70235bb1f59e7267a102a74af58c04f59?s=96&d=mm&r=g","caption":"migration"},"url":"https:\/\/one.sightlinemg.com\/defensenews\/author\/migration\/"}]}},"jetpack_sharing_enabled":true,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Defense News","distributor_original_site_url":"https:\/\/one.sightlinemg.com\/defensenews","push-errors":false,"jetpack_featured_media_url":"https:\/\/one.sightlinemg.com\/wp-content\/uploads\/2026\/08\/Screenshot_30-4-2026_1086_-cropped-copyright.png.png","_links":{"self":[{"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/posts\/72645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/comments?post=72645"}],"version-history":[{"count":1,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/posts\/72645\/revisions"}],"predecessor-version":[{"id":72661,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/posts\/72645\/revisions\/72661"}],"wp:attachment":[{"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/media?parent=72645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/categories?post=72645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/tags?post=72645"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/one.sightlinemg.com\/defensenews\/wp-json\/wp\/v2\/coauthors?post=72645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}