{"id":5025,"date":"2026-06-26T00:22:51","date_gmt":"2026-06-26T00:22:51","guid":{"rendered":"https:\/\/allenglish4u.com\/grammar-intermediate-unit-47\/"},"modified":"2026-06-26T00:22:51","modified_gmt":"2026-06-26T00:22:51","slug":"grammar-intermediate-unit-47","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/grammar-intermediate-unit-47\/","title":{"rendered":"Reported speech 1 \u2014 English Grammar in Use (Unit 47)"},"content":{"rendered":"<style>.ae4u-u1{--g1:#0E9F6E;--g2:#057A55;--g3:#0B7A56;--ink:#0E2A22;--mut:#5B7268;--paper:#FBFDFB;--card:#FFFFFF;--line:#E2EFE9;--amber:#F59E0B;--bad:#E0556B;--good:#0E9F6E;--soft:#F1F8F5;\n  font-family:'Plus Jakarta Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);max-width:980px;margin:0 auto;padding:0 18px 60px;-webkit-font-smoothing:antialiased;}\n.ae4u-u1 *{box-sizing:border-box;}\n.ae4u-u1 .serif{font-family:'Fraunces',Georgia,serif;}\n\n\/* ---- Unit hub (intermediate selector) ---- *\/\n.ae4u-u1 .hub{background:linear-gradient(135deg,#063D2C,#0B6B4C 60%,#0E9F6E);border-radius:24px;padding:30px 28px;color:#fff;margin:22px 0 26px;box-shadow:0 18px 40px -22px rgba(6,61,44,.6);}\n.ae4u-u1 .hub .eyebrow{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.85;margin:0 0 8px;}\n.ae4u-u1 .hub h2{font-size:clamp(26px,4vw,38px);line-height:1.05;margin:0 0 8px;font-weight:700;}\n.ae4u-u1 .hub p{margin:0 0 18px;opacity:.92;font-size:15.5px;max-width:60ch;}\n.ae4u-u1 .units{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin;}\n.ae4u-u1 .unit-chip{flex:0 0 auto;min-width:150px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:12px 14px;text-decoration:none;color:#fff;transition:.18s;}\n.ae4u-u1 .unit-chip .un{font-size:12px;font-weight:700;letter-spacing:.05em;opacity:.8;}\n.ae4u-u1 .unit-chip .ut{font-size:14px;font-weight:600;margin-top:3px;line-height:1.25;}\n.ae4u-u1 .unit-chip .st{display:inline-block;margin-top:8px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;}\n.ae4u-u1 .unit-chip.live{background:#fff;color:var(--g2);box-shadow:0 8px 20px -10px rgba(0,0,0,.4);}\n.ae4u-u1 .unit-chip.live .un{opacity:.7;}\n.ae4u-u1 .unit-chip.live .st{background:var(--g1);color:#fff;}\n.ae4u-u1 .unit-chip.soon{opacity:.62;cursor:default;}\n.ae4u-u1 .unit-chip.soon .st{background:rgba(255,255,255,.2);color:#fff;}\n.ae4u-u1 .unit-chip.live:hover{transform:translateY(-2px);}\n\n\/* ---- Worksheet shell ---- *\/\n.ae4u-u1 .ws-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px 24px;margin-bottom:18px;box-shadow:0 10px 30px -24px rgba(14,42,34,.5);}\n.ae4u-u1 .ws-badge{font-size:12px;font-weight:700;color:var(--g2);background:var(--soft);border:1px solid var(--line);padding:4px 12px;border-radius:30px;letter-spacing:.04em;}\n.ae4u-u1 .ws-head h1{font-size:clamp(24px,4vw,34px);margin:6px 0 2px;font-weight:700;flex:1 1 260px;}\n.ae4u-u1 .ws-head h1 small{display:block;font-family:'Plus Jakarta Sans';font-weight:500;font-size:15px;color:var(--mut);margin-top:4px;}\n.ae4u-u1 .ring-wrap{display:flex;align-items:center;gap:12px;}\n.ae4u-u1 .ring{position:relative;width:74px;height:74px;}\n.ae4u-u1 .ring svg{transform:rotate(-90deg);}\n.ae4u-u1 .ring .pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;color:var(--g2);}\n.ae4u-u1 .ring-lbl{font-size:12.5px;color:var(--mut);max-width:90px;line-height:1.3;}\n.ae4u-u1 .btn-reset{background:none;border:1px solid var(--line);color:var(--mut);border-radius:10px;padding:8px 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;}\n.ae4u-u1 .btn-reset:hover{background:var(--soft);}\n\n\/* ---- Tabs ---- *\/\n.ae4u-u1 .tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:16px;scrollbar-width:thin;}\n.ae4u-u1 .tab{flex:0 0 auto;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 14px;font:inherit;font-size:13.5px;font-weight:600;color:var(--mut);cursor:pointer;transition:.15s;white-space:nowrap;}\n.ae4u-u1 .tab:hover{border-color:var(--g1);color:var(--g2);}\n.ae4u-u1 .tab.active{background:var(--g2);border-color:var(--g2);color:#fff;}\n.ae4u-u1 .tab .badge{display:inline-block;margin-left:6px;font-size:11px;font-weight:800;background:rgba(255,255,255,.25);padding:1px 7px;border-radius:20px;}\n.ae4u-u1 .tab:not(.active) .badge{background:var(--soft);color:var(--g2);}\n\n\/* ---- Panels ---- *\/\n.ae4u-u1 .panel{display:none;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px 26px 22px;box-shadow:0 10px 30px -26px rgba(14,42,34,.5);animation:fade .25s ease;}\n.ae4u-u1 .panel.active{display:block;}\n@keyframes fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}\n.ae4u-u1 .panel h2{font-size:21px;margin:0 0 4px;font-weight:700;}\n.ae4u-u1 .panel .instr{color:var(--mut);font-size:15px;margin:0 0 20px;}\n\n\/* ---- Items ---- *\/\n.ae4u-u1 .item{padding:13px 0;border-bottom:1px dashed var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:8px;}\n.ae4u-u1 .item:last-of-type{border-bottom:none;}\n.ae4u-u1 .qn{flex:0 0 26px;width:26px;height:26px;border-radius:50%;background:var(--soft);color:var(--g2);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;}\n.ae4u-u1 .qtext{flex:1 1 auto;font-size:16px;line-height:1.9;}\n.ae4u-u1 .hint{color:var(--g2);font-weight:700;font-size:14px;}\n.ae4u-u1 input.gap{font:inherit;font-size:15px;border:none;border-bottom:2px solid var(--g1);background:var(--soft);border-radius:6px 6px 0 0;padding:5px 10px;min-width:130px;color:var(--ink);outline:none;}\n.ae4u-u1 input.gap:focus{background:#fff;box-shadow:0 2px 0 var(--g1);}\n.ae4u-u1 input.gap.ok{border-color:var(--good);background:#E9F8F1;}\n.ae4u-u1 input.gap.no{border-color:var(--bad);background:#FCEBEE;}\n.ae4u-u1 .base{font-weight:700;color:var(--ink);background:var(--soft);padding:3px 10px;border-radius:8px;}\n.ae4u-u1 .arrow{color:var(--mut);font-weight:700;}\n.ae4u-u1 .feedback{flex-basis:100%;font-size:13.5px;margin-left:34px;min-height:0;}\n.ae4u-u1 .feedback .corr{color:var(--g2);font-weight:700;}\n.ae4u-u1 .feedback .mark-ok{color:var(--good);font-weight:700;}\n.ae4u-u1 .feedback .mark-no{color:var(--bad);font-weight:700;}\n.ae4u-u1 .show-a{background:none;border:none;color:var(--mut);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:underline;padding:2px 4px;}\n.ae4u-u1 .show-a:hover{color:var(--g2);}\n\n\/* MCQ *\/\n.ae4u-u1 .mcq-opts{display:flex;gap:8px;flex-wrap:wrap;flex-basis:100%;margin-left:34px;margin-top:4px;}\n.ae4u-u1 .opt{border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:7px 15px;font:inherit;font-size:14.5px;cursor:pointer;transition:.12s;}\n.ae4u-u1 .opt:hover{border-color:var(--g1);}\n.ae4u-u1 .opt.sel{border-color:var(--g2);background:var(--soft);color:var(--g2);font-weight:700;}\n.ae4u-u1 .opt.ok{border-color:var(--good);background:#E9F8F1;color:var(--g2);font-weight:700;}\n.ae4u-u1 .opt.no{border-color:var(--bad);background:#FCEBEE;color:var(--bad);}\n\n\/* order *\/\n.ae4u-u1 .ord-build{flex-basis:100%;min-height:46px;border:2px dashed var(--line);border-radius:12px;padding:8px;margin:6px 0 6px 34px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;}\n.ae4u-u1 .ord-build:empty::before{content:\"Click words below\u2026\";color:var(--mut);font-size:13.5px;font-style:italic;}\n.ae4u-u1 .ord-bank{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px;margin-left:34px;}\n.ae4u-u1 .word{background:#fff;border:1.5px solid var(--g1);color:var(--g2);border-radius:9px;padding:6px 13px;font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;transition:.12s;}\n.ae4u-u1 .word:hover{background:var(--soft);}\n.ae4u-u1 .ord-build .word{background:var(--g2);color:#fff;border-color:var(--g2);}\n.ae4u-u1 .ord-build.ok{border-color:var(--good);background:#E9F8F1;}\n.ae4u-u1 .ord-build.no{border-color:var(--bad);background:#FCEBEE;}\n\n\/* listen *\/\n.ae4u-u1 .play-btn{flex:0 0 auto;width:42px;height:42px;border-radius:50%;border:none;background:var(--g2);color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s;}\n.ae4u-u1 .play-btn:hover{background:var(--g1);transform:scale(1.06);}\n.ae4u-u1 .play-btn.playing{background:var(--amber);}\n\n\/* check bar *\/\n.ae4u-u1 .check-bar{display:flex;align-items:center;gap:14px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line);flex-wrap:wrap;}\n.ae4u-u1 .btn-check{background:var(--g2);color:#fff;border:none;border-radius:12px;padding:11px 22px;font:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:.15s;}\n.ae4u-u1 .btn-check:hover{background:var(--g1);}\n.ae4u-u1 .ex-score{font-size:14.5px;font-weight:700;color:var(--mut);}\n.ae4u-u1 .ex-score b{color:var(--g2);}\n.ae4u-u1 .nav-next{margin-left:auto;background:none;border:1px solid var(--line);color:var(--g2);border-radius:10px;padding:9px 16px;font:inherit;font-size:14px;font-weight:600;cursor:pointer;}\n.ae4u-u1 .nav-next:hover{background:var(--soft);}\n\n\/* notes *\/\n.ae4u-u1 .note-block{padding:18px 0;border-bottom:1px solid var(--line);}\n.ae4u-u1 .note-block:last-child{border-bottom:none;}\n.ae4u-u1 .note-block h3{font-size:18px;margin:0 0 12px;display:flex;align-items:center;gap:10px;font-weight:700;}\n.ae4u-u1 .note-tag{width:28px;height:28px;border-radius:8px;background:var(--g2);color:#fff;font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center;}\n.ae4u-u1 .note-block.warn .note-tag{background:var(--amber);}\n.ae4u-u1 .note-block p{font-size:15.5px;line-height:1.6;margin:0 0 10px;color:#27433a;}\n.ae4u-u1 .form-table,.ae4u-u1 .spell-table{background:var(--soft);border-radius:12px;padding:6px 14px;}\n.ae4u-u1 .form-row{padding:9px 0;font-size:15px;border-bottom:1px solid var(--line);}\n.ae4u-u1 .form-row:last-child{border-bottom:none;}\n.ae4u-u1 .form-pos,.ae4u-u1 .form-neg,.ae4u-u1 .form-q{display:inline-flex;width:22px;height:22px;border-radius:6px;color:#fff;font-weight:800;align-items:center;justify-content:center;margin-right:8px;font-size:13px;}\n.ae4u-u1 .form-pos{background:var(--good);}.ae4u-u1 .form-neg{background:var(--bad);}.ae4u-u1 .form-q{background:var(--g1);}\n.ae4u-u1 .use-list{margin:0;padding-left:20px;}\n.ae4u-u1 .use-list li{font-size:15.5px;line-height:1.55;margin-bottom:12px;}\n.ae4u-u1 .eg{display:block;color:var(--g2);font-style:italic;font-size:14.5px;margin-top:4px;}\n.ae4u-u1 .xref{font-size:12.5px;color:var(--amber);font-weight:700;}\n.ae4u-u1 .chips{display:flex;flex-wrap:wrap;gap:7px;}\n.ae4u-u1 .chips span{background:var(--soft);border:1px solid var(--line);color:var(--g2);border-radius:20px;padding:4px 13px;font-size:13.5px;font-weight:600;}\n.ae4u-u1 .chips-warn span{background:#FEF6E7;border-color:#F8E3B5;color:#B4790B;}\n.ae4u-u1 .spell-table{border-collapse:separate;border-spacing:0;width:100%;}\n.ae4u-u1 .spell-table td{padding:9px 8px;font-size:14.5px;border-bottom:1px solid var(--line);vertical-align:top;}\n.ae4u-u1 .spell-table td:first-child{font-weight:600;color:#27433a;width:42%;}\n.ae4u-u1 .spell-table td:last-child{color:var(--g2);}\n.ae4u-u1 .spell-table tr:last-child td{border-bottom:none;}\n.ae4u-u1 .eg2{background:var(--soft);border-radius:10px;padding:12px 14px;font-size:15px;line-height:1.8;}\n.ae4u-u1 .ok{color:var(--good);font-weight:800;}.ae4u-u1 .no{color:var(--bad);font-weight:800;}\n.ae4u-u1 .tip{background:#FEF6E7;border-left:3px solid var(--amber);border-radius:8px;padding:10px 14px;font-size:14.5px;color:#7a5908;}\n.ae4u-u1 .src-note{font-size:12.5px;color:var(--mut);text-align:center;margin-top:24px;line-height:1.6;}\n\n@media(max-width:560px){\n  .ae4u-u1 .ws-head{padding:18px;}\n  .ae4u-u1 .panel{padding:20px 16px;}\n  .ae4u-u1 .qtext{font-size:15px;}\n  .ae4u-u1 .mcq-opts,.ae4u-u1 .ord-bank,.ae4u-u1 .ord-build,.ae4u-u1 .feedback{margin-left:0;}\n}\n\n\/* ===== v2 visual components ===== *\/\n.ae4u-u1 #ring-fg{transition:stroke-dashoffset .6s cubic-bezier(.4,0,.2,1);}\n\/* intro strip *\/\n.ae4u-u1 .learn-strip{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 8px;}\n.ae4u-u1 .ls-item{flex:1 1 160px;display:flex;align-items:center;gap:11px;background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:12px 14px;}\n.ae4u-u1 .ls-ic{font-size:22px;}\n.ae4u-u1 .ls-item b{display:block;font-size:14.5px;}\n.ae4u-u1 .ls-item span{font-size:12.5px;color:var(--mut);}\n\/* formula blocks *\/\n.ae4u-u1 .formula{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;margin:6px 0 14px;}\n.ae4u-u1 .fb{flex:1 1 120px;border-radius:14px;padding:13px 14px;color:#fff;display:flex;flex-direction:column;gap:3px;box-shadow:0 8px 18px -12px rgba(0,0,0,.4);}\n.ae4u-u1 .fb-lbl{font-weight:800;font-size:15px;}\n.ae4u-u1 .fb-eg{font-size:12.5px;opacity:.9;}\n.ae4u-u1 .fb-subj{background:linear-gradient(135deg,#2563EB,#3B82F6);}\n.ae4u-u1 .fb-aux{background:linear-gradient(135deg,#057A55,#0E9F6E);}\n.ae4u-u1 .fb-verb{background:linear-gradient(135deg,#D97706,#F59E0B);}\n.ae4u-u1 .fb-op{display:flex;align-items:center;font-size:24px;font-weight:800;color:var(--mut);}\n\/* timeline *\/\n.ae4u-u1 .timeline{background:var(--soft);border:1px solid var(--line);border-radius:16px;padding:10px 14px;margin-top:6px;}\n.ae4u-u1 .timeline svg{width:100%;height:auto;display:block;}\n\/* use cards *\/\n.ae4u-u1 .use-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:4px 0 6px;}\n.ae4u-u1 .use-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;transition:.18s;border-top:4px solid var(--g1);}\n.ae4u-u1 .use-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px -18px rgba(14,42,34,.45);}\n.ae4u-u1 .use-card:nth-child(2){border-top-color:#3B82F6;}\n.ae4u-u1 .use-card:nth-child(3){border-top-color:#F59E0B;}\n.ae4u-u1 .use-card:nth-child(4){border-top-color:#8B5CF6;}\n.ae4u-u1 .use-ic{font-size:26px;}\n.ae4u-u1 .use-t{font-weight:800;font-size:15.5px;margin:6px 0 4px;}\n.ae4u-u1 .use-card p{font-size:13.5px;color:var(--mut);margin:0 0 8px;line-height:1.45;}\n.ae4u-u1 .use-eg{display:block;color:var(--g2);font-style:italic;font-size:13.5px;font-weight:600;}\n.ae4u-u1 .signal-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;background:var(--soft);border-radius:12px;padding:11px 14px;}\n.ae4u-u1 .signal-row>b{font-size:14px;color:#27433a;white-space:nowrap;}\n\/* spell highlight *\/\n.ae4u-u1 .spell-table .rule{display:inline-block;font-size:11.5px;font-weight:800;color:#fff;background:var(--g1);border-radius:20px;padding:1px 9px;margin-left:6px;vertical-align:middle;}\n.ae4u-u1 .spell-table em.hl{font-style:normal;font-weight:800;color:#fff;background:var(--amber);border-radius:4px;padding:0 3px;}\n.ae4u-u1 .spell-table em.cut{font-style:normal;color:var(--bad);text-decoration:line-through;}\n.ae4u-u1 .spell-table td:last-child{font-size:15px;}\n\/* state-verb grid *\/\n.ae4u-u1 .sv-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}\n.ae4u-u1 .sv{display:flex;align-items:center;gap:9px;border-radius:10px;padding:9px 12px;font-size:14.5px;}\n.ae4u-u1 .sv.ok{background:#E9F8F1;}\n.ae4u-u1 .sv.no{background:#FCEBEE;color:#94516a;}\n.ae4u-u1 .sv-b{width:22px;height:22px;border-radius:50%;color:#fff;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;flex:0 0 22px;}\n.ae4u-u1 .sv.ok .sv-b{background:var(--good);}\n.ae4u-u1 .sv.no .sv-b{background:var(--bad);}\n@media(max-width:520px){.ae4u-u1 .sv-grid{grid-template-columns:1fr;}}\n\/* remember box *\/\n.ae4u-u1 .remember{display:flex;gap:12px;align-items:flex-start;background:linear-gradient(135deg,#F1F8F5,#E9F8F1);border:1px solid #C7EAD9;border-radius:14px;padding:15px 17px;}\n.ae4u-u1 .rm-ic{font-size:22px;}\n.ae4u-u1 .remember div{font-size:15px;line-height:1.55;}\n.ae4u-u1 .rm-tag{display:inline-block;font-weight:800;font-size:13px;color:#fff;background:var(--g2);border-radius:7px;padding:1px 8px;}\n\/* qn status + pop *\/\n.ae4u-u1 .qn.ok{background:var(--good);color:#fff;animation:pop .3s ease;}\n.ae4u-u1 .qn.no{background:var(--bad);color:#fff;animation:pop .3s ease;}\n.ae4u-u1 .qn.shown{background:var(--amber);color:#fff;}\n@keyframes pop{0%{transform:scale(.6);}60%{transform:scale(1.25);}100%{transform:scale(1);}}\n\/* celebrate *\/\n.ae4u-u1 .celebrate{display:none;background:linear-gradient(135deg,#057A55,#0E9F6E);color:#fff;border-radius:16px;padding:16px 20px;font-size:17px;font-weight:700;text-align:center;margin-bottom:16px;box-shadow:0 14px 30px -16px rgba(6,61,44,.6);}\n.ae4u-u1 .celebrate.show{display:block;animation:pop .45s ease;}\n\n\/* cross-page live unit chips *\/\n.ae4u-u1 a.unit-chip:not(.live){cursor:pointer;}\n.ae4u-u1 a.unit-chip:not(.live):hover{transform:translateY(-2px);background:rgba(255,255,255,.20);border-color:rgba(255,255,255,.45);}\n.ae4u-u1 .unit-chip .st.live2{background:#34D399;color:#063D2C;}\n<\/style>\n<div class=\"ae4u-u1\"><div class=\"hub\"><div class=\"eyebrow\">English Grammar in Use \u00b7 Murphy<\/div><h2 class=\"serif\">Intermediate Grammar<\/h2><p>Master English grammar one unit at a time. Clear notes, then 40+ interactive exercises with instant feedback \u2014 based on the topics in <i>English Grammar in Use (Intermediate)<\/i>.<\/p><div class=\"units\"><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate\/\"><div class=\"un\">UNIT 1<\/div><div class=\"ut\">Present continuous<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-2\/\"><div class=\"un\">UNIT 2<\/div><div class=\"ut\">Present simple<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-3\/\"><div class=\"un\">UNIT 3<\/div><div class=\"ut\">Continuous or simple?<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-4\/\"><div class=\"un\">UNIT 4<\/div><div class=\"ut\">Action or state?<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-5\/\"><div class=\"un\">UNIT 5<\/div><div class=\"ut\">Past simple<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-6\/\"><div class=\"un\">UNIT 6<\/div><div class=\"ut\">Past continuous<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-7\/\"><div class=\"un\">UNIT 7<\/div><div class=\"ut\">Present perfect<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-8\/\"><div class=\"un\">UNIT 8<\/div><div class=\"ut\">Present perfect<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-9\/\"><div class=\"un\">UNIT 9<\/div><div class=\"ut\">Present perfect cont.<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-10\/\"><div class=\"un\">UNIT 10<\/div><div class=\"ut\">Perfect: cont. or simple?<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-11\/\"><div class=\"un\">UNIT 11<\/div><div class=\"ut\">How long\u2026?<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-12\/\"><div class=\"un\">UNIT 12<\/div><div class=\"ut\">For &#038; since<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-13\/\"><div class=\"un\">UNIT 13<\/div><div class=\"ut\">Perfect vs past 1<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-14\/\"><div class=\"un\">UNIT 14<\/div><div class=\"ut\">Perfect vs past 2<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-15\/\"><div class=\"un\">UNIT 15<\/div><div class=\"ut\">Past perfect<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-16\/\"><div class=\"un\">UNIT 16<\/div><div class=\"ut\">Past perfect cont.<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-17\/\"><div class=\"un\">UNIT 17<\/div><div class=\"ut\">Have &#038; have got<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-18\/\"><div class=\"un\">UNIT 18<\/div><div class=\"ut\">Used to (do)<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-19\/\"><div class=\"un\">UNIT 19<\/div><div class=\"ut\">Future: present tenses<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-20\/\"><div class=\"un\">UNIT 20<\/div><div class=\"ut\">Future: going to<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-21\/\"><div class=\"un\">UNIT 21<\/div><div class=\"ut\">Future: will\/shall<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-22\/\"><div class=\"un\">UNIT 22<\/div><div class=\"ut\">Future: will\/shall 2<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-23\/\"><div class=\"un\">UNIT 23<\/div><div class=\"ut\">Future: will \/ going to<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-24\/\"><div class=\"un\">UNIT 24<\/div><div class=\"ut\">Future cont. &#038; perfect<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-25\/\"><div class=\"un\">UNIT 25<\/div><div class=\"ut\">When &#038; if<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-26\/\"><div class=\"un\">UNIT 26<\/div><div class=\"ut\">Can\/could\/able to<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-27\/\"><div class=\"un\">UNIT 27<\/div><div class=\"ut\">Could \/ could have<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-28\/\"><div class=\"un\">UNIT 28<\/div><div class=\"ut\">Must \/ can&#8217;t<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-29\/\"><div class=\"un\">UNIT 29<\/div><div class=\"ut\">May and might 1<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-30\/\"><div class=\"un\">UNIT 30<\/div><div class=\"ut\">May and might 2<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-31\/\"><div class=\"un\">UNIT 31<\/div><div class=\"ut\">Have to and must<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-32\/\"><div class=\"un\">UNIT 32<\/div><div class=\"ut\">Must \/ mustn&#8217;t \/ needn&#8217;t<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-33\/\"><div class=\"un\">UNIT 33<\/div><div class=\"ut\">Should 1<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-34\/\"><div class=\"un\">UNIT 34<\/div><div class=\"ut\">Should 2<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-35\/\"><div class=\"un\">UNIT 35<\/div><div class=\"ut\">Had better \/ It&#8217;s time<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-36\/\"><div class=\"un\">UNIT 36<\/div><div class=\"ut\">Would<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-37\/\"><div class=\"un\">UNIT 37<\/div><div class=\"ut\">Requests &#038; offers<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-38\/\"><div class=\"un\">UNIT 38<\/div><div class=\"ut\">If I do \/ If I did<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-39\/\"><div class=\"un\">UNIT 39<\/div><div class=\"ut\">If I knew \/ I wish I knew<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-40\/\"><div class=\"un\">UNIT 40<\/div><div class=\"ut\">If I had known \/ I wish I had known<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-41\/\"><div class=\"un\">UNIT 41<\/div><div class=\"ut\">Wish + would<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-42\/\"><div class=\"un\">UNIT 42<\/div><div class=\"ut\">Passive 1<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-43\/\"><div class=\"un\">UNIT 43<\/div><div class=\"ut\">Passive 2<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-44\/\"><div class=\"un\">UNIT 44<\/div><div class=\"ut\">Passive 3<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-45\/\"><div class=\"un\">UNIT 45<\/div><div class=\"ut\">Passive 4<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip\" href=\"\/vi\/grammar-intermediate-unit-46\/\"><div class=\"un\">UNIT 46<\/div><div class=\"ut\">Have something done<\/div><div class=\"st live2\">\u25cf LIVE \u2192<\/div><\/a><a class=\"unit-chip live\" href=\"#u1-worksheet\"><div class=\"un\">UNIT 47<\/div><div class=\"ut\">Reported speech 1<\/div><div class=\"st\">\u25cf You&#8217;re here<\/div><\/a><\/div><\/div><div id=\"u1-worksheet\"><\/div><div class=\"ws-head\"><div style=\"flex:1 1 260px\"><span class=\"ws-badge\">UNIT 47 \u00b7 Intermediate \u00b7 B1-B2<\/span><h1 class=\"serif\">Reported speech 1<small>&#8220;He said (that) he was tired \u2014 say\/tell + verb one tense back&#8221; \u2014 44 interactive questions<\/small><\/h1><\/div><div class=\"ring-wrap\"><div class=\"ring\"><svg width=\"74\" height=\"74\"><circle cx=\"37\" cy=\"37\" r=\"33\" fill=\"none\" stroke=\"#E2EFE9\" stroke-width=\"7\"\/><circle id=\"ring-fg\" cx=\"37\" cy=\"37\" r=\"33\" fill=\"none\" stroke=\"#0E9F6E\" stroke-width=\"7\" stroke-linecap=\"round\" stroke-dasharray=\"207\" stroke-dashoffset=\"207\"\/><\/svg><div class=\"pct\" id=\"ring-pct\">0%<\/div><\/div><div class=\"ring-lbl\">Correct answers<\/div><\/div><button class=\"btn-reset\">\u21ba Reset<\/button><\/div><div class=\"tabs\"><button class=\"tab active\" data-tab=\"notes\">\ud83d\udcd6 Grammar Notes<\/button><button class=\"tab\" data-tab=\"ex1\">\u270f\ufe0f \u2014 Ex 1<span class=\"badge\">8<\/span><\/button><button class=\"tab\" data-tab=\"ex2\">\ud83e\udde9 \u2014 Ex 2<span class=\"badge\">10<\/span><\/button><button class=\"tab\" data-tab=\"ex3\">\ud83d\udd18 \u2014 Ex 3<span class=\"badge\">8<\/span><\/button><button class=\"tab\" data-tab=\"ex4\">\ud83d\udd00 \u2014 Ex 4<span class=\"badge\">6<\/span><\/button><button class=\"tab\" data-tab=\"ex5\">\ud83d\udee0\ufe0f \u2014 Ex 5<span class=\"badge\">6<\/span><\/button><button class=\"tab\" data-tab=\"ex6\">\ud83c\udfa7 \u2014 Ex 6<span class=\"badge\">6<\/span><\/button><\/div><div id=\"u1-celebrate\" class=\"celebrate\">\ud83c\udf89 Brilliant! You finished all 44 questions of Unit 47!<\/div><div id=\"u1-panels\"><div class=\"panel active\" id=\"panel-notes\"><div class=\"note-block\" style=\"border-bottom:none;padding-top:0\"><div style=\"background:#F1F8F5;border:1px dashed #B7DCCC;border-radius:14px;padding:18px 20px;display:flex;gap:16px;align-items:center;flex-wrap:wrap\"><div style=\"font-size:34px\">\ud83c\udfac<\/div><div style=\"flex:1 1 240px\"><div style=\"font-weight:700;font-size:16px;margin-bottom:3px\">Video lesson \u2014 coming soon<\/div><div style=\"font-size:14px;color:#5B7268;line-height:1.5\">No video for this unit on the <b>All English 4U<\/b> channel yet. Record a short lesson, upload it to YouTube, and we&#8217;ll embed it right here.<\/div><\/div><a href=\"https:\/\/www.youtube.com\/@AllEnglish4U\" target=\"_blank\" rel=\"noopener\" style=\"background:#057A55;color:#fff;text-decoration:none;border-radius:10px;padding:9px 16px;font-weight:700;font-size:14px;white-space:nowrap\">\u25b6 Open channel<\/a><\/div><\/div><h2 style=\"margin-top:6px\">\ud83d\udcd6 Grammar Reference \u2014 Reported speech 1<\/h2><p class=\"instr\">Study the notes, then work through the six exercises.<\/p><div class=\"learn-strip\">\n  <div class=\"ls-item\"><span class=\"ls-ic\">\ud83d\udde3\ufe0f<\/span><div><b>What you&#8217;ll learn<\/b><span>Report what people said: <em>say \/ tell + (that) + the verb one tense back<\/em><\/span><\/div><\/div>\n  <div class=\"ls-item\"><span class=\"ls-ic\">\ud83d\udd70\ufe0f<\/span><div><b>~15 min<\/b><span>Notes + 6 exercises<\/span><\/div><\/div>\n  <div class=\"ls-item\"><span class=\"ls-ic\">\u2705<\/span><div><b>44 questions<\/b><span>Instant feedback<\/span><\/div><\/div>\n<\/div>\n\n<div class=\"note-block\">\n  <h3><span class=\"note-tag\">A<\/span> <em class=\"hl\">direct \u2192 reported<\/em><\/h3>\n  <p class=\"instr\">When we say later what someone told us, we usually report it in the <b>past<\/b>. Because the reporting verb (<b>said<\/b>) is past, the verb inside moves <b>one tense back<\/b>:<\/p>\n  <div class=\"formula\">\n    <span class=\"fb-subj\">Ti\u00eau \u0111\u1ec1<\/span>\n    <span class=\"fb-aux\">+ said \/ told (sb)<\/span>\n    <span class=\"fb-verb\">+ (that) + verb one tense back<\/span>\n  <\/div>\n  <div class=\"use-grid\">\n    <div class=\"use-card\"><b>direct<\/b><span>&#8220;I <b>am<\/b> tired,&#8221; she said.<\/span><\/div>\n    <div class=\"use-card\"><b>reported<\/b><span>She said (that) she <b>was<\/b> tired.<\/span><\/div>\n    <div class=\"use-card\"><b>direct<\/b><span>&#8220;I <b>will<\/b> come,&#8221; he said.<\/span><\/div>\n    <div class=\"use-card\"><b>reported<\/b><span>He said (that) he <b>would<\/b> come.<\/span><\/div>\n  <\/div>\n  <p class=\"tip\">\ud83d\udca1 <b>that<\/b> is optional: <i>He said <b>(that)<\/b> he was tired.<\/i> Both are correct.<\/p>\n<\/div>\n\n<div class=\"note-block\">\n  <h3><span class=\"note-tag\">B<\/span> the verb moves <em class=\"hl\">one tense back<\/em><\/h3>\n  <p class=\"instr\">These are the usual changes when we report in the past:<\/p>\n  <table class=\"spell-table\">\n    <tr><td><b>am \/ is \u2192<\/b> <em class=\"hl\">was<\/em><\/td><td>&#8220;I&#8217;m happy.&#8221; \u2192 He said he <em class=\"hl\">was<\/em> happy.<\/td><\/tr>\n    <tr><td><b>are \u2192<\/b> <em class=\"hl\">were<\/em><\/td><td>&#8220;We&#8217;re ready.&#8221; \u2192 They said they <em class=\"hl\">were<\/em> ready.<\/td><\/tr>\n    <tr><td><b>like \/ work \u2192<\/b> <em class=\"hl\">liked \/ worked<\/em><\/td><td>&#8220;I like it.&#8221; \u2192 She said she <em class=\"hl\">liked<\/em> it.<\/td><\/tr>\n    <tr><td><b>have \/ has \u2192<\/b> <em class=\"hl\">had<\/em><\/td><td>&#8220;I have a car.&#8221; \u2192 He said he <em class=\"hl\">had<\/em> a car.<\/td><\/tr>\n    <tr><td><b>present perfect \u2192<\/b> <em class=\"hl\">past perfect<\/em><\/td><td>&#8220;I&#8217;ve finished.&#8221; \u2192 He said he <em class=\"hl\">had finished<\/em>.<\/td><\/tr>\n    <tr><td><b>will \u2192<\/b> <em class=\"hl\">would<\/em><\/td><td>&#8220;I&#8217;ll call.&#8221; \u2192 She said she <em class=\"hl\">would<\/em> call.<\/td><\/tr>\n    <tr><td><b>can \u2192<\/b> <em class=\"hl\">could<\/em> \u00b7 <b>must \u2192<\/b> <em class=\"hl\">had to<\/em><\/td><td>&#8220;I can swim.&#8221; \u2192 He said he <em class=\"hl\">could<\/em> swim.<\/td><\/tr>\n  <\/table>\n  <p class=\"tip\">\ud83d\udca1 Pronouns change too: <i>&#8220;<b>I<\/b> like <b>my<\/b> job&#8221;<\/i> \u2192 <i>She said <b>she<\/b> liked <b>her<\/b> job.<\/i><\/p>\n<\/div>\n\n<div class=\"note-block\">\n  <h3><span class=\"note-tag\">C<\/span> <em class=\"hl\">say<\/em> or <em class=\"hl\">tell<\/em>?<\/h3>\n  <p class=\"instr\">Use <b>tell<\/b> when you mention the person (tell <u>somebody<\/u>). Use <b>say<\/b> when you don&#8217;t:<\/p>\n  <div class=\"sv-grid\">\n    <div class=\"sv ok\"><span class=\"sv-b\">say \u2713<\/span> He <b>said (that)<\/b> he was tired.<\/div>\n    <div class=\"sv ok\"><span class=\"sv-b\">tell \u2713<\/span> He <b>told me (that)<\/b> he was tired.<\/div>\n    <div class=\"sv no\"><span class=\"sv-b\">say \u2717<\/span> <span class=\"cut\">He said me that\u2026<\/span><\/div>\n    <div class=\"sv no\"><span class=\"sv-b\">tell \u2717<\/span> <span class=\"cut\">He told that\u2026<\/span> (no person)<\/div>\n  <\/div>\n  <p class=\"tip\">\ud83d\udca1 Quick rule: <b>tell + somebody<\/b>, but <b>say<\/b> (with no person) \u2014 or <i>say <b>to<\/b> somebody<\/i>.<\/p>\n<\/div>\n\n<div class=\"note-block warn\">\n  <h3><span class=\"note-tag\">D<\/span> when it&#8217;s <em class=\"hl\">still true<\/em><\/h3>\n  <p class=\"instr\">If the thing is <b>still true now<\/b>, you don&#8217;t always have to move the verb back \u2014 both are possible:<\/p>\n  <div class=\"sv-grid\">\n    <div class=\"sv ok\"><span class=\"sv-b\">back<\/span> Tom said he <b>didn&#8217;t<\/b> eat meat.<\/div>\n    <div class=\"sv ok\"><span class=\"sv-b\">stays<\/span> Tom said he <b>doesn&#8217;t<\/b> eat meat. (still true)<\/div>\n  <\/div>\n  <p class=\"tip\">\ud83d\udca1 In this unit we practise the <b>backshift<\/b> (one tense back) \u2014 the safe choice that is always correct.<\/p>\n<\/div>\n\n<div class=\"remember\"><span class=\"rm-ic\">\ud83d\udccc<\/span>\n  <div><b>Remember<\/b> \u2014 <span class=\"rm-tag pos\"><em>said \/ told (sb) + (that) + verb one tense back<\/em><\/span>: present \u2192 past, <em>will \u2192 would<\/em>, <em>can \u2192 could<\/em>. Use <b>tell + somebody<\/b>, but <b>say<\/b> with no person.<\/div>\n<\/div>\n<div class=\"check-bar\"><button class=\"nav-next\" data-next=\"notes\" style=\"margin-left:0\">Start Exercise 1 \u2192<\/button><\/div><\/div><\/div><p class=\"src-note\">Made with care for English learners \u00b7 <b>allenglish4u.com<\/b><br>Original practice material inspired by the <i>English Grammar in Use<\/i> syllabus (Cambridge University Press). Example sentences and exercises are written by All English 4U.<\/p><\/div>\n<script>window.AE4U_U1_DATA=JSON.parse(decodeURIComponent(escape(atob(\"eyJ1bml0IjogeyJudW0iOiA0NywgInRpdGxlIjogIlJlcG9ydGVkIHNwZWVjaCAxIiwgImZvcm0iOiAiSGUgc2FpZCAodGhhdCkgaGUgd2FzIHRpcmVkIFx1MjAxNCBzYXkvdGVsbCArIHZlcmIgb25lIHRlbnNlIGJhY2siLCAibGV2ZWwiOiAiSW50ZXJtZWRpYXRlIFx1MDBiNyBCMS1CMiIsICJ0b3RhbCI6IDQ0fSwgImV4ZXJjaXNlcyI6IFt7ImlkIjogImV4MSIsICJ0eXBlIjogInNwZWxsIiwgImljb24iOiAiXHUyNzBmXHVmZTBmIiwgInRpdGxlIjogIkV4ZXJjaXNlIDEgXHUyMDE0IFR5cGUgdGhlIHJlcG9ydGVkIChwYXN0KSB2ZXJiIiwgImluc3RyIjogIldoZW4gd2UgcmVwb3J0IHdoYXQgc29tZW9uZSBzYWlkLCB0aGUgdmVyYiB1c3VhbGx5IG1vdmVzIDxiPm9uZSB0ZW5zZSBiYWNrPC9iPiAocHJlc2VudCBcdTIxOTIgcGFzdCkuIFJlYWQgdGhlIGRpcmVjdCB3b3JkcyBpbiBicmFja2V0cyBhbmQgdHlwZSB0aGUgY29ycmVjdCA8Yj5yZXBvcnRlZCAocGFzdCkgZm9ybTwvYj4gb2YgdGhlIHZlcmIuIiwgIml0ZW1zIjogW3siYmFzZSI6ICInSSBhbSBjb2xkLicgSGUgc2FpZCBoZSBfX18gY29sZC4gKGFtKSIsICJhbnN3ZXIiOiAid2FzIn0sIHsiYmFzZSI6ICInV2UgYXJlIGxhdGUuJyBUaGV5IHNhaWQgdGhleSBfX18gbGF0ZS4gKGFyZSkiLCAiYW5zd2VyIjogIndlcmUifSwgeyJiYXNlIjogIidJIGxpa2UgY29mZmVlLicgU2hlIHNhaWQgc2hlIF9fXyBjb2ZmZWUuIChsaWtlKSIsICJhbnN3ZXIiOiAibGlrZWQifSwgeyJiYXNlIjogIidJIGhhdmUgYSBiaWtlLicgSGUgc2FpZCBoZSBfX18gYSBiaWtlLiAoaGF2ZSkiLCAiYW5zd2VyIjogImhhZCJ9LCB7ImJhc2UiOiAiJ0kgd29yayBoYXJkLicgU2hlIHNhaWQgc2hlIF9fXyBoYXJkLiAod29yaykiLCAiYW5zd2VyIjogIndvcmtlZCJ9LCB7ImJhc2UiOiAiJ0kgY2FuIHN3aW0uJyBIZSBzYWlkIGhlIF9fXyBzd2ltLiAoY2FuKSIsICJhbnN3ZXIiOiAiY291bGQifSwgeyJiYXNlIjogIidJIHdpbGwgaGVscC4nIFNoZSBzYWlkIHNoZSBfX18gaGVscC4gKHdpbGwpIiwgImFuc3dlciI6ICJ3b3VsZCJ9LCB7ImJhc2UiOiAiJ0kgd2FudCB0ZWEuJyBIZSBzYWlkIGhlIF9fXyB0ZWEuICh3YW50KSIsICJhbnN3ZXIiOiAid2FudGVkIn1dfSwgeyJpZCI6ICJleDIiLCAidHlwZSI6ICJnYXAiLCAiaWNvbiI6ICJcdWQ4M2VcdWRkZTkiLCAidGl0bGUiOiAiRXhlcmNpc2UgMiBcdTIwMTQgUmVwb3J0IHdoYXQgdGhleSBzYWlkIiwgImluc3RyIjogIlJlcG9ydCBlYWNoIHNlbnRlbmNlLiBNb3ZlIHRoZSB2ZXJiIDxiPm9uZSB0ZW5zZSBiYWNrPC9iPiBhbmQga2VlcCB0aGUgbWVhbmluZy4gV3JpdGUgdGhlIG1pc3NpbmcgPGI+cmVwb3J0ZWQ8L2I+IHdvcmRzLiBUaGUgZGlyZWN0IHZlcmIgaXMgc2hvd24gaW4gYnJhY2tldHMuIiwgIml0ZW1zIjogW3sicHJlIjogIidJJ20gYnVzeSwnIGhlIHNhaWQuIFx1MjE5MiBIZSBzYWlkIHRoYXQgaGUiLCAiaGludCI6ICIoYnVzeSkiLCAicG9zdCI6ICIuIiwgImFuc3dlcnMiOiBbIndhcyBidXN5Il19LCB7InByZSI6ICInV2UgbGl2ZSBpbiBSb21lLCcgdGhleSBzYWlkLiBcdTIxOTIgVGhleSBzYWlkIHRoYXQgdGhleSIsICJoaW50IjogIihsaXZlIGluIFJvbWUpIiwgInBvc3QiOiAiLiIsICJhbnN3ZXJzIjogWyJsaXZlZCBpbiByb21lIl19LCB7InByZSI6ICInSSdtIHJlYWRpbmcsJyBzaGUgc2FpZC4gXHUyMTkyIFNoZSBzYWlkIHRoYXQgc2hlIiwgImhpbnQiOiAiKHJlYWQpIiwgInBvc3QiOiAiLiIsICJhbnN3ZXJzIjogWyJ3YXMgcmVhZGluZyJdfSwgeyJwcmUiOiAiJ0kgaGF2ZSBmaW5pc2hlZCwnIGhlIHNhaWQuIFx1MjE5MiBIZSBzYWlkIHRoYXQgaGUiLCAiaGludCI6ICIoZmluaXNoKSIsICJwb3N0IjogIi4iLCAiYW5zd2VycyI6IFsiaGFkIGZpbmlzaGVkIl19LCB7InByZSI6ICInSSdsbCBjYWxsIHlvdSwnIHNoZSBzYWlkLiBcdTIxOTIgU2hlIHNhaWQgdGhhdCBzaGUiLCAiaGludCI6ICIoY2FsbCBtZSkiLCAicG9zdCI6ICIuIiwgImFuc3dlcnMiOiBbIndvdWxkIGNhbGwgbWUiXX0sIHsicHJlIjogIidJIGNhbiBkcml2ZSwnIGhlIHNhaWQuIFx1MjE5MiBIZSBzYWlkIHRoYXQgaGUiLCAiaGludCI6ICIoZHJpdmUpIiwgInBvc3QiOiAiLiIsICJhbnN3ZXJzIjogWyJjb3VsZCBkcml2ZSJdfSwgeyJwcmUiOiAiJ1dlIGRvbid0IGVhdCBtZWF0LCcgdGhleSBzYWlkLiBcdTIxOTIgVGhleSBzYWlkIHRoYXQgdGhleSIsICJoaW50IjogIihub3QgZWF0IG1lYXQpIiwgInBvc3QiOiAiLiIsICJhbnN3ZXJzIjogWyJkaWRuJ3QgZWF0IG1lYXQiLCAiZGlkIG5vdCBlYXQgbWVhdCJdfSwgeyJwcmUiOiAiJ0kgc2F3IHRoZSBmaWxtLCcgc2hlIHNhaWQuIFx1MjE5MiBTaGUgc2FpZCB0aGF0IHNoZSIsICJoaW50IjogIihzZWUgdGhlIGZpbG0pIiwgInBvc3QiOiAiLiIsICJhbnN3ZXJzIjogWyJoYWQgc2VlbiB0aGUgZmlsbSJdfSwgeyJwcmUiOiAiJ0knbSBnb2luZyB0byBzdHVkeSwnIGhlIHNhaWQuIFx1MjE5MiBIZSBzYWlkIHRoYXQgaGUiLCAiaGludCI6ICIoZ29pbmcgdG8gc3R1ZHkpIiwgInBvc3QiOiAiLiIsICJhbnN3ZXJzIjogWyJ3YXMgZ29pbmcgdG8gc3R1ZHkiXX0sIHsicHJlIjogIidJIG11c3QgZ28sJyBzaGUgc2FpZC4gXHUyMTkyIFNoZSBzYWlkIHRoYXQgc2hlIiwgImhpbnQiOiAiKG11c3QgLyBoYXZlIHRvIGdvKSIsICJwb3N0IjogIi4iLCAiYW5zd2VycyI6IFsiaGFkIHRvIGdvIl19XX0sIHsiaWQiOiAiZXgzIiwgInR5cGUiOiAibWNxIiwgImljb24iOiAiXHVkODNkXHVkZDE4IiwgInRpdGxlIjogIkV4ZXJjaXNlIDMgXHUyMDE0IENob29zZSB0aGUgcmVwb3J0ZWQgZm9ybSIsICJpbnN0ciI6ICJDaG9vc2UgdGhlIGNvcnJlY3QgPGI+cmVwb3J0ZWQ8L2I+IHdvcmQuIFJlbWVtYmVyOiBwcmVzZW50IFx1MjE5MiBwYXN0LCA8aT53aWxsIFx1MjE5MiB3b3VsZDwvaT4sIDxpPmNhbiBcdTIxOTIgY291bGQ8L2k+OyBhbmQgd2UgPGI+dGVsbDwvYj4gc29tZW9uZSBidXQgPGI+c2F5PC9iPiAod2l0aG91dCBhIHBlcnNvbikuIiwgIml0ZW1zIjogW3sicSI6ICInSSBhbSB0aXJlZC4nIFx1MjE5MiBIZSBzYWlkIGhlIF9fXyB0aXJlZC4iLCAib3B0cyI6IFsid2FzIiwgImlzIiwgImFtIl0sICJjb3JyZWN0IjogMH0sIHsicSI6ICInSSBsaWtlIHRlYS4nIFx1MjE5MiBTaGUgc2FpZCBzaGUgX19fIHRlYS4iLCAib3B0cyI6IFsibGlrZXMiLCAibGlrZWQiLCAibGlrZSJdLCAiY29ycmVjdCI6IDF9LCB7InEiOiAiJ0kgY2FuIGNvbWUuJyBcdTIxOTIgSGUgc2FpZCBoZSBfX18gY29tZS4iLCAib3B0cyI6IFsiY2FuIiwgImNvdWxkIiwgIndpbGwiXSwgImNvcnJlY3QiOiAxfSwgeyJxIjogIidJIHdpbGwgaGVscC4nIFx1MjE5MiBTaGUgc2FpZCBzaGUgX19fIGhlbHAuIiwgIm9wdHMiOiBbIndpbGwiLCAid291bGQiLCAid2FudHMiXSwgImNvcnJlY3QiOiAxfSwgeyJxIjogIidJIGhhdmUgbG9zdCBteSBrZXkuJyBcdTIxOTIgSGUgc2FpZCBoZSBfX18gaGlzIGtleS4iLCAib3B0cyI6IFsiaGFzIGxvc3QiLCAiaGFkIGxvc3QiLCAibG9zdCJdLCAiY29ycmVjdCI6IDF9LCB7InEiOiAiSGUgX19fIG1lIHRoYXQgaGUgd2FzIGxhdGUuIiwgIm9wdHMiOiBbInNhaWQiLCAidG9sZCIsICJzcG9rZSJdLCAiY29ycmVjdCI6IDF9LCB7InEiOiAiU2hlIF9fXyB0aGF0IHNoZSB3YXMgaHVuZ3J5LiIsICJvcHRzIjogWyJ0b2xkIiwgInNhaWQiLCAidG9sZCB0byJdLCAiY29ycmVjdCI6IDF9LCB7InEiOiAiJ1dlIGFyZSBsZWF2aW5nLicgXHUyMTkyIFRoZXkgc2FpZCB0aGV5IF9fXyBsZWF2aW5nLiIsICJvcHRzIjogWyJhcmUiLCAid2VyZSIsICJ3YXMiXSwgImNvcnJlY3QiOiAxfV19LCB7ImlkIjogImV4NCIsICJ0eXBlIjogIm9yZGVyIiwgImljb24iOiAiXHVkODNkXHVkZDAwIiwgInRpdGxlIjogIkV4ZXJjaXNlIDQgXHUyMDE0IEJ1aWxkIHRoZSByZXBvcnRlZCBzZW50ZW5jZSIsICJpbnN0ciI6ICJDbGljayB0aGUgd29yZHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgdG8gbWFrZSBhIDxiPnJlcG9ydGVkIHNlbnRlbmNlPC9iPiAoZm9yIGV4YW1wbGU6IDxpPlRvbSBzYWlkIGhlIHdhcyB0aXJlZDwvaT4pLiIsICJpdGVtcyI6IFt7IndvcmRzIjogWyJUb20iLCAic2FpZCIsICJoZSIsICJ3YXMiLCAidGlyZWQiXSwgImFuc3dlciI6ICJ0b20gc2FpZCBoZSB3YXMgdGlyZWQifSwgeyJ3b3JkcyI6IFsiQW5uYSIsICJ0b2xkIiwgIm1lIiwgInNoZSIsICJmZWx0IiwgImlsbCJdLCAiYW5zd2VyIjogImFubmEgdG9sZCBtZSBzaGUgZmVsdCBpbGwifSwgeyJ3b3JkcyI6IFsiaGUiLCAic2FpZCIsICJ0aGUiLCAic2hvcCIsICJ3YXMiLCAiY2xvc2VkIl0sICJhbnN3ZXIiOiAiaGUgc2FpZCB0aGUgc2hvcCB3YXMgY2xvc2VkIn0sIHsid29yZHMiOiBbIkx1Y3kiLCAic2FpZCIsICJzaGUiLCAiaGFkIiwgImZpbmlzaGVkIl0sICJhbnN3ZXIiOiAibHVjeSBzYWlkIHNoZSBoYWQgZmluaXNoZWQifSwgeyJ3b3JkcyI6IFsidGhleSIsICJ0b2xkIiwgInVzIiwgInRoZSIsICJmaWxtIiwgIndhcyIsICJnb29kIl0sICJhbnN3ZXIiOiAidGhleSB0b2xkIHVzIHRoZSBmaWxtIHdhcyBnb29kIn0sIHsid29yZHMiOiBbIkJlbiIsICJzYWlkIiwgImhlIiwgIndvdWxkIiwgImNvbWUiXSwgImFuc3dlciI6ICJiZW4gc2FpZCBoZSB3b3VsZCBjb21lIn1dfSwgeyJpZCI6ICJleDUiLCAidHlwZSI6ICJmaXgiLCAiaWNvbiI6ICJcdWQ4M2RcdWRlZTBcdWZlMGYiLCAidGl0bGUiOiAiRXhlcmNpc2UgNSBcdTIwMTQgQ29ycmVjdCB0aGUgbWlzdGFrZSIsICJpbnN0ciI6ICJFYWNoIHNlbnRlbmNlIGhhcyBvbmUgbWlzdGFrZSBcdTIwMTQgYSB2ZXJiIHRoYXQgd2Fzbid0IG1vdmVkIGJhY2ssIG9yIDxiPnNheS90ZWxsPC9iPiB1c2VkIHdyb25nbHkuIFR5cGUgdGhlIDxiPndob2xlIGNvcnJlY3RlZCBzZW50ZW5jZTwvYj4uIiwgIml0ZW1zIjogW3sic2VudGVuY2UiOiAiSGUgc2FpZCBoZSBpcyB0aXJlZC4iLCAiYW5zd2VycyI6IFsiaGUgc2FpZCBoZSB3YXMgdGlyZWQiXX0sIHsic2VudGVuY2UiOiAiU2hlIHNhaWQgc2hlIHdpbGwgcGhvbmUgbGF0ZXIuIiwgImFuc3dlcnMiOiBbInNoZSBzYWlkIHNoZSB3b3VsZCBwaG9uZSBsYXRlciJdfSwgeyJzZW50ZW5jZSI6ICJUaGV5IHNhaWQgdGhleSBoYXZlIGZpbmlzaGVkLiIsICJhbnN3ZXJzIjogWyJ0aGV5IHNhaWQgdGhleSBoYWQgZmluaXNoZWQiXX0sIHsic2VudGVuY2UiOiAiVG9tIHNhaWQgbWUgaGUgd2FzIGJ1c3kuIiwgImFuc3dlcnMiOiBbInRvbSB0b2xkIG1lIGhlIHdhcyBidXN5Il19LCB7InNlbnRlbmNlIjogIlNoZSB0b2xkIHNoZSB3YXMgaHVuZ3J5LiIsICJhbnN3ZXJzIjogWyJzaGUgc2FpZCBzaGUgd2FzIGh1bmdyeSIsICJzaGUgdG9sZCBtZSBzaGUgd2FzIGh1bmdyeSJdfSwgeyJzZW50ZW5jZSI6ICJIZSBzYWlkIGhlIGNhbiBzd2ltLiIsICJhbnN3ZXJzIjogWyJoZSBzYWlkIGhlIGNvdWxkIHN3aW0iXX1dfSwgeyJpZCI6ICJleDYiLCAidHlwZSI6ICJsaXN0ZW4iLCAiaWNvbiI6ICJcdWQ4M2NcdWRmYTciLCAidGl0bGUiOiAiRXhlcmNpc2UgNiBcdTIwMTQgTGlzdGVuIGFuZCBjb21wbGV0ZSIsICJpbnN0ciI6ICJQcmVzcyBcdTI1YjYgdG8gbGlzdGVuLCB0aGVuIHR5cGUgdGhlIG1pc3NpbmcgPGI+cmVwb3J0ZWQ8L2I+IHdvcmQocykgeW91IGhlYXIgKGZvciBleGFtcGxlOiA8aT53YXMgdGlyZWQ8L2k+LCA8aT53b3VsZCBjYWxsPC9pPiwgPGk+aGFkIGZpbmlzaGVkPC9pPikuIiwgIml0ZW1zIjogW3sidGV4dCI6ICJIZSBzYWlkIHRoYXQgaGUgd2FzIHRpcmVkLiIsICJkaXNwbGF5IjogIkhlIHNhaWQgdGhhdCBoZSBfX18uIiwgImFuc3dlcnMiOiBbIndhcyB0aXJlZCJdfSwgeyJ0ZXh0IjogIlNoZSBzYWlkIHNoZSB3b3VsZCBjYWxsIG1lLiIsICJkaXNwbGF5IjogIlNoZSBzYWlkIHNoZSBfX18gbWUuIiwgImFuc3dlcnMiOiBbIndvdWxkIGNhbGwiXX0sIHsidGV4dCI6ICJUaGV5IHNhaWQgdGhleSBoYWQgZmluaXNoZWQuIiwgImRpc3BsYXkiOiAiVGhleSBzYWlkIHRoZXkgX19fLiIsICJhbnN3ZXJzIjogWyJoYWQgZmluaXNoZWQiXX0sIHsidGV4dCI6ICJUb20gdG9sZCBtZSBoZSB3YXMgYnVzeS4iLCAiZGlzcGxheSI6ICJUb20gX19fIG1lIGhlIHdhcyBidXN5LiIsICJhbnN3ZXJzIjogWyJ0b2xkIl19LCB7InRleHQiOiAiU2hlIHNhaWQgc2hlIGNvdWxkIHN3aW0uIiwgImRpc3BsYXkiOiAiU2hlIHNhaWQgc2hlIF9fXyBzd2ltLiIsICJhbnN3ZXJzIjogWyJjb3VsZCJdfSwgeyJ0ZXh0IjogIkhlIHNhaWQgaGUgaGFkIGxvc3QgaGlzIGtleS4iLCAiZGlzcGxheSI6ICJIZSBzYWlkIGhlIF9fXyBoaXMga2V5LiIsICJhbnN3ZXJzIjogWyJoYWQgbG9zdCJdfV19XX0=\"))));<\/script>\n<script>eval(decodeURIComponent(escape(atob(\"KGZ1bmN0aW9uKCl7dHJ5e3ZhciBpZD0nYWU0dS1nZm9udCc7aWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSl7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO2wuaWQ9aWQ7bC5yZWw9J3N0eWxlc2hlZXQnO2wuaHJlZj0naHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1QbHVzK0pha2FydGErU2Fuczp3Z2h0QDQwMDs1MDA7NjAwOzcwMDs4MDAmZmFtaWx5PUZyYXVuY2VzOm9wc3osd2dodEA5Li4xNDQsNjAwOzkuLjE0NCw3MDAmZGlzcGxheT1zd2FwJztkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGwpO319Y2F0Y2goZSl7fX0pKCk7CihmdW5jdGlvbigpewogIHZhciBEQVRBID0gd2luZG93LkFFNFVfVTFfREFUQTsKICB2YXIgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZTR1LXUxJyk7CiAgaWYoIXJvb3QgfHwgIURBVEEpIHJldHVybjsKICB2YXIgVE9UQUwgPSBEQVRBLnVuaXQudG90YWw7CiAgdmFyIHN0YXRlID0ge307ICAgLy8gaXRlbUtleSAtPiAnb2snIHwgJ25vJyB8ICdzaG93bicKCiAgZnVuY3Rpb24gbm9ybShzKXsKICAgIGlmKHM9PW51bGwpIHJldHVybiAiIjsKICAgIHJldHVybiBTdHJpbmcocykudG9Mb3dlckNhc2UoKQogICAgICAucmVwbGFjZSgvW+KAmeKAmCddL2csIiciKQogICAgICAucmVwbGFjZSgvXHMrL2csIiAiKQogICAgICAucmVwbGFjZSgvWy4hPyw7Ol0rJC8sIiIpCiAgICAgIC50cmltKCk7CiAgfQogIGZ1bmN0aW9uIG1hdGNoKHZhbCwgYW5zd2Vycyl7CiAgICB2YXIgbiA9IG5vcm0odmFsKTsKICAgIGlmKCFuKSByZXR1cm4gZmFsc2U7CiAgICBmb3IodmFyIGk9MDtpPGFuc3dlcnMubGVuZ3RoO2krKyl7IGlmKG5vcm0oYW5zd2Vyc1tpXSk9PT1uKSByZXR1cm4gdHJ1ZTsgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KICBmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iik7fQoKICAvLyAtLS0tLS0tLS0tIHJlbmRlciBwYW5lbHMgLS0tLS0tLS0tLQogIHZhciBwYW5lbHNXcmFwID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjdTEtcGFuZWxzJyk7CiAgREFUQS5leGVyY2lzZXMuZm9yRWFjaChmdW5jdGlvbihleCl7CiAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgcC5jbGFzc05hbWU9J3BhbmVsJzsgcC5pZD0ncGFuZWwtJytleC5pZDsgcC5kYXRhc2V0LmV4PWV4LmlkOwogICAgdmFyIGg9JzxoMj4nK2V4Lmljb24rJyAnK2VzYyhleC50aXRsZS5yZXBsYWNlKC9eRXhlcmNpc2UgXGQrIOKAlCAvLCcnKSkrJzwvaDI+PHAgY2xhc3M9Imluc3RyIj4nK2V4Lmluc3RyKyc8L3A+PGRpdiBjbGFzcz0iaXRlbXMiPic7CiAgICBleC5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0LGlkeCl7IGgrPXJlbmRlckl0ZW0oZXgsaXQsaWR4KTsgfSk7CiAgICBoKz0nPC9kaXY+PGRpdiBjbGFzcz0iY2hlY2stYmFyIj48YnV0dG9uIGNsYXNzPSJidG4tY2hlY2siIGRhdGEtZXg9IicrZXguaWQrJyI+Q2hlY2sgYW5zd2VycyDinJM8L2J1dHRvbj48c3BhbiBjbGFzcz0iZXgtc2NvcmUiIGlkPSJzY29yZS0nK2V4LmlkKyciPjwvc3Bhbj48YnV0dG9uIGNsYXNzPSJuYXYtbmV4dCIgZGF0YS1uZXh0PSInK2V4LmlkKyciPk5leHQg4oaSPC9idXR0b24+PC9kaXY+JzsKICAgIHAuaW5uZXJIVE1MPWg7CiAgICBwYW5lbHNXcmFwLmFwcGVuZENoaWxkKHApOwogIH0pOwoKICBmdW5jdGlvbiByZW5kZXJJdGVtKGV4LGl0LGlkeCl7CiAgICB2YXIga2V5PWV4LmlkKyctJytpZHgsIG49aWR4KzE7CiAgICB2YXIgcz0nPGRpdiBjbGFzcz0iaXRlbSIgZGF0YS1rZXk9Iicra2V5KyciIGRhdGEtdHlwZT0iJytleC50eXBlKyciPic7CiAgICBzKz0nPHNwYW4gY2xhc3M9InFuIj4nK24rJzwvc3Bhbj4nOwogICAgaWYoZXgudHlwZT09PSdzcGVsbCcpewogICAgICBzKz0nPHNwYW4gY2xhc3M9InF0ZXh0Ij48c3BhbiBjbGFzcz0iYmFzZSI+Jytlc2MoaXQuYmFzZSkrJzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImFycm93Ij7ihpI8L3NwYW4+IDxpbnB1dCBjbGFzcz0iZ2FwIiBkYXRhLWtleT0iJytrZXkrJyIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3NwYW4+JzsKICAgIH0gZWxzZSBpZihleC50eXBlPT09J2dhcCcpewogICAgICBzKz0nPHNwYW4gY2xhc3M9InF0ZXh0Ij4nK2VzYyhpdC5wcmUpKycgPGlucHV0IGNsYXNzPSJnYXAiIGRhdGEta2V5PSInK2tleSsnIiBhdXRvY29tcGxldGU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiPiA8c3BhbiBjbGFzcz0iaGludCI+Jytlc2MoaXQuaGludCkrJzwvc3Bhbj4gJytlc2MoaXQucG9zdCkrJzwvc3Bhbj4nOwogICAgfSBlbHNlIGlmKGV4LnR5cGU9PT0nbWNxJyl7CiAgICAgIHMrPSc8c3BhbiBjbGFzcz0icXRleHQiPicrZXNjKGl0LnEpKyc8L3NwYW4+PGRpdiBjbGFzcz0ibWNxLW9wdHMiIGRhdGEta2V5PSInK2tleSsnIj4nOwogICAgICBpdC5vcHRzLmZvckVhY2goZnVuY3Rpb24obyxvaSl7IHMrPSc8YnV0dG9uIGNsYXNzPSJvcHQiIGRhdGEtb2k9Iicrb2krJyI+Jytlc2MobykrJzwvYnV0dG9uPic7IH0pOwogICAgICBzKz0nPC9kaXY+JzsKICAgIH0gZWxzZSBpZihleC50eXBlPT09J29yZGVyJyl7CiAgICAgIHMrPSc8c3BhbiBjbGFzcz0icXRleHQiIHN0eWxlPSJmbGV4LWJhc2lzOjEwMCUiPjwvc3Bhbj48ZGl2IGNsYXNzPSJvcmQtYnVpbGQiIGRhdGEta2V5PSInK2tleSsnIj48L2Rpdj48ZGl2IGNsYXNzPSJvcmQtYmFuayIgZGF0YS1rZXk9Iicra2V5KyciPic7CiAgICAgIGl0LndvcmRzLmZvckVhY2goZnVuY3Rpb24odyx3aSl7IHMrPSc8YnV0dG9uIGNsYXNzPSJ3b3JkIiBkYXRhLXc9IicrZXNjKHcpKyciPicrZXNjKHcpKyc8L2J1dHRvbj4nOyB9KTsKICAgICAgcys9JzwvZGl2Pic7CiAgICB9IGVsc2UgaWYoZXgudHlwZT09PSdmaXgnKXsKICAgICAgcys9JzxzcGFuIGNsYXNzPSJxdGV4dCI+PHMgc3R5bGU9ImNvbG9yOiM5NGEzYTAiPicrZXNjKGl0LnNlbnRlbmNlKSsnPC9zPiAmbmJzcDvihpImbmJzcDsgPGlucHV0IGNsYXNzPSJnYXAiIGRhdGEta2V5PSInK2tleSsnIiBhdXRvY29tcGxldGU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiIHBsYWNlaG9sZGVyPSJjb3JyZWN0IHdvcmQocykiPjwvc3Bhbj4nOwogICAgfSBlbHNlIGlmKGV4LnR5cGU9PT0nbGlzdGVuJyl7CiAgICAgIHMrPSc8YnV0dG9uIGNsYXNzPSJwbGF5LWJ0biIgZGF0YS1rZXk9Iicra2V5KyciIGRhdGEtdGV4dD0iJytlc2MoaXQudGV4dCkrJyIgdGl0bGU9Ikxpc3RlbiI+4pa2PC9idXR0b24+JzsKICAgICAgcys9JzxzcGFuIGNsYXNzPSJxdGV4dCI+Jytlc2MoaXQuZGlzcGxheSkucmVwbGFjZSgnX19fJywnPGlucHV0IGNsYXNzPSJnYXAiIGRhdGEta2V5PSInK2tleSsnIiBhdXRvY29tcGxldGU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiIHN0eWxlPSJtaW4td2lkdGg6MTEwcHgiPicpKyc8L3NwYW4+JzsKICAgIH0KICAgIHMrPSc8c3BhbiBjbGFzcz0iZmVlZGJhY2siIGlkPSJmYi0nK2tleSsnIj48L3NwYW4+JzsKICAgIHMrPSc8YnV0dG9uIGNsYXNzPSJzaG93LWEiIGRhdGEta2V5PSInK2tleSsnIj5TaG93IGFuc3dlcjwvYnV0dG9uPic7CiAgICBzKz0nPC9kaXY+JzsKICAgIHJldHVybiBzOwogIH0KCiAgLy8gLS0tLS0tLS0tLSBpbnRlcmFjdGlvbnMgLS0tLS0tLS0tLQogIC8vIE1DUSBzZWxlY3QKICByb290LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICAgIHZhciBvcHQ9ZS50YXJnZXQuY2xvc2VzdCgnLm9wdCcpOwogICAgaWYob3B0KXsKICAgICAgdmFyIGJveD1vcHQucGFyZW50Tm9kZTsgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe28uY2xhc3NMaXN0LnJlbW92ZSgnc2VsJyk7fSk7CiAgICAgIG9wdC5jbGFzc0xpc3QuYWRkKCdzZWwnKTsgYm94LmRhdGFzZXQuc2VsPW9wdC5kYXRhc2V0Lm9pOyByZXR1cm47CiAgICB9CiAgICB2YXIgdz1lLnRhcmdldC5jbG9zZXN0KCcub3JkLWJhbmsgLndvcmQnKTsKICAgIGlmKHcpeyB2YXIgaz13LnBhcmVudE5vZGUuZGF0YXNldC5rZXk7IHJvb3QucXVlcnlTZWxlY3RvcignLm9yZC1idWlsZFtkYXRhLWtleT0iJytrKyciXScpLmFwcGVuZENoaWxkKHcpOyByZXR1cm47IH0KICAgIHZhciBidz1lLnRhcmdldC5jbG9zZXN0KCcub3JkLWJ1aWxkIC53b3JkJyk7CiAgICBpZihidyl7IHZhciBrMj1idy5wYXJlbnROb2RlLmRhdGFzZXQua2V5OyByb290LnF1ZXJ5U2VsZWN0b3IoJy5vcmQtYmFua1tkYXRhLWtleT0iJytrMisnIl0nKS5hcHBlbmRDaGlsZChidyk7IHJldHVybjsgfQogICAgdmFyIHBiPWUudGFyZ2V0LmNsb3Nlc3QoJy5wbGF5LWJ0bicpOwogICAgaWYocGIpeyBzcGVhayhwYik7IHJldHVybjsgfQogICAgdmFyIHNhPWUudGFyZ2V0LmNsb3Nlc3QoJy5zaG93LWEnKTsKICAgIGlmKHNhKXsgc2hvd0Fuc3dlcihzYS5kYXRhc2V0LmtleSk7IHJldHVybjsgfQogICAgdmFyIGNiPWUudGFyZ2V0LmNsb3Nlc3QoJy5idG4tY2hlY2snKTsKICAgIGlmKGNiKXsgY2hlY2tFeChjYi5kYXRhc2V0LmV4KTsgcmV0dXJuOyB9CiAgICB2YXIgbng9ZS50YXJnZXQuY2xvc2VzdCgnLm5hdi1uZXh0Jyk7CiAgICBpZihueCl7IGdvdG9OZXh0KG54LmRhdGFzZXQubmV4dCk7IHJldHVybjsgfQogICAgdmFyIHRiPWUudGFyZ2V0LmNsb3Nlc3QoJy50YWInKTsKICAgIGlmKHRiKXsgYWN0aXZhdGUodGIuZGF0YXNldC50YWIpOyByZXR1cm47IH0KICAgIHZhciBycz1lLnRhcmdldC5jbG9zZXN0KCcuYnRuLXJlc2V0Jyk7CiAgICBpZihycyl7IHJlc2V0QWxsKCk7IHJldHVybjsgfQogIH0pOwoKICAvLyAtLS0tLS0tLS0tIHNwZWVjaCAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gc3BlYWsoYnRuKXsKICAgIHZhciB0PWJ0bi5kYXRhc2V0LnRleHQ7CiAgICBpZighKCdzcGVlY2hTeW50aGVzaXMnIGluIHdpbmRvdykpeyBhbGVydCgnWW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgYXVkaW8gcGxheWJhY2suIFBsZWFzZSByZWFkIHRoZSBzZW50ZW5jZSBiZWxvdy4nKTsgcmV0dXJuOyB9CiAgICB3aW5kb3cuc3BlZWNoU3ludGhlc2lzLmNhbmNlbCgpOwogICAgdmFyIHU9bmV3IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSh0KTsKICAgIHUubGFuZz0nZW4tR0InOyB1LnJhdGU9MC44NTsKICAgIHZhciB2b2ljZXM9d2luZG93LnNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKTsKICAgIHZhciBnYj12b2ljZXMuZmlsdGVyKGZ1bmN0aW9uKHYpe3JldHVybiAvZW4tR0IvaS50ZXN0KHYubGFuZyk7fSk7CiAgICBpZihnYi5sZW5ndGgpIHUudm9pY2U9Z2JbMF07CiAgICBidG4uY2xhc3NMaXN0LmFkZCgncGxheWluZycpOyBidG4udGV4dENvbnRlbnQ9J+KZqic7CiAgICB1Lm9uZW5kPWZ1bmN0aW9uKCl7IGJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5aW5nJyk7IGJ0bi50ZXh0Q29udGVudD0n4pa2JzsgfTsKICAgIHUub25lcnJvcj1mdW5jdGlvbigpeyBidG4uY2xhc3NMaXN0LnJlbW92ZSgncGxheWluZycpOyBidG4udGV4dENvbnRlbnQ9J+KWtic7IH07CiAgICB3aW5kb3cuc3BlZWNoU3ludGhlc2lzLnNwZWFrKHUpOwogIH0KICBpZignc3BlZWNoU3ludGhlc2lzJyBpbiB3aW5kb3cpeyB3aW5kb3cuc3BlZWNoU3ludGhlc2lzLmdldFZvaWNlcygpOyB3aW5kb3cuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZD1mdW5jdGlvbigpe307IH0KCiAgLy8gLS0tLS0tLS0tLSBmaW5kIGl0ZW0gKyBhbnN3ZXJzIC0tLS0tLS0tLS0KICBmdW5jdGlvbiBnZXRJdGVtKGtleSl7CiAgICB2YXIgcGFydHM9a2V5LnNwbGl0KCctJyk7IHZhciBleGlkPXBhcnRzWzBdOyB2YXIgaWR4PXBhcnNlSW50KHBhcnRzWzFdLDEwKTsKICAgIHZhciBleD1EQVRBLmV4ZXJjaXNlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT1leGlkO30pWzBdOwogICAgcmV0dXJuIHtleDpleCwgaXQ6ZXguaXRlbXNbaWR4XX07CiAgfQogIGZ1bmN0aW9uIGFuc3dlcnNPZihleCxpdCl7CiAgICBpZihleC50eXBlPT09J21jcScpIHJldHVybiBbaXQub3B0c1tpdC5jb3JyZWN0XV07CiAgICBpZihleC50eXBlPT09J29yZGVyJykgcmV0dXJuIFtpdC5hbnN3ZXJdOwogICAgaWYoZXgudHlwZT09PSdzcGVsbCcpIHJldHVybiBbaXQuYW5zd2VyXTsKICAgIHJldHVybiBpdC5hbnN3ZXJzOwogIH0KCiAgLy8gLS0tLS0tLS0tLSBjaGVjayBzaW5nbGUgLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGV2YWxJdGVtKGtleSl7CiAgICB2YXIgZz1nZXRJdGVtKGtleSksIGV4PWcuZXgsIGl0PWcuaXQsIGZiPXJvb3QucXVlcnlTZWxlY3RvcignI2ZiLScra2V5KTsKICAgIHZhciBjb3JyZWN0PWZhbHNlLCBnaXZlbj0nJzsKICAgIGlmKGV4LnR5cGU9PT0nbWNxJyl7CiAgICAgIHZhciBib3g9cm9vdC5xdWVyeVNlbGVjdG9yKCcubWNxLW9wdHNbZGF0YS1rZXk9Iicra2V5KyciXScpOwogICAgICB2YXIgc2VsPWJveC5kYXRhc2V0LnNlbDsKICAgICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe28uY2xhc3NMaXN0LnJlbW92ZSgnb2snLCdubycpO30pOwogICAgICBpZihzZWwhPW51bGwgJiYgc2VsIT09JycpewogICAgICAgIGdpdmVuPWl0Lm9wdHNbK3NlbF07CiAgICAgICAgY29ycmVjdD0oK3NlbD09PWl0LmNvcnJlY3QpOwogICAgICAgIGJveC5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JylbaXQuY29ycmVjdF0uY2xhc3NMaXN0LmFkZCgnb2snKTsKICAgICAgICBpZighY29ycmVjdCkgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKVsrc2VsXS5jbGFzc0xpc3QuYWRkKCdubycpOwogICAgICB9IGVsc2UgeyBib3gucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpW2l0LmNvcnJlY3RdLmNsYXNzTGlzdC5hZGQoJ29rJyk7IH0KICAgIH0gZWxzZSBpZihleC50eXBlPT09J29yZGVyJyl7CiAgICAgIHZhciBidWlsZD1yb290LnF1ZXJ5U2VsZWN0b3IoJy5vcmQtYnVpbGRbZGF0YS1rZXk9Iicra2V5KyciXScpOwogICAgICB2YXIgd29yZHM9W10ubWFwLmNhbGwoYnVpbGQucXVlcnlTZWxlY3RvckFsbCgnLndvcmQnKSxmdW5jdGlvbih3KXtyZXR1cm4gdy5kYXRhc2V0Lnc7fSk7CiAgICAgIGdpdmVuPXdvcmRzLmpvaW4oJyAnKTsKICAgICAgY29ycmVjdD1tYXRjaChnaXZlbixbaXQuYW5zd2VyXSk7CiAgICAgIGJ1aWxkLmNsYXNzTGlzdC5yZW1vdmUoJ29rJywnbm8nKTsgYnVpbGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0Pydvayc6J25vJyk7CiAgICB9IGVsc2UgewogICAgICB2YXIgaW5wPXJvb3QucXVlcnlTZWxlY3RvcignaW5wdXQuZ2FwW2RhdGEta2V5PSInK2tleSsnIl0nKTsKICAgICAgZ2l2ZW49aW5wLnZhbHVlOwogICAgICBjb3JyZWN0PW1hdGNoKGdpdmVuLGFuc3dlcnNPZihleCxpdCkpOwogICAgICBpbnAuY2xhc3NMaXN0LnJlbW92ZSgnb2snLCdubycpOyBpbnAuY2xhc3NMaXN0LmFkZChjb3JyZWN0Pydvayc6J25vJyk7CiAgICB9CiAgICB2YXIgcW49cm9vdC5xdWVyeVNlbGVjdG9yKCcuaXRlbVtkYXRhLWtleT0iJytrZXkrJyJdIC5xbicpOwogICAgaWYocW4peyBxbi5jbGFzc0xpc3QucmVtb3ZlKCdvaycsJ25vJywnc2hvd24nKTsgcW4uY2xhc3NMaXN0LmFkZChjb3JyZWN0Pydvayc6J25vJyk7IH0KICAgIGlmKHN0YXRlW2tleV09PT0nc2hvd24nKXsgLyoga2VlcCBzaG93biAqLyB9CiAgICBlbHNlIHN0YXRlW2tleV09Y29ycmVjdD8nb2snOidubyc7CiAgICBpZihmYil7CiAgICAgIGlmKGNvcnJlY3QpIGZiLmlubmVySFRNTD0nPHNwYW4gY2xhc3M9Im1hcmstb2siPuKckyBDb3JyZWN0PC9zcGFuPic7CiAgICAgIGVsc2UgaWYoZ2l2ZW4hPT0nJykgZmIuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0ibWFyay1ubyI+4pyXIFRyeSBhZ2Fpbjwvc3Bhbj4nOwogICAgICBlbHNlIGZiLmlubmVySFRNTD0nPHNwYW4gY2xhc3M9Im1hcmstbm8iPuKAlCBubyBhbnN3ZXI8L3NwYW4+JzsKICAgIH0KICAgIHJldHVybiBjb3JyZWN0OwogIH0KCiAgZnVuY3Rpb24gY2hlY2tFeChleGlkKXsKICAgIHZhciBleD1EQVRBLmV4ZXJjaXNlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT1leGlkO30pWzBdOwogICAgdmFyIG9rPTA7CiAgICBleC5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0LGlkeCl7IGlmKGV2YWxJdGVtKGV4aWQrJy0nK2lkeCkpIG9rKys7IH0pOwogICAgdmFyIHNjPXJvb3QucXVlcnlTZWxlY3RvcignI3Njb3JlLScrZXhpZCk7CiAgICBzYy5pbm5lckhUTUw9J1Njb3JlOiA8Yj4nK29rKycgLyAnK2V4Lml0ZW1zLmxlbmd0aCsnPC9iPic7CiAgICB1cGRhdGVQcm9ncmVzcygpOwogIH0KCiAgZnVuY3Rpb24gc2hvd0Fuc3dlcihrZXkpewogICAgdmFyIGc9Z2V0SXRlbShrZXkpLCBleD1nLmV4LCBpdD1nLml0LCBmYj1yb290LnF1ZXJ5U2VsZWN0b3IoJyNmYi0nK2tleSk7CiAgICB2YXIgYW5zPWFuc3dlcnNPZihleCxpdClbMF07CiAgICBpZihleC50eXBlPT09J21jcScpewogICAgICB2YXIgYm94PXJvb3QucXVlcnlTZWxlY3RvcignLm1jcS1vcHRzW2RhdGEta2V5PSInK2tleSsnIl0nKTsKICAgICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe28uY2xhc3NMaXN0LnJlbW92ZSgnb2snLCdubycsJ3NlbCcpO30pOwogICAgICBib3gucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpW2l0LmNvcnJlY3RdLmNsYXNzTGlzdC5hZGQoJ29rJyk7CiAgICB9IGVsc2UgaWYoZXgudHlwZT09PSdvcmRlcicpewogICAgICB2YXIgYnVpbGQ9cm9vdC5xdWVyeVNlbGVjdG9yKCcub3JkLWJ1aWxkW2RhdGEta2V5PSInK2tleSsnIl0nKTsKICAgICAgdmFyIGJhbms9cm9vdC5xdWVyeVNlbGVjdG9yKCcub3JkLWJhbmtbZGF0YS1rZXk9Iicra2V5KyciXScpOwogICAgICBbXS5zbGljZS5jYWxsKGJ1aWxkLnF1ZXJ5U2VsZWN0b3JBbGwoJy53b3JkJykpLmZvckVhY2goZnVuY3Rpb24odyl7YmFuay5hcHBlbmRDaGlsZCh3KTt9KTsKICAgICAgYnVpbGQuY2xhc3NMaXN0LnJlbW92ZSgnbm8nKTsgYnVpbGQuY2xhc3NMaXN0LmFkZCgnb2snKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBpbnA9cm9vdC5xdWVyeVNlbGVjdG9yKCdpbnB1dC5nYXBbZGF0YS1rZXk9Iicra2V5KyciXScpOwogICAgICBpbnAudmFsdWU9YW5zOyBpbnAuY2xhc3NMaXN0LnJlbW92ZSgnbm8nKTsgaW5wLmNsYXNzTGlzdC5hZGQoJ29rJyk7CiAgICB9CiAgICBpZihmYikgZmIuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0iY29yciI+QW5zd2VyOiAnK2VzYyhhbnMpKyc8L3NwYW4+JzsKICAgIGlmKHN0YXRlW2tleV0hPT0nb2snKSBzdGF0ZVtrZXldPSdzaG93bic7CiAgICB2YXIgcW4yPXJvb3QucXVlcnlTZWxlY3RvcignLml0ZW1bZGF0YS1rZXk9Iicra2V5KyciXSAucW4nKTsKICAgIGlmKHFuMiAmJiAhcW4yLmNsYXNzTGlzdC5jb250YWlucygnb2snKSl7IHFuMi5jbGFzc0xpc3QucmVtb3ZlKCdubycpOyBxbjIuY2xhc3NMaXN0LmFkZCgnc2hvd24nKTsgfQoKICAgIHVwZGF0ZVByb2dyZXNzKCk7CiAgfQoKICAvLyAtLS0tLS0tLS0tIHByb2dyZXNzIC0tLS0tLS0tLS0KICBmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcygpewogICAgdmFyIGRvbmU9MDsgZm9yKHZhciBrIGluIHN0YXRlKXsgaWYoc3RhdGVba109PT0nb2snKSBkb25lKys7IH0KICAgIHZhciBwY3Q9TWF0aC5yb3VuZChkb25lL1RPVEFMKjEwMCk7CiAgICB2YXIgY2lyYz1yb290LnF1ZXJ5U2VsZWN0b3IoJyNyaW5nLWZnJyk7CiAgICB2YXIgQz0yKk1hdGguUEkqMzM7CiAgICBjaXJjLnN0eWxlLnN0cm9rZURhc2hhcnJheT1DOwogICAgY2lyYy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0PUMqKDEtZG9uZS9UT1RBTCk7CiAgICByb290LnF1ZXJ5U2VsZWN0b3IoJyNyaW5nLXBjdCcpLnRleHRDb250ZW50PXBjdCsnJSc7CiAgICB2YXIgY2VsPXJvb3QucXVlcnlTZWxlY3RvcignI3UxLWNlbGVicmF0ZScpOyBpZihjZWwpIGNlbC5jbGFzc0xpc3QudG9nZ2xlKCdzaG93JywgZG9uZT49VE9UQUwpOwogIH0KCiAgLy8gLS0tLS0tLS0tLSB0YWJzIC0tLS0tLS0tLS0KICBmdW5jdGlvbiBhY3RpdmF0ZShpZCl7CiAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWInKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJyx0LmRhdGFzZXQudGFiPT09aWQpO30pOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcucGFuZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHApe3AuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJyxwLmlkPT09J3BhbmVsLScraWQpO30pOwogICAgdmFyIHNjPXJvb3QucXVlcnlTZWxlY3RvcignLndzLWhlYWQnKTsgaWYoc2MgJiYgc2Muc2Nyb2xsSW50b1ZpZXcpIHNjLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgfQogIGZ1bmN0aW9uIGdvdG9OZXh0KGN1cil7CiAgICB2YXIgaWRzPVsnbm90ZXMnXS5jb25jYXQoREFUQS5leGVyY2lzZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkO30pKTsKICAgIHZhciBpPWlkcy5pbmRleE9mKGN1cik7IGlmKGk+PTAgJiYgaTxpZHMubGVuZ3RoLTEpIGFjdGl2YXRlKGlkc1tpKzFdKTsKICB9CgogIGZ1bmN0aW9uIHJlc2V0QWxsKCl7CiAgICBzdGF0ZT17fTsKICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQuZ2FwJykuZm9yRWFjaChmdW5jdGlvbihpKXtpLnZhbHVlPScnO2kuY2xhc3NMaXN0LnJlbW92ZSgnb2snLCdubycpO30pOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JykuZm9yRWFjaChmdW5jdGlvbihvKXtvLmNsYXNzTGlzdC5yZW1vdmUoJ29rJywnbm8nLCdzZWwnKTt9KTsKICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLm1jcS1vcHRzJykuZm9yRWFjaChmdW5jdGlvbihiKXtkZWxldGUgYi5kYXRhc2V0LnNlbDt9KTsKICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLmZlZWRiYWNrJykuZm9yRWFjaChmdW5jdGlvbihmKXtmLmlubmVySFRNTD0nJzt9KTsKICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLmV4LXNjb3JlJykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmlubmVySFRNTD0nJzt9KTsKICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnFuJykuZm9yRWFjaChmdW5jdGlvbihxKXtxLmNsYXNzTGlzdC5yZW1vdmUoJ29rJywnbm8nLCdzaG93bicpO30pOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcub3JkLWJ1aWxkJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICAgICAgdmFyIGJhbms9cm9vdC5xdWVyeVNlbGVjdG9yKCcub3JkLWJhbmtbZGF0YS1rZXk9IicrYi5kYXRhc2V0LmtleSsnIl0nKTsKICAgICAgW10uc2xpY2UuY2FsbChiLnF1ZXJ5U2VsZWN0b3JBbGwoJy53b3JkJykpLmZvckVhY2goZnVuY3Rpb24odyl7YmFuay5hcHBlbmRDaGlsZCh3KTt9KTsKICAgICAgYi5jbGFzc0xpc3QucmVtb3ZlKCdvaycsJ25vJyk7CiAgICB9KTsKICAgIHVwZGF0ZVByb2dyZXNzKCk7CiAgfQoKICB1cGRhdGVQcm9ncmVzcygpOwogIGFjdGl2YXRlKCdub3RlcycpOwp9KSgpOwo=\"))));<\/script>","protected":false},"excerpt":{"rendered":"<p>English Grammar in Use \u00b7 Murphy Intermediate Grammar Master English grammar one unit at a time. Clear notes, then 40+ interactive exercises with instant feedback \u2014 based on the topics in English Grammar in Use (Intermediate). UNIT 1 Present continuous \u25cf LIVE \u2192 UNIT 2 Present simple \u25cf LIVE \u2192 UNIT 3 Continuous or simple? [&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-5025","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5025","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=5025"}],"version-history":[{"count":0,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5025\/revisions"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=5025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}