{"id":6348,"date":"2026-07-10T15:24:28","date_gmt":"2026-07-10T15:24:28","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-6-test-2-speaking\/"},"modified":"2026-07-12T03:16:25","modified_gmt":"2026-07-12T03:16:25","slug":"celpip-set-6-test-2-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-6-test-2-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 6 \u00b7 Practice Test 2"},"content":{"rendered":"<div id=\"clp-spk-root\" style=\"min-height:300px\">\n<p style=\"text-align:center;padding:40px 0;color:#888\">Loading CELPIP Speaking\u2026<\/p>\n<\/div>\n<p><script>eval(atob(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0Ijo2LCJ0ZXN0IjoyLCJ0aXRsZSI6IkNFTFBJUCBTcGVha2luZyBcdTIwMTQgU2V0IDYgXHUwMGI3IFByYWN0aWNlIFRlc3QgMiIsImhlYWRlciI6IlByYWN0aWNlIFRlc3QgMiIsImltZ3MiOnsic2NlbmUiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczZ0Mi1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M2dDItb3B0LWEuanBnIiwib3B0QiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zNnQyLW9wdC1iLmpwZyIsIm9wdE90aGVyIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M2dDItb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczZ0Mi11bnVzdWFsLmpwZyJ9LCJvdGhlclVybCI6Ii9jZWxwaXAtc2V0LTYtdGVzdC0xLXNwZWFraW5nLyIsInRhc2tzIjpbeyJrIjoidyIsIm51bSI6MCwidHlwZUVuIjoiU3BlYWtpbmcgUHJhY3RpY2UgVGFzayIsInByZXAiOjMwLCJyZWMiOjYwLCJ3YXJtdXAiOnRydWUsInByb21wdCI6IlRhbGsgYWJvdXQgb25lIG9mIHlvdXIgYmVzdCBmcmllbmRzLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlRoZSBQcmFjdGljZSBUYXNrICh3YXJtLXVwKSBpcyBOT1Qgc2NvcmVkIFx1MjAxNCBpdCBpcyBoZXJlIHRvIGhlbHAgeW91IGdldCB1c2VkIHRvIHRoZSBjb250cm9scyBhbmQgd2FybSB1cCB5b3VyIHZvaWNlLiIsIlNwZWFrIG5hdHVyYWxseSBhYm91dCBhIGJlc3QgZnJpZW5kOiB0aGVpciBuYW1lLCBob3cgeW91IG1ldCwgdGhlaXIgcGVyc29uYWxpdHksIGEgbWVtb3J5IHlvdSBzaGFyZS4iLCJVc2UgaXQgdG8gYWRqdXN0IHlvdXIgcG9zdHVyZSwgbWljcm9waG9uZSBkaXN0YW5jZSwgYW5kIHNwZWFraW5nIHBhY2UuIl0sInBocmFzZXMiOlsiTXkgYmVzdCBmcmllbmQncyBuYW1lIGlzXHUyMDI2IiwiV2UgbWV0IHdoZW5cdTIwMjYiLCJXaGF0IEkgbGlrZSBtb3N0IGFib3V0IGhpbS9oZXIgaXNcdTIwMjYiXX0sInM2IjpudWxsLCJzOSI6bnVsbH0seyJrIjoidDEiLCJudW0iOjEsInR5cGVFbiI6IkdpdmluZyBBZHZpY2UiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiWW91ciBmcmllbmQgaXMgd29ycmllZCBhYm91dCBtYWtpbmcgYSBnb29kIGltcHJlc3Npb24gb24gaGVyIGZpcnN0IGRheSBhdCBoZXIgbmV3IGpvYi4gR2l2ZSBoZXIgYWR2aWNlIGFib3V0IHdoYXQgc2hlIHNob3VsZCBhbmQgc2hvdWxkIG5vdCBkbyBvbiBoZXIgZmlyc3QgZGF5LiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIk9wZW5pbmc6IGdyZWV0IHlvdXIgZnJpZW5kIGFuZCByZXN0YXRlIHRoZSBzaXR1YXRpb24gaW4gb25lIHNlbnRlbmNlLiIsIkJvZHk6IGdpdmUgMlx1MjAxMzMgcGllY2VzIG9mIGFkdmljZSwgZWFjaCB3aXRoIGEgcmVhc29uIG9yIGV4YW1wbGUgKEZpcnN0XHUyMDI2LCBiZWNhdXNlXHUyMDI2OyBBbm90aGVyIGlkZWEgaXNcdTIwMjYpLiIsIkNsb3Npbmc6IGVuY291cmFnZSB0aGVtIGFuZCB3aXNoIHRoZW0gbHVjay4iLCJUaGUgcHJvbXB0IGFza3MgZm9yIERPIGFuZCBET04nVCAtIHVzZSBib3RoIGhhbHZlcyBvdXQgbG91ZC4gRE86IGFycml2ZSBlYXJseSwgZHJlc3MgYSBsaXR0bGUgZm9ybWFsLCBsaXN0ZW4gYW5kIHRha2Ugbm90ZXMsIGxlYXJuIG5hbWVzLCBhc2sgcXVlc3Rpb25zLiBET04nVDogYmUgb24geW91ciBwaG9uZSwgZ29zc2lwLCBwcmV0ZW5kIHRvIGtub3cgZXZlcnl0aGluZywgb3IgbGVhdmUgZXhhY3RseSBvbiB0aGUgbWludXRlLiBXaXRoIDkwIHNlY29uZHMsIGFkZCBvbmUgY2FsbWluZyBzZW50ZW5jZSBhdCB0aGUgZW5kIC0gbm9ib2R5IGV4cGVjdHMgcGVyZmVjdGlvbiBvbiBkYXkgb25lLiJdLCJwaHJhc2VzIjpbIklmIEkgd2VyZSB5b3UsIEknZFx1MjAyNiIsIllvdSBzaG91bGQgZGVmaW5pdGVseVx1MjAyNiIsIkFub3RoZXIgb3B0aW9uIGlzIHRvXHUyMDI2IiwiVHJ1c3QgbWUsIHlvdSB3b24ndCByZWdyZXQgaXQuIl19LCJzNiI6Ik1hcmlhLCBkbyBub3Qgd29ycnkgXHUyMDE0IGV2ZXJ5Ym9keSBpcyBuZXJ2b3VzIG9uIHRoZSBmaXJzdCBkYXkuIExldCBtZSB0ZWxsIHlvdSB3aGF0IHRvIGRvIGFuZCB3aGF0IG5vdCB0byBkby4gRmlyc3QsIHRoZSB0aGluZ3MgeW91IHNob3VsZCBkby4gQXJyaXZlIGZpZnRlZW4gbWludXRlcyBlYXJseSwgYmVjYXVzZSBiZWluZyBsYXRlIG9uIGRheSBvbmUgbG9va3MgdmVyeSBiYWQuIERyZXNzIGEgbGl0dGxlIG1vcmUgZm9ybWFsIHRoYW4gbm9ybWFsLCBzbWlsZSwgYW5kIHRyeSB0byByZW1lbWJlciBwZW9wbGUncyBuYW1lcy4gV2hlbiBzb21lb25lIGV4cGxhaW5zIHlvdXIgd29yaywgbGlzdGVuIGNhcmVmdWxseSBhbmQgd3JpdGUgbm90ZXMgaW4gYSBzbWFsbCBub3RlYm9vay4gQW5kIGFzayBxdWVzdGlvbnMhIE5vYm9keSB0aGlua3MgeW91IGFyZSBzdHVwaWQgd2hlbiB5b3UgYXNrIFx1MjAxNCB0aGV5IHRoaW5rIHlvdSBhcmUgaW50ZXJlc3RlZC4gQWxzbywgc2F5IHllcyBpZiBjb2xsZWFndWVzIGludml0ZSB5b3UgZm9yIGx1bmNoLCBiZWNhdXNlIGl0IGlzIHRoZSBiZXN0IHdheSB0byBtYWtlIGZyaWVuZHMuIE5vdywgdGhlIHRoaW5ncyB5b3Ugc2hvdWxkIG5vdCBkby4gRG8gbm90IHVzZSB5b3VyIHBob25lIGFsbCB0aGUgdGltZSwgYW5kIGRvIG5vdCB0YWxrIGFib3V0IHlvdXIgb2xkIGJvc3Mgb3IgY29tcGxhaW4gYWJvdXQgYW55dGhpbmcuIERvIG5vdCBwcmV0ZW5kIHRoYXQgeW91IGtub3cgZXZlcnl0aGluZywgYW5kIGRvIG5vdCBsZWF2ZSBhdCBleGFjdGx5IGZpdmUgbydjbG9jayBvbiB0aGUgZmlyc3QgZGF5LiBKdXN0IGJlIGZyaWVuZGx5LCBob25lc3QsIGFuZCBjdXJpb3VzLiBOb2JvZHkgZXhwZWN0cyB5b3UgdG8gYmUgcGVyZmVjdCBcdTIwMTQgdGhleSBvbmx5IGV4cGVjdCB5b3UgdG8gdHJ5LiBHb29kIGx1Y2ssIE1hcmlhISIsInM5IjoiTWFyaWEsIHRha2UgYSBkZWVwIGJyZWF0aCBcdTIwMTQgZmlyc3QtZGF5IG5lcnZlcyBhcmUgY29tcGxldGVseSBub3JtYWwsIGFuZCBob25lc3RseSwgYSBnb29kIGZpcnN0IGltcHJlc3Npb24gaXMgbW9zdGx5IGFib3V0IGF2b2lkaW5nIGEgZmV3IHRyYXBzLiBIZXJlJ3MgbXkgYWR2aWNlLCBkb3MgZmlyc3QuIEFycml2ZSBlYXJseSwgYXJvdW5kIGZpZnRlZW4gbWludXRlcyBcdTIwMTQgaXQgc2lnbmFscyByZWxpYWJpbGl0eSB3aXRob3V0IGxvb2tpbmcgZGVzcGVyYXRlLiBEcmVzcyBzbGlnaHRseSBtb3JlIGZvcm1hbGx5IHRoYW4gdGhlIG9mZmljZSBzdGFuZGFyZCB1bnRpbCB5b3UndmUgcmVhZCB0aGUgY3VsdHVyZS4gQ2FycnkgYSBub3RlYm9vayBhbmQgYWN0dWFsbHkgdXNlIGl0OiB3aGVuIHNvbWVvbmUgd2Fsa3MgeW91IHRocm91Z2ggYSBwcm9jZXNzLCB3cml0aW5nIGl0IGRvd24gbWVhbnMgeW91IHdvbid0IGFzayB0aGUgc2FtZSBxdWVzdGlvbiB0d2ljZSwgYW5kIGl0IHF1aWV0bHkgdGVsbHMgcGVvcGxlIHlvdSB0YWtlIHRoZW0gc2VyaW91c2x5LiBNYWtlIGxlYXJuaW5nIG5hbWVzIHlvdXIgZmlyc3Qtd2VlayBtaXNzaW9uIFx1MjAxNCBwZW9wbGUgbGlnaHQgdXAgd2hlbiBhIG5ld2NvbWVyIHJlbWVtYmVycyB0aGVtIFx1MjAxNCBhbmQgYWNjZXB0IGV2ZXJ5IGNvZmZlZSBvciBsdW5jaCBpbnZpdGF0aW9uLCBiZWNhdXNlIHJlbGF0aW9uc2hpcHMgZ2V0IGJ1aWx0IGluIHRob3NlIHNtYWxsIG1vbWVudHMsIG5vdCBpbiBtZWV0aW5ncy4gTm93IHRoZSBkb24ndHMuIERvbid0IHRvdWNoIHlvdXIgcGhvbmUgYXQgeW91ciBkZXNrIG9uIGRheSBvbmU7IHBlcmNlcHRpb24gbWF0dGVycyBtb3JlIHRoYW4gZmFpcm5lc3MgYXQgdGhpcyBzdGFnZS4gRG9uJ3QgY3JpdGljaXplIHlvdXIgcHJldmlvdXMgZW1wbG95ZXIgb3Igd2FkZSBpbnRvIG9mZmljZSBnb3NzaXAsIG5vIG1hdHRlciBob3cgZnJpZW5kbHkgaXQgc291bmRzIFx1MjAxNCB5b3UgZG9uJ3Qga25vdyB0aGUgYWxsaWFuY2VzIHlldC4gRG9uJ3Qgb3ZlcnNlbGwgeW91cnNlbGYgb3IgYmx1ZmYgd2hlbiB5b3UgZG9uJ3Qga25vdyBzb21ldGhpbmc7IGEgc2ltcGxlIEknbGwgZmluZCBvdXQgaXMgZmFyIG1vcmUgaW1wcmVzc2l2ZS4gQW5kIGRvbid0IHNwcmludCBvdXQgdGhlIGRvb3IgYXQgZml2ZSBzaGFycC4gQWJvdmUgYWxsLCByZW1lbWJlcjogdGhleSBhbHJlYWR5IGNob3NlIHlvdS4gWW91IGRvbid0IG5lZWQgdG8gcHJvdmUgeW91J3JlIHBlcmZlY3Qgb24gZGF5IG9uZSBcdTIwMTQganVzdCBzaG93IHVwIGN1cmlvdXMsIGh1bWJsZSBhbmQgd2FybSwgYW5kIHRoZSByZXN0IGZvbGxvd3MuIn0seyJrIjoidDIiLCJudW0iOjIsInR5cGVFbiI6IlRhbGtpbmcgYWJvdXQgYSBQZXJzb25hbCBFeHBlcmllbmNlIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IlRhbGsgYWJvdXQgYSB0aW1lIHdoZW4geW91IGhhZCB0byBsZWFybiBzb21ldGhpbmcgbmV3LiBNYXliZSB5b3UgY2FuIHRhbGsgYWJvdXQgYSB0aW1lIHdoZW4geW91IGxlYXJuZWQgYSBuZXcgc2tpbGwsIGEgbmV3IGxhbmd1YWdlLCBvciBhIG5ldyBsZXNzb24uIFdoYXQgd2FzIGl0LCB3aGVuIGRpZCBpdCBoYXBwZW4sIGFuZCBob3cgZGlkIGl0IG1ha2UgeW91IGZlZWw\/IiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiQW5zd2VyIGV2ZXJ5IHBhcnQgb2YgdGhlIHF1ZXN0aW9uICh3aGF0IGhhcHBlbmVkIFx1MjAxMyBob3cgaXQgdW5mb2xkZWQgXHUyMDEzIHRoZSBvdXRjb21lIC8gd2h5IGl0IGlzIG1lbW9yYWJsZSkuIiwiVXNlIHBhc3QgdGVuc2VzIGFuZCB0ZWxsIGl0IGluIG9yZGVyOiBUaGlzIGhhcHBlbmVkXHUyMDI2IFx1MjE5MiBUaGVuXHUyMDI2IFx1MjE5MiBJbiB0aGUgZW5kXHUyMDI2IiwiRmluaXNoIHdpdGggYSBmZWVsaW5nIG9yIGEgbGVzc29uIGxlYXJuZWQuIiwiQW5zd2VyIHRoZSB0aHJlZSBwYXJ0czogd2hhdCB5b3UgbGVhcm5lZCAtIHdoZW4gaXQgaGFwcGVuZWQgLSBob3cgaXQgbWFkZSB5b3UgZmVlbCAoc2NhcmVkIGF0IGZpcnN0LCBwcm91ZCBhdCB0aGUgZW5kIHdvcmtzIHdlbGwpLiBLZWVwIG9uZSBzbWFsbCBzdHJ1Z2dsZSBpbiB0aGUgbWlkZGxlOyBsZWFybmluZyBzdG9yaWVzIG5lZWQgYSBkaWZmaWN1bHR5LiJdLCJwaHJhc2VzIjpbIlRoaXMgaGFwcGVuZWQgYWJvdXQgdHdvIHllYXJzIGFnb1x1MjAyNiIsIkF0IGZpcnN0XHUyMDI2LCBidXQgdGhlblx1MjAyNiIsIldoYXQgbWFkZSBpdCB1bmZvcmdldHRhYmxlIHdhc1x1MjAyNiIsIkxvb2tpbmcgYmFjaywgXHUyMDI2Il19LCJzNiI6Ikkgd2FudCB0byB0YWxrIGFib3V0IHRoZSB0aW1lIEkgbGVhcm5lZCB0byBzd2ltLCBiZWNhdXNlIEkgbGVhcm5lZCBpdCB2ZXJ5IGxhdGUgXHUyMDE0IEkgd2FzIHR3ZW50eS1maXZlIHllYXJzIG9sZC4gSXQgaGFwcGVuZWQgdGhyZWUgeWVhcnMgYWdvLiBBbGwgbXkgbGlmZSBJIHdhcyBhZnJhaWQgb2YgZGVlcCB3YXRlciwgYW5kIEkgYWx3YXlzIHNhaWQgbm8gd2hlbiBteSBmcmllbmRzIHdlbnQgdG8gdGhlIHBvb2wgb3IgdGhlIGJlYWNoLiBPbmUgZGF5LCBteSBmcmllbmRzIGludml0ZWQgbWUgb24gYSBib2F0IHRyaXAsIGFuZCBJIGZlbHQgc28gZW1iYXJyYXNzZWQgd2VhcmluZyBhIGxpZmUgamFja2V0IHdoaWxlIGV2ZXJ5b25lIHdhcyBzd2ltbWluZyBhbmQgbGF1Z2hpbmcgaW4gdGhlIHNlYS4gU28gdGhlIG5leHQgd2VlaywgSSBzaWduZWQgdXAgZm9yIGFkdWx0IHN3aW1taW5nIGxlc3NvbnMgYXQgdGhlIGNvbW11bml0eSBwb29sLiBUaGUgZmlyc3QgbGVzc29ucyB3ZXJlIHNjYXJ5LiBJIHJlbWVtYmVyIGhvbGRpbmcgdGhlIHdhbGwgYW5kIGJlaW5nIGFmcmFpZCB0byBwdXQgbXkgZmFjZSBpbiB0aGUgd2F0ZXIuIEJ1dCBteSB0ZWFjaGVyIHdhcyBwYXRpZW50LCBhbmQgc3RlcCBieSBzdGVwLCBJIGxlYXJuZWQgdG8gZmxvYXQsIHRoZW4gdG8ga2ljaywgdGhlbiB0byBzd2ltIHNsb3dseS4gQWZ0ZXIgdGhyZWUgbW9udGhzLCBJIHN3YW0gdHdlbnR5LWZpdmUgbWV0cmVzIGFsb25lIGZvciB0aGUgZmlyc3QgdGltZS4gSSB3YXMgc28gaGFwcHkgdGhhdCBJIGxhdWdoZWQgaW4gdGhlIHdhdGVyISBOb3cgSSBzd2ltIGV2ZXJ5IHdlZWsuIExlYXJuaW5nIHRvIHN3aW0gdGF1Z2h0IG1lIHRoYXQgaXQgaXMgbmV2ZXIgdG9vIGxhdGUgdG8gZmFjZSB5b3VyIGZlYXIuIiwiczkiOiJJJ2QgbGlrZSB0byB0YWxrIGFib3V0IGxlYXJuaW5nIHRvIHN3aW0gYXMgYW4gYWR1bHQsIGJlY2F1c2UgaXQgd2FzIGFzIG11Y2ggYWJvdXQgY29ucXVlcmluZyBmZWFyIGFzIGxlYXJuaW5nIGEgc2tpbGwuIFRoaXMgd2FzIGFib3V0IHRocmVlIHllYXJzIGFnbywgd2hlbiBJIHdhcyB0d2VudHktZml2ZS4gSSdkIGJlZW4gYWZyYWlkIG9mIGRlZXAgd2F0ZXIgbXkgZW50aXJlIGxpZmUgXHUyMDE0IGFzIGEgY2hpbGQgSSBuZXZlciBsZWFybmVkLCBhbmQgYXMgYW4gYWR1bHQgSSBiZWNhbWUgYW4gZXhwZXJ0IGF0IGV4Y3VzZXM6IEknZCBza2lwIHBvb2wgcGFydGllcywgc3RheSBvbiB0aGUgc2FuZCBhdCB0aGUgYmVhY2gsIGFsd2F5cyB3aXRoIGEgam9rZSB0byBoaWRlIHRoZSBlbWJhcnJhc3NtZW50LiBUaGUgdHVybmluZyBwb2ludCB3YXMgYSBib2F0IHRyaXAgd2l0aCBmcmllbmRzIHdoZXJlIEkgc2F0IHN3ZWF0aW5nIGluIGEgbGlmZSBqYWNrZXQgd2hpbGUgZXZlcnlvbmUgZWxzZSBkb3ZlIGhhcHBpbHkgaW50byB0aGUgc2VhLiBTb21ldGhpbmcgYWJvdXQgdGhhdCBtb21lbnQgc3R1bmcgZW5vdWdoIHRoYXQgSSBlbnJvbGxlZCBpbiBhZHVsdCBiZWdpbm5lciBsZXNzb25zIGF0IHRoZSBjb21tdW5pdHkgcG9vbCB0aGUgZm9sbG93aW5nIHdlZWsuIFRob3NlIGZpcnN0IHNlc3Npb25zIHdlcmUgZ2VudWluZWx5IGZyaWdodGVuaW5nIFx1MjAxNCBJIGNsdW5nIHRvIHRoZSB3YWxsLCBoZWFydCBwb3VuZGluZywgdW5hYmxlIHRvIHB1dCBteSBmYWNlIGluIHRoZSB3YXRlciB3aGlsZSBlaWdodC15ZWFyLW9sZHMgdG9ycGVkb2VkIHBhc3QgbWUgaW4gdGhlIG5leHQgbGFuZS4gQnV0IG15IGluc3RydWN0b3IgYnJva2UgZXZlcnl0aGluZyBpbnRvIHRpbnksIGFjaGlldmFibGUgc3RlcHM6IGJsb3cgYnViYmxlcywgdGhlbiBmbG9hdCwgdGhlbiBnbGlkZSwgdGhlbiBraWNrLiBUaHJlZSBtb250aHMgaW4sIEkgc3dhbSBhIGZ1bGwgdHdlbnR5LWZpdmUgbWV0cmVzIHVuYXNzaXN0ZWQsIGFuZCBJIGhvbmVzdGx5IGNhbWUgdXAgbGF1Z2hpbmcgd2l0aCBwdXJlIGpveS4gQmV5b25kIHRoZSBza2lsbCBpdHNlbGYsIHRoYXQgZXhwZXJpZW5jZSByZXdpcmVkIHNvbWV0aGluZyBpbiBtZTogZmVhciBzaHJpbmtzIHdoZW4geW91IGFwcHJvYWNoIGl0IGluIHNtYWxsIHN0ZXBzLiBJJ3ZlIGFwcGxpZWQgdGhhdCBsZXNzb24gdG8gcHVibGljIHNwZWFraW5nLCB0byBqb2IgaW50ZXJ2aWV3cyBcdTIwMTQgdG8gZXZlcnl0aGluZywgcmVhbGx5LiBBbmQgeWVzLCB0aGVzZSBkYXlzIEknbSB0aGUgZmlyc3Qgb25lIGluIHRoZSB3YXRlci4ifSx7ImsiOiJ0MyIsIm51bSI6MywidHlwZUVuIjoiRGVzY3JpYmluZyBhIFNjZW5lIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkRlc2NyaWJlIHNvbWUgdGhpbmdzIHRoYXQgYXJlIGhhcHBlbmluZyBpbiB0aGUgcGljdHVyZSBiZWxvdyBhcyB3ZWxsIGFzIHlvdSBjYW4uIFRoZSBwZXJzb24gd2l0aCB3aG9tIHlvdSBhcmUgc3BlYWtpbmcgY2Fubm90IHNlZSB0aGUgcGljdHVyZS4iLCJpbWciOiJzY2VuZSIsInRpcHMiOnsiYnVsbGV0cyI6WyJGaXJzdCBzZW50ZW5jZTogZ2l2ZSB0aGUgb3ZlcnZpZXcgKHdoZXJlIGl0IGlzLCB3aGF0IHRoZSBhdG1vc3BoZXJlIGlzIGxpa2UpLiIsIkRlc2NyaWJlIDRcdTIwMTM2IGRldGFpbHMgYnkgbG9jYXRpb246IGluIHRoZSBmb3JlZ3JvdW5kIC8gb24gdGhlIGxlZnQgLyBhdCB0aGUgYmFja1x1MjAyNjsgdXNlIHRoZSBwcmVzZW50IGNvbnRpbnVvdXMuIiwiVGhlIGxpc3RlbmVyIENBTk5PVCBzZWUgdGhlIHBpY3R1cmUgXHUyMDE0IGJlIHNwZWNpZmljOyB3aGVuIHVuc3VyZSwgdXNlIHNlZW1zIC8gYXBwZWFycyAvIGxvb2tzIGxpa2UuIiwiQSBiaWcgZmFtaWx5IGJha2luZyBjb29raWVzIGluIHRoZSBraXRjaGVuOiBnbyBpbiBvcmRlciAtIHRoZSBtb3RoZXIgaW4gcmVkIGhvbGRpbmcgYSBtZXRhbCBtaXhpbmcgYm93bCBpbiB0aGUgbWlkZGxlIC0+IHRoZSBsaXR0bGUgZ2lybCBpbiBwaW5rIGxpY2tpbmcgYSBzcG9vbiB3aGlsZSBzdGFuZGluZyBvbiBhIHN0ZXAgc3Rvb2wgLT4gdGhlIGJveSBpbiB0aGUgdGVhbCBzaGlydCBzdGlycmluZyBhIHllbGxvdyBib3dsIC0+IHRoZSB0cmF5IG9mIHJvdW5kIGNvb2tpZXMgb24gdGhlIHRhYmxlIGFuZCB0aGUgYm95IGluIHRoZSBzdHJpcGVkIHNoaXJ0IHJlYWNoaW5nIGZvciBvbmUgLT4gdGhlIGdpcmwgaW4gZ3JlZW4gd2lwaW5nIGEgcGxhdGUgLT4gdGhlIGZhdGhlciBpbiB0aGUgZ3JleSBzd2VhdGVyIGhhbmRpbmcgYSBwbGF0ZSB0byB0aGUgYm95IHNpdHRpbmcgb24gdGhlIGNvdW50ZXIgd2l0aCBibHVlIHJ1YmJlciBnbG92ZXMuIl0sInBocmFzZXMiOlsiSW4gdGhlIGZvcmVncm91bmQsIFx1MjAyNiIsIk9uIHRoZSByaWdodC1oYW5kIHNpZGUsIFx1MjAyNiIsIkl0IGxvb2tzIGxpa2VcdTIwMjYiLCJUaGUgd2hvbGUgcGxhY2UgZmVlbHNcdTIwMjYiXX0sInM2IjoiVGhpcyBwaWN0dXJlIHNob3dzIGEgYmlnIGhhcHB5IGZhbWlseSBiYWtpbmcgY29va2llcyB0b2dldGhlciBpbiBhIGJyaWdodCBraXRjaGVuLiBJbiB0aGUgbWlkZGxlLCB0aGUgbW90aGVyLCB3aG8gd2VhcnMgYSByZWQgc3dlYXRlciBhbmQgaGFzIG9yYW5nZSBoYWlyLCBpcyBob2xkaW5nIGEgbWV0YWwgbWl4aW5nIGJvd2wuIE9uIHRoZSBsZWZ0LCBhIGxpdHRsZSBnaXJsIGluIGEgcGluayBzaGlydCBpcyBzdGFuZGluZyBvbiBhIHNtYWxsIHN0ZXAgc3Rvb2wgYW5kIGxpY2tpbmcgYSBiaWcgc3Bvb24gXHUyMDE0IEkgdGhpbmsgc2hlIGlzIHRhc3RpbmcgdGhlIHN3ZWV0IGNvb2tpZSBkb3VnaC4gTmV4dCB0byBoZXIsIGEgYm95IGluIGEgdGVhbCBzaGlydCBpcyBzdGlycmluZyBzb21ldGhpbmcgaW4gYSB5ZWxsb3cgYm93bCBvbiB0aGUgdGFibGUuIE9uIHRoZSB0YWJsZSwgdGhlcmUgaXMgYWxzbyBhIGJha2luZyB0cmF5IHdpdGggbWFueSByb3VuZCBjb29raWVzLCB0d28gZ2xhc3NlcyBvZiBtaWxrLCBhbmQgc29tZSByZWQgcGxhdGVzLiBBIHlvdW5nZXIgYm95IGluIGEgcHVycGxlIHN0cmlwZWQgc2hpcnQgaXMgcmVhY2hpbmcgb3V0IGFuZCB0YWtpbmcgYSBjb29raWUgZnJvbSB0aGUgdHJheS4gT24gdGhlIHJpZ2h0IHNpZGUsIHRoZSBmYXRoZXIsIGluIGEgZ3JleSBzd2VhdGVyLCBpcyB3YXNoaW5nIGRpc2hlcyBhbmQgZ2l2aW5nIGEgY2xlYW4gcGxhdGUgdG8gYW5vdGhlciBib3ksIHdobyBpcyBzaXR0aW5nIG9uIHRoZSBjb3VudGVyIHdlYXJpbmcgYmlnIGJsdWUgcnViYmVyIGdsb3ZlcyBhbmQgZHJ5aW5nIHRoZSBkaXNoZXMgd2l0aCBhIHRvd2VsLiBBIGdpcmwgaW4gYSBncmVlbiBzaGlydCBpcyBhbHNvIGhlbHBpbmcgdG8gY2xlYW4gYSBwbGF0ZS4gRXZlcnlvbmUgaXMgd29ya2luZyB0b2dldGhlciwgYW5kIHRoZSBraXRjaGVuIGxvb2tzIHdhcm0gYW5kIGZ1bGwgb2YgbG92ZS4iLCJzOSI6IlRoaXMgaXMgYSBoZWFydC13YXJtaW5nIGtpdGNoZW4gc2NlbmUgXHUyMDE0IGEgbGFyZ2UgZmFtaWx5LCB0aHJlZSBhZHVsdHMnIHdvcnRoIG9mIGNoYW9zIGFuZCBhdCBsZWFzdCBzaXggY2hpbGRyZW4sIGFsbCBiYWtpbmcgY29va2llcyB0b2dldGhlci4gQXQgdGhlIGNlbnRyZSBzdGFuZHMgdGhlIG1vdGhlciBpbiBhIGJyaWdodCByZWQgdG9wLCBoZXIgb3JhbmdlIGhhaXIgdW5taXN0YWthYmxlLCBjcmFkbGluZyBhIHN0YWlubGVzcyBtaXhpbmcgYm93bCBhbmQgY2xlYXJseSBkaXJlY3RpbmcgdGhlIG9wZXJhdGlvbi4gVG8gaGVyIGxlZnQsIGEgbGl0dGxlIGdpcmwgaW4gcGluayBoYXMgY2xpbWJlZCBvbnRvIGEgc3RlcCBzdG9vbCBhbmQgaXMgc2hhbWVsZXNzbHkgbGlja2luZyBjb29raWUgZG91Z2ggb2ZmIGEgd29vZGVuIHNwb29uLCB3aGlsZSBiZXNpZGUgaGVyIGEgYm95IGluIGEgdGVhbCBzaGlydCBpbmR1c3RyaW91c2x5IHN0aXJzIGFub3RoZXIgYmF0Y2ggaW4gYSBiaWcgeWVsbG93IGJvd2wuIFRoZSB0YWJsZSBpbiBmcm9udCBvZiB0aGVtIHRlbGxzIHRoZSBzdG9yeSBvZiB0aGUgYWZ0ZXJub29uOiBhIGJha2luZyB0cmF5IGNvdmVyZWQgaW4gbmVhdCByb3dzIG9mIHJvdW5kIGNvb2tpZXMsIGdsYXNzZXMgb2YgbWlsayBzdGFuZGluZyByZWFkeSwgYW5kIGEgc21hbGwgYm95IGluIGEgcHVycGxlLXN0cmlwZWQgc2hpcnQgc3RlYWx0aGlseSByZWFjaGluZyBhY3Jvc3MgdG8gcGluY2ggYSBjb29raWUgd2hpbGUgZXZlcnlvbmUgc2VlbXMgdG9vIGJ1c3kgdG8gbm90aWNlLiBUaGUgcmlnaHQgc2lkZSBvZiB0aGUgcGljdHVyZSBpcyB0aGUgY2xlYW4tdXAgY3JldzogdGhlIGZhdGhlciwgdGFsbCBpbiBoaXMgZ3JleSBzd2VhdGVyLCBpcyBwYXNzaW5nIGEgZnJlc2hseSB3YXNoZWQgcGxhdGUgdXAgdG8gYSBib3kgd2hvJ3MgcGVyY2hlZCBjaGVlcmZ1bGx5IG9uIHRoZSBjb3VudGVydG9wIHdlYXJpbmcgZW5vcm1vdXMgYmx1ZSBydWJiZXIgZ2xvdmVzLCBkcnlpbmcgZGlzaGVzIHdpdGggYSB0b3dlbCwgd2hpbGUgYSBnaXJsIGluIGdyZWVuIHNjcnVicyBhbm90aGVyIHBsYXRlIGF0IHRoZSBzaW5rIGFuZCBhIGdyZWVuIHRlYSB0b3dlbCBoYW5ncyBmcm9tIHRoZSByYWlsIGJlc2lkZSB0aGVtLiBUaGUgd2hvbGUgc2NlbmUgcmFkaWF0ZXMgdGVhbXdvcmsgYW5kIHdhcm10aCBcdTIwMTQgbWVzc3ksIG5vaXN5LCBhbmQgZXhhY3RseSB3aGF0IGEgZmFtaWx5IGJha2luZyBkYXkgc2hvdWxkIGxvb2sgbGlrZS4ifSx7ImsiOiJ0NCIsIm51bSI6NCwidHlwZUVuIjoiTWFraW5nIFByZWRpY3Rpb25zIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkluIHRoaXMgcGljdHVyZSwgd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBtb3N0IHByb2JhYmx5IGhhcHBlbiBuZXh0PyIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkVhY2ggcHJlZGljdGlvbiA9IHdpbGwgLyBiZSBnb2luZyB0byAvIHdpbGwgcHJvYmFibHkgKyBhIFJFQVNPTiBiYXNlZCBvbiBhIGRldGFpbCBpbiB0aGUgcGljdHVyZS4iLCJNYWtlIDNcdTIwMTM0IHByZWRpY3Rpb25zIGFib3V0IGRpZmZlcmVudCBwZW9wbGUgXHUyMDE0IGRvbid0IHN0b3AgYXQgb25lIGlkZWEuIiwiRmluaXNoIHdpdGggb25lIG92ZXJhbGwgcHJlZGljdGlvbiBmb3IgdGhlIHdob2xlIHNjZW5lLiIsIlNhbWUga2l0Y2hlbiBhcyBUYXNrIDMgLSBub3cgcHJlZGljdDogdGhlIGJveSBpbiBzdHJpcGVzIHdpbGwgZ2V0IGNhdWdodCBzbmVha2luZyB0aGUgY29va2llIChhbmQgcHJvYmFibHkgZm9yZ2l2ZW4pLCB0aGUgZnJlc2ggZG91Z2ggd2lsbCBnbyBpbnRvIHRoZSBvdmVuLCB0aGUgZ2lybCB3aWxsIGZpbmlzaCBsaWNraW5nIHRoZSBzcG9vbiBhbmQgYXNrIGZvciBtb3JlLCB0aGUgZGlzaGVzIHdpbGwgYmUgZG9uZSBhbmQgdGhlIGNvdW50ZXIgYm95IHdpbGwgaG9wIGRvd24sIGFuZCB0aGUgZmFtaWx5IHdpbGwgc2l0IGRvd24gdG9nZXRoZXIgdG8gZWF0IHRoZSBjb29raWVzIHdpdGggbWlsay4iXSwicGhyYXNlcyI6WyJcdTIwMjZpcyBhYm91dCB0b1x1MjAyNiIsIkhlJ2xsIG1vc3QgbGlrZWx5XHUyMDI2IiwiSnVkZ2luZyBieVx1MjAyNiwgSSBleHBlY3RcdTIwMjYiLCJXaXRoaW4gbWludXRlcywgXHUyMDI2Il19LCJzNiI6IkkgdGhpbmsgdGhlIG5leHQgbWludXRlcyBpbiB0aGlzIGtpdGNoZW4gd2lsbCBiZSB2ZXJ5IGZ1bi4gRmlyc3QsIHNvbWVvbmUgd2lsbCBjYXRjaCB0aGUgYm95IGluIHRoZSBzdHJpcGVkIHNoaXJ0IHRha2luZyBhIGNvb2tpZSBmcm9tIHRoZSB0cmF5IFx1MjAxNCBwcm9iYWJseSB0aGUgbW90aGVyIHdpbGwgc2VlIGhpbSwgbGF1Z2gsIGFuZCBzYXkgd2FpdCBmb3IgZXZlcnlvbmUuIFNlY29uZCwgdGhlIG1vdGhlciB3aWxsIHBvdXIgdGhlIG5ldyBkb3VnaCBmcm9tIGhlciBtZXRhbCBib3dsIG9udG8gYSBiYWtpbmcgdHJheSwgYW5kIHRoZSBmcmVzaCBjb29raWVzIHdpbGwgZ28gaW50byB0aGUgb3Zlbi4gVGhlIGxpdHRsZSBnaXJsIGluIHBpbmsgd2lsbCBmaW5pc2ggbGlja2luZyBoZXIgc3Bvb24gYW5kIGFzayBmb3IgYW5vdGhlciBvbmUgd2l0aCBtb3JlIGRvdWdoLiBUaGUgYm95IGluIHRoZSB0ZWFsIHNoaXJ0IHdpbGwgZmluaXNoIHN0aXJyaW5nLCBhbmQgaGlzIGFybXMgd2lsbCBiZSB0aXJlZC4gT24gdGhlIHJpZ2h0IHNpZGUsIHRoZSBmYXRoZXIgYW5kIHRoZSBib3kgd2l0aCB0aGUgYmx1ZSBnbG92ZXMgd2lsbCBmaW5pc2ggd2FzaGluZyBhbmQgZHJ5aW5nIGFsbCB0aGUgZGlzaGVzLCBhbmQgdGhlbiB0aGUgYm95IHdpbGwganVtcCBkb3duIGZyb20gdGhlIGNvdW50ZXIuIEZpbmFsbHksIHdoZW4gdGhlIG5ldyBjb29raWVzIGFyZSByZWFkeSBhbmQgdGhlIGtpdGNoZW4gc21lbGxzIHdvbmRlcmZ1bCwgdGhlIHdob2xlIGZhbWlseSB3aWxsIHNpdCBhcm91bmQgdGhlIHRhYmxlLCBkcmluayB0aGUgbWlsaywgZWF0IHRoZSB3YXJtIGNvb2tpZXMgdG9nZXRoZXIsIGFuZCB0YWxrIGFib3V0IHRoZWlyIGRheS4gSXQgd2lsbCBiZSBhIHBlcmZlY3QgZmFtaWx5IGFmdGVybm9vbi4iLCJzOSI6IlRoZSBuZXh0IGZldyBtaW51dGVzIGluIHRoaXMga2l0Y2hlbiBwcmFjdGljYWxseSB3cml0ZSB0aGVtc2VsdmVzLiBUaGF0IGJveSBpbiB0aGUgc3RyaXBlZCBzaGlydCBpcyBhYm91dCB0byBiZSBjYXVnaHQgcmVkLWhhbmRlZCBcdTIwMTQgdGhlIG1vdGhlciB3aWxsIHNwb3QgdGhlIG1pc3NpbmcgY29va2llLCBwdXQgb24gYSBzdGVybiBmYWNlIGZvciByb3VnaGx5IHR3byBzZWNvbmRzLCBhbmQgdGhlbiBsZXQgaGltIGtlZXAgaXQsIGJlY2F1c2UgdGhhdCdzIGhvdyBmYW1pbHkgYmFraW5nIGFsd2F5cyBnb2VzLiBUaGUgYmF0Y2ggb2YgZG91Z2ggc2hlJ3MgaG9sZGluZyB3aWxsIGJlIHNwb29uZWQgb250byBhIHRyYXkgYW5kIHNsaWQgaW50byB0aGUgb3Zlbiwgd2hpY2ggbWVhbnMgd2l0aGluIG1pbnV0ZXMgdGhlIHdob2xlIGtpdGNoZW4gd2lsbCBmaWxsIHdpdGggdGhhdCBpcnJlc2lzdGlibGUgd2FybS1jb29raWUgc21lbGwsIGRyYXdpbmcgZXZlcnkgY2hpbGQgaW4gdGhlIGhvdXNlIGJhY2sgbGlrZSBhIG1hZ25ldC4gVGhlIGxpdHRsZSBnaXJsIG9uIHRoZSBzdG9vbCB3aWxsIHNjcmFwZSBoZXIgc3Bvb24gYWJzb2x1dGVseSBjbGVhbiBhbmQgaW1tZWRpYXRlbHkgbG9iYnkgZm9yIGEgcmVmaWxsLCB3aGlsZSB0aGUgYm95IHN0aXJyaW5nIHRoZSB5ZWxsb3cgYm93bCB3aWxsIHByb3VkbHkgYW5ub3VuY2UgdGhhdCBoaXMgZG91Z2ggaXMgcmVhZHksIHdoZXRoZXIgaXQgaXMgb3Igbm90LiBPdmVyIGF0IHRoZSBzaW5rLCB0aGUgZmF0aGVyIGFuZCB0aGUgYm95IGluIHRoZSBnaWFudCBibHVlIGdsb3ZlcyB3aWxsIHdvcmsgdGhyb3VnaCB0aGUgbGFzdCBvZiB0aGUgZGlzaGVzLCB0aGUgYm95IHdpbGwgaG9wIGRvd24gZnJvbSB0aGUgY291bnRlciBcdTIwMTQgcHJvYmFibHkgc3RpbGwgd2VhcmluZyB0aGUgZ2xvdmVzIFx1MjAxNCBhbmQgdGhlIGdpcmwgaW4gZ3JlZW4gd2lsbCBoYW5nIHVwIGhlciB0b3dlbC4gQW5kIHRoZW4gY29tZXMgdGhlIGZpbmFsZTogdGhlIGZhbWlseSB3aWxsIGdhdGhlciBhcm91bmQgdGhlIHRhYmxlLCBwb3VyIHRoZSBtaWxrLCBzaGFyZSBvdXQgdGhlIHdhcm0gY29va2llcywgYW5kIGFyZ3VlIGhhcHBpbHkgYWJvdXQgd2hpY2ggYmF0Y2ggdHVybmVkIG91dCBiZXN0LiBJZiB0aGUgcGFyZW50cyBhcmUgd2lzZSwgdGhleSdsbCBhbHNvIHRha2UgYSBwaG90byBcdTIwMTQgdGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGFmdGVybm9vbiBldmVyeW9uZSByZW1lbWJlcnMgdHdlbnR5IHllYXJzIGxhdGVyLiJ9LHsiayI6InQ1IiwibnVtIjo1LCJ0eXBlRW4iOiJDb21wYXJpbmcgYW5kIFBlcnN1YWRpbmciLCJwaGFzZWQiOnRydWUsImNob29zZSI6eyJwcmVwIjo2MCwic2l0dWF0aW9uIjoiWW91IGFyZSBhIHRlYWNoZXIgYXQgdGhlIGxvY2FsIGVsZW1lbnRhcnkgc2Nob29sLiBZb3UgbmVlZCB0byBwbGFuIGEgZmllbGQgdHJpcCBmb3IgdGhlIGtpZHMuIFRoZXJlIGFyZSB0d28gY2hvaWNlcy4gVXNpbmcgdGhlIHBpY3R1cmVzIGFuZCBpbmZvcm1hdGlvbiwgY2hvb3NlIHRoZSBvcHRpb24gdGhhdCB5b3UgcHJlZmVyLiBJbiB0aGUgbmV4dCBwYXJ0LCB5b3Ugd2lsbCBuZWVkIHRvIHBlcnN1YWRlIGEgY28td29ya2VyIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBjaG9pY2UuIiwibm90ZSI6IklmIHlvdSBkbyBub3QgY2hvb3NlLCB0aGUgY29tcHV0ZXIgd2lsbCBjaG9vc2Ugb25lIGZvciB5b3UuIFlvdSBkbyBub3QgbmVlZCB0byBzcGVhayBmb3IgdGhpcyBwYXJ0LiIsIm9wdGlvbnMiOlt7InRpdGxlIjoiVHJhaW4gUmlkZSIsImltZyI6Im9wdEEiLCJidWxsZXRzIjpbIlJpZGUgYSAxMDAteWVhci1vbGQgdHJhaW4iLCJMZWFybiBhYm91dCB0aGUgaGlzdG9yeSBhbmQgZnV0dXJlIG9mIHJhaWx3YXkgdHJhbnNwb3J0YXRpb24iLCIkNSBwZXIgY2hpbGQiXX0seyJ0aXRsZSI6IkFxdWFyaXVtIEV4cGxvcmVyIiwiaW1nIjoib3B0QiIsImJ1bGxldHMiOlsiSnVzdCBvcGVuZWQgaW4geW91ciBjaXR5IGxhc3QgbW9udGgiLCJMZWFybiBhYm91dCBzZWEgY3JlYXR1cmVzIGFuZCBtYXJpbmUgZWNvc3lzdGVtcyIsIiQxMCBwZXIgY2hpbGQsIGluY2x1ZGVzIGx1bmNoIl19XX0sInNwZWFrIjp7InByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3VyIGNvLXdvcmtlciBpcyBzdWdnZXN0aW5nIGEgZGlmZmVyZW50IGZpZWxkIHRyaXAgKHNob3duIGJlbG93KS4gUGVyc3VhZGUgeW91ciBjby13b3JrZXIgdGhhdCB0aGUgdHJpcCB5b3UgY2hvc2UgaXMgdGhlIGJldHRlciBjaG9pY2UgYnkgY29tcGFyaW5nIHRoZSB0d28uIiwib3RoZXJMYWJlbCI6IllvdXIgQ28tV29ya2VyJ3MgQ2hvaWNlIiwib3RoZXIiOnsidGl0bGUiOiJDaXR5IEhhbGwgVG91ciIsImltZyI6Im9wdE90aGVyIiwiYnVsbGV0cyI6WyJTZWUgZ292ZXJubWVudCBvZmZpY2VycyBhdCB3b3JrIiwiU2l0IGFuZCB3YXRjaCBhIGNpdHkgY291bmNpbCBtZWV0aW5nIiwiRnJlZSBmb3IgZXZlcnlvbmUiXX19LCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RydWN0dXJlOiBhY2tub3dsZWRnZSB0aGUgb3RoZXIgcGVyc29uJ3MgY2hvaWNlIFx1MjE5MiBnaXZlIDJcdTIwMTMzIGFkdmFudGFnZXMgb2YgeW91cnMgKGRpcmVjdCBjb21wYXJpc29uKSBcdTIxOTIgd3JhcCB1cC4iLCJDb21wYXJlIHVzaW5nIHRoZSBudW1iZXJzIG9uIHRoZSBjYXJkczogcHJpY2UsIGR1cmF0aW9uLCBjYXBhY2l0eSwgZXhwZXJpZW5jZS4iLCJZb3UgZG8gTk9UIG5lZWQgdG8gc3BlYWsgZHVyaW5nIHRoZSBjaG9vc2luZyBzdGVwIFx1MjAxNCBqdXN0IGNsaWNrIGFuIG9wdGlvbi4iLCJUaGUgc2FtcGxlcyBiZWxvdyBjaG9vc2UgdGhlIEFxdWFyaXVtIEV4cGxvcmVyIChicmFuZCBuZXcsIGhhbmRzLW9uIG1hcmluZSBsZWFybmluZywgJDEwIGluY2x1ZGluZyBsdW5jaCA9IGdvb2QgdmFsdWUpLiBUaGUgY28td29ya2VyJ3MgY2hvaWNlIGlzIHRoZSBmcmVlIENpdHkgSGFsbCB0b3VyIC0gYWNrbm93bGVkZ2UgdGhlIHByaWNlLCB0aGVuIGFyZ3VlIGVsZW1lbnRhcnkga2lkcyB3aWxsIGJlIGJvcmVkIHNpdHRpbmcgdGhyb3VnaCBhIGNvdW5jaWwgbWVldGluZy4gSWYgeW91IHByZWZlciB0aGUgVHJhaW4gUmlkZSwgc3RyZXNzIHRoZSAkNSBwcmljZSBhbmQgdGhlIGV4Y2l0ZW1lbnQgb2YgYSByZWFsIGhpc3RvcmljIHRyYWluLiJdLCJwaHJhc2VzIjpbIkkgc2VlIHdoeSB5b3UgbGlrZVx1MjAyNiwgYnV0XHUyMDI2IiwiQ29tcGFyZWQgdG9cdTIwMjYsIHRoaXMgb25lXHUyMDI2IiwiSXQncyBiZXR0ZXIgdmFsdWU6IFx1MjAyNiB2ZXJzdXMgXHUyMDI2IiwiSWYgdGhlIGdvYWwgaXNcdTIwMjYsIHRoZSBjaG9pY2UgaXMgY2xlYXIuIl19LCJzNiI6Ikkga25vdyB0aGUgQ2l0eSBIYWxsIHRvdXIgaXMgZnJlZSwgYW5kIEkgdW5kZXJzdGFuZCB5b3Ugd2FudCB0byBzYXZlIG1vbmV5LCBidXQgcGxlYXNlIHRoaW5rIGFib3V0IHRoZSBjaGlsZHJlbiBmaXJzdC4gSSByZWFsbHkgYmVsaWV2ZSB0aGUgYXF1YXJpdW0gaXMgdGhlIGJldHRlciBmaWVsZCB0cmlwLiBGaXJzdCwgdGhpbmsgYWJvdXQgd2hhdCBleGNpdGVzIGFuIGVpZ2h0LXllYXItb2xkIGNoaWxkLiBBdCB0aGUgYXF1YXJpdW0sIHRoZXkgY2FuIHNlZSBzaGFya3MsIGNvbG91cmZ1bCBmaXNoLCBhbmQgbWF5YmUgdG91Y2ggYSBzdGFyZmlzaC4gVGhleSB3aWxsIGxlYXJuIGFib3V0IHNlYSBjcmVhdHVyZXMgYW5kIHRoZSBvY2VhbiBpbiBhIGZ1biwgaGFuZHMtb24gd2F5LiBBdCBDaXR5IEhhbGwsIHRoZSBjaGlsZHJlbiBtdXN0IHNpdCBxdWlldGx5IGFuZCB3YXRjaCBhIGNvdW5jaWwgbWVldGluZy4gQWR1bHRzIHRhbGtpbmcgYWJvdXQgY2l0eSBidWRnZXRzIGZvciBvbmUgaG91cj8gVGhlIGtpZHMgd2lsbCBmYWxsIGFzbGVlcCEgU2Vjb25kLCB0aGUgYXF1YXJpdW0ganVzdCBvcGVuZWQgbGFzdCBtb250aCwgc28gaXQgaXMgbmV3IGFuZCBleGNpdGluZywgYW5kIG5vIGNoaWxkIGhhcyBzZWVuIGl0IHlldC4gVGhpcmQsIHRoZSB0ZW4gZG9sbGFycyBpbmNsdWRlcyBsdW5jaCwgc28gcGFyZW50cyBkbyBub3QgbmVlZCB0byBwcmVwYXJlIGZvb2QsIGFuZCBpdCBpcyBhY3R1YWxseSBnb29kIHZhbHVlLiBGcmVlIGlzIG5pY2UsIGJ1dCBhIGJvcmluZyB0cmlwIGlzIGEgd2FzdGVkIGRheS4gQSBncmVhdCBzY2hvb2wgdHJpcCBzaG91bGQgbWFrZSBjaGlsZHJlbiBsb3ZlIGxlYXJuaW5nLiBTbyBsZXQncyBjaG9vc2UgdGhlIGFxdWFyaXVtIFx1MjAxNCB0aGUga2lkcyB3aWxsIHRhbGsgYWJvdXQgaXQgZm9yIHdlZWtzISIsInM5IjoiSSBoZWFyIHlvdSBvbiB0aGUgQ2l0eSBIYWxsIHRvdXIgXHUyMDE0IGZyZWUgaXMgYSB2ZXJ5IHBlcnN1YXNpdmUgbnVtYmVyIHdoZW4gd2UncmUgY291bnRpbmcgZXZlcnkgZG9sbGFyLiBCdXQgbGV0IG1lIG1ha2UgdGhlIGNhc2UgZm9yIHRoZSBBcXVhcml1bSBFeHBsb3JlciwgYmVjYXVzZSBJIHRoaW5rIGl0IHdpbnMgb24gZXZlcnl0aGluZyB0aGF0IGFjdHVhbGx5IG1hdHRlcnMgZm9yIGEgZmllbGQgdHJpcC4gU3RhcnQgd2l0aCBlbmdhZ2VtZW50OiBvdXIgc3R1ZGVudHMgYXJlIGVpZ2h0IGFuZCBuaW5lIHllYXJzIG9sZC4gQXQgdGhlIGFxdWFyaXVtIHRoZXknbGwgcHJlc3MgdGhlaXIgbm9zZXMgYWdhaW5zdCBhIHNoYXJrIHRhbmssIHdhdGNoIGFuIG9jdG9wdXMgY2hhbmdlIGNvbG91ciwgYW5kIGxlYXJuIGhvdyBtYXJpbmUgZWNvc3lzdGVtcyB3b3JrIFx1MjAxNCB0aGF0J3Mgc2NpZW5jZSBtYWRlIHVuZm9yZ2V0dGFibGUuIEF0IENpdHkgSGFsbCwgdGhlIHBsYW4gaXMgdG8gc2l0IHN0aWxsIGFuZCBvYnNlcnZlIGEgY291bmNpbCBtZWV0aW5nLiBZb3UgYW5kIEkgc3RydWdnbGUgdG8gc3RheSBhd2FrZSB0aHJvdWdoIGJ1ZGdldCBkaXNjdXNzaW9uczsgaW1hZ2luZSB0aGlydHkgdGhpcmQtZ3JhZGVycyBvbiB0aG9zZSBiZW5jaGVzLiBXZSdkIHNwZW5kIHRoZSB3aG9sZSB0aW1lIHNodXNoaW5nIHRoZW0sIGFuZCB0aGVpciBsYXN0aW5nIG1lbW9yeSBvZiBsb2NhbCBnb3Zlcm5tZW50IHdvdWxkIGJlIGJvcmVkb20uIFNlY29uZCwgdGltaW5nOiB0aGUgYXF1YXJpdW0gb3BlbmVkIGp1c3QgbGFzdCBtb250aCwgc28gaXQncyBnZW51aW5lbHkgbm92ZWwgXHUyMDE0IGZvciBtYW55IGtpZHMgdGhpcyB3b3VsZCBiZSB0aGVpciBmaXJzdCB2aXNpdCBldmVyLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGV4cGVyaWVuY2UgZmllbGQgdHJpcHMgZXhpc3QgZm9yLiBBbmQgdGhpcmQsIHRoZSB2YWx1ZSBxdWVzdGlvbiBpc24ndCBhcyBsb3BzaWRlZCBhcyBpdCBsb29rczogdGVuIGRvbGxhcnMgaW5jbHVkZXMgbHVuY2gsIHdoaWNoIHNhdmVzIGV2ZXJ5IGZhbWlseSB0aGUgY29zdCBhbmQgaGFzc2xlIG9mIHBhY2tpbmcgZm9vZCwgc28gdGhlIHJlYWwgZ2FwIGJldHdlZW4gdGhlIHRyaXBzIGlzIHRpbnkuIEZyZWUgZG9lc24ndCBoZWxwIHVzIGlmIHRoZSBkYXkgdGVhY2hlcyBub3RoaW5nIGFuZCB0aGUga2lkcyBjb21lIGhvbWUgZ3J1bXB5LiBMZXQncyBnaXZlIHRoZW0gdGhlIHNoYXJrcyBcdTIwMTQgYW5kIG1heWJlIHNhdmUgQ2l0eSBIYWxsIGZvciB0aGUgb2xkZXIgZ3JhZGVzIGR1cmluZyBlbGVjdGlvbiBzZWFzb24sIHdoZW4gaXQgYWN0dWFsbHkgY29ubmVjdHMgdG8gdGhlaXIgY3VycmljdWx1bS4ifSx7ImsiOiJ0NiIsIm51bSI6NiwidHlwZUVuIjoiRGVhbGluZyB3aXRoIGEgRGlmZmljdWx0IFNpdHVhdGlvbiIsInByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3UgYXJlIHRha2luZyBhIGNvbGxlZ2UgY291cnNlIGFuZCBoYXZlIGEgZ3JvdXAgcHJvamVjdCBkdWUgbmV4dCB3ZWVrLiBPbmUgb2YgeW91ciBncm91cCBtZW1iZXJzLCBBbmR5LCBoYXMgbm90IGNvbXBsZXRlZCBoaXMgcGFydCBvZiB0aGUgcHJvamVjdCBiZWNhdXNlIGhlIGhhcyBiZWVuIGJ1c3kgYXQgd29yay4gSGUgd2FudHMgdG8gYXNrIGZvciBhbiBleHRlbnNpb24uIFRoZSBpbnN0cnVjdG9yLCBNcy4gUHJhdHQsIHNhaWQgdGhhdCBzaGUgd291bGQgb25seSBnaXZlIGV4dGVuc2lvbnMgZm9yIHNwZWNpYWwgc2l0dWF0aW9ucy4iLCJjaG9vc2VPbmUiOlsiVGFsayB0byBBbmR5LiBFeHBsYWluIHdoeSBoZSBtdXN0IGNvbXBsZXRlIGhpcyB3b3JrLiIsIlRhbGsgdG8gTXMuIFByYXR0LiBFeHBsYWluIHdoeSB5b3VyIGdyb3VwIHNob3VsZCBnZXQgYW4gZXh0ZW5zaW9uLiJdLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJQaWNrIE9ORSBvcHRpb24gKEVJVEhFUiBvciBPUikgaW1tZWRpYXRlbHkgXHUyMDE0IGRvbid0IHdhc3RlIHRpbWUgZGVjaWRpbmcuIiwiU3RydWN0dXJlOiBvcGVuIHBvbGl0ZWx5IFx1MjE5MiBleHBsYWluIHlvdXIgcmVhc29ucy9ldmlkZW5jZSBcdTIxOTIgcHJvcG9zZSBhIHNvbHV0aW9uIFx1MjE5MiBzbW9vdGggdGhpbmdzIG92ZXIuIiwiU3RheSBjYWxtIGFuZCByZXNwZWN0ZnVsIFx1MjAxNCBob3cgeW91IGhhbmRsZSB0aGUgc2l0dWF0aW9uIGlzIHBhcnQgb2Ygd2hhdCdzIGJlaW5nIHJhdGVkIChMaXN0ZW5hYmlsaXR5KS4iLCJUaGUgc2FtcGxlcyBjaG9vc2Ugb3B0aW9uIDEgKHRhbGsgdG8gQW5keSBcdTIwMTQgYmVpbmcgYnVzeSBhdCB3b3JrIGlzIG5vdCBhIHNwZWNpYWwgc2l0dWF0aW9uLCBzbyBhbiBleHRlbnNpb24gd2lsbCBsaWtlbHkgYmUgcmVmdXNlZCBhbmQgdGhlIGdyb3VwIG11c3QgcHJvdGVjdCBpdHMgZ3JhZGUpLiBTdHJ1Y3R1cmU6IGZyaWVuZGx5IGJ1dCBob25lc3Qgb3BlbmluZyBcdTIxOTIgdGhlIGRlYWRsaW5lIGlzIHJlYWwgYW5kIE1zLiBQcmF0dCdzIHBvbGljeSBpcyBzdHJpY3QgXHUyMTkyIHRoZSBpbXBhY3Qgb24gdGhlIHdob2xlIGdyb3VwIFx1MjE5MiBvZmZlciBjb25jcmV0ZSBoZWxwIChzcGxpdCBoaXMgcGFydCwgZXZlbmluZyB3b3JrIHNlc3Npb24pIFx1MjE5MiBmaXJtIG1pbmktZGVhZGxpbmUuIElmIHlvdSBjaG9vc2Ugb3B0aW9uIDI6IGZyYW1lIHRoZSByZXF1ZXN0IGFyb3VuZCB0aGUgd2hvbGUgZ3JvdXAncyBjaXJjdW1zdGFuY2VzLCBiZSBzcGVjaWZpYywgYW5kIHByb3Bvc2UgYSBzaG9ydCBleHRlbnNpb24gKDItMyBkYXlzKSwgbm90IGFuIG9wZW4tZW5kZWQgb25lLiJdLCJwaHJhc2VzIjpbIkNvdWxkIEkganVtcCBpbiBmb3IgYSBtb21lbnQ\/IiwiSSB1bmRlcnN0YW5kIHlvdXIgY29uY2VybiwgYnV0XHUyMDI2IiwiSG93IGFib3V0IHdlXHUyMDI2PyIsIkknbGwgdGFrZSByZXNwb25zaWJpbGl0eSBmb3IgdGhpcy4iXX0sInM2IjoiQW5keSwgY2FuIHdlIHRhbGsgZm9yIGEgbWludXRlPyBJdCBpcyBhYm91dCB5b3VyIHBhcnQgb2YgdGhlIGdyb3VwIHByb2plY3QuIEkga25vdyB5b3UgaGF2ZSBiZWVuIHZlcnkgYnVzeSBhdCB3b3JrLCBhbmQgSSBhbSBub3QgYW5ncnkgXHUyMDE0IGxpZmUgaXMgaGFyZCBzb21ldGltZXMuIEJ1dCBJIGhhdmUgdG8gYmUgaG9uZXN0IHdpdGggeW91LiBUaGUgcHJvamVjdCBpcyBkdWUgbmV4dCB3ZWVrLCBhbmQgTXMuIFByYXR0IHNhaWQgdmVyeSBjbGVhcmx5IHRoYXQgc2hlIG9ubHkgZ2l2ZXMgZXh0ZW5zaW9ucyBmb3Igc3BlY2lhbCBzaXR1YXRpb25zLCBsaWtlIHNpY2tuZXNzIG9yIGEgZmFtaWx5IGVtZXJnZW5jeS4gQmVpbmcgYnVzeSBhdCB3b3JrIGlzIG5vdCBzcGVjaWFsIGZvciBoZXIgXHUyMDE0IHNoZSB3aWxsIHNheSBubywgYW5kIHRoZW4gdGhlIHdob2xlIGdyb3VwIHdpbGwgbG9zZSBtYXJrcyBiZWNhdXNlIG9mIG9uZSBtaXNzaW5nIHBhcnQuIFRoYXQgaXMgbm90IGZhaXIgdG8gdGhlIG90aGVyIHRocmVlIG9mIHVzIHdobyBmaW5pc2hlZCBvdXIgcGFydHMuIFNvIHBsZWFzZSwgbGV0J3MgZmluZCBhIHNvbHV0aW9uIHRvZ2V0aGVyLiBZb3VyIHBhcnQgaXMgdGhlIHJlc2VhcmNoIHN1bW1hcnkgXHUyMDE0IGl0IGlzIGFib3V0IHNpeCBwYWdlcy4gQ2FuIHlvdSBmaW5pc2ggaXQgYnkgRnJpZGF5PyBJIGNhbiBoZWxwIHlvdSBvbiBUaHVyc2RheSBldmVuaW5nIGFmdGVyIHlvdXIgc2hpZnQuIFdlIGNhbiBhbHNvIGdpdmUgb25lIHNtYWxsIHNlY3Rpb24gdG8gS2V2aW4sIGJlY2F1c2UgaGlzIHBhcnQgd2FzIHNob3J0LiBCdXQgd2UgbmVlZCB5b3VyIHByb21pc2UgdG9kYXksIEFuZHkuIElmIHdlIGFsbCB3b3JrIHRvZ2V0aGVyIHRoaXMgd2Vlaywgd2UgY2FuIHN0aWxsIGdldCBhIGdvb2QgZ3JhZGUuIENhbiBJIGNvdW50IG9uIHlvdT8iLCJzOSI6IkFuZHksIGxldCdzIGdyYWIgYSBjb2ZmZWUgXHUyMDE0IHdlIG5lZWQgdG8gdGFsayBhYm91dCB0aGUgcHJvamVjdCwgYW5kIEknZCByYXRoZXIgZG8gaXQgc3RyYWlnaHQgdGhhbiBsZXQgaXQgZ2V0IGF3a3dhcmQuIEkga25vdyB3b3JrIGhhcyBiZWVuIGNydXNoaW5nIHlvdSBsYXRlbHksIGFuZCBob25lc3RseSwgbm9ib2R5IGluIHRoZSBncm91cCB0aGlua3MgeW91J3JlIGxhenkuIEJ1dCBoZXJlJ3MgdGhlIGhhcmQgdHJ1dGg6IGFza2luZyBNcy4gUHJhdHQgZm9yIGFuIGV4dGVuc2lvbiBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZGVhZCBlbmQuIFNoZSB0b2xkIHRoZSB3aG9sZSBjbGFzcyBzaGUgb25seSBncmFudHMgdGhlbSBmb3Igc3BlY2lhbCBzaXR1YXRpb25zIFx1MjAxNCBpbGxuZXNzLCBmYW1pbHkgZW1lcmdlbmNpZXMsIHRoYXQga2luZCBvZiB0aGluZy4gQSBoZWF2eSBzaGlmdCBzY2hlZHVsZSwgZmFpcmx5IG9yIG5vdCwgd29uJ3QgcXVhbGlmeTsgc2hlJ2xsIHJlZnVzZSwgYW5kIHdlJ2xsIGhhdmUgYnVybmVkIHR3byBkYXlzIHdhaXRpbmcgZm9yIGFuIGFuc3dlciBpbnN0ZWFkIG9mIHdvcmtpbmcuIEFuZCBpZiB5b3VyIHNlY3Rpb24gaXMgbWlzc2luZywgYWxsIGZvdXIgb2YgdXMgdGFrZSB0aGUgaGl0IFx1MjAxNCB0aGUgcnVicmljIGdyYWRlcyB0aGUgcHJvamVjdCBhcyBhIHdob2xlLCBzbyBteSBncmFkZSwgS2V2aW4ncyBhbmQgU2FyYWgncyBhcmUgcmlkaW5nIG9uIHlvdXIgc2l4IHBhZ2VzIHRvby4gSSBkb24ndCB0aGluayB0aGF0J3MgdGhlIHBvc2l0aW9uIHlvdSB3YW50IHVzIGluLCBhbmQgSSBkb24ndCB0aGluayBpdCdzIHRoZSBwb3NpdGlvbiB5b3Ugd2FudCB0byBiZSBpbi4gU28gaGVyZSdzIG15IHByb3Bvc2FsOiB3ZSBzaHJpbmsgYW5kIHNoYXJlLiBLZXZpbiBjYW4gYWJzb3JiIHRoZSBkYXRhIHRhYmxlIHNpbmNlIGhpcyBwYXJ0IGNhbWUgaW4gc2hvcnQsIEknbGwgdGFrZSB5b3VyIGJpYmxpb2dyYXBoeSB0b25pZ2h0LCBhbmQgdGhhdCBsZWF2ZXMgeW91IHRoZSByZXNlYXJjaCBzdW1tYXJ5IFx1MjAxNCBtYXliZSBmb3VyIHBhZ2VzLiBDb3VsZCB5b3UgY29tbWl0IHRvIGEgZHJhZnQgYnkgRnJpZGF5PyBJJ2xsIHNpdCB3aXRoIHlvdSBUaHVyc2RheSBldmVuaW5nIGFmdGVyIHlvdXIgc2hpZnQgYW5kIHdlJ2xsIGhhbW1lciB0aHJvdWdoIGl0IHRvZ2V0aGVyLiBZb3UncmUgZ29vZCBhdCB0aGlzIHN0dWZmIHdoZW4geW91IGhhdmUgdGhlIGhvdXJzIFx1MjAxNCBsZXQncyBjcmVhdGUgdGhlIGhvdXJzLiBEZWFsPyJ9LHsiayI6InQ3IiwibnVtIjo3LCJ0eXBlRW4iOiJFeHByZXNzaW5nIE9waW5pb25zIiwicHJlcCI6MzAsInJlYyI6OTAsInByb21wdCI6IkRvIHlvdSB0aGluayB0aGF0IGFsbCBDYW5hZGlhbiBjaXRpemVucyBvdmVyIDE4IHllYXJzIG9sZCBtdXN0IGJlIHJlcXVpcmVkIHRvIHZvdGUgaW4gZ292ZXJubWVudCBlbGVjdGlvbnM\/IEV4cGxhaW4geW91ciByZWFzb25zLiIsInByb21wdExlYWQiOiJBbnN3ZXIgdGhlIGZvbGxvd2luZyBxdWVzdGlvbi4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJTdGF0ZSB5b3VyIHBvc2l0aW9uIGNsZWFybHkgaW4gdGhlIGZpcnN0IHNlbnRlbmNlIChwaWNraW5nIG9uZSBzaWRlIGlzIGVhc2llciB0byBkZXZlbG9wIHRoYW4gc3RheWluZyBuZXV0cmFsKS4iLCJHaXZlIDJcdTIwMTMzIHJlYXNvbnMsIGVhY2ggZGV2ZWxvcGVkIG92ZXIgMlx1MjAxMzMgc2VudGVuY2VzIHdpdGggYW4gZXhhbXBsZTsgOTAgc2Vjb25kcyBpcyBsb25nIFx1MjAxNCBkb24ndCBzdG9wIGVhcmx5LiIsIkFja25vd2xlZGdlIHRoZSBvdGhlciBzaWRlIGluIG9uZSBzZW50ZW5jZSAoVGhhdCBzYWlkLCBcdTIwMjYpIHRoZW4gY29uY2x1ZGUgXHUyMDE0IGl0IHNob3dzIGJhbGFuY2VkIHRoaW5raW5nLiIsIlBpY2sgb25lIHNpZGUgKHRoZSBzYW1wbGVzIGFyZ3VlIE5PIC0gdm90aW5nIHNob3VsZCBzdGF5IGEgcmlnaHQsIG5vdCBhIGxlZ2FsIGR1dHkpLiBDb25jcmV0ZSByZWFzb25zOiBmcmVlZG9tIGluY2x1ZGVzIHRoZSByaWdodCB0byBhYnN0YWluLCBmb3JjZWQgdm90aW5nIHByb2R1Y2VzIHJhbmRvbSB1bmluZm9ybWVkIGJhbGxvdHMsIGFuZCB0aGUgcmVhbCBmaXggaXMgZWR1Y2F0aW9uIGFuZCBlYXNpZXIgYWNjZXNzIC0gdGhlbiBjb25jZWRlIG9uZSBzZW50ZW5jZSBhYm91dCBBdXN0cmFsaWEtc3R5bGUgbWFuZGF0b3J5IHZvdGluZyBhbmQgaGlnaGVyIHR1cm5vdXQuIl0sInBocmFzZXMiOlsiSWYgSSBoYWQgdG8gY2hvb3NlLCBJJ2Qgc2F5XHUyMDI2IiwiTXkgbWFpbiByZWFzb24gaXNcdTIwMjYiLCJGb3IgZXhhbXBsZSwgXHUyMDI2IiwiVGhhdCBzYWlkLCBcdTIwMjYiLCJBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIFx1MjAyNiJdfSwiczYiOiJObywgSSBkbyBub3QgdGhpbmsgQ2FuYWRhIHNob3VsZCBmb3JjZSBhbGwgY2l0aXplbnMgb3ZlciBlaWdodGVlbiB0byB2b3RlLCBhbmQgSSBoYXZlIHRocmVlIHJlYXNvbnMuIEZpcnN0LCBpbiBhIGZyZWUgY291bnRyeSwgdm90aW5nIGlzIGEgcmlnaHQsIGFuZCBhIHJpZ2h0IHNob3VsZCBhbHNvIGluY2x1ZGUgdGhlIGNob2ljZSB0byBzYXkgbm8uIElmIHRoZSBnb3Zlcm5tZW50IHB1bmlzaGVzIHBlb3BsZSB3aXRoIGZpbmVzIGZvciBub3Qgdm90aW5nLCB0aGVuIGRlbW9jcmFjeSBzdGFydHMgdG8gZmVlbCBsaWtlIGFuIG9ibGlnYXRpb24sIG5vdCBhIGZyZWVkb20uIFNlY29uZCwgZm9yY2VkIHZvdGluZyBkb2VzIG5vdCBjcmVhdGUgZ29vZCB2b3RpbmcuIFNvbWUgcGVvcGxlIGRvIG5vdCBmb2xsb3cgcG9saXRpY3MgYXQgYWxsLiBJZiB3ZSBwdXNoIHRoZW0gdG8gdGhlIHZvdGluZyBzdGF0aW9uLCBtYW55IHdpbGwganVzdCBwaWNrIGEgcmFuZG9tIG5hbWUgb3IgZHJhdyBhIGZ1bm55IHBpY3R1cmUgb24gdGhlIHBhcGVyLiBSYW5kb20gdm90ZXMgZG8gbm90IG1ha2UgdGhlIGNvdW50cnkncyBkZWNpc2lvbnMgYmV0dGVyLiBUaGlyZCwgSSB0aGluayB0aGVyZSBhcmUgYmV0dGVyIHNvbHV0aW9ucy4gVGhlIGdvdmVybm1lbnQgc2hvdWxkIG1ha2Ugdm90aW5nIGVhc2llciBcdTIwMTQgbW9yZSB2b3RpbmcgZGF5cywgdm90aW5nIGJ5IG1haWwsIHZvdGluZyBvbmxpbmUgXHUyMDE0IGFuZCBzY2hvb2xzIHNob3VsZCB0ZWFjaCB5b3VuZyBwZW9wbGUgd2h5IGVsZWN0aW9ucyBtYXR0ZXIuIFdoZW4gdm90aW5nIGlzIGVhc3kgYW5kIHBlb3BsZSB1bmRlcnN0YW5kIGl0LCB0aGV5IGNvbWUgYnkgdGhlbXNlbHZlcy4gSSBrbm93IEF1c3RyYWxpYSBoYXMgbWFuZGF0b3J5IHZvdGluZyBhbmQgdmVyeSBoaWdoIHR1cm5vdXQsIGFuZCB0aGF0IGlzIGludGVyZXN0aW5nLiBCdXQgZm9yIG1lLCBtb3RpdmF0aW9uIGlzIGJldHRlciB0aGFuIHB1bmlzaG1lbnQuIFNvIG15IGFuc3dlciBpcyBuby4iLCJzOSI6IlRoYXQncyBhIGdlbnVpbmVseSBpbnRlcmVzdGluZyBwb2xpY3kgZGViYXRlLCBidXQgbXkgYW5zd2VyIGlzIG5vIFx1MjAxNCBJIGRvbid0IGJlbGlldmUgQ2FuYWRhIHNob3VsZCBtYWtlIHZvdGluZyBsZWdhbGx5IG1hbmRhdG9yeSwgZm9yIHRocmVlIG1haW4gcmVhc29ucy4gRmlyc3QsIHRoZXJlJ3MgYSBwcmluY2lwbGVkIHByb2JsZW06IGluIGEgbGliZXJhbCBkZW1vY3JhY3ksIHZvdGluZyBpcyBhIHJpZ2h0LCBhbmQgcmlnaHRzIGluY2x1ZGUgdGhlIGZyZWVkb20gbm90IHRvIGV4ZXJjaXNlIHRoZW0uIENob29zaW5nIHRvIGFic3RhaW4gY2FuIGl0c2VsZiBiZSBhIHBvbGl0aWNhbCBzdGF0ZW1lbnQgXHUyMDE0IGEgcHJvdGVzdCBhZ2FpbnN0IGFsbCB0aGUgb3B0aW9ucyBvbiBvZmZlciBcdTIwMTQgYW5kIGZpbmluZyBjaXRpemVucyBmb3IgdGhhdCBjaG9pY2UgdHVybnMgY2l2aWMgcGFydGljaXBhdGlvbiBpbnRvIHN0YXRlIGNvbXB1bHNpb24sIHdoaWNoIHNpdHMgdW5jb21mb3J0YWJseSB3aXRoIHRoZSB2ZXJ5IGZyZWVkb21zIGVsZWN0aW9ucyBhcmUgbWVhbnQgdG8gcHJvdGVjdC4gU2Vjb25kLCB0aGVyZSdzIHRoZSBxdWFsaXR5IHByb2JsZW06IGNvbXBlbGxpbmcgZGlzZW5nYWdlZCBjaXRpemVucyB0byB0aGUgYmFsbG90IGJveCBkb2Vzbid0IG1hZ2ljYWxseSBtYWtlIHRoZW0gaW5mb3JtZWQuIEF1c3RyYWxpYSwgdGhlIGNsYXNzaWMgZXhhbXBsZSwgZG9lcyBhY2hpZXZlIHR1cm5vdXQgYWJvdmUgbmluZXR5IHBlcmNlbnQsIGJ1dCBpdCBhbHNvIGNvdW50cyBhIG1lYW5pbmdmdWwgc2hhcmUgb2YgZG9ua2V5IHZvdGVzIGFuZCBzcG9pbGVkIGJhbGxvdHMgXHUyMDE0IHBlb3BsZSBsaXRlcmFsbHkgbnVtYmVyaW5nIGNhbmRpZGF0ZXMgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGp1c3QgdG8gYXZvaWQgdGhlIGZpbmUuIEhpZ2ggdHVybm91dCB0aGF0J3MgcGFkZGVkIHdpdGggcmFuZG9tIHNlbGVjdGlvbnMgaW1wcm92ZXMgdGhlIHN0YXRpc3RpY3MsIG5vdCB0aGUgZGVtb2NyYWN5LiBUaGlyZCwgbWFuZGF0b3J5IHZvdGluZyB0cmVhdHMgdGhlIHN5bXB0b20gcmF0aGVyIHRoYW4gdGhlIGRpc2Vhc2UuIElmIHR1cm5vdXQgaXMgbG93LCB0aGUgaG9uZXN0IHF1ZXN0aW9ucyBhcmU6IHdoeSBkb24ndCBwZW9wbGUgZmVlbCByZXByZXNlbnRlZCwgYW5kIGhvdyBoYXJkIGlzIGl0IHRvIHZvdGU\/IFRoZSBwcm9kdWN0aXZlIGZpeGVzIGFyZSBjaXZpYyBlZHVjYXRpb24gaW4gc2Nob29scywgbG9uZ2VyIGFkdmFuY2Utdm90aW5nIHdpbmRvd3MsIG1haWwtaW4gYmFsbG90cywgYW5kIG1ha2luZyBlbGVjdGlvbiBkYXkgZ2VudWluZWx5IGFjY2Vzc2libGUgZm9yIHNoaWZ0IHdvcmtlcnMgYW5kIHJlbW90ZSBjb21tdW5pdGllcy4gSSdsbCBjb25jZWRlIHRoZSBvdGhlciBzaWRlIGhhcyBhIHJlYWwgcG9pbnQ6IGNvbXB1bHNvcnkgdm90aW5nIGZvcmNlcyBwb2xpdGljaWFucyB0byBzcGVhayB0byBldmVyeW9uZSwgbm90IGp1c3QgbW90aXZhdGVkIGJhc2VzLCBhbmQgdGhhdCBoYXMgbW9kZXJhdGluZyBlZmZlY3RzLiBCdXQgb24gYmFsYW5jZSwgSSdkIHJhdGhlciBzZWUgQ2FuYWRpYW5zIHB1bGxlZCB0byB0aGUgcG9sbHMgYnkgY29udmljdGlvbiB0aGFuIHB1c2hlZCB0aGVyZSBieSBhIGZpbmUgXHUyMDE0IHNvIG5vLCBJIHdvdWxkbid0IG1ha2UgaXQgYSBsZWdhbCByZXF1aXJlbWVudC4ifSx7ImsiOiJ0OCIsIm51bSI6OCwidHlwZUVuIjoiRGVzY3JpYmluZyBhbiBVbnVzdWFsIFNpdHVhdGlvbiIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3UgYXJlIGF0IGFuIGludGVyaW9yIGRlY29yYXRpbmcgc3RvcmUgYW5kIHNlZSBhbiBpbnRlcmVzdGluZyB3YWxscGFwZXIgZGVzaWduLiBZb3VyIGZyaWVuZCwgTGF1cmEsIGhhcyBiZWVuIHdhbnRpbmcgdG8gY2hhbmdlIHRoZSBsb29rIG9mIGhlciByb29tLiBDYWxsIExhdXJhIGFuZCBkZXNjcmliZSBpbiBkZXRhaWwgd2hhdCB0aGUgd2FsbHBhcGVyIGRlc2lnbiBsb29rcyBsaWtlLCBhbmQgYXNrIGlmIHNoZSB3b3VsZCBiZSBpbnRlcmVzdGVkIGluIHVzaW5nIGl0IGZvciBoZXIgcm9vbS4iLCJpbWciOiJ1bnVzdWFsIiwidGlwcyI6eyJidWxsZXRzIjpbIlRoaXMgaXMgYSBQSE9ORSBDQUxMOiBncmVldCB0aGUgcmlnaHQgcGVyc29uICh0aGUgcG9saWNlIC8geW91ciBmcmllbmQpLCB0aGVuIHNheSB3aGVyZSB5b3UgYXJlLiIsIkRlc2NyaWJlIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYzsgdGhlIHBpY3R1cmUgaXMgbWVhbnQgdG8gYmUgc3RyYW5nZSBcdTIwMTQganVzdCBkZXNjcmliZSB3aGF0IHlvdSBzZWUsIHVzaW5nICdJdCBsb29rcyBsaWtlIC8gYXMgaWZcdTIwMjYnLiIsIkVuZCB3aXRoIGEgcmVxdWVzdCBmb3IgYWN0aW9uIChzZW5kIGEgcGF0cm9sIC8gYXNrIHdoZXJlIHRvIGJ1eSkuIiwiVGhpcyBpcyBhIHBob25lIGNhbGwgdG8gTGF1cmEuIEtleSBkZXRhaWxzOiBjcmVhbSAvIHNvZnQtcGluayBiYWNrZ3JvdW5kLCB0aGluIGdyZWVuIHZpbmVzIGN1cmxpbmcgdXB3YXJkIGluIHdhdnkgdmVydGljYWwgbGluZXMgd2l0aCBsaXR0bGUgbGVhdmVzLCBhbmQgY29sb3VyZnVsIGJ1dHRlcmZsaWVzIHNjYXR0ZXJlZCBhbGwgb3ZlciAtIG5hdnkgYmx1ZSwgcGluay1yZWQsIHllbGxvdywgb3JhbmdlIGFuZCB0ZWFsIG9uZXMgd2l0aCBwYXR0ZXJuZWQgd2luZ3MsIHBsdXMgYSBmZXcgc21hbGwgcmVkIGFuZCBwdXJwbGUgZmxvd2Vycy4gU3VnZ2VzdCB3aGljaCB3YWxsIGl0IHdvdWxkIHN1aXQgYW5kIGVuZCBieSBhc2tpbmcgaWYgc2hlIHdhbnRzIHRvIGNvbWUgc2VlIGl0LiJdLCJwaHJhc2VzIjpbIkknbSBjYWxsaW5nIHRvIHJlcG9ydFx1MjAyNiIsIlBpY3R1cmUgdGhpczogXHUyMDI2IiwiSXQgbG9va3MgYXMgaWZcdTIwMjYiLCJDb3VsZCB5b3Ugc2VuZFx1MjAyNiAvIERvIHlvdSBrbm93IHdoZXJlXHUyMDI2PyJdfSwiczYiOiJIaSBMYXVyYSwgaXQncyBtZSEgSSBhbSBhdCB0aGUgaW50ZXJpb3IgZGVjb3JhdGluZyBzdG9yZSByaWdodCBub3csIGFuZCBJIGp1c3Qgc2F3IGEgd2FsbHBhcGVyIHRoYXQgaXMgcGVyZmVjdCBmb3IgeW91ciByb29tLiBZb3Ugc2FpZCB5b3Ugd2FudGVkIGEgZnJlc2ggbmV3IGxvb2ssIHNvIGxpc3RlbiB0byB0aGlzLiBUaGUgYmFja2dyb3VuZCBpcyBhIHNvZnQgY3JlYW0gY29sb3VyLCB2ZXJ5IGxpZ2h0IGFuZCB3YXJtLCBhbG1vc3QgbGlrZSB2YW5pbGxhIGljZSBjcmVhbS4gT24gdG9wIG9mIHRoYXQsIHRoZXJlIGFyZSB0aGluIGdyZWVuIHZpbmVzIHRoYXQgY2xpbWIgdXAgdGhlIHdhbGwgaW4gd2F2eSBsaW5lcywgd2l0aCBzbWFsbCBncmVlbiBsZWF2ZXMuIEFuZCBoZXJlIGlzIHRoZSBiZXN0IHBhcnQ6IGJldHdlZW4gdGhlIHZpbmVzLCB0aGVyZSBhcmUgbWFueSBjb2xvdXJmdWwgYnV0dGVyZmxpZXMhIFNvbWUgYXJlIGRhcmsgYmx1ZSwgc29tZSBhcmUgcGluayBhbmQgcmVkLCBzb21lIGFyZSB5ZWxsb3csIG9yYW5nZSwgYW5kIGV2ZW4gdGVhbCBncmVlbi4gRXZlcnkgYnV0dGVyZmx5IGhhcyBhIGJlYXV0aWZ1bCBwYXR0ZXJuIG9uIGl0cyB3aW5ncywgbGlrZSBsaXR0bGUgc3RhaW5lZC1nbGFzcyB3aW5kb3dzLiBUaGVyZSBhcmUgYWxzbyBhIGZldyBzbWFsbCByZWQgYW5kIHB1cnBsZSBmbG93ZXJzIG9uIHRoZSB2aW5lcy4gSXQgaXMgcGxheWZ1bCwgYnV0IGFsc28gZWxlZ2FudCBcdTIwMTQgbm90IGNoaWxkaXNoIGF0IGFsbC4gSSB0aGluayBpdCB3b3VsZCBsb29rIGFtYXppbmcgb24gdGhlIHdhbGwgYmVoaW5kIHlvdXIgYmVkLiBXb3VsZCB5b3UgYmUgaW50ZXJlc3RlZCBpbiBpdD8gQ2FuIHlvdSBjb21lIHRvIHRoZSBzdG9yZSB0aGlzIGFmdGVybm9vbiBhbmQgc2VlIGl0IHlvdXJzZWxmPyBJIGNhbiB3YWl0IGZvciB5b3UgaGVyZSEiLCJzOSI6IkxhdXJhLCBwZXJmZWN0IHRpbWluZyB0aGF0IHlvdSdyZSBmcmVlIFx1MjAxNCBJJ20gc3RhbmRpbmcgaW4gdGhlIGludGVyaW9yIGRlY29yYXRpbmcgc3RvcmUgb24gTWFpbiBTdHJlZXQsIGFuZCBJJ3ZlIGZvdW5kIGEgd2FsbHBhcGVyIHRoYXQgaGFzIHlvdXIgbmFtZSB3cml0dGVuIGFsbCBvdmVyIGl0LiBZb3Uga25vdyBob3cgeW91J3ZlIGJlZW4gc2F5aW5nIHlvdXIgcm9vbSBuZWVkcyBhIGNvbXBsZXRlbHkgbmV3IHBlcnNvbmFsaXR5PyBMaXN0ZW4gdG8gdGhpcy4gVGhlIGJhc2UgaXMgYSBzb2Z0IGNyZWFtLCBhbG1vc3QgYmx1c2ggXHUyMDE0IHZlcnkgbGlnaHQsIHNvIGl0IHdvdWxkIGFjdHVhbGx5IG1ha2UgeW91ciByb29tIGZlZWwgYmlnZ2VyIGFuZCBicmlnaHRlciwgbm90IHNtYWxsZXIuIENsaW1iaW5nIHVwIGFjcm9zcyBpdCB0aGVyZSBhcmUgdGhlc2UgZGVsaWNhdGUgZ3JlZW4gdmluZXMsIGRyYXduIGluIHRoaW4gY3VybGluZyBsaW5lcyB0aGF0IHdhdmUgdXB3YXJkIHdpdGggdGlueSBsZWF2ZXMsIHNvIHRoZSB3aG9sZSB3YWxsIGhhcyBhIGdlbnRsZSBzZW5zZSBvZiBtb3ZlbWVudCwgbGlrZSBhIGdhcmRlbiB0cmVsbGlzLiBBbmQgc2NhdHRlcmVkIGJldHdlZW4gdGhlIHZpbmVzIFx1MjAxNCB0aGlzIGlzIHRoZSBzaG93c3RvcHBlciBcdTIwMTQgYXJlIGRvemVucyBvZiBidXR0ZXJmbGllcyBpbiB0aGUgbW9zdCBnb3JnZW91cyBjb2xvdXJzOiBkZWVwIG5hdnkgb25lcywgcm9zeSBwaW5rLXJlZCBvbmVzLCBzdW5ueSB5ZWxsb3csIG9yYW5nZSwgZXZlbiBhIGZldyBpbiB0ZWFsLCBhbmQgZWFjaCBoYXMgaW50cmljYXRlIHBhdHRlcm5zIG9uIGl0cyB3aW5ncywgaG9uZXN0bHkgbGlrZSBsaXR0bGUgcGllY2VzIG9mIHN0YWluZWQgZ2xhc3MuIFRoZXJlIGFyZSBhbHNvIGEgZmV3IHNtYWxsIHJlZCBhbmQgcHVycGxlIGZsb3dlcnMgdHVja2VkIGFsb25nIHRoZSB2aW5lcyBmb3IgYW4gZXh0cmEgdG91Y2guIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB3aGltc2ljYWwgYnV0IGdlbnVpbmVseSBlbGVnYW50IFx1MjAxNCBib3RhbmljYWwtZ2FyZGVuIHByZXR0eSwgbm90IGEgY2hpbGQncyBzdGlja2VyIGJvb2suIEknZCBwaWN0dXJlIGl0IG9uIHRoZSBmZWF0dXJlIHdhbGwgYmVoaW5kIHlvdXIgYmVkLCB3aXRoIHlvdXIgd2hpdGUgZnVybml0dXJlIGl0IHdvdWxkIGFic29sdXRlbHkgc2luZy4gV291bGQgeW91IGJlIGludGVyZXN0ZWQ\/IENvbWUgZG93biB0aGlzIGFmdGVybm9vbiBhbmQgbG9vayBcdTIwMTQgSSBjYW4gYXNrIHRoZW0gdG8gaG9sZCBhIGZldyByb2xscy4gVHJ1c3QgbWUsIHNvbWVvbmUgZWxzZSBpcyBnb2luZyB0byBncmFiIHRoaXMuIn1dLCJ1aSI6eyJzdGFydFRlc3QiOiJTdGFydCB0aGUgdGVzdCIsIm1pY0VuYWJsZSI6IkVuYWJsZSBtaWNyb3Bob25lIiwibWljUmVhZHkiOiJNaWNyb3Bob25lIHJlYWR5IiwibWljQmxvY2tlZCI6Ik1pY3JvcGhvbmUgaXMgYmxvY2tlZCBvciB1bmF2YWlsYWJsZSBcdTIwMTQgdGhlIHBhZ2Ugd2lsbCBydW4gaW4gdGltZXItb25seSBtb2RlICh5b3UgY2FuIHN0aWxsIHByYWN0aXNlIHNwZWFraW5nIGFsb25nIHdpdGggdGhlIHRpbWVycykuIiwibWljTm90ZSI6IlJlY29yZGluZ3MgYXJlIHN0b3JlZCB0ZW1wb3JhcmlseSBpbiB5b3VyIGJyb3dzZXIgb25seSBcdTIwMTQgbm90aGluZyBpcyB1cGxvYWRlZCB0byBhbnkgc2VydmVyLiBUaGV5IGFyZSBsb3N0IHdoZW4geW91IGNsb3NlIHRoZSBwYWdlLCBzbyBkb3dubG9hZCBhbnkgeW91IHdhbnQgdG8ga2VlcC4iLCJwcmVwVGl0bGUiOiJQcmVwYXJhdGlvbiBUaW1lIiwicmVjVGl0bGUiOiJSZWNvcmRpbmciLCJzdGFydFByZXAiOiJcdTI1YjYgU3RhcnQgcHJlcGFyYXRpb24iLCJza2lwUHJlcCI6IlNraXAgXHUyMDE0IHJlY29yZCBub3cgXHUwMGJiIiwic3RvcFJlYyI6Ilx1MjVhMCBTdG9wIHJlY29yZGluZyIsInJlY29yZGVkIjoiUmVjb3JkZWQiLCJyZVJlY29yZCI6Ilx1MjFiYiBSZWNvcmQgYWdhaW4iLCJkb3dubG9hZCI6Ilx1MmIwNyBEb3dubG9hZCIsInRpbWVyT25seSI6IlRpbWVyLW9ubHkgbW9kZSAobm90IHJlY29yZGluZykiLCJzcGVha05vdyI6IlNQRUFLIE5PVyBcdTIwMTQgcmVjb3JkaW5nIHN0b3BzIGF1dG9tYXRpY2FsbHkgd2hlbiB0aW1lIGlzIHVwIiwibmV4dCI6Ik5FWFQiLCJjaG9vc2VIaW50IjoiQ2xpY2sgdG8gY2hvb3NlIG9uZSBvcHRpb24gXHUyMDE0IGlmIHRoZSA2MCBzZWNvbmRzIHJ1biBvdXQsIHRoZSBzeXN0ZW0gY2hvb3NlcyBmb3IgeW91IiwiY29uZmlybUNob2ljZSI6IkNvbmZpcm0gY2hvaWNlICYgY29udGludWUgXHUwMGJiIiwieW91ckNob2ljZSI6IllvdXIgQ2hvaWNlIiwidGlwc1RvZ2dsZSI6Ilx1ZDgzZFx1ZGNhMSBUaXBzICYgc2FtcGxlIGFuc3dlcnMgKG9wZW4gYWZ0ZXIgeW91IGZpbmlzaCBzcGVha2luZykiLCJ0YWJUaXBzIjoiT3V0bGluZSAmIHBocmFzZXMiLCJ0YWJTNiI6IlNhbXBsZSBDTEIgNiIsInRhYlM5IjoiU2FtcGxlIENMQiA5IiwidGFiUnVicmljIjoiU2VsZi1hc3Nlc3NtZW50IiwicnVicmljTm90ZSI6Ikxpc3RlbiB0byB5b3VyIHJlY29yZGluZywgdGhlbiByYXRlIHlvdXJzZWxmIDFcdTIwMTM1IG9uIGVhY2ggY3JpdGVyaW9uICh0aGUgNCBvZmZpY2lhbCBDRUxQSVAgcmF0aW5nIGRpbWVuc2lvbnMpOiIsInJ1YnJpY0NyaXQiOlsiQ29udGVudCAmIENvaGVyZW5jZSBcdTIwMTQgY29tcGxldGUgaWRlYXMsIGxvZ2ljYWwgZmxvdyIsIlZvY2FidWxhcnkgXHUyMDE0IHJhbmdlIGFuZCBwcmVjaXNpb24iLCJMaXN0ZW5hYmlsaXR5IFx1MjAxNCBwcm9udW5jaWF0aW9uLCBpbnRvbmF0aW9uLCBmbHVlbmN5IiwiVGFzayBGdWxmaWxsbWVudCBcdTIwMTQgYWRkcmVzc2VzIHRoZSB0YXNrLCBhcHByb3ByaWF0ZSBsZW5ndGgiXSwiZXN0aW1hdGUiOiJFc3RpbWF0ZWQgbGV2ZWwgKGZvciByZWZlcmVuY2UpOiIsImVzdERpc2NsYWltZXIiOiJTZWxmLWFzc2Vzc21lbnQgaXMgYSByb3VnaCBndWlkZSBvbmx5IFx1MjAxNCBpdCBkb2VzIG5vdCByZXBsYWNlIGFuIG9mZmljaWFsIHNjb3JlLiIsInVzZWZ1bFBocmFzZXMiOiJVc2VmdWwgcGhyYXNlcyIsImVuZFRpdGxlIjoiU3BlYWtpbmcgdGVzdCBjb21wbGV0ZSEiLCJlbmRTdWIiOiJSZXBsYXkgZWFjaCB0YXNrLCBjb21wYXJlIHlvdXIgYW5zd2VycyB3aXRoIHRoZSBDTEIgNiAvIENMQiA5IHNhbXBsZXMsIHRoZW4gcmF0ZSB5b3Vyc2VsZi4iLCJlbmROb1JlYyI6Im5vdCByZWNvcmRlZCIsImVuZFJlZG8iOiJcdTIxYmIgU3RhcnQgb3ZlciIsImVuZFQyIjoiQ29udGludWUgdG8gUHJhY3RpY2UgVGVzdCIsImVuZEh1YiI6Ilx1MjE5MCBCYWNrIHRvIENFTFBJUCBIdWIiLCJ3YXJtdXBCYWRnZSI6Ildhcm0tdXAgXHUyMDE0IG5vdCBzY29yZWQiLCJpbnRyb05vdGVzIjpbIkFuIGFjY3VyYXRlIHNpbXVsYXRpb24gb2YgdGhlIHJlYWwgQ0VMUElQIEdlbmVyYWwgU3BlYWtpbmcgdGVzdDogMSBwcmFjdGljZSAod2FybS11cCkgdGFzayArIDggc2NvcmVkIHRhc2tzLCBhYm91dCAyMCBtaW51dGVzIGluIHRvdGFsLiIsIkVhY2ggdGFzazogcmVhZCB0aGUgcHJvbXB0IFx1MjE5MiA8Yj5QcmVwYXJhdGlvbjwvYj4gY291bnRkb3duIFx1MjE5MiBzd2l0Y2hlcyBhdXRvbWF0aWNhbGx5IHRvIDxiPlJlY29yZGluZzwvYj4gKHdpdGggYSBiZWVwKSBcdTIxOTIgc3RvcHMgd2hlbiB0aW1lIGlzIHVwLiIsIk9uIHRoZSByZWFsIHRlc3QgeW91IGNhbm5vdCBnbyBiYWNrIHRvIGEgcHJldmlvdXMgdGFzay4gSW4gcHJhY3RpY2UgbW9kZSwgeW91IGNhbiBjbGljayB0aGUgbnVtYmVyZWQgY2hpcHMgYWJvdmUgdG8gcmV2aXNpdCBhbnkgdGFzay4iLCJBZnRlciBzcGVha2luZyBvbiBlYWNoIHRhc2ssIG9wZW4gPGI+VGlwcyAmIHNhbXBsZSBhbnN3ZXJzPC9iPiB0byBjb21wYXJlIHlvdXIgcmVzcG9uc2Ugd2l0aCB0aGUgQ0xCIDYgYW5kIENMQiA5IHNhbXBsZXMuIl0sImhlcm9UYWciOiJDRUxQSVAgR2VuZXJhbCBcdTIwMTQgU3BlYWtpbmciLCJoZXJvTWV0YSI6WyI4IHRhc2tzICsgd2FybS11cCIsIn4yMCBtaW51dGVzIiwiUmVjb3JkICYgcmVwbGF5IiwiQ0xCIDYgLyBDTEIgOSBzYW1wbGVzIl19fTsKLyogQ0VMUElQIFNwZWFraW5nIEVuZ2luZSB2MS4wIC0gQWxsRW5nbGlzaDRVIC0gdmFuaWxsYSBKUywgcHJlZml4IGNscC1zcGsgKi8KKGZ1bmN0aW9uKCl7CiJ1c2Ugc3RyaWN0IjsKdmFyIEQgPSB3aW5kb3cuQ0xQU1BLX0RBVEEsIFUgPSBELnVpOwp2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHAtc3BrLXJvb3QiKTsKaWYoIXJvb3QpIHJldHVybjsKCi8qIC0tLS0tLS0tLS0gc3R5bGUgLS0tLS0tLS0tLSAqLwp2YXIgQ1NTID0gIiIrCiIuY2xwLXNway13cmFwe21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjAgMTRweCA2MHB4O2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6IzIzMjcyZDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfSIrCiIuY2xwLXNway13cmFwICp7Ym94LXNpemluZzpib3JkZXItYm94fSIrCiIuY2xwLXNway1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjN2YxZDFkIDAlLCNiOTFjMWMgNTUlLCNkYzI2MjYgMTAwJSk7Ym9yZGVyLXJhZGl1czoxOHB4O2NvbG9yOiNmZmY7cGFkZGluZzozMHB4IDMwcHggMjZweDttYXJnaW46MThweCAwIDIwcHg7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufSIrCiIuY2xwLXNway1oZXJvOmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTYwcHg7dG9wOi02MHB4O3dpZHRoOjIyMHB4O2hlaWdodDoyMjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA4KX0iKwoiLmNscC1zcGstaGVybyAudGFne2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTYpO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMzUpO3BhZGRpbmc6M3B4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi42cHg7Zm9udC13ZWlnaHQ6NjAwfSIrCiIuY2xwLXNway1oZXJvIGgxe21hcmdpbjoxMHB4IDAgNnB4O2ZvbnQtc2l6ZToyN3B4O2xpbmUtaGVpZ2h0OjEuMjU7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstaGVybyAubWV0YXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tdG9wOjEycHh9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGEgc3BhbntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjIyKTtwYWRkaW5nOjRweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweH0iKwoiLmNscC1zcGstY2hpcHN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo3cHg7bWFyZ2luOjAgMCAxNHB4fSIrCiIuY2xwLXNway1jaGlwe21pbi13aWR0aDozOHB4O2hlaWdodDozNHB4O2JvcmRlci1yYWRpdXM6OXB4O2JvcmRlcjoxLjVweCBzb2xpZCAjZDNkOGRmO2JhY2tncm91bmQ6I2ZmZjtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjb2xvcjojNWI2NTcyO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MCAxMHB4fSIrCiIuY2xwLXNway1jaGlwLmN1cntiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstY2hpcC5kb25le2JhY2tncm91bmQ6I2U2ZjRlYTtib3JkZXItY29sb3I6IzdiYzM5NDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1wYW5lbHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZDlkZGUzO2JvcmRlci1yYWRpdXM6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDJweCAxMHB4IHJnYmEoMzAsNDAsNjAsLjA2KX0iKwoiLmNscC1zcGstYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7YmFja2dyb3VuZDojZWNlY2VlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkNWQ1ZDg7cGFkZGluZzo5cHggMTRweDtmbGV4LXdyYXA6d3JhcH0iKwoiLmNscC1zcGstYmFyIC50e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTQuNXB4O2NvbG9yOiMzYzQwNDZ9IisKIi5jbHAtc3BrLWJhciAubXttYXJnaW4tbGVmdDphdXRvO2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6IzU1NTt3aGl0ZS1zcGFjZTpub3dyYXB9IisKIi5jbHAtc3BrLWJhciAubSBie2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLW5leHR7YmFja2dyb3VuZDojMTQ2N2M2O2NvbG9yOiNmZmY7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6LjhweDtwYWRkaW5nOjdweCAxOHB4O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1uZXh0OmhvdmVye2JhY2tncm91bmQ6IzBmNTdhYn0iKwoiLmNscC1zcGstYm9keXtwYWRkaW5nOjE4cHggMjBweCAyMnB4fSIrCiIuY2xwLXNway1wcm9tcHR7ZGlzcGxheTpmbGV4O2dhcDo5cHg7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE1LjVweDtsaW5lLWhlaWdodDoxLjV9IisKIi5jbHAtc3BrLXByb21wdCAuaXtmbGV4OjAgMCBhdXRvO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojMmM3Y2IwO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6ODAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjJweH0iKwoiLmNscC1zcGstbGVhZHtjb2xvcjojMGI1Mzk0O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjRweH0iKwoiLmNscC1zcGstY2hvb3NlMXttYXJnaW46MTRweCAwIDA7cGFkZGluZzoxMnB4IDE2cHg7YmFja2dyb3VuZDojZjVmN2ZhO2JvcmRlcjoxcHggc29saWQgI2RmZTRlYTtib3JkZXItcmFkaXVzOjlweDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNTV9IisKIi5jbHAtc3BrLWNob29zZTEgLmV7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiM4YTFmMWY7bGV0dGVyLXNwYWNpbmc6LjRweH0iKwoiLmNscC1zcGstaW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjU0MHB4O3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjY2ZkNGRhO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbjoxNnB4IDAgNHB4fSIrCiIuY2xwLXNway1ub3Rle2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4YTkyOWM7bWFyZ2luLXRvcDo2cHh9IisKIi5jbHAtc3BrLXRpbWVycm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoyMHB4IDAgNnB4fSIrCiIuY2xwLXNway10aW1lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNnB4O2JhY2tncm91bmQ6I2U5ZWNlZjtib3JkZXI6MXB4IHNvbGlkICNkNmRhZGU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTZweCAyNnB4O21pbi13aWR0aDozMDBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfSIrCiIuY2xwLXNway10aW1lciAuaWN7d2lkdGg6NDRweDtoZWlnaHQ6NDRweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmOGY5ZmE7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LXNpemU6MjJweH0iKwoiLmNscC1zcGstdGltZXIgLmxie2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMzMzODNmO2ZvbnQtc2l6ZToxNXB4fSIrCiIuY2xwLXNway10aW1lciAubntmb250LXNpemU6MjZweDtmb250LXdlaWdodDo4MDA7Y29sb3I6IzBiNTdkMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7bWluLXdpZHRoOjUycHg7dGV4dC1hbGlnbjpjZW50ZXJ9IisKIi5jbHAtc3BrLXRpbWVyLnJlY3tiYWNrZ3JvdW5kOiNmZGVjZWI7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLXRpbWVyLnJlYyAubntjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway10aW1lci5yZWMgLmlje2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2YzYjZiM30iKwoiLmNscC1zcGstZG90e3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojZTUzOTM1O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2FuaW1hdGlvbjpjbHBibGluayAxcyBpbmZpbml0ZX0iKwoiQGtleWZyYW1lcyBjbHBibGlua3swJSwxMDAle29wYWNpdHk6MX01MCV7b3BhY2l0eTouMjV9fSIrCiIuY2xwLXNway1jdHJ7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luOjE0cHggMCAycHh9IisKIi5jbHAtc3BrLWJ0bntib3JkZXI6MS41cHggc29saWQgI2M5Y2ZkNjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMzMzgzZjtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjlweCAxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1idG46aG92ZXJ7Ym9yZGVyLWNvbG9yOiM5YWEzYWR9IisKIi5jbHAtc3BrLWJ0bi5wcml7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWJ0bi5wcmk6aG92ZXJ7YmFja2dyb3VuZDojMGE0Y2I1fSIrCiIuY2xwLXNway1idG4ud2FybntiYWNrZ3JvdW5kOiNjNjI4Mjg7Ym9yZGVyLWNvbG9yOiNjNjI4Mjg7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstc3BlYWtub3d7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2M2MjgyODtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDo4cHg7bGV0dGVyLXNwYWNpbmc6LjNweH0iKwoiLmNscC1zcGstcmV2aWV3e21hcmdpbjoxNnB4IGF1dG8gMDttYXgtd2lkdGg6NjQwcHg7YmFja2dyb3VuZDojZjJmOWYzO2JvcmRlcjoxcHggc29saWQgI2JmZTNjNjtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDE4cHh9IisKIi5jbHAtc3BrLXJldmlldyAub2t7Y29sb3I6IzFlN2IzZTtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE0LjVweH0iKwoiLmNscC1zcGstcmV2aWV3IGF1ZGlve3dpZHRoOjEwMCU7bWFyZ2luOjEwcHggMCA4cHh9IisKIi5jbHAtc3BrLW1pY3ttYXJnaW46MTJweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2ZmZjhlNjtib3JkZXI6MXB4IHNvbGlkICNlY2Q5YTA7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM3YTViMTJ9IisKIi5jbHAtc3BrLW9wdHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxNnB4O21hcmdpbjoxOHB4IDAgNHB4fSIrCiIuY2xwLXNway1jYXJke2JvcmRlcjoycHggc29saWQgI2Q1ZGFlMDtib3JkZXItcmFkaXVzOjExcHg7cGFkZGluZzoxM3B4IDE1cHggMTVweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30iKwoiLmNscC1zcGstY2FyZDpob3Zlcntib3JkZXItY29sb3I6IzhmYjRlOH0iKwoiLmNscC1zcGstY2FyZC5zZWx7Ym9yZGVyLWNvbG9yOiMyZTllNGY7YmFja2dyb3VuZDojZWVmOWYwfSIrCiIuY2xwLXNway1jYXJkLnBsYWlue2N1cnNvcjpkZWZhdWx0fSIrCiIuY2xwLXNway1jYXJkIC5oZHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNmI3NDgwO2xldHRlci1zcGFjaW5nOi4zcHg7bWFyZ2luLWJvdHRvbTo4cHh9IisKIi5jbHAtc3BrLWNhcmQgaW1ne3dpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo3cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlNmVhfSIrCiIuY2xwLXNway1jYXJkIC50dHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjEwcHggMCA2cHg7Y29sb3I6IzIzMjcyZH0iKwoiLmNscC1zcGstY2FyZCB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweDtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNTU7Y29sb3I6IzNjNDM0Yn0iKwoiLmNscC1zcGstY2FyZCAucGlja3ttYXJnaW4tdG9wOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMyZTllNGY7Zm9udC1zaXplOjEzcHg7bWluLWhlaWdodDoxOHB4fSIrCiIuY2xwLXNway1oaW50e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM2Yjc0ODA7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDoxMHB4fSIrCiIuY2xwLXNway1hY2N7bWFyZ2luLXRvcDoyMnB4O2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjExcHg7b3ZlcmZsb3c6aGlkZGVufSIrCiIuY2xwLXNway1hY2M+YnV0dG9ue3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MDtwYWRkaW5nOjEycHggMTZweDtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzNjNDA0NjtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYWNjYm9keXtkaXNwbGF5Om5vbmU7cGFkZGluZzoxNHB4IDE2cHggMThweDtiYWNrZ3JvdW5kOiNmZmZ9IisKIi5jbHAtc3BrLWFjYy5vcGVuIC5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpibG9ja30iKwoiLmNscC1zcGstdGFic3tkaXNwbGF5OmZsZXg7Z2FwOjZweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEycHh9IisKIi5jbHAtc3BrLXRhYntib3JkZXI6MS41cHggc29saWQgI2M5Y2ZkNjtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjZweCAxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOiM0YTUyNWN9IisKIi5jbHAtc3BrLXRhYi5vbntiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstdGFicGFuZXtkaXNwbGF5Om5vbmU7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjY1fSIrCiIuY2xwLXNway10YWJwYW5lLm9ue2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnBhbmUgdWx7cGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luOjhweCAwfSIrCiIuY2xwLXNway10YWJwYW5lIGxpe21hcmdpbjo1cHggMH0iKwoiLmNscC1zcGstc2FtcGxle2JhY2tncm91bmQ6I2Y4ZjlmYjtib3JkZXI6MXB4IHNvbGlkICNlM2U3ZWM7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICMwYjU3ZDA7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxM3B4IDE2cHg7d2hpdGUtc3BhY2U6cHJlLXdyYXB9IisKIi5jbHAtc3BrLXNhbXBsZS5zNntib3JkZXItbGVmdC1jb2xvcjojZThhMTNjfSIrCiIuY2xwLXNway1waHJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo3cHg7bWFyZ2luLXRvcDoxMHB4fSIrCiIuY2xwLXNway1waHIgc3BhbntiYWNrZ3JvdW5kOiNlZWYzZmI7Ym9yZGVyOjFweCBzb2xpZCAjY2RkZGY1O2NvbG9yOiMxNzRhOWM7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjRweCAxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwfSIrCiIuY2xwLXNway1ydWJ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjEzLjVweH0iKwoiLmNscC1zcGstcnViIHRke3BhZGRpbmc6N3B4IDZweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVmMGYzfSIrCiIuY2xwLXNway1zdGFye2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxOXB4O2NvbG9yOiNjOWNmZDY7cGFkZGluZzowIDFweDt1c2VyLXNlbGVjdDpub25lfSIrCiIuY2xwLXNway1zdGFyLm9ue2NvbG9yOiNmMGE3MWJ9IisKIi5jbHAtc3BrLWVzdHttYXJnaW4tdG9wOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxZTdiM2V9IisKIi5jbHAtc3BrLWJhZGdle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZmZjNjZDtib3JkZXI6MXB4IHNvbGlkICNlOGQ0OGI7Y29sb3I6IzdhNWIxMjtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCAxMnB4O21hcmdpbi1ib3R0b206MTBweH0iKwoiLmNscC1zcGstaW50cm8gdWx7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjc7cGFkZGluZy1sZWZ0OjIwcHh9IisKIi5jbHAtc3BrLWludHJvIGxpe21hcmdpbjo3cHggMH0iKwoiLmNscC1zcGstbWljcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7ZmxleC13cmFwOndyYXA7YmFja2dyb3VuZDojZjZmN2Y5O2JvcmRlcjoxcHggc29saWQgI2UwZTRlOTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxM3B4IDE2cHg7bWFyZ2luOjE2cHggMH0iKwoiLmNscC1zcGstbWljc3R7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLW1pY3N0Lm9re2NvbG9yOiMxZTdiM2V9LmNscC1zcGstbWljc3QuYmFke2NvbG9yOiNjNjI4Mjh9IisKIi5jbHAtc3BrLWVuZCB0YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTRweH0iKwoiLmNscC1zcGstZW5kIHRkLC5jbHAtc3BrLWVuZCB0aHtwYWRkaW5nOjlweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWZmMjt0ZXh0LWFsaWduOmxlZnR9IisKIi5jbHAtc3BrLWVuZCBhdWRpb3toZWlnaHQ6MzRweDttYXgtd2lkdGg6MjMwcHh9IisKIkBtZWRpYShtYXgtd2lkdGg6NzAwcHgpey5jbHAtc3BrLW9wdHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uY2xwLXNway1iYXIgLm17b3JkZXI6MzttYXJnaW4tbGVmdDowO3dpZHRoOjEwMCV9LmNscC1zcGstaGVybyBoMXtmb250LXNpemU6MjJweH0uY2xwLXNway1ib2R5e3BhZGRpbmc6MTRweCAxMnB4IDE4cHh9fSI7CnZhciBzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7IHN0LnRleHRDb250ZW50ID0gQ1NTOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKCi8qIC0tLS0tLS0tLS0gc3RhdGUgLS0tLS0tLS0tLSAqLwp2YXIgUyA9IHsKICBjdXI6IC0xLCAgICAgICAgICAgIC8qIC0xIGludHJvLCAwLi44IHRhc2tzLCA5OSBlbmQgKi8KICBtaWNTdGF0ZTogImlkbGUiLCAgIC8qIGlkbGV8b2t8YmFkICovCiAgc3RyZWFtOiBudWxsLCByZWNvcmRlcjogbnVsbCwgY2h1bmtzOiBbXSwKICB0aW1lcjogbnVsbCwgcGhhc2U6IHt9LCB0NWNob2ljZToge30sIHJlY3M6IHt9LCBydWJyaWM6IHt9LAogIG1pbWU6ICIiLCBleHQ6ICJ3ZWJtIgp9OwpELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCl7IFMucGhhc2VbdC5rXSA9IHQucGhhc2VkID8gImNob29zZS1pZGxlIiA6ICJpZGxlIjsgfSk7CgpmdW5jdGlvbiBwaWNrTWltZSgpewogIGlmKCF3aW5kb3cuTWVkaWFSZWNvcmRlcikgcmV0dXJuIG51bGw7CiAgdmFyIGNhbmRzID0gW1siYXVkaW8vd2VibTtjb2RlY3M9b3B1cyIsIndlYm0iXSxbImF1ZGlvL3dlYm0iLCJ3ZWJtIl0sWyJhdWRpby9tcDQiLCJtNGEiXSxbImF1ZGlvL29nZztjb2RlY3M9b3B1cyIsIm9nZyJdXTsKICBmb3IodmFyIGk9MDtpPGNhbmRzLmxlbmd0aDtpKyspeyB0cnl7IGlmKE1lZGlhUmVjb3JkZXIuaXNUeXBlU3VwcG9ydGVkKGNhbmRzW2ldWzBdKSkgcmV0dXJuIGNhbmRzW2ldOyB9Y2F0Y2goZSl7fSB9CiAgcmV0dXJuIFsiIiwid2VibSJdOwp9CmZ1bmN0aW9uIGVuc3VyZU1pYyhjYil7CiAgaWYoUy5taWNTdGF0ZT09PSJvayIpIHJldHVybiBjYih0cnVlKTsKICBpZihTLm1pY1N0YXRlPT09ImJhZCIpIHJldHVybiBjYihmYWxzZSk7CiAgaWYoIW5hdmlnYXRvci5tZWRpYURldmljZXMgfHwgIW5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhIHx8ICF3aW5kb3cuTWVkaWFSZWNvcmRlcil7IFMubWljU3RhdGU9ImJhZCI7IHJldHVybiBjYihmYWxzZSk7IH0KICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZnVuY3Rpb24oc3RyZWFtKXsKICAgIFMuc3RyZWFtID0gc3RyZWFtOyB2YXIgbSA9IHBpY2tNaW1lKCk7IFMubWltZSA9IG1bMF07IFMuZXh0ID0gbVsxXTsgUy5taWNTdGF0ZT0ib2siOyBjYih0cnVlKTsKICB9KS5jYXRjaChmdW5jdGlvbigpeyBTLm1pY1N0YXRlPSJiYWQiOyBjYihmYWxzZSk7IH0pOwp9CmZ1bmN0aW9uIGJlZXAobil7CiAgdHJ5ewogICAgdmFyIGN0eCA9IHdpbmRvdy5fX2NscEFDID0gd2luZG93Ll9fY2xwQUMgfHwgbmV3ICh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSgpOwogICAgdmFyIHQwID0gY3R4LmN1cnJlbnRUaW1lOwogICAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAgIHZhciBvID0gY3R4LmNyZWF0ZU9zY2lsbGF0b3IoKSwgZyA9IGN0eC5jcmVhdGVHYWluKCk7CiAgICAgIG8uZnJlcXVlbmN5LnZhbHVlID0gODgwOyBvLmNvbm5lY3QoZyk7IGcuY29ubmVjdChjdHguZGVzdGluYXRpb24pOwogICAgICBnLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSk7IGcuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMTgsdDAraSowLjI1KzAuMDIpOwogICAgICBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsdDAraSowLjI1KzAuMTgpOwogICAgICBvLnN0YXJ0KHQwK2kqMC4yNSk7IG8uc3RvcCh0MCtpKjAuMjUrMC4yKTsKICAgIH0KICB9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIHN0b3BUaW1lcigpeyBpZihTLnRpbWVyKXsgY2xlYXJJbnRlcnZhbChTLnRpbWVyKTsgUy50aW1lcj1udWxsOyB9IH0KZnVuY3Rpb24gY291bnRkb3duKHNlY3MsIG9uVGljaywgb25FbmQpewogIHN0b3BUaW1lcigpOwogIHZhciBlbmQgPSBEYXRlLm5vdygpICsgc2VjcyoxMDAwOwogIG9uVGljayhzZWNzKTsKICBTLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoZW5kLURhdGUubm93KCkpLzEwMDApKTsKICAgIG9uVGljayhsZWZ0KTsKICAgIGlmKGxlZnQ8PTApeyBzdG9wVGltZXIoKTsgb25FbmQoKTsgfQogIH0sIDI1MCk7Cn0KZnVuY3Rpb24gc3RvcFJlY29yZGluZygpewogIGlmKFMucmVjb3JkZXIgJiYgUy5yZWNvcmRlci5zdGF0ZSE9PSJpbmFjdGl2ZSIpeyB0cnl7IFMucmVjb3JkZXIuc3RvcCgpOyB9Y2F0Y2goZSl7fSB9CiAgUy5yZWNvcmRlciA9IG51bGw7Cn0KZnVuY3Rpb24gbGVhdmVDbGVhbnVwKCl7IHN0b3BUaW1lcigpOyBzdG9wUmVjb3JkaW5nKCk7IH0KCi8qIC0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGVsKHRhZywgY2xzLCBodG1sKXsgdmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOyBpZihjbHMpZS5jbGFzc05hbWU9Y2xzOyBpZihodG1sIT1udWxsKWUuaW5uZXJIVE1MPWh0bWw7IHJldHVybiBlOyB9CmZ1bmN0aW9uIGZtdE1ldGEodCl7CiAgaWYodC5waGFzZWQpIHJldHVybiAiIjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3QucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiB0YXNrVGl0bGUodCl7CiAgaWYodC53YXJtdXApIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgUHJhY3RpY2UgVGFzayI7CiAgcmV0dXJuIEQuaGVhZGVyKyIgLSBTcGVha2luZyBUYXNrICIrdC5udW0rIjogIit0LnR5cGVFbjsKfQpmdW5jdGlvbiBlc3RUZXh0KGF2Zyl7CiAgaWYoYXZnPj00LjUpIHJldHVybiAiQ0xCIDkrIjsgaWYoYXZnPj0zLjUpIHJldHVybiAiQ0xCIDdcdTIwMTM4IjsgaWYoYXZnPj0yLjUpIHJldHVybiAiQ0xCIDVcdTIwMTM2IjsgcmV0dXJuICJDTEIgNCBvciBiZWxvdyI7Cn0KCi8qIC0tLS0tLS0tLS0gcmVuZGVyIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gcmVuZGVyKCl7CiAgbGVhdmVDbGVhbnVwKCk7CiAgcm9vdC5pbm5lckhUTUwgPSAiIjsKICB2YXIgd3JhcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXdyYXAiKTsKICB3cmFwLmFwcGVuZENoaWxkKGhlcm8oKSk7CiAgaWYoUy5jdXI+PTAgJiYgUy5jdXI8RC50YXNrcy5sZW5ndGgpIHdyYXAuYXBwZW5kQ2hpbGQoY2hpcHMoKSk7CiAgaWYoUy5jdXI9PT0tMSkgd3JhcC5hcHBlbmRDaGlsZChpbnRybygpKTsKICBlbHNlIGlmKFMuY3VyPT09OTkpIHdyYXAuYXBwZW5kQ2hpbGQoZW5kU2NyZWVuKCkpOwogIGVsc2Ugd3JhcC5hcHBlbmRDaGlsZCh0YXNrUGFuZWwoRC50YXNrc1tTLmN1cl0pKTsKICByb290LmFwcGVuZENoaWxkKHdyYXApOwogIHRyeXsgd2luZG93LnNjcm9sbFRvKHt0b3A6IHJvb3Qub2Zmc2V0VG9wLTEwLCBiZWhhdmlvcjoic21vb3RoIn0pOyB9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIGhlcm8oKXsKICB2YXIgaCA9IGVsKCJkaXYiLCJjbHAtc3BrLWhlcm8iKTsKICBoLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidGFnIixVLmhlcm9UYWcpKTsKICBoLmFwcGVuZENoaWxkKGVsKCJoMSIsbnVsbCxELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA\/ICJTcGVha2luZyBcdTIwMTQiK0QudGl0bGUuc3BsaXQoIlx1MjAxNCIpWzFdIDogRC50aXRsZSkpOwogIHZhciBtID0gZWwoImRpdiIsIm1ldGEiKTsKICBVLmhlcm9NZXRhLmZvckVhY2goZnVuY3Rpb24oeCl7IG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwseCkpOyB9KTsKICBoLmFwcGVuZENoaWxkKG0pOwogIHJldHVybiBoOwp9CmZ1bmN0aW9uIGNoaXBzKCl7CiAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaGlwcyIpOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIGIgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1jaGlwIisoaT09PVMuY3VyPyIgY3VyIjooUy5yZWNzW3Qua10\/IiBkb25lIjoiIikpLCB0Lndhcm11cD8iVyI6U3RyaW5nKHQubnVtKSk7CiAgICBiLnRpdGxlID0gdC50eXBlRW47CiAgICBiLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj1pOyByZW5kZXIoKTsgfTsKICAgIGMuYXBwZW5kQ2hpbGQoYik7CiAgfSk7CiAgdmFyIGUgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1jaGlwIisoUy5jdXI9PT05OT8iIGN1ciI6IiIpLCJcdWQ4M2NcdWRmYzEiKTsKICBlLnRpdGxlID0gIkZpbmlzaCI7IGUub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTk5OyByZW5kZXIoKTsgfTsKICBjLmFwcGVuZENoaWxkKGUpOwogIHJldHVybiBjOwp9CmZ1bmN0aW9uIGludHJvKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWludHJvIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLEQuaGVhZGVyKyIgLSBTcGVha2luZyIpKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOyBueC5zdHlsZS5tYXJnaW5MZWZ0PSJhdXRvIjsKICBueC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9MDsgcmVuZGVyKCk7IH07CiAgYmFyLmFwcGVuZENoaWxkKG54KTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgdmFyIHByID0gZWwoImRpdiIsImNscC1zcGstcHJvbXB0Iik7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpIiwiaSIpKTsgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsIlNwZWFraW5nIFRlc3QgSW5zdHJ1Y3Rpb25zIikpOwogIGIuYXBwZW5kQ2hpbGQocHIpOwogIHZhciB1bCA9IGVsKCJ1bCIpOwogIFUuaW50cm9Ob3Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICBiLmFwcGVuZENoaWxkKHVsKTsKICB2YXIgbWljcm93ID0gZWwoImRpdiIsImNscC1zcGstbWljcm93Iik7CiAgdmFyIG1idG4gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLm1pY0VuYWJsZSk7CiAgdmFyIG1zdCA9IGVsKCJzcGFuIiwiY2xwLXNway1taWNzdCIsIiIpOwogIG1idG4ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBtYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbihvayl7CiAgICAgIG1zdC5jbGFzc05hbWUgPSAiY2xwLXNway1taWNzdCAiKyhvaz8ib2siOiJiYWQiKTsKICAgICAgbXN0LmlubmVySFRNTCA9IG9rID8gIlx1MjcxNCAiK1UubWljUmVhZHkgOiAiXHUyNzE2ICIrVS5taWNCbG9ja2VkOwogICAgICBpZighb2spIG1idG4uZGlzYWJsZWQgPSBmYWxzZTsKICAgIH0pOwogIH07CiAgbWljcm93LmFwcGVuZENoaWxkKG1idG4pOyBtaWNyb3cuYXBwZW5kQ2hpbGQobXN0KTsKICBiLmFwcGVuZENoaWxkKG1pY3Jvdyk7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLm1pY05vdGUpKTsKICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgdmFyIGdvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFRlc3QrIiBcdTI1YjYiKTsKICBnby5zdHlsZS5mb250U2l6ZT0iMTVweCI7IGdvLnN0eWxlLnBhZGRpbmc9IjEycHggMjZweCI7CiAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGN0ci5hcHBlbmRDaGlsZChnbyk7CiAgYi5hcHBlbmRDaGlsZChjdHIpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KCi8qIC0tLS0tLS0tLS0gdGFzayBwYW5lbCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRhc2tQYW5lbCh0KXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLHRhc2tUaXRsZSh0KSkpOwogIHZhciBtZXRhID0gZWwoInNwYW4iLCJtIiwgdC5waGFzZWQgPyBwaGFzZWRNZXRhKHQpIDogZm10TWV0YSh0KSk7CiAgYmFyLmFwcGVuZENoaWxkKG1ldGEpOwogIHZhciBueCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLW5leHQiLFUubmV4dCk7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyID0gKFMuY3VyKzEgPCBELnRhc2tzLmxlbmd0aCkgPyBTLmN1cisxIDogOTk7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIGlmKHQud2FybXVwKSBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWJhZGdlIixVLndhcm11cEJhZGdlKSk7CiAgaWYodC5waGFzZWQpIHJlbmRlclQ1KHQsYixtZXRhKTsKICBlbHNlIHJlbmRlclN0ZCh0LGIpOwogIGlmKHQudGlwcykgYi5hcHBlbmRDaGlsZChhY2NvcmRpb24odCkpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KZnVuY3Rpb24gcGhhc2VkTWV0YSh0KXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua118fCIiOwogIGlmKHBoLmluZGV4T2YoImNob29zZSIpPT09MCkgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LmNob29zZS5wcmVwKyIgc2Vjb25kczwvYj4iOwogIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5zcGVhay5wcmVwKyIgc2Vjb25kczwvYj4gJm5ic3A7UmVjb3JkaW5nOiA8Yj4iK3Quc3BlYWsucmVjKyIgc2Vjb25kczwvYj4iOwp9CmZ1bmN0aW9uIHByb21wdFJvdyh0ZXh0LCBsZWFkKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKGxlYWQpeyBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbGVhZCIsbGVhZCkpOyB9CiAgdmFyIHByID0gZWwoImRpdiIsImNscC1zcGstcHJvbXB0Iik7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpIiwiaSIpKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx0ZXh0KSk7CiAgYm94LmFwcGVuZENoaWxkKHByKTsKICByZXR1cm4gYm94Owp9CmZ1bmN0aW9uIHJlbmRlclN0ZCh0LGIpewogIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQucHJvbXB0LCB0LnByb21wdExlYWQpKTsKICBpZih0LmNob29zZU9uZSl7CiAgICB2YXIgYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWNob29zZTEiLCI8ZGl2IGNsYXNzPSdlJz5DaG9vc2UgT05FOjwvZGl2PjxkaXYgY2xhc3M9J2UnIHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+RUlUSEVSPC9kaXY+PGRpdj4iK3QuY2hvb3NlT25lWzBdKyI8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPk9SPC9kaXY+PGRpdj4iK3QuY2hvb3NlT25lWzFdKyI8L2Rpdj4iKTsKICAgIGIuYXBwZW5kQ2hpbGQoYyk7CiAgfQogIGlmKHQuaW1nICYmIEQuaW1nc1t0LmltZ10pewogICAgdmFyIGltID0gZWwoImltZyIsImNscC1zcGstaW1nIik7IGltLnNyYyA9IEQuaW1nc1t0LmltZ107IGltLmFsdCA9IHQudHlwZUVuOwogICAgYi5hcHBlbmRDaGlsZChpbSk7CiAgfQogIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQucHJlcCwgdC5yZWMsICJ0IikpOwp9CmZ1bmN0aW9uIHJlbmRlclQ1KHQsYixtZXRhRWwpewogIHZhciBwaCA9IFMucGhhc2VbdC5rXTsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApewogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5jaG9vc2Uuc2l0dWF0aW9uKSk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLHQuY2hvb3NlLm5vdGUpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdC5jaG9vc2Uub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8saWR4KXsKICAgICAgdmFyIGNhcmQgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIisoUy50NWNob2ljZVt0LmtdPT09aWR4PyIgc2VsIjoiIikpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyhvKSk7CiAgICAgIHZhciBwayA9IGVsKCJkaXYiLCJwaWNrIiwgUy50NWNob2ljZVt0LmtdPT09aWR4ID8gIlx1MjcxNCBTZWxlY3RlZCIgOiAiIik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQocGspOwogICAgICBjYXJkLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgIFMudDVjaG9pY2VbdC5rXSA9IGlkeDsKICAgICAgICBncmlkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLWNhcmQiKS5mb3JFYWNoKGZ1bmN0aW9uKGNkLGopewogICAgICAgICAgY2QuY2xhc3NOYW1lID0gImNscC1zcGstY2FyZCIrKGo9PT1pZHg\/IiBzZWwiOiIiKTsKICAgICAgICAgIGNkLnF1ZXJ5U2VsZWN0b3IoIi5waWNrIikudGV4dENvbnRlbnQgPSAoaj09PWlkeCk\/Ilx1MjcxNCBTZWxlY3RlZCI6IiI7CiAgICAgICAgfSk7CiAgICAgICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CiAgICAgIH07CiAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIGIuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWhpbnQiLFUuY2hvb3NlSGludCkpOwogICAgLyogY291bnRkb3duIGZvciBjaG9vc2UgcGhhc2UgKi8KICAgIHZhciB0cm93ID0gZWwoImRpdiIsImNscC1zcGstdGltZXJyb3ciKTsKICAgIHZhciB0bSA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVyIik7CiAgICB0bS5hcHBlbmRDaGlsZChlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIikpOwogICAgdmFyIGxiID0gZWwoImRpdiIpOyBsYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwibGIiLFUucHJlcFRpdGxlKSk7CiAgICB0bS5hcHBlbmRDaGlsZChsYik7CiAgICB2YXIgbiA9IGVsKCJzcGFuIiwibiIsU3RyaW5nKHQuY2hvb3NlLnByZXApKTsKICAgIHRtLmFwcGVuZENoaWxkKG4pOwogICAgdHJvdy5hcHBlbmRDaGlsZCh0bSk7CiAgICBiLmFwcGVuZENoaWxkKHRyb3cpOwogICAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogICAgdmFyIHN0YXJ0ID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFByZXApOwogICAgdmFyIGNidG4gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuY29uZmlybUNob2ljZSk7CiAgICBjYnRuLnN0eWxlLmRpc3BsYXkgPSAoUy50NWNob2ljZVt0LmtdIT1udWxsKT8iaW5saW5lLWJsb2NrIjoibm9uZSI7CiAgICB2YXIgZ29TcGVhayA9IGZ1bmN0aW9uKCl7CiAgICAgIHN0b3BUaW1lcigpOwogICAgICBpZihTLnQ1Y2hvaWNlW3Qua109PW51bGwpIFMudDVjaG9pY2VbdC5rXSA9IDA7CiAgICAgIFMucGhhc2VbdC5rXSA9ICJzcGVhayI7CiAgICAgIHJlbmRlcigpOwogICAgfTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICBzdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICAgIFMucGhhc2VbdC5rXSA9ICJjaG9vc2UtcnVuIjsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBnb1NwZWFrKTsKICAgIH07CiAgICBjYnRuLm9uY2xpY2sgPSBnb1NwZWFrOwogICAgY3RyLmFwcGVuZENoaWxkKHN0YXJ0KTsgY3RyLmFwcGVuZENoaWxkKGNidG4pOwogICAgYi5hcHBlbmRDaGlsZChjdHIpOwogICAgaWYoUy5waGFzZVt0LmtdPT09ImNob29zZS1ydW4iKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBjb3VudGRvd24odC5jaG9vc2UucHJlcCwgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQ9U3RyaW5nKGxlZnQpOyB9LCBnb1NwZWFrKTsKICAgIH0KICB9IGVsc2UgewogICAgbWV0YUVsLmlubmVySFRNTCA9IHBoYXNlZE1ldGEodCk7CiAgICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnNwZWFrLnByb21wdCkpOwogICAgdmFyIGdyaWQgPSBlbCgiZGl2IiwiY2xwLXNway1vcHRzIik7CiAgICB2YXIgb3RoZXIgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIik7CiAgICBvdGhlci5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLHQuc3BlYWsub3RoZXJMYWJlbCkpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKHQuc3BlYWsub3RoZXIpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQob3RoZXIpOwogICAgdmFyIGNob3NlbiA9IHQuY2hvb3NlLm9wdGlvbnNbUy50NWNob2ljZVt0LmtdIT1udWxsID8gUy50NWNob2ljZVt0LmtdIDogMF07CiAgICB2YXIgbWluZSA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQgcGxhaW4gc2VsIik7CiAgICBtaW5lLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJoZCIsVS55b3VyQ2hvaWNlKSk7CiAgICBtaW5lLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyhjaG9zZW4pKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQobWluZSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZCh0aW1lckJsb2NrKHQuaywgdC5zcGVhay5wcmVwLCB0LnNwZWFrLnJlYywgInQ1cyIpKTsKICB9Cn0KZnVuY3Rpb24gaW1nVGl0bGVCdWxsZXRzKG8pewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgaWYoby5pbWcgJiYgRC5pbWdzW28uaW1nXSl7IHZhciBpbSA9IGVsKCJpbWciKTsgaW0uc3JjID0gRC5pbWdzW28uaW1nXTsgaW0uYWx0ID0gby50aXRsZTsgYm94LmFwcGVuZENoaWxkKGltKTsgfQogIGJveC5hcHBlbmRDaGlsZChlbCgiZGl2IiwidHQiLG8udGl0bGUpKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBvLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYm94LmFwcGVuZENoaWxkKHVsKTsKICByZXR1cm4gYm94Owp9CgovKiAtLS0tLS0tLS0tIHByZXAvcmVjb3JkIGJsb2NrIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gdGltZXJCbG9jayhrZXksIHByZXBTZWNzLCByZWNTZWNzLCBtb2RlKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIHZhciB0cm93ID0gZWwoImRpdiIsImNscC1zcGstdGltZXJyb3ciKTsKICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogIHZhciBpYyA9IGVsKCJzcGFuIiwiaWMiLCJcdWQ4M2RcdWRkNTIiKTsKICB2YXIgbGIgPSBlbCgiZGl2Iik7IHZhciBsYnQgPSBlbCgiZGl2IiwibGIiLFUucHJlcFRpdGxlKTsgbGIuYXBwZW5kQ2hpbGQobGJ0KTsKICB2YXIgbiA9IGVsKCJzcGFuIiwibiIsU3RyaW5nKHByZXBTZWNzKSk7CiAgdG0uYXBwZW5kQ2hpbGQoaWMpOyB0bS5hcHBlbmRDaGlsZChsYik7IHRtLmFwcGVuZENoaWxkKG4pOwogIHRyb3cuYXBwZW5kQ2hpbGQodG0pOyBib3guYXBwZW5kQ2hpbGQodHJvdyk7CiAgdmFyIHNwZWFrbm93ID0gZWwoImRpdiIsImNscC1zcGstc3BlYWtub3ciLCIiKTsgYm94LmFwcGVuZENoaWxkKHNwZWFrbm93KTsKICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7IGJveC5hcHBlbmRDaGlsZChjdHIpOwogIHZhciByZXZpZXdTbG90ID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQocmV2aWV3U2xvdCk7CiAgdmFyIG1pY25vdGUgPSBlbCgiZGl2Iik7IGJveC5hcHBlbmRDaGlsZChtaWNub3RlKTsKCiAgZnVuY3Rpb24gc2hvd0lkbGUoKXsKICAgIGN0ci5pbm5lckhUTUwgPSAiIjsgc3BlYWtub3cudGV4dENvbnRlbnQgPSAiIjsKICAgIHRtLmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRpbWVyIjsgbGJ0LnRleHRDb250ZW50ID0gVS5wcmVwVGl0bGU7IGljLnRleHRDb250ZW50ID0gIlx1ZDgzZFx1ZGQ1MiI7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcocHJlcFNlY3MpOwogICAgdmFyIHN0YXJ0ID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFByZXApOwogICAgc3RhcnQub25jbGljayA9IHN0YXJ0UHJlcDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7CiAgICBpZihTLnJlY3Nba2V5XSkgc2hvd1JldmlldyhmYWxzZSk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UHJlcCgpewogICAgZW5zdXJlTWljKGZ1bmN0aW9uKCl7CiAgICAgIGN0ci5pbm5lckhUTUwgPSAiIjsKICAgICAgdmFyIHNraXAgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuc2tpcFByZXApOwogICAgICBza2lwLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBzdG9wVGltZXIoKTsgc3RhcnRSZWMoKTsgfTsKICAgICAgY3RyLmFwcGVuZENoaWxkKHNraXApOwogICAgICBjb3VudGRvd24ocHJlcFNlY3MsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBmdW5jdGlvbigpeyBzdGFydFJlYygpOyB9KTsKICAgIH0pOwogIH0KICBmdW5jdGlvbiBzdGFydFJlYygpewogICAgYmVlcCgyKTsKICAgIHRtLmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRpbWVyIHJlYyI7CiAgICBpYy5pbm5lckhUTUwgPSAiPHNwYW4gY2xhc3M9J2NscC1zcGstZG90Jz48L3NwYW4+IjsKICAgIG4udGV4dENvbnRlbnQgPSBTdHJpbmcocmVjU2Vjcyk7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICB2YXIgc3RvcHBlZCA9IGZhbHNlOwogICAgdmFyIGhhdmVNaWMgPSAoUy5taWNTdGF0ZT09PSJvayIgJiYgUy5zdHJlYW0pOwogICAgbGJ0LnRleHRDb250ZW50ID0gaGF2ZU1pYyA\/IFUucmVjVGl0bGUgOiBVLnRpbWVyT25seTsKICAgIHNwZWFrbm93LnRleHRDb250ZW50ID0gVS5zcGVha05vdzsKICAgIG1pY25vdGUuaW5uZXJIVE1MID0gaGF2ZU1pYyA\/ICIiIDogIjxkaXYgY2xhc3M9J2NscC1zcGstbWljJz4iK1UubWljQmxvY2tlZCsiPC9kaXY+IjsKICAgIHZhciB0MCA9IERhdGUubm93KCk7CiAgICB2YXIgZmluaXNoID0gZnVuY3Rpb24oKXsKICAgICAgaWYoc3RvcHBlZCkgcmV0dXJuOyBzdG9wcGVkID0gdHJ1ZTsKICAgICAgc3RvcFRpbWVyKCk7IGJlZXAoMSk7CiAgICAgIHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICAgIHZhciBzZWNzID0gTWF0aC5taW4ocmVjU2VjcywgTWF0aC5yb3VuZCgoRGF0ZS5ub3coKS10MCkvMTAwMCkpOwogICAgICBpZihoYXZlTWljICYmIFMucmVjb3JkZXIpewogICAgICAgIFMucmVjb3JkZXIub25zdG9wID0gZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoUy5jaHVua3MsIFMubWltZT97dHlwZTpTLm1pbWV9OnVuZGVmaW5lZCk7CiAgICAgICAgICBpZihTLnJlY3Nba2V5XSAmJiBTLnJlY3Nba2V5XS51cmwpeyB0cnl7IFVSTC5yZXZva2VPYmplY3RVUkwoUy5yZWNzW2tleV0udXJsKTsgfWNhdGNoKGUpe30gfQogICAgICAgICAgUy5yZWNzW2tleV0gPSB7IGJsb2I6IGJsb2IsIHVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgc2Vjczogc2VjcyB9OwogICAgICAgICAgUy5yZWNvcmRlciA9IG51bGw7CiAgICAgICAgICBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOwogICAgICAgIH07CiAgICAgICAgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpeyBTLnJlY3Nba2V5XSA9IHtibG9iOm51bGwsdXJsOm51bGwsc2VjczpzZWNzfTsgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsgfQogICAgICB9IGVsc2UgewogICAgICAgIFMucmVjc1trZXldID0geyBibG9iOm51bGwsIHVybDpudWxsLCBzZWNzOiBzZWNzIH07CiAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgfQogICAgfTsKICAgIGlmKGhhdmVNaWMpewogICAgICBTLmNodW5rcyA9IFtdOwogICAgICB0cnl7CiAgICAgICAgUy5yZWNvcmRlciA9IFMubWltZSA\/IG5ldyBNZWRpYVJlY29yZGVyKFMuc3RyZWFtLHttaW1lVHlwZTpTLm1pbWV9KSA6IG5ldyBNZWRpYVJlY29yZGVyKFMuc3RyZWFtKTsKICAgICAgICBTLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IGZ1bmN0aW9uKGV2KXsgaWYoZXYuZGF0YSAmJiBldi5kYXRhLnNpemUpIFMuY2h1bmtzLnB1c2goZXYuZGF0YSk7IH07CiAgICAgICAgUy5yZWNvcmRlci5zdGFydCgpOwogICAgICB9Y2F0Y2goZSl7IFMucmVjb3JkZXIgPSBudWxsOyBoYXZlTWljID0gZmFsc2U7IGxidC50ZXh0Q29udGVudCA9IFUudGltZXJPbmx5OyB9CiAgICB9CiAgICB2YXIgc3RvcCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biB3YXJuIixVLnN0b3BSZWMpOwogICAgc3RvcC5vbmNsaWNrID0gZmluaXNoOwogICAgY3RyLmFwcGVuZENoaWxkKHN0b3ApOwogICAgY291bnRkb3duKHJlY1NlY3MsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBmaW5pc2gpOwogIH0KICBmdW5jdGlvbiBzaG93UmV2aWV3KHNjcm9sbFRvKXsKICAgIHZhciByID0gUy5yZWNzW2tleV07IGlmKCFyKSByZXR1cm47CiAgICByZXZpZXdTbG90LmlubmVySFRNTCA9ICIiOwogICAgdmFyIHJ2ID0gZWwoImRpdiIsImNscC1zcGstcmV2aWV3Iik7CiAgICBydi5hcHBlbmRDaGlsZChlbCgiZGl2Iiwib2siLCJcdTI3MTQgIitVLnJlY29yZGVkKyIgKCIrci5zZWNzKyJzKSIpKTsKICAgIGlmKHIudXJsKXsKICAgICAgdmFyIGF1ID0gZWwoImF1ZGlvIik7IGF1LmNvbnRyb2xzID0gdHJ1ZTsgYXUuc3JjID0gci51cmw7CiAgICAgIHJ2LmFwcGVuZENoaWxkKGF1KTsKICAgICAgdmFyIHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogICAgICB2YXIgZGwgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmRvd25sb2FkKTsKICAgICAgZGwuaHJlZiA9IHIudXJsOyBkbC5kb3dubG9hZCA9ICJjZWxwaXAtcyIrRC5zZXQrInQiK0QudGVzdCsiLXRhc2siKyhrZXk9PT0idyI\/IjAiOmtleS5yZXBsYWNlKCJ0IiwiIikpKyIuIitTLmV4dDsKICAgICAgcm93LmFwcGVuZENoaWxkKGRsKTsKICAgICAgcnYuYXBwZW5kQ2hpbGQocm93KTsKICAgIH0KICAgIHJldmlld1Nsb3QuYXBwZW5kQ2hpbGQocnYpOwogICAgaWYoc2Nyb2xsVG8peyB0cnl7IHJ2LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIn0pOyB9Y2F0Y2goZSl7fSB9CiAgfQogIHNob3dJZGxlKCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSB0aXBzL3NhbXBsZXMgYWNjb3JkaW9uIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gYWNjb3JkaW9uKHQpewogIHZhciBhY2MgPSBlbCgiZGl2IiwiY2xwLXNway1hY2MiKTsKICB2YXIgYnRuID0gZWwoImJ1dHRvbiIsbnVsbCxVLnRpcHNUb2dnbGUpOwogIGJ0bi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgYWNjLmNsYXNzTmFtZSA9IGFjYy5jbGFzc05hbWUuaW5kZXhPZigib3BlbiIpPi0xID8gImNscC1zcGstYWNjIiA6ICJjbHAtc3BrLWFjYyBvcGVuIjsgfTsKICBhY2MuYXBwZW5kQ2hpbGQoYnRuKTsKICB2YXIgYm9keSA9IGVsKCJkaXYiLCJjbHAtc3BrLWFjY2JvZHkiKTsKICB2YXIgdGFicyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRhYnMiKTsKICB2YXIgcGFuZXMgPSBbXTsKICBmdW5jdGlvbiBhZGRUYWIobGFiZWwsIHBhbmVCdWlsZGVyKXsKICAgIHZhciBpID0gcGFuZXMubGVuZ3RoOwogICAgdmFyIHRiID0gZWwoImJ1dHRvbiIsImNscC1zcGstdGFiIisoaT09PTA\/IiBvbiI6IiIpLGxhYmVsKTsKICAgIHZhciBwbiA9IGVsKCJkaXYiLCJjbHAtc3BrLXRhYnBhbmUiKyhpPT09MD8iIG9uIjoiIikpOwogICAgcGFuZUJ1aWxkZXIocG4pOwogICAgdGIub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgIHRhYnMucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstdGFiIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRhYiIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICAgIGJvZHkucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstdGFicGFuZSIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWJwYW5lIisoaj09PWk\/IiBvbiI6IiIpOyB9KTsKICAgIH07CiAgICB0YWJzLmFwcGVuZENoaWxkKHRiKTsgcGFuZXMucHVzaChwbik7CiAgfQogIGFkZFRhYihVLnRhYlRpcHMsIGZ1bmN0aW9uKHBuKXsKICAgIHZhciB1bCA9IGVsKCJ1bCIpOwogICAgdC50aXBzLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgICBwbi5hcHBlbmRDaGlsZCh1bCk7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLCI8Yj4iK1UudXNlZnVsUGhyYXNlcysiOjwvYj4iKSk7CiAgICB2YXIgcGggPSBlbCgiZGl2IiwiY2xwLXNway1waHIiKTsKICAgIHQudGlwcy5waHJhc2VzLmZvckVhY2goZnVuY3Rpb24oeCl7IHBoLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgICBwbi5hcHBlbmRDaGlsZChwaCk7CiAgfSk7CiAgaWYodC5zNikgYWRkVGFiKFUudGFiUzYsIGZ1bmN0aW9uKHBuKXsgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstc2FtcGxlIHM2Iix0LnM2KSk7IH0pOwogIGlmKHQuczkpIGFkZFRhYihVLnRhYlM5LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSIsdC5zOSkpOyB9KTsKICBpZighdC53YXJtdXApIGFkZFRhYihVLnRhYlJ1YnJpYywgZnVuY3Rpb24ocG4pewogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCxVLnJ1YnJpY05vdGUpKTsKICAgIHZhciB0YiA9IGVsKCJ0YWJsZSIsImNscC1zcGstcnViIik7CiAgICBpZighUy5ydWJyaWNbdC5rXSkgUy5ydWJyaWNbdC5rXSA9IFswLDAsMCwwXTsKICAgIHZhciBlc3REID0gZWwoImRpdiIsImNscC1zcGstZXN0IiwiIik7CiAgICBVLnJ1YnJpY0NyaXQuZm9yRWFjaChmdW5jdGlvbihjcixjaSl7CiAgICAgIHZhciB0ciA9IGVsKCJ0ciIpOwogICAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsY3IpKTsKICAgICAgdmFyIHRkID0gZWwoInRkIik7IHRkLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsgdGQuc3R5bGUudGV4dEFsaWduID0gInJpZ2h0IjsKICAgICAgZm9yKHZhciBzMj0xO3MyPD01O3MyKyspewogICAgICAgIChmdW5jdGlvbihzdil7CiAgICAgICAgICB2YXIgc3AgPSBlbCgic3BhbiIsImNscC1zcGstc3RhciIrKFMucnVicmljW3Qua11bY2ldPj1zdj8iIG9uIjoiIiksIlx1MjYwNSIpOwogICAgICAgICAgc3Aub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIFMucnVicmljW3Qua11bY2ldID0gc3Y7CiAgICAgICAgICAgIHRkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXN0YXIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstc3RhciIrKGo8c3Y\/IiBvbiI6IiIpOyB9KTsKICAgICAgICAgICAgdXBkKCk7CiAgICAgICAgICB9OwogICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgIH0pKHMyKTsKICAgICAgfQogICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgIHRiLmFwcGVuZENoaWxkKHRyKTsKICAgIH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodGIpOwogICAgcG4uYXBwZW5kQ2hpbGQoZXN0RCk7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICAgIGZ1bmN0aW9uIHVwZCgpewogICAgICB2YXIgYXJyID0gUy5ydWJyaWNbdC5rXTsgdmFyIGRvbmUgPSBhcnIuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KTsKICAgICAgZXN0RC50ZXh0Q29udGVudCA9IGRvbmUgPyAoVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhcnIucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYjt9LDApLzQpKSA6ICIiOwogICAgfQogICAgdXBkKCk7CiAgfSk7CiAgYm9keS5pbnNlcnRCZWZvcmUodGFicywgYm9keS5maXJzdENoaWxkKTsKICBwYW5lcy5mb3JFYWNoKGZ1bmN0aW9uKHBuKXsgYm9keS5hcHBlbmRDaGlsZChwbik7IH0pOwogIGFjYy5hcHBlbmRDaGlsZChib2R5KTsKICByZXR1cm4gYWNjOwp9CgovKiAtLS0tLS0tLS0tIGVuZCBzY3JlZW4gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbmRTY3JlZW4oKXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIGNscC1zcGstZW5kIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLEQuaGVhZGVyKyIgLSBTcGVha2luZyBcdTIwMTQgIitVLmVuZFRpdGxlKSk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLmVuZFRpdGxlKyI8L2I+ICIrVS5lbmRTdWIpKTsKICB2YXIgdGIgPSBlbCgidGFibGUiKTsKICB2YXIgdGhyID0gZWwoInRyIik7IFsiVGFzayIsIlR5cGUiLCJSZWNvcmRpbmciLCIiXS5mb3JFYWNoKGZ1bmN0aW9uKGgpeyB0aHIuYXBwZW5kQ2hpbGQoZWwoInRoIixudWxsLGgpKTsgfSk7CiAgdGIuYXBwZW5kQ2hpbGQodGhyKTsKICB2YXIgbnJlYyA9IDA7CiAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7CiAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCwiPGI+IisodC53YXJtdXA\/IlciOnQubnVtKSsiPC9iPiIpKTsKICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCx0LnR5cGVFbikpOwogICAgdmFyIHIgPSBTLnJlY3NbdC5rXTsKICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOwogICAgaWYociAmJiByLnVybCl7IG5yZWMrKzsgdmFyIGF1ID0gZWwoImF1ZGlvIik7IGF1LmNvbnRyb2xzID0gdHJ1ZTsgYXUuc3JjID0gci51cmw7IHRkLmFwcGVuZENoaWxkKGF1KTsgfQogICAgZWxzZSBpZihyKXsgbnJlYysrOyB0ZC50ZXh0Q29udGVudCA9IHIuc2VjcysicyAoIitVLnRpbWVyT25seSsiKSI7IH0KICAgIGVsc2UgdGQuaW5uZXJIVE1MID0gIjxzcGFuIHN0eWxlPSdjb2xvcjojYzYyODI4Jz4iK1UuZW5kTm9SZWMrIjwvc3Bhbj4iOwogICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgdmFyIHRkMiA9IGVsKCJ0ZCIpOwogICAgdmFyIGdvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIiwiXHUyMTkyIik7CiAgICBnby5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICB0ZDIuYXBwZW5kQ2hpbGQoZ28pOwogICAgdHIuYXBwZW5kQ2hpbGQodGQyKTsKICAgIHRiLmFwcGVuZENoaWxkKHRyKTsKICB9KTsKICBiLmFwcGVuZENoaWxkKHRiKTsKICAvKiBydWJyaWMgYXZnICovCiAgdmFyIHZhbHMgPSBbXTsKICBPYmplY3Qua2V5cyhTLnJ1YnJpYykuZm9yRWFjaChmdW5jdGlvbihrKXsgdmFyIGE9Uy5ydWJyaWNba107IGlmKGEgJiYgYS5ldmVyeShmdW5jdGlvbih4KXtyZXR1cm4geD4wO30pKSB2YWxzLnB1c2goYS5yZWR1Y2UoZnVuY3Rpb24oeCx5KXtyZXR1cm4geCt5O30sMCkvNCk7IH0pOwogIGlmKHZhbHMubGVuZ3RoKXsKICAgIHZhciBhdmcgPSB2YWxzLnJlZHVjZShmdW5jdGlvbihhLGMpe3JldHVybiBhK2M7fSwwKS92YWxzLmxlbmd0aDsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstZXN0IixVLmVzdGltYXRlKyIgIitlc3RUZXh0KGF2ZykrIiAoIit2YWxzLmxlbmd0aCsiIHRhc2socykgc2VsZi1yYXRlZCkiKSk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUuZXN0RGlzY2xhaW1lcikpOwogIH0KICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgdmFyIHJlZG8gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuZW5kUmVkbyk7CiAgcmVkby5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgIE9iamVjdC5rZXlzKFMucmVjcykuZm9yRWFjaChmdW5jdGlvbihrKXsgaWYoUy5yZWNzW2tdJiZTLnJlY3Nba10udXJsKXsgdHJ5e1VSTC5yZXZva2VPYmplY3RVUkwoUy5yZWNzW2tdLnVybCk7fWNhdGNoKGUpe30gfSB9KTsKICAgIFMucmVjcyA9IHt9OyBTLnJ1YnJpYyA9IHt9OyBTLnQ1Y2hvaWNlID0ge307CiAgICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCl7IFMucGhhc2VbdC5rXSA9IHQucGhhc2VkPyJjaG9vc2UtaWRsZSI6ImlkbGUiOyB9KTsKICAgIFMuY3VyID0gLTE7IHJlbmRlcigpOwogIH07CiAgdmFyIHQyID0gZWwoImEiLCJjbHAtc3BrLWJ0biBwcmkiLFUuZW5kVDIrIiAiKyhELnRlc3Q9PT0xPzI6MSkrIiBcdTIxOTIiKTsgdDIuaHJlZiA9IEQub3RoZXJVcmw7CiAgdmFyIGh1YiA9IGVsKCJhIiwiY2xwLXNway1idG4iLFUuZW5kSHViKTsgaHViLmhyZWYgPSAiL2NlbHBpcC8iOwogIGN0ci5hcHBlbmRDaGlsZChyZWRvKTsgY3RyLmFwcGVuZENoaWxkKHQyKTsgY3RyLmFwcGVuZENoaWxkKGh1Yik7CiAgYi5hcHBlbmRDaGlsZChjdHIpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbWljIixVLm1pY05vdGUpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiBleHBvc2UgZm9yIHRlc3RzICovCndpbmRvdy5DTFBTUEsgPSB7IHN0YXRlOiBTLCBkYXRhOiBELCBnb3RvOiBmdW5jdGlvbihpKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH0sIHJlbmRlcjogcmVuZGVyIH07CnJlbmRlcigpOwp9KSgpOwo=\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 6 Practice Test 2: all 8 official-style tasks with on-screen prep and recording timers, sample responses and self-assessment tips. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6348","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6348"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6348\/revisions"}],"predecessor-version":[{"id":6521,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6348\/revisions\/6521"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}