{"id":3954,"date":"2026-06-14T23:13:14","date_gmt":"2026-06-14T23:13:14","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-4-test-2-rw\/"},"modified":"2026-07-05T02:44:11","modified_gmt":"2026-07-05T02:44:11","slug":"cambridge-ket-4-test-2-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-4-test-2-rw\/","title":{"rendered":"KET 4 \u2014 Test 2 Reading &#038; Writing"},"content":{"rendered":"\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400%3B500%3B600%3B700%3B800&family=Fraunces:opsz,wght@9..144,700&display=swap');\n\n\/* escape WP wrapper *\/\n.entry-content,.wp-block-post-content,.is-layout-constrained{max-width:none !important;width:auto !important;margin-left:0 !important;margin-right:0 !important;padding-left:0 !important;padding-right:0 !important;}\n.wp-block-post-title{display:none !important;}\n\n:root{\n  --accent-1:#F97316;\n  --accent-2:#F43F5E;\n  --gold:#F9C74F;\n  --green:#10B981;\n  --red:#EF4444;\n  --light-1:#FFF7ED;\n  --light-2:#FFFBF5;\n  --white:#FFFFFF;\n  --text:#0F172A;\n  --muted:#475569;\n  --subtle:#64748B;\n  --border:#E2E8F0;\n  --dark-1:#1B0F02;\n  --dark-2:#2D1A06;\n  --r-10:10px; --r-16:16px; --r-22:22px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06);\n  --sh-lg:0 12px 40px rgba(0,0,0,.12);\n}\n*{margin:0;padding:0;box-sizing:border-box}\nhtml{scroll-behavior:smooth}\nbody{\n  font-family:'Plus Jakarta Sans',system-ui,sans-serif !important;\n  color:var(--text);\n  background:var(--light-2);\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n}\n.serif{font-family:'Fraunces',Georgia,serif !important;font-weight:700;letter-spacing:-.01em}\n.wrap{max-width:1080px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit !important;cursor:pointer;border:none;background:none}\n\n\/* HEADER (same pattern as cambridge index) *\/\n.header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .28s ease,box-shadow .28s ease;border-bottom:1px solid transparent;}\n.header.solid{background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgba(15,23,42,.02);}\n.header-inner{display:flex;align-items:center;gap:28px;height:72px;max-width:1200px;margin:0 auto;padding:0 24px}\n.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}\n.brand img{width:40px;height:40px;border-radius:11px;object-fit:cover;box-shadow:var(--sh-card)}\n.brand-name{font-weight:800;font-size:18px;letter-spacing:-.02em;color:#fff;transition:color .28s ease}\n.header.solid .brand-name{color:var(--text)}\n.nav{display:flex;align-items:center;gap:4px;margin-left:8px}\n.nav a{position:relative;padding:9px 13px;font-size:14.5px;font-weight:600;color:rgba(255,255,255,.82);border-radius:var(--r-10);transition:color .16s ease,background .16s ease;}\n.nav a:hover{color:#fff;background:rgba(255,255,255,.08)}\n.header.solid .nav a{color:var(--muted)}\n.header.solid .nav a:hover{color:var(--text);background:var(--light-1)}\n.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}\n.btn-back{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;font-weight:700;font-size:14px;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.22);transition:background .16s ease}\n.btn-back:hover{background:rgba(255,255,255,.22)}\n.header.solid .btn-back{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.hamburger{display:none;width:40px;height:40px;border-radius:50%;color:#fff;align-items:center;justify-content:center}\n.header.solid .hamburger{color:var(--text)}\n\n\/* HERO *\/\n.hero{\n  position:relative;min-height:380px;padding:120px 0 60px;\n  background:linear-gradient(135deg,#FB923C 0%,#F43F5E 55%,#7C2D12 100%);\n  color:#fff;overflow:hidden;\n}\n.hero::before{content:\"\";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.15) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.10) 0%,transparent 50%);pointer-events:none}\n.hero .wrap{position:relative;z-index:1}\n.kicker{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;opacity:.92;margin-bottom:14px}\n.hero h1{font-size:clamp(34px,5vw,52px);line-height:1.05;margin-bottom:14px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:17px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:22px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}\n.meta-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.24);font-size:13px;font-weight:600}\n.meta-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}\n.cta-row{display:flex;gap:12px;flex-wrap:wrap}\n.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:#fff;color:var(--text);font-weight:700;font-size:15px;box-shadow:0 10px 30px rgba(0,0,0,.2);transition:transform .16s ease}\n.btn-primary:hover{transform:translateY(-2px)}\n.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-weight:700;font-size:15px;border:1px solid rgba(255,255,255,.32);transition:background .16s ease}\n.btn-ghost:hover{background:rgba(255,255,255,.22)}\n\n\/* SCORE BAR *\/\n.score-bar{\n  position:sticky;top:72px;z-index:50;\n  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);\n  border-bottom:1px solid var(--border);\n  padding:14px 0;\n}\n.sb-inner{display:flex;align-items:center;gap:16px;flex-wrap:wrap}\n.sb-prog{flex:1;min-width:200px}\n.sb-prog-bar{height:8px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.sb-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.sb-prog-label{font-size:12px;color:var(--muted);margin-top:5px;font-weight:600}\n.sb-score{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px;color:var(--text)}\n.sb-score b{font-size:18px;color:var(--accent-1)}\n.btn-submit{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:14px;box-shadow:0 6px 18px rgba(249,115,22,.32);transition:transform .15s ease,opacity .15s ease}\n.btn-submit:hover{transform:translateY(-1px)}\n.btn-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}\n.btn-reset{padding:10px 16px;border-radius:999px;background:#fff;color:var(--muted);font-weight:600;font-size:13px;border:1px solid var(--border);transition:background .15s ease}\n.btn-reset:hover{background:var(--light-1);color:var(--text)}\n\n\/* PARTS *\/\n.part-section{padding:48px 0;border-bottom:1px solid var(--border)}\n.part-section:nth-of-type(even){background:#fff}\n.part-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:24px}\n.part-num{\n  flex-shrink:0;width:60px;height:60px;border-radius:18px;\n  background:linear-gradient(135deg,var(--accent-1),var(--accent-2));\n  color:#fff;display:grid;place-items:center;\n  font-family:'Fraunces',serif !important;font-weight:700;font-size:26px;\n  box-shadow:0 8px 22px rgba(249,115,22,.3);\n}\n.part-head-text h2{font-size:26px;line-height:1.15;margin-bottom:6px}\n.part-head-text .qrange{display:inline-block;font-size:12.5px;font-weight:700;color:var(--accent-1);background:var(--light-1);padding:4px 10px;border-radius:999px;letter-spacing:.04em;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:15px;line-height:1.55;max-width:740px}\n\n\/* PART 1 &#8212; notice match *\/\n.notices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin:20px 0 28px}\n.notice{\n  background:#fff;border:2px solid var(--border);border-radius:14px;padding:18px 14px;text-align:center;\n  font-weight:700;letter-spacing:.02em;color:var(--text);min-height:88px;display:grid;place-items:center;\n  font-size:14.5px;line-height:1.35;\n  box-shadow:0 1px 3px rgba(0,0,0,.04);\n}\n.notice-letter{position:absolute;top:6px;left:8px;font-size:11px;font-weight:800;color:var(--accent-1);background:var(--light-1);width:22px;height:22px;border-radius:50%;display:grid;place-items:center;}\n.notice{position:relative}\n\n\/* questions list *\/\n.q-list{display:flex;flex-direction:column;gap:14px;margin-top:8px}\n.q-item{\n  background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 20px;\n  display:flex;flex-direction:column;gap:12px;transition:border-color .2s ease,box-shadow .2s ease;\n}\n.q-item.correct{border-color:var(--green);box-shadow:0 0 0 3px rgba(16,185,129,.12)}\n.q-item.wrong{border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.12)}\n.q-num{font-weight:800;color:var(--accent-1);font-size:14px;min-width:30px}\n.q-text{flex:1;font-size:15.5px;line-height:1.55;color:var(--text);display:flex;gap:10px;align-items:flex-start}\n.q-text b.qn{color:var(--accent-1);font-weight:800}\n.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.opt{\n  display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:10px;\n  background:#F8FAFF;border:1.5px solid var(--border);font-weight:600;font-size:14px;color:var(--text);\n  cursor:pointer;transition:all .15s ease;user-select:none;\n}\n.opt:hover{background:var(--light-1);border-color:var(--accent-1)}\n.opt input{display:none}\n.opt .opt-letter{font-weight:800;color:var(--accent-1);background:#fff;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12.5px;border:1px solid var(--border)}\n.opt.selected{background:linear-gradient(100deg,rgba(249,115,22,.12),rgba(244,63,94,.12));border-color:var(--accent-1)}\n.opt.selected .opt-letter{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.opt.correct-opt{background:rgba(16,185,129,.12) !important;border-color:var(--green) !important}\n.opt.correct-opt .opt-letter{background:var(--green) !important;color:#fff !important;border-color:transparent !important}\n.opt.wrong-opt{background:rgba(239,68,68,.10) !important;border-color:var(--red) !important}\n.opt.wrong-opt .opt-letter{background:var(--red) !important;color:#fff !important;border-color:transparent !important}\n.feedback{font-size:13px;font-weight:600;display:none;padding:8px 12px;border-radius:8px;margin-top:4px}\n.q-item.answered .feedback{display:block}\n.q-item.correct .feedback{background:rgba(16,185,129,.12);color:#065F46}\n.q-item.wrong .feedback{background:rgba(239,68,68,.10);color:#991B1B}\n\n\/* PART 2 \/ cloze with input *\/\n.input-blank{\n  display:inline-block;min-width:90px;border:none;border-bottom:2px dashed var(--accent-1);\n  background:transparent;font-family:inherit !important;font-size:15.5px;color:var(--text);font-weight:600;\n  padding:2px 6px;margin:0 4px;text-align:center;outline:none;\n}\n.input-blank:focus{border-bottom-style:solid;background:var(--light-1)}\n.input-blank.correct{border-bottom-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.input-blank.wrong{border-bottom-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n\n\/* PART 4 &#8212; passage *\/\n.passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;\n  padding:24px 26px;margin:8px 0 20px;\n  font-size:15.5px;line-height:1.7;color:var(--text);\n  box-shadow:var(--sh-card);\n  position:relative;\n}\n.passage h3{font-family:'Fraunces',serif !important;font-size:22px;text-align:center;margin-bottom:14px;letter-spacing:.02em;color:var(--accent-2)}\n.passage p{margin-bottom:10px}\n\n\/* PART 5 &#8212; cloze passage *\/\n.cloze-passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px 26px;\n  font-size:16px;line-height:1.8;color:var(--text);box-shadow:var(--sh-card);margin-bottom:24px;\n}\n.cloze-passage h3{font-family:'Fraunces',serif !important;font-size:24px;text-align:center;color:var(--accent-2);margin-bottom:14px}\n\n\/* PART 6 &#8212; single word with first letter *\/\n.word-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}\n.first-letter{font-weight:700;color:var(--accent-1);font-size:18px;font-family:'Fraunces',serif}\n.dashes{color:var(--muted);letter-spacing:6px;font-weight:600}\n\n\/* PART 8 &#8212; form *\/\n.form-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px;max-width:560px}\n.form-card h4{font-family:'Fraunces',serif !important;font-size:20px;text-align:center;color:var(--accent-2);margin-bottom:6px;border-bottom:2px solid var(--accent-1);padding-bottom:8px;display:inline-block;width:100%}\n.form-row{display:flex;gap:12px;align-items:center;margin-top:14px;flex-wrap:wrap}\n.form-row label{flex:0 0 200px;font-weight:600;color:var(--text);font-size:14.5px}\n.form-row .input-blank{flex:1;min-width:200px;text-align:left;font-size:14.5px}\n\n\/* PART 9 &#8212; writing *\/\n.writing-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px}\n.prompt-box{background:var(--light-1);border-left:4px solid var(--accent-1);padding:14px 18px;border-radius:0 12px 12px 0;margin-bottom:18px;font-size:15px;line-height:1.6}\n.prompt-box ul{margin:10px 0 4px 22px}\n.prompt-box li{margin-bottom:4px}\n.writing-area{width:100%;min-height:160px;padding:14px;font-family:inherit !important;font-size:15px;line-height:1.55;border:2px solid var(--border);border-radius:12px;background:#FAFBFC;color:var(--text);outline:none;resize:vertical;transition:border-color .2s ease}\n.writing-area:focus{border-color:var(--accent-1);background:#fff}\n.wc-counter{display:flex;justify-content:space-between;margin-top:8px;font-size:13px;color:var(--muted);font-weight:600}\n.wc-counter.ok{color:var(--green)}\n.wc-counter.over{color:var(--red)}\n.sample-toggle{margin-top:14px;display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:13.5px;border:none;cursor:pointer}\n.sample-box{display:none;margin-top:14px;padding:14px 18px;background:#FEF3C7;border-left:4px solid var(--gold);border-radius:0 12px 12px 0;font-size:14.5px;line-height:1.6}\n.sample-box.show{display:block}\n.sample-box h5{font-family:'Fraunces',serif !important;font-size:16px;margin-bottom:8px;color:#92400E}\n\n\/* SHOW ANSWER PER-Q BUTTONS *\/\n.show-ans-btn{\n  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:8px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:12px;\n  border:1px solid rgba(249,115,22,.30);cursor:pointer;transition:all .15s ease;\n  font-family:inherit !important;align-self:flex-start;margin-top:4px;letter-spacing:.02em;\n}\n.show-ans-btn:hover{background:rgba(249,115,22,.18);border-color:var(--accent-1)}\n.show-ans-btn[disabled]{opacity:.45;cursor:not-allowed}\n.show-ans-btn .emoji{width:14px;height:14px}\n.show-ans-btn-inline{\n  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:11.5px;\n  border:1px solid rgba(249,115,22,.28);cursor:pointer;font-family:inherit !important;\n  margin-left:4px;vertical-align:middle;transition:all .15s ease;\n}\n.show-ans-btn-inline:hover{background:rgba(249,115,22,.18)}\n.show-ans-btn-inline[disabled]{opacity:.45;cursor:not-allowed}\n\n\/* RESULTS BANNER *\/\n.results-banner{\n  display:none;margin:32px auto;padding:30px;border-radius:22px;\n  background:linear-gradient(135deg,#FB923C,#F43F5E);color:#fff;text-align:center;max-width:720px;\n  box-shadow:0 16px 50px rgba(249,115,22,.3);\n}\n.results-banner.show{display:block}\n.results-banner h3{font-size:30px;font-family:'Fraunces',serif !important;margin-bottom:10px}\n.results-banner .score-big{font-size:64px;font-weight:800;line-height:1;margin:14px 0;font-family:'Fraunces',serif}\n.results-banner p{opacity:.95;font-size:15px}\n\n\/* FOOTER *\/\n.footer{background:var(--dark-1);color:#9CA3AF;padding:36px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold);font-weight:600}\n\n\/* MOBILE *\/\n@media (max-width:820px){\n  .nav{display:none}\n  .hamburger{display:flex}\n  .hero{padding:110px 0 50px}\n  .part-head{flex-direction:column;gap:12px}\n  .part-num{width:50px;height:50px;font-size:22px}\n  .notices-grid{grid-template-columns:repeat(2,1fr)}\n  .form-row label{flex:1 1 100%}\n  .form-row .input-blank{width:100%}\n  .sb-inner{gap:10px}\n  .sb-prog{order:3;flex:1 1 100%}\n}\n\n\/* mobile drawer *\/\n.drawer{position:fixed;inset:0;background:rgba(15,23,42,.65);z-index:200;display:none;align-items:flex-start;justify-content:flex-end}\n.drawer.open{display:flex}\n.drawer-panel{width:280px;background:#fff;height:100%;padding:24px;display:flex;flex-direction:column;gap:8px}\n.drawer-panel a{padding:12px 14px;border-radius:10px;font-weight:600;color:var(--text)}\n.drawer-panel a:hover{background:var(--light-1)}\n.drawer-close{align-self:flex-end;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}\n<\/style>\n\n<!-- HEADER -->\n<header class=\"header\" id=\"hdr\">\n  <div class=\"header-inner\">\n    <a href=\"https:\/\/allenglish4u.com\" class=\"brand\">\n      <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/04\/Transparent-background-MacBook-Pro-cua-Hang.png\" alt=\"AE4U\">\n      <span class=\"brand-name\">All English 4U<\/span>\n    <\/a>\n    <nav class=\"nav\">\n      <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"active\">Cambridge<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n      <\/nav>\n    <div class=\"header-right\">\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-back\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M19 12H5M11 18l-6-6 6-6\"\/><\/svg>\n        Back\n      <\/a>\n      <button class=\"hamburger\" id=\"hamb\" aria-label=\"Menu\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M3 6h18M3 12h18M3 18h18\"\/><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"drawer\" id=\"drawer\">\n  <div class=\"drawer-panel\">\n    <button class=\"drawer-close\" id=\"drawerClose\" aria-label=\"Close\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg>\n    <\/button>\n    <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">Cambridge<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n    <\/div>\n<\/div>\n\n<!-- HERO -->\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge English &#183; Key (KET)<\/span>\n    <h1 class=\"serif\">KET 4 &#8212; Test 2<br><span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn from instant feedback.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>1 hour 10 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>9 Parts<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>55 auto-graded<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>+ Writing prompt<\/span>\n    <\/div>\n    <div class=\"cta-row\">\n      <a href=\"#part1\" class=\"btn-primary\">\n        Start Test\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n      <\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-ghost\">All Cambridge Tests<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- SCORE BAR -->\n<div class=\"score-bar\" id=\"scoreBar\">\n  <div class=\"wrap sb-inner\">\n    <div class=\"sb-score\">Score <b><span id=\"scoreNow\">0<\/span>\/55<\/b><\/div>\n    <div class=\"sb-prog\">\n      <div class=\"sb-prog-bar\"><div class=\"sb-prog-fill\" id=\"progFill\"><\/div><\/div>\n      <div class=\"sb-prog-label\"><span id=\"answeredCount\">0<\/span> of 55 answered<\/div>\n    <\/div>\n    <button class=\"btn-submit\" id=\"submitBtn\">\n      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n      Submit &amp; Grade\n    <\/button>\n    <button class=\"btn-reset\" id=\"resetBtn\">Reset<\/button>\n  <\/div>\n<\/div>\n\n<!-- ============== PART 1 ============== -->\n<section class=\"part-section\" id=\"part1\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">1<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 1&#8211;5<\/span>\n        <h2 class=\"serif\">Match the notice<\/h2>\n        <p>Which notice (A&#8211;H) says this (1&#8211;5)? For questions 1&#8211;5, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"notices-grid\">\n      <div class=\"notice\" style=\"opacity:.55\"><span class=\"notice-letter\">A<\/span>SEATS AT THE FRONT<br>RESERVED FOR CHILDREN<br><sub style=\"font-size:10px;color:var(--muted);font-style:italic;font-weight:600\">(example)<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">B<\/span>SATURDAY &#8211; SUNDAY<br><sub style=\"font-size:11px;font-weight:600\">Travel First Class<br>at Second Class prices<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">C<\/span><b>Waiting Room<br>closed for cleaning<\/b><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">D<\/span>TRAINS<br><sub style=\"font-size:11px;font-weight:600\">For a seat, book early<br>(one week in advance)<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">E<\/span>WAITING ROOM<br><sub style=\"font-size:11px;font-weight:600;font-style:italic\">For passengers with<br>First Class tickets<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">F<\/span>QUEEN&#8217;S THEATRE<br><sub style=\"font-size:10px;font-weight:700\">ALL TICKETS SOLD OUT<\/sub><br><sub style=\"font-size:11px;font-weight:700\">STANDING ROOM ONLY<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">G<\/span>Please wait for a waitress<br>to show you to your seat.<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">H<\/span><b>THIS WEEK ONLY!<\/b><br><sub style=\"font-size:11px;font-weight:600;font-style:italic\">Buy two full-price tickets &#8211;<br>get one half-price!<\/sub><\/div>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part1List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 2 ============== -->\n<section class=\"part-section\" id=\"part2\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">2<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 6&#8211;10<\/span>\n        <h2 class=\"serif\">Cooking<\/h2>\n        <p>Read the sentences (6&#8211;10) about cooking. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> I like to <u>help<\/u> my mother in the kitchen. <b>(Answer: B)<\/b>\n    <\/div>\n    <div class=\"q-list\" id=\"part2List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3a ============== -->\n<section class=\"part-section\" id=\"part3a\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 11&#8211;15<\/span>\n        <h2 class=\"serif\">Complete the conversations<\/h2>\n        <p>Complete the five conversations. Choose the correct answer (A, B or C).<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> Where do you come from? &#8212; <b>A<\/b> New York.\n    <\/div>\n    <div class=\"q-list\" id=\"part3aList\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3b ============== -->\n<section class=\"part-section\" id=\"part3b\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 16&#8211;20<\/span>\n        <h2 class=\"serif\">Outside a cinema: Mary &amp; Sarah<\/h2>\n        <p>Complete the conversation between two friends outside a cinema. What does Mary say to Sarah? For each blank, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;margin-bottom:18px;font-size:14.5px;line-height:1.7\">\n      <p><b>Sarah:<\/b> Hi, Mary. Sorry I&#8217;m late.<\/p>\n      <p><b>Mary:<\/b> <span style=\"color:var(--accent-1);font-weight:700\">(Example: E)<\/span><\/p>\n      <p><b>Sarah:<\/b> Where&#8217;s John?<\/p>\n      <p><b>Mary:<\/b> <select class=\"q-select\" data-qid=\"16\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Sarah:<\/b> The traffic is very bad.<\/p>\n      <p><b>Mary:<\/b> <select class=\"q-select\" data-qid=\"17\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Sarah:<\/b> Oh, that&#8217;s right. He doesn&#8217;t like driving at night. Well, let&#8217;s phone him. Have you got his number?<\/p>\n      <p><b>Mary:<\/b> <select class=\"q-select\" data-qid=\"18\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Sarah:<\/b> Oh dear, that&#8217;s a pity. We won&#8217;t see the beginning of the film. It starts in five minutes.<\/p>\n      <p><b>Mary:<\/b> <select class=\"q-select\" data-qid=\"19\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Sarah:<\/b> I&#8217;ll see you inside then.<\/p>\n      <p><b>Mary:<\/b> <select class=\"q-select\" data-qid=\"20\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Sarah:<\/b> Yes, and I&#8217;ll get some chocolates too. See you in a minute.<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;font-size:14px;line-height:1.85\">\n      <b style=\"color:var(--accent-1);display:block;margin-bottom:6px\">Choices:<\/b>\n      <div><b>A<\/b> No, it&#8217;s in my diary at work.<\/div>\n      <div><b>B<\/b> Can you get me an orange juice?<\/div>\n      <div><b>C<\/b> Yes, I have. I&#8217;ll phone him now.<\/div>\n      <div><b>D<\/b> Why don&#8217;t you go in? I&#8217;ve got John&#8217;s ticket so I&#8217;ll wait here.<\/div>\n      <div style=\"opacity:.5\"><b>E<\/b> Oh, that&#8217;s all right. <i>(example)<\/i><\/div>\n      <div><b>F<\/b> If he doesn&#8217;t come in five minutes, let&#8217;s go in.<\/div>\n      <div><b>G<\/b> He&#8217;s late too. I told him to be here at seven.<\/div>\n      <div><b>H<\/b> I think he&#8217;s coming by train.<\/div>\n    <\/div>\n\n    <div id=\"part3bFeedback\" style=\"margin-top:14px\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 4 ============== -->\n<section class=\"part-section\" id=\"part4\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">4<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 21&#8211;27<\/span>\n        <h2 class=\"serif\">Snowboarding<\/h2>\n        <p>Read the article about the sport of snowboarding. Are sentences 21&#8211;27 <b>&#8216;Right&#8217; (A)<\/b> or <b>&#8216;Wrong&#8217; (B)<\/b>? If there is not enough information to answer &#8216;Right&#8217; or &#8216;Wrong&#8217;, choose <b>&#8216;Doesn&#8217;t say&#8217; (C)<\/b>.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"passage\">\n      <h3>SNOWBOARDING<\/h3>\n      <p>Victoria Jamieson from Britain started snowboarding at 20. She is now 23 and has won many competitions in this sport. We spoke to her when she was at a snowboarding competition last week in Switzerland and asked her why she started the sport.<\/p>\n      <p>&#8216;I&#8217;ve always liked all kinds of sports, especially skiing, and it seemed natural to start snowboarding. It doesn&#8217;t take long to learn and you can become really good in a few months.&#8217;<\/p>\n      <p>We asked her if she had to do a lot of practice. &#8216;Well, in winter I snowboard in the mountains every day from 8.30 a.m. until 4 p.m. I also run and go biking. But I just love doing it all! I like the competitions and being in the mountains. It&#8217;s so beautiful. But free-riding, that&#8217;s doing what you want when you&#8217;re not in a competition, is the best thing in the world for me.&#8217;<\/p>\n      <p>We asked her what is important when you&#8217;re learning. &#8216;You can learn quickly but you need lessons. It&#8217;s also important to have the right clothes so you don&#8217;t get wet because, to begin with, you spend a lot of time falling down!&#8217;<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 18px;margin-bottom:18px;font-size:14px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example (0):<\/b> Victoria began snowboarding when she was 23. &#8594; <b>B (Wrong)<\/b>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part4List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 5 ============== -->\n<section class=\"part-section\" id=\"part5\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">5<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 28&#8211;35<\/span>\n        <h2 class=\"serif\">Bears &#8212; gap fill<\/h2>\n        <p>Read the article about bears. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"cloze-passage\">\n      <h3>Bears<\/h3>\n      <p>The bear can <u><b style=\"color:var(--accent-1)\">be<\/b><\/u> a dangerous animal. The adult bear is very strong and it can kill a person. Bears are good at <span data-q=\"28\" class=\"cloze-blank\">[28]<\/span> trees and they can run very fast. But they cannot see well and, <span data-q=\"29\" class=\"cloze-blank\">[29]<\/span> most animals, they find food by using <span data-q=\"30\" class=\"cloze-blank\">[30]<\/span> noses.<\/p>\n      <p>There are seven kinds of bear. The <span data-q=\"31\" class=\"cloze-blank\">[31]<\/span> is the white polar bear, which is almost three metres tall. There are two kinds of black bear. <span data-q=\"32\" class=\"cloze-blank\">[32]<\/span> lives in the forests of North America, and the other lives in South-East Asia. But not <span data-q=\"33\" class=\"cloze-blank\">[33]<\/span> black bears are black. They may be dark brown or a reddish brown.<\/p>\n      <p>Everyone loves the black and white panda bear, which comes from China. Not <span data-q=\"34\" class=\"cloze-blank\">[34]<\/span> pandas live in the forest today because <span data-q=\"35\" class=\"cloze-blank\">[35]<\/span> is difficult to find food.<\/p>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part5List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 6 ============== -->\n<section class=\"part-section\" id=\"part6\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">6<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 36&#8211;40<\/span>\n        <h2 class=\"serif\">Feelings &#8212; spell the word<\/h2>\n        <p>Read the descriptions (36&#8211;40) of some feelings. The first letter is given. Type the word. <b>Example (0):<\/b> If you do not wear a coat outside in the snow, you feel like this. &#8594; <b>cold<\/b><\/p>\n      <\/div>\n    <\/div>\n    <div class=\"q-list\" id=\"part6List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 7 ============== -->\n<section class=\"part-section\" id=\"part7\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">7<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 41&#8211;50<\/span>\n        <h2 class=\"serif\">Complete these letters<\/h2>\n        <p>Read the letters between Carlos and David. Type <b>ONE word<\/b> for each space (41&#8211;50). (Example: <i>next<\/i>)<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"max-width:600px;margin:0 auto 16px\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:24px 26px;font-size:14.5px;line-height:1.95;font-family:'Courier New',monospace\">\n        <p>Dear David,<\/p>\n        <p>I&#8217;m going to visit your country (Example: <u>next<\/u>) month. I&#8217;m going to travel <input class=\"input-blank\" data-q=\"41\" type=\"text\"> two friends. We don&#8217;t know <input class=\"input-blank\" data-q=\"42\" type=\"text\"> to stay. Are <input class=\"input-blank\" data-q=\"43\" type=\"text\"> any cheap hotels in your town? We <input class=\"input-blank\" data-q=\"44\" type=\"text\"> like to stay somewhere in the centre. Can <input class=\"input-blank\" data-q=\"45\" type=\"text\"> help us?<\/p>\n        <p><i>Carlos<\/i><\/p>\n      <\/div>\n    <\/div>\n    <div style=\"max-width:600px;margin:0 auto\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:24px 26px;font-size:14.5px;line-height:1.95;font-family:'Courier New',monospace\">\n        <p>Dear Carlos,<\/p>\n        <p>Hotels in the centre <input class=\"input-blank\" data-q=\"46\" type=\"text\"> expensive, but I have good news. I <input class=\"input-blank\" data-q=\"47\" type=\"text\"> spoken to my aunt Gloria about you and she says you can all stay at <input class=\"input-blank\" data-q=\"48\" type=\"text\"> house. It <input class=\"input-blank\" data-q=\"49\" type=\"text\"> more bedrooms than my house! That <input class=\"input-blank\" data-q=\"50\" type=\"text\"> be all right for you, won&#8217;t it?<\/p>\n        <p><i>David<\/i><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 8 ============== -->\n<section class=\"part-section\" id=\"part8\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">8<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 51&#8211;55<\/span>\n        <h2 class=\"serif\">Mary&#8217;s Diary<\/h2>\n        <p>Read the note and the ticket. Fill in the information in Mary&#8217;s diary (51&#8211;55).<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:18px\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:16px 18px;font-size:14px;line-height:1.6\">\n        <div style=\"text-align:right;font-style:italic;color:var(--subtle)\">Monday<\/div>\n        <p style=\"margin-top:4px\">Mary,<\/p>\n        <p style=\"margin-top:6px\">Did you get to your 10 o&#8217;clock dentist appointment this morning?<\/p>\n        <p style=\"margin-top:6px\">Here&#8217;s your ticket for Wednesday night (give me the money then).<\/p>\n        <p style=\"margin-top:6px\">Jack phoned &#8211; Castle Restaurant is closed on Tuesday, so he&#8217;ll see you at Bridges Caf&#233; at 12.45.<\/p>\n        <p style=\"margin-top:6px\">See you for tennis this afternoon.<\/p>\n        <p style=\"margin-top:6px\"><i>Love, Sam<\/i><\/p>\n      <\/div>\n      <div style=\"background:#fff;border:2px solid var(--text);border-radius:12px;padding:16px 18px;font-size:14px;line-height:1.6;height:fit-content\">\n        <div style=\"text-align:center;font-weight:800;letter-spacing:.04em;border-bottom:2px solid var(--text);padding-bottom:6px\">CONCERT TICKET<\/div>\n        <div style=\"text-align:center;font-weight:700;margin-top:8px;color:var(--accent-2)\">Spanish Guitar Evening<\/div>\n        <div style=\"display:flex;justify-content:space-between;margin-top:10px\"><b>Wednesday, 23 June<\/b><b>7.45 p.m.<\/b><\/div>\n        <div style=\"display:flex;justify-content:space-between;margin-top:6px\"><span>&#163;16.50<\/span><span>SEAT R 12<\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"form-card\" style=\"max-width:620px\">\n      <h4>MARY&#8217;S DIARY<\/h4>\n      <div class=\"form-row\"><label>Monday &#8212; 10.00 a.m.<\/label><span style=\"font-weight:600;color:var(--accent-2);font-style:italic\">Dentist appointment<\/span><\/div>\n      <div class=\"form-row\"><label>2.30&#8211;3.30 p.m.<\/label><input class=\"input-blank\" data-q=\"51\" type=\"text\" style=\"max-width:160px\"><span style=\"color:var(--muted)\">with Sam<\/span><\/div>\n      <div class=\"form-row\"><label>Tuesday 12.45 p.m. &#8212; Lunch with<\/label><input class=\"input-blank\" data-q=\"52\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Meet in<\/label><input class=\"input-blank\" data-q=\"53\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Wednesday 7.45 p.m. &#8212; Concert of<\/label><input class=\"input-blank\" data-q=\"54\" type=\"text\" style=\"max-width:160px\"><span style=\"color:var(--muted)\">music<\/span><\/div>\n      <div class=\"form-row\"><label>Give Sam<\/label><input class=\"input-blank\" data-q=\"55\" type=\"text\" style=\"max-width:160px\"><span style=\"color:var(--muted)\">for my ticket<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 9 &#8212; WRITING ============== -->\n<section class=\"part-section\" id=\"part9\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">9<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Question 56<\/span>\n        <h2 class=\"serif\">Writing &#8212; note to Alex<\/h2>\n        <p>This part is <b>not auto-graded<\/b>. Write your note, then click <i>Show Sample Answer<\/i> to see examples with examiner marks.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"writing-card\">\n      <div class=\"prompt-box\">\n        <b>Read this note from your new penfriend, Alex. Write a note to Alex and answer the questions.<\/b>\n        <div style=\"background:#fff;border:1px dashed var(--accent-1);border-radius:10px;padding:12px 14px;margin:12px 0;font-style:italic;line-height:1.55\">\n          Hello. I&#8217;m Alex, your new penfriend. How old are you? Have you got any brothers and sisters? What is your favourite hobby?<br><br>\n          Alex\n        <\/div>\n        Your note must include:\n        <ul>\n          <li><b>how old<\/b> you are<\/li>\n          <li>your <b>brothers and sisters<\/b> (if you have any)<\/li>\n          <li>your <b>favourite hobby<\/b><\/li>\n        <\/ul>\n        Write 25&#8211;35 words.\n      <\/div>\n      <textarea class=\"writing-area\" id=\"writingArea\" placeholder=\"Type your note here...\"><\/textarea>\n      <div class=\"wc-counter\" id=\"wcCounter\">0 words &#183; target 25&#8211;35<\/div>\n      <button class=\"sample-toggle\" id=\"sampleToggle\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n        Show Sample Answer\n      <\/button>\n      <div class=\"sample-box\" id=\"sampleBox\">\n        <h5 style=\"margin-bottom:14px\">Sample answers &#8212; with examiner marks<\/h5>\n\n        <div style=\"background:#fff;border-left:3px solid var(--green);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--green);font-size:12.5px;letter-spacing:.05em\">SAMPLE A &#8212; Mark 5\/5 (all three questions answered, no errors)<\/b>\n          <p style=\"margin-top:6px\">Hi Alex,<\/p>\n          <p>I&#8217;m fourteen years old. I have got one brother and two sisters. My favourite hobby is playing basketball with my friends after school. Please write back soon and tell me about your family! Tom<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--accent-1);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--accent-1);font-size:12.5px;letter-spacing:.05em\">SAMPLE B &#8212; Mark 4\/5 (some spelling &amp; grammar errors, but clear)<\/b>\n          <p style=\"margin-top:6px\">Hello Alex,<\/p>\n          <p>I am thirteen year old. I have got a brother but I haven&#8217;t got no sisters. My favorite hobby is to play computer games and football. Write me soon! Marco<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--red);padding:10px 14px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--red);font-size:12.5px;letter-spacing:.05em\">SAMPLE C &#8212; Mark 3\/5 (only two of the three questions answered)<\/b>\n          <p style=\"margin-top:6px\">Dear Alex,<\/p>\n          <p>I&#8217;m twelve years old and my favourite hobby is reading books and drawing pictures. I am very happy to have a new penfriend. Please tell me about your school. Lin<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- RESULTS BANNER -->\n<div class=\"wrap\">\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>Your KET 4 Test 2 &#8212; Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/55<\/div>\n    <p id=\"resultsMsg\">Great effort! Scroll up to review your answers &#8212; correct ones are highlighted in green and wrong ones in red.<\/p>\n    <div style=\"margin-top:18px\"><button class=\"btn-primary\" onclick=\"window.scrollTo({top:0,behavior:'smooth'})\" style=\"background:#fff;color:var(--accent-2)\">Back to top<\/button><\/div>\n  <\/div>\n<\/div>\n\n<!-- FOOTER -->\n<footer class=\"footer\">\n  <div class=\"wrap\">\n    <p>&#169; 2026 All English 4U &#183; <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">All Cambridge Tests<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/contact\/\">Contact<\/a><\/p>\n  <\/div>\n<\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewovLyA9PT09PSBIZWFkZXIgc2Nyb2xsID09PT09CnZhciBoZHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hkcicpOwp2YXIgc2V0U29saWQ9ZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsc2V0U29saWQse3Bhc3NpdmU6dHJ1ZX0pO3NldFNvbGlkKCk7CgovLyBkcmF3ZXIKdmFyIGhhbWI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hhbWInKSxkcmF3ZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlcicpLGRDbG9zZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhd2VyQ2xvc2UnKTsKaWYoaGFtYiloYW1iLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2RyYXdlci5jbGFzc0xpc3QuYWRkKCdvcGVuJyl9KTsKaWYoZENsb3NlKWRDbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CmlmKGRyYXdlcilkcmF3ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZHJhd2VyKWRyYXdlci5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyl9KTsKCi8vID09PT09IERBVEEgPT09PT0KdmFyIFAxID0gWwogIHtuOjEsdGV4dDoiSWYgeW91IGhhdmUgYSBzZWNvbmQgY2xhc3MgdGlja2V0LCB5b3UgY2FuJ3QgZ28gaW4gaGVyZS4iLG9wdHM6J0JDREVGR0gnLGFuczonRSd9LAogIHtuOjIsdGV4dDonWW91IHNob3VsZCB3YWl0IGhlcmUgYmVmb3JlIHlvdSBzaXQgZG93bi4nLG9wdHM6J0JDREVGR0gnLGFuczonRyd9LAogIHtuOjMsdGV4dDonVGhlcmUgYXJlIG5vIG1vcmUgc2VhdHMgZm9yIHRoZSBzaG93Licsb3B0czonQkNERUZHSCcsYW5zOidGJ30sCiAge246NCx0ZXh0OidJZiB5b3Ugd2FudCBhIHNlYXQsIGdldCB5b3VyIHRpY2tldCBzZXZlbiBkYXlzIGJlZm9yZSB5b3UgdHJhdmVsLicsb3B0czonQkNERUZHSCcsYW5zOidEJ30sCiAge246NSx0ZXh0OidGaXJzdCBjbGFzcyB0aWNrZXRzIGFyZSBjaGVhcGVyIGF0IHRoZSB3ZWVrZW5kLicsb3B0czonQkNERUZHSCcsYW5zOidCJ30sCl07CnZhciBQMiA9IFsKICB7bjo2LHRleHQ6J015IG1vdGhlciBvZnRlbiBhc2tzIG1lIHRvIF9fX19fIHVwIHRoZSB2ZWdldGFibGVzIGZvciBoZXIuJyxvcHRzOltbJ0EnLCdwdXQnXSxbJ0InLCdtYWtlJ10sWydDJywnY3V0J11dLGFuczonQyd9LAogIHtuOjcsdGV4dDonRXZlcnlib2R5IGluIG91ciBmYW1pbHkgX19fX18gZmlzaCB0byBtZWF0Licsb3B0czpbWydBJywnZW5qb3lzJ10sWydCJywnbGlrZXMnXSxbJ0MnLCdwcmVmZXJzJ11dLGFuczonQyd9LAogIHtuOjgsdGV4dDonT25jZSwgSSBmb3Jnb3QgdGhlIGNvb2tlciB3YXMgaG90IGFuZCBfX19fXyBteSBoYW5kLicsb3B0czpbWydBJywnYm9pbGVkJ10sWydCJywnYnVybnQnXSxbJ0MnLCdmcmllZCddXSxhbnM6J0InfSwKICB7bjo5LHRleHQ6J0Nvb2tpbmcgYSBnb29kIG1lYWwgY2FuIF9fX19fIGEgbG9uZyB0aW1lLicsb3B0czpbWydBJywnc3BlbmQnXSxbJ0InLCd1c2UnXSxbJ0MnLCd0YWtlJ11dLGFuczonQyd9LAogIHtuOjEwLHRleHQ6J0F0IHRoZSBzdXBlcm1hcmtldCwgc29tZSBmb29kIGxpa2UgcGl6emEgaXMgX19fX18gdG8gY29vay4nLG9wdHM6W1snQScsJ3JpZ2h0J10sWydCJywncmVhZHknXSxbJ0MnLCdmcmVlJ11dLGFuczonQid9LApdOwp2YXIgUDNhID0gWwogIHtuOjExLHRleHQ6IkxldCdzIGxpc3RlbiB0byB0aGlzIG5ldyBDRC4iLG9wdHM6W1snQScsIldobydzIHRoZSBzaW5nZXI\/Il0sWydCJywiSXQncyBpbiB0aGUgcmVjb3JkIHNob3AuIl0sWydDJywnSSBjYW4gaGVhciBpdC4nXV0sYW5zOidBJ30sCiAge246MTIsdGV4dDoiSSdkIGxpa2UgdHdvIHRpY2tldHMgZm9yIHRvbmlnaHQuIixvcHRzOltbJ0EnLCJJJ2xsIGp1c3QgY2hlY2sgZm9yIHlvdS4iXSxbJ0InLCdBZnRlcm5vb24gYW5kIGV2ZW5pbmcuJ10sWydDJywnSG93IG11Y2ggZGlkIHlvdSBwYXk\/J11dLGFuczonQSd9LAogIHtuOjEzLHRleHQ6J1doYXQgdGltZSBkaWQgdGhlIG1lZXRpbmcgZW5kPycsb3B0czpbWydBJywnSW4gYSBtaW51dGUuJ10sWydCJywnRm9yIGhhbGYgYW4gaG91ci4nXSxbJ0MnLCdKdXN0IGJlZm9yZSBsdW5jaC4nXV0sYW5zOidDJ30sCiAge246MTQsdGV4dDoiSSBjYW4ndCBkbyB0aGlzIG1hdGhzIHByb2JsZW0uIixvcHRzOltbJ0EnLCdJIHN1cHBvc2Ugc28uJ10sWydCJywnTGV0IG1lIHNlZS4nXSxbJ0MnLCdDZXJ0YWlubHkgbm90LiddXSxhbnM6J0InfSwKICB7bjoxNSx0ZXh0OiJEbyB5b3UgbGlrZSBKYW5lJ3MgbmV3IGZsYXQ\/IixvcHRzOltbJ0EnLCJJIGRvbid0IGdvIHRoZXJlLiJdLFsnQicsJ1NoZSBsaWtlcyB0aGUgbmV3IGhvdXNlLiddLFsnQycsJ1RoZSByb29tcyBhcmUgcmF0aGVyIHNtYWxsLiddXSxhbnM6J0MnfSwKXTsKdmFyIFAzYkFucyA9IHsxNjonRycsMTc6J0gnLDE4OidBJywxOTonRCcsMjA6J0InfTsKdmFyIFA0ID0gWwogIHtuOjIxLHRleHQ6J1ZpY3RvcmlhIHdhcyB2aXNpdGluZyBTd2l0emVybGFuZCBmb3IgYSBjb21wZXRpdGlvbi4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyMix0ZXh0OidWaWN0b3JpYSBoYXMgd29uIG1hbnkgc2tpaW5nIGNvbXBldGl0aW9ucy4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0MnfSwKICB7bjoyMyx0ZXh0OidWaWN0b3JpYSB0aGlua3MgdGhhdCBzbm93Ym9hcmRpbmcgaXMgYSBkaWZmaWN1bHQgc3BvcnQgdG8gbGVhcm4uJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidCJ30sCiAge246MjQsdGV4dDonV29ya2luZyBoYXJkIGF0IGhlciBzcG9ydCBpcyBub3QgYSBwcm9ibGVtIGZvciBWaWN0b3JpYS4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyNSx0ZXh0OidWaWN0b3JpYSBsaWtlcyBjb21wZXRpdGlvbnMgbW9yZSB0aGFuIGFueXRoaW5nIGVsc2UuJyxvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidCJ30sCiAge246MjYsdGV4dDonVmljdG9yaWEgdGhpbmtzIHlvdSBzaG91bGQgaGF2ZSBhIHRlYWNoZXIgaWYgeW91IHdhbnQgdG8gbGVhcm4gc25vd2JvYXJkaW5nLicsb3B0czpbWydBJywnUmlnaHQnXSxbJ0InLCdXcm9uZyddLFsnQycsIkRvZXNuJ3Qgc2F5Il1dLGFuczonQSd9LAogIHtuOjI3LHRleHQ6J1ZpY3RvcmlhIHNheXMgeW91IGNhbiB3ZWFyIGFueXRoaW5nIHlvdSBsaWtlIHdoZW4geW91IGxlYXJuIHRvIHNub3dib2FyZC4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0InfSwKXTsKdmFyIFA1ID0gWwogIHtuOjI4LG9wdHM6W1snQScsJ2NsaW1iZWQnXSxbJ0InLCdjbGltYiddLFsnQycsJ2NsaW1iaW5nJ11dLGFuczonQyd9LAogIHtuOjI5LG9wdHM6W1snQScsJ2xpa2UnXSxbJ0InLCdmcm9tJ10sWydDJywnZm9yJ11dLGFuczonQSd9LAogIHtuOjMwLG9wdHM6W1snQScsJ3RoZW0nXSxbJ0InLCd0aG9zZSddLFsnQycsJ3RoZWlyJ11dLGFuczonQyd9LAogIHtuOjMxLG9wdHM6W1snQScsJ2xhcmdlciddLFsnQicsJ2xhcmdlc3QnXSxbJ0MnLCdsYXJnZSddXSxhbnM6J0InfSwKICB7bjozMixvcHRzOltbJ0EnLCdCb3RoJ10sWydCJywnT25lJ10sWydDJywnSGUnXV0sYW5zOidCJ30sCiAge246MzMsb3B0czpbWydBJywnZXZlcnknXSxbJ0InLCdhbGwnXSxbJ0MnLCdlYWNoJ11dLGFuczonQid9LAogIHtuOjM0LG9wdHM6W1snQScsJ21hbnknXSxbJ0InLCdtb3JlJ10sWydDJywnbXVjaCddXSxhbnM6J0EnfSwKICB7bjozNSxvcHRzOltbJ0EnLCd0aGVyZSddLFsnQicsJ2FueXRoaW5nJ10sWydDJywnaXQnXV0sYW5zOidDJ30sCl07CnZhciBQNiA9IFsKICB7bjozNix0ZXh0OidQZW9wbGUgZmVlbCBsaWtlIHRoaXMgd2hlbiB0aGV5IGdldCBnb29kIG5ld3MuJyxmaXJzdDonaCcsYW5zOidoYXBweSd9LAogIHtuOjM3LHRleHQ6J0lmIHlvdSBoYXZlIHdvcmtlZCBoYXJkIGFsbCBkYXksIHlvdSBmZWVsIGxpa2UgdGhpcy4nLGZpcnN0Oid0JyxhbnM6J3RpcmVkJ30sCiAge246MzgsdGV4dDonV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwbGF5aW5nIGZvb3RiYWxsLCB5b3Ugd2FudCBhIHNob3dlciBiZWNhdXNlIHlvdSBmZWVsIGxpa2UgdGhpcy4nLGZpcnN0OidkJyxhbnM6J2RpcnR5J30sCiAge246MzksdGV4dDonSWYgcGVvcGxlIGdvIHdpdGhvdXQgYSBtZWFsIGFsbCBkYXksIHRoZXkgYmVnaW4gdG8gZmVlbCBsaWtlIHRoaXMuJyxmaXJzdDonaCcsYW5zOidodW5ncnknfSwKICB7bjo0MCx0ZXh0OidZb3UgZmVlbCBsaWtlIHRoaXMgaWYgaXQgaXMgaG90IGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGRyaW5rLicsZmlyc3Q6J3QnLGFuczondGhpcnN0eSd9LApdOwp2YXIgUDdBbnMgPSB7CiAgNDE6Wyd3aXRoJ10sCiAgNDI6Wyd3aGVyZScsJ2FueXdoZXJlJ10sCiAgNDM6Wyd0aGVyZSddLAogIDQ0Olsnd291bGQnLCInZCIsJ2QnXSwKICA0NTpbJ3lvdSddLAogIDQ2OlsnYXJlJywnbG9vaycsJ3NlZW0nLCdzb3VuZCddLAogIDQ3OlsnaGF2ZScsIid2ZSIsJ3ZlJ10sCiAgNDg6WydoZXInLCd0aGVpciddLAogIDQ5OlsnaGFzJ10sCiAgNTA6Wyd3aWxsJywiJ2xsIiwnbGwnXSwKfTsKdmFyIFA4QW5zID0gewogIDUxOlsndGVubmlzJywncGxheSB0ZW5uaXMnLCdwbGF5aW5nIHRlbm5pcycsJ2dvIHRvIHRlbm5pcyddLAogIDUyOlsnamFjayddLAogIDUzOlsnYnJpZGdlcyBjYWZcdTAwRTknLCdicmlkZ2VzIGNhZmUnXSwKICA1NDpbJ2d1aXRhcicsJ3NwYW5pc2gnLCdzcGFuaXNoIGd1aXRhciddLAogIDU1OlsnXHUwMEEzMTYuNTAnLCcxNi41MCcsJ21vbmV5Jywnc2l4dGVlbiBwb3VuZHMgZmlmdHknLCdzaXh0ZWVuIGZpZnR5J10sCn07CgovLyA9PT09PSBSZW5kZXJpbmcgPT09PT0KZnVuY3Rpb24gcmVuZGVyTUNRKGxpc3RFbCwgZGF0YSl7CiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWU9J3EtaXRlbSc7IGRpdi5kYXRhc2V0LnFpZD1xLm47CiAgICB2YXIgb3B0c0hUTUw9Jyc7CiAgICBpZihBcnJheS5pc0FycmF5KHEub3B0cykpewogICAgICBxLm9wdHMuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICBvcHRzSFRNTCArPSAnPGxhYmVsIGNsYXNzPSJvcHQiIGRhdGEtbGV0dGVyPSInK29bMF0rJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJxJytxLm4rJyIgdmFsdWU9Iicrb1swXSsnIj48c3BhbiBjbGFzcz0ib3B0LWxldHRlciI+JytvWzBdKyc8L3NwYW4+ICcrZXNjYXBlSHRtbChvWzFdKSsnPC9sYWJlbD4nOwogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIHN0cmluZyBvZiBsZXR0ZXJzIChQMSkKICAgICAgZm9yKHZhciBpPTA7aTxxLm9wdHMubGVuZ3RoO2krKyl7CiAgICAgICAgdmFyIEw9cS5vcHRzW2ldOwogICAgICAgIG9wdHNIVE1MICs9ICc8bGFiZWwgY2xhc3M9Im9wdCIgZGF0YS1sZXR0ZXI9IicrTCsnIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InEnK3EubisnIiB2YWx1ZT0iJytMKyciPjxzcGFuIGNsYXNzPSJvcHQtbGV0dGVyIj4nK0wrJzwvc3Bhbj48L2xhYmVsPic7CiAgICAgIH0KICAgIH0KICAgIGRpdi5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0icS10ZXh0Ij48YiBjbGFzcz0icW4iPicrcS5uKycuPC9iPjxzcGFuPicrZXNjYXBlSHRtbChxLnRleHQpKyc8L3NwYW4+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icS1vcHRzIj4nK29wdHNIVE1MKyc8L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmZWVkYmFjayI+PC9kaXY+JzsKICAgIGxpc3RFbC5hcHBlbmRDaGlsZChkaXYpOwogIH0pOwp9CmZ1bmN0aW9uIGVzY2FwZUh0bWwocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9bJjw+IiddL2csZnVuY3Rpb24oYyl7cmV0dXJuIHsnJic6JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicmcXVvdDsnLCInIjonJiMzOTsnfVtjXX0pfQoKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0MUxpc3QnKSxQMSk7CnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDJMaXN0JyksUDIpOwpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQzYUxpc3QnKSxQM2EpOwpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQ0TGlzdCcpLFA0KTsKCi8vIFBhcnQgNSBcdTIwMTQgcmVuZGVyIGFzIE1DUSBsaXN0IHVuZGVyIHRoZSBwYXNzYWdlCnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDVMaXN0JyksUDUubWFwKGZ1bmN0aW9uKHEpe3JldHVybiB7bjpxLm4sdGV4dDonUXVlc3Rpb24gJytxLm4rJyBcdTIwMTQgY2hvb3NlIHRoZSBiZXN0IHdvcmQgZm9yIHRoZSBnYXAuJyxvcHRzOnEub3B0cyxhbnM6cS5hbnN9fSkpOwoKLy8gUGFydCA2IFx1MjAxNCBmaXJzdC1sZXR0ZXIgKyBkYXNoZXMgKyBpbnB1dAooZnVuY3Rpb24oKXsKICB2YXIgbGlzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDZMaXN0Jyk7CiAgUDYuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciBkYXNoQ291bnQgPSBxLmFucy5sZW5ndGggLSAxOwogICAgdmFyIGRhc2hlcyA9IG5ldyBBcnJheShkYXNoQ291bnQpLmZpbGwoJ18nKS5qb2luKCcgJyk7CiAgICB2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkaXYuY2xhc3NOYW1lPSdxLWl0ZW0nOyBkaXYuZGF0YXNldC5xaWQ9cS5uOwogICAgZGl2LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icS10ZXh0Ij48YiBjbGFzcz0icW4iPicrcS5uKycuPC9iPjxzcGFuPicrZXNjYXBlSHRtbChxLnRleHQpKyc8L3NwYW4+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9IndvcmQtcm93Ij48c3BhbiBjbGFzcz0iZmlyc3QtbGV0dGVyIj4nK3EuZmlyc3QrJzwvc3Bhbj48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImlucHV0LWJsYW5rIiBkYXRhLXE9IicrcS5uKyciIHBsYWNlaG9sZGVyPSInK2Rhc2hlcysnIiBzdHlsZT0ibWluLXdpZHRoOjIwMHB4Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmVlZGJhY2siPjwvZGl2Pic7CiAgICBsaXN0LmFwcGVuZENoaWxkKGRpdik7CiAgfSk7Cn0pKCk7CgovLyA9PT09PSBXaXJlIG9wdGlvbiBjbGlja3MgPT09PT0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24ob3B0KXsKICBvcHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgdmFyIGlucHV0PW9wdC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOwogICAgdmFyIGdyb3VwPW9wdC5wYXJlbnRFbGVtZW50OwogICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7by5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpfSk7CiAgICBvcHQuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKICAgIGlucHV0LmNoZWNrZWQ9dHJ1ZTsKICAgIHVwZGF0ZVByb2dyZXNzKCk7CiAgfSk7Cn0pOwoKLy8gaW5wdXRzCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnB1dC1ibGFuaywucS1zZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXsKICBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkYXRlUHJvZ3Jlc3MpOwogIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsdXBkYXRlUHJvZ3Jlc3MpOwp9KTsKCi8vID09PT09IFN1Ym1pdCAmIEdyYWRlID09PT09CmZ1bmN0aW9uIGdldE1jcUFucyhxaWQpewogIHZhciBzZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0icScrcWlkKyciXTpjaGVja2VkJyk7CiAgcmV0dXJuIHNlbD9zZWwudmFsdWU6bnVsbDsKfQpmdW5jdGlvbiBnZXRJbnB1dEFucyhxaWQpewogIHZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKTsKICByZXR1cm4gZWw\/ZWwudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk6Jyc7Cn0KZnVuY3Rpb24gZ2V0U2VsZWN0QW5zKHFpZCl7CiAgdmFyIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLXNlbGVjdFtkYXRhLXFpZD0iJytxaWQrJyJdJyk7CiAgcmV0dXJuIGVsP2VsLnZhbHVlOicnOwp9CmZ1bmN0aW9uIHRvdGFsUXMoKXtyZXR1cm4gNTV9CgpmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7CiAgdmFyIG49MDsKICAvLyBNQ1E6IFAxKDEtNSkgUDIoNi0xMCkgUDNhKDExLTE1KSBQNCgyMS0yNykgUDUoMjgtMzUpCiAgWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1XS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKGdldE1jcUFucyhxKSluKyt9KTsKICBbMTYsMTcsMTgsMTksMjBdLmZvckVhY2goZnVuY3Rpb24ocSl7aWYoZ2V0U2VsZWN0QW5zKHEpKW4rK30pOwogIC8vIGlucHV0cwogIGZvcih2YXIgaT0zNjtpPD01NTtpKyspe2lmKGdldElucHV0QW5zKGkpKW4rK30KICByZXR1cm4gbjsKfQpmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcygpewogIHZhciBhPWFuc3dlcmVkQ291bnQoKSwgdG90YWw9dG90YWxRcygpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJlZENvdW50JykudGV4dENvbnRlbnQ9YTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ0ZpbGwnKS5zdHlsZS53aWR0aD0oYS90b3RhbCoxMDApKyclJzsKfQoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Ym1pdEJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIHZhciBzY29yZT0wOwogIC8vIE1DUSBwYXJ0cwogIHZhciBtY3FQYXJ0cz1bUDEsUDIsUDNhLFA0LFA1XTsKICBtY3FQYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpewogICAgcGFydC5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgICB2YXIgdj1nZXRNY3FBbnMocS5uKSwgaXRlbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1pdGVtW2RhdGEtcWlkPSInK3EubisnIl0nKTsKICAgICAgaWYoIWl0ZW0pcmV0dXJuOwogICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7CiAgICAgIC8vIG1hcmsgY29ycmVjdC9pbmNvcnJlY3Qgb3B0cwogICAgICBpdGVtLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIHZhciBMPW8uZGF0YXNldC5sZXR0ZXI7CiAgICAgICAgaWYoTD09PXEuYW5zKXtvLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyl9CiAgICAgICAgaWYodj09PUwpaWYoTCE9PXEuYW5zKXtvLmNsYXNzTGlzdC5hZGQoJ3dyb25nLW9wdCcpfQogICAgICB9KTsKICAgICAgdmFyIGZiPWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICAgIGlmKHY9PT1xLmFucyl7c2NvcmUrKzsgaXRlbS5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGZiLnRleHRDb250ZW50PSdcdTI3MTQgQ29ycmVjdCBcdTIwMTQgJytxLmFuc30KICAgICAgZWxzZXtpdGVtLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGZiLnRleHRDb250ZW50PSdcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3QgYW5zd2VyOiAnK3EuYW5zICsgKHY\/KCcgKHlvdSBjaG9zZSAnK3YrJyknKTonIChubyBhbnN3ZXIpJyl9CiAgICB9KTsKICB9KTsKICAvLyBQYXJ0IDNiIHNlbGVjdHMKICB2YXIgcDNiRmI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQzYkZlZWRiYWNrJyk7CiAgcDNiRmIuaW5uZXJIVE1MPScnOwogIE9iamVjdC5rZXlzKFAzYkFucykuZm9yRWFjaChmdW5jdGlvbihxaWQpewogICAgdmFyIHY9Z2V0U2VsZWN0QW5zKHFpZCksIGNvcnJlY3Q9UDNiQW5zW3FpZF07CiAgICB2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtc2VsZWN0W2RhdGEtcWlkPSInK3FpZCsnIl0nKTsKICAgIGlmKGVsKXtlbC5zdHlsZS5ib3JkZXJDb2xvcj0odj09PWNvcnJlY3Q\/JyMxMEI5ODEnOicjRUY0NDQ0Jyk7IGVsLnN0eWxlLmJvcmRlcldpZHRoPScycHgnOyBlbC5zdHlsZS5ib3JkZXJTdHlsZT0nc29saWQnfQogICAgdmFyIG5vdGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBub3RlLnN0eWxlLmNzc1RleHQ9J3BhZGRpbmc6OHB4IDEycHg7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luLXRvcDo2cHg7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2MDA7Jysodj09PWNvcnJlY3Q\/J2JhY2tncm91bmQ6cmdiYSgxNiwxODUsMTI5LC4xMik7Y29sb3I6IzA2NUY0Nic6J2JhY2tncm91bmQ6cmdiYSgyMzksNjgsNjgsLjEwKTtjb2xvcjojOTkxQjFCJyk7CiAgICBub3RlLmlubmVySFRNTD0nPGI+UScrcWlkKyc8L2I+OiAnKyh2PT09Y29ycmVjdD8nXHUyNzE0IENvcnJlY3QgKCcrY29ycmVjdCsnKSc6J1x1MjcxOCBXcm9uZyBcdTIwMTQgY29ycmVjdDogJytjb3JyZWN0Kyh2PycsIHlvdSBjaG9zZSAnK3Y6Jywgbm8gYW5zd2VyJykpOwogICAgcDNiRmIuYXBwZW5kQ2hpbGQobm90ZSk7CiAgICBpZih2PT09Y29ycmVjdClzY29yZSsrOwogIH0pOwogIC8vIFBhcnQgNgogIFA2LmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgdj1nZXRJbnB1dEFucyhxLm4pLCBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3EubisnIl0nKSwgaXRlbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1pdGVtW2RhdGEtcWlkPSInK3EubisnIl0nKTsKICAgIGlmKCFlbHx8IWl0ZW0pcmV0dXJuOwogICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOwogICAgdmFyIG9rPSh2PT09cS5hbnMudG9Mb3dlckNhc2UoKSk7CiAgICBpZihvayl7c2NvcmUrKzsgZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKS50ZXh0Q29udGVudD0nXHUyNzE0IENvcnJlY3QnfQogICAgZWxzZXtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJykudGV4dENvbnRlbnQ9J1x1MjcxOCBXcm9uZyBcdTIwMTQgY29ycmVjdDogJytxLmFuc30KICB9KTsKICAvLyBQYXJ0IDcKICBPYmplY3Qua2V5cyhQN0FucykuZm9yRWFjaChmdW5jdGlvbihxaWQpewogICAgdmFyIHY9Z2V0SW5wdXRBbnMocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFjY2VwdGVkPVA3QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgdmFyIG9rPWFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpfSBlbHNlIHtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBlbC50aXRsZT0nQ29ycmVjdDogJythY2NlcHRlZC5qb2luKCcgLyAnKX0KICB9KTsKICAvLyBQYXJ0IDgKICBPYmplY3Qua2V5cyhQOEFucykuZm9yRWFjaChmdW5jdGlvbihxaWQpewogICAgdmFyIHY9Z2V0SW5wdXRBbnMocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFjY2VwdGVkPVA4QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgdmFyIG9rPWFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpfSBlbHNlIHtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBlbC50aXRsZT0nQ29ycmVjdDogJythY2NlcHRlZC5qb2luKCcgLyAnKX0KICB9KTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlTm93JykudGV4dENvbnRlbnQ9c2NvcmU7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbmFsU2NvcmUnKS50ZXh0Q29udGVudD1zY29yZTsKICB2YXIgcGN0PU1hdGgucm91bmQoc2NvcmUvNTUqMTAwKTsKICB2YXIgbXNnPScnOwogIGlmKHBjdD49ODUpIG1zZz0nXHV7MUYzQzZ9IEV4Y2VsbGVudCEgWW91IGFyZSB3ZWxsIHByZXBhcmVkIGZvciB0aGUgcmVhbCBLRVQgZXhhbS4nOwogIGVsc2UgaWYocGN0Pj03MCkgbXNnPSdcdXsxRjQ0RH0gR29vZCBqb2IhIEEgZmV3IG1vcmUgdGVzdHMgYW5kIHlvdSB3aWxsIGJlIHJlYWR5Lic7CiAgZWxzZSBpZihwY3Q+PTUwKSBtc2c9J1x1ezFGNERBfSBLZWVwIHByYWN0aXNpbmcgXHUyMDE0IHJldmlldyB0aGUgd3JvbmcgYW5zd2VycyBhYm92ZS4nOwogIGVsc2UgbXNnPSdcdXsxRjRBQX0gU3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBSZXJlYWQgdGhlIHBhc3NhZ2VzIGFuZCB0cnkgYWdhaW4uJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c01zZycpLnRleHRDb250ZW50PW1zZzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c0Jhbm5lcicpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNCYW5uZXInKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J2NlbnRlcid9KX0sMTIwKTsKfSk7Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICBpZighY29uZmlybSgnUmVzZXQgYWxsIGFuc3dlcnM\/JykpcmV0dXJuOwogIGxvY2F0aW9uLnJlbG9hZCgpOwp9KTsKCi8vIFdyaXRpbmcgd29yZCBjb3VudGVyCnZhciB0YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3JpdGluZ0FyZWEnKSx3Yz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2NDb3VudGVyJyk7CnRhLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbigpewogIHZhciB3PXRhLnZhbHVlLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDsKICB3Yy50ZXh0Q29udGVudD13Kycgd29yZHMgXHUwMEI3IHRhcmdldCAyNVx1MjAxMzM1JzsKICB3Yy5jbGFzc0xpc3QucmVtb3ZlKCdvaycsJ292ZXInKTsKICBpZih3Pj0yNSlpZih3PD0zNSl3Yy5jbGFzc0xpc3QuYWRkKCdvaycpOwogIGVsc2UgaWYodz4zNSl3Yy5jbGFzc0xpc3QuYWRkKCdvdmVyJyk7Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FtcGxlVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbXBsZUJveCcpLmNsYXNzTGlzdC50b2dnbGUoJ3Nob3cnKTsKfSk7CgovLyA9PT09PSBTSE9XIEFOU1dFUiBQRVItUSBGRUFUVVJFID09PT09CmZ1bmN0aW9uIGdldEFuc0ZvclEobil7CiAgaWYobj49MSkgaWYobjw9NSkgcmV0dXJuIChQMS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgaWYobj49NikgaWYobjw9MTApIHJldHVybiAoUDIuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTExKSBpZihuPD0xNSkgcmV0dXJuIChQM2EuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTIxKSBpZihuPD0yNykgcmV0dXJuIChQNC5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgaWYobj49MjgpIGlmKG48PTM1KSByZXR1cm4gKFA1LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICByZXR1cm4gbnVsbDsKfQovLyBNQ1EgcS1pdGVtczogYXBwZW5kIFNob3cgQW5zd2VyIGJ1dHRvbgpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucS1pdGVtJykuZm9yRWFjaChmdW5jdGlvbihpdGVtKXsKICBpZihpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5zaG93LWFucy1idG4nKSkgcmV0dXJuOwogIHZhciBxaWQ9cGFyc2VJbnQoaXRlbS5kYXRhc2V0LnFpZCk7CiAgdmFyIGJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICBidG4uY2xhc3NOYW1lPSdzaG93LWFucy1idG4nOyBidG4udHlwZT0nYnV0dG9uJzsKICBidG4uaW5uZXJIVE1MPSdcdXsxRjQ0MX0gU2hvdyBBbnN3ZXInOwogIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciBpc1A2PWZhbHNlOyBpZihxaWQ+PTM2KSBpZihxaWQ8PTQwKSBpc1A2PXRydWU7CiAgICBpZihpc1A2KXsKICAgICAgLy8gUGFydCA2IHNwZWxsIGlucHV0CiAgICAgIHZhciBwNnE9UDYuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09cWlkfSk7CiAgICAgIHZhciBpbnB1dD1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFuaycpOwogICAgICBpZihpbnB1dCkgaWYocDZxKXtpbnB1dC52YWx1ZT1wNnEuYW5zOyBpbnB1dC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTt9CiAgICAgIHZhciBmYjY9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgICAgaWYoZmI2KSBpZihwNnEpe2l0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsgaXRlbS5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGZiNi50ZXh0Q29udGVudD0nXHV7MUY0NDF9IEFuc3dlcjogJytwNnEuYW5zO30KICAgIH0gZWxzZSB7CiAgICAgIHZhciBhbnM9Z2V0QW5zRm9yUShxaWQpOwogICAgICBpZighYW5zKSByZXR1cm47CiAgICAgIC8vIGhpZ2hsaWdodCBjb3JyZWN0IG9wdGlvbgogICAgICB2YXIgY29ycmVjdE9wdD1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5vcHRbZGF0YS1sZXR0ZXI9IicrYW5zKyciXScpOwogICAgICBpZihjb3JyZWN0T3B0KXtjb3JyZWN0T3B0LmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyk7fQogICAgICAvLyBzaW11bGF0ZSBjbGljayBzbyB1cGRhdGVQcm9ncmVzcyBmaXJlcwogICAgICB2YXIgZmI9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgICAgaWYoZmIpe2l0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsgZmIuc3R5bGUuYmFja2dyb3VuZD0ncmdiYSgxNiwxODUsMTI5LC4xMiknOyBmYi5zdHlsZS5jb2xvcj0nIzA2NUY0Nic7IGZiLnRleHRDb250ZW50PSdcdXsxRjQ0MX0gQW5zd2VyOiAnK2Fuczt9CiAgICB9CiAgICBidG4uZGlzYWJsZWQ9dHJ1ZTsKICB9KTsKICBpdGVtLmFwcGVuZENoaWxkKGJ0bik7Cn0pOwovLyBQYXJ0IDNiIHNlbGVjdHM6IGFwcGVuZCBpbmxpbmUgU2hvdyBBbnN3ZXIgYnV0dG9uClsxNiwxNywxOCwxOSwyMF0uZm9yRWFjaChmdW5jdGlvbihxaWQpewogIHZhciBzZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtc2VsZWN0W2RhdGEtcWlkPSInK3FpZCsnIl0nKTsKICBpZighc2VsKSByZXR1cm47CiAgdmFyIGJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICBidG4uY2xhc3NOYW1lPSdzaG93LWFucy1idG4taW5saW5lJzsgYnRuLnR5cGU9J2J1dHRvbic7CiAgdmFyIGFucz1QM2JBbnNbcWlkXTsKICBidG4uaW5uZXJIVE1MPSdcdXsxRjQ0MX0gJythbnM7CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgc2VsLnZhbHVlPWFuczsgc2VsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CiAgICBzZWwuc3R5bGUuYm9yZGVyQ29sb3I9JyMxMEI5ODEnOyBzZWwuc3R5bGUuYm9yZGVyV2lkdGg9JzJweCc7IHNlbC5zdHlsZS5ib3JkZXJTdHlsZT0nc29saWQnOwogICAgYnRuLmRpc2FibGVkPXRydWU7CiAgfSk7CiAgc2VsLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBidG4pOwp9KTsKLy8gUGFydCA3ICYgOCBpbnB1dHM6IGFwcGVuZCBpbmxpbmUgU2hvdyBBbnN3ZXIgYnV0dG9uCmZvcih2YXIgcWk9NDE7cWk8PTU1O3FpKyspewogIChmdW5jdGlvbihxaWQpewogICAgdmFyIGlucD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKTsKICAgIGlmKCFpbnApIHJldHVybjsKICAgIHZhciBhbnM9KHFpZDw9NTApP1A3QW5zW3FpZF1bMF06UDhBbnNbcWlkXVswXTsKICAgIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICBidG4uY2xhc3NOYW1lPSdzaG93LWFucy1idG4taW5saW5lJzsgYnRuLnR5cGU9J2J1dHRvbic7CiAgICBidG4uaW5uZXJIVE1MPSdcdXsxRjQ0MX0gJythbnM7CiAgICBidG4udGl0bGU9J0NsaWNrIHRvIGZpbGw6ICcrYW5zOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICBpbnAudmFsdWU9YW5zOyBpbnAuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpbnAuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpOwogICAgICBidG4uZGlzYWJsZWQ9dHJ1ZTsKICAgIH0pOwogICAgaW5wLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBidG4pOwogIH0pKHFpKTsKfQoKfSkoKTsK'));<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>All English 4U Grammar IELTS TOEFL Cambridge CELPIP Dictation Back Grammar IELTS TOEFL Cambridge CELPIP Dictation Cambridge English &#183; Key (KET) KET 4 &#8212; Test 2Reading &amp; Writing Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn [&hellip;]<\/p>\n","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-3954","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3954","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=3954"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3954\/revisions"}],"predecessor-version":[{"id":5902,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3954\/revisions\/5902"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=3954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}