{"id":6451,"date":"2026-07-11T06:38:32","date_gmt":"2026-07-11T06:38:32","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-11-test-2-speaking\/"},"modified":"2026-07-12T03:16:15","modified_gmt":"2026-07-12T03:16:15","slug":"celpip-set-11-test-2-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-11-test-2-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 11 \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(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0IjoxMSwidGVzdCI6MiwidGl0bGUiOiJDRUxQSVAgU3BlYWtpbmcgXHUyMDE0IFNldCAxMSBcdTAwYjcgUHJhY3RpY2UgVGVzdCAyIiwiaGVhZGVyIjoiUHJhY3RpY2UgVGVzdCAyIiwiaW1ncyI6eyJzY2VuZSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zMTF0Mi1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MxMXQyLW9wdC1hLmpwZyIsIm9wdEIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczExdDItb3B0LWIuanBnIiwib3B0T3RoZXIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczExdDItb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczExdDItdW51c3VhbC5qcGcifSwib3RoZXJVcmwiOiIvY2VscGlwLXNldC0xMS10ZXN0LTEtc3BlYWtpbmcvIiwidGFza3MiOlt7ImsiOiJ3IiwibnVtIjowLCJ0eXBlRW4iOiJTcGVha2luZyBQcmFjdGljZSBUYXNrIiwicHJlcCI6MzAsInJlYyI6NjAsIndhcm11cCI6dHJ1ZSwicHJvbXB0IjoiVGFsayBhYm91dCBvbmUgb2YgeW91ciBiZXN0IGZyaWVuZHMuIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhlIFByYWN0aWNlIFRhc2sgKHdhcm0tdXApIGlzIE5PVCBzY29yZWQgXHUyMDE0IGl0IGlzIGhlcmUgdG8gaGVscCB5b3UgZ2V0IHVzZWQgdG8gdGhlIGNvbnRyb2xzIGFuZCB3YXJtIHVwIHlvdXIgdm9pY2UuIiwiU3BlYWsgbmF0dXJhbGx5IGFib3V0IGEgYmVzdCBmcmllbmQ6IHRoZWlyIG5hbWUsIGhvdyB5b3UgbWV0LCB0aGVpciBwZXJzb25hbGl0eSwgYSBtZW1vcnkgeW91IHNoYXJlLiIsIlVzZSBpdCB0byBhZGp1c3QgeW91ciBwb3N0dXJlLCBtaWNyb3Bob25lIGRpc3RhbmNlLCBhbmQgc3BlYWtpbmcgcGFjZS4iXSwicGhyYXNlcyI6WyJNeSBiZXN0IGZyaWVuZCdzIG5hbWUgaXNcdTIwMjYiLCJXZSBtZXQgd2hlblx1MjAyNiIsIldoYXQgSSBsaWtlIG1vc3QgYWJvdXQgaGltL2hlciBpc1x1MjAyNiJdfSwiczYiOm51bGwsInM5IjpudWxsfSx7ImsiOiJ0MSIsIm51bSI6MSwidHlwZUVuIjoiR2l2aW5nIEFkdmljZSIsInByZXAiOjMwLCJyZWMiOjkwLCJwcm9tcHQiOiJZb3VyIGZyaWVuZCBpcyBzaWNrIHdpdGggYSBiYWQgY29sZC4gR2l2ZSBoZXIgYWR2aWNlIG9uIHdoYXQgc2hlIHNob3VsZCBhbmQgc2hvdWxkIG5vdCBkbyBzbyB0aGF0IHNoZSBjYW4gZmVlbCBiZXR0ZXIgc29vbi4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJPcGVuaW5nOiBncmVldCB5b3VyIGZyaWVuZCBhbmQgcmVzdGF0ZSB0aGUgc2l0dWF0aW9uIGluIG9uZSBzZW50ZW5jZS4iLCJCb2R5OiBnaXZlIDJcdTIwMTMzIHBpZWNlcyBvZiBhZHZpY2UsIGVhY2ggd2l0aCBhIHJlYXNvbiBvciBleGFtcGxlIChGaXJzdFx1MjAyNiwgYmVjYXVzZVx1MjAyNjsgQW5vdGhlciBpZGVhIGlzXHUyMDI2KS4iLCJDbG9zaW5nOiBlbmNvdXJhZ2UgdGhlbSBhbmQgd2lzaCB0aGVtIGx1Y2suIiwiQWR2aXNlIHlvdXIgZnJpZW5kIHdpdGggYSBiYWQgY29sZCBvbiB0aGUgRE9zIGFuZCBET04nVHMuIFNob3VsZCBkbzogcmVzdCBhbmQgc2xlZXAgYXMgbXVjaCBhcyBwb3NzaWJsZSwgZHJpbmsgbG90cyBvZiB3YXJtIGZsdWlkcyBsaWtlIHdhdGVyLCB0ZWEgYW5kIHNvdXAsIGtlZXAgd2FybSwgYW5kIHRha2UgYSBzaW1wbGUgY29sZCBtZWRpY2luZSBvciB2aXRhbWluIEMuIFNob3VsZCBOT1QgZG86IGRvIG5vdCBnbyB0byB3b3JrIGFuZCBwdXNoIHRocm91Z2ggaXQsIGRvIG5vdCBkbyBoZWF2eSBleGVyY2lzZSwgYW5kIGRvIG5vdCBza2lwIG1lYWxzIG9yIGRyaW5rIGFsY29ob2wuIFRlbGwgaGVyIHRvIHNlZSBhIGRvY3RvciBpZiB0aGUgZmV2ZXIgaXMgaGlnaCBvciB0aGUgY29sZCBsYXN0cyBtb3JlIHRoYW4gYSB3ZWVrLiJdLCJwaHJhc2VzIjpbIklmIEkgd2VyZSB5b3UsIEknZFx1MjAyNiIsIllvdSBzaG91bGQgZGVmaW5pdGVseVx1MjAyNiIsIkFub3RoZXIgb3B0aW9uIGlzIHRvXHUyMDI2IiwiVHJ1c3QgbWUsIHlvdSB3b24ndCByZWdyZXQgaXQuIl19LCJzNiI6Ik9oIG5vLCBFbW1hLCBhIGJhZCBjb2xkIGlzIGhvcnJpYmxlLCBJIGFtIHNvcnJ5ISBEbyBub3Qgd29ycnksIGxldCBtZSB0ZWxsIHlvdSB3aGF0IHRvIGRvIGFuZCB3aGF0IG5vdCB0byBkbywgc28geW91IGZlZWwgYmV0dGVyIGZhc3QuIEZpcnN0LCB0aGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcsIHJlc3QuIFBsZWFzZSBzdGF5IGhvbWUgYW5kIHNsZWVwIGEgbG90LiBZb3VyIGJvZHkgZmlnaHRzIHRoZSBjb2xkIHdoZW4geW91IHNsZWVwLCBzbyBkbyBub3QgZ28gdG8gd29yayBhbmQgdHJ5IHRvIGJlIGEgaGVyby4gU2Vjb25kLCBkcmluaywgZHJpbmssIGRyaW5rISBXYXJtIHdhdGVyLCBob3QgdGVhIHdpdGggaG9uZXkgYW5kIGxlbW9uLCBhbmQgaG90IHNvdXAgYXJlIHBlcmZlY3QuIFRoZXkga2VlcCB5b3UgaHlkcmF0ZWQgYW5kIHRoZXkgZmVlbCBuaWNlIG9uIGEgc29yZSB0aHJvYXQuIFRoaXJkLCBrZWVwIHlvdXJzZWxmIHdhcm0sIGFuZCB5b3UgY2FuIHRha2UgYSBzaW1wbGUgY29sZCBtZWRpY2luZSBvciBzb21lIHZpdGFtaW4gQyBmcm9tIHRoZSBwaGFybWFjeS4gTm93LCB3aGF0IHlvdSBzaG91bGQgbm90IGRvLiBEbyBub3QgZ28gdG8gdGhlIGd5bSBvciBkbyBoYXJkIGV4ZXJjaXNlLCB5b3VyIGJvZHkgbmVlZHMgaXRzIGVuZXJneSB0byBnZXQgYmV0dGVyLCBub3QgdG8gd29yayBvdXQuIERvIG5vdCBza2lwIHlvdXIgbWVhbHMsIGV2ZW4gaWYgeW91IGFyZSBub3QgaHVuZ3J5LCBlYXQgc29tZXRoaW5nIGxpZ2h0LiBBbmQgbm8gYWxjb2hvbCwgaXQgd2lsbCBvbmx5IG1ha2UgeW91IGZlZWwgd29yc2UuIE9uZSBtb3JlIHRoaW5nLCBpZiB5b3UgZ2V0IGEgaGlnaCBmZXZlciwgb3IgaWYgdGhlIGNvbGQgZG9lcyBub3QgZ28gYXdheSBhZnRlciBvbmUgd2VlaywgcGxlYXNlIGdvIGFuZCBzZWUgYSBkb2N0b3IuIEJ1dCBmb3Igbm93LCByZXN0IGFuZCB3YXJtIGRyaW5rcy4gRmVlbCBiZXR0ZXIgc29vbiwgRW1tYSEiLCJzOSI6Ik9oLCBFbW1hLCBhIHJvdHRlbiBjb2xkIGlzIHRoZSB3b3JzdCwgeW91IGhhdmUgbXkgc3ltcGF0aHkuIExldCBtZSBnaXZlIHlvdSBhIGNsZWFyIGxpc3Qgb2YgZG9zIGFuZCBkb24ndHMgc28geW91IGNhbiBzaGFrZSBpdCBvZmYgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4gVG9wIG9mIHRoZSBkbyBsaXN0LCBhbmQgSSBjYW5ub3Qgc3RyZXNzIHRoaXMgZW5vdWdoLCBpcyByZXN0LiBDYW5jZWwgeW91ciBwbGFucywgc3RheSBpbiBiZWQsIGFuZCBzbGVlcCBhcyBtdWNoIGFzIHlvdSBjYW4sIGJlY2F1c2UgeW91ciBib2R5IGRvZXMgaXRzIHJlYWwgaGVhbGluZyB3aGlsZSB5b3UgcmVzdCwgbm90IHdoaWxlIHlvdSBhcmUgZHJhZ2dpbmcgeW91cnNlbGYgYXJvdW5kLiBTZWNvbmQsIGtlZXAgdGhlIGZsdWlkcyBjb21pbmc6IHdhcm0gd2F0ZXIsIGhlcmJhbCB0ZWEgd2l0aCBob25leSBhbmQgbGVtb24sIGFuZCBhIGdvb2QgaG90IHNvdXAgd2lsbCBrZWVwIHlvdSBoeWRyYXRlZCBhbmQgc29vdGhlIHRoYXQgcmF3IHRocm9hdCBiZWF1dGlmdWxseS4gVGhpcmQsIHN0YXkgd2FybSwgYW5kIHRoZXJlIGlzIG5vIHNoYW1lIGluIGEgc2ltcGxlIG92ZXItdGhlLWNvdW50ZXIgY29sZCByZW1lZHkgb3IgYSBiaXQgb2Ygdml0YW1pbiBDIHRvIHRha2UgdGhlIGVkZ2Ugb2ZmIHRoZSBzeW1wdG9tcy4gTm93IGZvciB0aGUgZG9uJ3RzLCB3aGljaCBtYXR0ZXIganVzdCBhcyBtdWNoLiBEbyBub3Qgc29sZGllciBvbiBpbnRvIHdvcms7IHlvdSB3aWxsIG9ubHkgZXhoYXVzdCB5b3Vyc2VsZiBhbmQgc3ByZWFkIGl0IHRvIGV2ZXJ5b25lIGVsc2UuIERvIG5vdCB0cnkgdG8gc3dlYXQgaXQgb3V0IGF0IHRoZSBneW0sIGhhcmQgZXhlcmNpc2Ugc3RlYWxzIHRoZSBlbmVyZ3kgeW91ciBpbW11bmUgc3lzdGVtIG5lZWRzIHJpZ2h0IG5vdy4gRG8gbm90IHNraXAgbWVhbHMgZXZlbiBpZiB5b3VyIGFwcGV0aXRlIGhhcyB2YW5pc2hlZCwgYSBsaXR0bGUgbGlnaHQgZm9vZCBrZWVwcyB5b3VyIHN0cmVuZ3RoIHVwLCBhbmQgZGVmaW5pdGVseSBsYXkgb2ZmIHRoZSBhbGNvaG9sLCB3aGljaCBkZWh5ZHJhdGVzIHlvdSBhbmQgbWFrZXMgZXZlcnl0aGluZyB3b3JzZS4gRmluYWxseSwga2VlcCBhbiBleWUgb24gdGhlIHdhcm5pbmcgc2lnbnM6IGlmIHlvdSBzcGlrZSBhIGhpZ2ggZmV2ZXIsIHN0cnVnZ2xlIHRvIGJyZWF0aGUsIG9yIHRoZSB3aG9sZSB0aGluZyBpcyBzdGlsbCBoYW5naW5nIG9uIGFmdGVyIGEgd2VlayBvciBzbywgc3RvcCBzZWxmLXRyZWF0aW5nIGFuZCBnbyBhbmQgc2VlIGEgZG9jdG9yLCBiZWNhdXNlIHRoYXQgY291bGQgYmUgbW9yZSB0aGFuIGEgY29tbW9uIGNvbGQuIEZvciBub3csIHRob3VnaCwgaG9uZXN0bHksIHRoZSBiZXN0IG1lZGljaW5lIGlzIHlvdXIgZHV2ZXQsIGEgYmlnIG11ZyBvZiB0ZWEgYW5kIGEgZGF5IG9mIGRvaW5nIGFic29sdXRlbHkgbm90aGluZy4gR2V0IHdlbGwgc29vbi4ifSx7ImsiOiJ0MiIsIm51bSI6MiwidHlwZUVuIjoiVGFsa2luZyBhYm91dCBhIFBlcnNvbmFsIEV4cGVyaWVuY2UiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiVGFsayBhYm91dCBhIHRpbWUgd2hlbiBzb21lb25lIGluZmx1ZW5jZWQgeW91IGluIGEgcG9zaXRpdmUgd2F5LiBNYXliZSB5b3UgY2FuIHRhbGsgYWJvdXQgeW91ciBwYXJlbnRzLCBhIGNlbGVicml0eSBmaWd1cmUsIG9yIGEgdGVhY2hlciB3aG8gbW90aXZhdGVkIHlvdS4gV2hvIGluZmx1ZW5jZWQgeW91LCBob3cgZGlkIHRoZXkgaW5mbHVlbmNlIHlvdSwgYW5kIHdoeSBkbyB5b3UgcmVtZW1iZXIgaXQgd2VsbD8iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJBbnN3ZXIgZXZlcnkgcGFydCBvZiB0aGUgcXVlc3Rpb24gKHdoYXQgaGFwcGVuZWQgXHUyMDEzIGhvdyBpdCB1bmZvbGRlZCBcdTIwMTMgdGhlIG91dGNvbWUgLyB3aHkgaXQgaXMgbWVtb3JhYmxlKS4iLCJVc2UgcGFzdCB0ZW5zZXMgYW5kIHRlbGwgaXQgaW4gb3JkZXI6IFRoaXMgaGFwcGVuZWRcdTIwMjYgXHUyMTkyIFRoZW5cdTIwMjYgXHUyMTkyIEluIHRoZSBlbmRcdTIwMjYiLCJGaW5pc2ggd2l0aCBhIGZlZWxpbmcgb3IgYSBsZXNzb24gbGVhcm5lZC4iLCJBbnN3ZXIgdGhlIHRocmVlIHBhcnRzOiB3aG8gaW5mbHVlbmNlZCB5b3UsIGhvdyB0aGV5IGRpZCBpdCwgYW5kIHdoeSB5b3UgcmVtZW1iZXIgaXQuIFRoZSBzYW1wbGVzIGRlc2NyaWJlIGEgaGlnaC1zY2hvb2wgdGVhY2hlciB3aG8gYmVsaWV2ZWQgaW4gYSBzaHksIGF2ZXJhZ2Ugc3R1ZGVudCBhbmQgdHVybmVkIHRoZW0gY29uZmlkZW50LiBQaWNrIG9uZSByZWFsIHBlcnNvbiBhbmQgZ2l2ZSBhIGNvbmNyZXRlIG1vbWVudCwgYSBzcGVjaWZpYyB0aGluZyB0aGV5IHNhaWQgb3IgZGlkLCB0aGF0IGNoYW5nZWQgeW91LiJdLCJwaHJhc2VzIjpbIlRoaXMgaGFwcGVuZWQgYWJvdXQgdHdvIHllYXJzIGFnb1x1MjAyNiIsIkF0IGZpcnN0XHUyMDI2LCBidXQgdGhlblx1MjAyNiIsIldoYXQgbWFkZSBpdCB1bmZvcmdldHRhYmxlIHdhc1x1MjAyNiIsIkxvb2tpbmcgYmFjaywgXHUyMDI2Il19LCJzNiI6Ikkgd2FudCB0byB0YWxrIGFib3V0IHRoZSBwZXJzb24gd2hvIGluZmx1ZW5jZWQgbWUgdGhlIG1vc3QsIG15IGhpZ2ggc2Nob29sIEVuZ2xpc2ggdGVhY2hlciwgTXIgVHJhbi4gSSByZW1lbWJlciBoaW0gdmVyeSB3ZWxsLCBldmVuIG5vdy4gV2hlbiBJIHdhcyBmaWZ0ZWVuLCBJIHdhcyBhIHZlcnkgc2h5IGFuZCBxdWlldCBzdHVkZW50LiBJIHRob3VnaHQgSSB3YXMgbm90IHNtYXJ0LCBhbmQgSSBuZXZlciBzcG9rZSBpbiBjbGFzcywgYmVjYXVzZSBJIHdhcyBzY2FyZWQgdG8gbWFrZSBtaXN0YWtlcy4gQnV0IE1yIFRyYW4gc2F3IHNvbWV0aGluZyBpbiBtZS4gT25lIGRheSwgaGUgcmVhZCBteSBlc3NheSB0byB0aGUgd2hvbGUgY2xhc3MgYW5kIHNhaWQgaXQgd2FzIGV4Y2VsbGVudC4gSSB3YXMgc28gc3VycHJpc2VkISBBZnRlciBjbGFzcywgaGUgdG9sZCBtZSwgJ1lvdSBoYXZlIGEgcmVhbCB0YWxlbnQgZm9yIHdyaXRpbmcuIERvIG5vdCBoaWRlIGl0LicgVGhvc2Ugc2ltcGxlIHdvcmRzIGNoYW5nZWQgbWUuIEhvdyBkaWQgaGUgaW5mbHVlbmNlIG1lPyBIZSBnYXZlIG1lIGNvbmZpZGVuY2UuIEhlIGFsd2F5cyBwdXNoZWQgbWUgdG8gdHJ5IGhhcmRlciwgdG8gam9pbiB0aGUgZGViYXRlIGNsdWIsIGFuZCB0byBzcGVhayB1cC4gU2xvd2x5LCBJIHN0b3BwZWQgYmVpbmcgYWZyYWlkLiBNeSBncmFkZXMgd2VudCB1cCwgYW5kIEkgZXZlbiB3b24gYSB3cml0aW5nIHByaXplLiBXaHkgZG8gSSByZW1lbWJlciBoaW0gc28gd2VsbD8gQmVjYXVzZSBoZSBkaWQgbm90IGp1c3QgdGVhY2ggbWUgRW5nbGlzaCwgaGUgdGF1Z2h0IG1lIHRvIGJlbGlldmUgaW4gbXlzZWxmLiBCZWZvcmUgaGltLCBJIHdhcyBoaWRpbmcuIEFmdGVyIGhpbSwgSSB3YXMgbm90IHNjYXJlZCBhbnltb3JlLiBOb3cgSSBhbSBhIGNvbmZpZGVudCBwZXJzb24sIGFuZCBpdCBzdGFydGVkIHdpdGggb25lIGtpbmQgdGVhY2hlciB3aG8gYmVsaWV2ZWQgaW4gbWUgd2hlbiBJIGRpZCBub3QgYmVsaWV2ZSBpbiBteXNlbGYuIEkgd2lsbCBuZXZlciBmb3JnZXQgaGltLiIsInM5IjoiVGhlIHBlcnNvbiB3aG8gc2hhcGVkIG1lIG1vc3Qgd2FzIG15IGhpZ2gtc2Nob29sIEVuZ2xpc2ggdGVhY2hlciwgTXIgVHJhbiwgYW5kIEkgcmVtZW1iZXIgaGltIHZpdmlkbHkgZXZlbiB5ZWFycyBsYXRlci4gQXQgZmlmdGVlbiBJIHdhcyBwYWluZnVsbHkgc2h5LCB0aGUga2luZCBvZiBzdHVkZW50IHdobyBzbGlkIGRvd24gaW4gdGhlIGNoYWlyIHByYXlpbmcgbm90IHRvIGJlIGNhbGxlZCBvbi4gSSBoYWQgcXVpZXRseSBkZWNpZGVkIEkgd2FzIGp1c3QgYXZlcmFnZSwgbm90IGNsZXZlciwgYW5kIEkgbmV2ZXIgc3Bva2UgaW4gY2xhc3MgYmVjYXVzZSBJIHdhcyB0ZXJyaWZpZWQgb2YgZ2V0dGluZyBzb21ldGhpbmcgd3JvbmcgaW4gZnJvbnQgb2YgZXZlcnlvbmUuIE1yIFRyYW4sIHRob3VnaCwgc2VlbWVkIHRvIHNlZSBzdHJhaWdodCBwYXN0IGFsbCB0aGF0LiBUaGUgdHVybmluZyBwb2ludCBjYW1lIG9uIGFuIG9yZGluYXJ5IGFmdGVybm9vbiB3aGVuIGhlIHJlYWQgb25lIG9mIG15IGVzc2F5cyBhbG91ZCB0byB0aGUgd2hvbGUgY2xhc3MgYW5kIGNhbGxlZCBpdCB0aGUgYmVzdCBpbiB0aGUgZ3JvdXAuIEkgd2FzIHN0dW5uZWQsIEkgZ2VudWluZWx5IHRob3VnaHQgdGhlcmUgaGFkIGJlZW4gYSBtaXN0YWtlLiBBZnRlcndhcmRzIGhlIHB1bGxlZCBtZSBhc2lkZSBhbmQgc2FpZCBzb21ldGhpbmcgSSBoYXZlIG5ldmVyIGZvcmdvdHRlbjogJ1lvdSBoYXZlIGEgcmVhbCB0YWxlbnQgZm9yIHdyaXRpbmcsIGRvbid0IHlvdSBkYXJlIGhpZGUgaXQuJyBUaGF0IHNpbmdsZSBzZW50ZW5jZSByZXdpcmVkIGhvdyBJIHNhdyBteXNlbGYuIEZyb20gdGhlbiBvbiBoZSBrZXB0IGdlbnRseSBwdXNoaW5nIG1lIG91dCBvZiBteSBzaGVsbCwgbnVkZ2luZyBtZSB0byBlbnRlciB0aGUgZGViYXRlIGNsdWIsIHRvIHB1dCBteSBoYW5kIHVwLCB0byBzdWJtaXQgbXkgd29yayB0byBjb21wZXRpdGlvbnMuIExpdHRsZSBieSBsaXR0bGUgdGhlIGZlYXIgbG9vc2VuZWQgaXRzIGdyaXA7IG15IG1hcmtzIGNsaW1iZWQsIGFuZCBJIGV2ZW4gd29uIGEgc2Nob29sIHdyaXRpbmcgcHJpemUgSSB3b3VsZCBuZXZlciBoYXZlIGRhcmVkIGVudGVyLiBUaGUgcmVhc29uIGhlIHN0YXlzIHdpdGggbWUgaXMgdGhhdCBoZSB3YXMgbm90IHJlYWxseSB0ZWFjaGluZyBtZSBFbmdsaXNoLCBoZSB3YXMgdGVhY2hpbmcgbWUgdG8gYmVsaWV2ZSBpbiBteXNlbGYuIEJlZm9yZSBoaW0sIEkgd2FzIGhpZGluZzsgYWZ0ZXIgaGltLCBJIHN0b3BwZWQgYXBvbG9naXNpbmcgZm9yIHRha2luZyB1cCBzcGFjZS4gVGhlIGNvbmZpZGVudCwgb3V0c3Bva2VuIHBlcnNvbiBJIGFtIHRvZGF5IHRyYWNlcyBkaXJlY3RseSBiYWNrIHRvIG9uZSB0ZWFjaGVyIHdobyBjaG9zZSB0byBiZWxpZXZlIGluIG1lIGF0IHRoZSBleGFjdCBtb21lbnQgSSBjb3VsZCBub3QgYmVsaWV2ZSBpbiBteXNlbGYuIEkgd2lsbCBhbHdheXMgYmUgZ3JhdGVmdWwgdG8gaGltLiJ9LHsiayI6InQzIiwibnVtIjozLCJ0eXBlRW4iOiJEZXNjcmliaW5nIGEgU2NlbmUiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiRGVzY3JpYmUgc29tZSB0aGluZ3MgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoZSBwaWN0dXJlIGJlbG93IGFzIHdlbGwgYXMgeW91IGNhbi4gVGhlIHBlcnNvbiB3aXRoIHdob20geW91IGFyZSBzcGVha2luZyBjYW5ub3Qgc2VlIHRoZSBwaWN0dXJlLiIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkZpcnN0IHNlbnRlbmNlOiBnaXZlIHRoZSBvdmVydmlldyAod2hlcmUgaXQgaXMsIHdoYXQgdGhlIGF0bW9zcGhlcmUgaXMgbGlrZSkuIiwiRGVzY3JpYmUgNFx1MjAxMzYgZGV0YWlscyBieSBsb2NhdGlvbjogaW4gdGhlIGZvcmVncm91bmQgLyBvbiB0aGUgbGVmdCAvIGF0IHRoZSBiYWNrXHUyMDI2OyB1c2UgdGhlIHByZXNlbnQgY29udGludW91cy4iLCJUaGUgbGlzdGVuZXIgQ0FOTk9UIHNlZSB0aGUgcGljdHVyZSBcdTIwMTQgYmUgc3BlY2lmaWM7IHdoZW4gdW5zdXJlLCB1c2Ugc2VlbXMgLyBhcHBlYXJzIC8gbG9va3MgbGlrZS4iLCJBIGJ1c3kgcGFya2luZyBsb3Qgb24gYSBncmV5IGRheS4gR28gaW4gb3JkZXI6IHRoZSBicmljayBiYWNrIHdhbGwgd2l0aCBhIGJsdWUgcGFya2luZyBwYXktbWFjaGluZSBhbmQgYSBsaW5lIG9mIHBlb3BsZSB3YWl0aW5nIHRvIHBheSAtPiBhIHJlZCBzY29vdGVyIHB1dHRlcmluZyBpbiBwYXN0IHRoZSB5ZWxsb3cgYXJyb3dzIHBhaW50ZWQgb24gdGhlIGdyb3VuZCBhbmQgYSBibHVlIGRpc2FibGVkLXBhcmtpbmcgc3ltYm9sIC0+IGEgcGFya2luZyBhdHRlbmRhbnQgaW4gbmF2eSBzdGFuZGluZyBieSBhIHB1cnBsZSBjYXIgLT4gdGhlIHJvd3Mgb2YgcGFya2VkIGNhcnMgKGEgcHVycGxlIGhhdGNoYmFjaywgYW4gb2xpdmUgY2FyLCBhIHJlZCBjYXIgd2hlcmUgYW4gZWxkZXJseSBjb3VwbGUgYXJlIGxvYWRpbmcgc2hvcHBpbmcgYmFncywgYW5kIGEgYmx1ZSBzcG9ydHMgY2FyKSAtPiBhIGdyZWVuIFNVViB3aXRoIGl0cyBoZWFkbGlnaHRzIG9uIGFuZCBhIHdvbWFuIGluIHBpbmsgY3Jvc3NpbmcgaW4gZnJvbnQgb2YgaXQgLT4gYSBtYXJvb24gY2FyIGFuZCBhIG1hbiBpbiBhIHN0cmlwZWQgc2hpcnQgYXQgdGhlIGZyb250LWxlZnQgLT4gYSB0dXJxdW9pc2UgQmVldGxlIHB1bGxpbmcgb3V0LCBhbmQgYSBidXNpbmVzc21hbiBpbiBhIGdyZXkgc3VpdCBvbiBoaXMgY2VsbHBob25lIHdpdGggYSBicmllZmNhc2UuIl0sInBocmFzZXMiOlsiSW4gdGhlIGZvcmVncm91bmQsIFx1MjAyNiIsIk9uIHRoZSByaWdodC1oYW5kIHNpZGUsIFx1MjAyNiIsIkl0IGxvb2tzIGxpa2VcdTIwMjYiLCJUaGUgd2hvbGUgcGxhY2UgZmVlbHNcdTIwMjYiXX0sInM2IjoiVGhpcyBwaWN0dXJlIHNob3dzIGEgYmlnLCBidXN5IHBhcmtpbmcgbG90LCBmdWxsIG9mIGNhcnMgYW5kIHBlb3BsZS4gQXQgdGhlIGJhY2ssIHRoZXJlIGlzIGEgYnJpY2sgd2FsbCwgYW5kIHRoZXJlIGlzIGEgYmx1ZSBtYWNoaW5lIHdoZXJlIHlvdSBwYXkgZm9yIHBhcmtpbmcuIEEgbGluZSBvZiBhYm91dCBmb3VyIG9yIGZpdmUgcGVvcGxlIGlzIHdhaXRpbmcgdGhlcmUgdG8gcGF5LiBPbiB0aGUgZ3JvdW5kLCB0aGVyZSBhcmUgeWVsbG93IGFycm93cyB0byBzaG93IHRoZSBkaXJlY3Rpb24gdG8gZHJpdmUsIGFuZCBJIGNhbiBzZWUgYSBibHVlIGRpc2FibGVkLXBhcmtpbmcgc2lnbiBwYWludGVkIG9uIHRoZSBmbG9vci4gT24gdGhlIHRvcC1sZWZ0LCBhIHBlcnNvbiBvbiBhIHJlZCBzY29vdGVyIGlzIGRyaXZpbmcgaW4uIE5lYXIgdGhlIG1pZGRsZSwgYSBtYW4gaW4gYSBkYXJrIHVuaWZvcm0sIG1heWJlIGEgcGFya2luZyBvZmZpY2VyLCBpcyBzdGFuZGluZyBuZXh0IHRvIGEgcHVycGxlIGNhci4gVGhlcmUgYXJlIG1hbnkgcGFya2VkIGNhcnMsIGEgcHVycGxlIG9uZSwgYSB5ZWxsb3ctZ3JlZW4gb25lLCBhIHJlZCBvbmUsIGFuZCBhIGJsdWUgc3BvcnRzIGNhci4gQmVoaW5kIHRoZSByZWQgY2FyLCBhbiBvbGRlciBjb3VwbGUgaXMgcHV0dGluZyB0aGVpciBzaG9wcGluZyBiYWdzIGludG8gdGhlIHRydW5rLiBJbiB0aGUgbWlkZGxlLCB0aGVyZSBpcyBhIGdyZWVuIFNVViB3aXRoIGl0cyBsaWdodHMgb24sIGFuZCBhIHdvbWFuIGluIGEgcGluayBzaGlydCBpcyB3YWxraW5nIGluIGZyb250IG9mIGl0LiBBdCB0aGUgZnJvbnQtbGVmdCwgYSBtYW4gaW4gYSBzdHJpcGVkIHNoaXJ0IGlzIHN0YW5kaW5nIG5lYXIgYSBkYXJrIHJlZCBjYXIuIEFuZCBhdCB0aGUgZnJvbnQsIGEgYmx1ZSBCZWV0bGUgY2FyIGlzIG1vdmluZywgd2hpbGUgYSBidXNpbmVzc21hbiBpbiBhIGdyZXkgc3VpdCBpcyBzdGFuZGluZyBhbmQgdGFsa2luZyBvbiBoaXMgY2VsbHBob25lLCBob2xkaW5nIGEgYnJpZWZjYXNlLiBFdmVyeWJvZHkgaXMgYnVzeSEiLCJzOSI6IlRoaXMgaXMgYSBidXN0bGluZyBjYXIgcGFyaywgYW5kIHRoZXJlIGlzIGEgbGl0dGxlIHN0b3J5IHVuZm9sZGluZyBpbiBldmVyeSBjb3JuZXIuIEFsb25nIHRoZSBiYWNrIHJ1bnMgYSBicmljayB3YWxsIHdpdGggYSBibHVlIHBheS1hbmQtZGlzcGxheSBtYWNoaW5lIG1vdW50ZWQgb24gaXQsIGFuZCBhIHF1ZXVlIG9mIGZvdXIgb3IgZml2ZSBwZW9wbGUgaGFzIGZvcm1lZCwgd2FpdGluZyB0aGVpciB0dXJuIHRvIGJ1eSBhIHRpY2tldC4gVGhlIHRhcm1hYyBpcyBwYWludGVkIHdpdGggYnJpZ2h0IHllbGxvdyBkaXJlY3Rpb25hbCBhcnJvd3MgYW5kLCBvZmYgdG8gb25lIHNpZGUsIHRoZSBibHVlIHdoZWVsY2hhaXIgc3ltYm9sIG9mIGEgZGlzYWJsZWQgcGFya2luZyBiYXkuIFRvcC1sZWZ0LCBzb21lb25lIGlzIHB1dHRlcmluZyBpbiBvbiBhIGxpdHRsZSByZWQgc2Nvb3RlciwgbGVhdmluZyBhIHB1ZmYgb2YgZXhoYXVzdCBiZWhpbmQgdGhlbS4gTmVhciB0aGUgbWlkZGxlIHN0YW5kcyBhIG1hbiBpbiBhIGRhcmsgbmF2eSB1bmlmb3JtLCBhIHBhcmtpbmcgYXR0ZW5kYW50IG9yIG9mZmljZXIgSSB3b3VsZCBndWVzcywgcmlnaHQgYmVzaWRlIGEgcHVycGxlIGhhdGNoYmFjayB3aG9zZSBkcml2ZXIgc2VlbXMgdG8gYmUgY2xpbWJpbmcgaW4uIFRoZSBiYXlzIGFyZSBmaWxsaW5nIHVwIHdpdGggYSB3aG9sZSByYWluYm93IG9mIGNhcnMsIHRoZSBwdXJwbGUgaGF0Y2hiYWNrLCBhbiBvbGl2ZS1ncmVlbiBzZWRhbiwgYSByZWQgY2FyIGFuZCBhIHNsZWVrIGJsdWUgc3BvcnRzIGNhciwgYW5kIGJlaGluZCB0aGUgcmVkIG9uZSBhbiBlbGRlcmx5IGNvdXBsZSBhcmUgY2FyZWZ1bGx5IGxvYWRpbmcgdGhlaXIgc2hvcHBpbmcgYmFncyBpbnRvIHRoZSBib290LiBJbiB0aGUgY2VudHJlLCBhIGdyZWVuIFNVViByb2xscyBmb3J3YXJkIHdpdGggaXRzIGhlYWRsaWdodHMgb24gd2hpbGUgYSB3b21hbiBpbiBhIHBpbmsgdG9wIHN0ZXBzIGFjcm9zcyBpbiBmcm9udCBvZiBpdCwgYW5kIG92ZXIgYXQgdGhlIGZyb250LWxlZnQgYSBtYW4gaW4gYSBzdHJpcGVkIHNoaXJ0IGxpbmdlcnMgYmVzaWRlIGEgZGFyayBtYXJvb24gY2FyLiBUaGUgZm9yZWdyb3VuZCBiZWxvbmdzIHRvIGEgdHVycXVvaXNlIEJlZXRsZSBlYXNpbmcgb3V0IG9mIGl0cyBzcGFjZSwgaXRzIGxpZ2h0cyBvbiBhbmQgZXhoYXVzdCBjdXJsaW5nIHVwLCBhbmQsIGNsb3Nlc3Qgb2YgYWxsLCBhIGJ1c2luZXNzbWFuIGluIGEgZ3JleSBzdWl0IHN0YW5kcyB3aXRoIGEgYnJpZWZjYXNlIGF0IGhpcyBmZWV0LCBkZWVwIGluIGNvbnZlcnNhdGlvbiBvbiBoaXMgY2VsbHBob25lLCBzZWVtaW5nbHkgb2JsaXZpb3VzIHRvIHRoZSB0cmFmZmljIGFyb3VuZCBoaW0uIFRoZSB3aG9sZSBwaWN0dXJlIGNhcHR1cmVzIHRoYXQgZXZlcnlkYXksIGxvdy1sZXZlbCBjaGFvcyBvZiBhIGNhciBwYXJrIGF0IGEgYnVzeSBob3VyLCBldmVyeW9uZSBhcnJpdmluZywgbGVhdmluZywgcGF5aW5nIGFuZCBtYW5vZXV2cmluZyBhdCBvbmNlLiJ9LHsiayI6InQ0IiwibnVtIjo0LCJ0eXBlRW4iOiJNYWtpbmcgUHJlZGljdGlvbnMiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiSW4gdGhpcyBwaWN0dXJlLCB3aGF0IGRvIHlvdSB0aGluayB3aWxsIG1vc3QgcHJvYmFibHkgaGFwcGVuIG5leHQ\/IiwiaW1nIjoic2NlbmUiLCJ0aXBzIjp7ImJ1bGxldHMiOlsiRWFjaCBwcmVkaWN0aW9uID0gd2lsbCAvIGJlIGdvaW5nIHRvIC8gd2lsbCBwcm9iYWJseSArIGEgUkVBU09OIGJhc2VkIG9uIGEgZGV0YWlsIGluIHRoZSBwaWN0dXJlLiIsIk1ha2UgM1x1MjAxMzQgcHJlZGljdGlvbnMgYWJvdXQgZGlmZmVyZW50IHBlb3BsZSBcdTIwMTQgZG9uJ3Qgc3RvcCBhdCBvbmUgaWRlYS4iLCJGaW5pc2ggd2l0aCBvbmUgb3ZlcmFsbCBwcmVkaWN0aW9uIGZvciB0aGUgd2hvbGUgc2NlbmUuIiwiU2FtZSBjYXIgcGFyayBhcyBUYXNrIDMgLSBub3cgcHJlZGljdDogdGhlIHBlcnNvbiBvbiB0aGUgcmVkIHNjb290ZXIgd2lsbCBmaW5kIGEgc3BhY2UgYW5kIHBhcms7IHRoZSBwZW9wbGUgaW4gdGhlIHF1ZXVlIHdpbGwgcGF5IGFuZCB3YWxrIG9mZiB0byB0aGUgc2hvcHM7IHRoZSBlbGRlcmx5IGNvdXBsZSB3aWxsIGZpbmlzaCBsb2FkaW5nIHRoZWlyIGJhZ3MsIGdldCBpbnRvIHRoZSByZWQgY2FyIGFuZCBkcml2ZSBhd2F5OyB0aGUgZ3JlZW4gU1VWIHdpbGwgcHVsbCBpbnRvIGFuIGVtcHR5IGJheTsgdGhlIHBhcmtpbmcgYXR0ZW5kYW50IG1heSBiZSBhYm91dCB0byB3cml0ZSBhIHRpY2tldCBmb3IgdGhlIGJhZGx5IHBhcmtlZCBwdXJwbGUgY2FyOyB0aGUgdHVycXVvaXNlIEJlZXRsZSB3aWxsIGRyaXZlIG91dCBvZiB0aGUgZXhpdDsgYW5kIHRoZSBidXNpbmVzc21hbiB3aWxsIGZpbmlzaCBoaXMgY2FsbCBhbmQgaGVhZCB0byBoaXMgY2FyLiJdLCJwaHJhc2VzIjpbIlx1MjAyNmlzIGFib3V0IHRvXHUyMDI2IiwiSGUnbGwgbW9zdCBsaWtlbHlcdTIwMjYiLCJKdWRnaW5nIGJ5XHUyMDI2LCBJIGV4cGVjdFx1MjAyNiIsIldpdGhpbiBtaW51dGVzLCBcdTIwMjYiXX0sInM2IjoiSSB0aGluayBpbiB0aGUgbmV4dCBmZXcgbWludXRlcywgdGhpcyBidXN5IHBhcmtpbmcgbG90IHdpbGwgc2xvd2x5IGNoYW5nZS4gRmlyc3QsIHRoZSBwZXJzb24gb24gdGhlIHJlZCBzY29vdGVyIHdpbGwgZmluZCBhbiBlbXB0eSBzcGFjZSBhbmQgcGFyayBpdCwgYW5kIHRoZW4gd2FsayBhd2F5IHRvIHRoZSBzaG9wcy4gVGhlIHBlb3BsZSB3YWl0aW5nIGluIHRoZSBsaW5lIHdpbGwgcGF5IHRoZSBtYWNoaW5lLCB0YWtlIHRoZWlyIHRpY2tldHMsIGFuZCBwdXQgdGhlbSBpbiB0aGVpciBjYXJzIG9yIGdvIHNob3BwaW5nLiBUaGUgb2xkIGNvdXBsZSBiZWhpbmQgdGhlIHJlZCBjYXIgYXJlIGFsbW9zdCBmaW5pc2hlZCwgc28gdGhleSB3aWxsIGNsb3NlIHRoZSB0cnVuaywgZ2V0IGludG8gdGhlaXIgY2FyLCBhbmQgZHJpdmUgaG9tZSB3aXRoIHRoZWlyIHNob3BwaW5nLiBUaGUgZ3JlZW4gU1VWIHdpdGggdGhlIGxpZ2h0cyBvbiBpcyBsb29raW5nIGZvciBhIHNwYWNlLCBzbyBJIHRoaW5rIGl0IHdpbGwgcGFyayBpbiBhbiBlbXB0eSBzcG90IHZlcnkgc29vbi4gVGhlIG1hbiBpbiB0aGUgdW5pZm9ybSBpcyBzdGFuZGluZyBieSB0aGUgcHVycGxlIGNhciwgbWF5YmUgaXQgaXMgcGFya2VkIGJhZGx5LCBzbyBoZSBtaWdodCB3cml0ZSBhIHBhcmtpbmcgdGlja2V0IGZvciBpdCwgYW5kIHRoZSBkcml2ZXIgd2lsbCBub3QgYmUgaGFwcHkhIFRoZSBibHVlIEJlZXRsZSBhdCB0aGUgZnJvbnQgaXMgbW92aW5nLCBzbyBpdCB3aWxsIGRyaXZlIHRvIHRoZSBleGl0IGFuZCBsZWF2ZSB0aGUgcGFya2luZyBsb3QuIEFuZCB0aGUgYnVzaW5lc3NtYW4gb24gdGhlIHBob25lIHdpbGwgZmluaXNoIGhpcyBjYWxsLCBwaWNrIHVwIGhpcyBicmllZmNhc2UsIGFuZCB3YWxrIHRvIGhpcyBjYXIuIFNvIGxpdHRsZSBieSBsaXR0bGUsIHNvbWUgY2FycyB3aWxsIGxlYXZlLCBuZXcgY2FycyB3aWxsIGNvbWUsIGFuZCB0aGUgcGFya2luZyBsb3Qgd2lsbCBhbHdheXMgc3RheSBidXN5LiBJdCBuZXZlciByZWFsbHkgc3RvcHMhIiwiczkiOiJHaXZlIHRoaXMgY2FyIHBhcmsgYSBmZXcgbW9yZSBtaW51dGVzIGFuZCB0aGUgd2hvbGUgc2xvdyBkYW5jZSB3aWxsIHNoaWZ0IGFyb3VuZC4gVGhlIHJpZGVyIG9uIHRoZSByZWQgc2Nvb3RlciB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmluZCBhIGdhcCwgdHVjayB0aGUgYmlrZSBpbnRvIGl0LCBhbmQgc3Ryb2xsIG9mZiB0b3dhcmRzIHRoZSBzaG9wcy4gVGhlIGxpdHRsZSBxdWV1ZSBhdCB0aGUgcGF5IG1hY2hpbmUgd2lsbCBzdGVhZGlseSBjbGVhciBhcywgb25lIGJ5IG9uZSwgcGVvcGxlIGZlZWQgaW4gdGhlaXIgY29pbnMsIGdyYWIgdGhlaXIgdGlja2V0cyBhbmQgaGVhZCBvZmYsIHNvbWUgYmFjayB0byB0aGVpciBjYXJzLCBzb21lIGludG8gdGhlIG1hbGwuIFRoZSBlbGRlcmx5IGNvdXBsZSBiZWhpbmQgdGhlIHJlZCBjYXIgbG9vayBuZWFybHkgZG9uZSwgc28gSSBleHBlY3QgdGhlbSB0byBzaHV0IHRoZSBib290LCBlYXNlIHRoZW1zZWx2ZXMgaW4sIGFuZCBwdWxsIGNhcmVmdWxseSBvdXQgdG8gZHJpdmUgaG9tZSB3aXRoIHRoZWlyIHNob3BwaW5nLiBUaGF0IGdyZWVuIFNVViBjcmVlcGluZyBmb3J3YXJkIHdpdGggaXRzIGhlYWRsaWdodHMgb24gaXMgY2xlYXJseSBodW50aW5nIGZvciBhIHNwYWNlLCBhbmQgaXQgd2lsbCBwcm9iYWJseSBzd2luZyBpbnRvIHRoZSBuZXh0IGZyZWUgYmF5IGl0IHNwb3RzLiBUaGUgdW5pZm9ybWVkIGF0dGVuZGFudCBsb2l0ZXJpbmcgYnkgdGhlIHB1cnBsZSBoYXRjaGJhY2sgaXMgdGhlIGludGVyZXN0aW5nIG9uZSwgaWYgdGhhdCBjYXIgaXMgcGFya2VkIGJhZGx5IG9yIGl0cyB0aWNrZXQgaGFzIHJ1biBvdXQsIGhlIG1heSB3ZWxsIGJlIGFib3V0IHRvIHNjcmliYmxlIGEgcGFya2luZyBmaW5lIGFuZCB0dWNrIGl0IHVuZGVyIHRoZSB3aXBlciwgd2hpY2ggd2lsbCBub3QgbWFrZSB0aGUgb3duZXIncyBkYXkuIERvd24gYXQgdGhlIGZyb250LCB0aGUgdHVycXVvaXNlIEJlZXRsZSBpcyBhbHJlYWR5IG9uIHRoZSBtb3ZlLCBzbyBpdCB3aWxsIHJvbGwgdG93YXJkcyB0aGUgZXhpdCBhbmQgbGVhdmUsIHdoaWxlIHRoZSBidXNpbmVzc21hbiBnbHVlZCB0byBoaXMgcGhvbmUgd2lsbCBldmVudHVhbGx5IHdyYXAgdXAgaGlzIGNhbGwsIHNjb29wIHVwIGhpcyBicmllZmNhc2UsIGFuZCB3YW5kZXIgb2ZmIHRvIGZpbmQgaGlzIG93biBjYXIuIFN0ZXAgYmFjaywgYW5kIHRoZSBvdmVyYWxsIHByZWRpY3Rpb24gaXMgc2ltcGx5IG1vcmUgb2YgdGhlIHNhbWUgYmVhdXRpZnVsbHkgb3JkaW5hcnkgY2h1cm46IGEgZmV3IGNhcnMgbGVhdmluZywgZnJlc2ggb25lcyBub3NpbmcgaW4gdG8gdGFrZSB0aGVpciBwbGFjZXMsIHRpY2tldHMgYm91Z2h0LCBiYWdzIGxvYWRlZCwgYW5kIHRoZSBjb25zdGFudCBsb3cgaHVtIG9mIGVuZ2luZXMuIEEgYnVzeSBjYXIgcGFyayBsaWtlIHRoaXMgbmV2ZXIgcmVhbGx5IGVtcHRpZXMsIGl0IGp1c3Qga2VlcHMgY3ljbGluZyB0aHJvdWdoIHRoZSBzYW1lIHJoeXRobSBhbGwgZGF5IGxvbmcuIn0seyJrIjoidDUiLCJudW0iOjUsInR5cGVFbiI6IkNvbXBhcmluZyBhbmQgUGVyc3VhZGluZyIsInBoYXNlZCI6dHJ1ZSwiY2hvb3NlIjp7InByZXAiOjYwLCJzaXR1YXRpb24iOiJZb3VyIG9mZmljZSBtYW5hZ2VyIGhhcyBhc2tlZCB5b3UgdG8gaGVscCBjaG9vc2Ugb2ZmaWNlIHBsYW50cyBmb3IgdGhlIHJlY2VwdGlvbiBhcmVhLiBZb3UgZmluZCB0d28gc3VpdGFibGUgb3B0aW9ucy4gVXNpbmcgdGhlIHBpY3R1cmVzIGFuZCBpbmZvcm1hdGlvbiBiZWxvdywgY2hvb3NlIHRoZSBvcHRpb24gdGhhdCB5b3UgcHJlZmVyLiBJbiB0aGUgbmV4dCBzZWN0aW9uLCB5b3Ugd2lsbCBuZWVkIHRvIHBlcnN1YWRlIHlvdXIgY28td29ya2VyIHRoYXQgeW91ciBjaG9pY2UgaXMgdGhlIGJldHRlciBjaG9pY2UuIiwibm90ZSI6IklmIHlvdSBkbyBub3QgY2hvb3NlIGFuIG9wdGlvbiwgdGhlIGNvbXB1dGVyIHdpbGwgY2hvb3NlIG9uZSBmb3IgeW91LiBZb3UgZG8gbm90IG5lZWQgdG8gc3BlYWsgZm9yIHRoaXMgcGFydC4iLCJvcHRpb25zIjpbeyJ0aXRsZSI6IlRoZSBFbGVnYW50IExvb2siLCJpbWciOiJvcHRBIiwiYnVsbGV0cyI6WyIkNjAgcGVyIHBsYW50IiwiZ3Jvd3MgYWJvdXQgNSBjbSBhIHllYXIiLCJzdHVyZHkgdGFsbCB3b29kZW4gZmxvb3IgcGxhbnRlcnMiLCJuZWVkcyBsb3RzIG9mIG5hdHVyYWwgbGlnaHQgYnV0IGxpdHRsZSB3YXRlciJdfSx7InRpdGxlIjoiVGhlIE5hdHVyYWwgTG9vayIsImltZyI6Im9wdEIiLCJidWxsZXRzIjpbIiQ1MCBwZXIgcGxhbnQiLCJlYXN5IHRvIG1vdmUgYXJvdW5kIiwicGxhc3RpYyBwbGFudCBwb3RzIG9uIHdoZWVscyIsIm5lZWRzIHRvIGJlIHRyaW1tZWQgZXZlcnkgMiB3ZWVrcyJdfV19LCJzcGVhayI6eyJwcmVwIjo2MCwicmVjIjo2MCwicHJvbXB0IjoiWW91ciBjby13b3JrZXIgaXMgc3VnZ2VzdGluZyBhbm90aGVyIG9mZmljZSBwbGFudC4gUGVyc3VhZGUgdGhlbSB0aGF0IHRoZSBvcHRpb24geW91IGNob3NlIGlzIG1vcmUgc3VpdGFibGUgYnkgY29tcGFyaW5nIHRoZSB0d28uIiwib3RoZXJMYWJlbCI6IllvdXIgQ28tV29ya2VyJ3MgQ2hvaWNlIiwib3RoZXIiOnsidGl0bGUiOiJUaGUgUG90IExvb2siLCJpbWciOiJvcHRPdGhlciIsImJ1bGxldHMiOlsiJDE1IHBlciBwbGFudCIsInNtYWxsIHBsYXN0aWMgcGxhbnQgcG90IiwibmVlZHMgdG8gYmUgcmVwbGFudGVkIGV2ZXJ5IG1vbnRoIiwibmVlZHMgbmF0dXJhbCBsaWdodCBhbmQgbG90cyBvZiB3YXRlciJdfX0sInRpcHMiOnsiYnVsbGV0cyI6WyJTdHJ1Y3R1cmU6IGFja25vd2xlZGdlIHRoZSBvdGhlciBwZXJzb24ncyBjaG9pY2UgXHUyMTkyIGdpdmUgMlx1MjAxMzMgYWR2YW50YWdlcyBvZiB5b3VycyAoZGlyZWN0IGNvbXBhcmlzb24pIFx1MjE5MiB3cmFwIHVwLiIsIkNvbXBhcmUgdXNpbmcgdGhlIG51bWJlcnMgb24gdGhlIGNhcmRzOiBwcmljZSwgZHVyYXRpb24sIGNhcGFjaXR5LCBleHBlcmllbmNlLiIsIllvdSBkbyBOT1QgbmVlZCB0byBzcGVhayBkdXJpbmcgdGhlIGNob29zaW5nIHN0ZXAgXHUyMDE0IGp1c3QgY2xpY2sgYW4gb3B0aW9uLiIsIlRoZSBzYW1wbGVzIGNob29zZSBUaGUgRWxlZ2FudCBMb29rICgkNjAgYSBwbGFudCwgc3R1cmR5IHRhbGwgd29vZGVuIGZsb29yIHBsYW50ZXJzLCBncm93cyBvbmx5IGFib3V0IDUgY20gYSB5ZWFyLCBuZWVkcyBsb3RzIG9mIGxpZ2h0IGJ1dCB2ZXJ5IGxpdHRsZSB3YXRlcikuIEZvciBhIHByb2Zlc3Npb25hbCByZWNlcHRpb24gaXQgbG9va3MgdGhlIG1vc3QgdXBzY2FsZSBhbmQsIGJlY2F1c2UgaXQgYmFyZWx5IGdyb3dzIGFuZCBoYXJkbHkgbmVlZHMgd2F0ZXJpbmcsIGl0IGlzIGFsbW9zdCBubyBtYWludGVuYW5jZS4gWW91ciBjby13b3JrZXIncyBQb3QgTG9vayBpcyBjaGVhcCBhdCAkMTUgYnV0IGl0IGlzIGEgdGlueSBwbGFudCBpbiBhIHNtYWxsIHBsYXN0aWMgcG90IHRoYXQgbXVzdCBiZSByZXBsYW50ZWQgZXZlcnkgbW9udGggYW5kIG5lZWRzIGxvdHMgb2Ygd2F0ZXIgLSBmdXNzeSBhbmQgdW5pbXByZXNzaXZlIGZvciBhIHJlY2VwdGlvbi4gVGhlIE5hdHVyYWwgTG9vayAoJDUwLCBvbiB3aGVlbHMpIGlzIHRoZSBydW5uZXItdXAgYnV0IG5lZWRzIHRyaW1taW5nIGV2ZXJ5IHR3byB3ZWVrcy4iXSwicGhyYXNlcyI6WyJJIHNlZSB3aHkgeW91IGxpa2VcdTIwMjYsIGJ1dFx1MjAyNiIsIkNvbXBhcmVkIHRvXHUyMDI2LCB0aGlzIG9uZVx1MjAyNiIsIkl0J3MgYmV0dGVyIHZhbHVlOiBcdTIwMjYgdmVyc3VzIFx1MjAyNiIsIklmIHRoZSBnb2FsIGlzXHUyMDI2LCB0aGUgY2hvaWNlIGlzIGNsZWFyLiJdfSwiczYiOiJJIGtub3cgeW91ciBQb3QgTG9vayBwbGFudCBpcyB2ZXJ5IGNoZWFwLCBvbmx5IGZpZnRlZW4gZG9sbGFycywgYnV0IHBsZWFzZSBsaXN0ZW4gYmVmb3JlIHlvdSBkZWNpZGUsIGJlY2F1c2UgSSByZWFsbHkgdGhpbmsgbXkgY2hvaWNlLCBUaGUgRWxlZ2FudCBMb29rLCBpcyBtdWNoIGJldHRlciBmb3Igb3VyIHJlY2VwdGlvbi4gRmlyc3QsIHRoaW5rIGFib3V0IHRoZSBpbWFnZS4gV2hlbiBjbGllbnRzIHdhbGsgaW4sIHRoZSByZWNlcHRpb24gaXMgdGhlIGZpcnN0IHRoaW5nIHRoZXkgc2VlLiBUaGUgRWxlZ2FudCBMb29rIGhhcyB0YWxsLCBzdHVyZHkgcGxhbnRzIGluIG5pY2Ugd29vZGVuIGZsb29yIHBsYW50ZXJzLCBpdCBsb29rcyBwcm9mZXNzaW9uYWwgYW5kIGV4cGVuc2l2ZS4gWW91ciBsaXR0bGUgcGxhbnQgaW4gYSBzbWFsbCBwbGFzdGljIHBvdCBsb29rcyBjaGVhcCBvbiBhIGJpZyByZWNlcHRpb24gZGVzaywgc29ycnkhIFNlY29uZCwgbWFpbnRlbmFuY2UsIGFuZCB0aGlzIGlzIHRoZSBiaWcgb25lLiBZb3VyIFBvdCBMb29rIG5lZWRzIHRvIGJlIHJlcGxhbnRlZCBldmVyeSBzaW5nbGUgbW9udGgsIGFuZCBpdCBuZWVkcyBsb3RzIG9mIHdhdGVyLiBXaG8gaGFzIHRpbWUgZm9yIHRoYXQgaW4gYSBidXN5IG9mZmljZT8gVGhlIEVsZWdhbnQgTG9vayBncm93cyBvbmx5IGZpdmUgY2VudGltZXRyZXMgYSB5ZWFyLCBzbyBpdCBzdGF5cyBuZWF0LCBhbmQgaXQgbmVlZHMgdmVyeSBsaXR0bGUgd2F0ZXIuIEl0IGlzIGFsbW9zdCBubyB3b3JrLiBZZXMsIGl0IGNvc3RzIHNpeHR5IGRvbGxhcnMsIG1vcmUgdGhhbiB5b3VycywgYnV0IHdlIGJ1eSBpdCBvbmUgdGltZSBhbmQgaXQgbG9va3MgZ3JlYXQgZm9yIHllYXJzLCBzbyBpdCBpcyB3b3J0aCB0aGUgbW9uZXkuIFRoZSBOYXR1cmFsIExvb2sgd2FzIG15IHNlY29uZCBjaG9pY2UsIGJ1dCBpdCBuZWVkcyB0cmltbWluZyBldmVyeSB0d28gd2Vla3MsIHRvbyBtdWNoIHdvcmsuIFNvLCBmb3IgYSBwcm9mZXNzaW9uYWwgbG9vayBhbmQgYWxtb3N0IG5vIG1haW50ZW5hbmNlLCBUaGUgRWxlZ2FudCBMb29rIGlzIHRoZSBjbGVhciB3aW5uZXIuIENhbiB3ZSBjaG9vc2UgdGhhdCBvbmU\/IiwiczkiOiJJIGNhbiBzZWUgdGhlIGFwcGVhbCBvZiB5b3VyIFBvdCBMb29rLCBmaWZ0ZWVuIGRvbGxhcnMgaXMgY2VydGFpbmx5IGNoZWFwLCBidXQgYmVmb3JlIHdlIGNvbW1pdCwgbGV0IG1lIG1ha2UgdGhlIGNhc2UgZm9yIG15IHBpY2ssIFRoZSBFbGVnYW50IExvb2ssIGJlY2F1c2UgZm9yIGEgcmVjZXB0aW9uIGFyZWEgSSB0aGluayBpdCB3aW5zIGNvbWZvcnRhYmx5LiBTdGFydCB3aXRoIGltcHJlc3Npb24sIHdoaWNoIHJlYWxseSBtYXR0ZXJzIGhlcmU6IHJlY2VwdGlvbiBpcyB0aGUgZmlyc3QgdGhpbmcgYSBjbGllbnQgb3IgdmlzaXRvciBzZWVzLCBzbyBpdCBuZWVkcyB0byBzaWduYWwgdGhhdCB3ZSBhcmUgcHJvZmVzc2lvbmFsIGFuZCBlc3RhYmxpc2hlZC4gVGhlIEVsZWdhbnQgTG9vayBkZWxpdmVycyBleGFjdGx5IHRoYXQsIHRhbGwsIHN0cmlraW5nIHBsYW50cyBpbiBzdHVyZHkgd29vZGVuIGZsb29yIHBsYW50ZXJzIHRoYXQgbG9vayBwb2xpc2hlZCBhbmQgaGlnaC1lbmQuIFlvdXIgUG90IExvb2ssIGJ5IGNvbnRyYXN0LCBpcyBhIHNtYWxsIHBsYW50IGluIGEgbGl0dGxlIHBsYXN0aWMgcG90OyBvbiBhIGJpZyByZWNlcHRpb24gZGVzayBpdCB3aWxsIHJlYWQgYXMgYW4gYWZ0ZXJ0aG91Z2h0IHJhdGhlciB0aGFuIGEgc3RhdGVtZW50LiBUaGVuIHRoZXJlIGlzIG1haW50ZW5hbmNlLCBhbmQgdGhpcyBpcyB3aGVyZSB0aGUgZ2FwIHJlYWxseSBvcGVucyB1cC4gVGhlIFBvdCBMb29rIGhhcyB0byBiZSByZXBsYW50ZWQgZXZlcnkgc2luZ2xlIG1vbnRoIGFuZCBkcmlua3MgYSBsb3Qgb2Ygd2F0ZXIsIHRoYXQgaXMgYSByZWN1cnJpbmcgY2hvcmUgbm9ib2R5IGluIGEgYnVzeSBvZmZpY2UgaXMgZ29pbmcgdG8ga2VlcCB1cCB3aXRoLCBhbmQgYSBoYWxmLWRlYWQgcmVjZXB0aW9uIHBsYW50IGxvb2tzIHdvcnNlIHRoYW4gbm9uZSBhdCBhbGwuIFRoZSBFbGVnYW50IExvb2sgZ3Jvd3MgYmFyZWx5IGZpdmUgY2VudGltZXRyZXMgYSB5ZWFyLCBzbyBpdCBzdGF5cyBuZWF0IGZvciBhZ2VzLCBhbmQgaXQgbmVlZHMgdmVyeSBsaXR0bGUgd2F0ZXIsIGVzc2VudGlhbGx5IGl0IGxvb2tzIGFmdGVyIGl0c2VsZi4gWWVzLCBhdCBzaXh0eSBkb2xsYXJzIGEgcGxhbnQgaXQgY29zdHMgbW9yZSB1cGZyb250LCBidXQgaXQgaXMgYSBvbmUtdGltZSBidXkgdGhhdCBrZWVwcyBsb29raW5nIGdvb2QgZm9yIHllYXJzLCBzbyBpdCBpcyBiZXR0ZXIgdmFsdWUgaW4gdGhlIGxvbmcgcnVuLiBGb3IgdGhlIHJlY29yZCwgVGhlIE5hdHVyYWwgTG9vayB3YXMgbXkgcnVubmVyLXVwLCBpdCBpcyBoYW5kc29tZSBhbmQgbW92YWJsZSwgYnV0IGl0IG5lZWRzIHRyaW1taW5nIGV2ZXJ5IGZvcnRuaWdodCwgd2hpY2ggaXMgbW9yZSB1cGtlZXAgdGhhbiBJIHdvdWxkIHdhbnQuIFNvIG9uIGxvb2tzIGFuZCBvbiBuZWFyLXplcm8gbWFpbnRlbmFuY2UsIFRoZSBFbGVnYW50IExvb2sgaXMgdGhlIHNlbnNpYmxlIGNob2ljZSBmb3IgcmVjZXB0aW9uLiBTaGFsbCB3ZSBwdXQgaXQgZm9yd2FyZCB0byB0aGUgbWFuYWdlcj8ifSx7ImsiOiJ0NiIsIm51bSI6NiwidHlwZUVuIjoiRGVhbGluZyB3aXRoIGEgRGlmZmljdWx0IFNpdHVhdGlvbiIsInByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3UgYXJlIGdvaW5nIG9uIHZhY2F0aW9uIHdpdGggeW91ciBjb3VzaW4gYW5kIHlvdXIgZnJpZW5kLiBUaGUgZmxpZ2h0IGF0dGVuZGFudCBvbiB0aGUgcGxhbmUgeW91IGJvYXJkZWQgdGVsbHMgeW91IHRoYXQgdGhlIGZsaWdodCBpcyB0b28gZnVsbCBhbmQgb2ZmZXJzIHRoZSB0aHJlZSBvZiB5b3UgJDUwMCBlYWNoLCBpbiBjYXNoLCB0byB0YWtlIGEgZGlmZmVyZW50IGZsaWdodCB0aGUgbmV4dCBtb3JuaW5nLiBZb3VyIGNvdXNpbiBkb2Vzbid0IHdhbnQgdG8gbWlzcyBvbmUgbmlnaHQgb2YgdGhlIHZhY2F0aW9uIGFuZCB0aGVyZWZvcmUgd2FudHMgdG8gcmVmdXNlIHRoZSAkNTAwLiBZb3VyIGZyaWVuZCBzYXlzIHRoZSBleHRyYSBtb25leSB3aWxsIGhlbHAgcGF5IGZvciB0aGUgdmFjYXRpb24uIiwiY2hvb3NlT25lIjpbIlRhbGsgdG8geW91ciBjb3VzaW4uIEV4cGxhaW4gd2h5IGl0IGlzIGJlc3QgdG8gdGFrZSB0aGUgZmxpZ2h0IHRvbW9ycm93IG1vcm5pbmcuIiwiVGFsayB0byB5b3VyIGZyaWVuZC4gRXhwbGFpbiB3aHkgaXQgaXMgYmVzdCB0byBzdGF5IG9uIHRoaXMgZmxpZ2h0LiJdLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJQaWNrIE9ORSBvcHRpb24gKEVJVEhFUiBvciBPUikgaW1tZWRpYXRlbHkgXHUyMDE0IGRvbid0IHdhc3RlIHRpbWUgZGVjaWRpbmcuIiwiU3RydWN0dXJlOiBvcGVuIHBvbGl0ZWx5IFx1MjE5MiBleHBsYWluIHlvdXIgcmVhc29ucy9ldmlkZW5jZSBcdTIxOTIgcHJvcG9zZSBhIHNvbHV0aW9uIFx1MjE5MiBzbW9vdGggdGhpbmdzIG92ZXIuIiwiU3RheSBjYWxtIGFuZCByZXNwZWN0ZnVsIFx1MjAxNCBob3cgeW91IGhhbmRsZSB0aGUgc2l0dWF0aW9uIGlzIHBhcnQgb2Ygd2hhdCdzIGJlaW5nIHJhdGVkIChMaXN0ZW5hYmlsaXR5KS4iLCJUaGUgc2FtcGxlcyBwaWNrIG9wdGlvbiAxIC0gcGVyc3VhZGUgeW91ciBjb3VzaW4gdGhhdCB0aGUgdGhyZWUgb2YgeW91IHNob3VsZCB0YWtlIHRoZSBhaXJsaW5lJ3Mgb2ZmZXIgYW5kIGZseSBvdXQgdG9tb3Jyb3cgbW9ybmluZy4gUmVhc29uaW5nOiAkNTAwIGVhY2ggaXMgJDEsNTAwIGluIGZyZWUgY2FzaCB0aGF0IHBheXMgZm9yIGEgYmlnIGNodW5rIG9mIHRoZSB3aG9sZSB0cmlwOyB5b3Ugb25seSBsb3NlIE9ORSBuaWdodCBhbmQgY2FuIHN0YXJ0IGEgZGF5IGxhdGVyIGp1c3QgYXMgZWFzaWx5OyB0aGUgYWlybGluZSB1c3VhbGx5IGNvdmVycyBhIGhvdGVsIGFuZCBtZWFscyBmb3IgdGhlIG5pZ2h0LCBzbyB5b3UgcmVzdCBhbmQgYXJyaXZlIGZyZXNoLiBSZWFzc3VyZSB0aGUgY291c2luIHlvdSB3aWxsIG1ha2UgdGhhdCBsb3N0IG5pZ2h0IHVwIHRvZ2V0aGVyLiJdLCJwaHJhc2VzIjpbIkNvdWxkIEkganVtcCBpbiBmb3IgYSBtb21lbnQ\/IiwiSSB1bmRlcnN0YW5kIHlvdXIgY29uY2VybiwgYnV0XHUyMDI2IiwiSG93IGFib3V0IHdlXHUyMDI2PyIsIkknbGwgdGFrZSByZXNwb25zaWJpbGl0eSBmb3IgdGhpcy4iXX0sInM2IjoiSGV5LCBJIGtub3cgeW91IGRvIG5vdCB3YW50IHRvIG1pc3MgZXZlbiBvbmUgbmlnaHQgb2Ygb3VyIHZhY2F0aW9uLCBhbmQgSSB1bmRlcnN0YW5kLCB5b3UgYXJlIGV4Y2l0ZWQsIHdlIGFsbCBhcmUuIEJ1dCBwbGVhc2UgbGlzdGVuLCBiZWNhdXNlIEkgcmVhbGx5IHRoaW5rIHdlIHNob3VsZCB0YWtlIHRoZSBhaXJsaW5lJ3Mgb2ZmZXIgYW5kIGZseSB0b21vcnJvdyBtb3JuaW5nLiBKdXN0IHRoaW5rIGFib3V0IHRoZSBtb25leS4gVGhleSBhcmUgZ2l2aW5nIHVzIGZpdmUgaHVuZHJlZCBkb2xsYXJzIGVhY2ghIFRoYXQgaXMgb25lIHRob3VzYW5kIGZpdmUgaHVuZHJlZCBkb2xsYXJzIGZvciB0aGUgdGhyZWUgb2YgdXMsIGluIGNhc2gsIGZvciBmcmVlLiBUaGF0IG1vbmV5IGNhbiBwYXkgZm9yIG91ciBob3RlbCwgb3VyIGZvb2QsIG1heWJlIGV2ZW4gYSBmdW4gYWN0aXZpdHkgd2Ugd2FudGVkIHRvIGRvLiBUaGF0IGlzIGEgaHVnZSBoZWxwIGZvciB0aGUgdHJpcC4gQW5kIHdoYXQgZG8gd2UgbG9zZT8gT25seSBvbmUgbmlnaHQuIFdlIGFycml2ZSBvbmUgbW9ybmluZyBsYXRlciwgdGhhdCBpcyBhbGwuIFRoZSBiZWFjaCBhbmQgdGhlIGZ1biB3aWxsIHN0aWxsIGJlIHRoZXJlIHRvbW9ycm93LCBJIHByb21pc2UuIEFsc28sIHRoZSBhaXJsaW5lIHVzdWFsbHkgcGF5cyBmb3IgYSBob3RlbCBhbmQgZGlubmVyIGZvciB0b25pZ2h0LCBzbyB3ZSBjYW4gc2xlZXAgd2VsbCBhbmQgc3RhcnQgb3VyIGhvbGlkYXkgZnJlc2ggYW5kIHJlbGF4ZWQsIG5vdCB0aXJlZCBmcm9tIGEgbGF0ZSBmbGlnaHQuIE91ciBmcmllbmQgaXMgcmlnaHQgYWJvdXQgdGhlIG1vbmV5LCBpdCByZWFsbHkgaGVscHMuIEkga25vdyB5b3UgYXJlIGltcGF0aWVudCwgSSBhbSB0b28sIGJ1dCBvbmUgdGhvdXNhbmQgZml2ZSBodW5kcmVkIGRvbGxhcnMgZm9yIG9uZSBuaWdodCBpcyBhIGdyZWF0IGRlYWwuIExldCdzIHRha2UgaXQsIGFuZCBJIHByb21pc2Ugd2Ugd2lsbCBtYWtlIHRoYXQgbG9zdCBuaWdodCB1cCB0b2dldGhlci4gV2hhdCBkbyB5b3Ugc2F5PyIsInM5IjoiTG9vaywgSSBrbm93IHlvdSBhcmUgaXRjaGluZyB0byBnZXQgdGhlcmUgYW5kIHlvdSBkbyBub3Qgd2FudCB0byBsb3NlIGEgc2luZ2xlIG5pZ2h0LCBJIGZlZWwgaXQgdG9vLiBCdXQgbGV0IG1lIHRyeSB0byB0YWxrIHlvdSByb3VuZCwgYmVjYXVzZSBJIGhvbmVzdGx5IHRoaW5rIHRha2luZyB0aGUgYWlybGluZSdzIG9mZmVyIGFuZCBmbHlpbmcgb3V0IHRvbW9ycm93IG1vcm5pbmcgaXMgdGhlIHNtYXJ0IG1vdmUgZm9yIGFsbCB0aHJlZSBvZiB1cy4gU3RhcnQgd2l0aCB0aGUgc2hlZXIgc2l6ZSBvZiB3aGF0IGlzIG9uIHRoZSB0YWJsZTogZml2ZSBodW5kcmVkIGRvbGxhcnMgZWFjaCwgZmlmdGVlbiBodW5kcmVkIGJldHdlZW4gdXMsIGhhbmRlZCBvdmVyIGluIGNhc2ggZm9yIGRvaW5nIGFsbW9zdCBub3RoaW5nLiBUaGF0IGlzIG5vdCBwb2NrZXQgY2hhbmdlLCBpdCBjb3VsZCBjb3ZlciBvdXIgaG90ZWwgZm9yIHRoZSB3aG9sZSB0cmlwLCBvciBhbGwgb3VyIG1lYWxzLCBvciB0aGF0IHByaWNleSBleGN1cnNpb24gd2UgaGFsZi10YWxrZWQgb3Vyc2VsdmVzIG91dCBvZi4gVHVybmluZyBpdCBkb3duIG1lYW5zIHBheWluZyBmb3IgdGhvc2UgdGhpbmdzIG91dCBvZiBvdXIgb3duIHBvY2tldHMgaW5zdGVhZC4gQW5kIHdlaWdoIHRoYXQgYWdhaW5zdCB3aGF0IHdlIGFjdHVhbGx5IGdpdmUgdXA6IG9uZSBuaWdodC4gV2Ugcm9sbCBpbiBhIHNpbmdsZSBtb3JuaW5nIGxhdGVyLCBhbmQgdGhlIGJlYWNoLCB0aGUgc2lnaHRzIGFuZCB0aGUgZnVuIHdpbGwgYWxsIHN0aWxsIGJlIGV4YWN0bHkgd2hlcmUgd2UgbGVmdCB0aGVtLCBJIHByb21pc2Ugbm90aGluZyBpcyBnb2luZyB0byB2YW5pc2ggb3Zlcm5pZ2h0LiBPbiB0b3Agb2YgdGhhdCwgYWlybGluZXMgdXN1YWxseSBwdXQgeW91IHVwIGluIGEgaG90ZWwgYW5kIGNvdmVyIHlvdXIgbWVhbHMgd2hlbiB0aGV5IGJ1bXAgeW91LCBzbyB0b25pZ2h0IGJlY29tZXMgYSBmcmVlLCBjb21mb3J0YWJsZSByZXN0LCBhbmQgd2UgYXJyaXZlIGZyZXNoIHJhdGhlciB0aGFuIGRyYWdnaW5nIG91cnNlbHZlcyBvZmYgYSBmdWxsLCBzdHJlc3NmdWwgZmxpZ2h0LiBJIGtub3cgb3VyIGZyaWVuZCBpcyBsb29raW5nIGF0IHRoZSBtb25leSBhbmQsIGZyYW5rbHksIG91ciBmcmllbmQgaXMgcmlnaHQsIGl0IGdlbnVpbmVseSBoZWxwcyBmdW5kIHRoZSBob2xpZGF5IHdlIGFyZSB0cnlpbmcgdG8gZW5qb3kuIEkgZ2V0IHRoYXQgcGF0aWVuY2UgaXMgaGFyZCB3aGVuIHlvdSBhcmUgZXhjaXRlZCwgYnV0IGZpZnRlZW4gaHVuZHJlZCBkb2xsYXJzIGZvciBhIHNpbmdsZSBkZWxheWVkIG1vcm5pbmcgaXMgdGhlIGtpbmQgb2YgZGVhbCB5b3UgcmFyZWx5IGdldCBvZmZlcmVkLiBMZXQncyBncmFiIGl0LCBhbmQgSSBnaXZlIHlvdSBteSB3b3JkIHdlIHdpbGwgbWFrZSB0aGF0IG9uZSBsb3N0IGV2ZW5pbmcgdXAgdG9nZXRoZXIgb25jZSB3ZSBhcmUgdGhlcmUuIERlYWw\/In0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIHRoZSBnb3Zlcm5tZW50IHNob3VsZCBzcGVuZCB0YXhwYXllcnMnIG1vbmV5IG9uIHJlc2VhcmNoaW5nIGFuZCBkZXZlbG9waW5nIGVudmlyb25tZW50YWxseSBmcmllbmRseSBlbmVyZ3kgb3B0aW9ucywgc3VjaCBhcyBzb2xhciBwb3dlcj8gRXhwbGFpbiB5b3VyIHJlYXNvbnMuIiwicHJvbXB0TGVhZCI6IkFuc3dlciB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlN0YXRlIHlvdXIgcG9zaXRpb24gY2xlYXJseSBpbiB0aGUgZmlyc3Qgc2VudGVuY2UgKHBpY2tpbmcgb25lIHNpZGUgaXMgZWFzaWVyIHRvIGRldmVsb3AgdGhhbiBzdGF5aW5nIG5ldXRyYWwpLiIsIkdpdmUgMlx1MjAxMzMgcmVhc29ucywgZWFjaCBkZXZlbG9wZWQgb3ZlciAyXHUyMDEzMyBzZW50ZW5jZXMgd2l0aCBhbiBleGFtcGxlOyA5MCBzZWNvbmRzIGlzIGxvbmcgXHUyMDE0IGRvbid0IHN0b3AgZWFybHkuIiwiQWNrbm93bGVkZ2UgdGhlIG90aGVyIHNpZGUgaW4gb25lIHNlbnRlbmNlIChUaGF0IHNhaWQsIFx1MjAyNikgdGhlbiBjb25jbHVkZSBcdTIwMTQgaXQgc2hvd3MgYmFsYW5jZWQgdGhpbmtpbmcuIiwiVGhlIHNhbXBsZXMgYXJndWUgWUVTIC0gdGhlIGdvdmVybm1lbnQgc2hvdWxkIGludmVzdCB0YXhwYXllcnMnIG1vbmV5IGluIGRldmVsb3BpbmcgY2xlYW4gZW5lcmd5IGxpa2Ugc29sYXIuIFJlYXNvbnM6IGl0IHBheXMgb2ZmIGxvbmctdGVybSB3aXRoIGNoZWFwZXIsIGhvbWUtZ3Jvd24gZW5lcmd5IGFuZCBsZXNzIGRlcGVuZGVuY2Ugb24gaW1wb3J0ZWQgZnVlbDsgaXQgY3JlYXRlcyBuZXcgaW5kdXN0cmllcyBhbmQgam9iczsgYW5kIGl0IGN1dHMgdGhlIHBvbGx1dGlvbiB0aGF0IGhhcm1zIGhlYWx0aCBhbmQgdGhlIGNsaW1hdGUsIHNhdmluZyBodWdlIGZ1dHVyZSBjb3N0cy4gQ29uY2VkZSB0aGUgbW9uZXkgbXVzdCBiZSBzcGVudCB3aXNlbHkgb24gdGhlIG1vc3QgcHJvbWlzaW5nIHRlY2hub2xvZ2llcywgbm90IHdhc3RlZCwgdGhlbiBjb25jbHVkZSBpdCBpcyBhIHNtYXJ0IGludmVzdG1lbnQgaW4gdGhlIGZ1dHVyZS4iXSwicGhyYXNlcyI6WyJJZiBJIGhhZCB0byBjaG9vc2UsIEknZCBzYXlcdTIwMjYiLCJNeSBtYWluIHJlYXNvbiBpc1x1MjAyNiIsIkZvciBleGFtcGxlLCBcdTIwMjYiLCJUaGF0IHNhaWQsIFx1MjAyNiIsIkFsbCB0aGluZ3MgY29uc2lkZXJlZCwgXHUyMDI2Il19LCJzNiI6IlllcywgSSBzdHJvbmdseSBiZWxpZXZlIHRoZSBnb3Zlcm5tZW50IHNob3VsZCBzcGVuZCB0YXhwYXllcnMnIG1vbmV5IG9uIGRldmVsb3BpbmcgY2xlYW4gZW5lcmd5IGxpa2Ugc29sYXIgcG93ZXIuIExldCBtZSBnaXZlIG15IHJlYXNvbnMuIEZpcnN0LCBpdCBpcyBhIHNtYXJ0IGludmVzdG1lbnQgZm9yIHRoZSBmdXR1cmUuIFJpZ2h0IG5vdywgbWFueSBjb3VudHJpZXMgYnV5IG9pbCBhbmQgZ2FzIGZyb20gb3RoZXIgY291bnRyaWVzLCBhbmQgdGhhdCBpcyBleHBlbnNpdmUsIGFuZCB0aGUgcHJpY2UgZ29lcyB1cCBhbmQgZG93bi4gQnV0IHRoZSBzdW4gaXMgZnJlZSwgYW5kIGl0IGlzIGhlcmUgZXZlcnkgZGF5LiBJZiB3ZSBidWlsZCBnb29kIHNvbGFyIHRlY2hub2xvZ3kgbm93LCBpbiB0aGUgZnV0dXJlIHdlIHdpbGwgaGF2ZSBjaGVhcGVyIGVuZXJneSB0aGF0IHdlIG1ha2Ugb3Vyc2VsdmVzLCBhbmQgd2Ugd2lsbCBub3QgZGVwZW5kIG9uIG90aGVyIGNvdW50cmllcy4gU2Vjb25kLCBpdCBjcmVhdGVzIGpvYnMuIEJ1aWxkaW5nIHNvbGFyIHBhbmVscywgaW5zdGFsbGluZyB0aGVtLCBhbmQgZG9pbmcgdGhlIHJlc2VhcmNoLCBhbGwgb2YgdGhpcyBuZWVkcyB3b3JrZXJzLCBlbmdpbmVlcnMsIGFuZCBzY2llbnRpc3RzLCBzbyBpdCBpcyBnb29kIGZvciB0aGUgZWNvbm9teSB0b28uIFRoaXJkLCBhbmQgdmVyeSBpbXBvcnRhbnQsIGl0IGlzIGdvb2QgZm9yIG91ciBoZWFsdGggYW5kIG91ciBwbGFuZXQuIE9sZCBlbmVyZ3kgbGlrZSBjb2FsIG1ha2VzIGEgbG90IG9mIHBvbGx1dGlvbiwgYW5kIHBvbGx1dGlvbiBtYWtlcyBwZW9wbGUgc2ljayBhbmQgaGVhdHMgdXAgdGhlIEVhcnRoLiBDbGVhbiBlbmVyZ3kgZG9lcyBub3QgZG8gdGhhdC4gT2YgY291cnNlLCB0aGUgZ292ZXJubWVudCBtdXN0IHNwZW5kIHRoZSBtb25leSBjYXJlZnVsbHksIG9uIHRoZSBiZXN0IGFuZCBtb3N0IHVzZWZ1bCBwcm9qZWN0cywgbm90IHdhc3RlIGl0LiBCdXQgaW4gZ2VuZXJhbCwgc3BlbmRpbmcgb24gY2xlYW4gZW5lcmd5IGlzIG5vdCB3YXN0aW5nIG1vbmV5LCBpdCBpcyBpbnZlc3RpbmcgaW4gYSBjbGVhbmVyLCBjaGVhcGVyLCBoZWFsdGhpZXIgZnV0dXJlIGZvciBvdXIgY2hpbGRyZW4uIFNvIHllcywgSSBmdWxseSBzdXBwb3J0IGl0LiIsInM5IjoiTXkgYW5zd2VyIGlzIGEgZmlybSB5ZXMsIGdvdmVybm1lbnRzIGFic29sdXRlbHkgc2hvdWxkIGludmVzdCB0YXhwYXllcnMnIG1vbmV5IGluIHJlc2VhcmNoaW5nIGFuZCBkZXZlbG9waW5nIGNsZWFuIGVuZXJneSBzdWNoIGFzIHNvbGFyIHBvd2VyLCBhbmQgSSB3b3VsZCBhcmd1ZSBpdCBpcyBvbmUgb2YgdGhlIHdpc2VyIHRoaW5ncyB0aGV5IGNhbiBzcGVuZCBvdXIgbW9uZXkgb24uIE15IGZpcnN0IHJlYXNvbiBpcyBlY29ub21pYyBzZWxmLWludGVyZXN0LiBNb3N0IGNvdW50cmllcyBjdXJyZW50bHkgcG91ciBlbm9ybW91cyBzdW1zIGludG8gaW1wb3J0aW5nIG9pbCBhbmQgZ2FzLCBhdCBwcmljZXMgdGhhdCBzd2luZyB3aWxkbHkgd2l0aCB3b3JsZCBldmVudHMuIFN1bmxpZ2h0LCBieSBjb250cmFzdCwgaXMgZnJlZSBhbmQgZW5kbGVzc2x5IGF2YWlsYWJsZSwgc28gYnVpbGRpbmcgdXAgc29sYXIgdGVjaG5vbG9neSBub3cgaXMgYW4gaW52ZXN0bWVudCB0aGF0IHBheXMgYmFjayBsYXRlciBpbiBjaGVhcGVyLCBob21lLWdyb3duIGVuZXJneSBhbmQgZmFyIGxlc3MgZGVwZW5kZW5jZSBvbiBmb3JlaWduIHN1cHBsaWVycy4gU2Vjb25kLCBpdCBpcyBhIHBvd2VyZnVsIGVuZ2luZSBmb3Igam9icyBhbmQgaW5kdXN0cnk6IGRlc2lnbmluZywgbWFudWZhY3R1cmluZywgaW5zdGFsbGluZyBhbmQgbWFpbnRhaW5pbmcgcmVuZXdhYmxlIHN5c3RlbXMgZW1wbG95cyBldmVyeW9uZSBmcm9tIHJlc2VhcmNoIHNjaWVudGlzdHMgdG8gc2tpbGxlZCB0cmFkZXNwZW9wbGUsIGFuZCB0aGUgY291bnRyaWVzIHRoYXQgbGVhZCB0aGlzIGZpZWxkIHdpbGwgZXhwb3J0IHRoZWlyIGV4cGVydGlzZSB0byBldmVyeW9uZSBlbHNlLiBUaGlyZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZXJlIGlzIHRoZSBlbnZpcm9ubWVudGFsIGFuZCBoZWFsdGggcGF5b2ZmLiBGb3NzaWwgZnVlbHMgcHVtcCBvdXQgcG9sbHV0aW9uIHRoYXQgZm91bHMgb3VyIGFpciwgd29yc2VucyBpbGxuZXNzIGFuZCBkcml2ZXMgY2xpbWF0ZSBjaGFuZ2UsIGFuZCB0aGUgbG9uZy10ZXJtIGNvc3Qgb2YgYWxsIHRoYXQsIGluIGhlYWx0aGNhcmUsIGluIGRpc2FzdGVyIGRhbWFnZSwgaW4gcnVpbmVkIGZhcm1sYW5kLCBkd2FyZnMgdGhlIHByaWNlIG9mIHJlc2VhcmNoIHRvZGF5LiBOb3csIEkgd2lsbCBoYXBwaWx5IGNvbmNlZGUgb25lIHBvaW50OiB0aGlzIG1vbmV5IG11c3QgYmUgc3BlbnQgaW50ZWxsaWdlbnRseS4gR292ZXJubWVudHMgc2hvdWxkIGJhY2sgdGhlIG1vc3QgcHJvbWlzaW5nLCBwcm92ZW4gdGVjaG5vbG9naWVzIGFuZCBzZXQgY2xlYXIgdGFyZ2V0cywgcmF0aGVyIHRoYW4gdGhyb3dpbmcgY2FzaCBhdCBldmVyeSBmbGFzaHkgaWRlYSBvciBwcm9wcGluZyB1cCBwcm9qZWN0cyB0aGF0IGdvIG5vd2hlcmUuIFdhc3RlIGFuZCBtaXNtYW5hZ2VtZW50IGFyZSByZWFsIHJpc2tzIGFuZCBuZWVkIHJlYWwgb3ZlcnNpZ2h0LiBCdXQgdGhhdCBpcyBhbiBhcmd1bWVudCBmb3Igc3BlbmRpbmcgd2lzZWx5LCBub3QgZm9yIG5vdCBzcGVuZGluZyBhdCBhbGwuIE9uIGJhbGFuY2UsIGZ1bmRpbmcgY2xlYW4gZW5lcmd5IGlzIG5vdCBzbyBtdWNoIGFuIGV4cGVuc2UgYXMgYW4gaW52ZXN0bWVudCwgaW4gYSBjaGVhcGVyLCBtb3JlIHNlY3VyZSBhbmQgaGVhbHRoaWVyIGZ1dHVyZSwgYW5kIHRoYXQgaXMgZXhhY3RseSB0aGUga2luZCBvZiBsb25nLXRlcm0gdGhpbmtpbmcgd2Ugc2hvdWxkIHdhbnQgb3VyIHRheGVzIHRvIHBheSBmb3IuIn0seyJrIjoidDgiLCJudW0iOjgsInR5cGVFbiI6IkRlc2NyaWJpbmcgYW4gVW51c3VhbCBTaXR1YXRpb24iLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiWW91IGFyZSBhdCBhIG1hbGwgYW5kIHlvdSBzZWUgYSBzdG9yZSB0aGF0IHlvdSB0aGluayB5b3VyIHNpc3RlciwgS2F0aGVyaW5lLCBtaWdodCBsaWtlLiBDYWxsIEthdGhlcmluZSBhbmQgZGVzY3JpYmUgaW4gZGV0YWlsIHdoYXQgdGhlIHN0b3JlIGxvb2tzIGxpa2UuIEFzayBoZXIgaWYgc2hlIHdvdWxkIGxpa2UgdG8gZ28gdGhlcmUuIiwiaW1nIjoidW51c3VhbCIsInRpcHMiOnsiYnVsbGV0cyI6WyJUaGlzIGlzIGEgUEhPTkUgQ0FMTDogZ3JlZXQgdGhlIHJpZ2h0IHBlcnNvbiAodGhlIHBvbGljZSAvIHlvdXIgZnJpZW5kKSwgdGhlbiBzYXkgd2hlcmUgeW91IGFyZS4iLCJEZXNjcmliZSBmcm9tIGdlbmVyYWwgdG8gc3BlY2lmaWM7IHRoZSBwaWN0dXJlIGlzIG1lYW50IHRvIGJlIHN0cmFuZ2UgXHUyMDE0IGp1c3QgZGVzY3JpYmUgd2hhdCB5b3Ugc2VlLCB1c2luZyAnSXQgbG9va3MgbGlrZSAvIGFzIGlmXHUyMDI2Jy4iLCJFbmQgd2l0aCBhIHJlcXVlc3QgZm9yIGFjdGlvbiAoc2VuZCBhIHBhdHJvbCAvIGFzayB3aGVyZSB0byBidXkpLiIsIlRoaXMgaXMgYSBwaG9uZSBjYWxsIHRvIHlvdXIgc2lzdGVyIEthdGhlcmluZSBhYm91dCBhIHN0b3JlIHlvdSBoYXZlIGZvdW5kLiBEZXNjcmliZSB0aGUgYWN0dWFsIHNob3A6IGEgY29sb3VyZnVsIHBldCBzaG9wLiBUaGVyZSBhcmUgd29vZGVuIHNoZWx2ZXMgYWxvbmcgYm90aCB3YWxscyBwYWNrZWQgd2l0aCBwZXQgZm9vZCBhbmQgc3VwcGxpZXMgaW4gYnJpZ2h0IGJveGVzLCBhIGN1cmx5IGJsdWUgcGxheS10dW5uZWwsIGFuZCBmcmFtZWQgcGljdHVyZXMgb2YgYSByYWJiaXQgYW5kIGEgY2Fycm90IG9uIHRoZSB3YWxsLiBBIGZyaWVuZGx5IHNob3BrZWVwZXIgaW4gYSBncmVlbiB2ZXN0IHN0YW5kcyBiZWhpbmQgYSBibHVlIGNvdW50ZXIgd2l0aCBhIGNhc2ggcmVnaXN0ZXIuIFNtYWxsIGNhZ2VzIGhhbmcgZnJvbSB0aGUgY2VpbGluZyB3aXRoIHByaWNlIHRhZ3MsIHRoZXJlIGlzIGEgeWVsbG93IGNhdCB0cmVlIHdpdGggYSBncmV5IGNhdCBwZWVraW5nIG91dCwgYW5kLCBjdXRlc3Qgb2YgYWxsLCBhIGJ1bmNoIG9mIHB1cHBpZXMgYW5kIGtpdHRlbnMgYXJlIHBsYXlpbmcgb24gdGhlIGJsdWUtdGlsZWQgZmxvb3Igd2l0aCBhIGJhbGwgYW5kIGEgYm9uZS4gRW5kIGJ5IGFza2luZyBpZiBzaGUgd2FudHMgdG8gZ28uIl0sInBocmFzZXMiOlsiSSdtIGNhbGxpbmcgdG8gcmVwb3J0XHUyMDI2IiwiUGljdHVyZSB0aGlzOiBcdTIwMjYiLCJJdCBsb29rcyBhcyBpZlx1MjAyNiIsIkNvdWxkIHlvdSBzZW5kXHUyMDI2IC8gRG8geW91IGtub3cgd2hlcmVcdTIwMjY\/Il19LCJzNiI6IkthdGhlcmluZSwgaGksIGl0J3MgbWUhIEkgYW0gYXQgdGhlIG1hbGwsIGFuZCBJIGp1c3QgZm91bmQgYSBzdG9yZSB0aGF0IEkga25vdyB5b3Ugd2lsbCBhYnNvbHV0ZWx5IGxvdmUsIHlvdSBoYXZlIHRvIGNvbWUgc2VlIGl0LiBJdCBpcyBhIHBldCBzaG9wLCBhbmQgaXQgaXMgc28gY3V0ZSBhbmQgY29sb3VyZnVsLiBMZXQgbWUgZGVzY3JpYmUgaXQgZm9yIHlvdS4gV2hlbiB5b3Ugd2FsayBpbiwgdGhlcmUgYXJlIHdvb2RlbiBzaGVsdmVzIG9uIGJvdGggd2FsbHMsIGZ1bGwgb2YgcGV0IGZvb2QgYW5kIHN1cHBsaWVzIGluIGJyaWdodCwgY29sb3VyZnVsIGJveGVzLCBhbmQgdGhlcmUgaXMgYSBiaWcgY3VybHkgYmx1ZSB0dW5uZWwgdG95IG9uIHRoZSBmbG9vci4gT24gdGhlIHdhbGxzLCB0aGVyZSBhcmUgZnVubnkgZnJhbWVkIHBpY3R1cmVzLCBvbmUgb2YgYSByYWJiaXQgYW5kIG9uZSBvZiBhIGNhcnJvdCEgQmVoaW5kIHRoZSBjb3VudGVyLCB3aGljaCBpcyBibHVlLCB0aGVyZSBpcyBhIGZyaWVuZGx5IG1hbiBpbiBhIGdyZWVuIHZlc3QsIGFuZCB0aGVyZSBpcyBhIGNhc2ggcmVnaXN0ZXIuIExvb2sgdXAsIGFuZCB5b3UgY2FuIGV2ZW4gc2VlIHNtYWxsIGNhZ2VzIGhhbmdpbmcgZnJvbSB0aGUgY2VpbGluZyB3aXRoIGxpdHRsZSBwcmljZSB0YWdzLiBJbiB0aGUgbWlkZGxlLCB0aGVyZSBpcyBhIHllbGxvdyBjYXQgdHJlZSwgYW5kIGEgZ3JleSBjYXQgaXMgaGlkaW5nIGluc2lkZSBvbmUgb2YgdGhlIGhvbGVzLCBzbyBjdXRlLiBCdXQgdGhlIGJlc3QgcGFydCwgS2F0aGVyaW5lLCBhcmUgeW91IGxpc3RlbmluZz8gT24gdGhlIGZsb29yIHRoZXJlIGFyZSBsb3RzIG9mIGxpdHRsZSBwdXBwaWVzIGFuZCBraXR0ZW5zIHBsYXlpbmcgdG9nZXRoZXIsIHdpdGggYSBiYWxsIGFuZCBhIGJvbmUgdG95ISBJIGtub3cgaG93IG11Y2ggeW91IGxvdmUgYW5pbWFscy4gU28sIGRvIHlvdSB3YW50IHRvIGNvbWUgaGVyZSB3aXRoIG1lPyBQbGVhc2Ugc2F5IHllcyEiLCJzOSI6IkthdGhlcmluZSwgaXQncyBtZSwgeW91IGhhdmUgdG8gaGVhciBhYm91dCB0aGUgc2hvcCBJIGhhdmUganVzdCBzdHVtYmxlZCBvbiBhdCB0aGUgbWFsbCwgYmVjYXVzZSBpdCBpcyBiYXNpY2FsbHkgeW91ciBkcmVhbSBjb21lIHRydWUuIEl0IGlzIGEgcGV0IHN0b3JlLCBhbmQgaXQgaXMgdGhlIG1vc3QgY2hlZXJmdWwsIGNvbG91cmZ1bCBsaXR0bGUgcGxhY2UuIExldCBtZSB3YWxrIHlvdSB0aHJvdWdoIGl0LiBBcyB5b3Ugc3RlcCBpbiwgYm90aCBzaWRlIHdhbGxzIGFyZSBsaW5lZCB3aXRoIHdhcm0gd29vZGVuIHNoZWx2ZXMgY3JhbW1lZCB3aXRoIHBldCBmb29kIGFuZCBzdXBwbGllcyBpbiBicmlnaHQgYm94ZXMgYW5kIGJhZ3MsIGFuZCB0aGVyZSBpcyBhIGJpZyBjdXJseSBibHVlIHBsYXktdHVubmVsIHNpdHRpbmcgb3V0LCB0aGUga2luZCBjYXRzIGFuZCBmZXJyZXRzIHNjcmFtYmxlIHRocm91Z2guIFRoZSB3YWxscyBhcmUgZG90dGVkIHdpdGggdGhlc2UgY2hhcm1pbmcgZnJhbWVkIHBpY3R1cmVzLCBvbmUgb2YgYSBmbHVmZnkgcmFiYml0IGFuZCwgcmF0aGVyIGNvbWljYWxseSwgb25lIG9mIGEgc2luZ2xlIGNhcnJvdC4gQmVoaW5kIGEgYmx1ZSBzZXJ2aWNlIGNvdW50ZXIgc3RhbmRzIGEgZnJpZW5kbHktbG9va2luZyBzaG9wa2VlcGVyIGluIGEgZ3JlZW4gdmVzdCwgYXJtcyBmb2xkZWQsIHdpdGggYSBjYXNoIHJlZ2lzdGVyIGJlc2lkZSBoaW0uIE5vdyBsb29rIHVwLCBiZWNhdXNlIGV2ZW4gdGhlIGNlaWxpbmcgaXMgZG9pbmcgc29tZXRoaW5nOiB0aGVyZSBhcmUgc21hbGwgY2FnZXMgaGFuZ2luZyBmcm9tIGl0LCBlYWNoIHdpdGggYSBsaXR0bGUgcHJpY2UgdGFnIGRhbmdsaW5nLiBJbiB0aGUgY2VudHJlIG9mIHRoZSBzaG9wIHNpdHMgYSBiaWcgeWVsbG93IGNhdCB0cmVlLCBhbmQgYSBncmV5IGNhdCBoYXMgd2VkZ2VkIGl0c2VsZiBpbnRvIG9uZSBvZiB0aGUgbGl0dGxlIGN1YmJ5aG9sZXMsIHBlZWtpbmcgb3V0IGF0IGV2ZXJ5b25lLiBCdXQgaGVyZSBpcyB0aGUgcGFydCBJIGtub3cgd2lsbCBnZXQgeW91IG91dCBvZiB5b3VyIGNoYWlyOiBzY2F0dGVyZWQgYWNyb3NzIHRoZSBibHVlLXRpbGVkIGZsb29yIGlzIGEgd2hvbGUgZ2FuZyBvZiBwdXBwaWVzIGFuZCBraXR0ZW5zIHR1bWJsaW5nIGFib3V0IGFuZCBwbGF5aW5nLCBiYXR0aW5nIGEgYmFsbCBhcm91bmQgYW5kIGduYXdpbmcgb24gYSBsaXR0bGUgYm9uZSB0b3kuIEl0IGlzIGNvbXBsZXRlIGFkb3JhYmxlIGNoYW9zLCBhbmQgSSBjb3VsZCBub3Qgd2FsayBwYXN0IHdpdGhvdXQgdGhpbmtpbmcgb2YgeW91LiBTbywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogZG8geW91IGZhbmN5IGNvbWluZyBkb3duIHRvIHRoZSBtYWxsIHNvIHdlIGNhbiBnbyBpbiB0b2dldGhlcj8gSSBob25lc3RseSB0aGluayB5b3Ugd2lsbCBuZXZlciB3YW50IHRvIGxlYXZlLiBTYXkgeWVzIGFuZCBJIHdpbGwgd2FpdCBmb3IgeW91IGJ5IHRoZSBlbnRyYW5jZS4ifV0sInVpIjp7InN0YXJ0VGVzdCI6IlN0YXJ0IHRoZSB0ZXN0IiwibWljRW5hYmxlIjoiRW5hYmxlIG1pY3JvcGhvbmUiLCJtaWNSZWFkeSI6Ik1pY3JvcGhvbmUgcmVhZHkiLCJtaWNCbG9ja2VkIjoiTWljcm9waG9uZSBpcyBibG9ja2VkIG9yIHVuYXZhaWxhYmxlIFx1MjAxNCB0aGUgcGFnZSB3aWxsIHJ1biBpbiB0aW1lci1vbmx5IG1vZGUgKHlvdSBjYW4gc3RpbGwgcHJhY3Rpc2Ugc3BlYWtpbmcgYWxvbmcgd2l0aCB0aGUgdGltZXJzKS4iLCJtaWNOb3RlIjoiUmVjb3JkaW5ncyBhcmUgc3RvcmVkIHRlbXBvcmFyaWx5IGluIHlvdXIgYnJvd3NlciBvbmx5IFx1MjAxNCBub3RoaW5nIGlzIHVwbG9hZGVkIHRvIGFueSBzZXJ2ZXIuIFRoZXkgYXJlIGxvc3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhZ2UsIHNvIGRvd25sb2FkIGFueSB5b3Ugd2FudCB0byBrZWVwLiIsInByZXBUaXRsZSI6IlByZXBhcmF0aW9uIFRpbWUiLCJyZWNUaXRsZSI6IlJlY29yZGluZyIsInN0YXJ0UHJlcCI6Ilx1MjViNiBTdGFydCBwcmVwYXJhdGlvbiIsInNraXBQcmVwIjoiU2tpcCBcdTIwMTQgcmVjb3JkIG5vdyBcdTAwYmIiLCJzdG9wUmVjIjoiXHUyNWEwIFN0b3AgcmVjb3JkaW5nIiwicmVjb3JkZWQiOiJSZWNvcmRlZCIsInJlUmVjb3JkIjoiXHUyMWJiIFJlY29yZCBhZ2FpbiIsImRvd25sb2FkIjoiXHUyYjA3IERvd25sb2FkIiwidGltZXJPbmx5IjoiVGltZXItb25seSBtb2RlIChub3QgcmVjb3JkaW5nKSIsInNwZWFrTm93IjoiU1BFQUsgTk9XIFx1MjAxNCByZWNvcmRpbmcgc3RvcHMgYXV0b21hdGljYWxseSB3aGVuIHRpbWUgaXMgdXAiLCJuZXh0IjoiTkVYVCIsImNob29zZUhpbnQiOiJDbGljayB0byBjaG9vc2Ugb25lIG9wdGlvbiBcdTIwMTQgaWYgdGhlIDYwIHNlY29uZHMgcnVuIG91dCwgdGhlIHN5c3RlbSBjaG9vc2VzIGZvciB5b3UiLCJjb25maXJtQ2hvaWNlIjoiQ29uZmlybSBjaG9pY2UgJiBjb250aW51ZSBcdTAwYmIiLCJ5b3VyQ2hvaWNlIjoiWW91ciBDaG9pY2UiLCJ0aXBzVG9nZ2xlIjoiXHVkODNkXHVkY2ExIFRpcHMgJiBzYW1wbGUgYW5zd2VycyAob3BlbiBhZnRlciB5b3UgZmluaXNoIHNwZWFraW5nKSIsInRhYlRpcHMiOiJPdXRsaW5lICYgcGhyYXNlcyIsInRhYlM2IjoiU2FtcGxlIENMQiA2IiwidGFiUzkiOiJTYW1wbGUgQ0xCIDkiLCJ0YWJSdWJyaWMiOiJTZWxmLWFzc2Vzc21lbnQiLCJydWJyaWNOb3RlIjoiTGlzdGVuIHRvIHlvdXIgcmVjb3JkaW5nLCB0aGVuIHJhdGUgeW91cnNlbGYgMVx1MjAxMzUgb24gZWFjaCBjcml0ZXJpb24gKHRoZSA0IG9mZmljaWFsIENFTFBJUCByYXRpbmcgZGltZW5zaW9ucyk6IiwicnVicmljQ3JpdCI6WyJDb250ZW50ICYgQ29oZXJlbmNlIFx1MjAxNCBjb21wbGV0ZSBpZGVhcywgbG9naWNhbCBmbG93IiwiVm9jYWJ1bGFyeSBcdTIwMTQgcmFuZ2UgYW5kIHByZWNpc2lvbiIsIkxpc3RlbmFiaWxpdHkgXHUyMDE0IHByb251bmNpYXRpb24sIGludG9uYXRpb24sIGZsdWVuY3kiLCJUYXNrIEZ1bGZpbGxtZW50IFx1MjAxNCBhZGRyZXNzZXMgdGhlIHRhc2ssIGFwcHJvcHJpYXRlIGxlbmd0aCJdLCJlc3RpbWF0ZSI6IkVzdGltYXRlZCBsZXZlbCAoZm9yIHJlZmVyZW5jZSk6IiwiZXN0RGlzY2xhaW1lciI6IlNlbGYtYXNzZXNzbWVudCBpcyBhIHJvdWdoIGd1aWRlIG9ubHkgXHUyMDE0IGl0IGRvZXMgbm90IHJlcGxhY2UgYW4gb2ZmaWNpYWwgc2NvcmUuIiwidXNlZnVsUGhyYXNlcyI6IlVzZWZ1bCBwaHJhc2VzIiwiZW5kVGl0bGUiOiJTcGVha2luZyB0ZXN0IGNvbXBsZXRlISIsImVuZFN1YiI6IlJlcGxheSBlYWNoIHRhc2ssIGNvbXBhcmUgeW91ciBhbnN3ZXJzIHdpdGggdGhlIENMQiA2IC8gQ0xCIDkgc2FtcGxlcywgdGhlbiByYXRlIHlvdXJzZWxmLiIsImVuZE5vUmVjIjoibm90IHJlY29yZGVkIiwiZW5kUmVkbyI6Ilx1MjFiYiBTdGFydCBvdmVyIiwiZW5kVDIiOiJDb250aW51ZSB0byBQcmFjdGljZSBUZXN0IiwiZW5kSHViIjoiXHUyMTkwIEJhY2sgdG8gQ0VMUElQIEh1YiIsIndhcm11cEJhZGdlIjoiV2FybS11cCBcdTIwMTQgbm90IHNjb3JlZCIsImludHJvTm90ZXMiOlsiQW4gYWNjdXJhdGUgc2ltdWxhdGlvbiBvZiB0aGUgcmVhbCBDRUxQSVAgR2VuZXJhbCBTcGVha2luZyB0ZXN0OiAxIHByYWN0aWNlICh3YXJtLXVwKSB0YXNrICsgOCBzY29yZWQgdGFza3MsIGFib3V0IDIwIG1pbnV0ZXMgaW4gdG90YWwuIiwiRWFjaCB0YXNrOiByZWFkIHRoZSBwcm9tcHQgXHUyMTkyIDxiPlByZXBhcmF0aW9uPC9iPiBjb3VudGRvd24gXHUyMTkyIHN3aXRjaGVzIGF1dG9tYXRpY2FsbHkgdG8gPGI+UmVjb3JkaW5nPC9iPiAod2l0aCBhIGJlZXApIFx1MjE5MiBzdG9wcyB3aGVuIHRpbWUgaXMgdXAuIiwiT24gdGhlIHJlYWwgdGVzdCB5b3UgY2Fubm90IGdvIGJhY2sgdG8gYSBwcmV2aW91cyB0YXNrLiBJbiBwcmFjdGljZSBtb2RlLCB5b3UgY2FuIGNsaWNrIHRoZSBudW1iZXJlZCBjaGlwcyBhYm92ZSB0byByZXZpc2l0IGFueSB0YXNrLiIsIkFmdGVyIHNwZWFraW5nIG9uIGVhY2ggdGFzaywgb3BlbiA8Yj5UaXBzICYgc2FtcGxlIGFuc3dlcnM8L2I+IHRvIGNvbXBhcmUgeW91ciByZXNwb25zZSB3aXRoIHRoZSBDTEIgNiBhbmQgQ0xCIDkgc2FtcGxlcy4iXSwiaGVyb1RhZyI6IkNFTFBJUCBHZW5lcmFsIFx1MjAxNCBTcGVha2luZyIsImhlcm9NZXRhIjpbIjggdGFza3MgKyB3YXJtLXVwIiwifjIwIG1pbnV0ZXMiLCJSZWNvcmQgJiByZXBsYXkiLCJDTEIgNiAvIENMQiA5IHNhbXBsZXMiXX19OwovKiBDRUxQSVAgU3BlYWtpbmcgRW5naW5lIHYxLjAgLSBBbGxFbmdsaXNoNFUgLSB2YW5pbGxhIEpTLCBwcmVmaXggY2xwLXNwayAqLwooZnVuY3Rpb24oKXsKInVzZSBzdHJpY3QiOwp2YXIgRCA9IHdpbmRvdy5DTFBTUEtfREFUQSwgVSA9IEQudWk7CnZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscC1zcGstcm9vdCIpOwppZighcm9vdCkgcmV0dXJuOwoKLyogLS0tLS0tLS0tLSBzdHlsZSAtLS0tLS0tLS0tICovCnZhciBDU1MgPSAiIisKIi5jbHAtc3BrLXdyYXB7bWF4LXdpZHRoOjExNDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAxNHB4IDYwcHg7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMjMyNzJkOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9IisKIi5jbHAtc3BrLXdyYXAgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IisKIi5jbHAtc3BrLWhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCM3ZjFkMWQgMCUsI2I5MWMxYyA1NSUsI2RjMjYyNiAxMDAlKTtib3JkZXItcmFkaXVzOjE4cHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjMwcHggMzBweCAyNnB4O21hcmdpbjoxOHB4IDAgMjBweDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59IisKIi5jbHAtc3BrLWhlcm86YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNjBweDt0b3A6LTYwcHg7d2lkdGg6MjIwcHg7aGVpZ2h0OjIyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDgpfSIrCiIuY2xwLXNway1oZXJvIC50YWd7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4zNSk7cGFkZGluZzozcHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6LjZweDtmb250LXdlaWdodDo2MDB9IisKIi5jbHAtc3BrLWhlcm8gaDF7bWFyZ2luOjEwcHggMCA2cHg7Zm9udC1zaXplOjI3cHg7bGluZS1oZWlnaHQ6MS4yNTtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1oZXJvIC5tZXRhe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi10b3A6MTJweH0iKwoiLmNscC1zcGstaGVybyAubWV0YSBzcGFue2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMjIpO3BhZGRpbmc6NHB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTIuNXB4fSIrCiIuY2xwLXNway1jaGlwc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjdweDttYXJnaW46MCAwIDE0cHh9IisKIi5jbHAtc3BrLWNoaXB7bWluLXdpZHRoOjM4cHg7aGVpZ2h0OjM0cHg7Ym9yZGVyLXJhZGl1czo5cHg7Ym9yZGVyOjEuNXB4IHNvbGlkICNkM2Q4ZGY7YmFja2dyb3VuZDojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2NvbG9yOiM1YjY1NzI7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzowIDEwcHh9IisKIi5jbHAtc3BrLWNoaXAuY3Vye2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1jaGlwLmRvbmV7YmFja2dyb3VuZDojZTZmNGVhO2JvcmRlci1jb2xvcjojN2JjMzk0O2NvbG9yOiMxZTdiM2V9IisKIi5jbHAtc3BrLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgzMCw0MCw2MCwuMDYpfSIrCiIuY2xwLXNway1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtiYWNrZ3JvdW5kOiNlY2VjZWU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Q1ZDVkODtwYWRkaW5nOjlweCAxNHB4O2ZsZXgtd3JhcDp3cmFwfSIrCiIuY2xwLXNway1iYXIgLnR7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzNjNDA0Nn0iKwoiLmNscC1zcGstYmFyIC5te21hcmdpbi1sZWZ0OmF1dG87Zm9udC1zaXplOjEyLjVweDtjb2xvcjojNTU1O3doaXRlLXNwYWNlOm5vd3JhcH0iKwoiLmNscC1zcGstYmFyIC5tIGJ7Y29sb3I6IzIzMjcyZH0iKwoiLmNscC1zcGstbmV4dHtiYWNrZ3JvdW5kOiMxNDY3YzY7Y29sb3I6I2ZmZjtib3JkZXI6MDtib3JkZXItcmFkaXVzOjRweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouOHB4O3BhZGRpbmc6N3B4IDE4cHg7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLW5leHQ6aG92ZXJ7YmFja2dyb3VuZDojMGY1N2FifSIrCiIuY2xwLXNway1ib2R5e3BhZGRpbmc6MThweCAyMHB4IDIycHh9IisKIi5jbHAtc3BrLXByb21wdHtkaXNwbGF5OmZsZXg7Z2FwOjlweDtjb2xvcjojMGI1Mzk0O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTUuNXB4O2xpbmUtaGVpZ2h0OjEuNX0iKwoiLmNscC1zcGstcHJvbXB0IC5pe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiMyYzdjYjA7Y29sb3I6I2ZmZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo4MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MnB4fSIrCiIuY2xwLXNway1sZWFke2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NHB4fSIrCiIuY2xwLXNway1jaG9vc2Uxe21hcmdpbjoxNHB4IDAgMDtwYWRkaW5nOjEycHggMTZweDtiYWNrZ3JvdW5kOiNmNWY3ZmE7Ym9yZGVyOjFweCBzb2xpZCAjZGZlNGVhO2JvcmRlci1yYWRpdXM6OXB4O2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS41NX0iKwoiLmNscC1zcGstY2hvb3NlMSAuZXtmb250LXdlaWdodDo4MDA7Y29sb3I6IzhhMWYxZjtsZXR0ZXItc3BhY2luZzouNHB4fSIrCiIuY2xwLXNway1pbWd7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6NTQwcHg7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNjZmQ0ZGE7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luOjE2cHggMCA0cHh9IisKIi5jbHAtc3BrLW5vdGV7Zm9udC1zaXplOjEycHg7Y29sb3I6IzhhOTI5YzttYXJnaW4tdG9wOjZweH0iKwoiLmNscC1zcGstdGltZXJyb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjIwcHggMCA2cHh9IisKIi5jbHAtc3BrLXRpbWVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE2cHg7YmFja2dyb3VuZDojZTllY2VmO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNnB4IDI2cHg7bWluLXdpZHRoOjMwMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9IisKIi5jbHAtc3BrLXRpbWVyIC5pY3t3aWR0aDo0NHB4O2hlaWdodDo0NHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2Y4ZjlmYTtib3JkZXI6MXB4IHNvbGlkICNkNmRhZGU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToyMnB4fSIrCiIuY2xwLXNway10aW1lciAubGJ7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMzMzM4M2Y7Zm9udC1zaXplOjE1cHh9IisKIi5jbHAtc3BrLXRpbWVyIC5ue2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMGI1N2QwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtczttaW4td2lkdGg6NTJweDt0ZXh0LWFsaWduOmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIucmVje2JhY2tncm91bmQ6I2ZkZWNlYjtib3JkZXItY29sb3I6I2YzYjZiM30iKwoiLmNscC1zcGstdGltZXIucmVjIC5ue2NvbG9yOiNjNjI4Mjh9IisKIi5jbHAtc3BrLXRpbWVyLnJlYyAuaWN7YmFja2dyb3VuZDojZmZmO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway1kb3R7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiNlNTM5MzU7ZGlzcGxheTppbmxpbmUtYmxvY2s7YW5pbWF0aW9uOmNscGJsaW5rIDFzIGluZmluaXRlfSIrCiJAa2V5ZnJhbWVzIGNscGJsaW5rezAlLDEwMCV7b3BhY2l0eToxfTUwJXtvcGFjaXR5Oi4yNX19IisKIi5jbHAtc3BrLWN0cntkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW46MTRweCAwIDJweH0iKwoiLmNscC1zcGstYnRue2JvcmRlcjoxLjVweCBzb2xpZCAjYzljZmQ2O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMzMzODNmO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6OXB4IDE4cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWJ0bjpob3Zlcntib3JkZXItY29sb3I6IzlhYTNhZH0iKwoiLmNscC1zcGstYnRuLnByaXtiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstYnRuLnByaTpob3ZlcntiYWNrZ3JvdW5kOiMwYTRjYjV9IisKIi5jbHAtc3BrLWJ0bi53YXJue2JhY2tncm91bmQ6I2M2MjgyODtib3JkZXItY29sb3I6I2M2MjgyODtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1zcGVha25vd3t0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojYzYyODI4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjhweDtsZXR0ZXItc3BhY2luZzouM3B4fSIrCiIuY2xwLXNway1yZXZpZXd7bWFyZ2luOjE2cHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmMmY5ZjM7Ym9yZGVyOjFweCBzb2xpZCAjYmZlM2M2O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMThweH0iKwoiLmNscC1zcGstcmV2aWV3IC5va3tjb2xvcjojMWU3YjNlO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTQuNXB4fSIrCiIuY2xwLXNway1yZXZpZXcgYXVkaW97d2lkdGg6MTAwJTttYXJnaW46MTBweCAwIDhweH0iKwoiLmNscC1zcGstbWlje21hcmdpbjoxMnB4IGF1dG8gMDttYXgtd2lkdGg6NjQwcHg7YmFja2dyb3VuZDojZmZmOGU2O2JvcmRlcjoxcHggc29saWQgI2VjZDlhMDtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzdhNWIxMn0iKwoiLmNscC1zcGstb3B0c3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHg7bWFyZ2luOjE4cHggMCA0cHh9IisKIi5jbHAtc3BrLWNhcmR7Ym9yZGVyOjJweCBzb2xpZCAjZDVkYWUwO2JvcmRlci1yYWRpdXM6MTFweDtwYWRkaW5nOjEzcHggMTVweCAxNXB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzfSIrCiIuY2xwLXNway1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjojOGZiNGU4fSIrCiIuY2xwLXNway1jYXJkLnNlbHtib3JkZXItY29sb3I6IzJlOWU0ZjtiYWNrZ3JvdW5kOiNlZWY5ZjB9IisKIi5jbHAtc3BrLWNhcmQucGxhaW57Y3Vyc29yOmRlZmF1bHR9IisKIi5jbHAtc3BrLWNhcmQgLmhke3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM2Yjc0ODA7bGV0dGVyLXNwYWNpbmc6LjNweDttYXJnaW4tYm90dG9tOjhweH0iKwoiLmNscC1zcGstY2FyZCBpbWd7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjdweDtib3JkZXI6MXB4IHNvbGlkICNlMmU2ZWF9IisKIi5jbHAtc3BrLWNhcmQgLnR0e2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTVweDttYXJnaW46MTBweCAwIDZweDtjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1jYXJkIHVse21hcmdpbjowO3BhZGRpbmctbGVmdDoxOHB4O2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjojM2M0MzRifSIrCiIuY2xwLXNway1jYXJkIC5waWNre21hcmdpbi10b3A6MTBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo4MDA7Y29sb3I6IzJlOWU0Zjtmb250LXNpemU6MTNweDttaW4taGVpZ2h0OjE4cHh9IisKIi5jbHAtc3BrLWhpbnR7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzZiNzQ4MDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjEwcHh9IisKIi5jbHAtc3BrLWFjY3ttYXJnaW4tdG9wOjIycHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkZGUzO2JvcmRlci1yYWRpdXM6MTFweDtvdmVyZmxvdzpoaWRkZW59IisKIi5jbHAtc3BrLWFjYz5idXR0b257d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDojZjZmN2Y5O2JvcmRlcjowO3BhZGRpbmc6MTJweCAxNnB4O2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTRweDtjb2xvcjojM2M0MDQ2O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjE0cHggMTZweCAxOHB4O2JhY2tncm91bmQ6I2ZmZn0iKwoiLmNscC1zcGstYWNjLm9wZW4gLmNscC1zcGstYWNjYm9keXtkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJze2Rpc3BsYXk6ZmxleDtnYXA6NnB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTJweH0iKwoiLmNscC1zcGstdGFie2JvcmRlcjoxLjVweCBzb2xpZCAjYzljZmQ2O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NnB4IDE1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzRhNTI1Y30iKwoiLmNscC1zcGstdGFiLm9ue2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway10YWJwYW5le2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjV9IisKIi5jbHAtc3BrLXRhYnBhbmUub257ZGlzcGxheTpibG9ja30iKwoiLmNscC1zcGstdGFicGFuZSB1bHtwYWRkaW5nLWxlZnQ6MjBweDttYXJnaW46OHB4IDB9IisKIi5jbHAtc3BrLXRhYnBhbmUgbGl7bWFyZ2luOjVweCAwfSIrCiIuY2xwLXNway1zYW1wbGV7YmFja2dyb3VuZDojZjhmOWZiO2JvcmRlcjoxcHggc29saWQgI2UzZTdlYztib3JkZXItbGVmdDo0cHggc29saWQgIzBiNTdkMDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEzcHggMTZweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0iKwoiLmNscC1zcGstc2FtcGxlLnM2e2JvcmRlci1sZWZ0LWNvbG9yOiNlOGExM2N9IisKIi5jbHAtc3BrLXBocntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjdweDttYXJnaW4tdG9wOjEwcHh9IisKIi5jbHAtc3BrLXBociBzcGFue2JhY2tncm91bmQ6I2VlZjNmYjtib3JkZXI6MXB4IHNvbGlkICNjZGRkZjU7Y29sb3I6IzE3NGE5Yztib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NHB4IDEycHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDB9IisKIi5jbHAtc3BrLXJ1Yntib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1ydWIgdGR7cGFkZGluZzo3cHggNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWYwZjN9IisKIi5jbHAtc3BrLXN0YXJ7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE5cHg7Y29sb3I6I2M5Y2ZkNjtwYWRkaW5nOjAgMXB4O3VzZXItc2VsZWN0Om5vbmV9IisKIi5jbHAtc3BrLXN0YXIub257Y29sb3I6I2YwYTcxYn0iKwoiLmNscC1zcGstZXN0e21hcmdpbi10b3A6MTBweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstYmFkZ2V7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2U4ZDQ4Yjtjb2xvcjojN2E1YjEyO2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDEycHg7bWFyZ2luLWJvdHRvbToxMHB4fSIrCiIuY2xwLXNway1pbnRybyB1bHtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNztwYWRkaW5nLWxlZnQ6MjBweH0iKwoiLmNscC1zcGstaW50cm8gbGl7bWFyZ2luOjdweCAwfSIrCiIuY2xwLXNway1taWNyb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtmbGV4LXdyYXA6d3JhcDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjFweCBzb2xpZCAjZTBlNGU5O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEzcHggMTZweDttYXJnaW46MTZweCAwfSIrCiIuY2xwLXNway1taWNzdHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweH0iKwoiLmNscC1zcGstbWljc3Qub2t7Y29sb3I6IzFlN2IzZX0uY2xwLXNway1taWNzdC5iYWR7Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstZW5kIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNHB4fSIrCiIuY2xwLXNway1lbmQgdGQsLmNscC1zcGstZW5kIHRoe3BhZGRpbmc6OXB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWNlZmYyO3RleHQtYWxpZ246bGVmdH0iKwoiLmNscC1zcGstZW5kIGF1ZGlve2hlaWdodDozNHB4O21heC13aWR0aDoyMzBweH0iKwoiQG1lZGlhKG1heC13aWR0aDo3MDBweCl7LmNscC1zcGstb3B0c3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5jbHAtc3BrLWJhciAubXtvcmRlcjozO21hcmdpbi1sZWZ0OjA7d2lkdGg6MTAwJX0uY2xwLXNway1oZXJvIGgxe2ZvbnQtc2l6ZToyMnB4fS5jbHAtc3BrLWJvZHl7cGFkZGluZzoxNHB4IDEycHggMThweH19IjsKdmFyIHN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsgc3QudGV4dENvbnRlbnQgPSBDU1M7IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpOwoKLyogLS0tLS0tLS0tLSBzdGF0ZSAtLS0tLS0tLS0tICovCnZhciBTID0gewogIGN1cjogLTEsICAgICAgICAgICAgLyogLTEgaW50cm8sIDAuLjggdGFza3MsIDk5IGVuZCAqLwogIG1pY1N0YXRlOiAiaWRsZSIsICAgLyogaWRsZXxva3xiYWQgKi8KICBzdHJlYW06IG51bGwsIHJlY29yZGVyOiBudWxsLCBjaHVua3M6IFtdLAogIHRpbWVyOiBudWxsLCBwaGFzZToge30sIHQ1Y2hvaWNlOiB7fSwgcmVjczoge30sIHJ1YnJpYzoge30sCiAgbWltZTogIiIsIGV4dDogIndlYm0iCn07CkQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0KXsgUy5waGFzZVt0LmtdID0gdC5waGFzZWQgPyAiY2hvb3NlLWlkbGUiIDogImlkbGUiOyB9KTsKCmZ1bmN0aW9uIHBpY2tNaW1lKCl7CiAgaWYoIXdpbmRvdy5NZWRpYVJlY29yZGVyKSByZXR1cm4gbnVsbDsKICB2YXIgY2FuZHMgPSBbWyJhdWRpby93ZWJtO2NvZGVjcz1vcHVzIiwid2VibSJdLFsiYXVkaW8vd2VibSIsIndlYm0iXSxbImF1ZGlvL21wNCIsIm00YSJdLFsiYXVkaW8vb2dnO2NvZGVjcz1vcHVzIiwib2dnIl1dOwogIGZvcih2YXIgaT0wO2k8Y2FuZHMubGVuZ3RoO2krKyl7IHRyeXsgaWYoTWVkaWFSZWNvcmRlci5pc1R5cGVTdXBwb3J0ZWQoY2FuZHNbaV1bMF0pKSByZXR1cm4gY2FuZHNbaV07IH1jYXRjaChlKXt9IH0KICByZXR1cm4gWyIiLCJ3ZWJtIl07Cn0KZnVuY3Rpb24gZW5zdXJlTWljKGNiKXsKICBpZihTLm1pY1N0YXRlPT09Im9rIikgcmV0dXJuIGNiKHRydWUpOwogIGlmKFMubWljU3RhdGU9PT0iYmFkIikgcmV0dXJuIGNiKGZhbHNlKTsKICBpZighbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyB8fCAhbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgfHwgIXdpbmRvdy5NZWRpYVJlY29yZGVyKXsgUy5taWNTdGF0ZT0iYmFkIjsgcmV0dXJuIGNiKGZhbHNlKTsgfQogIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihmdW5jdGlvbihzdHJlYW0pewogICAgUy5zdHJlYW0gPSBzdHJlYW07IHZhciBtID0gcGlja01pbWUoKTsgUy5taW1lID0gbVswXTsgUy5leHQgPSBtWzFdOyBTLm1pY1N0YXRlPSJvayI7IGNiKHRydWUpOwogIH0pLmNhdGNoKGZ1bmN0aW9uKCl7IFMubWljU3RhdGU9ImJhZCI7IGNiKGZhbHNlKTsgfSk7Cn0KZnVuY3Rpb24gYmVlcChuKXsKICB0cnl7CiAgICB2YXIgY3R4ID0gd2luZG93Ll9fY2xwQUMgPSB3aW5kb3cuX19jbHBBQyB8fCBuZXcgKHdpbmRvdy5BdWRpb0NvbnRleHR8fHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQpKCk7CiAgICB2YXIgdDAgPSBjdHguY3VycmVudFRpbWU7CiAgICBmb3IodmFyIGk9MDtpPG47aSsrKXsKICAgICAgdmFyIG8gPSBjdHguY3JlYXRlT3NjaWxsYXRvcigpLCBnID0gY3R4LmNyZWF0ZUdhaW4oKTsKICAgICAgby5mcmVxdWVuY3kudmFsdWUgPSA4ODA7IG8uY29ubmVjdChnKTsgZy5jb25uZWN0KGN0eC5kZXN0aW5hdGlvbik7CiAgICAgIGcuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLjAwMDEsdDAraSowLjI1KTsgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4xOCx0MCtpKjAuMjUrMC4wMik7CiAgICAgIGcuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUrMC4xOCk7CiAgICAgIG8uc3RhcnQodDAraSowLjI1KTsgby5zdG9wKHQwK2kqMC4yNSswLjIpOwogICAgfQogIH1jYXRjaChlKXt9Cn0KZnVuY3Rpb24gc3RvcFRpbWVyKCl7IGlmKFMudGltZXIpeyBjbGVhckludGVydmFsKFMudGltZXIpOyBTLnRpbWVyPW51bGw7IH0gfQpmdW5jdGlvbiBjb3VudGRvd24oc2Vjcywgb25UaWNrLCBvbkVuZCl7CiAgc3RvcFRpbWVyKCk7CiAgdmFyIGVuZCA9IERhdGUubm93KCkgKyBzZWNzKjEwMDA7CiAgb25UaWNrKHNlY3MpOwogIFMudGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgdmFyIGxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChlbmQtRGF0ZS5ub3coKSkvMTAwMCkpOwogICAgb25UaWNrKGxlZnQpOwogICAgaWYobGVmdDw9MCl7IHN0b3BUaW1lcigpOyBvbkVuZCgpOyB9CiAgfSwgMjUwKTsKfQpmdW5jdGlvbiBzdG9wUmVjb3JkaW5nKCl7CiAgaWYoUy5yZWNvcmRlciAmJiBTLnJlY29yZGVyLnN0YXRlIT09ImluYWN0aXZlIil7IHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXt9IH0KICBTLnJlY29yZGVyID0gbnVsbDsKfQpmdW5jdGlvbiBsZWF2ZUNsZWFudXAoKXsgc3RvcFRpbWVyKCk7IHN0b3BSZWNvcmRpbmcoKTsgfQoKLyogLS0tLS0tLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZWwodGFnLCBjbHMsIGh0bWwpeyB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7IGlmKGNscyllLmNsYXNzTmFtZT1jbHM7IGlmKGh0bWwhPW51bGwpZS5pbm5lckhUTUw9aHRtbDsgcmV0dXJuIGU7IH0KZnVuY3Rpb24gZm10TWV0YSh0KXsKICBpZih0LnBoYXNlZCkgcmV0dXJuICIiOwogIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5wcmVwKyIgc2Vjb25kczwvYj4gJm5ic3A7UmVjb3JkaW5nOiA8Yj4iK3QucmVjKyIgc2Vjb25kczwvYj4iOwp9CmZ1bmN0aW9uIHRhc2tUaXRsZSh0KXsKICBpZih0Lndhcm11cCkgcmV0dXJuIEQuaGVhZGVyKyIgLSBTcGVha2luZyBQcmFjdGljZSBUYXNrIjsKICByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFRhc2sgIit0Lm51bSsiOiAiK3QudHlwZUVuOwp9CmZ1bmN0aW9uIGVzdFRleHQoYXZnKXsKICBpZihhdmc+PTQuNSkgcmV0dXJuICJDTEIgOSsiOyBpZihhdmc+PTMuNSkgcmV0dXJuICJDTEIgN1x1MjAxMzgiOyBpZihhdmc+PTIuNSkgcmV0dXJuICJDTEIgNVx1MjAxMzYiOyByZXR1cm4gIkNMQiA0IG9yIGJlbG93IjsKfQoKLyogLS0tLS0tLS0tLSByZW5kZXIgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXIoKXsKICBsZWF2ZUNsZWFudXAoKTsKICByb290LmlubmVySFRNTCA9ICIiOwogIHZhciB3cmFwID0gZWwoImRpdiIsImNscC1zcGstd3JhcCIpOwogIHdyYXAuYXBwZW5kQ2hpbGQoaGVybygpKTsKICBpZihTLmN1cj49MCAmJiBTLmN1cjxELnRhc2tzLmxlbmd0aCkgd3JhcC5hcHBlbmRDaGlsZChjaGlwcygpKTsKICBpZihTLmN1cj09PS0xKSB3cmFwLmFwcGVuZENoaWxkKGludHJvKCkpOwogIGVsc2UgaWYoUy5jdXI9PT05OSkgd3JhcC5hcHBlbmRDaGlsZChlbmRTY3JlZW4oKSk7CiAgZWxzZSB3cmFwLmFwcGVuZENoaWxkKHRhc2tQYW5lbChELnRhc2tzW1MuY3VyXSkpOwogIHJvb3QuYXBwZW5kQ2hpbGQod3JhcCk7CiAgdHJ5eyB3aW5kb3cuc2Nyb2xsVG8oe3RvcDogcm9vdC5vZmZzZXRUb3AtMTAsIGJlaGF2aW9yOiJzbW9vdGgifSk7IH1jYXRjaChlKXt9Cn0KZnVuY3Rpb24gaGVybygpewogIHZhciBoID0gZWwoImRpdiIsImNscC1zcGstaGVybyIpOwogIGguYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0YWciLFUuaGVyb1RhZykpOwogIGguYXBwZW5kQ2hpbGQoZWwoImgxIixudWxsLEQudGl0bGUuc3BsaXQoIlx1MjAxNCIpWzFdID8gIlNwZWFraW5nIFx1MjAxNCIrRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gOiBELnRpdGxlKSk7CiAgdmFyIG0gPSBlbCgiZGl2IiwibWV0YSIpOwogIFUuaGVyb01ldGEuZm9yRWFjaChmdW5jdGlvbih4KXsgbS5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogIGguYXBwZW5kQ2hpbGQobSk7CiAgcmV0dXJuIGg7Cn0KZnVuY3Rpb24gY2hpcHMoKXsKICB2YXIgYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWNoaXBzIik7CiAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7CiAgICB2YXIgYiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWNoaXAiKyhpPT09Uy5jdXI\/IiBjdXIiOihTLnJlY3NbdC5rXT8iIGRvbmUiOiIiKSksIHQud2FybXVwPyJXIjpTdHJpbmcodC5udW0pKTsKICAgIGIudGl0bGUgPSB0LnR5cGVFbjsKICAgIGIub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgYy5hcHBlbmRDaGlsZChiKTsKICB9KTsKICB2YXIgZSA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWNoaXAiKyhTLmN1cj09PTk5PyIgY3VyIjoiIiksIlx1ZDgzY1x1ZGZjMSIpOwogIGUudGl0bGUgPSAiRmluaXNoIjsgZS5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9OTk7IHJlbmRlcigpOyB9OwogIGMuYXBwZW5kQ2hpbGQoZSk7CiAgcmV0dXJuIGM7Cn0KZnVuY3Rpb24gaW50cm8oKXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIGNscC1zcGstaW50cm8iKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsRC5oZWFkZXIrIiAtIFNwZWFraW5nIikpOwogIHZhciBueCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLW5leHQiLFUubmV4dCk7IG54LnN0eWxlLm1hcmdpbkxlZnQ9ImF1dG8iOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICB2YXIgcHIgPSBlbCgiZGl2IiwiY2xwLXNway1wcm9tcHQiKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsImkiLCJpIikpOyBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCwiU3BlYWtpbmcgVGVzdCBJbnN0cnVjdGlvbnMiKSk7CiAgYi5hcHBlbmRDaGlsZChwcik7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgVS5pbnRyb05vdGVzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGIuYXBwZW5kQ2hpbGQodWwpOwogIHZhciBtaWNyb3cgPSBlbCgiZGl2IiwiY2xwLXNway1taWNyb3ciKTsKICB2YXIgbWJ0biA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUubWljRW5hYmxlKTsKICB2YXIgbXN0ID0gZWwoInNwYW4iLCJjbHAtc3BrLW1pY3N0IiwiIik7CiAgbWJ0bi5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgIG1idG4uZGlzYWJsZWQgPSB0cnVlOwogICAgZW5zdXJlTWljKGZ1bmN0aW9uKG9rKXsKICAgICAgbXN0LmNsYXNzTmFtZSA9ICJjbHAtc3BrLW1pY3N0ICIrKG9rPyJvayI6ImJhZCIpOwogICAgICBtc3QuaW5uZXJIVE1MID0gb2sgPyAiXHUyNzE0ICIrVS5taWNSZWFkeSA6ICJcdTI3MTYgIitVLm1pY0Jsb2NrZWQ7CiAgICAgIGlmKCFvaykgbWJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgfSk7CiAgfTsKICBtaWNyb3cuYXBwZW5kQ2hpbGQobWJ0bik7IG1pY3Jvdy5hcHBlbmRDaGlsZChtc3QpOwogIGIuYXBwZW5kQ2hpbGQobWljcm93KTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUubWljTm90ZSkpOwogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICB2YXIgZ28gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0VGVzdCsiIFx1MjViNiIpOwogIGdvLnN0eWxlLmZvbnRTaXplPSIxNXB4IjsgZ28uc3R5bGUucGFkZGluZz0iMTJweCAyNnB4IjsKICBnby5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9MDsgcmVuZGVyKCk7IH07CiAgY3RyLmFwcGVuZENoaWxkKGdvKTsKICBiLmFwcGVuZENoaWxkKGN0cik7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogLS0tLS0tLS0tLSB0YXNrIHBhbmVsIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gdGFza1BhbmVsKHQpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwiKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsdGFza1RpdGxlKHQpKSk7CiAgdmFyIG1ldGEgPSBlbCgic3BhbiIsIm0iLCB0LnBoYXNlZCA\/IHBoYXNlZE1ldGEodCkgOiBmbXRNZXRhKHQpKTsKICBiYXIuYXBwZW5kQ2hpbGQobWV0YSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsKICBueC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXIgPSAoUy5jdXIrMSA8IEQudGFza3MubGVuZ3RoKSA\/IFMuY3VyKzEgOiA5OTsgcmVuZGVyKCk7IH07CiAgYmFyLmFwcGVuZENoaWxkKG54KTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgaWYodC53YXJtdXApIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstYmFkZ2UiLFUud2FybXVwQmFkZ2UpKTsKICBpZih0LnBoYXNlZCkgcmVuZGVyVDUodCxiLG1ldGEpOwogIGVsc2UgcmVuZGVyU3RkKHQsYik7CiAgaWYodC50aXBzKSBiLmFwcGVuZENoaWxkKGFjY29yZGlvbih0KSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQpmdW5jdGlvbiBwaGFzZWRNZXRhKHQpewogIHZhciBwaCA9IFMucGhhc2VbdC5rXXx8IiI7CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKSByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3QuY2hvb3NlLnByZXArIiBzZWNvbmRzPC9iPiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnNwZWFrLnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5zcGVhay5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gcHJvbXB0Um93KHRleHQsIGxlYWQpewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgaWYobGVhZCl7IGJveC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1sZWFkIixsZWFkKSk7IH0KICB2YXIgcHIgPSBlbCgiZGl2IiwiY2xwLXNway1wcm9tcHQiKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsImkiLCJpIikpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHRleHQpKTsKICBib3guYXBwZW5kQ2hpbGQocHIpOwogIHJldHVybiBib3g7Cn0KZnVuY3Rpb24gcmVuZGVyU3RkKHQsYil7CiAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5wcm9tcHQsIHQucHJvbXB0TGVhZCkpOwogIGlmKHQuY2hvb3NlT25lKXsKICAgIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hvb3NlMSIsIjxkaXYgY2xhc3M9J2UnPkNob29zZSBPTkU6PC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5FSVRIRVI8L2Rpdj48ZGl2PiIrdC5jaG9vc2VPbmVbMF0rIjwvZGl2PjxkaXYgY2xhc3M9J2UnIHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+T1I8L2Rpdj48ZGl2PiIrdC5jaG9vc2VPbmVbMV0rIjwvZGl2PiIpOwogICAgYi5hcHBlbmRDaGlsZChjKTsKICB9CiAgaWYodC5pbWcgJiYgRC5pbWdzW3QuaW1nXSl7CiAgICB2YXIgaW0gPSBlbCgiaW1nIiwiY2xwLXNway1pbWciKTsgaW0uc3JjID0gRC5pbWdzW3QuaW1nXTsgaW0uYWx0ID0gdC50eXBlRW47CiAgICBiLmFwcGVuZENoaWxkKGltKTsKICB9CiAgYi5hcHBlbmRDaGlsZCh0aW1lckJsb2NrKHQuaywgdC5wcmVwLCB0LnJlYywgInQiKSk7Cn0KZnVuY3Rpb24gcmVuZGVyVDUodCxiLG1ldGFFbCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdOwogIGlmKHBoLmluZGV4T2YoImNob29zZSIpPT09MCl7CiAgICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LmNob29zZS5zaXR1YXRpb24pKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsdC5jaG9vc2Uubm90ZSkpOwogICAgdmFyIGdyaWQgPSBlbCgiZGl2IiwiY2xwLXNway1vcHRzIik7CiAgICB0LmNob29zZS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24obyxpZHgpewogICAgICB2YXIgY2FyZCA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQiKyhTLnQ1Y2hvaWNlW3Qua109PT1pZHg\/IiBzZWwiOiIiKSk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKG8pKTsKICAgICAgdmFyIHBrID0gZWwoImRpdiIsInBpY2siLCBTLnQ1Y2hvaWNlW3Qua109PT1pZHggPyAiXHUyNzE0IFNlbGVjdGVkIiA6ICIiKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChwayk7CiAgICAgIGNhcmQub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgUy50NWNob2ljZVt0LmtdID0gaWR4OwogICAgICAgIGdyaWQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstY2FyZCIpLmZvckVhY2goZnVuY3Rpb24oY2Qsail7CiAgICAgICAgICBjZC5jbGFzc05hbWUgPSAiY2xwLXNway1jYXJkIisoaj09PWlkeD8iIHNlbCI6IiIpOwogICAgICAgICAgY2QucXVlcnlTZWxlY3RvcigiLnBpY2siKS50ZXh0Q29udGVudCA9IChqPT09aWR4KT8iXHUyNzE0IFNlbGVjdGVkIjoiIjsKICAgICAgICB9KTsKICAgICAgICBjYnRuLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKICAgICAgfTsKICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjYXJkKTsKICAgIH0pOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstaGludCIsVS5jaG9vc2VIaW50KSk7CiAgICAvKiBjb3VudGRvd24gZm9yIGNob29zZSBwaGFzZSAqLwogICAgdmFyIHRyb3cgPSBlbCgiZGl2IiwiY2xwLXNway10aW1lcnJvdyIpOwogICAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICAgIHRtLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaWMiLCJcdWQ4M2RcdWRkNTIiKSk7CiAgICB2YXIgbGIgPSBlbCgiZGl2Iik7IGxiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJsYiIsVS5wcmVwVGl0bGUpKTsKICAgIHRtLmFwcGVuZENoaWxkKGxiKTsKICAgIHZhciBuID0gZWwoInNwYW4iLCJuIixTdHJpbmcodC5jaG9vc2UucHJlcCkpOwogICAgdG0uYXBwZW5kQ2hpbGQobik7CiAgICB0cm93LmFwcGVuZENoaWxkKHRtKTsKICAgIGIuYXBwZW5kQ2hpbGQodHJvdyk7CiAgICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgICB2YXIgc3RhcnQgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0UHJlcCk7CiAgICB2YXIgY2J0biA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5jb25maXJtQ2hvaWNlKTsKICAgIGNidG4uc3R5bGUuZGlzcGxheSA9IChTLnQ1Y2hvaWNlW3Qua10hPW51bGwpPyJpbmxpbmUtYmxvY2siOiJub25lIjsKICAgIHZhciBnb1NwZWFrID0gZnVuY3Rpb24oKXsKICAgICAgc3RvcFRpbWVyKCk7CiAgICAgIGlmKFMudDVjaG9pY2VbdC5rXT09bnVsbCkgUy50NWNob2ljZVt0LmtdID0gMDsKICAgICAgUy5waGFzZVt0LmtdID0gInNwZWFrIjsKICAgICAgcmVuZGVyKCk7CiAgICB9OwogICAgc3RhcnQub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgUy5waGFzZVt0LmtdID0gImNob29zZS1ydW4iOwogICAgICBjb3VudGRvd24odC5jaG9vc2UucHJlcCwgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGdvU3BlYWspOwogICAgfTsKICAgIGNidG4ub25jbGljayA9IGdvU3BlYWs7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOyBjdHIuYXBwZW5kQ2hpbGQoY2J0bik7CiAgICBiLmFwcGVuZENoaWxkKGN0cik7CiAgICBpZihTLnBoYXNlW3Qua109PT0iY2hvb3NlLXJ1biIpewogICAgICBzdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudD1TdHJpbmcobGVmdCk7IH0sIGdvU3BlYWspOwogICAgfQogIH0gZWxzZSB7CiAgICBtZXRhRWwuaW5uZXJIVE1MID0gcGhhc2VkTWV0YSh0KTsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuc3BlYWsucHJvbXB0KSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHZhciBvdGhlciA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQgcGxhaW4iKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJoZCIsdC5zcGVhay5vdGhlckxhYmVsKSk7CiAgICBvdGhlci5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHModC5zcGVhay5vdGhlcikpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChvdGhlcik7CiAgICB2YXIgY2hvc2VuID0gdC5jaG9vc2Uub3B0aW9uc1tTLnQ1Y2hvaWNlW3Qua10hPW51bGwgPyBTLnQ1Y2hvaWNlW3Qua10gOiAwXTsKICAgIHZhciBtaW5lID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiBzZWwiKTsKICAgIG1pbmUuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIixVLnlvdXJDaG9pY2UpKTsKICAgIG1pbmUuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKGNob3NlbikpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChtaW5lKTsKICAgIGIuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnNwZWFrLnByZXAsIHQuc3BlYWsucmVjLCAidDVzIikpOwogIH0KfQpmdW5jdGlvbiBpbWdUaXRsZUJ1bGxldHMobyl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihvLmltZyAmJiBELmltZ3Nbby5pbWddKXsgdmFyIGltID0gZWwoImltZyIpOyBpbS5zcmMgPSBELmltZ3Nbby5pbWddOyBpbS5hbHQgPSBvLnRpdGxlOyBib3guYXBwZW5kQ2hpbGQoaW0pOyB9CiAgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJ0dCIsby50aXRsZSkpOwogIHZhciB1bCA9IGVsKCJ1bCIpOwogIG8uYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICBib3guYXBwZW5kQ2hpbGQodWwpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gcHJlcC9yZWNvcmQgYmxvY2sgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0aW1lckJsb2NrKGtleSwgcHJlcFNlY3MsIHJlY1NlY3MsIG1vZGUpewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgdmFyIHRyb3cgPSBlbCgiZGl2IiwiY2xwLXNway10aW1lcnJvdyIpOwogIHZhciB0bSA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVyIik7CiAgdmFyIGljID0gZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpOwogIHZhciBsYiA9IGVsKCJkaXYiKTsgdmFyIGxidCA9IGVsKCJkaXYiLCJsYiIsVS5wcmVwVGl0bGUpOyBsYi5hcHBlbmRDaGlsZChsYnQpOwogIHZhciBuID0gZWwoInNwYW4iLCJuIixTdHJpbmcocHJlcFNlY3MpKTsKICB0bS5hcHBlbmRDaGlsZChpYyk7IHRtLmFwcGVuZENoaWxkKGxiKTsgdG0uYXBwZW5kQ2hpbGQobik7CiAgdHJvdy5hcHBlbmRDaGlsZCh0bSk7IGJveC5hcHBlbmRDaGlsZCh0cm93KTsKICB2YXIgc3BlYWtub3cgPSBlbCgiZGl2IiwiY2xwLXNway1zcGVha25vdyIsIiIpOyBib3guYXBwZW5kQ2hpbGQoc3BlYWtub3cpOwogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsgYm94LmFwcGVuZENoaWxkKGN0cik7CiAgdmFyIHJldmlld1Nsb3QgPSBlbCgiZGl2Iik7IGJveC5hcHBlbmRDaGlsZChyZXZpZXdTbG90KTsKICB2YXIgbWljbm90ZSA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKG1pY25vdGUpOwoKICBmdW5jdGlvbiBzaG93SWRsZSgpewogICAgY3RyLmlubmVySFRNTCA9ICIiOyBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgdG0uY2xhc3NOYW1lID0gImNscC1zcGstdGltZXIiOyBsYnQudGV4dENvbnRlbnQgPSBVLnByZXBUaXRsZTsgaWMudGV4dENvbnRlbnQgPSAiXHVkODNkXHVkZDUyIjsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhwcmVwU2Vjcyk7CiAgICB2YXIgc3RhcnQgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0UHJlcCk7CiAgICBzdGFydC5vbmNsaWNrID0gc3RhcnRQcmVwOwogICAgY3RyLmFwcGVuZENoaWxkKHN0YXJ0KTsKICAgIGlmKFMucmVjc1trZXldKSBzaG93UmV2aWV3KGZhbHNlKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRQcmVwKCl7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24oKXsKICAgICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgICB2YXIgc2tpcCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5za2lwUHJlcCk7CiAgICAgIHNraXAub25jbGljayA9IGZ1bmN0aW9uKCl7IHN0b3BUaW1lcigpOyBzdGFydFJlYygpOyB9OwogICAgICBjdHIuYXBwZW5kQ2hpbGQoc2tpcCk7CiAgICAgIGNvdW50ZG93bihwcmVwU2VjcywgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGZ1bmN0aW9uKCl7IHN0YXJ0UmVjKCk7IH0pOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UmVjKCl7CiAgICBiZWVwKDIpOwogICAgdG0uY2xhc3NOYW1lID0gImNscC1zcGstdGltZXIgcmVjIjsKICAgIGljLmlubmVySFRNTCA9ICI8c3BhbiBjbGFzcz0nY2xwLXNway1kb3QnPjwvc3Bhbj4iOwogICAgbi50ZXh0Q29udGVudCA9IFN0cmluZyhyZWNTZWNzKTsKICAgIGN0ci5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBzdG9wcGVkID0gZmFsc2U7CiAgICB2YXIgaGF2ZU1pYyA9IChTLm1pY1N0YXRlPT09Im9rIiAmJiBTLnN0cmVhbSk7CiAgICBsYnQudGV4dENvbnRlbnQgPSBoYXZlTWljID8gVS5yZWNUaXRsZSA6IFUudGltZXJPbmx5OwogICAgc3BlYWtub3cudGV4dENvbnRlbnQgPSBVLnNwZWFrTm93OwogICAgbWljbm90ZS5pbm5lckhUTUwgPSBoYXZlTWljID8gIiIgOiAiPGRpdiBjbGFzcz0nY2xwLXNway1taWMnPiIrVS5taWNCbG9ja2VkKyI8L2Rpdj4iOwogICAgdmFyIHQwID0gRGF0ZS5ub3coKTsKICAgIHZhciBmaW5pc2ggPSBmdW5jdGlvbigpewogICAgICBpZihzdG9wcGVkKSByZXR1cm47IHN0b3BwZWQgPSB0cnVlOwogICAgICBzdG9wVGltZXIoKTsgYmVlcCgxKTsKICAgICAgc3BlYWtub3cudGV4dENvbnRlbnQgPSAiIjsKICAgICAgdmFyIHNlY3MgPSBNYXRoLm1pbihyZWNTZWNzLCBNYXRoLnJvdW5kKChEYXRlLm5vdygpLXQwKS8xMDAwKSk7CiAgICAgIGlmKGhhdmVNaWMgJiYgUy5yZWNvcmRlcil7CiAgICAgICAgUy5yZWNvcmRlci5vbnN0b3AgPSBmdW5jdGlvbigpewogICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihTLmNodW5rcywgUy5taW1lP3t0eXBlOlMubWltZX06dW5kZWZpbmVkKTsKICAgICAgICAgIGlmKFMucmVjc1trZXldICYmIFMucmVjc1trZXldLnVybCl7IHRyeXsgVVJMLnJldm9rZU9iamVjdFVSTChTLnJlY3Nba2V5XS51cmwpOyB9Y2F0Y2goZSl7fSB9CiAgICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjogYmxvYiwgdXJsOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCBzZWNzOiBzZWNzIH07CiAgICAgICAgICBTLnJlY29yZGVyID0gbnVsbDsKICAgICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgICAgfTsKICAgICAgICB0cnl7IFMucmVjb3JkZXIuc3RvcCgpOyB9Y2F0Y2goZSl7IFMucmVjc1trZXldID0ge2Jsb2I6bnVsbCx1cmw6bnVsbCxzZWNzOnNlY3N9OyBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOyB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgUy5yZWNzW2tleV0gPSB7IGJsb2I6bnVsbCwgdXJsOm51bGwsIHNlY3M6IHNlY3MgfTsKICAgICAgICBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOwogICAgICB9CiAgICB9OwogICAgaWYoaGF2ZU1pYyl7CiAgICAgIFMuY2h1bmtzID0gW107CiAgICAgIHRyeXsKICAgICAgICBTLnJlY29yZGVyID0gUy5taW1lID8gbmV3IE1lZGlhUmVjb3JkZXIoUy5zdHJlYW0se21pbWVUeXBlOlMubWltZX0pIDogbmV3IE1lZGlhUmVjb3JkZXIoUy5zdHJlYW0pOwogICAgICAgIFMucmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gZnVuY3Rpb24oZXYpeyBpZihldi5kYXRhICYmIGV2LmRhdGEuc2l6ZSkgUy5jaHVua3MucHVzaChldi5kYXRhKTsgfTsKICAgICAgICBTLnJlY29yZGVyLnN0YXJ0KCk7CiAgICAgIH1jYXRjaChlKXsgUy5yZWNvcmRlciA9IG51bGw7IGhhdmVNaWMgPSBmYWxzZTsgbGJ0LnRleHRDb250ZW50ID0gVS50aW1lck9ubHk7IH0KICAgIH0KICAgIHZhciBzdG9wID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHdhcm4iLFUuc3RvcFJlYyk7CiAgICBzdG9wLm9uY2xpY2sgPSBmaW5pc2g7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RvcCk7CiAgICBjb3VudGRvd24ocmVjU2VjcywgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGZpbmlzaCk7CiAgfQogIGZ1bmN0aW9uIHNob3dSZXZpZXcoc2Nyb2xsVG8pewogICAgdmFyIHIgPSBTLnJlY3Nba2V5XTsgaWYoIXIpIHJldHVybjsKICAgIHJldmlld1Nsb3QuaW5uZXJIVE1MID0gIiI7CiAgICB2YXIgcnYgPSBlbCgiZGl2IiwiY2xwLXNway1yZXZpZXciKTsKICAgIHJ2LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJvayIsIlx1MjcxNCAiK1UucmVjb3JkZWQrIiAoIityLnNlY3MrInMpIikpOwogICAgaWYoci51cmwpewogICAgICB2YXIgYXUgPSBlbCgiYXVkaW8iKTsgYXUuY29udHJvbHMgPSB0cnVlOyBhdS5zcmMgPSByLnVybDsKICAgICAgcnYuYXBwZW5kQ2hpbGQoYXUpOwogICAgICB2YXIgcm93ID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgICAgIHZhciBkbCA9IGVsKCJhIiwiY2xwLXNway1idG4iLFUuZG93bmxvYWQpOwogICAgICBkbC5ocmVmID0gci51cmw7IGRsLmRvd25sb2FkID0gImNlbHBpcC1zIitELnNldCsidCIrRC50ZXN0KyItdGFzayIrKGtleT09PSJ3Ij8iMCI6a2V5LnJlcGxhY2UoInQiLCIiKSkrIi4iK1MuZXh0OwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGwpOwogICAgICBydi5hcHBlbmRDaGlsZChyb3cpOwogICAgfQogICAgcmV2aWV3U2xvdC5hcHBlbmRDaGlsZChydik7CiAgICBpZihzY3JvbGxUbyl7IHRyeXsgcnYuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIifSk7IH1jYXRjaChlKXt9IH0KICB9CiAgc2hvd0lkbGUoKTsKICByZXR1cm4gYm94Owp9CgovKiAtLS0tLS0tLS0tIHRpcHMvc2FtcGxlcyBhY2NvcmRpb24gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBhY2NvcmRpb24odCl7CiAgdmFyIGFjYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWFjYyIpOwogIHZhciBidG4gPSBlbCgiYnV0dG9uIixudWxsLFUudGlwc1RvZ2dsZSk7CiAgYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBhY2MuY2xhc3NOYW1lID0gYWNjLmNsYXNzTmFtZS5pbmRleE9mKCJvcGVuIik+LTEgPyAiY2xwLXNway1hY2MiIDogImNscC1zcGstYWNjIG9wZW4iOyB9OwogIGFjYy5hcHBlbmRDaGlsZChidG4pOwogIHZhciBib2R5ID0gZWwoImRpdiIsImNscC1zcGstYWNjYm9keSIpOwogIHZhciB0YWJzID0gZWwoImRpdiIsImNscC1zcGstdGFicyIpOwogIHZhciBwYW5lcyA9IFtdOwogIGZ1bmN0aW9uIGFkZFRhYihsYWJlbCwgcGFuZUJ1aWxkZXIpewogICAgdmFyIGkgPSBwYW5lcy5sZW5ndGg7CiAgICB2YXIgdGIgPSBlbCgiYnV0dG9uIiwiY2xwLXNway10YWIiKyhpPT09MD8iIG9uIjoiIiksbGFiZWwpOwogICAgdmFyIHBuID0gZWwoImRpdiIsImNscC1zcGstdGFicGFuZSIrKGk9PT0wPyIgb24iOiIiKSk7CiAgICBwYW5lQnVpbGRlcihwbik7CiAgICB0Yi5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgdGFicy5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway10YWIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFiIisoaj09PWk\/IiBvbiI6IiIpOyB9KTsKICAgICAgYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway10YWJwYW5lIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRhYnBhbmUiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgfTsKICAgIHRhYnMuYXBwZW5kQ2hpbGQodGIpOyBwYW5lcy5wdXNoKHBuKTsKICB9CiAgYWRkVGFiKFUudGFiVGlwcywgZnVuY3Rpb24ocG4pewogICAgdmFyIHVsID0gZWwoInVsIik7CiAgICB0LnRpcHMuYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHVsKTsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS51c2VmdWxQaHJhc2VzKyI6PC9iPiIpKTsKICAgIHZhciBwaCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBociIpOwogICAgdC50aXBzLnBocmFzZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgcGguYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwseCkpOyB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHBoKTsKICB9KTsKICBpZih0LnM2KSBhZGRUYWIoVS50YWJTNiwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUgczYiLHQuczYpKTsgfSk7CiAgaWYodC5zOSkgYWRkVGFiKFUudGFiUzksIGZ1bmN0aW9uKHBuKXsgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstc2FtcGxlIix0LnM5KSk7IH0pOwogIGlmKCF0Lndhcm11cCkgYWRkVGFiKFUudGFiUnVicmljLCBmdW5jdGlvbihwbil7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLFUucnVicmljTm90ZSkpOwogICAgdmFyIHRiID0gZWwoInRhYmxlIiwiY2xwLXNway1ydWIiKTsKICAgIGlmKCFTLnJ1YnJpY1t0LmtdKSBTLnJ1YnJpY1t0LmtdID0gWzAsMCwwLDBdOwogICAgdmFyIGVzdEQgPSBlbCgiZGl2IiwiY2xwLXNway1lc3QiLCIiKTsKICAgIFUucnVicmljQ3JpdC5mb3JFYWNoKGZ1bmN0aW9uKGNyLGNpKXsKICAgICAgdmFyIHRyID0gZWwoInRyIik7CiAgICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCxjcikpOwogICAgICB2YXIgdGQgPSBlbCgidGQiKTsgdGQuc3R5bGUud2hpdGVTcGFjZSA9ICJub3dyYXAiOyB0ZC5zdHlsZS50ZXh0QWxpZ24gPSAicmlnaHQiOwogICAgICBmb3IodmFyIHMyPTE7czI8PTU7czIrKyl7CiAgICAgICAgKGZ1bmN0aW9uKHN2KXsKICAgICAgICAgIHZhciBzcCA9IGVsKCJzcGFuIiwiY2xwLXNway1zdGFyIisoUy5ydWJyaWNbdC5rXVtjaV0+PXN2PyIgb24iOiIiKSwiXHUyNjA1Iik7CiAgICAgICAgICBzcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgUy5ydWJyaWNbdC5rXVtjaV0gPSBzdjsKICAgICAgICAgICAgdGQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstc3RhciIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway1zdGFyIisoajxzdj8iIG9uIjoiIik7IH0pOwogICAgICAgICAgICB1cGQoKTsKICAgICAgICAgIH07CiAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChzcCk7CiAgICAgICAgfSkoczIpOwogICAgICB9CiAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgdGIuYXBwZW5kQ2hpbGQodHIpOwogICAgfSk7CiAgICBwbi5hcHBlbmRDaGlsZCh0Yik7CiAgICBwbi5hcHBlbmRDaGlsZChlc3REKTsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUuZXN0RGlzY2xhaW1lcikpOwogICAgZnVuY3Rpb24gdXBkKCl7CiAgICAgIHZhciBhcnIgPSBTLnJ1YnJpY1t0LmtdOyB2YXIgZG9uZSA9IGFyci5ldmVyeShmdW5jdGlvbih4KXtyZXR1cm4geD4wO30pOwogICAgICBlc3RELnRleHRDb250ZW50ID0gZG9uZSA\/IChVLmVzdGltYXRlKyIgIitlc3RUZXh0KGFyci5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStiO30sMCkvNCkpIDogIiI7CiAgICB9CiAgICB1cGQoKTsKICB9KTsKICBib2R5Lmluc2VydEJlZm9yZSh0YWJzLCBib2R5LmZpcnN0Q2hpbGQpOwogIHBhbmVzLmZvckVhY2goZnVuY3Rpb24ocG4peyBib2R5LmFwcGVuZENoaWxkKHBuKTsgfSk7CiAgYWNjLmFwcGVuZENoaWxkKGJvZHkpOwogIHJldHVybiBhY2M7Cn0KCi8qIC0tLS0tLS0tLS0gZW5kIHNjcmVlbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGVuZFNjcmVlbigpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1lbmQiKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsRC5oZWFkZXIrIiAtIFNwZWFraW5nIFx1MjAxNCAiK1UuZW5kVGl0bGUpKTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLCI8Yj4iK1UuZW5kVGl0bGUrIjwvYj4gIitVLmVuZFN1YikpOwogIHZhciB0YiA9IGVsKCJ0YWJsZSIpOwogIHZhciB0aHIgPSBlbCgidHIiKTsgWyJUYXNrIiwiVHlwZSIsIlJlY29yZGluZyIsIiJdLmZvckVhY2goZnVuY3Rpb24oaCl7IHRoci5hcHBlbmRDaGlsZChlbCgidGgiLG51bGwsaCkpOyB9KTsKICB0Yi5hcHBlbmRDaGlsZCh0aHIpOwogIHZhciBucmVjID0gMDsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciB0ciA9IGVsKCJ0ciIpOwogICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLCI8Yj4iKyh0Lndhcm11cD8iVyI6dC5udW0pKyI8L2I+IikpOwogICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLHQudHlwZUVuKSk7CiAgICB2YXIgciA9IFMucmVjc1t0LmtdOwogICAgdmFyIHRkID0gZWwoInRkIik7CiAgICBpZihyICYmIHIudXJsKXsgbnJlYysrOyB2YXIgYXUgPSBlbCgiYXVkaW8iKTsgYXUuY29udHJvbHMgPSB0cnVlOyBhdS5zcmMgPSByLnVybDsgdGQuYXBwZW5kQ2hpbGQoYXUpOyB9CiAgICBlbHNlIGlmKHIpeyBucmVjKys7IHRkLnRleHRDb250ZW50ID0gci5zZWNzKyJzICgiK1UudGltZXJPbmx5KyIpIjsgfQogICAgZWxzZSB0ZC5pbm5lckhUTUwgPSAiPHNwYW4gc3R5bGU9J2NvbG9yOiNjNjI4MjgnPiIrVS5lbmROb1JlYysiPC9zcGFuPiI7CiAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICB2YXIgdGQyID0gZWwoInRkIik7CiAgICB2YXIgZ28gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLCJcdTIxOTIiKTsKICAgIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj1pOyByZW5kZXIoKTsgfTsKICAgIHRkMi5hcHBlbmRDaGlsZChnbyk7CiAgICB0ci5hcHBlbmRDaGlsZCh0ZDIpOwogICAgdGIuYXBwZW5kQ2hpbGQodHIpOwogIH0pOwogIGIuYXBwZW5kQ2hpbGQodGIpOwogIC8qIHJ1YnJpYyBhdmcgKi8KICB2YXIgdmFscyA9IFtdOwogIE9iamVjdC5rZXlzKFMucnVicmljKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyB2YXIgYT1TLnJ1YnJpY1trXTsgaWYoYSAmJiBhLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSkpIHZhbHMucHVzaChhLnJlZHVjZShmdW5jdGlvbih4LHkpe3JldHVybiB4K3k7fSwwKS80KTsgfSk7CiAgaWYodmFscy5sZW5ndGgpewogICAgdmFyIGF2ZyA9IHZhbHMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErYzt9LDApL3ZhbHMubGVuZ3RoOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1lc3QiLFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXZnKSsiICgiK3ZhbHMubGVuZ3RoKyIgdGFzayhzKSBzZWxmLXJhdGVkKSIpKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgfQogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICB2YXIgcmVkbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5lbmRSZWRvKTsKICByZWRvLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgT2JqZWN0LmtleXMoUy5yZWNzKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBpZihTLnJlY3Nba10mJlMucmVjc1trXS51cmwpeyB0cnl7VVJMLnJldm9rZU9iamVjdFVSTChTLnJlY3Nba10udXJsKTt9Y2F0Y2goZSl7fSB9IH0pOwogICAgUy5yZWNzID0ge307IFMucnVicmljID0ge307IFMudDVjaG9pY2UgPSB7fTsKICAgIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0KXsgUy5waGFzZVt0LmtdID0gdC5waGFzZWQ\/ImNob29zZS1pZGxlIjoiaWRsZSI7IH0pOwogICAgUy5jdXIgPSAtMTsgcmVuZGVyKCk7CiAgfTsKICB2YXIgdDIgPSBlbCgiYSIsImNscC1zcGstYnRuIHByaSIsVS5lbmRUMisiICIrKEQudGVzdD09PTE\/MjoxKSsiIFx1MjE5MiIpOyB0Mi5ocmVmID0gRC5vdGhlclVybDsKICB2YXIgaHViID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5lbmRIdWIpOyBodWIuaHJlZiA9ICIvY2VscGlwLyI7CiAgY3RyLmFwcGVuZENoaWxkKHJlZG8pOyBjdHIuYXBwZW5kQ2hpbGQodDIpOyBjdHIuYXBwZW5kQ2hpbGQoaHViKTsKICBiLmFwcGVuZENoaWxkKGN0cik7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1taWMiLFUubWljTm90ZSkpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KCi8qIGV4cG9zZSBmb3IgdGVzdHMgKi8Kd2luZG93LkNMUFNQSyA9IHsgc3RhdGU6IFMsIGRhdGE6IEQsIGdvdG86IGZ1bmN0aW9uKGkpeyBTLmN1cj1pOyByZW5kZXIoKTsgfSwgcmVuZGVyOiByZW5kZXIgfTsKcmVuZGVyKCk7Cn0pKCk7Cg==\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 11 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-6451","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6451","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=6451"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6451\/revisions"}],"predecessor-version":[{"id":6508,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6451\/revisions\/6508"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}