{"id":6311,"date":"2026-07-10T08:50:41","date_gmt":"2026-07-10T08:50:41","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-3-test-1-reading\/"},"modified":"2026-07-12T03:24:53","modified_gmt":"2026-07-12T03:24:53","slug":"celpip-set-3-test-1-reading","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-3-test-1-reading\/","title":{"rendered":"CELPIP Set 3 Test 1 \u2013 Reading Practice Test"},"content":{"rendered":"<div class=\"clpr-wrap\" id=\"clprWrap\">\n<section class=\"clpr-hero\">\n<div class=\"clpr-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clpr-hero-badges\"> <span class=\"clpr-badge-brand\">AllEnglish4U<\/span> <span class=\"clpr-badge-set\">CELPIP General &middot; Set 3<\/span> <\/div>\n<h1>Reading Practice Test 1<\/h1>\n<p class=\"clpr-hero-sub\">4 parts &middot; 38 questions &middot; about 55 minutes. Read each passage and choose the best option for every drop-down. Official Paragon question set with verified answer key.<\/p>\n<div class=\"clpr-hero-chips\"> <span class=\"clpr-chip\">Part 1 &middot; Correspondence<\/span> <span class=\"clpr-chip\">Part 2 &middot; Apply a Diagram<\/span> <span class=\"clpr-chip\">Part 3 &middot; Information<\/span> <span class=\"clpr-chip\">Part 4 &middot; Viewpoints<\/span> <\/div>\n<p> <button class=\"clpr-cta\" id=\"clprStart\">Start the Reading Test<\/button> <\/section>\n<div class=\"clpr-toolbar\" id=\"clprToolbar\" hidden> <span class=\"clpr-score-chip\" id=\"clprScoreChip\">0 \/ 38 answered<\/span> <span class=\"clpr-toolbar-spacer\"><\/span> <button class=\"clpr-tbtn\" id=\"clprReset\">Reset<\/button> <button class=\"clpr-tbtn clpr-tbtn-check\" id=\"clprCheck\">Check answers<\/button> <\/div>\n<div class=\"clpr-sim\" id=\"clprSim\" hidden>\n<div class=\"clpr-dots\" id=\"clprDots\"><\/div>\n<div class=\"clpr-cat\" id=\"clprCat\"><\/div>\n<\/p><\/div>\n<div class=\"clpr-results\" id=\"clprResults\" hidden><\/div>\n<\/p><\/div>\n<p><script>eval(atob(\"J3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ0VMUElQIFJlYWRpbmcgXHUyMDE0IFByYWN0aWNlIFRlc3QgMSAoU2V0IDMpCiAgIFNvdXJjZTogUGFyYWdvbiBvZmZpY2lhbCAiUHJhY3RpY2UgVGVzdCAxIFNldCAzIC0gUmVhZGluZyIgKDM3IHBwKS4KICAgQWxsIHN0ZW1zLCBvcHRpb25zIGFuZCBrZXlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHByaW50ZWQgQW5zd2VyIEtleS4KICAgRGF0YSBtb2RlbDogcGFydHNbXSAtPiB7IHBhc3NhZ2UobGVmdCkgLCBibG9ja3NbXShyaWdodCkgfQogICAgIGJsb2NrLnR5cGU6ICdzdGVtbGlzdCcgfCAnY2xvemUnIHwgJ21hdGNoJwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFJEQVRBID0geyJ0ZXN0TGFiZWwiOiJQcmFjdGljZSBUZXN0IDEiLCJwYXJ0cyI6W3siaWQiOjEsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMTogUmVhZGluZyBDb3JyZXNwb25kZW5jZSIsInRpbWUiOiIxMCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuIiwiaHRtbCI6IjxwPkRlYXIgTXJzLiBTbWl0aCw8L3A+PHA+SSBhbSB3cml0aW5nIGluIHJlc3BvbnNlIHRvIHlvdXIgcmVzZXJ2YXRpb24gcmVxdWVzdCBmb3IgdGhlIFx1MjAxY0JsdWUgT2FzaXNcdTIwMWQgdmFjYXRpb24gcHJvcGVydHkuIEkgc2luY2VyZWx5IGFwcHJlY2lhdGUgeW91ciBjaG9vc2luZyBteSByZW50YWwgcHJvcGVydHkgZm9yIHlvdXIgZmFtaWx5XHUyMDE5cyBDaHJpc3RtYXMgaG9saWRheXM7IGhvd2V2ZXIsIEkgcmVncmV0IHRvIGluZm9ybSB5b3UgdGhhdCB0aGUgaG9tZSB5b3VcdTIwMTl2ZSBjaG9zZW4gaGFzIGFscmVhZHkgYmVlbiBib29rZWQuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCBpbiB0aGUgc2FtZSBuZWlnaGJvdXJob29kIEkgb3duIGFub3RoZXIgcHJvcGVydHkgd2hpY2ggaXMgbGFyZ2VyIC0gXHUyMDFjU2Vhc2lkZSBFc2NhcGUuXHUyMDFkIEl0IGhhcyBhIHBvb2wgYW5kIGlzIGRlc2lyYWJseSBzaXR1YXRlZCBjbG9zZXIgdG8gdGhlIG9jZWFuLiBJIHRoaW5rIHRoaXMgaG91c2Ugd291bGQgYmUgYW4gZXhjZWxsZW50IGNob2ljZSBmb3IgYSBmYW1pbHkgd2l0aCBraWRzLCBzdWNoIGFzIHlvdXJzLCBhcyB0aGUgYW1lbml0aWVzIGluY2x1ZGUgaGlnaCBzcGVlZCB3aXJlbGVzcyBpbnRlcm5ldCwgdmlkZW8gZ2FtZSBjb25zb2xlcywgYW5kIGEgZm91ci1wbGF5ZXIgdGFibGUgdGVubmlzIHNldCwgbm90IHRvIG1lbnRpb24gYSBob21lIHRoZWF0cmUgc3lzdGVtLiBBbHRob3VnaCBJIHVzdWFsbHkgcmVudCBpdCBhdCBhIGhpZ2hlciByYXRlIHRoYW4gdGhlIHNsaWdodGx5IGxlc3Mgcm9vbXkgXHUyMDFjQmx1ZSBPYXNpcyxcdTIwMWQgSSBhbSB3aWxsaW5nIHRvIG9mZmVyIGl0IHRvIHlvdSBmb3IgdGhlIHNhbWUgcHJpY2UuPC9wPjxwPlRoZSBhdmFpbGFibGUgaG91c2UgaXMgbW9yZSBzcGFjaW91cyBhbmQgbHV4dXJpb3VzIHRoYW4geW91ciBvcmlnaW5hbCBjaG9pY2UuIFRoaXMgdGhyZWUtbGV2ZWwgdmlsbGEgb2ZmZXJzIGEgdG90YWwgb2YgNCBiZWRyb29tcyBhbmQgNCBiYXRocm9vbXMgdGhhdCBhcmUgc3ByZWFkIG91dCBvdmVyIHR3byBmbG9vcnMgYW5kIGNhbiBzbGVlcCB1cCB0byA4IHBlb3BsZSBjb21mb3J0YWJseS4gT24gdGhlIG1haW4gbGV2ZWwgaXMgYSBsYXJnZSBsaXZpbmcgcm9vbSBhbmQgYSBmb3JtYWwgZGluaW5nIHJvb20gb2ZmIHRoZSBvcGVuIGdvdXJtZXQga2l0Y2hlbi4gQmVzaWRlIHRoZSBraXRjaGVuIGlzIGEgcmVjcmVhdGlvbiByb29tIGFuZCBhIHNlcGFyYXRlIGVudGVydGFpbm1lbnQgcm9vbSB3aXRoIGEgbGFyZ2Utc2NyZWVuIFRWLiBUaGVyZSBpcyBhbHNvIGEgc3R1bm5pbmcgb3V0ZG9vciBwb29sIHdoaWNoIGhhcyBhIHdhdGVyZmFsbCBvbiBvbmUgc2lkZSBhbmQgaXMgY29tcGxldGVseSBzdXJyb3VuZGVkIGJ5IHRyb3BpY2FsIGxhbmRzY2FwaW5nIHRvIG1haW50YWluIHByaXZhY3kuIEp1c3Qgb2ZmIHRoZSBwb29sIGlzIGEgbGFyZ2Ugc2VhdGluZyBhcmVhIHdpdGggYW4gb3V0c2lkZSBzaG93ZXIgYW5kIGEgbGFyZ2UgYmFyYmVjdWUuIFRoZSBob21lXHUyMDE5cyB3cmFwLWFyb3VuZCBkZWNrcyBvdmVybG9vayB0aGUgZWxlZ2FudCBwb29sLCBvY2VhbiBhbmQgZG9jay4gVGhlcmUgYXJlIGFsc28gbWFueSBvdGhlciBhdHRyYWN0aW9ucyBpbiB0aGUgbmVpZ2hib3Job29kLCBzdWNoIGFzIHJlc3RhdXJhbnRzLCBtb3ZpZSB0aGVhdHJlcywgYW4gYW11c2VtZW50IHBhcmssIGFuZCBhIHNob3BwaW5nIG1hbGwuPC9wPjxwPklmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0YWtpbmcgbWUgdXAgb24gdGhpcyBvZmZlciwgcGxlYXNlIGxldCBtZSBrbm93IGJ5IFNlcHRlbWJlciAyMXN0LiBBcyBwcmV2aW91c2x5IG1lbnRpb25lZCwgSSBhbSB3aWxsaW5nIHRvIHJlbnQgeW91IHRoaXMgcHJvcGVydHkgZm9yIGEgcmVkdWNlZCByYXRlIG9mICQxMjAwIGEgd2Vlay4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCBhICQ0NTAgZGVwb3NpdCBtdXN0IGJlIG1hZGUgYXQgdGhlIHRpbWUgb2YgdGhlIHJlc2VydmF0aW9uLCBhbmQgdGhlIHJlbWFpbmRlciBtdXN0IGJlIHBhaWQgYnkgT2N0b2JlciAzMXN0LjwvcD48cD5JIGxvb2sgZm9yd2FyZCB0byBoZWFyaW5nIGZyb20geW91IHJlZ2FyZGluZyB5b3VyIGRlY2lzaW9uLjwvcD48cD5TaW5jZXJlbHksPC9wPjxwPlNhbmRybyBDYXZhbGxpPC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uIGFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gaW4gdGhlIG1lc3NhZ2UuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6IldoYXQga2luZCBvZiBsZXR0ZXIgaXMgdGhpcz8iLCJvcHRpb25zIjpbIm9mZmVyIiwiYWR2aWNlIiwiYXBvbG9neSIsImFncmVlbWVudCJdLCJrZXkiOjF9LHsibiI6MiwicHJlIjoiV2hvIGlzIE1yLiBDYXZhbGxpPyIsIm9wdGlvbnMiOlsiYSBzZWxsZXIiLCJhIHBhcmVudCIsImFuIGFnZW50IiwiYSBsYW5kbG9yZCJdLCJrZXkiOjR9LHsibiI6MywicHJlIjoiXHUyMDFjQmx1ZSBPYXNpc1x1MjAxZCBpcyIsIm9wdGlvbnMiOlsidGFrZW4uIiwic29sZC4iLCJyb29teS4iLCJ2YWNhbnQuIl0sImtleSI6MX0seyJuIjo0LCJwcmUiOiJDb21wYXJlZCB0byBCbHVlIE9hc2lzLCBcdTIwMWNTZWFzaWRlIEVzY2FwZVx1MjAxZCBoYXMiLCJvcHRpb25zIjpbIm1vcmUgZmxleGlibGUgcGF5bWVudCB0ZXJtcy4iLCJtb3JlIGNvbnZlbmllbnQgYmVhY2ggYWNjZXNzLiIsImhpZ2hlciBxdWFsaXR5IGtpdGNoZW4gYXBwbGlhbmNlcy4iLCJmZXdlciBlbnRlcnRhaW5tZW50IG9wdGlvbnMuIl0sImtleSI6Mn0seyJuIjo1LCJwcmUiOiJXaGF0IGRvZXMgU2FuZHJvIHN1Z2dlc3QgdGhlIGNoaWxkcmVuIHdpbGwgZW5qb3k\/Iiwib3B0aW9ucyI6WyJ0aGUgZ291cm1ldCBraXRjaGVuIiwibWFsbCBzaG9wcGluZyIsImdhbWUgcGxheWluZyIsIm91dGRvb3Igc3dpbW1pbmciXSwia2V5IjozfSx7Im4iOjYsInByZSI6IkZvdXIgaHVuZHJlZCBhbmQgZmlmdHkgZG9sbGFycyBpcyB0by4uLiIsIm9wdGlvbnMiOlsiY292ZXIgdHJhdmVsIGNvc3RzLiIsImNvbmZpcm0gdGhlIGJvb2tpbmcuIiwicGF5IGZvciBkYW1hZ2VzLiIsImZpbmFsaXplIHRoZSBwYXltZW50LiJdLCJrZXkiOjJ9XX0seyJ0eXBlIjoiY2xvemUiLCJpbnN0ciI6IkhlcmUgaXMgYSByZXNwb25zZSB0byB0aGUgbWVzc2FnZS4gQ29tcGxldGUgdGhlIHJlc3BvbnNlIGJ5IGZpbGxpbmcgaW4gdGhlIGJsYW5rcy4gU2VsZWN0IHRoZSBiZXN0IGNob2ljZSBmb3IgZWFjaCBibGFuayBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKS4iLCJib2R5IjpbIkRlYXIgTXIuIENhdmFsbGksXG5cbk1hbnkgdGhhbmtzIGZvciB5b3VyIG1lc3NhZ2UgY29uY2VybmluZyB0aGUgYWx0ZXJuYXRlIHByb3BlcnR5LiBZb3VcdTIwMTl2ZSBnaXZlbiBtZSBhIHRob3JvdWdoICIseyJiIjo3LCJvcHRpb25zIjpbImFwb2xvZ3kiLCJjb25maXJtYXRpb24iLCJkZXNjcmlwdGlvbiIsImNvbnRyYWN0Il0sImtleSI6M30sIiBvZiB0aGUgcmVzaWRlbmNlLCB3aGljaCwgb24gb25lIGxldmVsIGF0IGxlYXN0LCB3b3VsZCBzZWVtIGFuIGFwcGVhbGluZyBzdWJzdGl0dXRlIGZvciBteSBvd24gbW9yZSAiLHsiYiI6OCwib3B0aW9ucyI6WyJtb2Rlc3QiLCJwcml2YXRlIiwiY29hc3RhbCIsImV4cGVuc2l2ZSJdLCJrZXkiOjF9LCIgaW5pdGlhbCBzZWxlY3Rpb24uIE9idmlvdXNseSB5b3VyIHByaWNpbmcgaXMgIix7ImIiOjksIm9wdGlvbnMiOlsiY29tcGxleCIsImZhdm91cmFibGUiLCJzdGFuZGFyZCIsImluZmxleGlibGUiXSwia2V5IjoyfSwiIGNvbXBhcmVkIHdpdGggU2Vhc2lkZSBFc2NhcGUuIEhvd2V2ZXIsIEkgZG8gaGF2ZSB0d28gY29uY2VybnMgdG8gYWRkcmVzcyBiZWZvcmUgSVx1MjAxOW0gcmVhZHkgdG8gIix7ImIiOjEwLCJvcHRpb25zIjpbIm1vdmUiLCJidXkiLCJiaWQiLCJjaG9vc2UiXSwia2V5Ijo0fSwiLiBJIHVuZGVyc3RhbmQgdGhpcyBpcyBhIG11bHRpLXN0b3JleSBob3VzZSBhbmQgdGhhdCBpdCBoYXMgYSBwb29sLCBib3RoIG9mIHdoaWNoIHNlZW0gdG8gYmUgY29uc2lkZXJlZCAiLHsiYiI6MTEsIm9wdGlvbnMiOlsiZXhvdGljIiwiYnJhbmQtbmV3IiwiZGVzaXJhYmxlIiwidW51c3VhbCJdLCJrZXkiOjN9LCIgZmVhdHVyZXMuIFRoYXQgc2FpZCwgSSBoYXZlIGEgb25lLXllYXItb2xkIGNoaWxkIGFuZCBhbSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIHN0YWlyd2F5IHNhZmV0eSBnYXRlcyBhbmQgYSBwb29sIGVuY2xvc3VyZS4gQ291bGQgeW91IGFkdmlzZT9cblxuS2luZCByZWdhcmRzLFxuT2xlYW4gU21pdGgiXX1dfSx7ImlkIjoyLCJuYW1lIjoiUmVhZGluZyBQYXJ0IDI6IFJlYWRpbmcgdG8gQXBwbHkgYSBEaWFncmFtIiwidGltZSI6IjggbWludXRlcyIsInBhc3NhZ2UiOnsidHlwZSI6InRleHQiLCJsYWJlbCI6IlJlYWQgdGhlIGZvbGxvd2luZyBkaWFncmFtLiIsImh0bWwiOiI8ZGl2IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjMzMzO21heC13aWR0aDo1NDBweDtmb250LWZhbWlseTpHZW9yZ2lhLCdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmO2NvbG9yOiMxYTFhMWE7YmFja2dyb3VuZDojZmZmO1wiPjxkaXYgc3R5bGU9J2Rpc3BsYXk6ZmxleDsnPjxkaXYgc3R5bGU9J3dpZHRoOjMyJTtwYWRkaW5nOjlweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojYzAzOTJiO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMzMzOyc+TWVudTwvZGl2PjxkaXYgc3R5bGU9J2ZsZXg6MTtwYWRkaW5nOjlweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojYzAzOTJiO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5cHg7Jz5BQkMgQW5udWFsIFNhbGVzIENvbmZlcmVuY2U8L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPSdwYWRkaW5nOjlweCAxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNiOWI5Yjk7Jz48ZGl2IHN0eWxlPSdmb250LXdlaWdodDpib2xkO2NvbG9yOiMxYTFhMWE7bWFyZ2luLWJvdHRvbToycHg7Jz5DcmVhbSBvZiBBc3BhcmFndXMgU291cDwvZGl2Pjx1bCBzdHlsZT0nbWFyZ2luOjNweCAwIDAgMThweDtwYWRkaW5nOjA7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS4zNTsnPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+VGhpY2sgYW5kIGRlbGljaW91cywgd2l0aCBhIHJpY2gsIGNyZWFteSBmbGF2b3VyIGFuZCBhIGhpbnQgb2YgbGVtb248L2xpPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+WW91ciBjaG9pY2Ugb2YgZWl0aGVyIHNvZGEgY3JhY2tlcnMsIGJyZWFkLCBvciB0b3J0aWxsYSBjaGlwcyBhcyBhIHNpZGU8L2xpPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+V2lubmVyIG9mIHRoZSBDaGVmXHUyMDE5cyBDaG9pY2UgQXdhcmQgdGhyZWUgeWVhcnMgaW4gYSByb3c8L2xpPjwvdWw+PC9kaXY+PGRpdiBzdHlsZT0ncGFkZGluZzo5cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCAjYjliOWI5Oyc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMWExYTFhO21hcmdpbi1ib3R0b206MnB4Oyc+RnJlc2ggTWVkaXRlcnJhbmVhbiBTYWxhZDwvZGl2Pjx1bCBzdHlsZT0nbWFyZ2luOjNweCAwIDAgMThweDtwYWRkaW5nOjA7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS4zNTsnPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+RnJlc2ggZ2FyZGVuIHZlZ2V0YWJsZXMsIGZsYXZvdXJmdWwgYmxhY2sgb2xpdmVzLCByaWNoIGZldGEgY2hlZXNlLCBhbmQgY3J1bmNoeSB3YWxudXRzPC9saT48bGkgc3R5bGU9J21hcmdpbjoycHggMDsnPkRyaXp6bGVkIHdpdGggb3VyIHNwZWNpYWwgd2hpdGUgd2luZSB2aW5haWdyZXR0ZSwgbWFkZSB3aXRoIHdpbmUgZnJvbSBzb21lIG9mIHRoZSB0b3AgdmluZXlhcmRzIGluIHRoZSBjb3VudHJ5PC9saT48bGkgc3R5bGU9J21hcmdpbjoycHggMDsnPkFsbCBwcm9kdWNlIGlzIG9yZ2FuaWMgYW5kIGxvY2FsbHkgZ3Jvd248L2xpPjwvdWw+PC9kaXY+PGRpdiBzdHlsZT0ncGFkZGluZzo5cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCAjYjliOWI5Oyc+PGRpdiBzdHlsZT0nZm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMWExYTFhO21hcmdpbi1ib3R0b206MnB4Oyc+RGVsdXhlIFdyYXAgU2VydmVkIHdpdGggQ3Jpc3B5IEZyaWVzPC9kaXY+PHVsIHN0eWxlPSdtYXJnaW46M3B4IDAgMCAxOHB4O3BhZGRpbmc6MDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjM1Oyc+PGxpIHN0eWxlPSdtYXJnaW46MnB4IDA7Jz5Zb3VyIGNob2ljZSBvZiB2ZWdldGFyaWFuLCBjaGlja2VuLCBiZWVmLCBvciBwb3JrPC9saT48bGkgc3R5bGU9J21hcmdpbjoycHggMDsnPkxvYWRlZCB3aXRoIGZyZXNoIHZlZ2V0YWJsZXMgKGxldHR1Y2UsIG9uaW9ucywgY3VjdW1iZXIsIGNhYmJhZ2UpIGFuZCBvdXIgc2lnbmF0dXJlIHJvYXN0ZWQgcmVkIHBlcHBlciBtYXlvPC9saT48bGkgc3R5bGU9J21hcmdpbjoycHggMDsnPldyYXBzIGFyZSBhdmFpbGFibGUgaW4gd2hpdGUsIHdob2xlIHdoZWF0LCBhbmQgbXVsdGlncmFpbjsgY2hvaWNlIG9mIGdyaWxsZWQgb3IgYmFrZWQ8L2xpPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+WW91IG1heSBvcHQgZm9yIHlhbSBmcmllcywgY2hpY2twZWEgZnJpZXMsIHNvdXAsIG9yIGEgZ2FyZGVuIHNhbGFkIGF0IG5vIGV4dHJhIGNoYXJnZTwvbGk+PGxpIHN0eWxlPSdtYXJnaW46MnB4IDA7Jz5WZWdhbiBvcHRpb24gYXZhaWxhYmxlPC9saT48L3VsPjwvZGl2PjxkaXYgc3R5bGU9J3BhZGRpbmc6OXB4IDE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2I5YjliOTsnPjxkaXYgc3R5bGU9J2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzFhMWExYTttYXJnaW4tYm90dG9tOjJweDsnPlRhc3R5IFRyZWF0cyBmb3IgRGVzc2VydDwvZGl2Pjx1bCBzdHlsZT0nbWFyZ2luOjNweCAwIDAgMThweDtwYWRkaW5nOjA7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS4zNTsnPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+QSB2YXJpZXR5IG9mIHRhcnRzLCBwaWVzLCBzcXVhcmVzLCBhbmQgY2FrZXM8L2xpPjxsaSBzdHlsZT0nbWFyZ2luOjJweCAwOyc+QWxsIGRlc3NlcnRzIGNvbWUgd2l0aCB5b3VyIGNob2ljZSBvZiBmcmVzaCBiZXJyaWVzIChzdHJhd2JlcnJpZXMsIGJsdWViZXJyaWVzLCBvciByYXNwYmVycmllcykgYW5kIGljZWQgY3JlYW0gKHZhbmlsbGEsIGNob2NvbGF0ZSwgb3IgYnV0dGVyc2NvdGNoKTwvbGk+PGxpIHN0eWxlPSdtYXJnaW46MnB4IDA7Jz5BbGwgZGVzc2VydHMgYXJlIG1hZGUgZGFpbHkgaW4taG91c2U8L2xpPjwvdWw+PC9kaXY+PGRpdiBzdHlsZT0ncGFkZGluZzo4cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCAjMzMzO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC1zdHlsZTppdGFsaWM7Y29sb3I6IzMzMzsnPk5vdGU6IEdsdXRlbiBmcmVlIGluZ3JlZGllbnRzIGFuZCBzbWFsbGVyIHBvcnRpb25zIG9mIGFsbCBtZW51IGl0ZW1zIGFyZSBhdmFpbGFibGUgdXBvbiByZXF1ZXN0LiBQbGVhc2Ugbm90aWZ5IHN0YWZmIG9mIGFueSBmb29kIGFsbGVyZ2llcy48L2Rpdj48L2Rpdj4ifSwiYmxvY2tzIjpbeyJ0eXBlIjoiY2xvemUiLCJpbnN0ciI6IlJlYWQgdGhlIGZvbGxvd2luZyBlbWFpbC4gQ29tcGxldGUgdGhlIGVtYWlsIGJ5IGZpbGxpbmcgaW4gdGhlIGJsYW5rcy4iLCJib2R5IjpbIlN1YmplY3Q6IEFyZSB5b3UgZnJlZSBmb3IgbHVuY2g\/XG5UbzogQWxpbmEgTGVlIDxhbGluYWwyMkB4bWFpbC5jYT5cbkZyb206IEphbmV0IEZvc3RlciA8amZvc3RlckB4bWFpbC5jYT5cblxuSGV5IEFsaW5hLFxuXG5Ib3cgYXJlIHlvdSBlbmpveWluZyB0aGUgIix7ImIiOjEsIm9wdGlvbnMiOlsid29ya3Nob3AiLCJjb25mZXJlbmNlIiwicHJlc2VudGF0aW9uIiwiY2VsZWJyYXRpb24iXSwia2V5IjoyfSwiIHNvIGZhcj8gTGlzdGVuLCBzaW5jZSB5b3VcdTIwMTlyZSBnb2luZyB0byBiZSAiLHsiYiI6Miwib3B0aW9ucyI6WyJsZWF2aW5nIGVhcmx5IiwibWVldGluZyBuZXcgcGVvcGxlIiwibGF0ZSBmb3IgbHVuY2giLCJzaGFyaW5nIHlvdXIgaWRlYXMiXSwia2V5IjozfSwiIGJlY2F1c2Ugb2YgeW91ciBwcmVzZW50YXRpb24sIEkgY2FuIG9yZGVyIGx1bmNoIGZvciB5b3UgYW5kIHNhdmUgeW91IGEgc2VhdCBhdCBvdXIgdGFibGUuIE1hbmFnZW1lbnQgd2FudHMgdXMgdG8gbWVldCB1cCB3aXRoIG91ciB0ZWFtcyBhdCBsdW5jaCB0byBkaXNjdXNzIHRoZSBtb3JuaW5nIHdvcmtzaG9wcy4gSSBzYXcgdGhlICIseyJiIjozLCJvcHRpb25zIjpbIm1lbnUiLCJzY2hlZHVsZSIsInJlY2lwZXMiLCJhZHZlcnRpc2VtZW50Il0sImtleSI6MX0sIiB3aGVuIEkgcGFzc2VkIHRoZSBkaW5pbmcgaGFsbCB0aGlzIG1vcm5pbmcuIFRoZSBzZWxlY3Rpb25zIHNvdW5kIHByZXR0eSBnb29kLiBUaGVyZVx1MjAxOXMgY3JlYW0gb2YgYXNwYXJhZ3VzIHNvdXAgb3IgIix7ImIiOjQsIm9wdGlvbnMiOlsiY2hpY2tlbiB3cmFwcyIsImZyZW5jaCBmcmllcyIsImxldHR1Y2UgYW5kIHRvbWF0b2VzIiwiTWVkaXRlcnJhbmVhbiBzYWxhZCJdLCJrZXkiOjR9LCIgdG8gc3RhcnQuIEZvciB0aGUgbWFpbiBjb3Vyc2UsIHRoZXJlXHUyMDE5cyBhIHdyYXAuIFdoaWNoIHdvdWxkIHlvdSBwcmVmZXI6IHZlZ2V0YXJpYW4sIGNoaWNrZW4sIGJlZWYsIG9yIHBvcms\/IFRoZXkgYWxsIGNvbWUgd2l0aCBmcmVzaCB2ZWdnaWVzIGFuZCAiLHsiYiI6NSwib3B0aW9ucyI6WyJibGFjayBvbGl2ZXMiLCJyb2FzdGVkIHJlZCBwZXBwZXIgbWF5byIsImEgaGludCBvZiBsZW1vbiIsIndoaXRlIHdpbmUgdmluYWlncmV0dGUiXSwia2V5IjoyfSwiIHdpdGggeW91ciBjaG9pY2Ugb2Ygc2lkZS4gVGhlcmUgYXJlIHNvbWUgcmVhbGx5IGludGVyZXN0aW5nIGRlc3NlcnRzIGFzIHdlbGwuIEkga25vdyBzd2VldHMgYXJlblx1MjAxOXQgeW91ciBjdXAgb2YgdGVhLCBidXQgdGhleSBjb21lIHdpdGggZnJlc2ggYmVycmllcyBhbmQgbG9vayBkZWxpY2lvdXMuXG5cbkxldCBtZSBrbm93LCBhbmQgSVx1MjAxOWxsIHNlZSB5b3UgYXQgbHVuY2gsXG5KYW5ldCJdfSx7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uLiIsIml0ZW1zIjpbeyJuIjo2LCJwcmUiOiJKYW5ldCBhbmQgQWxpbmEga25vdyBlYWNoIG90aGVyIGJlY2F1c2UiLCJvcHRpb25zIjpbIkphbmV0IGlzIEFsaW5hXHUyMDE5cyBib3NzLiIsInRoZXkgYXJlIGJvdGggbWFuYWdlcnMuIiwidGhleSBtZXQgYXQgdGhlIG1vcm5pbmcgd29ya3Nob3AuIiwidGhleSB3b3JrIHRvZ2V0aGVyLiJdLCJrZXkiOjR9LHsibiI6NywicHJlIjoiSmFuZXQgYW5kIEFsaW5hIGFyZSBwbGFubmluZyB0byBlYXQgbHVuY2ggdG9nZXRoZXIgdG8iLCJvcHRpb25zIjpbInNoYXJlIHdoYXQgdGhleSBsZWFybmVkLiIsImRlY2lkZSB3aGljaCB3b3Jrc2hvcHMgdG8gYXR0ZW5kLiIsInByZXNlbnQgdG9waWNzIGZyb20gdGhlIGNvbmZlcmVuY2UuIiwiaW50cm9kdWNlIGlkZWFzIHRvIG1hbmFnZW1lbnQuIl0sImtleSI6MX0seyJuIjo4LCJwcmUiOiJXaGVuIEphbmV0IHNheXMgdGhhdCBzd2VldHMgYXJlIG5vdCBBbGluYVx1MjAxOXMgXHUyMDFjY3VwIG9mIHRlYSxcdTIwMWQgc2hlIG1lYW5zIHRoYXQgQWxpbmEiLCJvcHRpb25zIjpbInByZWZlcnMgdGVhIHRvIHN3ZWV0cy4iLCJsaWtlcyB0ZWEgd2l0aCBoZXIgZGVzc2VydHMuIiwiZG9lc25cdTIwMTl0IHVzdWFsbHkgbGlrZSBkZXNzZXJ0LiIsIm9ubHkgbGlrZXMgZnJlc2ggZGVzc2VydHMuIl0sImtleSI6M31dfV19LHsiaWQiOjMsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMzogUmVhZGluZyBmb3IgSW5mb3JtYXRpb24iLCJ0aW1lIjoiOSBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIHBhc3NhZ2UuIiwiaHRtbCI6IjxwPjxzdHJvbmc+QS48L3N0cm9uZz4gUmVnYXJkZWQgYXMgYSB3b3JrIG9mIGh1bWFuIGNyZWF0aXZlIGdlbml1cywgdGhlIFJpZGVhdSBDYW5hbCBpcyBkZXNpZ25hdGVkIGFzIGEgVU5FU0NPIFdvcmxkIEhlcml0YWdlIFNpdGUgYW5kIGEgTmF0aW9uYWwgSGlzdG9yaWMgU2l0ZSBvZiBDYW5hZGEuIFN0cmV0Y2hpbmcgb3ZlciAyMDIga20gZnJvbSBPdHRhd2EgdG8gS2luZ3N0b24sIGl0IGlzIE5vcnRoIEFtZXJpY2FcdTIwMTlzIG9sZGVzdCwgY29udGludW91c2x5IG9wZXJhdGVkIGNhbmFsIHN5c3RlbS4gVGhlIG92ZXJhbGwgZGVzaWduIGludm9sdmVzIGEgc2VyaWVzIG9mIDUyIGRhbXMgdGhhdCBjb250cm9sIHRoZSB3YXRlciBsZXZlbHMsIGFuZCA0NyBzdG9uZSBsb2NrcyB0aGF0IGFsbG93IHdhdGVyY3JhZnQgdG8gcGFzcyB0aHJvdWdoIGEgc2VyaWVzIG9mIGVuY2xvc3VyZXMgY29udGFpbmluZyBkaWZmZXJlbnQgbGV2ZWxzIG9mIHdhdGVyLiBSZW1hcmthYmx5LCB0aGVzZSBsb2NrcyB3b3JrIG11Y2ggdGhlIHNhbWUgd2F5IHRvZGF5IGFzIHRoZXkgZGlkIHdoZW4gaXQgb3JpZ2luYWxseSBvcGVuZWQuPC9wPjxwPjxzdHJvbmc+Qi48L3N0cm9uZz4gVGhlIG1vdGl2YXRpb24gZm9yIHRoZSBjYW5hbFx1MjAxOXMgY29uc3RydWN0aW9uIGNhbWUgZnJvbSBhIG5lZWQgZm9yIGRlZmVuc2UuIEF0IHRoZSB0aW1lLCB0aGUgU3QuIExhd3JlbmNlIFJpdmVyIHNlcnZlZCBhcyB0aGUgcHJpbWFyeSBzdXBwbHkgbGluZSBmb3IgdGhlIEJyaXRpc2ggY29sb255LiBIb3dldmVyLCBmb2xsb3dpbmcgdGhlIFdhciBvZiAxODEyIGFnYWluc3QgdGhlIEFtZXJpY2FucywgdGhlIEJyaXRpc2ggbG95YWxpc3RzIHJlY29nbml6ZWQgdGhlIHZ1bG5lcmFiaWxpdHkgb2YgdGhlIFN0LiBMYXdyZW5jZSB0byBBbWVyaWNhbiBhdHRhY2suIEluIDE4MjYsIExpZXV0ZW5hbnQgQ29sb25lbCBKb2huIEJ5IG9mIEJyaXRhaW5cdTIwMTlzIFJveWFsIEVuZ2luZWVycyB3YXMgdGFza2VkIHdpdGggZGVzaWduaW5nIGEgbmF2aWdhYmxlIHdhdGVyd2F5IHRoYXQgY291bGQgc2VydmUgYXMgYSBzZWN1cmUgbWlsaXRhcnkgc3VwcGx5IHJvdXRlIGJldHdlZW4gTW9udHJlYWwgYW5kIEtpbmdzdG9uLiBUaGUgcHJvamVjdCBwb3NlZCBzZXZlcmUgbG9naXN0aWNhbCBhbmQgZW5naW5lZXJpbmcgY2hhbGxlbmdlcyBzaW5jZSB0aGUgZGVzaXJlZCByb3V0ZSBjb25zaXN0ZWQgb2YgdmlyZ2luIGZvcmVzdCwgcm9ja3kgdGVycmFpbiwgYW5kIHVudG91Y2hlZCByaXZlcnMgYW5kIGxha2VzLjwvcD48cD48c3Ryb25nPkMuPC9zdHJvbmc+IFRoZSBjb25zdHJ1Y3Rpb24gYmVnYW4gaW4gMTgyNi4gSW5kZXBlbmRlbnQgY29udHJhY3RvcnMgd2VyZSBpbiBjaGFyZ2Ugb2YgYnVpbGRpbmcgdGhlIHdhdGVyd2F5LCB3aGlsZSB0aGUgUm95YWwgRW5naW5lZXJzIG92ZXJzYXcgaXRzIGRlc2lnbi4gVGhlIHNraWxsZWQgd29yayB3YXMgZG9uZSBwcmltYXJpbHkgYnkgRnJlbmNoIENhbmFkaWFucywgaW5jbHVkaW5nIHN0b25lbWFzb25zLCBibGFja3NtaXRocywgYW5kIGNhcnBlbnRlcnMuIFRoZSB1bnNraWxsZWQgbGFib3VyIHdhcyBjYXJyaWVkIG91dCBieSBpbW1pZ3JhbnRzLCBtYWlubHkgZnJvbSBJcmVsYW5kLiBPdmVyIHRoZSB5ZWFycywgdGhvdXNhbmRzIG9mIGxhYm91cmVycyB3ZXJlIGludm9sdmVkIGluIHRoZSBjYW5hbFx1MjAxOXMgY29uc3RydWN0aW9uLiBUaGUgdmFzdCBtYWpvcml0eSBvZiB0aGUgd29yayB3YXMgZG9uZSBtYW51YWxseSwgd2l0aCBzb21lIGFzc2lzdGFuY2UgZnJvbSBkcmFmdCBhbmltYWxzLiBUaGUgZXhjYXZhdGlvbiB3YXMgZG9uZSB1c2luZyBzaG92ZWxzLCBheGVzLCBhbmQgd2hlZWxiYXJyb3dzLiBFdmVuIHRoZSBsYXJnZSBzdG9uZXMgb2YgdGhlIGxvY2tzIHdlcmUgc2V0IGluIHBsYWNlIHVzaW5nIG1hbnVhbCBjcmFuZXMuIFRoZSBjYW5hbCB3YXMgY29tcGxldGVkIGluIE5vdmVtYmVyIDE4MzEgYW5kIG9mZmljaWFsbHkgb3BlbmVkIGluIDE4MzIuPC9wPjxwPjxzdHJvbmc+RC48L3N0cm9uZz4gQWx0aG91Z2ggdGhlIGNhbmFsIHdhcyBuZXZlciB1c2VkIGZvciBpdHMgaW50ZW5kZWQgcHVycG9zZSwgaXQgd2FzIGEgY29tbWVyY2lhbCBzdWNjZXNzLiBJdCBiZWNhbWUgYSBwYXRoIGZvciBlYXJseSBzZXR0bGVtZW50IGFuZCBhIHN1cHBseSByb3V0ZSBmb3IgbG9jYWwgcmVzb3VyY2VzIHN1Y2ggYXMgbHVtYmVyLCBncmFpbnMsIG1pbmVyYWxzLCBhbmQgZmFybWluZyBwcm9kdWN0cy4gUHJlc2VudGx5LCB0aGUgY2FuYWwgZnVuY3Rpb25zIGNoaWVmbHkgYXMgYSB3YXRlcndheSBmb3IgbGVpc3VyZSBjcmFmdCBhbmQgcmVjcmVhdGlvbi4gVGhlIHNjZW5pYyBsb2NhdGlvbiBvZmZlcnMgZW50ZXJ0YWlubWVudCBmb3IgZXZlcnkgc2Vhc29uIGluY2x1ZGluZyBkaW5pbmcsIG11c2V1bXMsIGZpc2hpbmcsIGN5Y2xpbmcsIGhpa2luZywgY2Fub2VpbmcsIHNub3dzaG9laW5nLCBza2lpbmcsIGFuZCBza2F0aW5nLiBJbiB0aGUgd2ludGVyLCBhIDcuOCBrbSBzZWN0aW9uIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIHdvcmxkXHUyMDE5cyBsb25nZXN0IHNrYXRpbmcgcmluay4gVGhlIFJpZGVhdSBDYW5hbCBpcyBwb3B1bGFyIHdpdGggdG91cmlzdHMgYW5kIGxvY2FscyBhbGlrZSBkdWUgdG8gaXRzIHJpY2ggaGlzdG9yeSBhbmQgdmFyaWV0eSBvZiBhdHRyYWN0aW9ucy48L3A+PHA+PHN0cm9uZz5FLjwvc3Ryb25nPiBOb3QgZ2l2ZW4gaW4gYW55IG9mIHRoZSBhYm92ZSBwYXJhZ3JhcGhzLjwvcD4ifSwiYmxvY2tzIjpbeyJ0eXBlIjoibWF0Y2giLCJpbnN0ciI6IkRlY2lkZSB3aGljaCBwYXJhZ3JhcGgsIEEgdG8gRCwgaGFzIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBpbiBlYWNoIHN0YXRlbWVudCBiZWxvdy4gU2VsZWN0IEUgaWYgdGhlIGluZm9ybWF0aW9uIGlzIG5vdCBnaXZlbiBpbiBhbnkgb2YgdGhlIHBhcmFncmFwaHMuIiwibGV0dGVycyI6WyJBIiwiQiIsIkMiLCJEIiwiRSJdLCJpdGVtcyI6W3sibiI6MSwidGV4dCI6IldvcmsgdGhhdCByZXF1aXJlZCBsaXR0bGUgdHJhaW5pbmcgd2FzIGRvbmUgbW9zdGx5IGJ5IHNldHRsZXJzLiIsImtleSI6M30seyJuIjoyLCJ0ZXh0IjoiVGhlIFJpZGVhdSBDYW5hbCBwcm9qZWN0IHNwYW5uZWQgc2V2ZXJhbCB5ZWFycy4iLCJrZXkiOjN9LHsibiI6MywidGV4dCI6IlRoZSBwbGFuIGZvciB0aGUgY2FuYWwgYXJvc2UgZnJvbSB0aGUgbmVlZCBmb3IgZ3JlYXRlciBwcm90ZWN0aW9uLiIsImtleSI6Mn0seyJuIjo0LCJ0ZXh0IjoiVGhlIFJpZGVhdSBDYW5hbCBoYXMgeWVhci1yb3VuZCBhcHBlYWwuIiwia2V5Ijo0fSx7Im4iOjUsInRleHQiOiJTcGVjaWFsIGRldmljZXMgYWxsb3cgYm9hdHMgdG8gdHJhdmVsIHRocm91Z2ggZGlmZmVyZW50IGxldmVscyBvZiB3YXRlciBvbiB0aGUgY2FuYWwuIiwia2V5IjoxfSx7Im4iOjYsInRleHQiOiJDb2xvbmVsIEpvaG4gQnkgbWFuYWdlZCB0aGUgY2FuYWwgY29uc3RydWN0aW9uIHByb2plY3QgZnJvbSBNb250cmVhbC4iLCJrZXkiOjV9LHsibiI6NywidGV4dCI6IkJ1c2luZXNzZXMgaW4gbmVhcmJ5IGNvbW11bml0aWVzIHByb2ZpdGVkIGZyb20gdGhlIGNhbmFsXHUyMDE5cyBjb25zdHJ1Y3Rpb24uIiwia2V5Ijo1fSx7Im4iOjgsInRleHQiOiJUaGUgYnVsayBvZiB0aGUgd29yayBvbiB0aGUgY2FuYWwgd2FzIGNhcnJpZWQgb3V0IGJ5IGhhbmQuIiwia2V5IjozfSx7Im4iOjksInRleHQiOiJNaWxpdGFyeSBnb29kcyB3ZXJlIG5ldmVyIGFjdHVhbGx5IHRyYW5zcG9ydGVkIGFsb25nIHRoZSBjYW5hbC4iLCJrZXkiOjR9XX1dfSx7ImlkIjo0LCJuYW1lIjoiUmVhZGluZyBQYXJ0IDQ6IFJlYWRpbmcgZm9yIFZpZXdwb2ludHMiLCJ0aW1lIjoiMTIgbWludXRlcyIsInBhc3NhZ2UiOnsidHlwZSI6InRleHQiLCJsYWJlbCI6IlJlYWQgdGhlIGZvbGxvd2luZyBhcnRpY2xlIGZyb20gYSB3ZWJzaXRlLiIsImh0bWwiOiI8cD5WYWxoYWxsYSBBaXIgaXMgY29udGludWluZyB0byBmbHkgaXRzIEZvcnR1bmEgMzAwMCBJbnRlcmNvbnRpbmVudGFsIGpldCwgdG91dGVkIGJ5IHRoZSBhaXJsaW5lXHUyMDE5cyBDRU8gR29yYW4gUGVrYXJjaHVrIGFzIFx1MjAxY3RoZSB3b3JsZFx1MjAxOXMgYmVzdCBjb21tZXJjaWFsIGFpcmNyYWZ0LFx1MjAxZCBkZXNwaXRlIGl0cyBoYXZpbmcgYmVlbiBncm91bmRlZCBpbiAyMDE0IGFmdGVyIHNldmVyYWwgZW5naW5lIGZhaWx1cmVzLiBGb3Igc3RpbGwtdW5rbm93biByZWFzb25zLCB0aGUgdHVyYmluZSBlbmdpbmVcdTIwMTlzIHVsdHJhLWxpZ2h0d2VpZ2h0IGNhcmJvbiBmaWJyZSBibGFkZXMgY3JhY2sgYW5kIGJyZWFrIGluIG1pZGZsaWdodC4gVGhpcyBkaXNydXB0cyBlbmdpbmUgZmxvdyBhbmQgcmVxdWlyZXMgZW5naW5lIHNodXRkb3duLiBTb21lIHN1c3BlY3QgdGhhdCB0aGUgY29tcGFueSByZXNwb25zaWJsZSBmb3IgbWFudWZhY3R1cmluZyB0aGVzZSBwYXJ0cywgTWV4aWNvXHUyMDE5cyBQb3dlciBUZWNoIENvcnBvcmF0aW9uLCBpcyB0cnlpbmcgdG8gc2F2ZSB0aW1lIGFuZCBjdXQgY29zdHMgYXQgdGhlIGV4cGVuc2Ugb2YgcXVhbGl0eS48L3A+PHA+UmFjaW5nIGFnYWluc3QgRXVyb3BlYW4gcml2YWwgTmltYnVzIEFpciB0byBicmluZyBpdHMgbmV3IHByb2R1Y3QgdG8gdGhlIHNraWVzLCB0aGUgMzAwMFx1MjAxOXMgbWFudWZhY3R1cmVyLCBGb3J0dW5hIEFlcm9uYXV0aWNzLCBoYXN0aWx5IHJlaW5mb3JjZWQgdGhlIGJsYWRlcyBvbiBhZmZlY3RlZCBhaXJjcmFmdDsgY29uZHVjdGVkIHF1aWNrLCBzZW1pLXNjaWVudGlmaWMgdGVzdHMgY29udmluY2luZyB0aGUgVVMgRmVkZXJhbCBBdmlhdGlvbiBBZG1pbmlzdHJhdGlvbiAoRkFBKSB0aGUgYmxhZGUgd2FzIHNhZmU7IGFuZCBhY3F1aXJlZCB0aGF0IHJlZ3VsYXRvclx1MjAxOXMgYXBwcm92YWwgdG8gcmUtbGF1bmNoIHRoZSAzMDAwLiBUaGlzIGFsbCBvY2N1cnJlZCBiZWZvcmUgdGhlIE5hdGlvbmFsIFRyYW5zcG9ydGF0aW9uIFNhZmV0eSBCb2FyZCAoTlRTQikgaGFkIGZpbmlzaGVkIGl0cyBpbmNpZGVudCBpbnZlc3RpZ2F0aW9uLiBUaGUgTlRTQiByZXNwb25kZWQgd2l0aCBhIHN0ZXJuIGxldHRlciB1cmdpbmcgbW9yZSBndWlkYW5jZSBmcm9tIGluZGVwZW5kZW50IGV4cGVydHMgYW5kIG1vcmUgc3RyaW5nZW50IGFuZCBzdGFuZGFyZGl6ZWQgdmVyaWZpY2F0aW9uIHByb2NlZHVyZXMgZm9yIGFpcmNyYWZ0IGNvbXBvbmVudHMuPC9wPjxwPkRlc3BpdGUgdGhlIGJhbmQtYWlkIHNvbHV0aW9uLCB0aGUgMzAwMCBJbnRlcmNvbnRpbmVudGFsIGlzIGFwcGxhdWRlZCBieSBlbnZpcm9ubWVudGFsaXN0cyBsaWtlIEV2ZWxpbmUgUnlhbGwsIHdobyBwcmFpc2VzIGl0cyBlbmhhbmNlZCBmdWVsIGVmZmljaWVuY3kgYW5kIHJlZHVjZWQgY2FyYm9uIGVtaXNzaW9ucy4gXHUyMDFjSW4gYSB3b3JsZCB3aGVyZSB0aHJlZSB0byBzaXggcGVyY2VudCBvZiBncmVlbmhvdXNlIGdhc2VzIGNvbWUgZnJvbSBqZXQgZXhoYXVzdCwgdGhlIDMwMDAgSW50ZXJjb250aW5lbnRhbCBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi5cdTIwMWQ8L3A+PHA+SW50ZXJ2aWV3ZWQgTG9uZG9uLVRvcm9udG8gcGFzc2VuZ2VycywgbGlrZSBIYW1pZGEgQmFyenVuLCBndXNoZWQgb3ZlciB0aGUgMzAwMFx1MjAxOXMgaW4tZmxpZ2h0IGVudGVydGFpbm1lbnQgc3lzdGVtIGFuZCBpbnRlcmlvciBkZXNpZ24gd2hpbGUgZGlzbWlzc2luZyBzYWZldHkgY29uY2VybnMuIFx1MjAxY0lmIHRoZXJlIHdlcmUgcHJvYmxlbXMsIFRyYW5zcG9ydCBDYW5hZGEgd291bGQgaGF2ZSBpbnRlcnZlbmVkLlx1MjAxZDwvcD48cD5WYWxoYWxsYSBBaXIgaGFzIHdlbGNvbWVkIHRoZSBsYXRlc3QgYWRkaXRpb24gdG8gaXRzIGZsZWV0IHdpdGggYW4gZXh0cmF2YWdhbnQgbWFya2V0aW5nIGNhbXBhaWduLiBJbiBvbmUgdmlkZW8sIEZpcnN0IE9mZmljZXIgQW5kcmUgUGllcnJlIHNheXMgMzAwMCBJbnRlcmNvbnRpbmVudGFsIHBhc3NlbmdlcnMgXHUyMDFjanVzdCBnbywgV293Llx1MjAxZCAoXHUyMDFjVGhleVx1MjAxOWxsIHNheSB0aGUgc2FtZSB0aGluZyB3aGVuIGZsYW1lcyBzdGFydCBzaG9vdGluZyBmcm9tIHRoZSB0dXJiaW5lcyBvdmVyIHRoZSBBdGxhbnRpYyxcdTIwMWQgcXVpcHBlZCB0aGUgPGVtPkdsb2JlIGFuZCBNYWlsPC9lbT5cdTIwMTlzIFNoZWxkb24gQmx1bWZlbGQsIHdobyBsYW1iYXN0ZWQgdGhlIGFkcyBhbmQgZHViYmVkIHRoZSBGb3J0dW5hIGFpcmNyYWZ0IFx1MjAxY3RoZSBNaXNmb3J0dW5hLlx1MjAxZCk8L3A+PHA+TWFya2V0aW5nIHByb2Zlc3NvciBDYWl0bGluIEhhcndvb2QgbGFiZWxzIHRoZSAzMDAwIEludGVyY29udGluZW50YWwgXHUyMDFjYSBmbGF3ZWQgcHJvZHVjdCwgZmxhd2xlc3NseSBtYXJrZXRlZC5cdTIwMWQgU2hlIG5vdGVzIGhvdyBWYWxoYWxsYSBBaXJcdTIwMTlzIHZpZGVvcyBzaHJld2RseSBpZ25vcmUgb3ZlcnNlYXMgb3V0c291cmNpbmcgd2hpbGUgZW1waGFzaXppbmcgaXRzIG1hZGUtaW4tQ2FuYWRhIGNvbXBvbmVudHMuIFx1MjAxY0l0XHUyMDE5cyBhIGNhc2Ugc3R1ZHkgaW4gdGhlIHRyaXVtcGggb2YgbWFya2V0aW5nIG92ZXIgbWF0dGVyLlx1MjAxZDwvcD4ifSwiYmxvY2tzIjpbeyJ0eXBlIjoic3RlbWxpc3QiLCJpbnN0ciI6IkNob29zZSB0aGUgYmVzdCBvcHRpb24gdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgYWJvdXQgdGhlIGFydGljbGUuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6Ildob3NlIG9waW5pb24gaXMgc2ltaWxhciB0byBTaGVsZG9uIEJsdW1mZWxkXHUyMDE5cz8iLCJvcHRpb25zIjpbIkNhaXRsaW4gSGFyd29vZCIsIkV2ZWxpbmUgUnlhbGwiLCJHb3JhbiBQZWthcmNodWsiLCJIYW1pZGEgQmFyenVuIl0sImtleSI6MX0seyJuIjoyLCJwcmUiOiJXaGF0IGRpZCBGb3J0dW5hIGRvIHRvIHN0YXkgY29tcGV0aXRpdmU\/Iiwib3B0aW9ucyI6WyJnYWluZWQgdGhlIGNvbmZpZGVuY2Ugb2YgdGhlIFRyYW5zcG9ydGF0aW9uIFNhZmV0eSBCb2FyZCIsImxhdW5jaGVkIGFuIGFnZ3Jlc3NpdmUgcmVzcG9uc2UgdG8gYWR2ZXJzaXR5IiwicHJldmVudGVkIHR1cmJpbmUgZW5naW5lIGZhaWx1cmVzIGFib2FyZCBuZXcgYWlyY3JhZnQiLCJzdGFuZGFyZGl6ZWQgcXVhbGl0eSBjb250cm9sIHRlc3Rpbmcgb2Ygb3V0c291cmNlZCBjb21wb25lbnRzIl0sImtleSI6Mn0seyJuIjozLCJwcmUiOiJGb3J0dW5hIGJlbmVmaXRlZCBtb3N0IGZyb20gaXRzIHJlbGF0aW9uc2hpcCB3aXRoIiwib3B0aW9ucyI6WyJ0aGUgRmVkZXJhbCBBdmlhdGlvbiBBZG1pbmlzdHJhdGlvbi4iLCJ0aGUgR2xvYmUgYW5kIE1haWwgbWVkaWEuIiwidGhlIE5pbWJ1cyBDb21wYW55LiIsInRoZSBQb3dlciBUZWNoIENvcnBvcmF0aW9uLiJdLCJrZXkiOjF9LHsibiI6NCwicHJlIjoiV2UgY2FuIHJlYXNvbmFibHkgY29uY2x1ZGUgdGhhdCIsIm9wdGlvbnMiOlsiRm9ydHVuYSBjb2xsYWJvcmF0ZWQgd2l0aCBpdHMgcmVndWxhdG9ycy4iLCJOaW1idXMgQWlyIHByb2R1Y2VzIHNhZmVyIGpldGxpbmVycy4iLCJQb3dlciBUZWNoIENvcnBvcmF0aW9uIHdhcyBuZWdsaWdlbnQuIiwiVmFsaGFsbGEgQWlyIGZsaWVzIG9ubHkgMzAwMHMuIl0sImtleSI6M30seyJuIjo1LCJwcmUiOiJUaGUgYmVzdCB0aXRsZSBmb3IgdGhpcyBhcnRpY2xlIHdvdWxkIGJlIFx1MjAxY1RoZSBGb3J0dW5hIDMwMDAgSW50ZXJjb250aW5lbnRhbDpcdTIwMWQiLCJvcHRpb25zIjpbIkJldHRlciBUaGFuIEFpcndvcnRoeSwgQ2xhaW1zIEZBQS5cdTIwMWQiLCJGYXVsdHkgRW5naW5lIFN0aWxsIFB1enpsZXMgRXhwZXJ0cy5cdTIwMWQiLCJNYXJrZXRpbmcgRHJlYW0sIFNhZmV0eSBOaWdodG1hcmUuXHUyMDFkIiwiTmV3IFRlY2hub2xvZ3kgQ3V0cyBDYXJib24gRW1pc3Npb25zLlx1MjAxZCJdLCJrZXkiOjN9XX0seyJ0eXBlIjoiY2xvemUiLCJpbnN0ciI6IlRoZSBmb2xsb3dpbmcgaXMgYSBjb21tZW50IGJ5IGEgdmlzaXRvciB0byB0aGUgd2Vic2l0ZSBwYWdlLiBDb21wbGV0ZSB0aGUgY29tbWVudCBieSBjaG9vc2luZyB0aGUgYmVzdCBvcHRpb24gdG8gZmlsbCBpbiBlYWNoIGJsYW5rLiIsImJvZHkiOlsiVGhpcyBpcyBjbGVhcmx5IGEgdGFsZSBvZiAiLHsiYiI6Niwib3B0aW9ucyI6WyJhIGNvcnBvcmF0aW9uIHNob3dpbmcgZGlzcmVnYXJkIGZvciBkdWUgcHJvY2VzcyIsImEgcmVndWxhdG9yIG9wZXJhdGluZyBpbmRlcGVuZGVudGx5IGZyb20gYSBidXNpbmVzcyIsImFuIGF1dGhvcml0eSBpZ25vcmluZyBiaW5kaW5nIHJlY29tbWVuZGF0aW9ucyIsImFuIGludmVzdGlnYXRpb24gYmVpbmcgaGFtcGVyZWQgYnkgYSBqb3VybmFsaXN0Il0sImtleSI6MX0sIi4gVGhlIHNpdHVhdGlvbiBjb3VsZCBoYXZlIGJlZW4gYXZvaWRlZCBpZiAiLHsiYiI6Nywib3B0aW9ucyI6WyJjb25zdW1lcnMgaGFkIGJlZW4gZ2l2ZW4gbW9yZSBzYWZldHkgcmVhc3N1cmFuY2VzIiwiZGVzaWduZXJzIG9mIEV1cm9wZWFuIGpldHMgaGFkIGJlZW4gY29uc3VsdGVkIiwibWFudWZhY3R1cmVycyBoYWQga25vd24gbW9yZSBhYm91dCBtYXJrZXRpbmciLCJyZWd1bGF0b3JzIGhhZCBiZWVuIGZvcmNlZCB0byBhY3QgaW4gdGhlIHB1YmxpY1x1MjAxOXMgaW50ZXJlc3QiXSwia2V5Ijo0fSwiLiBUaGUgZ292ZXJubWVudCBzaG91bGQgcmVxdWlyZSBGb3J0dW5hIHRvIGJlIG1vcmUgIix7ImIiOjgsIm9wdGlvbnMiOlsiYWNjZXNzaWJsZSIsImFjY291bnRhYmxlIiwiZnVlbC1jb25zY2lvdXMiLCJzY2llbnRpZmljIl0sImtleSI6Mn0sIi4gTm93IEkgaGVhciBhIG51bWJlciBvZiBBc2lhbiBhaXJjcmFmdCBjb21wYW5pZXMgYXJlIGRlbWFuZGluZyBjb21wZW5zYXRpb24gZm9yIG1lY2hhbmljYWwgcHJvYmxlbXMgd2l0aCB0aGUgMzAwMHMgdGhhdCB0aGV5IHB1cmNoYXNlZCwgYW5kIHRoZXNlIGFyZSBwcm9ibGVtcyB0aGF0IGdvIGJleW9uZCB0aGUgIix7ImIiOjksIm9wdGlvbnMiOlsiZWxlY3RyaWNhbCIsImxhbmRpbmciLCJuYXZpZ2F0aW9uIiwicHJvcHVsc2lvbiJdLCJrZXkiOjR9LCItcmVsYXRlZCBvbmVzIHRoZSB3cml0ZXIgZGVzY3JpYmVzLiBCdXQgSSBob25lc3RseSBjYW5cdTIwMTl0IHNlZSBUcmFuc3BvcnQgQ2FuYWRhIHRha2luZyBhbnkgYWN0aW9uIHRoYXQgbWlnaHQgd3JlYWsgaGF2b2Mgd2l0aCB0aGUgcHJvZml0cyBvZiBvbmUgb2YgdGhlIGNvdW50cnlcdTIwMTlzIGxhcmdlc3QgY29ycG9yYXRpb25zLiBWYWxoYWxsYSBBaXIgaGFkIGEgZmxvdGlsbGEgb2YgMzAwMHMgb24gb3JkZXIgZnJvbSBGb3J0dW5hIGluIDIwMTQsIGFuZCBpdFx1MjAxOXMgbm8gc3VycHJpc2UgdGhlaXIgIix7ImIiOjEwLCJvcHRpb25zIjpbImVudGlyZSBmbGVldCBpbXByb3ZlZCIsImZlZGVyYWwgcmVndWxhdG9yIGVycmVkIiwibWFya2V0aW5nIHBsYW4gdGFua2VkIiwic2hhcmUgcHJpY2VzIHNvYXJlZCJdLCJrZXkiOjR9LCIgYXMgdGhleSBoeXBlZCB0aGUgcGxhbmUgd2hpbGUgcmVtYWluaW5nLCBhbG9uZyB3aXRoIFRyYW5zcG9ydCBDYW5hZGEsIHNocmV3ZGx5IHNpbGVudCBvbiBpdHMgbWFueSBkZWZlY3RzLiJdfV19XX07CgpmdW5jdGlvbiBjbGJFc3RpbWF0ZVIocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDEwXHUyMDEzMTInLCBub3RlOidBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDknLCAgbm90ZTonRWZmZWN0aXZlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjcpIHJldHVybiB7IGxldmVsOidDRUxQSVAgOCcsICBub3RlOidHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOidDRUxQSVAgNycsICBub3RlOidBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDYnLCAgbm90ZTonRGV2ZWxvcGluZyBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDExKSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDUnLCAgbm90ZTonQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiB7IGxldmVsOidDRUxQSVAgNCBvciBiZWxvdycsIG5vdGU6J0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCihmdW5jdGlvbigpewogIC8qIC0tLS0gaW5qZWN0IHNjb3BlZCBDU1MgKFdvcmRQcmVzcy1zYWZlOiA8c3R5bGU+IGluIGNvbnRlbnQgY2FuIGJlIHN0cmlwcGVkKSAtLS0tICovCiAgdmFyIENTUyA9IGAKLmNscHItd3JhcHstLW5hdnk6IzA1MEUyMDstLWI5MDA6IzBEMjM1MjstLWI3MDA6IzEyNDVBODstLWI1MDA6IzI1NjNFQjstLWI0MDA6IzNCODJGNjstLWIyMDA6IzkzQzVGRDstLWIxMDA6I0RCRUFGRTstLWI1MDojRUZGNkZGOy0tdGVhbDojMEQ5NDg4Oy0tY3lhbjojMDZCNkQ0Oy0tZ3JlZW46IzEwQjk4MTstLWdyZWVuNTA6I0VDRkRGNTstLXJvc2U6I0Y0M0Y1RTstLXRleHQ6IzBGMTcyQTstLW11dGVkOiM0NzU1Njk7LS1zdWJ0bGU6Izk0QTNCODstLWJvcmRlcjojRTJFOEYwOy0tYmFyLWJnOiNFOEVCRUY7LS1iYXItYm9yZGVyOiNEM0Q5RTA7LS1iYXItdGV4dDojMUYyOTM3Oy0tcGFuZWwtcC1iZzojRjRGNUY3Oy0tcGFuZWwtcC1ib3JkZXI6I0UzRTZFQTstLXBhbmVsLXEtYmc6I0U5RjRGNzstLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7LS1kZC1vcGVuLWJnOiNDQkVCRjQ7Zm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS10ZXh0KTttYXgtd2lkdGg6MTE4MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoxNnB4IDE2cHggNTZweDtsaW5lLWhlaWdodDoxLjU7Zm9udC1zaXplOjE2cHg7fQouY2xwci13cmFwICosLmNscHItd3JhcCAqOjpiZWZvcmUsLmNscHItd3JhcCAqOjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7fQouY2xwci13cmFwIGJ1dHRvbntmb250LWZhbWlseTppbmhlcml0O2N1cnNvcjpwb2ludGVyO30KLmNscHItd3JhcCBoMSwuY2xwci13cmFwIGgyLC5jbHByLXdyYXAgaDMsLmNscHItd3JhcCBwe21hcmdpbjowO30KLmNscHItaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoyMnB4O2JhY2tncm91bmQ6dmFyKC0tbmF2eSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjM0cHggMzhweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxM3B4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Ym94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KTt9Ci5jbHByLWF1cm9yYXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3BvaW50ZXItZXZlbnRzOm5vbmU7fQouY2xwci1hdXJvcmEgc3Bhbntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO2ZpbHRlcjpibHVyKDQ2cHgpO29wYWNpdHk6LjU1O30KLmNscHItYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpe3dpZHRoOjQyMHB4O2hlaWdodDo0MjBweDtsZWZ0Oi0xMjBweDt0b3A6LTIwMHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7fQouY2xwci1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7d2lkdGg6MzgwcHg7aGVpZ2h0OjM4MHB4O3JpZ2h0Oi04MHB4O3RvcDotMTYwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTt9Ci5jbHByLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXt3aWR0aDozNDBweDtoZWlnaHQ6MzQwcHg7cmlnaHQ6MjIlO2JvdHRvbTotMjQwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTt9Ci5jbHByLWhlcm8tYmFkZ2Vze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fQouY2xwci1iYWRnZS1icmFuZHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tYjkwMCk7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6NHB4IDExcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtsZXR0ZXItc3BhY2luZzouMDFlbTt9Ci5jbHByLWJhZGdlLXNldHtjb2xvcjp2YXIoLS1iMjAwKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7fQouY2xwci1oZXJvIGgxe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO2xpbmUtaGVpZ2h0OjEuMTI7fQouY2xwci1oZXJvLXN1Yntwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjojQzdEMkUzO2ZvbnQtc2l6ZToxNC41cHg7bWF4LXdpZHRoOjc2MHB4O30KLmNscHItaGVyby1jaGlwc3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt9Ci5jbHByLWNoaXB7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDA7Y29sb3I6I0U1RUVGQjtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA4KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE2KTtwYWRkaW5nOjVweCAxMXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7fQouY2xwci1jdGF7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDo2cHg7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTVweDtwYWRkaW5nOjEycHggMjJweDtib3JkZXItcmFkaXVzOjEycHg7Ym94LXNoYWRvdzowIDEycHggMjRweCAtMTBweCByZ2JhKDM3LDk5LDIzNSwuOCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyxiYWNrZ3JvdW5kIC4xNXM7fQouY2xwci1jdGE6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7YmFja2dyb3VuZDp2YXIoLS1iNDAwKTt9Ci5jbHByLXRvb2xiYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttYXJnaW4tdG9wOjE4cHg7cGFkZGluZzoxMHB4IDE0cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE0cHg7Ym94LXNoYWRvdzowIDZweCAxOHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI1KTtwb3NpdGlvbjpzdGlja3k7dG9wOjhweDt6LWluZGV4OjMwO30KLmNscHItdG9vbGJhcltoaWRkZW5de2Rpc3BsYXk6bm9uZTt9Ci5jbHByLXRvb2xiYXItc3BhY2Vye2ZsZXg6MTt9Ci5jbHByLXNjb3JlLWNoaXB7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDt9Ci5jbHByLXRidG57YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7cGFkZGluZzo4cHggMTVweDtib3JkZXItcmFkaXVzOjEwcHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjEycyxib3gtc2hhZG93IC4xMnM7fQouY2xwci10YnRuOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO2JveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpO30KLmNscHItdGJ0bi1jaGVja3tiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7fQouY2xwci10YnRuLWNoZWNrOmhvdmVye2JhY2tncm91bmQ6IzBjYTY3ODt9Ci5jbHByLXRidG5bZGlzYWJsZWRde29wYWNpdHk6LjU7Y3Vyc29yOm5vdC1hbGxvd2VkO3RyYW5zZm9ybTpub25lO2JveC1zaGFkb3c6bm9uZTt9Ci5jbHByLXNpbXttYXJnaW4tdG9wOjE2cHg7fQouY2xwci1zaW1baGlkZGVuXXtkaXNwbGF5Om5vbmU7fQouY2xwci1kb3Rze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O21hcmdpbjowIDAgMTJweCAycHg7ZmxleC13cmFwOndyYXA7fQouY2xwci1kb3R7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjdweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1tdXRlZCk7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgLjE1czt9Ci5jbHByLWRvdCBie2Rpc3BsYXk6aW5saW5lLWZsZXg7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWIxMDApO2NvbG9yOnZhcigtLWI5MDApO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxMXB4O30KLmNscHItZG90LmNscHItY3Vye2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7fQouY2xwci1kb3QuY2xwci1jdXIgYntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjI1KTtjb2xvcjojZmZmO30KLmNscHItZG90LmNscHItZG9uZSBie2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7fQouY2xwci1jYXR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjQpO30KLmNscHItYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzoxMXB4IDE2cHg7YmFja2dyb3VuZDp2YXIoLS1iYXItYmcpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO30KLmNscHItYmFyLXRpdGxle2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iYXItdGV4dCk7ZmxleDoxO21pbi13aWR0aDowO30KLmNscHItYmFyLXRpbWVye2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLWJhci10ZXh0KTt3aGl0ZS1zcGFjZTpub3dyYXA7fQouY2xwci1iYXItdGltZXIgYntmb250LXdlaWdodDo4MDA7fQouY2xwci1jb2xze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MDt9Ci5jbHByLXBhc3NhZ2V7cGFkZGluZzoyMHB4IDIycHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbC1wLWJnKTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXAtYm9yZGVyKTttYXgtaGVpZ2h0OjEyMDBweDtvdmVyZmxvdzphdXRvO30KLmNscHItcWNvbHtwYWRkaW5nOjE4cHggMjJweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpO21heC1oZWlnaHQ6MTIwMHB4O292ZXJmbG93OmF1dG87fQouY2xwci1wbGFiZWwsLmNscHItaW5zdHJ7ZGlzcGxheTpmbGV4O2dhcDo5cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjkwMCk7bWFyZ2luLWJvdHRvbToxMnB4O30KLmNscHItcGxhYmVsOjpiZWZvcmUsLmNscHItaW5zdHI6OmJlZm9yZXtjb250ZW50OiJpIjtmbGV4Om5vbmU7d2lkdGg6MTdweDtoZWlnaHQ6MTdweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc3R5bGU6aXRhbGljO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjFweDt9Ci5jbHByLXBhc3NhZ2UgcHtmb250LXNpemU6MTQuNXB4O2NvbG9yOiMxZTJhM2E7bWFyZ2luLWJvdHRvbToxMXB4O2xpbmUtaGVpZ2h0OjEuNzI7fQouY2xwci1waW1ne3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1wLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6YmxvY2s7fQouY2xwci1ibG9ja3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweCAxNnB4O21hcmdpbi1ib3R0b206MTZweDt9Ci5jbHByLXN0ZW17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO2ZvbnQtc2l6ZToxNXB4O2NvbG9yOnZhcigtLXRleHQpO3BhZGRpbmc6OXB4IDA7bGluZS1oZWlnaHQ6MS43O30KLmNscHItc3RlbSArIC5jbHByLXN0ZW17Ym9yZGVyLXRvcDoxcHggZGFzaGVkICNFNkVERjE7fQouY2xwci1zbnVte2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjp2YXIoLS1iNzAwKTt9Ci5jbHByLWNsb3ple2ZvbnQtc2l6ZToxNXB4O2NvbG9yOnZhcigtLXRleHQpO2xpbmUtaGVpZ2h0OjIuMTU7fQouY2xwci1jbG96ZSAuY2xwci1wYXJhe21hcmdpbi1ib3R0b206MTJweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt9Ci5jbHByLW1hdGNoLXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTJweDtwYWRkaW5nOjExcHggMDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjt9Ci5jbHByLW1hdGNoLXJvdyArIC5jbHByLW1hdGNoLXJvd3tib3JkZXItdG9wOjFweCBkYXNoZWQgI0U2RURGMTt9Ci5jbHByLW1hdGNoLXJvdyAuY2xwci1zbnVte21hcmdpbi10b3A6NXB4O30KLyogZHJvcGRvd24gd2lkZ2V0ICovCi5jbHByLWRke3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWZsZXg7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbjoycHggMnB4O30KLmNscHItZGQtYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7bWluLXdpZHRoOjY0cHg7bWF4LXdpZHRoOjM0MHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNCN0MyQ0U7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzo1cHggOXB4O2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tdGV4dCk7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOmxlZnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xMnMsYm9yZGVyLWNvbG9yIC4xMnM7fQouY2xwci1kZC1idG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9Ci5jbHByLWRkLmNscHItb3BlbiAuY2xwci1kZC1idG57YmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fQouY2xwci1kZC10eHR7ZmxleDoxO21pbi13aWR0aDowO30KLmNscHItZGQtdHh0LmNscHItZW1wdHl7Y29sb3I6dmFyKC0tc3VidGxlKTtsZXR0ZXItc3BhY2luZzozcHg7fQouY2xwci1kZC1jYXJldHtmb250LXNpemU6OXB4O2NvbG9yOnZhcigtLWI3MDApO2ZsZXg6bm9uZTt9Ci5jbHByLWRkLW1lbnV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo2MDt0b3A6Y2FsYygxMDAlICsgNHB4KTtsZWZ0OjA7bWluLXdpZHRoOjI0MHB4O21heC13aWR0aDozNjBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjQzZEMERBO2JvcmRlci1yYWRpdXM6OHB4O2JveC1zaGFkb3c6MCAxNnB4IDM0cHggLTEycHggcmdiYSgxNSwyMyw0MiwuNCk7cGFkZGluZzo1cHg7ZGlzcGxheTpub25lO30KLmNscHItZGQuY2xwci1vcGVuIC5jbHByLWRkLW1lbnV7ZGlzcGxheTpibG9jazt9Ci5jbHByLWRkLW9wdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OXB4O3BhZGRpbmc6OHB4IDlweDtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLXRleHQpO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuNDt9Ci5jbHByLWRkLW9wdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWI1MCk7fQouY2xwci1kZC1vcHQgLmNscHItcmFkaW97ZmxleDpub25lO3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjEuNXB4IHNvbGlkICM5QUE3QjQ7bWFyZ2luLXRvcDoxcHg7fQouY2xwci1kZC1vcHQuY2xwci1zZWwgLmNscHItcmFkaW97Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDQyJSwjZmZmIDQ3JSk7fQouY2xwci1kZC5jbHByLXJpZ2h0IC5jbHByLWRkLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO2NvbG9yOiMwNDc4NTc7fQouY2xwci1kZC5jbHByLXdyb25nIC5jbHByLWRkLWJ0bntiYWNrZ3JvdW5kOiNGRkYxRjI7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTtjb2xvcjojQkUxMjNDO30KLmNscHItc29sdmVke2Rpc3BsYXk6bm9uZTttYXJnaW4tbGVmdDo3cHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzA0Nzg1Nzt9Ci5jbHByLWRkLmNscHItd3JvbmcgLmNscHItc29sdmVke2Rpc3BsYXk6aW5saW5lO30KLmNscHItbmF2e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjE0cHggMThweDtiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7fQouY2xwci1uYXZidG57YmFja2dyb3VuZDp2YXIoLS1iOTAwKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O3BhZGRpbmc6OXB4IDIwcHg7Ym9yZGVyLXJhZGl1czo5cHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjEycyxiYWNrZ3JvdW5kIC4xMnM7fQouY2xwci1uYXZidG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iNzAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTt9Ci5jbHByLW5hdmJ0bi5jbHByLWdob3N0e2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTt9Ci5jbHByLW5hdmJ0bltkaXNhYmxlZF17b3BhY2l0eTouNDtjdXJzb3I6bm90LWFsbG93ZWQ7dHJhbnNmb3JtOm5vbmU7fQouY2xwci1yZXN1bHRze21hcmdpbi10b3A6MThweDt9Ci5jbHByLXJlc3VsdHNbaGlkZGVuXXtkaXNwbGF5Om5vbmU7fQouY2xwci1yZXMtY2FyZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI0cHggMjZweDtib3gtc2hhZG93OjAgMTZweCA0MHB4IC0yMnB4IHJnYmEoMTUsMjMsNDIsLjQpO30KLmNscHItcmVzLXRvcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoyMHB4O2ZsZXgtd3JhcDp3cmFwO30KLmNscHItcmVzLXNjb3Jle2ZvbnQtc2l6ZTo0NHB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjp2YXIoLS1iNzAwKTtsaW5lLWhlaWdodDoxO30KLmNscHItcmVzLXNjb3JlIHNwYW57Zm9udC1zaXplOjIwcHg7Y29sb3I6dmFyKC0tc3VidGxlKTt9Ci5jbHByLXJlcy1jbGJ7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTBweCAxNnB4O30KLmNscHItcmVzLWNsYiBie2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE4cHg7Y29sb3I6dmFyKC0tYjkwMCk7fQouY2xwci1yZXMtY2xiIHNtYWxse2NvbG9yOnZhcigtLW11dGVkKTt9Ci5jbHByLXJlcy1icmVha3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNnB4O30KLmNscHItcmVzLXBpbGx7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKTtiYWNrZ3JvdW5kOiNGMUY1Rjk7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjZweCAxM3B4O30KLmNscHItcmVzLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O21hcmdpbi10b3A6MThweDtmbGV4LXdyYXA6d3JhcDt9CkBtZWRpYShtYXgtd2lkdGg6ODIwcHgpey5jbHByLWNvbHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjt9LmNscHItcGFzc2FnZXtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1wLWJvcmRlcik7bWF4LWhlaWdodDpub25lO30uY2xwci1xY29se21heC1oZWlnaHQ6bm9uZTt9fQpgOwogIHZhciBzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7IHN0LnRleHRDb250ZW50ID0gQ1NTOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKICB2YXIgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByV3JhcCcpOwogIHZhciBzdGFydEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByU3RhcnQnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByVG9vbGJhcicpOwogIHZhciBzaW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclNpbScpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwckRvdHMnKTsKICB2YXIgY2F0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwckNhdCcpOwogIHZhciByZXN1bHRzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJTY29yZUNoaXAnKTsKICB2YXIgY2hlY2tCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwckNoZWNrJyk7CiAgdmFyIHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXNldCcpOwoKICB2YXIgUSA9IFtdOwogIHZhciBjdXJQYXJ0ID0gMDsKICB2YXIgY2hlY2tlZCA9IGZhbHNlOwoKICBmdW5jdGlvbiBlbCh0YWcsIGNscywgaHRtbCl7IHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsgaWYoY2xzKWUuY2xhc3NOYW1lPWNsczsgaWYoaHRtbCE9bnVsbCllLmlubmVySFRNTD1odG1sOyByZXR1cm4gZTsgfQoKICAvKiBCdWlsZCB0aGUgcGVyc2lzdGVudCBxdWVzdGlvbiBsaXN0IE9OQ0U7IGF0dGFjaCAuX3EgdG8gZWFjaCBpdGVtL2JsYW5rIHNvCiAgICAgcmUtcmVuZGVyaW5nIGEgcGFydCByZXVzZXMgdGhlIHNhbWUgc3RhdGUgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdC4gKi8KICBmdW5jdGlvbiBpbml0UXVlc3Rpb25zKCl7CiAgICBRID0gW107CiAgICBSREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpewogICAgICBwYXJ0LmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uKGJsayl7CiAgICAgICAgaWYoYmxrLnR5cGU9PT0nY2xvemUnKXsKICAgICAgICAgIGJsay5ib2R5LmZvckVhY2goZnVuY3Rpb24odG9rKXsgaWYodHlwZW9mIHRvaz09PSdvYmplY3QnKXsgdG9rLl9xPXtzZWw6bnVsbCxrZXk6dG9rLmtleSxuOnRvay5iLHBhcnQ6cGFydC5pZH07IFEucHVzaCh0b2suX3EpOyB9IH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBibGsuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7IGl0Ll9xPXtzZWw6bnVsbCxrZXk6aXQua2V5LG46aXQubixwYXJ0OnBhcnQuaWR9OyBRLnB1c2goaXQuX3EpOyB9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBtYWtlRHJvcGRvd24ob3B0aW9ucywgcXJlZil7CiAgICB2YXIgZGQgPSBlbCgnc3BhbicsJ2NscHItZGQnKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywnY2xwci1kZC1idG4nKTsKICAgIHZhciB0eHQgPSBlbCgnc3BhbicsJ2NscHItZGQtdHh0IGNscHItZW1wdHknLCcgICAnKTsKICAgIHZhciBjYXJldCA9IGVsKCdzcGFuJywnY2xwci1kZC1jYXJldCcsJ1x1MjViZScpOwogICAgYnRuLmFwcGVuZENoaWxkKHR4dCk7IGJ0bi5hcHBlbmRDaGlsZChjYXJldCk7CiAgICB2YXIgc29sdmVkID0gZWwoJ3NwYW4nLCdjbHByLXNvbHZlZCcsJycpOwogICAgdmFyIG1lbnUgPSBlbCgnc3BhbicsJ2NscHItZGQtbWVudScpOwogICAgb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgaSl7CiAgICAgIHZhciBvID0gZWwoJ3NwYW4nLCdjbHByLWRkLW9wdCcpOwogICAgICBvLmFwcGVuZENoaWxkKGVsKCdzcGFuJywnY2xwci1yYWRpbycpKTsKICAgICAgby5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCxvcHQpKTsKICAgICAgby5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBpZihjaGVja2VkKSByZXR1cm47CiAgICAgICAgcXJlZi5zZWwgPSBpKzE7CiAgICAgICAgdHh0LnRleHRDb250ZW50ID0gb3B0OyB0eHQuY2xhc3NOYW1lPSdjbHByLWRkLXR4dCc7CiAgICAgICAgbWVudS5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwci1kZC1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnY2xwci1zZWwnKTt9KTsKICAgICAgICBvLmNsYXNzTGlzdC5hZGQoJ2NscHItc2VsJyk7CiAgICAgICAgY2xvc2VBbGwoKTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgfSk7CiAgICAgIG1lbnUuYXBwZW5kQ2hpbGQobyk7CiAgICB9KTsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGlmKGNoZWNrZWQpIHJldHVybjsKICAgICAgdmFyIHdhc09wZW4gPSBkZC5jbGFzc0xpc3QuY29udGFpbnMoJ2NscHItb3BlbicpOwogICAgICBjbG9zZUFsbCgpOwogICAgICBpZighd2FzT3BlbikgZGQuY2xhc3NMaXN0LmFkZCgnY2xwci1vcGVuJyk7CiAgICB9KTsKICAgIGRkLmFwcGVuZENoaWxkKGJ0bik7IGRkLmFwcGVuZENoaWxkKHNvbHZlZCk7IGRkLmFwcGVuZENoaWxkKG1lbnUpOwogICAgcXJlZi5kZEVsID0gZGQ7IHFyZWYudHh0RWwgPSB0eHQ7IHFyZWYuc29sdmVkRWwgPSBzb2x2ZWQ7IHFyZWYub3B0aW9ucyA9IG9wdGlvbnM7CiAgICBpZihxcmVmLnNlbCE9bnVsbCl7CiAgICAgIHR4dC50ZXh0Q29udGVudCA9IG9wdGlvbnNbcXJlZi5zZWwtMV07IHR4dC5jbGFzc05hbWU9J2NscHItZGQtdHh0JzsKICAgICAgdmFyIHNvID0gbWVudS5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwci1kZC1vcHQnKVtxcmVmLnNlbC0xXTsgaWYoc28pIHNvLmNsYXNzTGlzdC5hZGQoJ2NscHItc2VsJyk7CiAgICB9CiAgICByZXR1cm4gZGQ7CiAgfQogIGZ1bmN0aW9uIGNsb3NlQWxsKCl7IHdyYXAucXVlcnlTZWxlY3RvckFsbCgnLmNscHItZGQuY2xwci1vcGVuJykuZm9yRWFjaChmdW5jdGlvbihkKXtkLmNsYXNzTGlzdC5yZW1vdmUoJ2NscHItb3BlbicpO30pOyB9CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUFsbCk7CgogIGZ1bmN0aW9uIGJ1aWxkUGFydChwaSl7CiAgICB2YXIgcGFydCA9IFJEQVRBLnBhcnRzW3BpXTsKICAgIGNhdEVsLmlubmVySFRNTD0nJzsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywnY2xwci1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1iYXItdGl0bGUnLCAnUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyAnK3BhcnQubmFtZSkpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLWJhci10aW1lcicsJ1N1Z2dlc3RlZCB0aW1lOiA8Yj4nK3BhcnQudGltZSsnPC9iPicpKTsKICAgIGNhdEVsLmFwcGVuZENoaWxkKGJhcik7CiAgICB2YXIgY29scyA9IGVsKCdkaXYnLCdjbHByLWNvbHMnKTsKICAgIHZhciBsZWZ0ID0gZWwoJ2RpdicsJ2NscHItcGFzc2FnZScpOwogICAgbGVmdC5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1wbGFiZWwnLCBwYXJ0LnBhc3NhZ2UubGFiZWwpKTsKICAgIGlmKHBhcnQucGFzc2FnZS50eXBlPT09J2ltYWdlJyl7CiAgICAgIHZhciBpbWcgPSBlbCgnaW1nJywnY2xwci1waW1nJyk7IGltZy5zcmMgPSBwYXJ0LnBhc3NhZ2Uuc3JjOyBpbWcuYWx0ID0gcGFydC5wYXNzYWdlLmFsdHx8Jyc7IGxlZnQuYXBwZW5kQ2hpbGQoaW1nKTsKICAgIH0gZWxzZSB7CiAgICAgIGxlZnQuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsbnVsbCwgcGFydC5wYXNzYWdlLmh0bWwpKTsKICAgIH0KICAgIHZhciByaWdodCA9IGVsKCdkaXYnLCdjbHByLXFjb2wnKTsKICAgIHBhcnQuYmxvY2tzLmZvckVhY2goZnVuY3Rpb24oYmxvY2speyByaWdodC5hcHBlbmRDaGlsZChidWlsZEJsb2NrKGJsb2NrLCBwYXJ0KSk7IH0pOwogICAgY29scy5hcHBlbmRDaGlsZChsZWZ0KTsgY29scy5hcHBlbmRDaGlsZChyaWdodCk7CiAgICBjYXRFbC5hcHBlbmRDaGlsZChjb2xzKTsKICAgIHZhciBuYXYgPSBlbCgnZGl2JywnY2xwci1uYXYnKTsKICAgIHZhciBwcmV2ID0gZWwoJ2J1dHRvbicsJ2NscHItbmF2YnRuIGNscHItZ2hvc3QnLCdcdTIxOTAgUHJldmlvdXMgcGFydCcpOwogICAgdmFyIG5leHQgPSBlbCgnYnV0dG9uJywnY2xwci1uYXZidG4nLCdOZXh0IHBhcnQgXHUyMTkyJyk7CiAgICBwcmV2LmRpc2FibGVkID0gKHBpPT09MCk7IG5leHQuZGlzYWJsZWQgPSAocGk9PT1SREFUQS5wYXJ0cy5sZW5ndGgtMSk7CiAgICBwcmV2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgaWYocGk+MCkgZ28ocGktMSk7IH0pOwogICAgbmV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGlmKHBpPFJEQVRBLnBhcnRzLmxlbmd0aC0xKSBnbyhwaSsxKTsgfSk7CiAgICBuYXYuYXBwZW5kQ2hpbGQocHJldik7IG5hdi5hcHBlbmRDaGlsZChuZXh0KTsKICAgIGNhdEVsLmFwcGVuZENoaWxkKG5hdik7CiAgICBpZihjaGVja2VkKSBhcHBseU1hcmtzKCk7CiAgfQoKICBmdW5jdGlvbiBidWlsZEJsb2NrKGJsb2NrLCBwYXJ0KXsKICAgIHZhciB3cmFwQiA9IGVsKCdkaXYnLCdjbHByLWJsb2NrJyk7CiAgICB3cmFwQi5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1pbnN0cicsIGJsb2NrLmluc3RyKSk7CiAgICBpZihibG9jay50eXBlPT09J3N0ZW1saXN0Jyl7CiAgICAgIGJsb2NrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpewogICAgICAgIHZhciByb3cgPSBlbCgnZGl2JywnY2xwci1zdGVtJyk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywnY2xwci1zbnVtJywgaXQubisnLicpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsIGl0LnByZSsnICcpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQobWFrZURyb3Bkb3duKGl0Lm9wdGlvbnMsIGl0Ll9xKSk7CiAgICAgICAgd3JhcEIuYXBwZW5kQ2hpbGQocm93KTsKICAgICAgfSk7CiAgICB9IGVsc2UgaWYoYmxvY2sudHlwZT09PSdjbG96ZScpewogICAgICB2YXIgYm94ID0gZWwoJ2RpdicsJ2NscHItY2xvemUnKTsKICAgICAgYmxvY2suYm9keS5mb3JFYWNoKGZ1bmN0aW9uKHRvayl7CiAgICAgICAgaWYodHlwZW9mIHRvaz09PSdzdHJpbmcnKXsKICAgICAgICAgIHZhciBzZWdzID0gdG9rLnNwbGl0KCdcblxuJyk7CiAgICAgICAgICBzZWdzLmZvckVhY2goZnVuY3Rpb24oc2VnLCBpZHgpewogICAgICAgICAgICBpZihpZHg+MCl7IGJveC5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCwnPGJyPjxicj4nKSk7IH0KICAgICAgICAgICAgYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlZykpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJveC5hcHBlbmRDaGlsZChtYWtlRHJvcGRvd24odG9rLm9wdGlvbnMsIHRvay5fcSkpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHdyYXBCLmFwcGVuZENoaWxkKGJveCk7CiAgICB9IGVsc2UgaWYoYmxvY2sudHlwZT09PSdtYXRjaCcpewogICAgICBibG9jay5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKICAgICAgICB2YXIgcm93ID0gZWwoJ2RpdicsJ2NscHItbWF0Y2gtcm93Jyk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKG1ha2VEcm9wZG93bihibG9jay5sZXR0ZXJzLCBpdC5fcSkpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsJ2NscHItc251bScsIGl0Lm4rJy4nKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLCBpdC50ZXh0KSk7CiAgICAgICAgd3JhcEIuYXBwZW5kQ2hpbGQocm93KTsKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gd3JhcEI7CiAgfQoKICBmdW5jdGlvbiBidWlsZERvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUw9Jyc7CiAgICBSREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHAsIGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCdjbHByLWRvdCcrKGk9PT1jdXJQYXJ0PycgY2xwci1jdXInOicnKSk7CiAgICAgIGQuYXBwZW5kQ2hpbGQoZWwoJ2InLG51bGwsKGkrMSkpKTsKICAgICAgZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCxbJ0NvcnJlc3BvbmRlbmNlJywnQXBwbHkgYSBEaWFncmFtJywnSW5mb3JtYXRpb24nLCdWaWV3cG9pbnRzJ11baV0pKTsKICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGdvKGkpOyB9KTsKICAgICAgZG90c0VsLmFwcGVuZENoaWxkKGQpOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIGdvKHBpKXsgY3VyUGFydD1waTsgYnVpbGREb3RzKCk7IGJ1aWxkUGFydChwaSk7IGNhdEVsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7IH0KCiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICB2YXIgYW5zID0gUS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuc2VsIT1udWxsO30pLmxlbmd0aDsKICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9IGNoZWNrZWQgPyAoUS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuc2VsPT09cS5rZXk7fSkubGVuZ3RoKycgLyAnK1EubGVuZ3RoKycgY29ycmVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGFucysnIC8gJytRLmxlbmd0aCsnIGFuc3dlcmVkJyk7CiAgfQoKICBmdW5jdGlvbiBhcHBseU1hcmtzKCl7CiAgICBRLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICAgIGlmKCFxLmRkRWwpIHJldHVybjsKICAgICAgcS5kZEVsLmNsYXNzTGlzdC5yZW1vdmUoJ2NscHItcmlnaHQnLCdjbHByLXdyb25nJyk7CiAgICAgIGlmKHEuc2VsPT09cS5rZXkpeyBxLmRkRWwuY2xhc3NMaXN0LmFkZCgnY2xwci1yaWdodCcpOyB9CiAgICAgIGVsc2UgewogICAgICAgIHEuZGRFbC5jbGFzc0xpc3QuYWRkKCdjbHByLXdyb25nJyk7CiAgICAgICAgaWYocS5zb2x2ZWRFbCkgcS5zb2x2ZWRFbC50ZXh0Q29udGVudCA9ICdcdTI3MTMgJytxLm9wdGlvbnNbcS5rZXktMV07CiAgICAgICAgaWYocS5zZWw9PW51bGwgJiYgcS50eHRFbCl7IHEudHh0RWwudGV4dENvbnRlbnQ9JyhubyBhbnN3ZXIpJzsgcS50eHRFbC5jbGFzc05hbWU9J2NscHItZGQtdHh0JzsgfQogICAgICB9CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGRvQ2hlY2soKXsKICAgIGNoZWNrZWQgPSB0cnVlOwogICAgYXBwbHlNYXJrcygpOwogICAgdmFyIGNvcnJlY3QgPSBRLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcS5zZWw9PT1xLmtleTt9KS5sZW5ndGg7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIGNoZWNrQnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgIHZhciBieVBhcnQgPSB7fTsKICAgIFEuZm9yRWFjaChmdW5jdGlvbihxKXsgYnlQYXJ0W3EucGFydF09YnlQYXJ0W3EucGFydF18fHtjOjAsdDowfTsgYnlQYXJ0W3EucGFydF0udCsrOyBpZihxLnNlbD09PXEua2V5KWJ5UGFydFtxLnBhcnRdLmMrKzsgfSk7CiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGVSKGNvcnJlY3QpOwogICAgdmFyIHBpbGxzID0gUkRBVEEucGFydHMubWFwKGZ1bmN0aW9uKHApeyB2YXIgYj1ieVBhcnRbcC5pZF18fHtjOjAsdDowfTsgcmV0dXJuICc8c3BhbiBjbGFzcz0iY2xwci1yZXMtcGlsbCI+UGFydCAnK3AuaWQrJzogJytiLmMrJy8nK2IudCsnPC9zcGFuPic7IH0pLmpvaW4oJycpOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1jYXJkIj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLXRvcCI+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1zY29yZSI+Jytjb3JyZWN0Kyc8c3Bhbj4vJytRLmxlbmd0aCsnPC9zcGFuPjwvZGl2PicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtY2xiIj48Yj4nK2VzdC5sZXZlbCsnPC9iPjxzbWFsbD4nK2VzdC5ub3RlKycgJm1pZGRvdDsgZXN0aW1hdGVkIFJlYWRpbmcgYmFuZDwvc21hbGw+PC9kaXY+JwogICAgICArICc8L2Rpdj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLWJyZWFrIj4nK3BpbGxzKyc8L2Rpdj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLWFjdGlvbnMiPjxidXR0b24gY2xhc3M9ImNscHItbmF2YnRuIGNscHItZ2hvc3QiIGlkPSJjbHByUmV2aWV3Ij5SZXZpZXcgYW5zd2VycyBpbiBlYWNoIHBhcnQ8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJjbHByLW5hdmJ0biIgaWQ9ImNscHJSZXRyeSI+VHJ5IGFnYWluPC9idXR0b24+PC9kaXY+JwogICAgICArICc8cCBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpIj5Fc3RpbWF0ZWQgYmFuZCBpcyBhIHN0dWR5IGd1aWRlIG9ubHksIG5vdCBhbiBvZmZpY2lhbCBDRUxQSVAgc2NvcmUuIENvcnJlY3QgYW5zd2VycyBhcmUgc2hvd24gd2l0aCBhIGdyZWVuIGNoZWNrIG9uIGVhY2ggZHJvcC1kb3duIHlvdSBhbnN3ZXJlZCBpbmNvcnJlY3RseS48L3A+JwogICAgICArICc8L2Rpdj4nOwogICAgcmVzdWx0c0VsLmhpZGRlbiA9IGZhbHNlOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXRyeScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVzZXRBbGwpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXZpZXcnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGdvKDApOyB9KTsKICAgIHJlc3VsdHNFbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOwogIH0KCiAgZnVuY3Rpb24gcmVzZXRBbGwoKXsKICAgIGNoZWNrZWQ9ZmFsc2U7IGluaXRRdWVzdGlvbnMoKTsgY3VyUGFydD0wOwogICAgY2hlY2tCdG4uZGlzYWJsZWQ9ZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuPXRydWU7IHJlc3VsdHNFbC5pbm5lckhUTUw9Jyc7CiAgICBidWlsZERvdHMoKTsgYnVpbGRQYXJ0KDApOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICBzaW0uc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICB9CgogIHN0YXJ0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHdyYXAucXVlcnlTZWxlY3RvcignLmNscHItaGVybycpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgdG9vbGJhci5oaWRkZW49ZmFsc2U7IHNpbS5oaWRkZW49ZmFsc2U7CiAgICBpbml0UXVlc3Rpb25zKCk7IGN1clBhcnQ9MDsgY2hlY2tlZD1mYWxzZTsKICAgIGJ1aWxkRG90cygpOyBidWlsZFBhcnQoMCk7IHVwZGF0ZVNjb3JlQ2hpcCgpOwogIH0pOwogIGNoZWNrQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZG9DaGVjayk7CiAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEFsbCk7Cn0pKCk7\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Reading Set 3 Practice Test 1: 4 parts, 38 questions in the real exam format with instant scoring and answer key. About 55 minutes. 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-6311","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6311","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=6311"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6311\/revisions"}],"predecessor-version":[{"id":6580,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6311\/revisions\/6580"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}