{"id":6361,"date":"2026-07-10T15:34:57","date_gmt":"2026-07-10T15:34:57","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-7-test-2-speaking\/"},"modified":"2026-07-12T03:16:23","modified_gmt":"2026-07-12T03:16:23","slug":"celpip-set-7-test-2-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-7-test-2-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 7 \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(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0Ijo3LCJ0ZXN0IjoyLCJ0aXRsZSI6IkNFTFBJUCBTcGVha2luZyBcdTIwMTQgU2V0IDcgXHUwMGI3IFByYWN0aWNlIFRlc3QgMiIsImhlYWRlciI6IlByYWN0aWNlIFRlc3QgMiIsImltZ3MiOnsic2NlbmUiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczd0Mi1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M3dDItb3B0LWEuanBnIiwib3B0QiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zN3QyLW9wdC1iLmpwZyIsIm9wdE90aGVyIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M3dDItb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczd0Mi11bnVzdWFsLmpwZyJ9LCJvdGhlclVybCI6Ii9jZWxwaXAtc2V0LTctdGVzdC0xLXNwZWFraW5nLyIsInRhc2tzIjpbeyJrIjoidyIsIm51bSI6MCwidHlwZUVuIjoiU3BlYWtpbmcgUHJhY3RpY2UgVGFzayIsInByZXAiOjMwLCJyZWMiOjYwLCJ3YXJtdXAiOnRydWUsInByb21wdCI6IlRhbGsgYWJvdXQgb25lIG9mIHlvdXIgYmVzdCBmcmllbmRzLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlRoZSBQcmFjdGljZSBUYXNrICh3YXJtLXVwKSBpcyBOT1Qgc2NvcmVkIFx1MjAxNCBpdCBpcyBoZXJlIHRvIGhlbHAgeW91IGdldCB1c2VkIHRvIHRoZSBjb250cm9scyBhbmQgd2FybSB1cCB5b3VyIHZvaWNlLiIsIlNwZWFrIG5hdHVyYWxseSBhYm91dCBhIGJlc3QgZnJpZW5kOiB0aGVpciBuYW1lLCBob3cgeW91IG1ldCwgdGhlaXIgcGVyc29uYWxpdHksIGEgbWVtb3J5IHlvdSBzaGFyZS4iLCJVc2UgaXQgdG8gYWRqdXN0IHlvdXIgcG9zdHVyZSwgbWljcm9waG9uZSBkaXN0YW5jZSwgYW5kIHNwZWFraW5nIHBhY2UuIl0sInBocmFzZXMiOlsiTXkgYmVzdCBmcmllbmQncyBuYW1lIGlzXHUyMDI2IiwiV2UgbWV0IHdoZW5cdTIwMjYiLCJXaGF0IEkgbGlrZSBtb3N0IGFib3V0IGhpbS9oZXIgaXNcdTIwMjYiXX0sInM2IjpudWxsLCJzOSI6bnVsbH0seyJrIjoidDEiLCJudW0iOjEsInR5cGVFbiI6IkdpdmluZyBBZHZpY2UiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiWW91ciBmcmllbmQgTGF1cmVuIGFuZCBoZXIgcm9vbW1hdGUgaGFkIHBsYW5uZWQgdG8gZ28gb24gdmFjYXRpb24gdG9nZXRoZXIuIEhvd2V2ZXIsIHRoZXkgaGFkIGFuIGFyZ3VtZW50IGFib3V0IHdoYXQgYWN0aXZpdGllcyB0byBkbyB0b2dldGhlci4gR2l2ZSBMYXVyZW4gYWR2aWNlIG9uIHdoYXQgc2hlIHNob3VsZCBkbyB0byBzb2x2ZSB0aGUgcHJvYmxlbSB3aXRoIGhlciByb29tbWF0ZS4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJPcGVuaW5nOiBncmVldCB5b3VyIGZyaWVuZCBhbmQgcmVzdGF0ZSB0aGUgc2l0dWF0aW9uIGluIG9uZSBzZW50ZW5jZS4iLCJCb2R5OiBnaXZlIDJcdTIwMTMzIHBpZWNlcyBvZiBhZHZpY2UsIGVhY2ggd2l0aCBhIHJlYXNvbiBvciBleGFtcGxlIChGaXJzdFx1MjAyNiwgYmVjYXVzZVx1MjAyNjsgQW5vdGhlciBpZGVhIGlzXHUyMDI2KS4iLCJDbG9zaW5nOiBlbmNvdXJhZ2UgdGhlbSBhbmQgd2lzaCB0aGVtIGx1Y2suIiwiQWR2aWNlIGZvciByZXNvbHZpbmcgYSBjb25mbGljdDogdGFsayBjYWxtbHkgYmVmb3JlIHRoZSB0cmlwIChub3QgYnkgdGV4dCksIGxldCBlYWNoIHBlcnNvbiBsaXN0IHRoZWlyIHRvcCAyLTMgbXVzdC1kbyBhY3Rpdml0aWVzLCBzcGxpdCB0aGUgZGF5cyBmYWlybHksIGFuZCBwbGFuIGEgZmV3IGhvdXJzIGFwYXJ0IGVhY2ggZGF5IC0geW91IGRvIG5vdCBoYXZlIHRvIGRvIGV2ZXJ5dGhpbmcgdG9nZXRoZXIuIENsb3NlIHdpdGggdGhlIGZyaWVuZHNoaXAtZmlyc3QgcmVtaW5kZXIuIl0sInBocmFzZXMiOlsiSWYgSSB3ZXJlIHlvdSwgSSdkXHUyMDI2IiwiWW91IHNob3VsZCBkZWZpbml0ZWx5XHUyMDI2IiwiQW5vdGhlciBvcHRpb24gaXMgdG9cdTIwMjYiLCJUcnVzdCBtZSwgeW91IHdvbid0IHJlZ3JldCBpdC4iXX0sInM2IjoiTGF1cmVuLCBJIGFtIHNvcnJ5IHRvIGhlYXIgYWJvdXQgdGhlIGFyZ3VtZW50LCBidXQgZG8gbm90IHdvcnJ5IFx1MjAxNCB0aGlzIHByb2JsZW0gaXMgdmVyeSBjb21tb24sIGFuZCB5b3UgY2FuIGZpeCBpdC4gSGVyZSBpcyBteSBhZHZpY2UuIEZpcnN0LCB0YWxrIHRvIHlvdXIgcm9vbW1hdGUgZmFjZSB0byBmYWNlLCBjYWxtbHksIGJlZm9yZSB0aGUgdHJpcC4gRG8gbm90IGZpZ2h0IGJ5IHRleHQgbWVzc2FnZSwgYmVjYXVzZSB0ZXh0cyBhbHdheXMgc291bmQgY29sZGVyIHRoYW4geW91ciByZWFsIHZvaWNlLiBTYXkgc29ycnkgZm9yIHRoZSBhcmd1bWVudCwgYW5kIHRlbGwgaGVyIHRoZSB2YWNhdGlvbiB0b2dldGhlciBpcyBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSBhY3Rpdml0aWVzLiBTZWNvbmQsIG1ha2UgYSBmYWlyIHBsYW4uIEVhY2ggb2YgeW91IHNob3VsZCB3cml0ZSB5b3VyIHRvcCB0aHJlZSBhY3Rpdml0aWVzLiBGb3IgZXhhbXBsZSwgbWF5YmUgeW91IHdhbnQgdGhlIG11c2V1bSBhbmQgdGhlIG9sZCB0b3duLCBhbmQgc2hlIHdhbnRzIHRoZSBiZWFjaCBhbmQgc2hvcHBpbmcuIFRoZW4gcHV0IGFsbCBzaXggdGhpbmdzIGluIHRoZSBwbGFuIFx1MjAxNCBvbmUgZGF5IGZvciB5b3VyIHdpc2hlcywgb25lIGRheSBmb3IgaGVycy4gVGhpcmQsIGFuZCB0aGlzIGlzIGltcG9ydGFudDogeW91IGRvIG5vdCBoYXZlIHRvIHNwZW5kIGV2ZXJ5IG1pbnV0ZSB0b2dldGhlci4gUGxhbiB0d28gb3IgdGhyZWUgaG91cnMgYXBhcnQgZWFjaCBkYXkuIFNoZSBjYW4gZ28gc2hvcHBpbmcgd2hpbGUgeW91IHZpc2l0IHRoZSBnYWxsZXJ5LCBhbmQgdGhlbiB5b3UgbWVldCBmb3IgZGlubmVyIGFuZCBzaGFyZSB5b3VyIHN0b3JpZXMuIFJlbWVtYmVyLCB0aGUgZ29hbCBvZiB0aGlzIHZhY2F0aW9uIGlzIG5vdCB0aGUgYWN0aXZpdGllcyBcdTIwMTQgaXQgaXMgaGF2aW5nIGZ1biB3aXRoIHlvdXIgZnJpZW5kLiBHb29kIGx1Y2ssIExhdXJlbiEiLCJzOSI6IkxhdXJlbiwgdGFrZSBhIGJyZWF0aCBcdTIwMTQgYSBwcmUtdHJpcCBhcmd1bWVudCBmZWVscyBodWdlIHJpZ2h0IG5vdywgYnV0IGl0J3Mgb25lIG9mIHRoZSBtb3N0IGZpeGFibGUgcHJvYmxlbXMgaW4gdGhlIHdvcmxkLCBzbyBsZXQgbWUgZ2l2ZSB5b3UgYSBnYW1lIHBsYW4uIFN0ZXAgb25lOiByZXBhaXIgdGhlIHJlbGF0aW9uc2hpcCBiZWZvcmUgeW91IHRvdWNoIHRoZSBpdGluZXJhcnkuIEludml0ZSBoZXIgZm9yIGEgY29mZmVlIFx1MjAxNCBmYWNlIHRvIGZhY2UsIG5vdCBvdmVyIHRleHQsIHdoZXJlIGV2ZXJ5IHdvcmQgcmVhZHMgYW5ncmllciB0aGFuIGludGVuZGVkIFx1MjAxNCBhbmQgb3BlbiB3aXRoIHRoZSBiaWcgdHJ1dGg6IHlvdSdkIHJhdGhlciBoYXZlIGEgY29tcHJvbWlzZWQgaXRpbmVyYXJ5IHdpdGggaGVyIHRoYW4gYSBwZXJmZWN0IG9uZSBhbG9uZS4gVGhhdCBzaW5nbGUgc2VudGVuY2UgdXN1YWxseSBtZWx0cyBtb3N0IG9mIHRoZSBpY2UuIFN0ZXAgdHdvOiBuZWdvdGlhdGUgbGlrZSBhZHVsdHMgaW5zdGVhZCBvZiBhcmd1aW5nIGxpa2Ugcm9vbW1hdGVzLiBFYWNoIG9mIHlvdSB3cml0ZXMgZG93biB5b3VyIHRvcCB0aHJlZSBtdXN0LWRvcywgcmFua2VkLiBUaGVuIGJ1aWxkIHRoZSBzY2hlZHVsZSBhcm91bmQgZmFpcm5lc3MgXHUyMDE0IGFsdGVybmF0ZSBkYXlzLCBvciBtb3JuaW5ncyBmb3IgaGVyIGxpc3QgYW5kIGFmdGVybm9vbnMgZm9yIHlvdXJzLiBXaGVuIGJvdGggcGVvcGxlIGNhbiBwb2ludCBhdCB0aGUgY2FsZW5kYXIgYW5kIHNlZSB0aGVpciBwcmlvcml0aWVzIG9uIGl0LCB0aGUgcmVzZW50bWVudCBldmFwb3JhdGVzLiBTdGVwIHRocmVlLCBhbmQgcGVvcGxlIGFsd2F5cyBmb3JnZXQgdGhpcyBvbmU6IHNjaGVkdWxlIHRpbWUgYXBhcnQuIEl0IHNvdW5kcyBjb3VudGVyaW50dWl0aXZlIGZvciBhIHNoYXJlZCB2YWNhdGlvbiwgYnV0IHR3byBvciB0aHJlZSBzb2xvIGhvdXJzIGEgZGF5IGlzIHRoZSBwcmVzc3VyZSB2YWx2ZSB0aGF0IGtlZXBzIHRyYXZlbCBjb21wYW5pb25zIGZyb20gc3RyYW5nbGluZyBlYWNoIG90aGVyLiBTaGUgaGl0cyB0aGUgYmVhY2gsIHlvdSB3YW5kZXIgdGhlIG9sZCB0b3duLCBhbmQgeW91IHJldW5pdGUgZm9yIGRpbm5lciB3aXRoIGFjdHVhbCBzdG9yaWVzIHRvIHRlbGwgZWFjaCBvdGhlci4gQW5kIGZpbmFsbHksIGFncmVlIG9uIGEgdGlueSBydWxlIGZvciB0aGUgdHJpcCBpdHNlbGY6IGlmIGEgZGlzYWdyZWVtZW50IHBvcHMgdXAsIHdob2V2ZXIgY2FyZXMgbW9yZSBhYm91dCB0aGF0IHBhcnRpY3VsYXIgdGhpbmcgd2lucywgYW5kIHRoZSBvdGhlciBsZXRzIGl0IGdvLiBGcmllbmRzaGlwcyBzdXJ2aXZlIGJhZCB3ZWF0aGVyIGFuZCBtaXNzZWQgYnVzZXM7IHdoYXQga2lsbHMgdHJpcHMgaXMgc2NvcmVrZWVwaW5nLiBZb3UgdHdvIHdpbGwgYmUgZmluZSBcdTIwMTQgaG9uZXN0bHksIHRoZSBmYWN0IHRoYXQgeW91J3JlIGFza2luZyBob3cgdG8gZml4IGl0IHRlbGxzIG1lIHlvdSBhbHJlYWR5IGNhcmUgZW5vdWdoIHRvIGZpeCBpdC4ifSx7ImsiOiJ0MiIsIm51bSI6MiwidHlwZUVuIjoiVGFsa2luZyBhYm91dCBhIFBlcnNvbmFsIEV4cGVyaWVuY2UiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiVGFsayBhYm91dCBhIHRpbWUgd2hlbiB5b3UgaGVscGVkIHNvbWVvbmUuIE1heWJlIHlvdSBjYW4gdGFsayBhYm91dCBoZWxwaW5nIGEgZnJpZW5kLCBhIGZhbWlseSBtZW1iZXIsIG9yIGEgY28td29ya2VyLiBXaG8gZGlkIHlvdSBoZWxwLCBob3cgZGlkIHlvdSBoZWxwIHRoZW0sIHdoYXQgd2FzIHRoZSByZXN1bHQsIGFuZCBob3cgZGlkIHRoZXkgcmVhY3QgdG8geW91ciBraW5kbmVzcz8iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJBbnN3ZXIgZXZlcnkgcGFydCBvZiB0aGUgcXVlc3Rpb24gKHdoYXQgaGFwcGVuZWQgXHUyMDEzIGhvdyBpdCB1bmZvbGRlZCBcdTIwMTMgdGhlIG91dGNvbWUgLyB3aHkgaXQgaXMgbWVtb3JhYmxlKS4iLCJVc2UgcGFzdCB0ZW5zZXMgYW5kIHRlbGwgaXQgaW4gb3JkZXI6IFRoaXMgaGFwcGVuZWRcdTIwMjYgXHUyMTkyIFRoZW5cdTIwMjYgXHUyMTkyIEluIHRoZSBlbmRcdTIwMjYiLCJGaW5pc2ggd2l0aCBhIGZlZWxpbmcgb3IgYSBsZXNzb24gbGVhcm5lZC4iLCJBbnN3ZXIgdGhlIGZvdXIgcGFydHM6IHdobyB5b3UgaGVscGVkIC0gaG93IC0gdGhlIHJlc3VsdCAtIHRoZWlyIHJlYWN0aW9uLiBBIHNtYWxsLCBjb25jcmV0ZSBhY3Qgb2Yga2luZG5lc3MgdG9sZCB3YXJtbHkgYmVhdHMgYSBncmFuZCBzdG9yeSB0b2xkIHZhZ3VlbHkuIl0sInBocmFzZXMiOlsiVGhpcyBoYXBwZW5lZCBhYm91dCB0d28geWVhcnMgYWdvXHUyMDI2IiwiQXQgZmlyc3RcdTIwMjYsIGJ1dCB0aGVuXHUyMDI2IiwiV2hhdCBtYWRlIGl0IHVuZm9yZ2V0dGFibGUgd2FzXHUyMDI2IiwiTG9va2luZyBiYWNrLCBcdTIwMjYiXX0sInM2IjoiSSB3YW50IHRvIHRlbGwgeW91IGFib3V0IHRoZSB0aW1lIEkgaGVscGVkIG15IG5laWdoYm91ciwgTXJzLiBDaGVuLiBTaGUgaXMgYWJvdXQgZWlnaHR5IHllYXJzIG9sZCBhbmQgbGl2ZXMgYWxvbmUgaW4gdGhlIGFwYXJ0bWVudCBuZXh0IHRvIG1pbmUuIExhc3Qgd2ludGVyLCB0aGVyZSB3YXMgYSBodWdlIHNub3dzdG9ybSBpbiBvdXIgY2l0eSwgYW5kIGV2ZXJ5dGhpbmcgd2FzIGNsb3NlZCBmb3IgYWxtb3N0IGEgd2Vlay4gVGhlIHJvYWRzIHdlcmUgZGFuZ2Vyb3VzLCBlc3BlY2lhbGx5IGZvciBvbGQgcGVvcGxlLiBPbiB0aGUgc2Vjb25kIGRheSwgSSBrbm9ja2VkIG9uIGhlciBkb29yIHRvIGNoZWNrIGlmIHNoZSB3YXMgb2theS4gU2hlIHdhcyBmaW5lLCBidXQgc2hlIGhhZCBhbG1vc3Qgbm8gZm9vZCBsZWZ0LCBhbmQgc2hlIHdhcyBhZnJhaWQgdG8gd2FsayB0byB0aGUgc3RvcmUgb24gdGhlIGljZS4gU28gSSBwdXQgb24gbXkgYm9vdHMgYW5kIHdlbnQgdG8gdGhlIHN1cGVybWFya2V0IGZvciBoZXIuIEkgYm91Z2h0IGJyZWFkLCBtaWxrLCBlZ2dzLCB2ZWdldGFibGVzLCBhbmQgaGVyIGZhdm91cml0ZSB0ZWEuIEFmdGVyIHRoYXQsIEkgY2hlY2tlZCBvbiBoZXIgZXZlcnkgZGF5IHRoYXQgd2VlaywgYW5kIEkgYWxzbyBmaXhlZCBoZXIgaGVhdGVyLCB3aGljaCB3YXMgbWFraW5nIGEgc3RyYW5nZSBub2lzZS4gV2hlbiB0aGUgc25vdyBmaW5hbGx5IG1lbHRlZCwgTXJzLiBDaGVuIGludml0ZWQgbWUgZm9yIGRpbm5lciBhbmQgY29va2VkIGRlbGljaW91cyBkdW1wbGluZ3MgZm9yIG1lLiBTaGUgc2FpZCBJIHdhcyBsaWtlIGEgZ3JhbmRzb24gdG8gaGVyLiBOb3cgd2UgYXJlIHJlYWwgZnJpZW5kcyBcdTIwMTQgc2hlIHN0aWxsIGJyaW5ncyBtZSBjb29raWVzIGV2ZXJ5IFN1bmRheSwgYW5kIEkgc3RpbGwgY2FycnkgaGVyIGhlYXZ5IGJhZ3MuIEhlbHBpbmcgaGVyIG1hZGUgbWUgZmVlbCByZWFsbHkgdXNlZnVsIGFuZCBoYXBweS4iLCJzOSI6IkknZCBsaWtlIHRvIHRlbGwgeW91IGFib3V0IGhlbHBpbmcgbXkgZWxkZXJseSBuZWlnaGJvdXIsIE1ycy4gQ2hlbiwgZHVyaW5nIGEgc25vd3N0b3JtIFx1MjAxNCBhIHNtYWxsIHN0b3J5LCBidXQgb25lIHRoYXQgY2hhbmdlZCBib3RoIG9mIG91ciBsaXZlcyBhIGxpdHRsZS4gTXJzLiBDaGVuIGlzIGluIGhlciBlYXJseSBlaWdodGllcyBhbmQgbGl2ZXMgYWxvbmUgbmV4dCBkb29yIHRvIG1lLiBMYXN0IHdpbnRlciBvdXIgY2l0eSB3YXMgaGl0IGJ5IGEgYnJ1dGFsIHN0b3JtOiBoYWxmIGEgbWV0cmUgb2Ygc25vdywgaWN5IHNpZGV3YWxrcywgYnVzZXMgY2FuY2VsbGVkIGZvciBuZWFybHkgYSB3ZWVrLiBPbiB0aGUgc2Vjb25kIGRheSBpdCBvY2N1cnJlZCB0byBtZSB0aGF0IEkgaGFkbid0IHNlZW4gaGVyLCBzbyBJIGtub2NrZWQgb24gaGVyIGRvb3IuIFNoZSB3YXMgY2hlZXJmdWwgYXMgYWx3YXlzLCBidXQgSSBub3RpY2VkIGhlciBmcmlkZ2Ugd2FzIG5lYXJseSBlbXB0eSBcdTIwMTQgc2hlJ2QgYmVlbiB0b28gZnJpZ2h0ZW5lZCBvZiB0aGUgaWNlIHRvIHdhbGsgdG8gdGhlIHN0b3JlLCBhbmQgdG9vIHByb3VkIHRvIGFzayBhbnlvbmUuIFNvIEkgbWFkZSBpdCBzaW1wbGU6IEkgdG9sZCBoZXIgSSB3YXMgZ29pbmcgc2hvcHBpbmcgYW55d2F5IGFuZCBhc2tlZCBmb3IgaGVyIGxpc3QuIEkgY2FtZSBiYWNrIHdpdGggZ3JvY2VyaWVzIGFuZCBoZXIgZmF2b3VyaXRlIGphc21pbmUgdGVhLCBhbmQgZnJvbSB0aGVuIG9uIEkgY2hlY2tlZCBpbiBldmVyeSBkYXkgdGhhdCB3ZWVrIFx1MjAxNCBzaG92ZWxsZWQgaGVyIHNoYXJlIG9mIHRoZSB3YWxrd2F5LCBmaXhlZCB0aGUgcmF0dGxpbmcgcmFkaWF0b3Igc2hlJ2QgYmVlbiBwb2xpdGVseSBlbmR1cmluZyBmb3IgYSBtb250aC4gVGhlIHJlc3VsdCB3ZW50IGZhciBiZXlvbmQgdGhhdCB3ZWVrLiBXaGVuIHRoZSByb2FkcyBjbGVhcmVkLCBzaGUgaW52aXRlZCBtZSB0byBkaW5uZXIgYW5kIG1hZGUgaGFuZG1hZGUgZHVtcGxpbmdzIFx1MjAxNCB0aGUgYmVzdCBJJ3ZlIGV2ZXIgZWF0ZW4sIHJlc3RhdXJhbnQgaW5jbHVkZWQgXHUyMDE0IGFuZCB0b2xkIG1lIEkgcmVtaW5kZWQgaGVyIG9mIGhlciBncmFuZHNvbiBpbiBTaGFuZ2hhaS4gV2UndmUgYmVlbiBnZW51aW5lIGZyaWVuZHMgZXZlciBzaW5jZTogc2hlIGxlYXZlcyBjb29raWVzIG9uIG15IGRvb3JzdGVwIG9uIFN1bmRheXM7IEkgaGFuZGxlIGhlciBoZWF2eSBiYWdzIGFuZCBoZXIgc21va2UtYWxhcm0gYmF0dGVyaWVzLiBIZXIgcmVhY3Rpb24gdGF1Z2h0IG1lIHNvbWV0aGluZyB0aGF0IHN0dWNrOiBmb3Igc29tZW9uZSBsaXZpbmcgYWxvbmUsIHRoZSBncm9jZXJpZXMgd2VyZSBub3RoaW5nIFx1MjAxNCBiZWluZyByZW1lbWJlcmVkIHdhcyBldmVyeXRoaW5nLiJ9LHsiayI6InQzIiwibnVtIjozLCJ0eXBlRW4iOiJEZXNjcmliaW5nIGEgU2NlbmUiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiRGVzY3JpYmUgc29tZSB0aGluZ3MgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoZSBwaWN0dXJlIGJlbG93IGFzIHdlbGwgYXMgeW91IGNhbi4gVGhlIHBlcnNvbiB3aXRoIHdob20geW91IGFyZSBzcGVha2luZyBjYW5ub3Qgc2VlIHRoZSBwaWN0dXJlLiIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkZpcnN0IHNlbnRlbmNlOiBnaXZlIHRoZSBvdmVydmlldyAod2hlcmUgaXQgaXMsIHdoYXQgdGhlIGF0bW9zcGhlcmUgaXMgbGlrZSkuIiwiRGVzY3JpYmUgNFx1MjAxMzYgZGV0YWlscyBieSBsb2NhdGlvbjogaW4gdGhlIGZvcmVncm91bmQgLyBvbiB0aGUgbGVmdCAvIGF0IHRoZSBiYWNrXHUyMDI2OyB1c2UgdGhlIHByZXNlbnQgY29udGludW91cy4iLCJUaGUgbGlzdGVuZXIgQ0FOTk9UIHNlZSB0aGUgcGljdHVyZSBcdTIwMTQgYmUgc3BlY2lmaWM7IHdoZW4gdW5zdXJlLCB1c2Ugc2VlbXMgLyBhcHBlYXJzIC8gbG9va3MgbGlrZS4iLCJBIGZpcnN0LWFpZCBtb21lbnQgYXQgYSBraWRzJyBzcG9ydHMgZmllbGQsIHVuZGVyIGEgeWVsbG93IGNhbm9weSB0ZW50OiBnbyBpbiBvcmRlciAtIHRoZSBpbmp1cmVkIHBsYXllciB3cmFwcGVkIGluIGEgYmx1ZSBibGFua2V0IHNpdHRpbmcgb24gYSBmb2xkaW5nIGNoYWlyIChhIHRlYW1tYXRlIGJlc2lkZSBoaW0pIC0+IHRoZSBnaXJsIGluIGdyZWVuIGFuZCB0aGUgcGVyc29uIGluIHRoZSBkYXJrIGhvb2RpZSBvcGVuaW5nIHRoZSBmaXJzdC1haWQga2l0IHdpdGggcmVkIGNyb3NzZXMgLT4gdGhlIGN1cmlvdXMgYnJvd24gZG9nIHNuaWZmaW5nIHRoZSBraXQgLT4gdGhlIG1hbiBpbiB0aGUgcmVkIGhvb2RpZSBoYW5kaW5nIG92ZXIgYSB3YXRlciBib3R0bGUgYW5kIHRoZSBvbGRlciBtYW4gaW4gZ3JleSBzdGFuZGluZyBieSAtPiB0aGUgdGVhbSBpbiByZWQtYW5kLXllbGxvdyB1bmlmb3JtcyBnYXRoZXJlZCBvbiB0aGUgZmllbGQgYmVoaW5kIC0+IHRoZSBzcG9ydHMgYmFncyBzY2F0dGVyZWQgb24gdGhlIGdyYXNzLiJdLCJwaHJhc2VzIjpbIkluIHRoZSBmb3JlZ3JvdW5kLCBcdTIwMjYiLCJPbiB0aGUgcmlnaHQtaGFuZCBzaWRlLCBcdTIwMjYiLCJJdCBsb29rcyBsaWtlXHUyMDI2IiwiVGhlIHdob2xlIHBsYWNlIGZlZWxzXHUyMDI2Il19LCJzNiI6IlRoaXMgcGljdHVyZSBzaG93cyBhIGNoaWxkcmVuJ3Mgc3BvcnRzIGdhbWUsIGFuZCBJIHRoaW5rIG9uZSBwbGF5ZXIganVzdCBnb3QgaHVydC4gSW4gdGhlIG1pZGRsZSwgdW5kZXIgYSBiaWcgeWVsbG93IHRlbnQsIGEgYm95IGlzIHNpdHRpbmcgb24gYSBmb2xkaW5nIGNoYWlyLiBIZSBpcyB3cmFwcGVkIGluIGEgYmx1ZSBibGFua2V0LCBhbmQgaGUgbG9va3MgY29sZCBvciBtYXliZSBpbiBzaG9jay4gQW5vdGhlciBib3kgaW4gYSB0ZWFtIHVuaWZvcm0gaXMgc2l0dGluZyBuZXh0IHRvIGhpbS4gSW4gZnJvbnQgb2YgdGhlbSwgdHdvIHBlb3BsZSBhcmUga25lZWxpbmcgb24gdGhlIGdyYXNzOiBhIGdpcmwgaW4gYSBncmVlbiBzaGlydCBhbmQgYSBwZXJzb24gaW4gYSBkYXJrIGhvb2RpZS4gVGhleSBhcmUgb3BlbmluZyBhIHdoaXRlIGZpcnN0LWFpZCBib3ggd2l0aCByZWQgY3Jvc3NlcyBvbiBpdCwgdG8gZmluZCBiYW5kYWdlcy4gQSBmdW5ueSBkZXRhaWw6IGEgYnJvd24gZG9nIGlzIHN0YW5kaW5nIHJpZ2h0IG5leHQgdG8gdGhlbSBhbmQgc25pZmZpbmcgaW5zaWRlIHRoZSBmaXJzdC1haWQgYm94IFx1MjAxNCBoZSBpcyB2ZXJ5IGN1cmlvdXMhIE9uIHRoZSByaWdodCBzaWRlLCBhIG1hbiBpbiBhIHJlZCBob29kaWUgaXMgZ2l2aW5nIGEgYm90dGxlIG9mIHdhdGVyIHRvIHRoZSBodXJ0IGJveSwgYW5kIGFuIG9sZGVyIG1hbiB3aXRoIGdyZXkgaGFpciBpcyBzdGFuZGluZyBuZXh0IHRvIGhpbSwgbWF5YmUgdGhlIGdyYW5kZmF0aGVyIG9yIHRoZSBjb2FjaC4gSW4gdGhlIGJhY2tncm91bmQsIEkgY2FuIHNlZSB0aGUgcmVzdCBvZiB0aGUgdGVhbSBpbiByZWQgYW5kIHllbGxvdyB1bmlmb3Jtcywgc3RhbmRpbmcgdG9nZXRoZXIgb24gdGhlIGZpZWxkIG5lYXIgYSBzbWFsbCBidWlsZGluZy4gVGhlcmUgYXJlIGFsc28gbWFueSBzcG9ydHMgYmFncyBvbiB0aGUgZ3Jhc3MgXHUyMDE0IGJsdWUsIHB1cnBsZSwgYW5kIHBpbmsgb25lcy4gRXZlcnlvbmUgaXMgdGFraW5nIGNhcmUgb2YgdGhlIGJveSwgc28gSSB0aGluayBoZSB3aWxsIGJlIGZpbmUuIiwiczkiOiJUaGlzIHBpY3R1cmUgY2FwdHVyZXMgdGhlIG1pbnV0ZXMgcmlnaHQgYWZ0ZXIgYSBzbWFsbCBzcG9ydHMgaW5qdXJ5IGF0IGEga2lkcycgZ2FtZSwgYW5kIGhvbmVzdGx5LCBpdCdzIGFzIGhlYXJ0LXdhcm1pbmcgYXMgaXQgaXMgZHJhbWF0aWMuIFRoZSBhY3Rpb24gY2VudHJlcyB1bmRlciBhIGJpZyB5ZWxsb3cgY2Fub3B5IHRlbnQgYXQgdGhlIGVkZ2Ugb2YgdGhlIGZpZWxkLiBBIHlvdW5nIHBsYXllciBpcyBzaXR0aW5nIG9uIGEgZm9sZGluZyBjYW1wIGNoYWlyLCBidW5kbGVkIHVwIGluIGEgYmx1ZSBibGFua2V0IFx1MjAxNCBoZSdzIGNsZWFybHkgdGhlIGNhc3VhbHR5LCBsb29raW5nIGEgYml0IHNoYWtlbiBcdTIwMTQgd2l0aCBhIHRlYW1tYXRlIGluIHVuaWZvcm0gc2l0dGluZyBsb3lhbGx5IGJlc2lkZSBoaW0uIEtuZWVsaW5nIG9uIHRoZSBncmFzcyBpbiBmcm9udCBvZiB0aGVtLCBhIGdpcmwgaW4gYSBncmVlbiB0b3AgYW5kIGEgY29tcGFuaW9uIGluIGEgZGFyayBob29kZWQgamFja2V0IGhhdmUgZmx1bmcgb3BlbiBhIGZpcnN0LWFpZCBraXQgbWFya2VkIHdpdGggcmVkIGNyb3NzZXMgYW5kIGFyZSBkaWdnaW5nIHRocm91Z2ggaXQgZm9yIHN1cHBsaWVzLiBBbmQgcmlnaHQgYmV0d2VlbiB0aGVtLCBhYnNvbHV0ZWx5IHJlZnVzaW5nIHRvIHJlc3BlY3QgdGhlIHNlcmlvdXNuZXNzIG9mIHRoZSBtb21lbnQsIGEgc2NydWZmeSBicm93biBkb2cgaGFzIHB1c2hlZCBpdHMgbm9zZSBpbnRvIHRoZSBraXQsIGludmVzdGlnYXRpbmcuIE9uIHRoZSByaWdodCwgdGhlIHN1cHBvcnQgY3JldyBoYXMgYXNzZW1ibGVkOiBhIGJpZyBtYW4gaW4gYSByZWQgaG9vZGllIGlzIGhhbmRpbmcgb3ZlciBhIHdhdGVyIGJvdHRsZSwgd2hpbGUgYW4gb2xkZXIgZ2VudGxlbWFuIGluIGEgZ3JleSBqYWNrZXQgXHUyMDE0IGEgZ3JhbmRmYXRoZXIsIEknZCBndWVzcywgb3IgdGhlIGNsdWIncyB2ZXRlcmFuIGNvYWNoIFx1MjAxNCBzdGFuZHMgd2F0Y2guIE1lYW53aGlsZSwgbGlmZSBnb2VzIG9uIGJlaGluZCB0aGVtOiB0aGUgcmVzdCBvZiB0aGUgdGVhbSwgaW4gYnJpZ2h0IHJlZC1hbmQteWVsbG93IHN0cmlwcywgaXMgY2x1c3RlcmVkIG9uIHRoZSBmaWVsZCBuZWFyIHRoZSBjbHViaG91c2UsIHByb2JhYmx5IGJlaW5nIHRvbGQgdG8gZ2l2ZSB0aGUgaW5qdXJlZCBib3kgc29tZSBzcGFjZSwgYW5kIGR1ZmZlbCBiYWdzIGluIGJsdWUsIHB1cnBsZSBhbmQgcGluayBsaWUgc2NhdHRlcmVkIGFjcm9zcyB0aGUgZ3Jhc3MuIEl0J3MgYSBzY2VuZSBvZiBtaW5vciBjYXRhc3Ryb3BoZSBoYW5kbGVkIHdpdGggbWF4aW11bSBjYXJlIFx1MjAxNCBhbmQgb25lIHZlcnkgdW5oZWxwZnVsIGRvZy4ifSx7ImsiOiJ0NCIsIm51bSI6NCwidHlwZUVuIjoiTWFraW5nIFByZWRpY3Rpb25zIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkluIHRoaXMgcGljdHVyZSwgd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBtb3N0IHByb2JhYmx5IGhhcHBlbiBuZXh0PyIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkVhY2ggcHJlZGljdGlvbiA9IHdpbGwgLyBiZSBnb2luZyB0byAvIHdpbGwgcHJvYmFibHkgKyBhIFJFQVNPTiBiYXNlZCBvbiBhIGRldGFpbCBpbiB0aGUgcGljdHVyZS4iLCJNYWtlIDNcdTIwMTM0IHByZWRpY3Rpb25zIGFib3V0IGRpZmZlcmVudCBwZW9wbGUgXHUyMDE0IGRvbid0IHN0b3AgYXQgb25lIGlkZWEuIiwiRmluaXNoIHdpdGggb25lIG92ZXJhbGwgcHJlZGljdGlvbiBmb3IgdGhlIHdob2xlIHNjZW5lLiIsIlNhbWUgZmllbGQgYXMgVGFzayAzIC0gbm93IHByZWRpY3Q6IHRoZSBoZWxwZXJzIHdpbGwgYmFuZGFnZSB0aGUgYm95J3MgbGVnLCBzb21lb25lIHdpbGwgcHVsbCB0aGUgZG9nIGF3YXkgZnJvbSB0aGUgZmlyc3QtYWlkIGtpdCwgdGhlIGJveSB3aWxsIGRyaW5rIHRoZSB3YXRlciBhbmQgd2FybSB1cCwgdGhlIHRlYW0gd2lsbCBjb21lIG92ZXIgdG8gY2hlZXIgaGltIHVwLCBhbmQgaGUgd2lsbCBlaXRoZXIgcmVqb2luIHRoZSBnYW1lIG9yIHdhdGNoIHRoZSByZXN0IGZyb20gdGhlIGJlbmNoIChhbmQgYmUgZmluZSkuIl0sInBocmFzZXMiOlsiXHUyMDI2aXMgYWJvdXQgdG9cdTIwMjYiLCJIZSdsbCBtb3N0IGxpa2VseVx1MjAyNiIsIkp1ZGdpbmcgYnlcdTIwMjYsIEkgZXhwZWN0XHUyMDI2IiwiV2l0aGluIG1pbnV0ZXMsIFx1MjAyNiJdfSwiczYiOiJJIHRoaW5rIGV2ZXJ5dGhpbmcgd2lsbCBlbmQgd2VsbCBhdCB0aGlzIHNwb3J0cyBmaWVsZC4gRmlyc3QsIHRoZSBnaXJsIGluIGdyZWVuIHdpbGwgZmluZCB0aGUgYmFuZGFnZSBpbiB0aGUgZmlyc3QtYWlkIGJveCwgYW5kIHNoZSB3aWxsIGNhcmVmdWxseSB3cmFwIHRoZSBib3kncyBodXJ0IGxlZy4gU29tZWJvZHkgd2lsbCBwdWxsIHRoZSBjdXJpb3VzIGRvZyBhd2F5IFx1MjAxNCBtYXliZSB0aGUgbWFuIGluIHRoZSByZWQgaG9vZGllIHdpbGwgc2F5LCBnbyBhd2F5LCBkb2dneSEgXHUyMDE0IGJlZm9yZSB0aGUgZG9nIHRha2VzIGEgYmFuZGFnZSBhbmQgcnVucy4gVGhlIGh1cnQgYm95IHdpbGwgZHJpbmsgdGhlIHdhdGVyLCBnZXQgd2FybSB1bmRlciB0aGUgYmx1ZSBibGFua2V0LCBhbmQgc3RhcnQgdG8gZmVlbCBiZXR0ZXIuIEhpcyB0ZWFtbWF0ZSB3aWxsIHN0YXkgbmV4dCB0byBoaW0gYW5kIHRlbGwgaGltIGpva2VzLiBBZnRlciBzb21lIG1pbnV0ZXMsIHRoZSB3aG9sZSB0ZWFtIGluIHJlZCBhbmQgeWVsbG93IHdpbGwgY29tZSBmcm9tIHRoZSBmaWVsZCB0byBzZWUgdGhlaXIgZnJpZW5kLCBhbmQgdGhleSB3aWxsIG1ha2UgaGltIGxhdWdoLiBJIGRvIG5vdCB0aGluayB0aGUgaW5qdXJ5IGlzIHNlcmlvdXMuIFNvIHRoZSBib3kgd2lsbCBwcm9iYWJseSBzdGFuZCB1cCBhbmQgd2F0Y2ggdGhlIHJlc3Qgb2YgdGhlIGdhbWUgZnJvbSB0aGUgY2hhaXIsIGxpa2UgYSBjb2FjaC4gTWF5YmUgaW4gdGhlIHNlY29uZCBoYWxmLCBpZiBoaXMgbGVnIGZlZWxzIGdvb2QsIGhlIHdpbGwgcGxheSBhZ2FpbiwgYW5kIGV2ZXJ5b25lIHdpbGwgY2hlZXIgZm9yIGhpbS4gQW5kIHRvbmlnaHQsIGhpcyBwYXJlbnRzIHdpbGwgaGVhciB0aGUgd2hvbGUgZHJhbWF0aWMgc3RvcnkgbWF5YmUgZml2ZSB0aW1lcywgYW5kIHRoZSBkb2cgd2lsbCBiZSB0aGUgZnVubnkgaGVybyBvZiBpdC4iLCJzOSI6Ikp1ZGdpbmcgYnkgYWxsIHRoZSBkZXRhaWxzLCB0aGlzIGxpdHRsZSBlbWVyZ2VuY3kgaXMgaGVhZGluZyB0b3dhcmQgYSBoYXBweSBlbmRpbmcsIGFuZCBoZXJlJ3MgaG93IEkgc2VlIHRoZSBuZXh0IGZldyBtaW51dGVzIHVuZm9sZGluZy4gVGhlIHR3byBoZWxwZXJzIHdpbGwgZmluZCB3aGF0IHRoZXkgbmVlZCBpbiB0aGF0IGZpcnN0LWFpZCBraXQgXHUyMDE0IGEgYmFuZGFnZSBvciBhIGNvbGQgcGFjayBcdTIwMTQgYW5kIHdyYXAgdGhlIGJveSdzIGxlZyBwcm9wZXJseSwgdGhvdWdoIG5vdCBiZWZvcmUgc29tZW9uZSBoYXVscyB0aGUgZG9nIGF3YXkgYnkgdGhlIGNvbGxhciwgcHJvYmFibHkgYSBoYWxmLXNlY29uZCBiZWZvcmUgaXQgbWFrZXMgb2ZmIHdpdGggYSByb2xsIG9mIGdhdXplLiBUaGUgYm95IHdpbGwgc2lwIGhpcyB3YXRlciwgc3RvcCBzaGl2ZXJpbmcgYXMgdGhlIGJsYW5rZXQgZG9lcyBpdHMgam9iLCBhbmQgaGlzIGNvbG91ciB3aWxsIGNvbWUgYmFjayBhbG9uZyB3aXRoIGhpcyBwcmlkZSBcdTIwMTQgYmVjYXVzZSBhdCB0aGF0IGFnZSwgdGhlIGVtYmFycmFzc21lbnQgdXN1YWxseSBodXJ0cyBtb3JlIHRoYW4gdGhlIGtuZWUuIEhpcyB0ZWFtbWF0ZSB3aWxsIGtlZXAgaGltIGVudGVydGFpbmVkLCBhbmQgc29vbiB0aGUgcmVzdCBvZiB0aGUgc3F1YWQgaW4gcmVkIGFuZCB5ZWxsb3cgd2lsbCBqb2cgb3ZlciBmcm9tIHRoZSBmaWVsZCB0byBjaGVjayBvbiBoaW0sIHdoaWNoIHdpbGwgY2hlZXIgaGltIHVwIG1vcmUgdGhhbiBhbnkgYmFuZGFnZSBjb3VsZC4gVGhlbiBjb21lcyB0aGUgYmlnIG5lZ290aWF0aW9uOiBoZSdsbCBpbnNpc3QgaGUgY2FuIHBsYXksIHRoZSBhZHVsdHMgd2lsbCBleGNoYW5nZSBsb29rcywgYW5kIEkgcHJlZGljdCBhIGNvbXByb21pc2UgXHUyMDE0IGhlIHdhdGNoZXMgdGhlIHJlc3Qgb2YgdGhlIG1hdGNoIGZyb20gdGhhdCBmb2xkaW5nIGNoYWlyIGxpa2UgYW4gaG9ub3JhcnkgYXNzaXN0YW50IGNvYWNoLCBzaG91dGluZyBpbnN0cnVjdGlvbnMgbm9ib2R5IGFza2VkIGZvci4gVGhlIG9sZGVyIGdlbnRsZW1hbiBpbiBncmV5IHdpbGwgc3RheSBjbG9zZSwgdGhlIG1hbiBpbiB0aGUgcmVkIGhvb2RpZSB3aWxsIHJlZmVyZWUgdGhlIGRvZywgYW5kIGJ5IHRoZSBmaW5hbCB3aGlzdGxlIHRoZSBib3kgd2lsbCBiZSBsaW1waW5nIGFyb3VuZCBwcm91ZGx5IHNob3dpbmcgb2ZmIGhpcyBiYW5kYWdlLiBCeSBkaW5uZXJ0aW1lLCB0aGUgc3Rvcnkgd2lsbCBoYXZlIGdyb3duOiB0aGUgc2NyYXBlIHdpbGwgYmUgYSB3YXIgd291bmQsIGFuZCB0aGUgZG9nIHdpbGwgaGF2ZSBvZmZpY2lhbGx5IHRyaWVkIHRvIHN0ZWFsIHRoZSBlbnRpcmUgZmlyc3QtYWlkIGtpdC4gTm9ib2R5IGZvcmdldHMgYSBnYW1lIGxpa2UgdGhpcy4ifSx7ImsiOiJ0NSIsIm51bSI6NSwidHlwZUVuIjoiQ29tcGFyaW5nIGFuZCBQZXJzdWFkaW5nIiwicGhhc2VkIjp0cnVlLCJjaG9vc2UiOnsicHJlcCI6NjAsInNpdHVhdGlvbiI6IllvdSB3b3JrIGZvciBhIHRlY2hub2xvZ3kgY29tcGFueSB0aGF0IG1ha2VzIGVudmlyb25tZW50YWxseSBmcmllbmRseSBob21lIGFwcGxpYW5jZXMsIGFuZCB5b3VyIGJvc3Mgd2FudHMgdG8gY3JlYXRlIGEgbmV3IGxvZ28gZm9yIHRoZSBjb21wYW55LiBZb3UgZmluZCB0d28gc3VpdGFibGUgb3B0aW9ucy4gVXNpbmcgdGhlIHBpY3R1cmVzIGFuZCBpbmZvcm1hdGlvbiBiZWxvdywgY2hvb3NlIHRoZSBvcHRpb24gdGhhdCB5b3UgcHJlZmVyLiBJbiB0aGUgbmV4dCBzZWN0aW9uLCB5b3Ugd2lsbCBuZWVkIHRvIHBlcnN1YWRlIHlvdXIgY28td29ya2VyIHRoYXQgeW91ciBjaG9pY2UgaXMgdGhlIGJldHRlciBjaG9pY2UuIiwibm90ZSI6IklmIHlvdSBkbyBub3QgY2hvb3NlIGFuIG9wdGlvbiwgdGhlIGNvbXB1dGVyIHdpbGwgY2hvb3NlIG9uZSBmb3IgeW91LiBZb3UgZG8gbm90IG5lZWQgdG8gc3BlYWsgZm9yIHRoaXMgcGFydC4iLCJvcHRpb25zIjpbeyJ0aXRsZSI6IkxlYWYgYW5kIGNpcmNsZSBkZXNpZ24iLCJpbWciOiJvcHRBIiwiYnVsbGV0cyI6WyJncmVlbiB2aW5lcyBzeW1ib2xpemUgY29ubmVjdGlvbiB0byBuYXR1cmUiLCJlbGVnYW50IGxpbmVzIiwiY2FuIGZpdCBpbiBkaWZmZXJlbnQgaW1hZ2UgZm9ybWF0cyJdfSx7InRpdGxlIjoiTGlnaHRidWxiIGRlc2lnbiIsImltZyI6Im9wdEIiLCJidWxsZXRzIjpbImNyZWF0aXZlIGltYWdlIiwibGlnaHRidWxiIGlzIG9uZSBvZiB0aGUgY29tcGFueSdzIHByb2R1Y3RzIiwiYmFja2dyb3VuZCBjb2xvdXIgY2FuIGJlIGNoYW5nZWQiXX1dfSwic3BlYWsiOnsicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IllvdXIgY28td29ya2VyIGlzIHN1Z2dlc3RpbmcgYSBkaWZmZXJlbnQgbG9nbyAoc2hvd24gYmVsb3cpLiBQZXJzdWFkZSB5b3VyIGNvLXdvcmtlciB0aGF0IHRoZSBsb2dvIHlvdSBjaG9zZSBpcyB0aGUgYmV0dGVyIGNob2ljZSBieSBjb21wYXJpbmcgdGhlIHR3by4iLCJvdGhlckxhYmVsIjoiWW91ciBDby1Xb3JrZXIncyBDaG9pY2UiLCJvdGhlciI6eyJ0aXRsZSI6IlB5cmFtaWQgZGVzaWduIiwiaW1nIjoib3B0T3RoZXIiLCJidWxsZXRzIjpbInNpbXBsZSBkZXNpZ24iLCJlYXNpbHkgcmVjb2duaXphYmxlIGJ5IGN1c3RvbWVycyIsImFic3RyYWN0IGFuZCBvcGVuIHRvIGludGVycHJldGF0aW9uIl19fSwidGlwcyI6eyJidWxsZXRzIjpbIlN0cnVjdHVyZTogYWNrbm93bGVkZ2UgdGhlIG90aGVyIHBlcnNvbidzIGNob2ljZSBcdTIxOTIgZ2l2ZSAyXHUyMDEzMyBhZHZhbnRhZ2VzIG9mIHlvdXJzIChkaXJlY3QgY29tcGFyaXNvbikgXHUyMTkyIHdyYXAgdXAuIiwiQ29tcGFyZSB1c2luZyB0aGUgbnVtYmVycyBvbiB0aGUgY2FyZHM6IHByaWNlLCBkdXJhdGlvbiwgY2FwYWNpdHksIGV4cGVyaWVuY2UuIiwiWW91IGRvIE5PVCBuZWVkIHRvIHNwZWFrIGR1cmluZyB0aGUgY2hvb3Npbmcgc3RlcCBcdTIwMTQganVzdCBjbGljayBhbiBvcHRpb24uIiwiVGhlIHNhbXBsZXMgYmVsb3cgY2hvb3NlIHRoZSBsZWFmLWFuZC1jaXJjbGUgZGVzaWduIChncmVlbiB2aW5lcyA9IGluc3RhbnQgZW52aXJvbm1lbnRhbCBtZXNzYWdlLCBlbGVnYW50LCBmbGV4aWJsZSBhY3Jvc3MgZm9ybWF0cykuIFRoZSBjby13b3JrZXIncyBweXJhbWlkIGlzIHNpbXBsZSBhbmQgcmVjb2duaXphYmxlIGJ1dCBzYXlzIE5PVEhJTkcgYWJvdXQgdGhlIGVudmlyb25tZW50IC0gJ29wZW4gdG8gaW50ZXJwcmV0YXRpb24nIGlzIGEgd2Vha25lc3MgZm9yIGEgYnJhbmQgdGhhdCBuZWVkcyBhIGNsZWFyIGdyZWVuIGlkZW50aXR5LiBJZiB5b3UgcHJlZmVyIHRoZSBsaWdodGJ1bGIsIHN0cmVzcyB0aGUgcHJvZHVjdCBjb25uZWN0aW9uIGFuZCB0aGUgcGxhbnQgaW5zaWRlIHRoZSBidWxiLiJdLCJwaHJhc2VzIjpbIkkgc2VlIHdoeSB5b3UgbGlrZVx1MjAyNiwgYnV0XHUyMDI2IiwiQ29tcGFyZWQgdG9cdTIwMjYsIHRoaXMgb25lXHUyMDI2IiwiSXQncyBiZXR0ZXIgdmFsdWU6IFx1MjAyNiB2ZXJzdXMgXHUyMDI2IiwiSWYgdGhlIGdvYWwgaXNcdTIwMjYsIHRoZSBjaG9pY2UgaXMgY2xlYXIuIl19LCJzNiI6IkkgbG9va2VkIGF0IHlvdXIgcHlyYW1pZCBkZXNpZ24sIGFuZCBJIGFncmVlIGl0IGlzIHNpbXBsZSBhbmQgZWFzeSB0byByZW1lbWJlci4gQnV0IEkgcmVhbGx5IGJlbGlldmUgdGhlIGxlYWYgYW5kIGNpcmNsZSBkZXNpZ24gaXMgdGhlIGJldHRlciBsb2dvIGZvciBvdXIgY29tcGFueSwgYW5kIGhlcmUgaXMgd2h5LiBGaXJzdCwgdGhpbmsgYWJvdXQgd2hhdCBvdXIgY29tcGFueSBkb2VzOiB3ZSBtYWtlIGVudmlyb25tZW50YWxseSBmcmllbmRseSBob21lIGFwcGxpYW5jZXMuIEdyZWVuIGlzIG91ciB3aG9sZSBzdG9yeSEgVGhlIGxlYWYgYW5kIGNpcmNsZSBsb2dvIHNob3dzIGdyZWVuIHZpbmVzIGdyb3dpbmcgaW4gYSBjaXJjbGUgXHUyMDE0IHdoZW4gY3VzdG9tZXJzIHNlZSBpdCwgdGhleSBpbW1lZGlhdGVseSB0aGluayBvZiBuYXR1cmUsIHJlY3ljbGluZywgYW5kIGNsZWFuIGVuZXJneS4gVGhhdCBpcyBleGFjdGx5IHRoZSBtZXNzYWdlIHdlIHdhbnQuIFlvdXIgcHlyYW1pZCBpcyBncmV5IGFuZCBhYnN0cmFjdC4gSXQgY291bGQgYmUgYSBsb2dvIGZvciBhIGJhbmssIGEgbXVzZXVtLCBvciBhIGNvbnN0cnVjdGlvbiBjb21wYW55IFx1MjAxNCBpdCBzYXlzIG5vdGhpbmcgYWJvdXQgdGhlIGVudmlyb25tZW50LiBUaGUgY2FyZCBldmVuIHNheXMgaXQgaXMgb3BlbiB0byBpbnRlcnByZXRhdGlvbiwgYnV0IHdlIGRvIG5vdCB3YW50IGN1c3RvbWVycyB0byBndWVzcy4gV2Ugd2FudCB0aGVtIHRvIGtub3cgd2UgYXJlIGdyZWVuLiBTZWNvbmQsIHRoZSBsZWFmIGRlc2lnbiBoYXMgZWxlZ2FudCBsaW5lcyBhbmQgZml0cyBkaWZmZXJlbnQgaW1hZ2UgZm9ybWF0cywgc28gaXQgd2lsbCBsb29rIGdvb2Qgb24gYSB3ZWJzaXRlLCBvbiBvdXIgbWFjaGluZXMsIGFuZCBvbiBzbWFsbCBsYWJlbHMuIFNvIHBsZWFzZSwgbGV0J3MgY2hvb3NlIHRoZSBsZWFmIGFuZCBjaXJjbGUuIEl0IHRlbGxzIG91ciBzdG9yeSBpbiBvbmUgc2Vjb25kLiIsInM5IjoiSSd2ZSB0aG91Z2h0IGFib3V0IHlvdXIgcHlyYW1pZCBkZXNpZ24sIGFuZCBJJ2xsIGdpdmUgaXQgaXRzIGR1ZSBcdTIwMTQgaXQncyBjbGVhbiwgZ2VvbWV0cmljLCBhbmQgZWFzeSB0byByZW1lbWJlci4gQnV0IGZvciB0aGlzIGNvbXBhbnksIEknbSBjb252aW5jZWQgdGhlIGxlYWYtYW5kLWNpcmNsZSBkZXNpZ24gaXMgdGhlIHN0cm9uZ2VyIGNob2ljZSwgYW5kIHRoZSBjb3JlIHJlYXNvbiBpcyBtZXNzYWdlLiBXZSBtYWtlIGVudmlyb25tZW50YWxseSBmcmllbmRseSBob21lIGFwcGxpYW5jZXM7IGdyZWVuIGlzbid0IGEgZGVjb3JhdGlvbiBmb3IgdXMsIGl0J3MgdGhlIGVudGlyZSBicmFuZCBwcm9taXNlLiBUaGUgbGVhZi1hbmQtY2lyY2xlIGRlbGl2ZXJzIHRoYXQgcHJvbWlzZSBpbnN0YW50bHkgXHUyMDE0IGRlbGljYXRlIGdyZWVuIHZpbmVzIGN1cmxpbmcgaW50byBhIGNpcmNsZSByZWFkcyBhcyBuYXR1cmUsIHJlbmV3YWwsIHN1c3RhaW5hYmlsaXR5LCBhIGNsb3NlZCBsb29wIG9mIHJlY3ljbGluZywgYWxsIGluIGEgc2luZ2xlIGdsYW5jZSwgYmVmb3JlIGEgY3VzdG9tZXIgaGFzIHJlYWQgb25lIHdvcmQgYWJvdXQgdXMuIE5vdyBob2xkIHRoZSBweXJhbWlkIG5leHQgdG8gdGhhdC4gSXQncyBzbGVlaywgeWVzIFx1MjAxNCBidXQgaXQncyBhIGdyZXksIGFic3RyYWN0IG1vbnVtZW50LiBJdCBjb3VsZCBicmFuZCBhIGJhbmssIGEgbGF3IGZpcm0sIGFuIEVneXB0aWFuIG11c2V1bS4gSXRzIG93biBjYXJkIGFkbWl0cyBpdCdzIG9wZW4gdG8gaW50ZXJwcmV0YXRpb24sIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHRoZSBwcm9ibGVtOiBhIGdyZWVuLXRlY2ggY29tcGFueSBjYW4ndCBhZmZvcmQgYSBsb2dvIHRoYXQgbmVlZHMgaW50ZXJwcmV0aW5nLiBFdmVyeSBzZWNvbmQgYSBjdXN0b21lciBzcGVuZHMgd29uZGVyaW5nIHdoYXQgd2UgZG8gaXMgYSBzZWNvbmQgb3VyIGNvbXBldGl0b3JzIGRvbid0IGhhdmUgdG8gZmlnaHQgZm9yLiBUaGVyZSdzIGFsc28gdGhlIHByYWN0aWNhbCBhbmdsZTogdGhlIGxlYWYgZGVzaWduIHdhcyBzcGVjaWZpY2FsbHkgbm90ZWQgdG8gYWRhcHQgYWNyb3NzIGltYWdlIGZvcm1hdHMgXHUyMDE0IHdlYnNpdGUgaGVhZGVycywgYXBwbGlhbmNlIGJhZGdlcywgdGlueSBlbmVyZ3ktcmF0aW5nIGxhYmVscyBcdTIwMTQgYW5kIGl0cyBmaW5lIGxpbmVzIHN0YXkgZWxlZ2FudCBhdCBldmVyeSBzaXplLiBBbmQgaWYgdGhlIHdvcnJ5IGlzIHJlY29nbml6YWJpbGl0eSwgcmVtZW1iZXIgdGhhdCByZWNvZ25pdGlvbiBjb21lcyBmcm9tIHJlcGV0aXRpb247IGEgZGlzdGluY3RpdmUgZ3JlZW4gbWFyayB3aWxsIGJlY29tZSByZWNvZ25pemFibGUsIGJ1dCBhIGdlbmVyaWMgcHlyYW1pZCB3aWxsIG5ldmVyIGJlY29tZSBlbnZpcm9ubWVudGFsLiBMZXQncyBwaWNrIHRoZSBsb2dvIHRoYXQgZG9lcyBvdXIgbWFya2V0aW5nIGZvciB1cyBcdTIwMTQgdGhlIGxlYWYgYW5kIGNpcmNsZS4ifSx7ImsiOiJ0NiIsIm51bSI6NiwidHlwZUVuIjoiRGVhbGluZyB3aXRoIGEgRGlmZmljdWx0IFNpdHVhdGlvbiIsInByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3VyIGNvdXNpbiwgSnVsaWEsIGlzIGEgc2Nob2xhcnNoaXAgc3R1ZGVudCB3aG8gaGFzIG5vIHdvcmsgZXhwZXJpZW5jZS4gVG8gb2J0YWluIHdvcmsgZXhwZXJpZW5jZSwgc2hlIG5lZWRzIHRvIGRyb3Agb25lIG9mIGhlciBjb3Vyc2VzIHRvIG1ha2UgdGltZSBmb3IgYSBwYXJ0LXRpbWUgam9iLiBIZXIgYnJvdGhlciwgTWF0dCwgc2F5cyB0aGF0IEp1bGlhIHNob3VsZCBmb2N1cyBjb21wbGV0ZWx5IG9uIGhlciBzdHVkaWVzIGJlY2F1c2Ugc2hlIG5lZWRzIHRvIGNvbXBsZXRlIHRlbiBjb3Vyc2VzIHBlciB0ZXJtIGluIG9yZGVyIHRvIGtlZXAgaGVyIHNjaG9sYXJzaGlwLiIsImNob29zZU9uZSI6WyJUYWxrIHRvIEp1bGlhLiBFeHBsYWluIHdoeSBzaGUgc2hvdWxkIGZvY3VzIGNvbXBsZXRlbHkgb24gaGVyIHN0dWRpZXMuIiwiVGFsayB0byBNYXR0LiBFeHBsYWluIHdoeSBKdWxpYSBzaG91bGQgZHJvcCBhIGNvdXJzZSB0byBtYWtlIHRpbWUgZm9yIGEgcGFydC10aW1lIGpvYi4iXSwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiUGljayBPTkUgb3B0aW9uIChFSVRIRVIgb3IgT1IpIGltbWVkaWF0ZWx5IFx1MjAxNCBkb24ndCB3YXN0ZSB0aW1lIGRlY2lkaW5nLiIsIlN0cnVjdHVyZTogb3BlbiBwb2xpdGVseSBcdTIxOTIgZXhwbGFpbiB5b3VyIHJlYXNvbnMvZXZpZGVuY2UgXHUyMTkyIHByb3Bvc2UgYSBzb2x1dGlvbiBcdTIxOTIgc21vb3RoIHRoaW5ncyBvdmVyLiIsIlN0YXkgY2FsbSBhbmQgcmVzcGVjdGZ1bCBcdTIwMTQgaG93IHlvdSBoYW5kbGUgdGhlIHNpdHVhdGlvbiBpcyBwYXJ0IG9mIHdoYXQncyBiZWluZyByYXRlZCAoTGlzdGVuYWJpbGl0eSkuIiwiVGhlIHNhbXBsZXMgY2hvb3NlIG9wdGlvbiAxICh0YWxrIHRvIEp1bGlhIC0gcHJvdGVjdCB0aGUgc2Nob2xhcnNoaXApLiBLZXkgbG9naWM6IHRoZSBzY2hvbGFyc2hpcCByZXF1aXJlcyB0ZW4gY291cnNlcyBwZXIgdGVybSwgc28gZHJvcHBpbmcgb25lIHJpc2tzIGxvc2luZyBpdCwgYW5kIHRoZSBtb25leSBsb3N0IHdvdWxkIGJlIGZhciBtb3JlIHRoYW4gYSBwYXJ0LXRpbWUgam9iIHBheXMuIE9mZmVyIGFsdGVybmF0aXZlczogc3VtbWVyIGpvYnMsIG9uLWNhbXB1cyB2b2x1bnRlZXJpbmcsIGNvLW9wIHByb2dyYW1zLCBjYXJlZXItZmFpciBuZXR3b3JraW5nLiBTdGF5IHdhcm0gLSBzaGUgaXMgbm90IHdyb25nIHRvIHdhbnQgZXhwZXJpZW5jZSwganVzdCBlYXJseS4iXSwicGhyYXNlcyI6WyJDb3VsZCBJIGp1bXAgaW4gZm9yIGEgbW9tZW50PyIsIkkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm4sIGJ1dFx1MjAyNiIsIkhvdyBhYm91dCB3ZVx1MjAyNj8iLCJJJ2xsIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIHRoaXMuIl19LCJzNiI6Ikp1bGlhLCBjYW4gSSBzYXkgc29tZXRoaW5nIGFzIHlvdXIgY291c2luPyBJIGhlYXJkIHlvdSB3YW50IHRvIGRyb3AgYSBjb3Vyc2UgdG8gdGFrZSBhIHBhcnQtdGltZSBqb2IsIGFuZCBJIHVuZGVyc3RhbmQgd2h5IFx1MjAxNCB3b3JrIGV4cGVyaWVuY2UgaXMgaW1wb3J0YW50LCBhbmQgYWxsIHlvdXIgZnJpZW5kcyB0YWxrIGFib3V0IGl0LiBCdXQgcGxlYXNlIGxvb2sgYXQgdGhlIG51bWJlcnMgd2l0aCBtZS4gWW91ciBzY2hvbGFyc2hpcCByZXF1aXJlcyB0ZW4gY291cnNlcyBldmVyeSB0ZXJtLiBJZiB5b3UgZHJvcCBvbmUsIHlvdSBicmVhayB0aGUgcnVsZSwgYW5kIHlvdSBjYW4gbG9zZSB0aGUgd2hvbGUgc2Nob2xhcnNoaXAuIFRoYXQgc2Nob2xhcnNoaXAgcGF5cyB5b3VyIHR1aXRpb24gXHUyMDE0IGl0IGlzIHdvcnRoIHRob3VzYW5kcyBvZiBkb2xsYXJzIGV2ZXJ5IHllYXIuIEEgcGFydC10aW1lIGpvYiBpbiBhIHNob3AgcGF5cyBtYXliZSBmaWZ0ZWVuIGRvbGxhcnMgYW4gaG91ci4gWW91IHdvdWxkIGxvc2UgYmlnIG1vbmV5IHRvIGVhcm4gc21hbGwgbW9uZXkuIFRoYXQgaXMgYSBiYWQgdHJhZGUsIEp1bGlhLiBBbmQgdGhlcmUgYXJlIGJldHRlciB3YXlzIHRvIGdldCBleHBlcmllbmNlLiBZb3UgY2FuIHdvcmsgaW4gdGhlIHN1bW1lciwgd2hlbiB0aGVyZSBhcmUgbm8gY291cnNlcyBcdTIwMTQgYSBmdWxsIHN1bW1lciBqb2IgbG9va3MgZ3JlYXQgb24gYSByZXN1bWUuIFlvdSBjYW4gdm9sdW50ZWVyIG9uIGNhbXB1cyB0d28gaG91cnMgYSB3ZWVrLCBtYXliZSBpbiB0aGUgbGlicmFyeSBvciBhdCBzdHVkZW50IGV2ZW50cywgYW5kIHRoYXQgY291bnRzIGFzIGV4cGVyaWVuY2UgdG9vLiBMYXRlciwgeW91IGNhbiBqb2luIGEgY28tb3AgcHJvZ3JhbSwgd2hlcmUgd29yayBpcyBwYXJ0IG9mIHlvdXIgZGVncmVlLiBGaW5pc2ggdGhpcyB5ZWFyIHN0cm9uZywga2VlcCB0aGUgc2Nob2xhcnNoaXAgc2FmZSwgYW5kIEkgcHJvbWlzZSBJIHdpbGwgaGVscCB5b3UgZmluZCBhIGdyZWF0IHN1bW1lciBqb2IuIERlYWw\/IiwiczkiOiJKdWxpYSwgbGV0J3MgdGFsayBob25lc3RseSBmb3IgYSBtaW51dGUgXHUyMDE0IGNvdXNpbiB0byBjb3VzaW4uIEkgY29tcGxldGVseSB1bmRlcnN0YW5kIHRoZSBpdGNoOiBldmVyeSBqb2IgcG9zdGluZyBzY3JlYW1zIGV4cGVyaWVuY2UgcmVxdWlyZWQsIHlvdXIgY2xhc3NtYXRlcyBoYXZlIHBhcnQtdGltZSBqb2JzLCBhbmQgeW91IGZlZWwgbGlrZSB5b3UncmUgZmFsbGluZyBiZWhpbmQuIFRoYXQgaW5zdGluY3QgaXNuJ3Qgd3JvbmcuIEJ1dCB0aGUgc3BlY2lmaWMgdHJhZGUgeW91J3JlIGNvbnNpZGVyaW5nIFx1MjAxNCBkcm9wcGluZyBhIGNvdXJzZSB0byBtYWtlIHJvb20gZm9yIGEgam9iIFx1MjAxNCBpcyB0aGUgb25lIG1vdmUgdGhhdCBjb3VsZCBnZW51aW5lbHkgYmFja2ZpcmUsIGFuZCBJIHdhbnQgdG8gd2FsayB5b3UgdGhyb3VnaCB0aGUgbWF0aC4gWW91ciBzY2hvbGFyc2hpcCByZXF1aXJlcyB0ZW4gY291cnNlcyBwZXIgdGVybS4gRHJvcCBvbmUgYW5kIHlvdSdyZSBvdXQgb2YgY29tcGxpYW5jZTsgYXQgYmVzdCB5b3UncmUgb24gdGhpbiBpY2UsIGF0IHdvcnN0IHlvdSBsb3NlIGl0IGVudGlyZWx5LiBUaGF0IHNjaG9sYXJzaGlwIGlzIHdvcnRoIHRob3VzYW5kcyBvZiBkb2xsYXJzIGEgeWVhciBcdTIwMTQgdHVpdGlvbiB5b3UnZCBvdGhlcndpc2UgcGF5IHlvdXJzZWxmLiBBIHBhcnQtdGltZSByZXRhaWwgam9iIHBheXMgd2hhdCwgZmlmdGVlbiwgc2l4dGVlbiBkb2xsYXJzIGFuIGhvdXI\/IFlvdSdkIGJlIHJpc2tpbmcgYSBmaXZlLWZpZ3VyZSBiZW5lZml0IHRvIGVhcm4gYSBmb3VyLWZpZ3VyZSBpbmNvbWUuIFN0cmlwIGF3YXkgdGhlIGFueGlldHkgYW5kIGl0J3Mgc2ltcGx5IGEgYmFkIHRyYWRlLiBOb3csIGhlcmUncyB0aGUgcGFydCB0aGF0IG1hdHRlcnM6IHlvdSBjYW4gZ2V0IGV4cGVyaWVuY2Ugd2l0aG91dCB0b3VjaGluZyB5b3VyIGNvdXJzZSBsb2FkLiBTdW1tZXJzIGFyZSB3aWRlIG9wZW4gXHUyMDE0IGEgZnVsbC10aW1lIHN1bW1lciBqb2Igb3IgaW50ZXJuc2hpcCBpcyB3b3J0aCBtb3JlIG9uIGEgcmVzdW1lIHRoYW4gYSB5ZWFyIG9mIHN0b2NraW5nIHNoZWx2ZXMgZHVyaW5nIHRlcm0uIENhbXB1cyB2b2x1bnRlZXJpbmcgXHUyMDE0IHRoZSBsaWJyYXJ5LCBvcmllbnRhdGlvbiwgc3R1ZGVudCB1bmlvbiBldmVudHMgXHUyMDE0IGNvc3RzIGEgZmV3IGZsZXhpYmxlIGhvdXJzIGFuZCBjb3VudHMgYXMgcmVhbCBleHBlcmllbmNlIHdpdGggcmVhbCByZWZlcmVuY2VzLiBBbmQgZnJvbSBzZWNvbmQgeWVhciB5b3UgY2FuIGxvb2sgYXQgY28tb3Agb3B0aW9ucywgd2hlcmUgd29yayBleHBlcmllbmNlIGlzIGJ1aWx0IGludG8gdGhlIGRlZ3JlZSB3aXRoIHplcm8gc2Nob2xhcnNoaXAgcmlzay4gU28gbXkgYWR2aWNlOiBwcm90ZWN0IHRoZSBzY2hvbGFyc2hpcCBsaWtlIHRoZSBhc3NldCBpdCBpcywgY3J1c2ggeW91ciB0ZW4gY291cnNlcywgYW5kIGxldCdzIHNpdCBkb3duIHRoaXMgd2Vla2VuZCBhbmQgcGxhbiB5b3VyIHN1bW1lciBhcHBsaWNhdGlvbnMgdG9nZXRoZXIuIEV4cGVyaWVuY2UgaXMgY29taW5nLCBKdWxpYSBcdTIwMTQganVzdCB0aHJvdWdoIHRoZSBzbWFydCBkb29yLCBub3QgdGhlIGV4cGVuc2l2ZSBvbmUuIn0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIGp1bmsgZm9vZCBzaG91bGQgYmUgYmFubmVkIGZyb20gY29sbGVnZSBjYW1wdXNlcz8gRXhwbGFpbiB5b3VyIHJlYXNvbnMuIiwicHJvbXB0TGVhZCI6IkFuc3dlciB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlN0YXRlIHlvdXIgcG9zaXRpb24gY2xlYXJseSBpbiB0aGUgZmlyc3Qgc2VudGVuY2UgKHBpY2tpbmcgb25lIHNpZGUgaXMgZWFzaWVyIHRvIGRldmVsb3AgdGhhbiBzdGF5aW5nIG5ldXRyYWwpLiIsIkdpdmUgMlx1MjAxMzMgcmVhc29ucywgZWFjaCBkZXZlbG9wZWQgb3ZlciAyXHUyMDEzMyBzZW50ZW5jZXMgd2l0aCBhbiBleGFtcGxlOyA5MCBzZWNvbmRzIGlzIGxvbmcgXHUyMDE0IGRvbid0IHN0b3AgZWFybHkuIiwiQWNrbm93bGVkZ2UgdGhlIG90aGVyIHNpZGUgaW4gb25lIHNlbnRlbmNlIChUaGF0IHNhaWQsIFx1MjAyNikgdGhlbiBjb25jbHVkZSBcdTIwMTQgaXQgc2hvd3MgYmFsYW5jZWQgdGhpbmtpbmcuIiwiUGljayBvbmUgc2lkZSAodGhlIHNhbXBsZXMgYXJndWUgTk8gLSBhIGJhbiBpcyB0aGUgd3JvbmcgdG9vbCkuIENvbmNyZXRlIHJlYXNvbnM6IHN0dWRlbnRzIGFyZSBhZHVsdHMgd2hvIGRlc2VydmUgY2hvaWNlLCBiYW5zIGp1c3QgcHVzaCBidXlpbmcgb2ZmIGNhbXB1cyAob3IgY3JlYXRlIGJsYWNrLW1hcmtldCB2ZW5kaW5nIHJ1bnMpLCBhbmQgdGhlIHJlYWwgZml4IGlzIG1ha2luZyBoZWFsdGh5IGZvb2QgY2hlYXAsIHRhc3R5IGFuZCBjb252ZW5pZW50IC0gdGhlbiBjb25jZWRlIG9uZSBzZW50ZW5jZSBhYm91dCByaXNpbmcgb2Jlc2l0eSBhbmQgbGltaXRlZCBzdHVkZW50IGJ1ZGdldHMuIl0sInBocmFzZXMiOlsiSWYgSSBoYWQgdG8gY2hvb3NlLCBJJ2Qgc2F5XHUyMDI2IiwiTXkgbWFpbiByZWFzb24gaXNcdTIwMjYiLCJGb3IgZXhhbXBsZSwgXHUyMDI2IiwiVGhhdCBzYWlkLCBcdTIwMjYiLCJBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIFx1MjAyNiJdfSwiczYiOiJObywgSSBkbyBub3QgdGhpbmsganVuayBmb29kIHNob3VsZCBiZSBiYW5uZWQgZnJvbSBjb2xsZWdlIGNhbXB1c2VzLCBldmVuIHRob3VnaCBJIHVuZGVyc3RhbmQgdGhlIHdvcnJ5IGFib3V0IGhlYWx0aC4gSSBoYXZlIHRocmVlIHJlYXNvbnMuIEZpcnN0LCBjb2xsZWdlIHN0dWRlbnRzIGFyZSBhZHVsdHMuIFRoZXkgY2FuIGRyaXZlLCB2b3RlLCBhbmQgbGl2ZSBhbG9uZSwgc28gdGhleSBjYW4gYWxzbyBkZWNpZGUgd2hhdCB0byBlYXQgZm9yIGx1bmNoLiBBIHVuaXZlcnNpdHkgaXMgbm90IGEga2luZGVyZ2FydGVuLCBhbmQgdHJlYXRpbmcgc3R1ZGVudHMgbGlrZSBjaGlsZHJlbiBmZWVscyB3cm9uZy4gU2Vjb25kLCBhIGJhbiBkb2VzIG5vdCByZWFsbHkgd29yay4gSWYgdGhlIGNhbXB1cyByZW1vdmVzIGNoaXBzIGFuZCBjb2xhLCBzdHVkZW50cyB3aWxsIHNpbXBseSB3YWxrIGZpdmUgbWludXRlcyB0byB0aGUgc3RvcmUgYWNyb3NzIHRoZSBzdHJlZXQsIG9yIG9yZGVyIGZvb2Qgb24gdGhlaXIgcGhvbmVzLiBUaGUganVuayBmb29kIGRvZXMgbm90IGRpc2FwcGVhciBcdTIwMTQgb25seSB0aGUgY29udmVuaWVuY2UgZG9lcy4gU29tZSBzdHVkZW50cyB3aWxsIGV2ZW4gc2VsbCBzbmFja3MgZnJvbSB0aGVpciBiYWNrcGFja3MsIGxpa2UgYSBzbWFsbCBibGFjayBtYXJrZXQhIFRoaXJkLCB0aGVyZSBpcyBhIGJldHRlciB3YXkuIFRoZSByZWFsIHByb2JsZW0gaXMgdGhhdCBoZWFsdGh5IGZvb2QgaXMgb2Z0ZW4gZXhwZW5zaXZlIGFuZCBib3JpbmcsIHdoaWxlIGp1bmsgZm9vZCBpcyBjaGVhcCBhbmQgZmFzdC4gU28gdGhlIHVuaXZlcnNpdHkgc2hvdWxkIG1ha2Ugc2FsYWRzLCBmcnVpdCwgYW5kIGdvb2QgbWVhbHMgY2hlYXBlciBhbmQgdGFzdGllciwgcHV0IHRoZW0gaW4gZXZlcnkgYnVpbGRpbmcsIGFuZCB0ZWFjaCBzdHVkZW50cyBhYm91dCBudXRyaXRpb24uIEdpdmUgc3R1ZGVudHMgZ29vZCBjaG9pY2VzLCBhbmQgbW9zdCBvZiB0aGVtIHdpbGwgY2hvb3NlIHdlbGwuIFRoYXQgaXMgbXkgb3Bpbmlvbi4iLCJzOSI6Ik15IGFuc3dlciBpcyBubyBcdTIwMTQgYmFubmluZyBqdW5rIGZvb2QgZnJvbSBjYW1wdXNlcyBpcyB0aGUgd3JvbmcgdG9vbCBmb3IgYSByZWFsIHByb2JsZW0sIGFuZCBJIHNheSB0aGF0IGFzIHNvbWVvbmUgd2hvIGZ1bGx5IGFkbWl0cyB0aGUgcHJvYmxlbSBleGlzdHMuIEZpcnN0LCB0aGUgcHJpbmNpcGxlOiBjb2xsZWdlIHN0dWRlbnRzIGFyZSBhZHVsdHMuIFRoZXkgc2lnbiBsZWFzZXMsIHRha2Ugb24gZGVidCwgdm90ZSwgYW5kIG1ha2UgYSBodW5kcmVkIGNvbnNlcXVlbnRpYWwgZGVjaXNpb25zIGEgd2Vlay4gQW4gaW5zdGl0dXRpb24gdGhhdCB0cnVzdHMgdGhlbSB0byBjaG9vc2UgYSBjYXJlZXIgcGF0aCBidXQgbm90IGEgc25hY2sgaXMgc2VuZGluZyBhIHN0cmFuZ2UgbWVzc2FnZSwgYW5kIHBhdGVybmFsaXNtIHRlbmRzIHRvIGJyZWVkIHJlc2VudG1lbnQgcmF0aGVyIHRoYW4gaGFiaXQgY2hhbmdlLiBTZWNvbmQsIHRoZSBwcmFjdGljYWxpdHk6IGJhbnMgZG9uJ3QgZWxpbWluYXRlIGRlbWFuZCwgdGhleSByZWxvY2F0ZSBpdC4gUHVsbCB0aGUgdmVuZGluZyBtYWNoaW5lcyBhbmQgc3R1ZGVudHMgd2lsbCB3YWxrIHRvIHRoZSBjb252ZW5pZW5jZSBzdG9yZSBhY3Jvc3MgdGhlIHN0cmVldCwgc3RvY2sgdGhlaXIgZG9ybSBmcmlkZ2VzIHdpdGggdGhlIHNhbWUgY2hpcHMgaW4gYnVsaywgb3IgRG9vckRhc2ggYSBidXJnZXIgYmV0d2VlbiBjbGFzc2VzIFx1MjAxNCBzYW1lIGNhbG9yaWVzLCBtb3JlIGNvc3QsIHBsdXMgdGhlIHVuaXZlcnNpdHkgbG9zZXMgdGhlIGZvb2QgcmV2ZW51ZSB0aGF0IG9mdGVuIHN1YnNpZGl6ZXMgY2FmZXRlcmlhcy4gUHJvaGliaXRpb24gb24gYSBjYW1wdXMgc2NhbGUgbW9zdGx5IHByb2R1Y2VzIGluY29udmVuaWVuY2UgYW5kIHdvcmthcm91bmRzLiBUaGlyZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZXJlJ3MgYSBzbWFydGVyIGxldmVyOiBlY29ub21pY3MgYW5kIGNvbnZlbmllbmNlLiBTdHVkZW50cyBlYXQganVuayBub3Qgb3V0IG9mIGlnbm9yYW5jZSBidXQgYmVjYXVzZSBpdCdzIHRoZSBjaGVhcGVzdCwgZmFzdGVzdCBvcHRpb24gYXQgMTEgcC5tLiBpbiB0aGUgbGlicmFyeS4gRmxpcCB0aGF0IGVxdWF0aW9uIFx1MjAxNCBzdWJzaWRpemUgc2FsYWRzIGFuZCBob3QgaGVhbHRoeSBtZWFscyBzbyB0aGV5IGNvc3QgbGVzcyB0aGFuIHRoZSBidXJnZXIsIGtlZXAgYSBmcnVpdCBzdGFuZCBpbiBldmVyeSBidWlsZGluZywgZXh0ZW5kIGhlYWx0aHktb3B0aW9uIGhvdXJzIGludG8gdGhlIG5pZ2h0LCBhbmQgcHV0IHJlYWwgbnV0cml0aW9uIGluZm9ybWF0aW9uIHdoZXJlIHBlb3BsZSBvcmRlci4gQ2FtcHVzZXMgdGhhdCBoYXZlIHRyaWVkIHRoaXMgY29uc2lzdGVudGx5IHNlZSBjaG9pY2VzIHNoaWZ0IHdpdGhvdXQgYSBzaW5nbGUgYmFuLiBJJ2xsIGNvbmNlZGUgdGhlIG90aGVyIHNpZGUgaGFzIGEgcG9pbnQ6IHN0dWRlbnQgb2Jlc2l0eSBhbmQgZGlhYmV0ZXMgcmF0ZXMgYXJlIGNsaW1iaW5nLCBhbmQgc29tZXRoaW5nIG11c3QgYmUgZG9uZS4gQnV0IHRoZSBhbnN3ZXIgaXMgdG8gbWFrZSB0aGUgaGVhbHRoeSBjaG9pY2UgdGhlIGVhc3kgY2hvaWNlIFx1MjAxNCBub3QgdG8gcGxheSBmb29kIHBvbGljZSB3aXRoIGFkdWx0cy4gTnVkZ2UsIGRvbid0IGJhbi4ifSx7ImsiOiJ0OCIsIm51bSI6OCwidHlwZUVuIjoiRGVzY3JpYmluZyBhbiBVbnVzdWFsIFNpdHVhdGlvbiIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3UgYXJlIGF0IGFuIGFtdXNlbWVudCBwYXJrIHdpdGggeW91ciBuZXBoZXcuIFlvdSBhcmUgaW5zaWRlIGFuIGludGVyZXN0aW5nIGJ1cywgdG91cmluZyB0aGUgcGFyay4gQ2FsbCB5b3VyIG5pZWNlIEJlY2EgYW5kIGRlc2NyaWJlIGluIGRldGFpbCB3aGF0IHRoZSBidXMgbG9va3MgbGlrZSwgYW5kIGFzayBpZiBzaGUgd291bGQgbGlrZSB0byBjb21lIHRvIHRoZSBwYXJrIG5leHQgd2Vla2VuZC4iLCJpbWciOiJ1bnVzdWFsIiwidGlwcyI6eyJidWxsZXRzIjpbIlRoaXMgaXMgYSBQSE9ORSBDQUxMOiBncmVldCB0aGUgcmlnaHQgcGVyc29uICh0aGUgcG9saWNlIC8geW91ciBmcmllbmQpLCB0aGVuIHNheSB3aGVyZSB5b3UgYXJlLiIsIkRlc2NyaWJlIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYzsgdGhlIHBpY3R1cmUgaXMgbWVhbnQgdG8gYmUgc3RyYW5nZSBcdTIwMTQganVzdCBkZXNjcmliZSB3aGF0IHlvdSBzZWUsIHVzaW5nICdJdCBsb29rcyBsaWtlIC8gYXMgaWZcdTIwMjYnLiIsIkVuZCB3aXRoIGEgcmVxdWVzdCBmb3IgYWN0aW9uIChzZW5kIGEgcGF0cm9sIC8gYXNrIHdoZXJlIHRvIGJ1eSkuIiwiVGhpcyBpcyBhIHBob25lIGNhbGwgdG8gQmVjYS4gS2V5IGRldGFpbHM6IGEgY2FuZHktdGhlbWVkIHRvdXIgYnVzIC0gYWxsIHRoZSBzZWF0cyBhcmUgZ2lhbnQgY2hvY29sYXRlIGJhcnMgKHNvbWUgd2l0aCBiaXRlcyB0YWtlbiBvdXQpLCB0aGUgcG9sZXMgYXJlIHJlZC1hbmQtd2hpdGUgY2FuZHkgY2FuZXMsIHRoZSBhaXNsZSBmbG9vciBpcyBzdHJpcGVkIGluIHJhaW5ib3cgcGFzdGVsIGNvbG91cnMsIGd1bW15IGJlYXJzIChyZWQsIHllbGxvdywgZ3JlZW4pIGFyZSBwbGFjZWQgb24gdGhlIHNlYXRzLCBjYW5keS1idXR0b24gZ2FybGFuZHMgaGFuZyBhbG9uZyB0aGUgd2luZG93cywgYSBwZXJzb24gaW4gYSB5ZWxsb3cgbGlvbiBjb3N0dW1lIGlzIHdhdmluZyBmcm9tIHRoZSBzZWF0cywgYW5kIGV2ZW4gdGhlIGRyaXZlcidzIHNlYXQgaXMgYSBmYW5jeSBwYXR0ZXJuZWQgdGhyb25lLiBFbmQgYnkgaW52aXRpbmcgQmVjYSBmb3IgbmV4dCB3ZWVrZW5kLiJdLCJwaHJhc2VzIjpbIkknbSBjYWxsaW5nIHRvIHJlcG9ydFx1MjAyNiIsIlBpY3R1cmUgdGhpczogXHUyMDI2IiwiSXQgbG9va3MgYXMgaWZcdTIwMjYiLCJDb3VsZCB5b3Ugc2VuZFx1MjAyNiAvIERvIHlvdSBrbm93IHdoZXJlXHUyMDI2PyJdfSwiczYiOiJCZWNhLCBoaSwgaXQncyB5b3VyIHVuY2xlISBJIGFtIGF0IHRoZSBhbXVzZW1lbnQgcGFyayB3aXRoIFRvbW15LCBhbmQgcmlnaHQgbm93IHdlIGFyZSByaWRpbmcgdGhlIGNyYXppZXN0IGJ1cyBJIGhhdmUgZXZlciBzZWVuLiBZb3UgbXVzdCBoZWFyIHRoaXMuIEl0IGlzIGEgY2FuZHkgYnVzIFx1MjAxNCBldmVyeXRoaW5nIGluc2lkZSBsb29rcyBsaWtlIHN3ZWV0cyEgVGhlIHNlYXRzIGFyZSBnaWFudCBjaG9jb2xhdGUgYmFycywgYmlnIGJyb3duIGJsb2NrcywgYW5kIHNvbWUgb2YgdGhlbSBldmVuIGhhdmUgYml0ZXMgdGFrZW4gb3V0LCBsaWtlIGEgZ2lhbnQgd2FzIGh1bmdyeS4gVGhlIHBvbGVzIGZvciBob2xkaW5nIGFyZSByZWQgYW5kIHdoaXRlIGNhbmR5IGNhbmVzLiBUaGUgZmxvb3IgaW4gdGhlIG1pZGRsZSBpcyBzdHJpcGVkIGxpa2UgYSByYWluYm93IFx1MjAxNCBwaW5rLCBibHVlLCBhbmQgZ3JlZW4gbGluZXMgZ29pbmcgYWxsIHRoZSB3YXkgdG8gdGhlIGJhY2suIE9uIHRoZSBzZWF0cywgdGhlcmUgYXJlIGJpZyBndW1teSBiZWFycyBcdTIwMTQgYSByZWQgb25lLCBhIHllbGxvdyBvbmUsIGFuZCBhIGdyZWVuIG9uZSBcdTIwMTQganVzdCBzaXR0aW5nIHRoZXJlIGxpa2UgcGFzc2VuZ2VycyEgR2FybGFuZHMgb2YgY29sb3VyZnVsIGNhbmR5IGJ1dHRvbnMgaGFuZyBhbG9uZyB0aGUgd2luZG93cy4gQW5kIGl0IGdldHMgZnVubmllcjogYSBwZXJzb24gaW4gYSB5ZWxsb3cgbGlvbiBjb3N0dW1lIGlzIHN0YW5kaW5nIGJldHdlZW4gdGhlIHNlYXRzIGFuZCB3YXZpbmcgYXQgZXZlcnlib2R5LCBhbmQgVG9tbXkgaXMgbGF1Z2hpbmcgc28gaGFyZC4gRXZlbiB0aGUgZHJpdmVyIGlzIHNwZWNpYWwgXHUyMDE0IGhlIHNpdHMgb24gYSBiZWF1dGlmdWwgdGhyb25lIHdpdGggcmVkIHBhdHRlcm5zLCBsaWtlIGEga2luZyBvZiBjYW5keS4gQmVjYSwgeW91IGxvdmUgc3dlZXRzIGFuZCBmdW5ueSB0aGluZ3MgXHUyMDE0IHdvdWxkIHlvdSBsaWtlIHRvIGNvbWUgaGVyZSB3aXRoIHVzIG5leHQgd2Vla2VuZD8gVG9tbXkgYW5kIEkgd2lsbCB0YWtlIHlvdSBvbiB0aGlzIGJ1cyBmaXJzdCB0aGluZywgSSBwcm9taXNlISIsInM5IjoiQmVjYSwgeW91IHBpY2tlZCB0aGUgcGVyZmVjdCBtb21lbnQgdG8gaGF2ZSB5b3VyIHBob25lIG9uIFx1MjAxNCBJJ20gYXQgdGhlIGFtdXNlbWVudCBwYXJrIHdpdGggVG9tbXksIGFuZCB3ZSBhcmUgY3VycmVudGx5IHJpZGluZyB3aGF0IEkgY2FuIG9ubHkgZGVzY3JpYmUgYXMgYSBjYW5keSBoYWxsdWNpbmF0aW9uIG9uIHdoZWVscy4gTGV0IG1lIGdpdmUgeW91IHRoZSB0b3VyLiBFdmVyeSBzaW5nbGUgc2VhdCBvbiB0aGlzIGJ1cyBpcyBhIGdpYW50IGNob2NvbGF0ZSBiYXIgXHUyMDE0IGh1Z2UgYnJvd24gc2xhYnMgbW9sZGVkIGludG8gc3F1YXJlcywgYW5kIGhlcmUncyB0aGUgZGV0YWlsIHRoYXQgbWFkZSBUb21teSBzY3JlYW0gd2l0aCBsYXVnaHRlcjogc29tZSBvZiB0aGVtIGhhdmUgYmlnIGJpdGVzIHRha2VuIG91dCBvZiB0aGUgY29ybmVycywgYXMgaWYgYSBnaWFudCBzbmFja2VkIG9uIHRoZSBmdXJuaXR1cmUuIFRoZSBoYW5kcmFpbCBwb2xlcyBhcmUgcmVkLWFuZC13aGl0ZSBzdHJpcGVkIGNhbmR5IGNhbmVzLCBmbG9vciB0byBjZWlsaW5nLCBhbmQgdGhlIGFpc2xlIGlzIHBhaW50ZWQgaW4gcGFzdGVsIHJhaW5ib3cgc3RyaXBlcyBcdTIwMTQgcGluaywgYmx1ZSwgdGVhbCBcdTIwMTQgcnVubmluZyB0aGUgd2hvbGUgbGVuZ3RoIG9mIHRoZSBidXMgbGlrZSBhIGNhbmR5IHJ1bndheS4gU2l0dGluZyBhbW9uZyB0aGUgcGFzc2VuZ2VycywgY29tcGxldGVseSBjYXN1YWxseSwgYXJlIGVub3Jtb3VzIGd1bW15IGJlYXJzIFx1MjAxNCBhIHJlZCBvbmUsIGEgeWVsbG93IG9uZSwgYSBncmVlbiBvbmUgXHUyMDE0IGp1c3Qgb2NjdXB5aW5nIHNlYXRzIGxpa2UgY29tbXV0ZXJzLiBTdHJpbmdzIG9mIHRob3NlIGxpdHRsZSByb3VuZCBjYW5keSBidXR0b25zIGFyZSBkcmFwZWQgYWxvbmcgdGhlIHdpbmRvd3MgYXMgZ2FybGFuZHMuIE9oLCBhbmQgdGhlcmUncyBhIHBlcnNvbiBpbiBhIGZ1bGwgeWVsbG93IGxpb24gY29zdHVtZSB3YW5kZXJpbmcgdGhlIGFpc2xlIHdhdmluZyBhdCBldmVyeW9uZSBcdTIwMTQgVG9tbXkgaGlnaC1maXZlZCBoaW0gdHdpY2UuIFRoZSBiZXN0IHBhcnQgbWlnaHQgYmUgdGhlIGRyaXZlcjogaGUncyBzaXR0aW5nIG9uIGFuIGFjdHVhbCB0aHJvbmUsIHRoaXMgb3JuYXRlIHJlZC1wYXR0ZXJuZWQgcm95YWwgY2hhaXIsIHN0ZWVyaW5nIGEgY2FuZHkgYnVzIGxpa2UgdGhlIGtpbmcgb2YgdGhlIHN1Z2FyIGtpbmdkb20uIEJlY2EsIEkga25vdyB5b3VyIHN3ZWV0IHRvb3RoIGFuZCB5b3VyIHNlbnNlIG9mIGh1bW91ciBcdTIwMTQgdGhpcyBwYXJrIGhhcyB5b3VyIG5hbWUgd3JpdHRlbiBhbGwgb3ZlciBpdC4gQ29tZSB3aXRoIHVzIG5leHQgd2Vla2VuZCEgVG9tbXkncyBhbHJlYWR5IHBsYW5uaW5nIHlvdXIgc2VhdDogdGhlIGNob2NvbGF0ZSBiYXIgd2l0aCB0aGUgYmlnZ2VzdCBiaXRlLiBTYXkgeWVzPyJ9XSwidWkiOnsic3RhcnRUZXN0IjoiU3RhcnQgdGhlIHRlc3QiLCJtaWNFbmFibGUiOiJFbmFibGUgbWljcm9waG9uZSIsIm1pY1JlYWR5IjoiTWljcm9waG9uZSByZWFkeSIsIm1pY0Jsb2NrZWQiOiJNaWNyb3Bob25lIGlzIGJsb2NrZWQgb3IgdW5hdmFpbGFibGUgXHUyMDE0IHRoZSBwYWdlIHdpbGwgcnVuIGluIHRpbWVyLW9ubHkgbW9kZSAoeW91IGNhbiBzdGlsbCBwcmFjdGlzZSBzcGVha2luZyBhbG9uZyB3aXRoIHRoZSB0aW1lcnMpLiIsIm1pY05vdGUiOiJSZWNvcmRpbmdzIGFyZSBzdG9yZWQgdGVtcG9yYXJpbHkgaW4geW91ciBicm93c2VyIG9ubHkgXHUyMDE0IG5vdGhpbmcgaXMgdXBsb2FkZWQgdG8gYW55IHNlcnZlci4gVGhleSBhcmUgbG9zdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFnZSwgc28gZG93bmxvYWQgYW55IHlvdSB3YW50IHRvIGtlZXAuIiwicHJlcFRpdGxlIjoiUHJlcGFyYXRpb24gVGltZSIsInJlY1RpdGxlIjoiUmVjb3JkaW5nIiwic3RhcnRQcmVwIjoiXHUyNWI2IFN0YXJ0IHByZXBhcmF0aW9uIiwic2tpcFByZXAiOiJTa2lwIFx1MjAxNCByZWNvcmQgbm93IFx1MDBiYiIsInN0b3BSZWMiOiJcdTI1YTAgU3RvcCByZWNvcmRpbmciLCJyZWNvcmRlZCI6IlJlY29yZGVkIiwicmVSZWNvcmQiOiJcdTIxYmIgUmVjb3JkIGFnYWluIiwiZG93bmxvYWQiOiJcdTJiMDcgRG93bmxvYWQiLCJ0aW1lck9ubHkiOiJUaW1lci1vbmx5IG1vZGUgKG5vdCByZWNvcmRpbmcpIiwic3BlYWtOb3ciOiJTUEVBSyBOT1cgXHUyMDE0IHJlY29yZGluZyBzdG9wcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGltZSBpcyB1cCIsIm5leHQiOiJORVhUIiwiY2hvb3NlSGludCI6IkNsaWNrIHRvIGNob29zZSBvbmUgb3B0aW9uIFx1MjAxNCBpZiB0aGUgNjAgc2Vjb25kcyBydW4gb3V0LCB0aGUgc3lzdGVtIGNob29zZXMgZm9yIHlvdSIsImNvbmZpcm1DaG9pY2UiOiJDb25maXJtIGNob2ljZSAmIGNvbnRpbnVlIFx1MDBiYiIsInlvdXJDaG9pY2UiOiJZb3VyIENob2ljZSIsInRpcHNUb2dnbGUiOiJcdWQ4M2RcdWRjYTEgVGlwcyAmIHNhbXBsZSBhbnN3ZXJzIChvcGVuIGFmdGVyIHlvdSBmaW5pc2ggc3BlYWtpbmcpIiwidGFiVGlwcyI6Ik91dGxpbmUgJiBwaHJhc2VzIiwidGFiUzYiOiJTYW1wbGUgQ0xCIDYiLCJ0YWJTOSI6IlNhbXBsZSBDTEIgOSIsInRhYlJ1YnJpYyI6IlNlbGYtYXNzZXNzbWVudCIsInJ1YnJpY05vdGUiOiJMaXN0ZW4gdG8geW91ciByZWNvcmRpbmcsIHRoZW4gcmF0ZSB5b3Vyc2VsZiAxXHUyMDEzNSBvbiBlYWNoIGNyaXRlcmlvbiAodGhlIDQgb2ZmaWNpYWwgQ0VMUElQIHJhdGluZyBkaW1lbnNpb25zKToiLCJydWJyaWNDcml0IjpbIkNvbnRlbnQgJiBDb2hlcmVuY2UgXHUyMDE0IGNvbXBsZXRlIGlkZWFzLCBsb2dpY2FsIGZsb3ciLCJWb2NhYnVsYXJ5IFx1MjAxNCByYW5nZSBhbmQgcHJlY2lzaW9uIiwiTGlzdGVuYWJpbGl0eSBcdTIwMTQgcHJvbnVuY2lhdGlvbiwgaW50b25hdGlvbiwgZmx1ZW5jeSIsIlRhc2sgRnVsZmlsbG1lbnQgXHUyMDE0IGFkZHJlc3NlcyB0aGUgdGFzaywgYXBwcm9wcmlhdGUgbGVuZ3RoIl0sImVzdGltYXRlIjoiRXN0aW1hdGVkIGxldmVsIChmb3IgcmVmZXJlbmNlKToiLCJlc3REaXNjbGFpbWVyIjoiU2VsZi1hc3Nlc3NtZW50IGlzIGEgcm91Z2ggZ3VpZGUgb25seSBcdTIwMTQgaXQgZG9lcyBub3QgcmVwbGFjZSBhbiBvZmZpY2lhbCBzY29yZS4iLCJ1c2VmdWxQaHJhc2VzIjoiVXNlZnVsIHBocmFzZXMiLCJlbmRUaXRsZSI6IlNwZWFraW5nIHRlc3QgY29tcGxldGUhIiwiZW5kU3ViIjoiUmVwbGF5IGVhY2ggdGFzaywgY29tcGFyZSB5b3VyIGFuc3dlcnMgd2l0aCB0aGUgQ0xCIDYgLyBDTEIgOSBzYW1wbGVzLCB0aGVuIHJhdGUgeW91cnNlbGYuIiwiZW5kTm9SZWMiOiJub3QgcmVjb3JkZWQiLCJlbmRSZWRvIjoiXHUyMWJiIFN0YXJ0IG92ZXIiLCJlbmRUMiI6IkNvbnRpbnVlIHRvIFByYWN0aWNlIFRlc3QiLCJlbmRIdWIiOiJcdTIxOTAgQmFjayB0byBDRUxQSVAgSHViIiwid2FybXVwQmFkZ2UiOiJXYXJtLXVwIFx1MjAxNCBub3Qgc2NvcmVkIiwiaW50cm9Ob3RlcyI6WyJBbiBhY2N1cmF0ZSBzaW11bGF0aW9uIG9mIHRoZSByZWFsIENFTFBJUCBHZW5lcmFsIFNwZWFraW5nIHRlc3Q6IDEgcHJhY3RpY2UgKHdhcm0tdXApIHRhc2sgKyA4IHNjb3JlZCB0YXNrcywgYWJvdXQgMjAgbWludXRlcyBpbiB0b3RhbC4iLCJFYWNoIHRhc2s6IHJlYWQgdGhlIHByb21wdCBcdTIxOTIgPGI+UHJlcGFyYXRpb248L2I+IGNvdW50ZG93biBcdTIxOTIgc3dpdGNoZXMgYXV0b21hdGljYWxseSB0byA8Yj5SZWNvcmRpbmc8L2I+ICh3aXRoIGEgYmVlcCkgXHUyMTkyIHN0b3BzIHdoZW4gdGltZSBpcyB1cC4iLCJPbiB0aGUgcmVhbCB0ZXN0IHlvdSBjYW5ub3QgZ28gYmFjayB0byBhIHByZXZpb3VzIHRhc2suIEluIHByYWN0aWNlIG1vZGUsIHlvdSBjYW4gY2xpY2sgdGhlIG51bWJlcmVkIGNoaXBzIGFib3ZlIHRvIHJldmlzaXQgYW55IHRhc2suIiwiQWZ0ZXIgc3BlYWtpbmcgb24gZWFjaCB0YXNrLCBvcGVuIDxiPlRpcHMgJiBzYW1wbGUgYW5zd2VyczwvYj4gdG8gY29tcGFyZSB5b3VyIHJlc3BvbnNlIHdpdGggdGhlIENMQiA2IGFuZCBDTEIgOSBzYW1wbGVzLiJdLCJoZXJvVGFnIjoiQ0VMUElQIEdlbmVyYWwgXHUyMDE0IFNwZWFraW5nIiwiaGVyb01ldGEiOlsiOCB0YXNrcyArIHdhcm0tdXAiLCJ+MjAgbWludXRlcyIsIlJlY29yZCAmIHJlcGxheSIsIkNMQiA2IC8gQ0xCIDkgc2FtcGxlcyJdfX07Ci8qIENFTFBJUCBTcGVha2luZyBFbmdpbmUgdjEuMCAtIEFsbEVuZ2xpc2g0VSAtIHZhbmlsbGEgSlMsIHByZWZpeCBjbHAtc3BrICovCihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CnZhciBEID0gd2luZG93LkNMUFNQS19EQVRBLCBVID0gRC51aTsKdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwLXNway1yb290Iik7CmlmKCFyb290KSByZXR1cm47CgovKiAtLS0tLS0tLS0tIHN0eWxlIC0tLS0tLS0tLS0gKi8KdmFyIENTUyA9ICIiKwoiLmNscC1zcGstd3JhcHttYXgtd2lkdGg6MTE0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzowIDE0cHggNjBweDtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMyMzI3MmQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0iKwoiLmNscC1zcGstd3JhcCAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0iKwoiLmNscC1zcGstaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzdmMWQxZCAwJSwjYjkxYzFjIDU1JSwjZGMyNjI2IDEwMCUpO2JvcmRlci1yYWRpdXM6MThweDtjb2xvcjojZmZmO3BhZGRpbmc6MzBweCAzMHB4IDI2cHg7bWFyZ2luOjE4cHggMCAyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstaGVybzphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi02MHB4O3RvcDotNjBweDt3aWR0aDoyMjBweDtoZWlnaHQ6MjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9IisKIi5jbHAtc3BrLWhlcm8gLnRhZ3tkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE2KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjM1KTtwYWRkaW5nOjNweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouNnB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstaGVybyBoMXttYXJnaW46MTBweCAwIDZweDtmb250LXNpemU6MjdweDtsaW5lLWhlaWdodDoxLjI1O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGF7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLXRvcDoxMnB4fSIrCiIuY2xwLXNway1oZXJvIC5tZXRhIHNwYW57YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yMik7cGFkZGluZzo0cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHh9IisKIi5jbHAtc3BrLWNoaXBze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbjowIDAgMTRweH0iKwoiLmNscC1zcGstY2hpcHttaW4td2lkdGg6MzhweDtoZWlnaHQ6MzRweDtib3JkZXItcmFkaXVzOjlweDtib3JkZXI6MS41cHggc29saWQgI2QzZDhkZjtiYWNrZ3JvdW5kOiNmZmY7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6IzViNjU3MjtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMTBweH0iKwoiLmNscC1zcGstY2hpcC5jdXJ7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWNoaXAuZG9uZXtiYWNrZ3JvdW5kOiNlNmY0ZWE7Ym9yZGVyLWNvbG9yOiM3YmMzOTQ7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstcGFuZWx7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDMwLDQwLDYwLC4wNil9IisKIi5jbHAtc3BrLWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2JhY2tncm91bmQ6I2VjZWNlZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDVkNWQ4O3BhZGRpbmc6OXB4IDE0cHg7ZmxleC13cmFwOndyYXB9IisKIi5jbHAtc3BrLWJhciAudHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE0LjVweDtjb2xvcjojM2M0MDQ2fSIrCiIuY2xwLXNway1iYXIgLm17bWFyZ2luLWxlZnQ6YXV0bztmb250LXNpemU6MTIuNXB4O2NvbG9yOiM1NTU7d2hpdGUtc3BhY2U6bm93cmFwfSIrCiIuY2xwLXNway1iYXIgLm0gYntjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1uZXh0e2JhY2tncm91bmQ6IzE0NjdjNjtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi44cHg7cGFkZGluZzo3cHggMThweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstbmV4dDpob3ZlcntiYWNrZ3JvdW5kOiMwZjU3YWJ9IisKIi5jbHAtc3BrLWJvZHl7cGFkZGluZzoxOHB4IDIwcHggMjJweH0iKwoiLmNscC1zcGstcHJvbXB0e2Rpc3BsYXk6ZmxleDtnYXA6OXB4O2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNS41cHg7bGluZS1oZWlnaHQ6MS41fSIrCiIuY2xwLXNway1wcm9tcHQgLml7ZmxleDowIDAgYXV0bzt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6IzJjN2NiMDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjgwMDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoycHh9IisKIi5jbHAtc3BrLWxlYWR7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo0cHh9IisKIi5jbHAtc3BrLWNob29zZTF7bWFyZ2luOjE0cHggMCAwO3BhZGRpbmc6MTJweCAxNnB4O2JhY2tncm91bmQ6I2Y1ZjdmYTtib3JkZXI6MXB4IHNvbGlkICNkZmU0ZWE7Ym9yZGVyLXJhZGl1czo5cHg7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjU1fSIrCiIuY2xwLXNway1jaG9vc2UxIC5le2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojOGExZjFmO2xldHRlci1zcGFjaW5nOi40cHh9IisKIi5jbHAtc3BrLWltZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDo1NDBweDt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2NmZDRkYTtib3JkZXItcmFkaXVzOjhweDttYXJnaW46MTZweCAwIDRweH0iKwoiLmNscC1zcGstbm90ZXtmb250LXNpemU6MTJweDtjb2xvcjojOGE5MjljO21hcmdpbi10b3A6NnB4fSIrCiIuY2xwLXNway10aW1lcnJvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MjBweCAwIDZweH0iKwoiLmNscC1zcGstdGltZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweDtiYWNrZ3JvdW5kOiNlOWVjZWY7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE2cHggMjZweDttaW4td2lkdGg6MzAwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIgLmlje3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZjhmOWZhO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjIycHh9IisKIi5jbHAtc3BrLXRpbWVyIC5sYntmb250LXdlaWdodDo3MDA7Y29sb3I6IzMzMzgzZjtmb250LXNpemU6MTVweH0iKwoiLmNscC1zcGstdGltZXIgLm57Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMwYjU3ZDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO21pbi13aWR0aDo1MnB4O3RleHQtYWxpZ246Y2VudGVyfSIrCiIuY2xwLXNway10aW1lci5yZWN7YmFja2dyb3VuZDojZmRlY2ViO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway10aW1lci5yZWMgLm57Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstdGltZXIucmVjIC5pY3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLWRvdHt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2U1MzkzNTtkaXNwbGF5OmlubGluZS1ibG9jazthbmltYXRpb246Y2xwYmxpbmsgMXMgaW5maW5pdGV9IisKIkBrZXlmcmFtZXMgY2xwYmxpbmt7MCUsMTAwJXtvcGFjaXR5OjF9NTAle29wYWNpdHk6LjI1fX0iKwoiLmNscC1zcGstY3Rye2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjoxNHB4IDAgMnB4fSIrCiIuY2xwLXNway1idG57Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzM4M2Y7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzo5cHggMThweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYnRuOmhvdmVye2JvcmRlci1jb2xvcjojOWFhM2FkfSIrCiIuY2xwLXNway1idG4ucHJpe2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1idG4ucHJpOmhvdmVye2JhY2tncm91bmQ6IzBhNGNiNX0iKwoiLmNscC1zcGstYnRuLndhcm57YmFja2dyb3VuZDojYzYyODI4O2JvcmRlci1jb2xvcjojYzYyODI4O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXNwZWFrbm93e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNjNjI4Mjg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6OHB4O2xldHRlci1zcGFjaW5nOi4zcHh9IisKIi5jbHAtc3BrLXJldmlld3ttYXJnaW46MTZweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2YyZjlmMztib3JkZXI6MXB4IHNvbGlkICNiZmUzYzY7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAxOHB4fSIrCiIuY2xwLXNway1yZXZpZXcgLm9re2NvbG9yOiMxZTdiM2U7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNC41cHh9IisKIi5jbHAtc3BrLXJldmlldyBhdWRpb3t3aWR0aDoxMDAlO21hcmdpbjoxMHB4IDAgOHB4fSIrCiIuY2xwLXNway1taWN7bWFyZ2luOjEycHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmZmY4ZTY7Ym9yZGVyOjFweCBzb2xpZCAjZWNkOWEwO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MTNweDtjb2xvcjojN2E1YjEyfSIrCiIuY2xwLXNway1vcHRze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTZweDttYXJnaW46MThweCAwIDRweH0iKwoiLmNscC1zcGstY2FyZHtib3JkZXI6MnB4IHNvbGlkICNkNWRhZTA7Ym9yZGVyLXJhZGl1czoxMXB4O3BhZGRpbmc6MTNweCAxNXB4IDE1cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojZmZmO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXN9IisKIi5jbHAtc3BrLWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM4ZmI0ZTh9IisKIi5jbHAtc3BrLWNhcmQuc2Vse2JvcmRlci1jb2xvcjojMmU5ZTRmO2JhY2tncm91bmQ6I2VlZjlmMH0iKwoiLmNscC1zcGstY2FyZC5wbGFpbntjdXJzb3I6ZGVmYXVsdH0iKwoiLmNscC1zcGstY2FyZCAuaGR7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzZiNzQ4MDtsZXR0ZXItc3BhY2luZzouM3B4O21hcmdpbi1ib3R0b206OHB4fSIrCiIuY2xwLXNway1jYXJkIGltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6N3B4O2JvcmRlcjoxcHggc29saWQgI2UyZTZlYX0iKwoiLmNscC1zcGstY2FyZCAudHR7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjoxMHB4IDAgNnB4O2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLWNhcmQgdWx7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjE4cHg7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU1O2NvbG9yOiMzYzQzNGJ9IisKIi5jbHAtc3BrLWNhcmQgLnBpY2t7bWFyZ2luLXRvcDoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMmU5ZTRmO2ZvbnQtc2l6ZToxM3B4O21pbi1oZWlnaHQ6MThweH0iKwoiLmNscC1zcGstaGludHt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojNmI3NDgwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstYWNje21hcmdpbi10b3A6MjJweDtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMXB4O292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstYWNjPmJ1dHRvbnt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjA7cGFkZGluZzoxMnB4IDE2cHg7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMzYzQwNDY7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpub25lO3BhZGRpbmc6MTRweCAxNnB4IDE4cHg7YmFja2dyb3VuZDojZmZmfSIrCiIuY2xwLXNway1hY2Mub3BlbiAuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnN7ZGlzcGxheTpmbGV4O2dhcDo2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMnB4fSIrCiIuY2xwLXNway10YWJ7Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo2cHggMTVweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNGE1MjVjfSIrCiIuY2xwLXNway10YWIub257YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXRhYnBhbmV7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42NX0iKwoiLmNscC1zcGstdGFicGFuZS5vbntkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJwYW5lIHVse3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbjo4cHggMH0iKwoiLmNscC1zcGstdGFicGFuZSBsaXttYXJnaW46NXB4IDB9IisKIi5jbHAtc3BrLXNhbXBsZXtiYWNrZ3JvdW5kOiNmOGY5ZmI7Ym9yZGVyOjFweCBzb2xpZCAjZTNlN2VjO2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjMGI1N2QwO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTNweCAxNnB4O3doaXRlLXNwYWNlOnByZS13cmFwfSIrCiIuY2xwLXNway1zYW1wbGUuczZ7Ym9yZGVyLWxlZnQtY29sb3I6I2U4YTEzY30iKwoiLmNscC1zcGstcGhye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstcGhyIHNwYW57YmFja2dyb3VuZDojZWVmM2ZiO2JvcmRlcjoxcHggc29saWQgI2NkZGRmNTtjb2xvcjojMTc0YTljO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo0cHggMTJweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstcnVie2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLXJ1YiB0ZHtwYWRkaW5nOjdweCA2cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZjBmM30iKwoiLmNscC1zcGstc3RhcntjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTlweDtjb2xvcjojYzljZmQ2O3BhZGRpbmc6MCAxcHg7dXNlci1zZWxlY3Q6bm9uZX0iKwoiLmNscC1zcGstc3Rhci5vbntjb2xvcjojZjBhNzFifSIrCiIuY2xwLXNway1lc3R7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZThkNDhiO2NvbG9yOiM3YTViMTI7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMTJweDttYXJnaW4tYm90dG9tOjEwcHh9IisKIi5jbHAtc3BrLWludHJvIHVse2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS43O3BhZGRpbmctbGVmdDoyMHB4fSIrCiIuY2xwLXNway1pbnRybyBsaXttYXJnaW46N3B4IDB9IisKIi5jbHAtc3BrLW1pY3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MXB4IHNvbGlkICNlMGU0ZTk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweCAxNnB4O21hcmdpbjoxNnB4IDB9IisKIi5jbHAtc3BrLW1pY3N0e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1taWNzdC5va3tjb2xvcjojMWU3YjNlfS5jbHAtc3BrLW1pY3N0LmJhZHtjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway1lbmQgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjE0cHh9IisKIi5jbHAtc3BrLWVuZCB0ZCwuY2xwLXNway1lbmQgdGh7cGFkZGluZzo5cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2VmZjI7dGV4dC1hbGlnbjpsZWZ0fSIrCiIuY2xwLXNway1lbmQgYXVkaW97aGVpZ2h0OjM0cHg7bWF4LXdpZHRoOjIzMHB4fSIrCiJAbWVkaWEobWF4LXdpZHRoOjcwMHB4KXsuY2xwLXNway1vcHRze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmNscC1zcGstYmFyIC5te29yZGVyOjM7bWFyZ2luLWxlZnQ6MDt3aWR0aDoxMDAlfS5jbHAtc3BrLWhlcm8gaDF7Zm9udC1zaXplOjIycHh9LmNscC1zcGstYm9keXtwYWRkaW5nOjE0cHggMTJweCAxOHB4fX0iOwp2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOyBzdC50ZXh0Q29udGVudCA9IENTUzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CgovKiAtLS0tLS0tLS0tIHN0YXRlIC0tLS0tLS0tLS0gKi8KdmFyIFMgPSB7CiAgY3VyOiAtMSwgICAgICAgICAgICAvKiAtMSBpbnRybywgMC4uOCB0YXNrcywgOTkgZW5kICovCiAgbWljU3RhdGU6ICJpZGxlIiwgICAvKiBpZGxlfG9rfGJhZCAqLwogIHN0cmVhbTogbnVsbCwgcmVjb3JkZXI6IG51bGwsIGNodW5rczogW10sCiAgdGltZXI6IG51bGwsIHBoYXNlOiB7fSwgdDVjaG9pY2U6IHt9LCByZWNzOiB7fSwgcnVicmljOiB7fSwKICBtaW1lOiAiIiwgZXh0OiAid2VibSIKfTsKRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZCA\/ICJjaG9vc2UtaWRsZSIgOiAiaWRsZSI7IH0pOwoKZnVuY3Rpb24gcGlja01pbWUoKXsKICBpZighd2luZG93Lk1lZGlhUmVjb3JkZXIpIHJldHVybiBudWxsOwogIHZhciBjYW5kcyA9IFtbImF1ZGlvL3dlYm07Y29kZWNzPW9wdXMiLCJ3ZWJtIl0sWyJhdWRpby93ZWJtIiwid2VibSJdLFsiYXVkaW8vbXA0IiwibTRhIl0sWyJhdWRpby9vZ2c7Y29kZWNzPW9wdXMiLCJvZ2ciXV07CiAgZm9yKHZhciBpPTA7aTxjYW5kcy5sZW5ndGg7aSsrKXsgdHJ5eyBpZihNZWRpYVJlY29yZGVyLmlzVHlwZVN1cHBvcnRlZChjYW5kc1tpXVswXSkpIHJldHVybiBjYW5kc1tpXTsgfWNhdGNoKGUpe30gfQogIHJldHVybiBbIiIsIndlYm0iXTsKfQpmdW5jdGlvbiBlbnN1cmVNaWMoY2IpewogIGlmKFMubWljU3RhdGU9PT0ib2siKSByZXR1cm4gY2IodHJ1ZSk7CiAgaWYoUy5taWNTdGF0ZT09PSJiYWQiKSByZXR1cm4gY2IoZmFsc2UpOwogIGlmKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fCAhd2luZG93Lk1lZGlhUmVjb3JkZXIpeyBTLm1pY1N0YXRlPSJiYWQiOyByZXR1cm4gY2IoZmFsc2UpOyB9CiAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGZ1bmN0aW9uKHN0cmVhbSl7CiAgICBTLnN0cmVhbSA9IHN0cmVhbTsgdmFyIG0gPSBwaWNrTWltZSgpOyBTLm1pbWUgPSBtWzBdOyBTLmV4dCA9IG1bMV07IFMubWljU3RhdGU9Im9rIjsgY2IodHJ1ZSk7CiAgfSkuY2F0Y2goZnVuY3Rpb24oKXsgUy5taWNTdGF0ZT0iYmFkIjsgY2IoZmFsc2UpOyB9KTsKfQpmdW5jdGlvbiBiZWVwKG4pewogIHRyeXsKICAgIHZhciBjdHggPSB3aW5kb3cuX19jbHBBQyA9IHdpbmRvdy5fX2NscEFDIHx8IG5ldyAod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkoKTsKICAgIHZhciB0MCA9IGN0eC5jdXJyZW50VGltZTsKICAgIGZvcih2YXIgaT0wO2k8bjtpKyspewogICAgICB2YXIgbyA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCksIGcgPSBjdHguY3JlYXRlR2FpbigpOwogICAgICBvLmZyZXF1ZW5jeS52YWx1ZSA9IDg4MDsgby5jb25uZWN0KGcpOyBnLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKTsKICAgICAgZy5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUpOyBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjE4LHQwK2kqMC4yNSswLjAyKTsKICAgICAgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSswLjE4KTsKICAgICAgby5zdGFydCh0MCtpKjAuMjUpOyBvLnN0b3AodDAraSowLjI1KzAuMik7CiAgICB9CiAgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBzdG9wVGltZXIoKXsgaWYoUy50aW1lcil7IGNsZWFySW50ZXJ2YWwoUy50aW1lcik7IFMudGltZXI9bnVsbDsgfSB9CmZ1bmN0aW9uIGNvdW50ZG93bihzZWNzLCBvblRpY2ssIG9uRW5kKXsKICBzdG9wVGltZXIoKTsKICB2YXIgZW5kID0gRGF0ZS5ub3coKSArIHNlY3MqMTAwMDsKICBvblRpY2soc2Vjcyk7CiAgUy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKGVuZC1EYXRlLm5vdygpKS8xMDAwKSk7CiAgICBvblRpY2sobGVmdCk7CiAgICBpZihsZWZ0PD0wKXsgc3RvcFRpbWVyKCk7IG9uRW5kKCk7IH0KICB9LCAyNTApOwp9CmZ1bmN0aW9uIHN0b3BSZWNvcmRpbmcoKXsKICBpZihTLnJlY29yZGVyICYmIFMucmVjb3JkZXIuc3RhdGUhPT0iaW5hY3RpdmUiKXsgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpe30gfQogIFMucmVjb3JkZXIgPSBudWxsOwp9CmZ1bmN0aW9uIGxlYXZlQ2xlYW51cCgpeyBzdG9wVGltZXIoKTsgc3RvcFJlY29yZGluZygpOyB9CgovKiAtLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbCh0YWcsIGNscywgaHRtbCl7IHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsgaWYoY2xzKWUuY2xhc3NOYW1lPWNsczsgaWYoaHRtbCE9bnVsbCllLmlubmVySFRNTD1odG1sOyByZXR1cm4gZTsgfQpmdW5jdGlvbiBmbXRNZXRhKHQpewogIGlmKHQucGhhc2VkKSByZXR1cm4gIiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gdGFza1RpdGxlKHQpewogIGlmKHQud2FybXVwKSByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFByYWN0aWNlIFRhc2siOwogIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgVGFzayAiK3QubnVtKyI6ICIrdC50eXBlRW47Cn0KZnVuY3Rpb24gZXN0VGV4dChhdmcpewogIGlmKGF2Zz49NC41KSByZXR1cm4gIkNMQiA5KyI7IGlmKGF2Zz49My41KSByZXR1cm4gIkNMQiA3XHUyMDEzOCI7IGlmKGF2Zz49Mi41KSByZXR1cm4gIkNMQiA1XHUyMDEzNiI7IHJldHVybiAiQ0xCIDQgb3IgYmVsb3ciOwp9CgovKiAtLS0tLS0tLS0tIHJlbmRlciAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHJlbmRlcigpewogIGxlYXZlQ2xlYW51cCgpOwogIHJvb3QuaW5uZXJIVE1MID0gIiI7CiAgdmFyIHdyYXAgPSBlbCgiZGl2IiwiY2xwLXNway13cmFwIik7CiAgd3JhcC5hcHBlbmRDaGlsZChoZXJvKCkpOwogIGlmKFMuY3VyPj0wICYmIFMuY3VyPEQudGFza3MubGVuZ3RoKSB3cmFwLmFwcGVuZENoaWxkKGNoaXBzKCkpOwogIGlmKFMuY3VyPT09LTEpIHdyYXAuYXBwZW5kQ2hpbGQoaW50cm8oKSk7CiAgZWxzZSBpZihTLmN1cj09PTk5KSB3cmFwLmFwcGVuZENoaWxkKGVuZFNjcmVlbigpKTsKICBlbHNlIHdyYXAuYXBwZW5kQ2hpbGQodGFza1BhbmVsKEQudGFza3NbUy5jdXJdKSk7CiAgcm9vdC5hcHBlbmRDaGlsZCh3cmFwKTsKICB0cnl7IHdpbmRvdy5zY3JvbGxUbyh7dG9wOiByb290Lm9mZnNldFRvcC0xMCwgYmVoYXZpb3I6InNtb290aCJ9KTsgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBoZXJvKCl7CiAgdmFyIGggPSBlbCgiZGl2IiwiY2xwLXNway1oZXJvIik7CiAgaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsInRhZyIsVS5oZXJvVGFnKSk7CiAgaC5hcHBlbmRDaGlsZChlbCgiaDEiLG51bGwsRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gPyAiU3BlYWtpbmcgXHUyMDE0IitELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA6IEQudGl0bGUpKTsKICB2YXIgbSA9IGVsKCJkaXYiLCJtZXRhIik7CiAgVS5oZXJvTWV0YS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBtLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgaC5hcHBlbmRDaGlsZChtKTsKICByZXR1cm4gaDsKfQpmdW5jdGlvbiBjaGlwcygpewogIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hpcHMiKTsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciBiID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKGk9PT1TLmN1cj8iIGN1ciI6KFMucmVjc1t0LmtdPyIgZG9uZSI6IiIpKSwgdC53YXJtdXA\/IlciOlN0cmluZyh0Lm51bSkpOwogICAgYi50aXRsZSA9IHQudHlwZUVuOwogICAgYi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICBjLmFwcGVuZENoaWxkKGIpOwogIH0pOwogIHZhciBlID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKFMuY3VyPT09OTk\/IiBjdXIiOiIiKSwiXHVkODNjXHVkZmMxIik7CiAgZS50aXRsZSA9ICJGaW5pc2giOyBlLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj05OTsgcmVuZGVyKCk7IH07CiAgYy5hcHBlbmRDaGlsZChlKTsKICByZXR1cm4gYzsKfQpmdW5jdGlvbiBpbnRybygpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1pbnRybyIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmciKSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsgbnguc3R5bGUubWFyZ2luTGVmdD0iYXV0byI7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7IHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLCJTcGVha2luZyBUZXN0IEluc3RydWN0aW9ucyIpKTsKICBiLmFwcGVuZENoaWxkKHByKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBVLmludHJvTm90ZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYi5hcHBlbmRDaGlsZCh1bCk7CiAgdmFyIG1pY3JvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLW1pY3JvdyIpOwogIHZhciBtYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5taWNFbmFibGUpOwogIHZhciBtc3QgPSBlbCgic3BhbiIsImNscC1zcGstbWljc3QiLCIiKTsKICBtYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgbWJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24ob2spewogICAgICBtc3QuY2xhc3NOYW1lID0gImNscC1zcGstbWljc3QgIisob2s\/Im9rIjoiYmFkIik7CiAgICAgIG1zdC5pbm5lckhUTUwgPSBvayA\/ICJcdTI3MTQgIitVLm1pY1JlYWR5IDogIlx1MjcxNiAiK1UubWljQmxvY2tlZDsKICAgICAgaWYoIW9rKSBtYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICB9KTsKICB9OwogIG1pY3Jvdy5hcHBlbmRDaGlsZChtYnRuKTsgbWljcm93LmFwcGVuZENoaWxkKG1zdCk7CiAgYi5hcHBlbmRDaGlsZChtaWNyb3cpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5taWNOb3RlKSk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRUZXN0KyIgXHUyNWI2Iik7CiAgZ28uc3R5bGUuZm9udFNpemU9IjE1cHgiOyBnby5zdHlsZS5wYWRkaW5nPSIxMnB4IDI2cHgiOwogIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBjdHIuYXBwZW5kQ2hpbGQoZ28pOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiAtLS0tLS0tLS0tIHRhc2sgcGFuZWwgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0YXNrUGFuZWwodCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0Iix0YXNrVGl0bGUodCkpKTsKICB2YXIgbWV0YSA9IGVsKCJzcGFuIiwibSIsIHQucGhhc2VkID8gcGhhc2VkTWV0YSh0KSA6IGZtdE1ldGEodCkpOwogIGJhci5hcHBlbmRDaGlsZChtZXRhKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1ciA9IChTLmN1cisxIDwgRC50YXNrcy5sZW5ndGgpID8gUy5jdXIrMSA6IDk5OyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBpZih0Lndhcm11cCkgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1iYWRnZSIsVS53YXJtdXBCYWRnZSkpOwogIGlmKHQucGhhc2VkKSByZW5kZXJUNSh0LGIsbWV0YSk7CiAgZWxzZSByZW5kZXJTdGQodCxiKTsKICBpZih0LnRpcHMpIGIuYXBwZW5kQ2hpbGQoYWNjb3JkaW9uKHQpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CmZ1bmN0aW9uIHBoYXNlZE1ldGEodCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdfHwiIjsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5jaG9vc2UucHJlcCsiIHNlY29uZHM8L2I+IjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3Quc3BlYWsucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnNwZWFrLnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiBwcm9tcHRSb3codGV4dCwgbGVhZCl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihsZWFkKXsgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWxlYWQiLGxlYWQpKTsgfQogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsdGV4dCkpOwogIGJveC5hcHBlbmRDaGlsZChwcik7CiAgcmV0dXJuIGJveDsKfQpmdW5jdGlvbiByZW5kZXJTdGQodCxiKXsKICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnByb21wdCwgdC5wcm9tcHRMZWFkKSk7CiAgaWYodC5jaG9vc2VPbmUpewogICAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaG9vc2UxIiwiPGRpdiBjbGFzcz0nZSc+Q2hvb3NlIE9ORTo8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPkVJVEhFUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVswXSsiPC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5PUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVsxXSsiPC9kaXY+Iik7CiAgICBiLmFwcGVuZENoaWxkKGMpOwogIH0KICBpZih0LmltZyAmJiBELmltZ3NbdC5pbWddKXsKICAgIHZhciBpbSA9IGVsKCJpbWciLCJjbHAtc3BrLWltZyIpOyBpbS5zcmMgPSBELmltZ3NbdC5pbWddOyBpbS5hbHQgPSB0LnR5cGVFbjsKICAgIGIuYXBwZW5kQ2hpbGQoaW0pOwogIH0KICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnByZXAsIHQucmVjLCAidCIpKTsKfQpmdW5jdGlvbiByZW5kZXJUNSh0LGIsbWV0YUVsKXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua107CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKXsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuY2hvb3NlLnNpdHVhdGlvbikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIix0LmNob29zZS5ub3RlKSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHQuY2hvb3NlLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvLGlkeCl7CiAgICAgIHZhciBjYXJkID0gZWwoImRpdiIsImNscC1zcGstY2FyZCIrKFMudDVjaG9pY2VbdC5rXT09PWlkeD8iIHNlbCI6IiIpKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMobykpOwogICAgICB2YXIgcGsgPSBlbCgiZGl2IiwicGljayIsIFMudDVjaG9pY2VbdC5rXT09PWlkeCA\/ICJcdTI3MTQgU2VsZWN0ZWQiIDogIiIpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHBrKTsKICAgICAgY2FyZC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICBTLnQ1Y2hvaWNlW3Qua10gPSBpZHg7CiAgICAgICAgZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1jYXJkIikuZm9yRWFjaChmdW5jdGlvbihjZCxqKXsKICAgICAgICAgIGNkLmNsYXNzTmFtZSA9ICJjbHAtc3BrLWNhcmQiKyhqPT09aWR4PyIgc2VsIjoiIik7CiAgICAgICAgICBjZC5xdWVyeVNlbGVjdG9yKCIucGljayIpLnRleHRDb250ZW50ID0gKGo9PT1pZHgpPyJcdTI3MTQgU2VsZWN0ZWQiOiIiOwogICAgICAgIH0pOwogICAgICAgIGNidG4uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwogICAgICB9OwogICAgICBncmlkLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1oaW50IixVLmNob29zZUhpbnQpKTsKICAgIC8qIGNvdW50ZG93biBmb3IgY2hvb3NlIHBoYXNlICovCiAgICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogICAgdG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpKTsKICAgIHZhciBsYiA9IGVsKCJkaXYiKTsgbGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSkpOwogICAgdG0uYXBwZW5kQ2hpbGQobGIpOwogICAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyh0LmNob29zZS5wcmVwKSk7CiAgICB0bS5hcHBlbmRDaGlsZChuKTsKICAgIHRyb3cuYXBwZW5kQ2hpbGQodG0pOwogICAgYi5hcHBlbmRDaGlsZCh0cm93KTsKICAgIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHZhciBjYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmNvbmZpcm1DaG9pY2UpOwogICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gKFMudDVjaG9pY2VbdC5rXSE9bnVsbCk\/ImlubGluZS1ibG9jayI6Im5vbmUiOwogICAgdmFyIGdvU3BlYWsgPSBmdW5jdGlvbigpewogICAgICBzdG9wVGltZXIoKTsKICAgICAgaWYoUy50NWNob2ljZVt0LmtdPT1udWxsKSBTLnQ1Y2hvaWNlW3Qua10gPSAwOwogICAgICBTLnBoYXNlW3Qua10gPSAic3BlYWsiOwogICAgICByZW5kZXIoKTsKICAgIH07CiAgICBzdGFydC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBTLnBoYXNlW3Qua10gPSAiY2hvb3NlLXJ1biI7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9OwogICAgY2J0bi5vbmNsaWNrID0gZ29TcGVhazsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7IGN0ci5hcHBlbmRDaGlsZChjYnRuKTsKICAgIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICAgIGlmKFMucGhhc2VbdC5rXT09PSJjaG9vc2UtcnVuIil7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50PVN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9CiAgfSBlbHNlIHsKICAgIG1ldGFFbC5pbm5lckhUTUwgPSBwaGFzZWRNZXRhKHQpOwogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5zcGVhay5wcm9tcHQpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdmFyIG90aGVyID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiIpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIix0LnNwZWFrLm90aGVyTGFiZWwpKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyh0LnNwZWFrLm90aGVyKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG90aGVyKTsKICAgIHZhciBjaG9zZW4gPSB0LmNob29zZS5vcHRpb25zW1MudDVjaG9pY2VbdC5rXSE9bnVsbCA\/IFMudDVjaG9pY2VbdC5rXSA6IDBdOwogICAgdmFyIG1pbmUgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIHNlbCIpOwogICAgbWluZS5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLFUueW91ckNob2ljZSkpOwogICAgbWluZS5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMoY2hvc2VuKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG1pbmUpOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQuc3BlYWsucHJlcCwgdC5zcGVhay5yZWMsICJ0NXMiKSk7CiAgfQp9CmZ1bmN0aW9uIGltZ1RpdGxlQnVsbGV0cyhvKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKG8uaW1nICYmIEQuaW1nc1tvLmltZ10peyB2YXIgaW0gPSBlbCgiaW1nIik7IGltLnNyYyA9IEQuaW1nc1tvLmltZ107IGltLmFsdCA9IG8udGl0bGU7IGJveC5hcHBlbmRDaGlsZChpbSk7IH0KICBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsInR0IixvLnRpdGxlKSk7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgby5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGJveC5hcHBlbmRDaGlsZCh1bCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSBwcmVwL3JlY29yZCBibG9jayAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRpbWVyQmxvY2soa2V5LCBwcmVwU2VjcywgcmVjU2VjcywgbW9kZSl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICB2YXIgaWMgPSBlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIik7CiAgdmFyIGxiID0gZWwoImRpdiIpOyB2YXIgbGJ0ID0gZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSk7IGxiLmFwcGVuZENoaWxkKGxidCk7CiAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyhwcmVwU2VjcykpOwogIHRtLmFwcGVuZENoaWxkKGljKTsgdG0uYXBwZW5kQ2hpbGQobGIpOyB0bS5hcHBlbmRDaGlsZChuKTsKICB0cm93LmFwcGVuZENoaWxkKHRtKTsgYm94LmFwcGVuZENoaWxkKHRyb3cpOwogIHZhciBzcGVha25vdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXNwZWFrbm93IiwiIik7IGJveC5hcHBlbmRDaGlsZChzcGVha25vdyk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOyBib3guYXBwZW5kQ2hpbGQoY3RyKTsKICB2YXIgcmV2aWV3U2xvdCA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKHJldmlld1Nsb3QpOwogIHZhciBtaWNub3RlID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQobWljbm90ZSk7CgogIGZ1bmN0aW9uIHNob3dJZGxlKCl7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7IHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciI7IGxidC50ZXh0Q29udGVudCA9IFUucHJlcFRpdGxlOyBpYy50ZXh0Q29udGVudCA9ICJcdWQ4M2RcdWRkNTIiOyBuLnRleHRDb250ZW50ID0gU3RyaW5nKHByZXBTZWNzKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBzdGFydFByZXA7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOwogICAgaWYoUy5yZWNzW2tleV0pIHNob3dSZXZpZXcoZmFsc2UpOwogIH0KICBmdW5jdGlvbiBzdGFydFByZXAoKXsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbigpewogICAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICAgIHZhciBza2lwID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLnNraXBQcmVwKTsKICAgICAgc2tpcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgc3RvcFRpbWVyKCk7IHN0YXJ0UmVjKCk7IH07CiAgICAgIGN0ci5hcHBlbmRDaGlsZChza2lwKTsKICAgICAgY291bnRkb3duKHByZXBTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZnVuY3Rpb24oKXsgc3RhcnRSZWMoKTsgfSk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gc3RhcnRSZWMoKXsKICAgIGJlZXAoMik7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciByZWMiOwogICAgaWMuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdjbHAtc3BrLWRvdCc+PC9zcGFuPiI7CiAgICBuLnRleHRDb250ZW50ID0gU3RyaW5nKHJlY1NlY3MpOwogICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgdmFyIHN0b3BwZWQgPSBmYWxzZTsKICAgIHZhciBoYXZlTWljID0gKFMubWljU3RhdGU9PT0ib2siICYmIFMuc3RyZWFtKTsKICAgIGxidC50ZXh0Q29udGVudCA9IGhhdmVNaWMgPyBVLnJlY1RpdGxlIDogVS50aW1lck9ubHk7CiAgICBzcGVha25vdy50ZXh0Q29udGVudCA9IFUuc3BlYWtOb3c7CiAgICBtaWNub3RlLmlubmVySFRNTCA9IGhhdmVNaWMgPyAiIiA6ICI8ZGl2IGNsYXNzPSdjbHAtc3BrLW1pYyc+IitVLm1pY0Jsb2NrZWQrIjwvZGl2PiI7CiAgICB2YXIgdDAgPSBEYXRlLm5vdygpOwogICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uKCl7CiAgICAgIGlmKHN0b3BwZWQpIHJldHVybjsgc3RvcHBlZCA9IHRydWU7CiAgICAgIHN0b3BUaW1lcigpOyBiZWVwKDEpOwogICAgICBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgICB2YXIgc2VjcyA9IE1hdGgubWluKHJlY1NlY3MsIE1hdGgucm91bmQoKERhdGUubm93KCktdDApLzEwMDApKTsKICAgICAgaWYoaGF2ZU1pYyAmJiBTLnJlY29yZGVyKXsKICAgICAgICBTLnJlY29yZGVyLm9uc3RvcCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFMuY2h1bmtzLCBTLm1pbWU\/e3R5cGU6Uy5taW1lfTp1bmRlZmluZWQpOwogICAgICAgICAgaWYoUy5yZWNzW2tleV0gJiYgUy5yZWNzW2tleV0udXJsKXsgdHJ5eyBVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trZXldLnVybCk7IH1jYXRjaChlKXt9IH0KICAgICAgICAgIFMucmVjc1trZXldID0geyBibG9iOiBibG9iLCB1cmw6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIHNlY3M6IHNlY3MgfTsKICAgICAgICAgIFMucmVjb3JkZXIgPSBudWxsOwogICAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgICB9OwogICAgICAgIHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXsgUy5yZWNzW2tleV0gPSB7YmxvYjpudWxsLHVybDpudWxsLHNlY3M6c2Vjc307IHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7IH0KICAgICAgfSBlbHNlIHsKICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjpudWxsLCB1cmw6bnVsbCwgc2Vjczogc2VjcyB9OwogICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgIH0KICAgIH07CiAgICBpZihoYXZlTWljKXsKICAgICAgUy5jaHVua3MgPSBbXTsKICAgICAgdHJ5ewogICAgICAgIFMucmVjb3JkZXIgPSBTLm1pbWUgPyBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSx7bWltZVR5cGU6Uy5taW1lfSkgOiBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSk7CiAgICAgICAgUy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBmdW5jdGlvbihldil7IGlmKGV2LmRhdGEgJiYgZXYuZGF0YS5zaXplKSBTLmNodW5rcy5wdXNoKGV2LmRhdGEpOyB9OwogICAgICAgIFMucmVjb3JkZXIuc3RhcnQoKTsKICAgICAgfWNhdGNoKGUpeyBTLnJlY29yZGVyID0gbnVsbDsgaGF2ZU1pYyA9IGZhbHNlOyBsYnQudGV4dENvbnRlbnQgPSBVLnRpbWVyT25seTsgfQogICAgfQogICAgdmFyIHN0b3AgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gd2FybiIsVS5zdG9wUmVjKTsKICAgIHN0b3Aub25jbGljayA9IGZpbmlzaDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdG9wKTsKICAgIGNvdW50ZG93bihyZWNTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZmluaXNoKTsKICB9CiAgZnVuY3Rpb24gc2hvd1JldmlldyhzY3JvbGxUbyl7CiAgICB2YXIgciA9IFMucmVjc1trZXldOyBpZighcikgcmV0dXJuOwogICAgcmV2aWV3U2xvdC5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBydiA9IGVsKCJkaXYiLCJjbHAtc3BrLXJldmlldyIpOwogICAgcnYuYXBwZW5kQ2hpbGQoZWwoImRpdiIsIm9rIiwiXHUyNzE0ICIrVS5yZWNvcmRlZCsiICgiK3Iuc2VjcysicykiKSk7CiAgICBpZihyLnVybCl7CiAgICAgIHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOwogICAgICBydi5hcHBlbmRDaGlsZChhdSk7CiAgICAgIHZhciByb3cgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgICAgdmFyIGRsID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5kb3dubG9hZCk7CiAgICAgIGRsLmhyZWYgPSByLnVybDsgZGwuZG93bmxvYWQgPSAiY2VscGlwLXMiK0Quc2V0KyJ0IitELnRlc3QrIi10YXNrIisoa2V5PT09InciPyIwIjprZXkucmVwbGFjZSgidCIsIiIpKSsiLiIrUy5leHQ7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkbCk7CiAgICAgIHJ2LmFwcGVuZENoaWxkKHJvdyk7CiAgICB9CiAgICByZXZpZXdTbG90LmFwcGVuZENoaWxkKHJ2KTsKICAgIGlmKHNjcm9sbFRvKXsgdHJ5eyBydi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KTsgfWNhdGNoKGUpe30gfQogIH0KICBzaG93SWRsZSgpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gdGlwcy9zYW1wbGVzIGFjY29yZGlvbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGFjY29yZGlvbih0KXsKICB2YXIgYWNjID0gZWwoImRpdiIsImNscC1zcGstYWNjIik7CiAgdmFyIGJ0biA9IGVsKCJidXR0b24iLG51bGwsVS50aXBzVG9nZ2xlKTsKICBidG4ub25jbGljayA9IGZ1bmN0aW9uKCl7IGFjYy5jbGFzc05hbWUgPSBhY2MuY2xhc3NOYW1lLmluZGV4T2YoIm9wZW4iKT4tMSA\/ICJjbHAtc3BrLWFjYyIgOiAiY2xwLXNway1hY2Mgb3BlbiI7IH07CiAgYWNjLmFwcGVuZENoaWxkKGJ0bik7CiAgdmFyIGJvZHkgPSBlbCgiZGl2IiwiY2xwLXNway1hY2Nib2R5Iik7CiAgdmFyIHRhYnMgPSBlbCgiZGl2IiwiY2xwLXNway10YWJzIik7CiAgdmFyIHBhbmVzID0gW107CiAgZnVuY3Rpb24gYWRkVGFiKGxhYmVsLCBwYW5lQnVpbGRlcil7CiAgICB2YXIgaSA9IHBhbmVzLmxlbmd0aDsKICAgIHZhciB0YiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLXRhYiIrKGk9PT0wPyIgb24iOiIiKSxsYWJlbCk7CiAgICB2YXIgcG4gPSBlbCgiZGl2IiwiY2xwLXNway10YWJwYW5lIisoaT09PTA\/IiBvbiI6IiIpKTsKICAgIHBhbmVCdWlsZGVyKHBuKTsKICAgIHRiLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICB0YWJzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYiIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWIiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgICBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYnBhbmUiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFicGFuZSIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICB9OwogICAgdGFicy5hcHBlbmRDaGlsZCh0Yik7IHBhbmVzLnB1c2gocG4pOwogIH0KICBhZGRUYWIoVS50YWJUaXBzLCBmdW5jdGlvbihwbil7CiAgICB2YXIgdWwgPSBlbCgidWwiKTsKICAgIHQudGlwcy5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodWwpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLnVzZWZ1bFBocmFzZXMrIjo8L2I+IikpOwogICAgdmFyIHBoID0gZWwoImRpdiIsImNscC1zcGstcGhyIik7CiAgICB0LnRpcHMucGhyYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBwaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQocGgpOwogIH0pOwogIGlmKHQuczYpIGFkZFRhYihVLnRhYlM2LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSBzNiIsdC5zNikpOyB9KTsKICBpZih0LnM5KSBhZGRUYWIoVS50YWJTOSwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUiLHQuczkpKTsgfSk7CiAgaWYoIXQud2FybXVwKSBhZGRUYWIoVS50YWJSdWJyaWMsIGZ1bmN0aW9uKHBuKXsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsVS5ydWJyaWNOb3RlKSk7CiAgICB2YXIgdGIgPSBlbCgidGFibGUiLCJjbHAtc3BrLXJ1YiIpOwogICAgaWYoIVMucnVicmljW3Qua10pIFMucnVicmljW3Qua10gPSBbMCwwLDAsMF07CiAgICB2YXIgZXN0RCA9IGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsIiIpOwogICAgVS5ydWJyaWNDcml0LmZvckVhY2goZnVuY3Rpb24oY3IsY2kpewogICAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLGNyKSk7CiAgICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOyB0ZC5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7IHRkLnN0eWxlLnRleHRBbGlnbiA9ICJyaWdodCI7CiAgICAgIGZvcih2YXIgczI9MTtzMjw9NTtzMisrKXsKICAgICAgICAoZnVuY3Rpb24oc3YpewogICAgICAgICAgdmFyIHNwID0gZWwoInNwYW4iLCJjbHAtc3BrLXN0YXIiKyhTLnJ1YnJpY1t0LmtdW2NpXT49c3Y\/IiBvbiI6IiIpLCJcdTI2MDUiKTsKICAgICAgICAgIHNwLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgICAgICBTLnJ1YnJpY1t0LmtdW2NpXSA9IHN2OwogICAgICAgICAgICB0ZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1zdGFyIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXN0YXIiKyhqPHN2PyIgb24iOiIiKTsgfSk7CiAgICAgICAgICAgIHVwZCgpOwogICAgICAgICAgfTsKICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHNwKTsKICAgICAgICB9KShzMik7CiAgICAgIH0KICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgICB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHRiKTsKICAgIHBuLmFwcGVuZENoaWxkKGVzdEQpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgICBmdW5jdGlvbiB1cGQoKXsKICAgICAgdmFyIGFyciA9IFMucnVicmljW3Qua107IHZhciBkb25lID0gYXJyLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSk7CiAgICAgIGVzdEQudGV4dENvbnRlbnQgPSBkb25lID8gKFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXJyLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2I7fSwwKS80KSkgOiAiIjsKICAgIH0KICAgIHVwZCgpOwogIH0pOwogIGJvZHkuaW5zZXJ0QmVmb3JlKHRhYnMsIGJvZHkuZmlyc3RDaGlsZCk7CiAgcGFuZXMuZm9yRWFjaChmdW5jdGlvbihwbil7IGJvZHkuYXBwZW5kQ2hpbGQocG4pOyB9KTsKICBhY2MuYXBwZW5kQ2hpbGQoYm9keSk7CiAgcmV0dXJuIGFjYzsKfQoKLyogLS0tLS0tLS0tLSBlbmQgc2NyZWVuIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZW5kU2NyZWVuKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWVuZCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmcgXHUyMDE0ICIrVS5lbmRUaXRsZSkpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS5lbmRUaXRsZSsiPC9iPiAiK1UuZW5kU3ViKSk7CiAgdmFyIHRiID0gZWwoInRhYmxlIik7CiAgdmFyIHRociA9IGVsKCJ0ciIpOyBbIlRhc2siLCJUeXBlIiwiUmVjb3JkaW5nIiwiIl0uZm9yRWFjaChmdW5jdGlvbihoKXsgdGhyLmFwcGVuZENoaWxkKGVsKCJ0aCIsbnVsbCxoKSk7IH0pOwogIHRiLmFwcGVuZENoaWxkKHRocik7CiAgdmFyIG5yZWMgPSAwOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIHRyID0gZWwoInRyIik7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsIjxiPiIrKHQud2FybXVwPyJXIjp0Lm51bSkrIjwvYj4iKSk7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsdC50eXBlRW4pKTsKICAgIHZhciByID0gUy5yZWNzW3Qua107CiAgICB2YXIgdGQgPSBlbCgidGQiKTsKICAgIGlmKHIgJiYgci51cmwpeyBucmVjKys7IHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOyB0ZC5hcHBlbmRDaGlsZChhdSk7IH0KICAgIGVsc2UgaWYocil7IG5yZWMrKzsgdGQudGV4dENvbnRlbnQgPSByLnNlY3MrInMgKCIrVS50aW1lck9ubHkrIikiOyB9CiAgICBlbHNlIHRkLmlubmVySFRNTCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6I2M2MjgyOCc+IitVLmVuZE5vUmVjKyI8L3NwYW4+IjsKICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgIHZhciB0ZDIgPSBlbCgidGQiKTsKICAgIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsIlx1MjE5MiIpOwogICAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgdGQyLmFwcGVuZENoaWxkKGdvKTsKICAgIHRyLmFwcGVuZENoaWxkKHRkMik7CiAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgfSk7CiAgYi5hcHBlbmRDaGlsZCh0Yik7CiAgLyogcnVicmljIGF2ZyAqLwogIHZhciB2YWxzID0gW107CiAgT2JqZWN0LmtleXMoUy5ydWJyaWMpLmZvckVhY2goZnVuY3Rpb24oayl7IHZhciBhPVMucnVicmljW2tdOyBpZihhICYmIGEuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KSkgdmFscy5wdXNoKGEucmVkdWNlKGZ1bmN0aW9uKHgseSl7cmV0dXJuIHgreTt9LDApLzQpOyB9KTsKICBpZih2YWxzLmxlbmd0aCl7CiAgICB2YXIgYXZnID0gdmFscy5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYStjO30sMCkvdmFscy5sZW5ndGg7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhdmcpKyIgKCIrdmFscy5sZW5ndGgrIiB0YXNrKHMpIHNlbGYtcmF0ZWQpIikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICB9CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciByZWRvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmVuZFJlZG8pOwogIHJlZG8ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBPYmplY3Qua2V5cyhTLnJlY3MpLmZvckVhY2goZnVuY3Rpb24oayl7IGlmKFMucmVjc1trXSYmUy5yZWNzW2tdLnVybCl7IHRyeXtVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trXS51cmwpO31jYXRjaChlKXt9IH0gfSk7CiAgICBTLnJlY3MgPSB7fTsgUy5ydWJyaWMgPSB7fTsgUy50NWNob2ljZSA9IHt9OwogICAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZD8iY2hvb3NlLWlkbGUiOiJpZGxlIjsgfSk7CiAgICBTLmN1ciA9IC0xOyByZW5kZXIoKTsKICB9OwogIHZhciB0MiA9IGVsKCJhIiwiY2xwLXNway1idG4gcHJpIixVLmVuZFQyKyIgIisoRC50ZXN0PT09MT8yOjEpKyIgXHUyMTkyIik7IHQyLmhyZWYgPSBELm90aGVyVXJsOwogIHZhciBodWIgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmVuZEh1Yik7IGh1Yi5ocmVmID0gIi9jZWxwaXAvIjsKICBjdHIuYXBwZW5kQ2hpbGQocmVkbyk7IGN0ci5hcHBlbmRDaGlsZCh0Mik7IGN0ci5hcHBlbmRDaGlsZChodWIpOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW1pYyIsVS5taWNOb3RlKSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogZXhwb3NlIGZvciB0ZXN0cyAqLwp3aW5kb3cuQ0xQU1BLID0geyBzdGF0ZTogUywgZGF0YTogRCwgZ290bzogZnVuY3Rpb24oaSl7IFMuY3VyPWk7IHJlbmRlcigpOyB9LCByZW5kZXI6IHJlbmRlciB9OwpyZW5kZXIoKTsKfSkoKTsK\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 7 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-6361","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6361","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=6361"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6361\/revisions"}],"predecessor-version":[{"id":6519,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6361\/revisions\/6519"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}