{"id":6321,"date":"2026-07-10T13:56:46","date_gmt":"2026-07-10T13:56:46","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-4-test-1-reading\/"},"modified":"2026-07-12T03:24:48","modified_gmt":"2026-07-12T03:24:48","slug":"celpip-set-4-test-1-reading","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-4-test-1-reading\/","title":{"rendered":"CELPIP Reading \u2014 Set 4 \u00b7 Practice Test 1"},"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 4<\/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(\"J3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ0VMUElQIFJlYWRpbmcgXHUyMDE0IFByYWN0aWNlIFRlc3QgMSAoU2V0IDEpCiAgIFNvdXJjZTogUGFyYWdvbiBvZmZpY2lhbCAiUHJhY3RpY2UgVGVzdCAxIFNldCAxIC0gUmVhZGluZyIgKDM3IHBwKS4KICAgQWxsIHN0ZW1zLCBvcHRpb25zIGFuZCBrZXlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHByaW50ZWQgQW5zd2VyIEtleS4KICAgRGF0YSBtb2RlbDogcGFydHNbXSAtPiB7IHBhc3NhZ2UobGVmdCkgLCBibG9ja3NbXShyaWdodCkgfQogICAgIGJsb2NrLnR5cGU6ICdzdGVtbGlzdCcgfCAnY2xvemUnIHwgJ21hdGNoJwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFJEQVRBID0geyJ0ZXN0TGFiZWwiOiJQcmFjdGljZSBUZXN0IDEiLCJwYXJ0cyI6W3siaWQiOjEsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMTogUmVhZGluZyBDb3JyZXNwb25kZW5jZSIsInRpbWUiOiIxMCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuIiwiaHRtbCI6IjxwPkRlYXIgTXJzLiBKb2huc29uLDwvcD48cD5QbGVhc2UgYWNjZXB0IG15IGFwcGxpY2F0aW9uIGZvciB0aGUgcG9zaXRpb24gb2Ygc2FsZXMgY2xlcmsgaW4geW91ciBkZXBhcnRtZW50IHN0b3JlLCBhcyBhZHZlcnRpc2VkIG9uIHlvdXIgd2Vic2l0ZS4gSSBoYXZlIGhhZCB0aGUgcGxlYXN1cmUgb2YgcmV2aWV3aW5nIHlvdXIgY29tcGFueSZyc3F1bztzIHdlYnNpdGUgYW5kIGFtIHZlcnkgZW50aHVzaWFzdGljIGFib3V0IHRoZSBwb3NpdGlvbiBhZHZlcnRpc2VkLiBJIGJlbGlldmUgdGhhdCBteSBza2lsbHMgYW5kIGFiaWxpdGllcyBtYWtlIG1lIHRoZSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgdGhpcyBwb3NpdGlvbiwgYW5kIEkgd291bGQgYmUgYW4gYXNzZXQgdG8geW91ciBzYWxlcyB0ZWFtLjwvcD48cD5XaXRoIGZvdXIgeWVhcnMgb2YgZXhwZXJpZW5jZSBzZWxsaW5nIGZvb3R3ZWFyLCBhbmQgaGF2aW5nIHdvcmtlZCBmb3IgdHdvIHllYXJzIGluIGEgd29tZW4mcnNxdW87cyBjbG90aGluZyBzdG9yZSBhdCBhIGxvY2FsIG1hbGwsIEkgaGF2ZSBkZXZlbG9wZWQgZWZmZWN0aXZlIGN1c3RvbWVyIHNlcnZpY2UgdGVjaG5pcXVlcy4gSSBlbmpveSB3b3JraW5nIHdpdGggdGhlIHB1YmxpYywgYXNzaXN0aW5nIHNob3BwZXJzIGJ5IGlucXVpcmluZyBhYm91dCB0aGVpciBuZWVkcywgYW5kIHN1Z2dlc3Rpbmcgc3VpdGFibGUgcHJvZHVjdHMgdG8gbWVldCB0aGVpciB0YXN0ZXMgYW5kIGJ1ZGdldC4gVGhlIG1hbmFnZW1lbnQgdGVhbSBpbiB0aGUgY2xvdGhpbmcgc3RvcmUgd2hlcmUgSSB3b3JrZWQgcmVjb2duaXplZCBteSBzdHJvbmcgY3VzdG9tZXIgc2VydmljZSBza2lsbHMgYnkgY2hvb3NpbmcgbWUgYXMgJmxzcXVvO0VtcGxveWVlIG9mIHRoZSBNb250aCZyc3F1bzsgb24gbW9yZSB0aGFuIG9uZSBvY2Nhc2lvbi4gSSBjb21wbGV0ZWQgYSBjdXN0b21lciBzZXJ2aWNlIGNvdXJzZSBhdCBhIGxvY2FsIGNvbGxlZ2UsIGFuZCBhdHRlbmRlZCBhZGRpdGlvbmFsIHRyYWluaW5nIG9mZmVyZWQgYnkgbXkgZW1wbG95ZXIuPC9wPjxwPkFzIGEgc2FsZXMgYXNzb2NpYXRlLCBub3Qgb25seSBkaWQgSSBhc3Npc3QgY3VzdG9tZXJzLCBidXQgSSBhbHNvIGhhbmRsZWQgY2FzaCwgY3JlZGl0IGNhcmQsIGFuZCBkZWJpdCB0cmFuc2FjdGlvbnMuIEkgcHJvY2Vzc2VkIHJldHVybnMsIGFzIHdlbGwgYXMgcGVyZm9ybWVkIG9wZW5pbmcgYW5kIGNsb3NpbmcgcHJvY2VkdXJlcyBpbiB0aGUgc3RvcmUuIFRoZXNlIHJlc3BvbnNpYmlsaXRpZXMgc2hvdyB0aGUgbGV2ZWwgb2YgdHJ1c3QgdGhhdCBteSBlbXBsb3llcnMgcHV0IGluIG1lIGFuZCBteSBhYmlsaXRpZXMuIEZpbmFsbHksIHRoZSBzdG9yZSBlbnZpcm9ubWVudCByZXF1aXJlZCB0aGF0IHRoZSBzdGFmZiB3b3JrIGFzIHBhcnQgb2YgYSB0ZWFtLCB3aGljaCBpcyBvbmUgb2YgbXkgc3RyZW5ndGhzLiBJIGFtIGFsc28gY29tZm9ydGFibGUgd29ya2luZyBvbiBteSBvd24uIE90aGVyIGltcG9ydGFudCBza2lsbHMgSSBnYWluZWQgaW4gdGhhdCByb2xlIGluY2x1ZGUgY29tcGxldGluZyBzYWxlcyByZXBvcnRzLCBtZWV0aW5nIHNhbGVzIHRhcmdldHMsIGFuZCBvcmRlcmluZyBzdG9jay48L3A+PHA+UGxlYXNlIGZpbmQgYXR0YWNoZWQgYSByZXN1bWUgb3V0bGluaW5nIG15IHJldGFpbCBleHBlcmllbmNlLCBza2lsbHMsIGFuZCB0cmFpbmluZy4gSSBmZWVsIHRoYXQgdGhlc2UgcXVhbGlmaWNhdGlvbnMgZXF1aXAgbWUgdG8gbWFrZSBhIHZhbHVhYmxlIGNvbnRyaWJ1dGlvbiB0byB5b3VyIHJldGFpbCBlc3RhYmxpc2htZW50LiBJIHdvdWxkIGFwcHJlY2lhdGUgdGhlIG9wcG9ydHVuaXR5IHRvIGRpc2N1c3MgdGhlIHBvc2l0aW9uIHdpdGggeW91LiBJIHdpbGwgY29udGFjdCB5b3UgaW4gdGVuIGRheXMgdGltZSB0byBhbnN3ZXIgYW55IHF1ZXN0aW9ucyB5b3UgbWF5IGhhdmUgYW5kIHRvIHNlZSBpZiB5b3UgbmVlZCBhbnkgb3RoZXIgaW5mb3JtYXRpb24gZnJvbSBtZS4gVGhhbmsgeW91IGZvciB5b3VyIGNvbnNpZGVyYXRpb24uPC9wPjxwPlNpbmNlcmVseSw8YnI+QnJlbmRhIEFzaGJ1cm48L3A+In0sImJsb2NrcyI6W3sidHlwZSI6InN0ZW1saXN0IiwiaW5zdHIiOiJVc2luZyB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICksIGNob29zZSB0aGUgYmVzdCBvcHRpb24gYWNjb3JkaW5nIHRvIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBpbiB0aGUgbWVzc2FnZS4iLCJpdGVtcyI6W3sibiI6MSwicHJlIjoiQnJlbmRhIHdyb3RlIE1ycy4gSm9obnNvbiBhIiwib3B0aW9ucyI6WyJyZWZlcmVuY2UgbGV0dGVyLiIsImxldHRlciBvZiByZXF1ZXN0LiIsImxldHRlciBvZiBjb21wbGFpbnQuIiwiY292ZXIgbGV0dGVyLiJdLCJrZXkiOjR9LHsibiI6MiwicHJlIjoiTXJzLiBKb2huc29uIGFuZCBCcmVuZGEgYXJlIiwib3B0aW9ucyI6WyJlbXBsb3llciBhbmQgam9iIHNlZWtlci4iLCJlbXBsb3llZSBhbmQgY2xpZW50LiIsIm1hbmFnZXIgYW5kIGVtcGxveWVlLiIsImVtcGxveWVlIGFuZCBzYWxlcyByZXAuIl0sImtleSI6MX0seyJuIjozLCJwcmUiOiJCcmVuZGEgaXMgcmVzcG9uZGluZyB0byIsIm9wdGlvbnMiOlsiYSBsZXR0ZXIgZnJvbSBhIGNvLXdvcmtlci4iLCJhIG1lbW8gZnJvbSBhbiBlbXBsb3ltZW50IGNlbnRyZS4iLCJhIGpvYiBhZHZlcnRpc2VtZW50LiIsImEgcGVyc29uYWwgYWQuIl0sImtleSI6M30seyJuIjo0LCJwcmUiOiJCcmVuZGEgaGFzIHNob3duIHNoZSBpcyBnb29kIGF0Iiwib3B0aW9ucyI6WyJtYW5hZ2VtZW50LiIsImN1c3RvbWVyIHNlcnZpY2UuIiwidHJhaW5pbmcgb3RoZXJzLiIsIm1ha2luZyBhIGJ1ZGdldC4iXSwia2V5IjoyfSx7Im4iOjUsInByZSI6IkJ5IHdvcmtpbmcgaW4gcmV0YWlsLCBCcmVuZGEgbGVhcm5lZCBob3cgdG8iLCJvcHRpb25zIjpbInRydXN0IG90aGVycy4iLCJ3b3JrIGFzIHBhcnQgb2YgYSB0ZWFtLiIsIndyaXRlIGNoZXF1ZXMuIiwicnVuIHNhbGVzIG1lZXRpbmdzLiJdLCJrZXkiOjJ9LHsibiI6NiwicHJlIjoiQmVjYXVzZSBvZiBoZXIgc2tpbGxzLCBleHBlcmllbmNlLCBhbmQgdHJhaW5pbmcsIEJyZW5kYSB3aWxsIHByb2JhYmx5Iiwib3B0aW9ucyI6WyJoaXJlIE1ycy4gSm9obnNvbi4iLCJiZSBjYWxsZWQgZm9yIGFuIGludGVydmlldy4iLCJnZXQgYSBwcm9tb3Rpb24uIiwiYmVjb21lIFx1MjAxOEVtcGxveWVlIG9mIHRoZSBNb250aC5cdTIwMTkiXSwia2V5IjoyfV19LHsidHlwZSI6ImNsb3plIiwiaW5zdHIiOiJIZXJlIGlzIGEgcmVzcG9uc2UgdG8gdGhlIG1lc3NhZ2UuIENvbXBsZXRlIHRoZSByZXNwb25zZSBieSBmaWxsaW5nIGluIHRoZSBibGFua3MuIFNlbGVjdCB0aGUgYmVzdCBjaG9pY2UgZm9yIGVhY2ggYmxhbmsgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICkuIiwiYm9keSI6WyJEZWFyIE1zLiBBc2hidXJuLFxuXG5UaGFuayB5b3UgZm9yIHlvdXIgYXBwbGljYXRpb24gYW5kIGludGVyZXN0IGluIG91ciBjb21wYW55LiBJIGFtIGdsYWQgdG8gaGVhciB0aGF0IHlvdSBhcmUgIix7ImIiOjcsIm9wdGlvbnMiOlsiaGFwcHkgdG8gYmUiLCJub3QgdGlyZWQgb2YiLCJzdXJlIGFib3V0IiwiZXhjaXRlZCBhYm91dCJdLCJrZXkiOjR9LCIgd29ya2luZyBhdCBvdXIgc3RvcmUuXG5cbllvdSBtZW50aW9uZWQgdGhhdCB5b3Ugd29ya2VkIGluIGEgIix7ImIiOjgsIm9wdGlvbnMiOlsic3BvcnRzIHN0b3JlIiwiYm91dGlxdWUiLCJzaG9lIHN0b3JlIiwiY2FsbCBjZW50cmUiXSwia2V5IjozfSwiIGFuZCBhIHdvbWVuXHUyMDE5cyBjbG90aGluZyBzdG9yZS4gSG93ZXZlciwgIix7ImIiOjksIm9wdGlvbnMiOlsidGhlIHBvc2l0aW9uIGlzIGZvciBhIG1hbmFnZXIiLCJ3ZSBhcmUgbm90IGhpcmluZyBhbnlvbmUiLCJ0aGUgb3BlbmluZyB3ZSBoYXZlIGlzIiwidGhlIG1hbmFnZXIgaGFzIGV4cGVyaWVuY2UiXSwia2V5IjozfSwiIGluIHRoZSBob3VzZXdhcmVzIGRlcGFydG1lbnQuIERvIHlvdSBoYXZlIGFueSBleHBlcmllbmNlIGluIHRoaXMgYXJlYT8gV2UgZG8gb2ZmZXIgc29tZSB0cmFpbmluZywgYnV0IGl0XHUyMDE5cyBsaW1pdGVkLlxuXG5Zb3VyIGV4cGVyaWVuY2UgaGVscGluZyBjdXN0b21lcnMgYnkgIix7ImIiOjEwLCJvcHRpb25zIjpbInRhcmdldGluZyB0aGVpciBuZWVkcyIsImZpbmRpbmcgc29tZW9uZSB0byBoZWxwIHRoZW0iLCJzZWxsaW5nIHRoZW0gZXhwZW5zaXZlIGl0ZW1zIiwiZ2l2aW5nIHRoZW0gYSBkaXNjb3VudCJdLCJrZXkiOjF9LCIgYW5kIHN0YXlpbmcgd2l0aGluIHRoZWlyIHByaWNlIHJhbmdlIGlzIGV4YWN0bHkgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IuIFRoZSBmYWN0IHRoYXQgeW91IGhhdmUgZXhwZXJpZW5jZSAiLHsiYiI6MTEsIm9wdGlvbnMiOlsid2lubmluZyBhd2FyZHMiLCJwcm9jZXNzaW5nIHB1cmNoYXNlcyIsInRyYWluaW5nIHN0YWZmIiwib3BlbmluZyB0aGUgc3RvcmUiXSwia2V5IjoyfSwiIG1ha2VzIHlvdSBhIHN1aXRhYmxlIGNhbmRpZGF0ZSBmb3IgdGhlIHBvc2l0aW9uLCBhcyB0aGlzIGpvYiByZXF1aXJlcyBhIGxhcmdlIHZvbHVtZSBvZiBzYWxlcy5cblxuSSB3b3VsZCBsaWtlIHRvIG1lZXQgd2l0aCB5b3UgdG8gZGlzY3VzcyB5b3VyIHJlc3VtZSBhbmQgeW91ciBza2lsbHMuIE15IGFzc2lzdGFudCB3aWxsIGJlIGluIHRvdWNoIGluIHRoZSBuZXh0IGNvdXBsZSBvZiBkYXlzIHRvIHNjaGVkdWxlIGEgbWVldGluZy5cblxuU2luY2VyZWx5LFxuTXJzLiBKb2huc29uIl19XX0seyJpZCI6MiwibmFtZSI6IlJlYWRpbmcgUGFydCAyOiBSZWFkaW5nIHRvIEFwcGx5IGEgRGlhZ3JhbSIsInRpbWUiOiI4IG1pbnV0ZXMiLCJwYXNzYWdlIjp7InR5cGUiOiJ0ZXh0IiwibGFiZWwiOiJSZWFkIHRoZSBmb2xsb3dpbmcgZGlhZ3JhbS4iLCJodG1sIjoiPHN0eWxlPi5hZS1yY2ZseWVye2JvcmRlcjoxcHggc29saWQgI2NiZDVlMTtib3JkZXItcmFkaXVzOjhweDtvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOjE0cHh9LmFlLXJjaGVhZHtiYWNrZ3JvdW5kOiM3ZjlhM2M7Y29sb3I6I2ZmZjtwYWRkaW5nOjEycHggMTRweDt0ZXh0LWFsaWduOmNlbnRlcn0uYWUtcmNoZWFkIGgze21hcmdpbjowO2NvbG9yOiNmZmY7Zm9udC1zaXplOjE5cHh9LmFlLXJjaGVhZCBwe21hcmdpbjoycHggMCAwfS5hZS1yY2dyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxcHg7YmFja2dyb3VuZDojY2JkNWUxfS5hZS1yY2JveHtiYWNrZ3JvdW5kOiNlZWYyZTI7cGFkZGluZzoxMHB4IDEycHh9LmFlLXJjYm94IGg0e21hcmdpbjowIDAgNnB4O2NvbG9yOiM0ZDVmMjQ7Zm9udC1zaXplOjE1cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmFlLXJjYm94IHB7bWFyZ2luOjAgMCA2cHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS40fS5hZS1yY21lbXtiYWNrZ3JvdW5kOiNkZmU4Yzh9QG1lZGlhKG1heC13aWR0aDo1NjBweCl7LmFlLXJjZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfX08L3N0eWxlPjxkaXYgY2xhc3M9XCJhZS1yY2ZseWVyXCI+PGRpdiBjbGFzcz1cImFlLXJjaGVhZFwiPjxoMz5DbG92ZXJmb3JkIFJlY3JlYXRpb24gQ2VudHJlPC9oMz48cD48ZW0+RHJvcC1JbiBHcm91cCBGaXRuZXNzIENsYXNzZXM8L2VtPjwvcD48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtcmNncmlkXCI+PGRpdiBjbGFzcz1cImFlLXJjYm94XCI+PGg0PkV4dHJlbWUgQm9vdGNhbXA8L2g0PjxwPkFuIGFkdmFuY2VkIGxldmVsIHdvcmtvdXQgdGhhdCBpbmNyZWFzZXMgc3RhbWluYSwgc3RyZW5ndGgsIGFuZCBmbGV4aWJpbGl0eSB1c2luZyBhIHZhcmlldHkgb2YgZml0bmVzcyBhbmQgYXRobGV0aWMgY29uZGl0aW9uaW5nIGRyaWxscy48L3A+PHA+PHN0cm9uZz5EYXlzOjwvc3Ryb25nPiBUdWVzZGF5LCBUaHVyc2RheTxicj48c3Ryb25nPlRpbWU6PC9zdHJvbmc+IDc6MzAtODozMCBBTTxicj48c3Ryb25nPkFnZXM6PC9zdHJvbmc+IDE4Kzxicj48c3Ryb25nPkZlZTo8L3N0cm9uZz4gJDUgcGVyIHNlc3Npb24gb3IgRlJFRSBmb3IgbWVtYmVyczwvcD48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtcmNib3hcIj48aDQ+Q2lyY3VpdCBXZWlnaHQgVHJhaW5pbmc8L2g0PjxwPk1vdmUgdGhyb3VnaCB0aGUgd2VpZ2h0IHJvb20gYW5kIGxlYXJuIHRvIHVzZSB0aGUgc3RyZW5ndGggbWFjaGluZXMsIGZyZWUgd2VpZ2h0cywgYW5kIGNhcmRpbyBlcXVpcG1lbnQuPC9wPjxwPjxzdHJvbmc+RGF5czo8L3N0cm9uZz4gTW9uZGF5LCBXZWRuZXNkYXk8YnI+PHN0cm9uZz5UaW1lOjwvc3Ryb25nPiA4OjAwIFBNIHRvIDk6MTUgUE08YnI+PHN0cm9uZz5BZ2VzOjwvc3Ryb25nPiAxMysgKHVuZGVyIDE2IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYW4gYWR1bHQpPGJyPjxzdHJvbmc+RmVlOjwvc3Ryb25nPiAkNCBwZXIgY2xhc3Mgb3IgRlJFRSBmb3IgbWVtYmVyczwvcD48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtcmNib3hcIj48aDQ+QmVnaW5uZXIgU3BpbiBDbGFzczwvaDQ+PHA+Q3ljbGluZyB3b3Jrb3V0IHRoYXQgZmVhdHVyZXMgYSB2YXJpZXR5IG9mIGRyaWxscyBpbmNsdWRpbmcgaGlsbHMsIHNwcmludHMsIGFuZCBpbnRlcnZhbHMgb24gYSBub24taW1wYWN0LCBpbmRvb3Igc3RhdGlvbmFyeSBiaWN5Y2xlLjwvcD48cD48c3Ryb25nPkRheXM6PC9zdHJvbmc+IEZyaWRheTxicj48c3Ryb25nPlRpbWU6PC9zdHJvbmc+IDU6MTUgUE0gdG8gNjowMCBQTTxicj48c3Ryb25nPkFnZXM6PC9zdHJvbmc+IDE2Kzxicj48c3Ryb25nPkZlZTo8L3N0cm9uZz4gJDUgcGVyIGNsYXNzIG9yIEZSRUUgZm9yIG1lbWJlcnM8L3A+PC9kaXY+PGRpdiBjbGFzcz1cImFlLXJjYm94XCI+PGg0PkludGVybWVkaWF0ZSBQaWxhdGVzPC9oND48cD5BIGJvZHkgY29uZGl0aW9uaW5nIHJvdXRpbmUgd2hpY2ggZW1waGFzaXplcyBzcGluYWwgYWxpZ25tZW50IGFuZCBicmVhdGhpbmcuIEEgZ3JlYXQgd29ya291dCBmb3IgZGV2ZWxvcGluZyBhIHN0cm9uZyBjb3JlIGFuZCBpbXByb3ZpbmcgY29vcmRpbmF0aW9uIGFuZCBiYWxhbmNlLjwvcD48cD48c3Ryb25nPkRheXM6PC9zdHJvbmc+IFdlZG5lc2RheSwgRnJpZGF5PGJyPjxzdHJvbmc+VGltZTo8L3N0cm9uZz4gMTA6NDUgdG8gMTE6NDUgQU08YnI+PHN0cm9uZz5BZ2VzOjwvc3Ryb25nPiAxOCs8YnI+PHN0cm9uZz5GZWU6PC9zdHJvbmc+ICQ4IHBlciBjbGFzcyBvciBGUkVFIGZvciBtZW1iZXJzPC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1yY2JveFwiPjxoND5Zb2dhICZuZGFzaDsgQWR1bHRzIE9ubHk8L2g0PjxwPkRldmVsb3AgeW91ciBmbGV4aWJpbGl0eSBhbmQgc3RyZW5ndGggdGhyb3VnaCB0aGUgY29tcGxldGlvbiBvZiBhIGNvbWJpbmF0aW9uIG9mIHBvc3R1cmVzIGFuZCBicmVhdGhpbmcgZXhlcmNpc2VzLjwvcD48cD48c3Ryb25nPkRheXM6PC9zdHJvbmc+IE1vbmRheSwgV2VkbmVzZGF5LCBUaHVyc2RheTxicj48c3Ryb25nPlRpbWU6PC9zdHJvbmc+IDY6MzBQTSB0byA4OjAwUE08YnI+PHN0cm9uZz5BZ2VzOjwvc3Ryb25nPiAxOSs8YnI+PHN0cm9uZz5GZWU6PC9zdHJvbmc+ICQ4IHBlciBjbGFzcyBvciBGUkVFIGZvciBtZW1iZXJzPC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1yY2JveCBhZS1yY21lbVwiPjxoND5FbmpveSB0aGUgYmVuZWZpdHMgb2YgbWVtYmVyc2hpcCE8L2g0PjxwPkJlY29tZSBhIE1lbWJlciBhdCB0aGUgQ2xvdmVyZm9yZCBSZWNyZWF0aW9uIENlbnRyZSBhbmQgcmVjZWl2ZSB1bmxpbWl0ZWQgYWNjZXNzIHRvIG91ciBmYWNpbGl0aWVzIGFuZCBncm91cCBjbGFzc2VzLjwvcD48cD5SYXRlcyBzdGFydCBhdCA8c3Ryb25nPiQxOS45OTwvc3Ryb25nPiBwZXIgbW9udGggZm9yIGluZGl2aWR1YWxzIGFuZCA8c3Ryb25nPiQ2OS45OTwvc3Ryb25nPiBmb3IgZmFtaWxpZXMuPC9wPjwvZGl2PjwvZGl2PjwvZGl2PiJ9LCJibG9ja3MiOlt7InR5cGUiOiJjbG96ZSIsImluc3RyIjoiUmVhZCB0aGUgZm9sbG93aW5nIGVtYWlsIG1lc3NhZ2UgYWJvdXQgdGhlIGRpYWdyYW0gb24gdGhlIGxlZnQuIENvbXBsZXRlIHRoZSBlbWFpbCBieSBmaWxsaW5nIGluIHRoZSBibGFua3MuIFNlbGVjdCB0aGUgYmVzdCBjaG9pY2UgZm9yIGVhY2ggYmxhbmsgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICkuIiwiYm9keSI6WyJTdWJqZWN0OiBBcmUgeW91IGZyZWUgZm9yIGx1bmNoP1xuVG86IEFubmEgU21pdGggPGFuc21pdGhAZHVuZGVyc29uLmNvbT5cbkZyb206IEplYW5ldHRlIExlQmxhbmMgPGplYW5iQHNlcy5jb20+XG5cbkhpIEFubmEsXG5cblJlbWVtYmVyIGhvdyB5b3UgbWVudGlvbmVkIHdhbnRpbmcgdG8gYmUgbW9yZSBhY3RpdmU\/IFdlbGwsIEkgZ290IHRoaXMgZmx5ZXIgaW4gdGhlIG1haWwgZm9yIHRoZSByZWNyZWF0aW9uIGNlbnRyZSBuZWFyIG91ciBvZmZpY2UgYW5kIHRob3VnaHQgeW91IG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gIix7ImIiOjEsIm9wdGlvbnMiOlsic2lnbmluZyB1cCBmb3IgYSBkcm9wLWluIGNsYXNzIiwidHJ5aW5nIG91dCBhIHdlZWtlbmQgZml0bmVzcyBjbGFzcyIsInJlZ2lzdGVyaW5nIGZvciBhIGZyZWUgdHJpYWwgY2xhc3MiLCJqb2luaW5nIHRoZWlyIHRlYW0gc3BvcnRzIGxlYWd1ZSJdLCJrZXkiOjF9LCIuIElcdTIwMTlkIG9ubHkgYmUgYXZhaWxhYmxlIGV2ZW5pbmdzIHRob3VnaC4gU2luY2UgY2hhbmdpbmcgZGVwYXJ0bWVudHMsIElcdTIwMTltIGF0IG15IGRlc2sgYnkgNzowMCBhLm0uIGV2ZXJ5IGRheSAoSSBtaXNzIGdldHRpbmcgcGlja2VkIHVwIG9uIHlvdXIgd2F5IHRvIHdvcmshKS5cblxuQXMgZmFyIGFzIGNsYXNzZXMgZ28sIElcdTIwMTltIGhvcGluZyB0byBnZXQgaW4gc2hhcGUgYmVmb3JlIHN1bW1lciwgbWVhbmluZyBJXHUyMDE5ZCBsaWtlIHRvIGdvIGFzIG1hbnkgbmlnaHRzIGEgd2VlayBhcyBwb3NzaWJsZS4gU28gbXkgcHJlZmVyZW5jZSB3b3VsZCBiZSB0aGUgIix7ImIiOjIsIm9wdGlvbnMiOlsiQmVnaW5uZXIgU3BpbiBDbGFzcyIsIkNpcmN1aXQgV2VpZ2h0IFRyYWluaW5nIiwiSW50ZXJtZWRpYXRlIFBpbGF0ZXMiLCJZb2dhIGZvciBBZHVsdHMiXSwia2V5Ijo0fSwiIGNsYXNzLiBBY3R1YWxseSwgSVx1MjAxOW0gdHJ5aW5nIHRvIGNvbnZpbmNlIG15IGVudGlyZSBmYW1pbHkgdG8gZG8gdGhlIHNhbWUuIEhvd2V2ZXIsIHRoaXMgcGxhY2UgbWlnaHQgbm90IGJlIHRoZSBiZXN0IGZvciB0aGVtIHNpbmNlICIseyJiIjozLCJvcHRpb25zIjpbImNoaWxkcmVuIG11c3QgYmUgb3ZlciAxNiIsIm1vc3QgY2xhc3NlcyBhcmUgZm9yIHdvbWVuIiwidGhlcmUgaXNuXHUyMDE5dCBhIGZhbWlseSByYXRlIiwibW9zdCBjbGFzc2VzIGFyZSBmb3IgYWR1bHRzIl0sImtleSI6NH0sIi4gQW55d2F5cywgSSBrbm93IHlvdSBoYWQgbWVudGlvbmVkIHdhbnRpbmcgdG8gdHJ5IGEgYm9vdGNhbXAgY2xhc3MsIGJ1dCwgdW5mb3J0dW5hdGVseSwgaXQgaXNuXHUyMDE5dCAiLHsiYiI6NCwib3B0aW9ucyI6WyJhIGRyb3AtaW4gY2xhc3MiLCJtZWFudCBmb3IgYmVnaW5uZXJzIiwiYSBjaGFsbGVuZ2luZyB3b3Jrb3V0IiwiaW50ZW5kZWQgZm9yIGFkdWx0cyJdLCJrZXkiOjJ9LCIuIEhvcGVmdWxseSBvbmUgb2YgdGhlIG90aGVyIGNsYXNzZXMgd2lsbCB3b3JrLlxuXG5BbHNvLCBpZiB3ZSB3ZXJlIHRvIGJ1eSB0aGUgbW9udGhseSBtZW1iZXJzaGlwICIseyJiIjo1LCJvcHRpb25zIjpbIm91ciBodXNiYW5kcyBnZXQgZnJlZSBtZW1iZXJzaGlwcyIsIndlIGdldCBhIHJlZHVjZWQgcmF0ZSBvbiBjbGFzc2VzIiwib3VyIGZpcnN0IG1vbnRoIG9mIGNsYXNzZXMgYXJlIGZyZWUiLCJ3ZSBjYW4gYXR0ZW5kIGFueSBjbGFzcyBmb3IgZnJlZSJdLCJrZXkiOjR9LCIuIERlZmluaXRlbHkgd29ydGggY29uc2lkZXJpbmchXG5cbkxldCBtZSBrbm93ISFcblxuSmVhbmV0dGUiXX0seyJ0eXBlIjoic3RlbWxpc3QiLCJpbnN0ciI6IlVzaW5nIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKSwgY2hvb3NlIHRoZSBiZXN0IG9wdGlvbi4iLCJpdGVtcyI6W3sibiI6NiwicHJlIjoiV2hhdCBpcyBKZWFuZXR0ZVx1MjAxOXMgcmVsYXRpb25zaGlwIHRvIEFubmE\/Iiwib3B0aW9ucyI6WyJjbGllbnQiLCJmcmllbmQiLCJib3NzIiwibmVpZ2hib3VyIl0sImtleSI6Mn0seyJuIjo3LCJwcmUiOiJXaHkgZG9lcyBKZWFuZXR0ZSB3YW50IHRvIHRha2UgZXZlbmluZyBjbGFzc2VzPyIsIm9wdGlvbnMiOlsiU2hlIHdvcmtzIGluIHRoZSBtb3JuaW5nLiIsIlNoZSBjYW4gZ2V0IGEgcmlkZSB3aXRoIEFubmEuIiwiU2hlIHdhbnRzIHRvIGF2b2lkIGdldHRpbmcgdXAgZWFybHkuIiwiU2hlIHByZWZlcnMgdGhlIGNsYXNzZXMgYmVpbmcgb2ZmZXJlZC4iXSwia2V5IjoxfSx7Im4iOjgsInByZSI6IldoYXQgZG9lcyBKZWFuZXR0ZSB0aGluayBhYm91dCB0aGUgbWVtYmVyc2hpcD8iLCJvcHRpb25zIjpbIlRoZSBmYW1pbHkgbWVtYmVyc2hpcCB3b3VsZCBiZSBiZXN0LiIsIkl0XHUyMDE5cyBhIGdyZWF0IHZhbHVlIGZvciB0aGUgbW9uZXkuIiwiVGhlIHRyaWFsIG1lbWJlcnNoaXAgaXMgYSBnb29kIHByaWNlLiIsIkl0XHUyMDE5cyBub3QgYXMgZ29vZCBhcyBkcm9wLWluIGNsYXNzZXMuIl0sImtleSI6Mn1dfV19LHsiaWQiOjMsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMzogUmVhZGluZyBmb3IgSW5mb3JtYXRpb24iLCJ0aW1lIjoiOSBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIHBhc3NhZ2UuIiwiaHRtbCI6IjxwPjxzdHJvbmc+QS48L3N0cm9uZz4gSW4gdGhpcyBhZ2Ugb2YgZ2xvYmFsIGNvbm5lY3RlZG5lc3MgYW5kIHNvY2lhbCBuZXR3b3JraW5nLCBpdCBpcyBoYXJkIHRvIGltYWdpbmUgdGhhdCBsb3N0IHRyaWJlcyBzdGlsbCBleGlzdC4gSG93ZXZlciwgdGhlIFNlbnRpbmVsZXNlIHRyaWJlIG9mIHRoZSBBbmRhbWFuIElzbGFuZHMgYXJlIGp1c3QgdGhhdC4gVGhpcyBpbmRpZ2Vub3VzIGdyb3VwIGhhcyBiZWVuIGxpdmluZyBvbiBOb3J0aCBTZW50aW5lbCBJc2xhbmQgaW4gdGhlIEluZGlhbiBPY2VhbiZyc3F1bztzIEJheSBvZiBCZW5nYWwgZm9yIHRob3VzYW5kcyBvZiB5ZWFycy4gTGl2aW5nIG9uIGEgc2VhIHJvdXRlIHRoYXQgaGFzIGJlZW4gdHJhdmVsbGVkIHNpbmNlIGFuY2llbnQgdGltZXMsIHRoZSBTZW50aW5lbGVzZSBoYXZlIGltcHJlc3NpdmVseSBtYW5hZ2VkIHRvIGF2b2lkIGluZmx1ZW5jZSBmcm9tIG91dHNpZGUgY2l2aWxpemF0aW9ucy4gVGhleSBhcmUgdGhlIGxhc3QgdHJpYmUgb2YgdGhlIEFuZGFtYW4gSXNsYW5kcyB0byBtYWludGFpbiB0aGVpciBpc29sYXRpb24sIG1haW5seSBiZWNhdXNlIG9mIHRoZWlyIGhvc3RpbGUgcmVzaXN0YW5jZSB0byBvdXRzaWRlcnMmcnNxdW87IGF0dGVtcHRzIGF0IGNvbnRhY3QuPC9wPjxwPjxzdHJvbmc+Qi48L3N0cm9uZz4gRHVlIHRvIGxhY2sgb2YgYWNjZXNzLCBsaXR0bGUgaXMga25vd24gYWJvdXQgdGhlIFNlbnRpbmVsZXNlIHBlb3BsZS4gV2hhdCBrbm93bGVkZ2UgZXhpc3RzIGNvbWVzIGVpdGhlciBmcm9tIG9ic2VydmF0aW9uIGZyb20gYSBkaXN0YW5jZSBvciBpcyBiYXNlZCBvbiBjb21wYXJpc29uIHdpdGggb3RoZXIgQW5kYW1hbiB0cmliZXMuIEEgaHVudGVyLWdhdGhlcmVyIHNvY2lldHksIHRoZSBTZW50aW5lbGVzZSBzdWJzaXN0IG1haW5seSBieSBodW50aW5nLCBmaXNoaW5nLCBhbmQgY29sbGVjdGluZyB3aWxkIHBsYW50cywgYW5kIGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSBkZXZlbG9wZWQgYW55IGFncmljdWx0dXJhbCBwcmFjdGljZXMuIFRoZSBtYWpvcml0eSBvZiB0aGVpciB0b29scyBhbmQgd2VhcG9ucyBhcmUgbWFkZSBmcm9tIHN0b25lIGFuZCBhbmltYWwgYm9uZXM7IGhvd2V2ZXIsIHRoZXJlIGlzIHNvbWUgZXZpZGVuY2UgdGhhdCB0aGV5IG1ha2UgdXNlIG9mIG1ldGFsIGZyYWdtZW50cyB0aGF0IHdhc2ggYXNob3JlLiBUaGV5IHVzZSBqYXZlbGlucyBhbmQgZmxhdGJvd3MgYXMgd2VhcG9ucywgaW4gYWRkaXRpb24gdG8gYSB2YXJpZXR5IG9mIGFycm93cy4gQ2Fub2VzLCBuZXRzLCBhbmQgaGFycG9vbnMgc2VydmUgYXMgZmlzaGluZyBnZWFyLjwvcD48cD48c3Ryb25nPkMuPC9zdHJvbmc+IEJlY2F1c2UgY29udGFjdCB3aXRoIHRoZSBTZW50aW5lbGVzZSB0cmliZSBpcyBuZWFybHkgaW1wb3NzaWJsZSwgaXQgaXMgZGlmZmljdWx0IHRvIGVzdGltYXRlIHRoZSBzaXplIG9mIHRoZWlyIHBvcHVsYXRpb24uIEJhc2VkIG9uIGEgbGltaXRlZCBudW1iZXIgb2YgZW5jb3VudGVycyBieSBvdXRzaWRlcnMgYW5kIGF0dGVtcHRzIGJ5IGNlbnN1cyBvZmZpY2lhbHMgdG8gaW5mZXIgbnVtYmVycyBieSBjb3VudGluZyBmcm9tIGEgZGlzdGFuY2UsIGl0IGlzIGVzdGltYXRlZCB0aGF0IHRoZXJlIGNvdWxkIGJlIGFueXdoZXJlIGJldHdlZW4gMjAgYW5kIDYwIGluZGl2aWR1YWxzLiBUaGUgaXNsYW5kJnJzcXVvO3MgaW5oYWJpdGFudHMgdGVuZCB0byBsaXZlIGluIHR3byB0eXBlcyBvZiBkd2VsbGluZ3MuIFRoZXJlIGFyZSBzaGVsdGVyLXN0eWxlIGh1dHMgdGhhdCBjYW4gaG91c2UgYSBncm91cCBvZiB0aHJlZSBvciBmb3VyIHBlb3BsZS4gVGhlc2UgaHV0cyBoYXZlIG5vIHdhbGxzLCBhbmQgdGhlaXIgZmxvb3JzIGFyZSBjb3ZlcmVkIGluIHBhbG0gbGVhdmVzLiBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBtb3JlIGVsYWJvcmF0ZSBjb21tdW5hbCBodXRzIHdpdGggcmFpc2VkIGZsb29ycyBhbmQgc3BlY2lmaWMgYXJlYXMgZm9yIGZpcmUuPC9wPjxwPjxzdHJvbmc+RC48L3N0cm9uZz4gU3RhcnRpbmcgaW4gMTk2NywgYXR0ZW1wdHMgYXQgcGVhY2VmdWwgY29udGFjdCB3ZXJlIG1hZGUgYnkgdGhlIEluZGlhbiBnb3Zlcm5tZW50IHdpdGggdGhlIHN1cHBvcnQgb2YgYW50aHJvcG9sb2dpc3RzLiBEdXJpbmcgdGhlc2UgY29udGFjdCBleHBlZGl0aW9ucywgZ2lmdHMgb2YgY29jb251dHMgd2VyZSBsZWZ0IG9uIHRoZSBzaG9yZSBvbiBzZXZlcmFsIG9jY2FzaW9ucyBpbiBhbiBlZmZvcnQgdG8gZGltaW5pc2ggdGhlIGFnZ3Jlc3NpdmVuZXNzIHRoZSBTZW50aW5lbGVzZSBkZW1vbnN0cmF0ZWQgdG93YXJkIHN0cmFuZ2Vycy4gVGhlIEluZGlhbiBhdXRob3JpdGllcyBoYWQgbGltaXRlZCBzdWNjZXNzIGJlZm9yZSBmaW5hbGx5IGRpc2NvbnRpbnVpbmcgdGhlIGV4cGVkaXRpb25zIG91dCBvZiBjb25jZXJuIGZvciB0aGUgdHJpYmUuIER1ZSB0byB0aGVpciBpc29sYXRpb24gZnJvbSB0aGUgb3V0c2lkZSB3b3JsZCwgaXQgd2FzIGRlY2lkZWQgdGhhdCBjb250YWN0IHdpdGggdGhlIHRyaWJlIG9ubHkgcHV0IHRoZW0gYXQgcmlzayBvZiBjb250cmFjdGluZyBkaXNlYXNlcy4gU2luY2UgdGhlbiwgdGhlIGdvdmVybm1lbnQgcG9saWN5IGhhcyBiZWVuIHRvIGxlYXZlIHRoZSB0cmliZSBhbG9uZS48L3A+PHA+PHN0cm9uZz5FLjwvc3Ryb25nPiBOb3QgZ2l2ZW4gaW4gYW55IG9mIHRoZSBhYm92ZSBwYXJhZ3JhcGhzLjwvcD4ifSwiYmxvY2tzIjpbeyJ0eXBlIjoibWF0Y2giLCJpbnN0ciI6IkRlY2lkZSB3aGljaCBwYXJhZ3JhcGgsIEEgdG8gRCwgaGFzIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBpbiBlYWNoIHN0YXRlbWVudCBiZWxvdy4gU2VsZWN0IEUgaWYgdGhlIGluZm9ybWF0aW9uIGlzIG5vdCBnaXZlbiBpbiBhbnkgb2YgdGhlIHBhcmFncmFwaHMuIiwibGV0dGVycyI6WyJBIiwiQiIsIkMiLCJEIiwiRSJdLCJpdGVtcyI6W3sibiI6MSwidGV4dCI6IlNlbnRpbmVsZXNlIGlzb2xhdGlvbiBpcyBzdXJwcmlzaW5nIGJlY2F1c2UgdHJhdmVsbGVycyBoYXZlIGxvbmcga25vd24gYWJvdXQgdGhlaXIgaXNsYW5kLiIsImtleSI6MX0seyJuIjoyLCJ0ZXh0IjoiVGhlIEluZGlhbiBnb3Zlcm5tZW50IHVzZWQgdG8gbGVhdmUgZm9vZCBvZmZlcmluZ3MgZm9yIHRoZSBTZW50aW5lbGVzZS4iLCJrZXkiOjR9LHsibiI6MywidGV4dCI6IlRoZSBnb3Zlcm5tZW50IGlzIHBhc3NpbmcgYSBiaWxsIHRvIHByb3RlY3QgdGhlIFNlbnRpbmVsZXNlIGNvbW11bml0eSBmcm9tIG1vZGVybiBkaXNlYXNlcy4iLCJrZXkiOjV9LHsibiI6NCwidGV4dCI6IkNlbnN1cyBkYXRhIG9uIHRoZSBTZW50aW5lbGVzZSBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IGluZGlyZWN0IG9ic2VydmF0aW9uLiIsImtleSI6M30seyJuIjo1LCJ0ZXh0IjoiVGhlIEluZGlhbiBnb3Zlcm5tZW50IHN0b3BwZWQgdmlzaXRpbmcgdGhlIFNlbnRpbmVsZXNlIGZvciBmZWFyIG9mIGNvbnRhZ2lvbi4iLCJrZXkiOjR9LHsibiI6NiwidGV4dCI6IlRoZSBTZW50aW5lbGVzZSBhZ2dyZXNzaXZlbHkgcmVqZWN0IGFueSBvdXRzaWRlIHRlY2hub2xvZ3kgdGhhdCB3YXNoZXMgYXNob3JlLiIsImtleSI6NX0seyJuIjo3LCJ0ZXh0IjoiRm9vZCBwcm9kdWN0aW9uIG9uIE5vcnRoIFNlbnRpbmVsIElzbGFuZCBoYXMgcmVtYWluZWQgdmVyeSBiYXNpYy4iLCJrZXkiOjJ9LHsibiI6OCwidGV4dCI6IlRoZSBmbG9vcnMgaW4gU2VudGluZWxlc2UgaHV0cyBtYXkgYmUgZWxldmF0ZWQgb3IgY292ZXJlZCB3aXRoIGZvbGlhZ2UuIiwia2V5IjozfSx7Im4iOjksInRleHQiOiJUaGUgU2VudGluZWxlc2UgYXJlIHRoZSBsYXN0IHJlbWFpbmluZyB0cmliZSBvbiB0aGUgQW5kYW1hbiBJc2xhbmRzLiIsImtleSI6NX1dfV19LHsiaWQiOjQsIm5hbWUiOiJSZWFkaW5nIFBhcnQgNDogUmVhZGluZyBmb3IgVmlld3BvaW50cyIsInRpbWUiOiIxMiBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIGFydGljbGUgZnJvbSBhIHdlYnNpdGUuIiwiaHRtbCI6IjxwPldoZW4gYSBzbWFsbCB0b3duIGxvc2VzIGEgbWFqb3IgZW1wbG95ZXIsIHRoZSBpbXBhY3QgaXMgZW5vcm1vdXMuIENvbnNpZGVyIGEgY29tbXVuaXR5IG9mIGFib3V0IDIwLDAwMCBwZW9wbGUgd2hlcmUgMSwyMDAgYXJlIGVtcGxveWVkIGF0IG9uZSBidXNpbmVzcyB0aGF0IHN1ZGRlbmx5IGxheXMgb2ZmIGhhbGYgb2YgaXRzIGVtcGxveWVlcy4gVGhpcyBoYXBwZW5lZCByZWNlbnRseSBhdCBhIE5vdmEgU2NvdGlhIGZhY3RvcnksIFF1ZWVuc3RvbiBQYXBlci4gVGhlIDYwMCBkaXNtaXNzZWQgZW1wbG95ZWVzIHdlcmUgb2ZmZXJlZCByZWxvY2F0aW9uLCBlYXJseSByZXRpcmVtZW50LCBvciBzZXZlcmFuY2UgcGFja2FnZXMuIE9uZSBodW5kcmVkIGZpZnR5IG9mIHRoZSBwcmV2aW91cyBlbXBsb3llZXMgb3B0ZWQgdG8gcmVsb2NhdGUgdG8gYW5vdGhlciBRdWVlbnN0b24gUGFwZXIgZmFjdG9yeSBpbiBOb3ZhIFNjb3RpYS4gQWJvdXQgMjAwLCBwcmltYXJpbHkgdGhvc2UgaGF2aW5nIGJ1aWx0IHVwIGEgbGFyZ2UgZW5vdWdoIHBlbnNpb24sIGFyZSBjb25zaWRlcmluZyByZXRpcmVtZW50LiBNYW55IG90aGVycyB3aWxsIHJlY2VpdmUgYSBzZXZlcmFuY2UgcGFja2FnZSBvZiBtb3JlIHRoYW4gaGFsZiB0aGVpciBhbm51YWwgZWFybmluZ3MuIEhvd2V2ZXIsIG1hbnkgZmVlbCB0aGlzIGhhcyBsaXR0bGUgYXBwZWFsIHNpbmNlIGdvdmVybm1lbnQgdGF4ZXMgd2lsbCB0YWtlIGF0IGxlYXN0IDQwIHBlcmNlbnQuIFRoZSByZXN0IGhhdmUgeWV0IHRvIGNob29zZSB0aGVpciBmdXR1cmUuPC9wPjxwPkphbmljZSBXaXRoZXJzcG9vbiBzYXlzIHRoYXQgc2hlIGFuZCBoZXIgaHVzYmFuZCB3YW50ZWQgdG8gZW5qb3kgdGhlaXIgYXR0cmFjdGl2ZSBRdWVlbnN0b24gc2FsYXJpZXMgZm9yIGZpdmUgbW9yZSB5ZWFycy4gRmVlbGluZyBzZWN1cmUgaW4gd29ya2luZyBhdCB0aGUgNTAteWVhci1vbGQgZmFjdG9yeSBhbmQgd2l0aCB0aGVpciBzZW5pb3JpdHkgc3RhdHVzLCB0aGV5IGhhdmUgYmVlbiBzcGVuZGluZyBpbnN0ZWFkIG9mIHNhdmluZy4gTW92aW5nIGlzbiZyc3F1bzt0IGFuIG9wdGlvbiwgc2hlIHNheXMuIFJlYWwgZXN0YXRlIHByaWNlcyBhcmUgZmFyIGhpZ2hlciBhdCB0aGUgb3RoZXIgUXVlZW5zdG9uIFBhcGVyIHRvd24sIHNvIHRoZSBXaXRoZXJzcG9vbnMgd291bGQgZW5kIHVwIGluIGRlYnQgYWdhaW4uIFNoZSBzY29mZmVkIGF0IHRoZSByaWRpY3Vsb3VzIHNldmVyYW5jZSBwYWNrYWdlLiAmbGRxdW87VGhyZWUgY2hvaWNlcyZyZHF1bzssIHNoZSBzYXlzLCAmbGRxdW87YnV0IG5vdCBvbmUgaXMgcmVhbGx5IHZpYWJsZSBmb3IgdXMgYXQgdGhpcyB0aW1lIG9mIGxpZmUuJnJkcXVvOzwvcD48cD5HaW5ueSBSb3Vzc2VhdSBpcyBtb3JlIG9wdGltaXN0aWMuIEFuIGltbWlncmFudCBmcm9tIEZyYW5jZSwgR2lubnkgbG92ZXMgdGhlIGFyZWEuIFNoZSBhbmQgaGVyIGZhbWlseSBpbnRlbmQgdG8gc3RheS4gJmxkcXVvO0l0IGRvZXNuJnJzcXVvO3QgY29zdCBhIGxvdCB0byBsaXZlIGhlcmUsJnJkcXVvOyBzaGUgc2F5cywgJmxkcXVvO3NvIHdlJnJzcXVvO3JlIGdvaW5nIGZvciBlYXJseSByZXRpcmVtZW50LiBXZSZyc3F1bztyZSBhbHJlYWR5IGRvaW5nIGEgbGl0dGxlIGZhcm1pbmcsIGEgbGl0dGxlIGdhcmRlbmluZywgYW5kIHRyeWluZyB0byBiZSBzZWxmLXN1c3RhaW5hYmxlLiBJdCZyc3F1bztzIHZlcnkgcmV3YXJkaW5nLiZyZHF1bzsgTGlrZSBHaW5ueSwgbWFueSBRdWVlbnN0b24gUGFwZXIgZW1wbG95ZWVzIGFyZSBub3QgbmF0aXZlIHRvIENhbmFkYSwgYnV0IHRoZXkgZG9uJnJzcXVvO3QgYWxsIHNoYXJlIGhlciBjb21wbGFjZW5jeS4gV2l0aG91dCBqb2JzLCB0aGVzZSByZWxhdGl2ZSBuZXdjb21lcnMgaGF2ZSBubyByZWFzb24gdG8gcmVtYWluLiBRdWl0ZSBhIGZldyBoYXZlIHBhY2tlZCB0aGVpciBiYWdzIGFuZCBoZWFkZWQgd2VzdCBpbiBzZWFyY2ggb2Ygd29yay4gJmxkcXVvO0l0JnJzcXVvO3MgdW5mb3J0dW5hdGUmcmRxdW87LCBzYXlzIERhdmlkIFNhbnRvcywgYSBCcmF6aWxpYW4uICZsZHF1bztXaXRoIHRoZSBsb3cgY29zdCBvZiByZW50LCBJIGhhdmUgbWFuYWdlZCB0byBzYXZlIGEgbG90LiBJIGhhZCBob3BlZCB0byBldmVudHVhbGx5IHNhdmUgZW5vdWdoIHRvIGJyaW5nIG15IGZhbWlseSBvdmVyIGZyb20gQnJhemlsLiBUaGlzIHdvdWxkIGhhdmUgYmVlbiBhIGdyZWF0IHBsYWNlIGZvciBteSBraWRzIHRvIGdyb3cgdXAuIFdpdGhvdXQgd29yayB0aG91Z2gsIHRoZXJlIGlzIG5vIHBvaW50IGluIHN0aWNraW5nIGFyb3VuZC4mcmRxdW87PC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uIGFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gb24gdGhlIHdlYnNpdGUuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6IldoaWNoIG9wdGlvbiBpcyBsZWFzdCBhdHRyYWN0aXZlIHRvIHRoZSBsYWlkLW9mZiBlbXBsb3llZXM\/Iiwib3B0aW9ucyI6WyJlYXJseSByZXRpcmVtZW50IiwibW92aW5nIHJlaW1idXJzZW1lbnQiLCJyZWxvY2F0aW9uIiwic2V2ZXJhbmNlIHBhY2thZ2UiXSwia2V5Ijo0fSx7Im4iOjIsInByZSI6IldoYXQgZG8gRGF2aWQgYW5kIEdpbm55IGhhdmUgaW4gY29tbW9uPyIsIm9wdGlvbnMiOlsib3V0bG9va3MiLCJiYWNrZ3JvdW5kcyIsInNhdmluZ3MiLCJnb2FscyJdLCJrZXkiOjJ9LHsibiI6MywicHJlIjoiRGF2aWQgd291bGQgYWdyZWUgd2l0aCBKYW5pY2UgdGhhdCIsIm9wdGlvbnMiOlsibGF5b2ZmcyBzaG91bGQgYmUgYmFzZWQgb24gc2VuaW9yaXR5LiIsImhvdXNpbmcgaXMgYWZmb3JkYWJsZSBpbiB0aGVpciB0b3duLiIsInJlbG9jYXRpb24gaXMgdGhlIGJlc3QgY2hvaWNlLiIsInJldGlyZW1lbnQgaXMgYW4gYXR0cmFjdGl2ZSBvcHRpb24uIl0sImtleSI6Mn0seyJuIjo0LCJwcmUiOiJXaHkgYXJlIHNvbWUgb2YgdGhlIGxhaWQtb2ZmIGVtcGxveWVlcyBtb3ZpbmcgYXdheT8iLCJvcHRpb25zIjpbIkdldHRpbmcgaW50byBmYXJtaW5nIGlzIGVhc2llciBlbHNld2hlcmUuIiwiVGhleSBkbyBub3QgZmVlbCB3ZWxjb21lIGluIHRoZSBjb21tdW5pdHkuIiwiVGhleSB0b29rIGpvYnMgYXQgYW5vdGhlciBtYW51ZmFjdHVyaW5nIHBsYW50LiIsIkluZHVzdHJ5IHNhbGFyaWVzIGFyZSBoaWdoZXIgaW4gV2VzdGVybiBDYW5hZGEuIl0sImtleSI6M30seyJuIjo1LCJwcmUiOiJHaW5ueSBhbmQgRGF2aWQgd291bGQgYWdyZWUgdGhhdCIsIm9wdGlvbnMiOlsiRmFybWluZyBpcyBiZWNvbWluZyBtb3JlIGNvbW1vbiBpbiB0aGUgYXJlYS4iLCJUaGUgdG93biBpcyBhIHBsZWFzYW50IHBsYWNlIHRvIHNldHRsZSBkb3duLiIsIlBlb3BsZSBuZWVkIHRvIGdvIHdoZXJlIHRoZSBqb2JzIGFyZS4iLCJJdCBpcyBkaWZmaWN1bHQgZm9yIG5ld2NvbWVycyB0byBmaW5kIHdvcmsuIl0sImtleSI6Mn1dfSx7InR5cGUiOiJjbG96ZSIsImluc3RyIjoiVGhlIGZvbGxvd2luZyBpcyBhIGNvbW1lbnQgYnkgYSB2aXNpdG9yIHRvIHRoZSB3ZWJzaXRlIHBhZ2UuIENvbXBsZXRlIHRoZSBjb21tZW50IGJ5IGNob29zaW5nIHRoZSBiZXN0IG9wdGlvbiB0byBmaWxsIGluIGVhY2ggYmxhbmsuIiwiYm9keSI6WyJJdCBteXN0aWZpZXMgbWUgd2h5IHRob3NlIGxhaWQgb2ZmIGNvbXBsYWluIGFib3V0IHRoZWlyIHNpdHVhdGlvbi4gSm9icyBjb21lIGFuZCBnbzsgb3VyIHRvd24gaXMgbm90IHVuaXF1ZS4gSW4gbXkgb3BpbmlvbiwgdGhlc2UgcGVvcGxlIHdlcmUgbHVja3kgdG8gZ2V0IHN1Y2ggZ2VuZXJvdXMgbGF5b2ZmIG9wdGlvbnMuIFdoZW4gSSB3YXMgbGFpZCBvZmYgc2V2ZXJhbCB5ZWFycyBhZ28sIEkgd2FzIGNlcnRhaW5seSBub3Qgb2ZmZXJlZCAiLHsiYiI6Niwib3B0aW9ucyI6WyI0MCUgb2YgbXkgYW5udWFsIHNhbGFyeSIsInRoZSBvcHBvcnR1bml0eSB0byB3b3JrIGVsc2V3aGVyZSIsImNvbnRpbnVlZCBwZW5zaW9uIGNvbnRyaWJ1dGlvbnMiLCJmaW5hbmNpYWwgaGVscCB0byBtb3ZlIl0sImtleSI6Mn0sIi4gQWxzbywgd2h5IHdvdWxkIGFueW9uZSBiZSB1cHNldCBhYm91dCBoYXZpbmcgdG8gIix7ImIiOjcsIm9wdGlvbnMiOlsicGF5IGluY29tZSB0YXhlcyIsImNvbnRyaWJ1dGUgdG8gdGhlaXIgcGVuc2lvbiIsImNvdmVyIHRoZWlyIG1vdmluZyBjb3N0cyIsImRpcCBpbnRvIHRoZWlyIHNhdmluZ3MiXSwia2V5IjoxfSwiPyBUaGVzZSBjaGFyZ2VzIGFyZSBzdGFuZGFyZCwgc28gaXQgc2hvdWxkblx1MjAxOXQgYmUgc3VycHJpc2luZyB0byBzZWUgdGhlbSB0YWtlbiBmcm9tIGEgIix7ImIiOjgsIm9wdGlvbnMiOlsibGF5b2ZmIiwicmVsb2NhdGlvbiIsInJldGlyZW1lbnQiLCJzZXZlcmFuY2UiXSwia2V5Ijo0fSwiIGFncmVlbWVudC4gRnVydGhlcm1vcmUsIHRoZSB0YXggY3JlZGl0IHlvdSBnZXQgd2hlbiB5b3UgbW92ZSBjbG9zZXIgdG8geW91ciBqb2Igd291bGQgcGF5IGZvciB0aGUgZGlmZmVyZW5jZSBpbiAiLHsiYiI6OSwib3B0aW9ucyI6WyJjb21tdXRpbmcgY29zdHMiLCJhY2NvbW1vZGF0aW9uIGNvc3RzIiwiZ292ZXJubWVudCB0YXhlcyIsInNhbGFyaWVzIl0sImtleSI6Mn0sIiBiZXR3ZWVuIHRoZSBvbmUgdG93biBhbmQgdGhlIG90aGVyIFF1ZWVuc3RvbiBQYXBlciBsb2NhdGlvbi4gSSBhZ3JlZSB3aXRoICIseyJiIjoxMCwib3B0aW9ucyI6WyJRdWVlbnN0b24iLCJTYW50b3MiLCJSb3Vzc2VhdSIsIldpdGhlcnNwb29uIl0sImtleSI6M30sIiwgb25lIG5lZWRzIHRvIGxvb2sgb24gdGhlIGJyaWdodCBzaWRlIG9mIHRoZSBzaXR1YXRpb24uIl19XX1dfTsKCmZ1bmN0aW9uIGNsYkVzdGltYXRlUihyYXcpewogIGlmIChyYXcgPj0gMzUpIHJldHVybiB7IGxldmVsOidDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6J0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOidDRUxQSVAgOScsICBub3RlOidFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA4JywgIG5vdGU6J0dvb2QgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyMikgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA3JywgIG5vdGU6J0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOidDRUxQSVAgNicsICBub3RlOidEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOidDRUxQSVAgNScsICBub3RlOidBY3F1aXJpbmcgcHJvZmljaWVuY3knIH07CiAgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA0IG9yIGJlbG93Jywgbm90ZTonS2VlcCBwcmFjdGljaW5nIScgfTsKfQoKKGZ1bmN0aW9uKCl7CiAgLyogLS0tLSBpbmplY3Qgc2NvcGVkIENTUyAoV29yZFByZXNzLXNhZmU6IDxzdHlsZT4gaW4gY29udGVudCBjYW4gYmUgc3RyaXBwZWQpIC0tLS0gKi8KICB2YXIgQ1NTID0gYAouY2xwci13cmFwey0tbmF2eTojMDUwRTIwOy0tYjkwMDojMEQyMzUyOy0tYjcwMDojMTI0NUE4Oy0tYjUwMDojMjU2M0VCOy0tYjQwMDojM0I4MkY2Oy0tYjIwMDojOTNDNUZEOy0tYjEwMDojREJFQUZFOy0tYjUwOiNFRkY2RkY7LS10ZWFsOiMwRDk0ODg7LS1jeWFuOiMwNkI2RDQ7LS1ncmVlbjojMTBCOTgxOy0tZ3JlZW41MDojRUNGREY1Oy0tcm9zZTojRjQzRjVFOy0tdGV4dDojMEYxNzJBOy0tbXV0ZWQ6IzQ3NTU2OTstLXN1YnRsZTojOTRBM0I4Oy0tYm9yZGVyOiNFMkU4RjA7LS1iYXItYmc6I0U4RUJFRjstLWJhci1ib3JkZXI6I0QzRDlFMDstLWJhci10ZXh0OiMxRjI5Mzc7LS1wYW5lbC1wLWJnOiNGNEY1Rjc7LS1wYW5lbC1wLWJvcmRlcjojRTNFNkVBOy0tcGFuZWwtcS1iZzojRTlGNEY3Oy0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDstLWRkLW9wZW4tYmc6I0NCRUJGNDtmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO21heC13aWR0aDoxMTgwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjE2cHggMTZweCA1NnB4O2xpbmUtaGVpZ2h0OjEuNTtmb250LXNpemU6MTZweDt9Ci5jbHByLXdyYXAgKiwuY2xwci13cmFwICo6OmJlZm9yZSwuY2xwci13cmFwICo6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDt9Ci5jbHByLXdyYXAgYnV0dG9ue2ZvbnQtZmFtaWx5OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7fQouY2xwci13cmFwIGgxLC5jbHByLXdyYXAgaDIsLmNscHItd3JhcCBoMywuY2xwci13cmFwIHB7bWFyZ2luOjA7fQouY2xwci1oZXJve3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjIycHg7YmFja2dyb3VuZDp2YXIoLS1uYXZ5KTtjb2xvcjojZmZmO3BhZGRpbmc6MzRweCAzOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEzcHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpO30KLmNscHItYXVyb3Jhe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt9Ci5jbHByLWF1cm9yYSBzcGFue3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7ZmlsdGVyOmJsdXIoNDZweCk7b3BhY2l0eTouNTU7fQouY2xwci1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7d2lkdGg6NDIwcHg7aGVpZ2h0OjQyMHB4O2xlZnQ6LTEyMHB4O3RvcDotMjAwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTt9Ci5jbHByLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXt3aWR0aDozODBweDtoZWlnaHQ6MzgwcHg7cmlnaHQ6LTgwcHg7dG9wOi0xNjBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpO30KLmNscHItYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpe3dpZHRoOjM0MHB4O2hlaWdodDozNDBweDtyaWdodDoyMiU7Ym90dG9tOi0yNDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpO30KLmNscHItaGVyby1iYWRnZXN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt9Ci5jbHByLWJhZGdlLWJyYW5ke2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1iOTAwKTtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7cGFkZGluZzo0cHggMTFweDtib3JkZXItcmFkaXVzOjk5OXB4O2xldHRlci1zcGFjaW5nOi4wMWVtO30KLmNscHItYmFkZ2Utc2V0e2NvbG9yOnZhcigtLWIyMDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDt9Ci5jbHByLWhlcm8gaDF7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpO2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAyZW07bGluZS1oZWlnaHQ6MS4xMjt9Ci5jbHByLWhlcm8tc3Vie3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiNDN0QyRTM7Zm9udC1zaXplOjE0LjVweDttYXgtd2lkdGg6NzYwcHg7fQouY2xwci1oZXJvLWNoaXBze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30KLmNscHItY2hpcHtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojRTVFRUZCO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDgpO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTYpO3BhZGRpbmc6NXB4IDExcHg7Ym9yZGVyLXJhZGl1czo5OTlweDt9Ci5jbHByLWN0YXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjZweDtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNXB4O3BhZGRpbmc6MTJweCAyMnB4O2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OjAgMTJweCAyNHB4IC0xMHB4IHJnYmEoMzcsOTksMjM1LC44KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzLGJhY2tncm91bmQgLjE1czt9Ci5jbHByLWN0YTpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTtiYWNrZ3JvdW5kOnZhcigtLWI0MDApO30KLmNscHItdG9vbGJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21hcmdpbi10b3A6MThweDtwYWRkaW5nOjEwcHggMTRweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTRweDtib3gtc2hhZG93OjAgNnB4IDE4cHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjUpO3Bvc2l0aW9uOnN0aWNreTt0b3A6OHB4O3otaW5kZXg6MzA7fQouY2xwci10b29sYmFyW2hpZGRlbl17ZGlzcGxheTpub25lO30KLmNscHItdG9vbGJhci1zcGFjZXJ7ZmxleDoxO30KLmNscHItc2NvcmUtY2hpcHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjkwMCk7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O30KLmNscHItdGJ0bntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtwYWRkaW5nOjhweCAxNXB4O2JvcmRlci1yYWRpdXM6MTBweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTJzLGJveC1zaGFkb3cgLjEyczt9Ci5jbHByLXRidG46aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7Ym94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7fQouY2xwci10YnRuLWNoZWNre2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2JvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjt9Ci5jbHByLXRidG4tY2hlY2s6aG92ZXJ7YmFja2dyb3VuZDojMGNhNjc4O30KLmNscHItdGJ0bltkaXNhYmxlZF17b3BhY2l0eTouNTtjdXJzb3I6bm90LWFsbG93ZWQ7dHJhbnNmb3JtOm5vbmU7Ym94LXNoYWRvdzpub25lO30KLmNscHItc2lte21hcmdpbi10b3A6MTZweDt9Ci5jbHByLXNpbVtoaWRkZW5de2Rpc3BsYXk6bm9uZTt9Ci5jbHByLWRvdHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7bWFyZ2luOjAgMCAxMnB4IDJweDtmbGV4LXdyYXA6d3JhcDt9Ci5jbHByLWRvdHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmFsbCAuMTVzO30KLmNscHItZG90IGJ7ZGlzcGxheTppbmxpbmUtZmxleDt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tYjEwMCk7Y29sb3I6dmFyKC0tYjkwMCk7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjExcHg7fQouY2xwci1kb3QuY2xwci1jdXJ7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjt9Ci5jbHByLWRvdC5jbHByLWN1ciBie2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMjUpO2NvbG9yOiNmZmY7fQouY2xwci1kb3QuY2xwci1kb25lIGJ7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjt9Ci5jbHByLWNhdHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuNCk7fQouY2xwci1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjExcHggMTZweDtiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7fQouY2xwci1iYXItdGl0bGV7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWJhci10ZXh0KTtmbGV4OjE7bWluLXdpZHRoOjA7fQouY2xwci1iYXItdGltZXJ7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tYmFyLXRleHQpO3doaXRlLXNwYWNlOm5vd3JhcDt9Ci5jbHByLWJhci10aW1lciBie2ZvbnQtd2VpZ2h0OjgwMDt9Ci5jbHByLWNvbHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDowO30KLmNscHItcGFzc2FnZXtwYWRkaW5nOjIwcHggMjJweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXAtYmcpO2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tcGFuZWwtcC1ib3JkZXIpO21heC1oZWlnaHQ6MTIwMHB4O292ZXJmbG93OmF1dG87fQouY2xwci1xY29se3BhZGRpbmc6MThweCAyMnB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7bWF4LWhlaWdodDoxMjAwcHg7b3ZlcmZsb3c6YXV0bzt9Ci5jbHByLXBsYWJlbCwuY2xwci1pbnN0cntkaXNwbGF5OmZsZXg7Z2FwOjlweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTttYXJnaW4tYm90dG9tOjEycHg7fQouY2xwci1wbGFiZWw6OmJlZm9yZSwuY2xwci1pbnN0cjo6YmVmb3Jle2NvbnRlbnQ6ImkiO2ZsZXg6bm9uZTt3aWR0aDoxN3B4O2hlaWdodDoxN3B4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo4MDA7Zm9udC1zdHlsZTppdGFsaWM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MXB4O30KLmNscHItcGFzc2FnZSBwe2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzFlMmEzYTttYXJnaW4tYm90dG9tOjExcHg7bGluZS1oZWlnaHQ6MS43Mjt9Ci5jbHByLXBpbWd7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXAtYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmZmY7ZGlzcGxheTpibG9jazt9Ci5jbHByLWJsb2Nre2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNnB4IDE2cHg7bWFyZ2luLWJvdHRvbToxNnB4O30KLmNscHItc3RlbXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7ZmxleC13cmFwOndyYXA7Zm9udC1zaXplOjE1cHg7Y29sb3I6dmFyKC0tdGV4dCk7cGFkZGluZzo5cHggMDtsaW5lLWhlaWdodDoxLjc7fQouY2xwci1zdGVtICsgLmNscHItc3RlbXtib3JkZXItdG9wOjFweCBkYXNoZWQgI0U2RURGMTt9Ci5jbHByLXNudW17Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOnZhcigtLWI3MDApO30KLmNscHItY2xvemV7Zm9udC1zaXplOjE1cHg7Y29sb3I6dmFyKC0tdGV4dCk7bGluZS1oZWlnaHQ6Mi4xNTt9Ci5jbHByLWNsb3plIC5jbHByLXBhcmF7bWFyZ2luLWJvdHRvbToxMnB4O3doaXRlLXNwYWNlOnByZS13cmFwO30KLmNscHItbWF0Y2gtcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTFweCAwO2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42O30KLmNscHItbWF0Y2gtcm93ICsgLmNscHItbWF0Y2gtcm93e2JvcmRlci10b3A6MXB4IGRhc2hlZCAjRTZFREYxO30KLmNscHItbWF0Y2gtcm93IC5jbHByLXNudW17bWFyZ2luLXRvcDo1cHg7fQovKiBkcm9wZG93biB3aWRnZXQgKi8KLmNscHItZGR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtZmxleDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjJweCAycHg7fQouY2xwci1kZC1idG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttaW4td2lkdGg6NjRweDttYXgtd2lkdGg6MzQwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0I3QzJDRTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjVweCA5cHg7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS10ZXh0KTtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246bGVmdDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjEycyxib3JkZXItY29sb3IgLjEyczt9Ci5jbHByLWRkLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO30KLmNscHItZGQuY2xwci1vcGVuIC5jbHByLWRkLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9Ci5jbHByLWRkLXR4dHtmbGV4OjE7bWluLXdpZHRoOjA7fQouY2xwci1kZC10eHQuY2xwci1lbXB0eXtjb2xvcjp2YXIoLS1zdWJ0bGUpO2xldHRlci1zcGFjaW5nOjNweDt9Ci5jbHByLWRkLWNhcmV0e2ZvbnQtc2l6ZTo5cHg7Y29sb3I6dmFyKC0tYjcwMCk7ZmxleDpub25lO30KLmNscHItZGQtbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjYwO3RvcDpjYWxjKDEwMCUgKyA0cHgpO2xlZnQ6MDttaW4td2lkdGg6MjQwcHg7bWF4LXdpZHRoOjM2MHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNDNkQwREE7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDE2cHggMzRweCAtMTJweCByZ2JhKDE1LDIzLDQyLC40KTtwYWRkaW5nOjVweDtkaXNwbGF5Om5vbmU7fQouY2xwci1kZC5jbHByLW9wZW4gLmNscHItZGQtbWVudXtkaXNwbGF5OmJsb2NrO30KLmNscHItZGQtb3B0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo5cHg7cGFkZGluZzo4cHggOXB4O2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tdGV4dCk7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6MS40O30KLmNscHItZGQtb3B0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYjUwKTt9Ci5jbHByLWRkLW9wdCAuY2xwci1yYWRpb3tmbGV4Om5vbmU7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MS41cHggc29saWQgIzlBQTdCNDttYXJnaW4tdG9wOjFweDt9Ci5jbHByLWRkLW9wdC5jbHByLXNlbCAuY2xwci1yYWRpb3tib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgNDIlLCNmZmYgNDclKTt9Ci5jbHByLWRkLmNscHItcmlnaHQgLmNscHItZGQtYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7Y29sb3I6IzA0Nzg1Nzt9Ci5jbHByLWRkLmNscHItd3JvbmcgLmNscHItZGQtYnRue2JhY2tncm91bmQ6I0ZGRjFGMjtib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpO2NvbG9yOiNCRTEyM0M7fQouY2xwci1zb2x2ZWR7ZGlzcGxheTpub25lO21hcmdpbi1sZWZ0OjdweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMDQ3ODU3O30KLmNscHItZGQuY2xwci13cm9uZyAuY2xwci1zb2x2ZWR7ZGlzcGxheTppbmxpbmU7fQouY2xwci1uYXZ7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTRweCAxOHB4O2JhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTt9Ci5jbHByLW5hdmJ0bntiYWNrZ3JvdW5kOnZhcigtLWI5MDApO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7cGFkZGluZzo5cHggMjBweDtib3JkZXItcmFkaXVzOjlweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTJzLGJhY2tncm91bmQgLjEyczt9Ci5jbHByLW5hdmJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWI3MDApO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO30KLmNscHItbmF2YnRuLmNscHItZ2hvc3R7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO30KLmNscHItbmF2YnRuW2Rpc2FibGVkXXtvcGFjaXR5Oi40O2N1cnNvcjpub3QtYWxsb3dlZDt0cmFuc2Zvcm06bm9uZTt9Ci5jbHByLXJlc3VsdHN7bWFyZ2luLXRvcDoxOHB4O30KLmNscHItcmVzdWx0c1toaWRkZW5de2Rpc3BsYXk6bm9uZTt9Ci5jbHByLXJlcy1jYXJke2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxOHB4O3BhZGRpbmc6MjRweCAyNnB4O2JveC1zaGFkb3c6MCAxNnB4IDQwcHggLTIycHggcmdiYSgxNSwyMyw0MiwuNCk7fQouY2xwci1yZXMtdG9we2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjIwcHg7ZmxleC13cmFwOndyYXA7fQouY2xwci1yZXMtc2NvcmV7Zm9udC1zaXplOjQ0cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOnZhcigtLWI3MDApO2xpbmUtaGVpZ2h0OjE7fQouY2xwci1yZXMtc2NvcmUgc3Bhbntmb250LXNpemU6MjBweDtjb2xvcjp2YXIoLS1zdWJ0bGUpO30KLmNscHItcmVzLWNsYntiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxMHB4IDE2cHg7fQouY2xwci1yZXMtY2xiIGJ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MThweDtjb2xvcjp2YXIoLS1iOTAwKTt9Ci5jbHByLXJlcy1jbGIgc21hbGx7Y29sb3I6dmFyKC0tbXV0ZWQpO30KLmNscHItcmVzLWJyZWFre2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjE2cHg7fQouY2xwci1yZXMtcGlsbHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpO2JhY2tncm91bmQ6I0YxRjVGOTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NnB4IDEzcHg7fQouY2xwci1yZXMtYWN0aW9uc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7bWFyZ2luLXRvcDoxOHB4O2ZsZXgtd3JhcDp3cmFwO30KQG1lZGlhKG1heC13aWR0aDo4MjBweCl7LmNscHItY29sc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uY2xwci1wYXNzYWdle2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLXBhbmVsLXAtYm9yZGVyKTttYXgtaGVpZ2h0Om5vbmU7fS5jbHByLXFjb2x7bWF4LWhlaWdodDpub25lO319CmA7CiAgdmFyIHN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsgc3QudGV4dENvbnRlbnQgPSBDU1M7IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpOwogIHZhciB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJXcmFwJyk7CiAgdmFyIHN0YXJ0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJTdGFydCcpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJUb29sYmFyJyk7CiAgdmFyIHNpbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByU2ltJyk7CiAgdmFyIGRvdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByRG90cycpOwogIHZhciBjYXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByQ2F0Jyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmVzdWx0cycpOwogIHZhciBzY29yZUNoaXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclNjb3JlQ2hpcCcpOwogIHZhciBjaGVja0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByQ2hlY2snKTsKICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJlc2V0Jyk7CgogIHZhciBRID0gW107CiAgdmFyIGN1clBhcnQgPSAwOwogIHZhciBjaGVja2VkID0gZmFsc2U7CgogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCBodG1sKXsgdmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOyBpZihjbHMpZS5jbGFzc05hbWU9Y2xzOyBpZihodG1sIT1udWxsKWUuaW5uZXJIVE1MPWh0bWw7IHJldHVybiBlOyB9CgogIC8qIEJ1aWxkIHRoZSBwZXJzaXN0ZW50IHF1ZXN0aW9uIGxpc3QgT05DRTsgYXR0YWNoIC5fcSB0byBlYWNoIGl0ZW0vYmxhbmsgc28KICAgICByZS1yZW5kZXJpbmcgYSBwYXJ0IHJldXNlcyB0aGUgc2FtZSBzdGF0ZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0LiAqLwogIGZ1bmN0aW9uIGluaXRRdWVzdGlvbnMoKXsKICAgIFEgPSBbXTsKICAgIFJEQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCl7CiAgICAgIHBhcnQuYmxvY2tzLmZvckVhY2goZnVuY3Rpb24oYmxrKXsKICAgICAgICBpZihibGsudHlwZT09PSdjbG96ZScpewogICAgICAgICAgYmxrLmJvZHkuZm9yRWFjaChmdW5jdGlvbih0b2speyBpZih0eXBlb2YgdG9rPT09J29iamVjdCcpeyB0b2suX3E9e3NlbDpudWxsLGtleTp0b2sua2V5LG46dG9rLmIscGFydDpwYXJ0LmlkfTsgUS5wdXNoKHRvay5fcSk7IH0gfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJsay5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsgaXQuX3E9e3NlbDpudWxsLGtleTppdC5rZXksbjppdC5uLHBhcnQ6cGFydC5pZH07IFEucHVzaChpdC5fcSk7IH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIG1ha2VEcm9wZG93bihvcHRpb25zLCBxcmVmKXsKICAgIHZhciBkZCA9IGVsKCdzcGFuJywnY2xwci1kZCcpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCdjbHByLWRkLWJ0bicpOwogICAgdmFyIHR4dCA9IGVsKCdzcGFuJywnY2xwci1kZC10eHQgY2xwci1lbXB0eScsJyAgICcpOwogICAgdmFyIGNhcmV0ID0gZWwoJ3NwYW4nLCdjbHByLWRkLWNhcmV0JywnXHUyNWJlJyk7CiAgICBidG4uYXBwZW5kQ2hpbGQodHh0KTsgYnRuLmFwcGVuZENoaWxkKGNhcmV0KTsKICAgIHZhciBzb2x2ZWQgPSBlbCgnc3BhbicsJ2NscHItc29sdmVkJywnJyk7CiAgICB2YXIgbWVudSA9IGVsKCdzcGFuJywnY2xwci1kZC1tZW51Jyk7CiAgICBvcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBpKXsKICAgICAgdmFyIG8gPSBlbCgnc3BhbicsJ2NscHItZGQtb3B0Jyk7CiAgICAgIG8uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCdjbHByLXJhZGlvJykpOwogICAgICBvLmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLG9wdCkpOwogICAgICBvLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGlmKGNoZWNrZWQpIHJldHVybjsKICAgICAgICBxcmVmLnNlbCA9IGkrMTsKICAgICAgICB0eHQudGV4dENvbnRlbnQgPSBvcHQ7IHR4dC5jbGFzc05hbWU9J2NscHItZGQtdHh0JzsKICAgICAgICBtZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHByLWRkLW9wdCcpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdjbHByLXNlbCcpO30pOwogICAgICAgIG8uY2xhc3NMaXN0LmFkZCgnY2xwci1zZWwnKTsKICAgICAgICBjbG9zZUFsbCgpOwogICAgICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgICB9KTsKICAgICAgbWVudS5hcHBlbmRDaGlsZChvKTsKICAgIH0pOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgaWYoY2hlY2tlZCkgcmV0dXJuOwogICAgICB2YXIgd2FzT3BlbiA9IGRkLmNsYXNzTGlzdC5jb250YWlucygnY2xwci1vcGVuJyk7CiAgICAgIGNsb3NlQWxsKCk7CiAgICAgIGlmKCF3YXNPcGVuKSBkZC5jbGFzc0xpc3QuYWRkKCdjbHByLW9wZW4nKTsKICAgIH0pOwogICAgZGQuYXBwZW5kQ2hpbGQoYnRuKTsgZGQuYXBwZW5kQ2hpbGQoc29sdmVkKTsgZGQuYXBwZW5kQ2hpbGQobWVudSk7CiAgICBxcmVmLmRkRWwgPSBkZDsgcXJlZi50eHRFbCA9IHR4dDsgcXJlZi5zb2x2ZWRFbCA9IHNvbHZlZDsgcXJlZi5vcHRpb25zID0gb3B0aW9uczsKICAgIGlmKHFyZWYuc2VsIT1udWxsKXsKICAgICAgdHh0LnRleHRDb250ZW50ID0gb3B0aW9uc1txcmVmLnNlbC0xXTsgdHh0LmNsYXNzTmFtZT0nY2xwci1kZC10eHQnOwogICAgICB2YXIgc28gPSBtZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHByLWRkLW9wdCcpW3FyZWYuc2VsLTFdOyBpZihzbykgc28uY2xhc3NMaXN0LmFkZCgnY2xwci1zZWwnKTsKICAgIH0KICAgIHJldHVybiBkZDsKICB9CiAgZnVuY3Rpb24gY2xvc2VBbGwoKXsgd3JhcC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwci1kZC5jbHByLW9wZW4nKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuY2xhc3NMaXN0LnJlbW92ZSgnY2xwci1vcGVuJyk7fSk7IH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlQWxsKTsKCiAgZnVuY3Rpb24gYnVpbGRQYXJ0KHBpKXsKICAgIHZhciBwYXJ0ID0gUkRBVEEucGFydHNbcGldOwogICAgY2F0RWwuaW5uZXJIVE1MPScnOwogICAgdmFyIGJhciA9IGVsKCdkaXYnLCdjbHByLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLWJhci10aXRsZScsICdQcmFjdGljZSBUZXN0IDEgXHUyMDEzICcrcGFydC5uYW1lKSk7CiAgICBiYXIuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItYmFyLXRpbWVyJywnU3VnZ2VzdGVkIHRpbWU6IDxiPicrcGFydC50aW1lKyc8L2I+JykpOwogICAgY2F0RWwuYXBwZW5kQ2hpbGQoYmFyKTsKICAgIHZhciBjb2xzID0gZWwoJ2RpdicsJ2NscHItY29scycpOwogICAgdmFyIGxlZnQgPSBlbCgnZGl2JywnY2xwci1wYXNzYWdlJyk7CiAgICBsZWZ0LmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLXBsYWJlbCcsIHBhcnQucGFzc2FnZS5sYWJlbCkpOwogICAgaWYocGFydC5wYXNzYWdlLnR5cGU9PT0naW1hZ2UnKXsKICAgICAgdmFyIGltZyA9IGVsKCdpbWcnLCdjbHByLXBpbWcnKTsgaW1nLnNyYyA9IHBhcnQucGFzc2FnZS5zcmM7IGltZy5hbHQgPSBwYXJ0LnBhc3NhZ2UuYWx0fHwnJzsgbGVmdC5hcHBlbmRDaGlsZChpbWcpOwogICAgfSBlbHNlIHsKICAgICAgbGVmdC5hcHBlbmRDaGlsZChlbCgnZGl2JyxudWxsLCBwYXJ0LnBhc3NhZ2UuaHRtbCkpOwogICAgfQogICAgdmFyIHJpZ2h0ID0gZWwoJ2RpdicsJ2NscHItcWNvbCcpOwogICAgcGFydC5ibG9ja3MuZm9yRWFjaChmdW5jdGlvbihibG9jayl7IHJpZ2h0LmFwcGVuZENoaWxkKGJ1aWxkQmxvY2soYmxvY2ssIHBhcnQpKTsgfSk7CiAgICBjb2xzLmFwcGVuZENoaWxkKGxlZnQpOyBjb2xzLmFwcGVuZENoaWxkKHJpZ2h0KTsKICAgIGNhdEVsLmFwcGVuZENoaWxkKGNvbHMpOwogICAgdmFyIG5hdiA9IGVsKCdkaXYnLCdjbHByLW5hdicpOwogICAgdmFyIHByZXYgPSBlbCgnYnV0dG9uJywnY2xwci1uYXZidG4gY2xwci1naG9zdCcsJ1x1MjE5MCBQcmV2aW91cyBwYXJ0Jyk7CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCdjbHByLW5hdmJ0bicsJ05leHQgcGFydCBcdTIxOTInKTsKICAgIHByZXYuZGlzYWJsZWQgPSAocGk9PT0wKTsgbmV4dC5kaXNhYmxlZCA9IChwaT09PVJEQVRBLnBhcnRzLmxlbmd0aC0xKTsKICAgIHByZXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBpZihwaT4wKSBnbyhwaS0xKTsgfSk7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgaWYocGk8UkRBVEEucGFydHMubGVuZ3RoLTEpIGdvKHBpKzEpOyB9KTsKICAgIG5hdi5hcHBlbmRDaGlsZChwcmV2KTsgbmF2LmFwcGVuZENoaWxkKG5leHQpOwogICAgY2F0RWwuYXBwZW5kQ2hpbGQobmF2KTsKICAgIGlmKGNoZWNrZWQpIGFwcGx5TWFya3MoKTsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkQmxvY2soYmxvY2ssIHBhcnQpewogICAgdmFyIHdyYXBCID0gZWwoJ2RpdicsJ2NscHItYmxvY2snKTsKICAgIHdyYXBCLmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLWluc3RyJywgYmxvY2suaW5zdHIpKTsKICAgIGlmKGJsb2NrLnR5cGU9PT0nc3RlbWxpc3QnKXsKICAgICAgYmxvY2suaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7CiAgICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCdjbHByLXN0ZW0nKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCdjbHByLXNudW0nLCBpdC5uKycuJykpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCwgaXQucHJlKycgJykpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChtYWtlRHJvcGRvd24oaXQub3B0aW9ucywgaXQuX3EpKTsKICAgICAgICB3cmFwQi5hcHBlbmRDaGlsZChyb3cpOwogICAgICB9KTsKICAgIH0gZWxzZSBpZihibG9jay50eXBlPT09J2Nsb3plJyl7CiAgICAgIHZhciBib3ggPSBlbCgnZGl2JywnY2xwci1jbG96ZScpOwogICAgICBibG9jay5ib2R5LmZvckVhY2goZnVuY3Rpb24odG9rKXsKICAgICAgICBpZih0eXBlb2YgdG9rPT09J3N0cmluZycpewogICAgICAgICAgdmFyIHNlZ3MgPSB0b2suc3BsaXQoJ1xuXG4nKTsKICAgICAgICAgIHNlZ3MuZm9yRWFjaChmdW5jdGlvbihzZWcsIGlkeCl7CiAgICAgICAgICAgIGlmKGlkeD4wKXsgYm94LmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLCc8YnI+PGJyPicpKTsgfQogICAgICAgICAgICBib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2VnKSk7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYm94LmFwcGVuZENoaWxkKG1ha2VEcm9wZG93bih0b2sub3B0aW9ucywgdG9rLl9xKSk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgd3JhcEIuYXBwZW5kQ2hpbGQoYm94KTsKICAgIH0gZWxzZSBpZihibG9jay50eXBlPT09J21hdGNoJyl7CiAgICAgIGJsb2NrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpewogICAgICAgIHZhciByb3cgPSBlbCgnZGl2JywnY2xwci1tYXRjaC1yb3cnKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQobWFrZURyb3Bkb3duKGJsb2NrLmxldHRlcnMsIGl0Ll9xKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywnY2xwci1zbnVtJywgaXQubisnLicpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsIGl0LnRleHQpKTsKICAgICAgICB3cmFwQi5hcHBlbmRDaGlsZChyb3cpOwogICAgICB9KTsKICAgIH0KICAgIHJldHVybiB3cmFwQjsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkRG90cygpewogICAgZG90c0VsLmlubmVySFRNTD0nJzsKICAgIFJEQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCwgaSl7CiAgICAgIHZhciBkID0gZWwoJ2J1dHRvbicsJ2NscHItZG90JysoaT09PWN1clBhcnQ\/JyBjbHByLWN1cic6JycpKTsKICAgICAgZC5hcHBlbmRDaGlsZChlbCgnYicsbnVsbCwoaSsxKSkpOwogICAgICBkLmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLFsnQ29ycmVzcG9uZGVuY2UnLCdBcHBseSBhIERpYWdyYW0nLCdJbmZvcm1hdGlvbicsJ1ZpZXdwb2ludHMnXVtpXSkpOwogICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgZ28oaSk7IH0pOwogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gZ28ocGkpeyBjdXJQYXJ0PXBpOyBidWlsZERvdHMoKTsgYnVpbGRQYXJ0KHBpKTsgY2F0RWwuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsgfQoKICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIHZhciBhbnMgPSBRLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcS5zZWwhPW51bGw7fSkubGVuZ3RoOwogICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gY2hlY2tlZCA\/IChRLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcS5zZWw9PT1xLmtleTt9KS5sZW5ndGgrJyAvICcrUS5sZW5ndGgrJyBjb3JyZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoYW5zKycgLyAnK1EubGVuZ3RoKycgYW5zd2VyZWQnKTsKICB9CgogIGZ1bmN0aW9uIGFwcGx5TWFya3MoKXsKICAgIFEuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgICAgaWYoIXEuZGRFbCkgcmV0dXJuOwogICAgICBxLmRkRWwuY2xhc3NMaXN0LnJlbW92ZSgnY2xwci1yaWdodCcsJ2NscHItd3JvbmcnKTsKICAgICAgaWYocS5zZWw9PT1xLmtleSl7IHEuZGRFbC5jbGFzc0xpc3QuYWRkKCdjbHByLXJpZ2h0Jyk7IH0KICAgICAgZWxzZSB7CiAgICAgICAgcS5kZEVsLmNsYXNzTGlzdC5hZGQoJ2NscHItd3JvbmcnKTsKICAgICAgICBpZihxLnNvbHZlZEVsKSBxLnNvbHZlZEVsLnRleHRDb250ZW50ID0gJ1x1MjcxMyAnK3Eub3B0aW9uc1txLmtleS0xXTsKICAgICAgICBpZihxLnNlbD09bnVsbCAmJiBxLnR4dEVsKXsgcS50eHRFbC50ZXh0Q29udGVudD0nKG5vIGFuc3dlciknOyBxLnR4dEVsLmNsYXNzTmFtZT0nY2xwci1kZC10eHQnOyB9CiAgICAgIH0KICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gZG9DaGVjaygpewogICAgY2hlY2tlZCA9IHRydWU7CiAgICBhcHBseU1hcmtzKCk7CiAgICB2YXIgY29ycmVjdCA9IFEuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLnNlbD09PXEua2V5O30pLmxlbmd0aDsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgY2hlY2tCdG4uZGlzYWJsZWQgPSB0cnVlOwogICAgdmFyIGJ5UGFydCA9IHt9OwogICAgUS5mb3JFYWNoKGZ1bmN0aW9uKHEpeyBieVBhcnRbcS5wYXJ0XT1ieVBhcnRbcS5wYXJ0XXx8e2M6MCx0OjB9OyBieVBhcnRbcS5wYXJ0XS50Kys7IGlmKHEuc2VsPT09cS5rZXkpYnlQYXJ0W3EucGFydF0uYysrOyB9KTsKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZVIoY29ycmVjdCk7CiAgICB2YXIgcGlsbHMgPSBSREFUQS5wYXJ0cy5tYXAoZnVuY3Rpb24ocCl7IHZhciBiPWJ5UGFydFtwLmlkXXx8e2M6MCx0OjB9OyByZXR1cm4gJzxzcGFuIGNsYXNzPSJjbHByLXJlcy1waWxsIj5QYXJ0ICcrcC5pZCsnOiAnK2IuYysnLycrYi50Kyc8L3NwYW4+JzsgfSkuam9pbignJyk7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImNscHItcmVzLWNhcmQiPicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtdG9wIj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLXNjb3JlIj4nK2NvcnJlY3QrJzxzcGFuPi8nK1EubGVuZ3RoKyc8L3NwYW4+PC9kaXY+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1jbGIiPjxiPicrZXN0LmxldmVsKyc8L2I+PHNtYWxsPicrZXN0Lm5vdGUrJyAmbWlkZG90OyBlc3RpbWF0ZWQgUmVhZGluZyBiYW5kPC9zbWFsbD48L2Rpdj4nCiAgICAgICsgJzwvZGl2PicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtYnJlYWsiPicrcGlsbHMrJzwvZGl2PicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtYWN0aW9ucyI+PGJ1dHRvbiBjbGFzcz0iY2xwci1uYXZidG4gY2xwci1naG9zdCIgaWQ9ImNscHJSZXZpZXciPlJldmlldyBhbnN3ZXJzIGluIGVhY2ggcGFydDwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImNscHItbmF2YnRuIiBpZD0iY2xwclJldHJ5Ij5UcnkgYWdhaW48L2J1dHRvbj48L2Rpdj4nCiAgICAgICsgJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjEycHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXRlZCkiPkVzdGltYXRlZCBiYW5kIGlzIGEgc3R1ZHkgZ3VpZGUgb25seSwgbm90IGFuIG9mZmljaWFsIENFTFBJUCBzY29yZS4gQ29ycmVjdCBhbnN3ZXJzIGFyZSBzaG93biB3aXRoIGEgZ3JlZW4gY2hlY2sgb24gZWFjaCBkcm9wLWRvd24geW91IGFuc3dlcmVkIGluY29ycmVjdGx5LjwvcD4nCiAgICAgICsgJzwvZGl2Pic7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJldHJ5JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEFsbCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJldmlldycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgZ28oMCk7IH0pOwogICAgcmVzdWx0c0VsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgfQoKICBmdW5jdGlvbiByZXNldEFsbCgpewogICAgY2hlY2tlZD1mYWxzZTsgaW5pdFF1ZXN0aW9ucygpOyBjdXJQYXJ0PTA7CiAgICBjaGVja0J0bi5kaXNhYmxlZD1mYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW49dHJ1ZTsgcmVzdWx0c0VsLmlubmVySFRNTD0nJzsKICAgIGJ1aWxkRG90cygpOyBidWlsZFBhcnQoMCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNpbS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOwogIH0KCiAgc3RhcnRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgd3JhcC5xdWVyeVNlbGVjdG9yKCcuY2xwci1oZXJvJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICB0b29sYmFyLmhpZGRlbj1mYWxzZTsgc2ltLmhpZGRlbj1mYWxzZTsKICAgIGluaXRRdWVzdGlvbnMoKTsgY3VyUGFydD0wOyBjaGVja2VkPWZhbHNlOwogICAgYnVpbGREb3RzKCk7IGJ1aWxkUGFydCgwKTsgdXBkYXRlU2NvcmVDaGlwKCk7CiAgfSk7CiAgY2hlY2tCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBkb0NoZWNrKTsKICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0QWxsKTsKfSkoKTs=\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Reading Set 4 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-6321","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6321","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=6321"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6321\/revisions"}],"predecessor-version":[{"id":6574,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6321\/revisions\/6574"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}