{"id":1335,"date":"2025-08-10T07:27:03","date_gmt":"2025-08-10T07:27:03","guid":{"rendered":"https:\/\/safebrowsing.cmc.iq\/?page_id=1335"},"modified":"2025-08-25T08:00:37","modified_gmt":"2025-08-25T08:00:37","slug":"catch-the-hacker","status":"publish","type":"page","link":"https:\/\/safebrowsing.cmc.iq\/index.php\/catch-the-hacker\/","title":{"rendered":"Catch the Hacker"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1335\" class=\"elementor elementor-1335\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d768e7 ekit-sticky--top e-flex e-con-boxed e-con e-child\" data-id=\"4d768e7\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;ekit_sticky&quot;:&quot;top&quot;,&quot;ekit_sticky_offset&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;ekit_sticky_offset_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;ekit_sticky_offset_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;ekit_sticky_on_desktop&quot;:&quot;desktop&quot;,&quot;ekit_sticky_on_tablet&quot;:&quot;tablet&quot;,&quot;ekit_sticky_on_mobile&quot;:&quot;mobile&quot;,&quot;ekit_sticky_effect_offset&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;ekit_sticky_effect_offset_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;ekit_sticky_effect_offset_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-042192f elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"042192f\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/safebrowsing.cmc.iq\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/safebrowsing.cmc.iq\/wp-content\/uploads\/2025\/04\/logo-aman0net.png\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c57144 elementor-widget elementor-widget-ekit-nav-menu\" data-id=\"6c57144\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"ekit-nav-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<nav class=\"ekit-wid-con ekit_menu_responsive_tablet\" \n\t\t\tdata-hamburger-icon=\"\" \n\t\t\tdata-hamburger-icon-type=\"icon\" \n\t\t\tdata-responsive-breakpoint=\"1024\">\n\t\t\t            <button class=\"elementskit-menu-hamburger elementskit-menu-toggler\"  type=\"button\" aria-label=\"hamburger-icon\">\n                                    <span class=\"elementskit-menu-hamburger-icon\"><\/span><span class=\"elementskit-menu-hamburger-icon\"><\/span><span class=\"elementskit-menu-hamburger-icon\"><\/span>\n                            <\/button>\n            <div id=\"ekit-megamenu-%d8%a7%d9%84%d9%82%d8%a7%d8%a6%d9%85%d8%a9-%d8%a7%d9%84%d8%b1%d8%a6%d9%8a%d8%b3%d9%8a%d8%a9\" class=\"elementskit-menu-container elementskit-menu-offcanvas-elements elementskit-navbar-nav-default ekit-nav-menu-one-page-yes ekit-nav-dropdown-hover\"><ul id=\"menu-%d8%a7%d9%84%d9%82%d8%a7%d8%a6%d9%85%d8%a9-%d8%a7%d9%84%d8%b1%d8%a6%d9%8a%d8%b3%d9%8a%d8%a9\" class=\"elementskit-navbar-nav elementskit-menu-po-right submenu-click-on-icon\"><li id=\"menu-item-665\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-665 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/\" class=\"ekit-menu-nav-link\">\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629<\/a><\/li>\n<li id=\"menu-item-1252\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1252 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/index.php\/games\/\" class=\"ekit-menu-nav-link\">\u0623\u0644\u0639\u0627\u0628 \u062a\u0639\u0644\u064a\u0645\u064a\u0629<\/a><\/li>\n<li id=\"menu-item-1615\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1615 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/index.php\/faq\/\" class=\"ekit-menu-nav-link\">\u0627\u0633\u0626\u0644\u0629 \u0634\u0627\u0626\u0639\u0629<\/a><\/li>\n<li id=\"menu-item-1595\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1595 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/index.php\/story\/\" class=\"ekit-menu-nav-link\">\u0627\u0644\u0642\u0635\u0635 \u0627\u0644\u062a\u0648\u0639\u0648\u064a\u0629<\/a><\/li>\n<\/ul><div class=\"elementskit-nav-identity-panel\"><button class=\"elementskit-menu-close elementskit-menu-toggler\" type=\"button\">X<\/button><\/div><\/div>\t\t\t\n\t\t\t<div class=\"elementskit-menu-overlay elementskit-menu-offcanvas-elements elementskit-menu-toggler ekit-nav-menu--overlay\"><\/div>        <\/nav>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-761e3c3 e-con-full elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"761e3c3\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e54b13f elementor-widget__width-auto elementor-hidden-tablet elementor-hidden-mobile elementor-align-center elementor-widget elementor-widget-elementskit-button\" data-id=\"e54b13f\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"elementskit-button.default\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"ekit-btn-wraper\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/safebrowsing.cmc.iq\/wp-admin\/post.php?post=1567&#038;action=elementor\" class=\"elementskit-btn  whitespace--normal\" id=\"\">\n\t\t\t\t\t\u0634\u0627\u0647\u062f \u0627\u0644\u0642\u0635\u0635 \t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n        <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1471624 e-flex e-con-boxed e-con e-parent\" data-id=\"1471624\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-89fb340 elementor-widget elementor-widget-html\" data-id=\"89fb340\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"ar\" dir=\"rtl\">\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>\ud83d\udd75\ufe0f\u200d\u2642\ufe0f Catch the Hacker \u2013 \u0645\u0637\u0627\u0631\u062f\u0629 \u0627\u0644\u0647\u0627\u0643\u0631 (\u0648\u0636\u0639 \u062a\u062f\u0631\u064a\u0628 + \u0623\u0646\u0648\u0627\u0639 \u062c\u0648\u0644\u0627\u062a)<\/title>\r\n<style>\r\n:root{\r\n  --bg:#050b17; --bg2:#071221;\r\n  --grid:#0b2540; --panel:#0c1f36; --card:#0e213b;\r\n  --accent:#22d3ee; --accent2:#38bdf8; --ok:#10b981; --warn:#f59e0b; --danger:#ef4444;\r\n  --text:#e6f6ff; --muted:#9ac7ff; --stroke:#123252;\r\n}\r\n*{box-sizing:border-box}\r\nhtml,body{height:100%;margin:0;background:radial-gradient(1200px 600px at 50% -20%,#0a1b30 0%,#05101e 55%,#040b16 100%), linear-gradient(180deg,var(--bg),var(--bg2));color:var(--text);font-family:system-ui,-apple-system,\"Segoe UI\",Roboto,Helvetica,Arial}\r\n.wrap{min-height:100%;display:grid;grid-template-rows:auto 1fr auto}\r\n\r\n\/* Cyber Command Center background *\/\r\n.cyber{\r\n  position:fixed;inset:0;z-index:-1;pointer-events:none;\r\n  background:\r\n    radial-gradient(600px 300px at 50% -10%, rgba(56,189,248,.15), transparent 60%),\r\n    linear-gradient(0deg, transparent 96%, rgba(34,211,238,.08) 100%),\r\n    linear-gradient(90deg, transparent 96%, rgba(34,211,238,.08) 100%),\r\n    repeating-linear-gradient(0deg, rgba(56,189,248,.05) 0 1px, transparent 1px 3px);\r\n  background-size:cover, 100% 24px, 24px 100%, auto;\r\n}\r\n.scanlines{\r\n  position:fixed;inset:0;z-index:-1;pointer-events:none;\r\n  background: linear-gradient(rgba(255,255,255,.03) 1px, transparent 2px);\r\n  background-size: 100% 4px; mix-blend-mode:overlay; animation:scan 8s linear infinite;\r\n}\r\n@keyframes scan{ 0%{transform:translateY(-4px)} 100%{transform:translateY(4px)} }\r\n\r\nheader{position:sticky;top:0;z-index:5;background:rgba(6,20,38,.75);backdrop-filter:blur(8px);border-bottom:1px solid var(--stroke)}\r\n.bar{max-width:1200px;margin:auto;display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 14px;flex-wrap:wrap}\r\n.title{font-weight:800;font-size:18px;display:flex;gap:10px;align-items:center}\r\n.title .dot{width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#8ef, #27d, #0a2747)}\r\n.chip{font-size:12px;border:1px solid var(--stroke);background:rgba(2,6,23,.55);padding:4px 10px;border-radius:999px}\r\n.btn{border:0;border-radius:12px;padding:10px 14px;background:#0d2645;color:var(--text);cursor:pointer;transition:transform .12s ease,filter .2s}\r\n.btn:hover{filter:brightness(1.08)}\r\n.btn:active{transform:scale(.98)}\r\n.btn.primary{background:linear-gradient(90deg,var(--accent),var(--accent2))}\r\n.input, select{padding:10px 12px;border-radius:12px;border:1px solid var(--stroke);background:#0c1f36;color:var(--text)}\r\nmain{max-width:1200px;margin:18px auto;padding:10px}\r\n.card{background:linear-gradient(180deg,rgba(31,41,55,.26),rgba(17,24,39,.26));border:1px solid var(--stroke);border-radius:18px;box-shadow:0 10px 30px rgba(0,0,0,.25);overflow:hidden}\r\n.card .head{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--stroke);background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01))}\r\n.stats{display:flex;gap:10px;flex-wrap:wrap}\r\n.stat{display:flex;gap:6px;align-items:center;font-size:13px;background:#0a1c33;border:1px solid var(--stroke);padding:6px 10px;border-radius:10px}\r\n.body{padding:18px}\r\n.meta{font-size:13px;color:var(--muted);margin-bottom:10px}\r\n.hidden{display:none}\r\nfooter{opacity:.75;text-align:center;padding:12px;font-size:12px}\r\n\r\n\/* Playfield (threat map) *\/\r\n.playfield{\r\n  position:relative;height:520px;border:1px solid var(--stroke);border-radius:16px;\r\n  background:\r\n    radial-gradient(800px 300px at 50% 0%, rgba(56,189,248,.12), transparent 60%),\r\n    linear-gradient(0deg, transparent 95%, rgba(34,211,238,.06) 100%),\r\n    linear-gradient(90deg, transparent 95%, rgba(34,211,238,.06) 100%),\r\n    #081526;\r\n  background-size:cover, 100% 40px, 40px 100%, auto;\r\n  overflow:hidden;\r\n}\r\n\r\n\/* Threat\/Safe tiles *\/\r\n.tile{\r\n  position:absolute; min-width:120px; max-width:240px;\r\n  background:linear-gradient(180deg, rgba(17,24,39,.85), rgba(15,23,42,.75));\r\n  border:1px solid var(--stroke); border-radius:12px; padding:10px 12px; color:var(--text);\r\n  box-shadow:0 8px 20px rgba(0,0,0,.25); cursor:pointer; user-select:none;\r\n  transition:transform .08s ease, box-shadow .2s ease, filter .2s ease, opacity .25s ease;\r\n  display:flex; gap:8px; align-items:flex-start;\r\n}\r\n.tile:hover{ transform:translateY(-1px); filter:brightness(1.05) }\r\n.tile .ic{font-size:18px; line-height:1}\r\n.tile .tx{font-size:13px}\r\n.tile.safe{border-color:#0a5a3a}\r\n.tile.threat{border-color:#4d1e1e; background:linear-gradient(180deg, rgba(239,68,68,.12), rgba(17,24,39,.8))}\r\n.badge{font-size:10px;padding:2px 6px;border-radius:999px;border:1px solid var(--stroke);background:#0b2037;color:#9bd2ff;margin-inline-start:auto}\r\n\r\n.flash{ animation:flash .4s ease; }\r\n@keyframes flash{ 0%{box-shadow:0 0 0 0 rgba(16,185,129,.0)} 50%{box-shadow:0 0 0 10px rgba(16,185,129,.2)} 100%{box-shadow:0 0 0 0 rgba(16,185,129,.0)} }\r\n\r\n.toast{\r\n  position:absolute; left:50%; top:12px; transform:translateX(-50%);\r\n  padding:6px 10px; font-size:12px; background:#0b2037; border:1px solid var(--stroke); border-radius:999px; opacity:.95;\r\n}\r\n\r\n\/* Training preview pill *\/\r\n.preview{\r\n  position:absolute; left:50%; top:12px; transform:translateX(-50%);\r\n  padding:8px 12px; font-size:13px; border-radius:999px;\r\n  background:#2b1120; border:1px solid #5b1e31; color:#ffd1d9; opacity:0.95;\r\n}\r\n\r\n\/* End + certificate *\/\r\n.end{padding:22px;text-align:center}\r\n.big{font-size:22px;font-weight:800;margin-bottom:10px}\r\n.score{font-size:18px;margin:8px 0}\r\n.row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:10px}\r\ncanvas{max-width:100%;border-radius:12px;border:1px solid var(--stroke);margin-top:12px}\r\n\r\n\/* Mini widgets in header (fake KPIs) *\/\r\n.kpi{display:flex;gap:8px;align-items:center}\r\n.kdot{width:8px;height:8px;border-radius:50%;background:#10b981;box-shadow:0 0 10px #10b981}\r\n.klabel{font-size:12px;color:#9bd2ff}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"cyber\"><\/div><div class=\"scanlines\"><\/div>\r\n\r\n<div class=\"wrap\">\r\n<header>\r\n  <div class=\"bar\">\r\n    <div class=\"title\"><span class=\"dot\"><\/span> \ud83d\udd75\ufe0f\u200d\u2642\ufe0f Catch the Hacker <span class=\"chip\" id=\"modeChip\">\u0648\u0636\u0639: \u062a\u062f\u0631\u064a\u0628<\/span><\/div>\r\n    <div class=\"row\" style=\"display:flex;gap:10px;flex-wrap:wrap;align-items:center\">\r\n      <input id=\"playerName\" class=\"input\" placeholder=\"\u0627\u0643\u062a\u0628 \u0627\u0633\u0645 \u0627\u0644\u0644\u0627\u0639\u0628 \u0647\u0646\u0627\" \/>\r\n      <select id=\"difficulty\" title=\"\u0627\u0644\u0635\u0639\u0648\u0628\u0629\">\r\n        <option value=\"\u0633\u0647\u0644\">\u0633\u0647\u0644<\/option>\r\n        <option value=\"\u0645\u062a\u0648\u0633\u0637\" selected>\u0645\u062a\u0648\u0633\u0637<\/option>\r\n        <option value=\"\u0635\u0639\u0628\">\u0635\u0639\u0628<\/option>\r\n      <\/select>\r\n      <select id=\"roundType\" title=\"\u0646\u0648\u0639 \u0627\u0644\u062c\u0648\u0644\u0629\">\r\n        <option value=\"all\" selected>\u0627\u0644\u0643\u0644<\/option>\r\n        <option value=\"attachments\">\u0645\u0631\u0641\u0642\u0627\u062a \u0641\u0642\u0637<\/option>\r\n        <option value=\"login\">\u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644<\/option>\r\n        <option value=\"links\">\u0631\u0648\u0627\u0628\u0637<\/option>\r\n      <\/select>\r\n      <select id=\"rounds\" title=\"\u0639\u062f\u062f \u0627\u0644\u062c\u0648\u0644\u0627\u062a\">\r\n        <option>5<\/option><option selected>10<\/option><option>15<\/option>\r\n      <\/select>\r\n      <label class=\"chip\" style=\"display:flex;align-items:center;gap:6px;cursor:pointer\">\r\n        <input id=\"training\" type=\"checkbox\" checked \/> \u0648\u0636\u0639 \u062a\u062f\u0631\u064a\u0628\r\n      <\/label>\r\n      <button class=\"btn primary\" id=\"btnStart\">\u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u0637\u0627\u0631\u062f\u0629<\/button>\r\n      <span class=\"chip kpi\"><span class=\"kdot\"><\/span><span class=\"klabel\">SOC Online<\/span><\/span>\r\n    <\/div>\r\n  <\/div>\r\n<\/header>\r\n\r\n<main>\r\n  <section class=\"card\" id=\"gameCard\">\r\n    <div class=\"head\">\r\n      <div class=\"stats\">\r\n        <div class=\"stat\">\u0627\u0644\u0645\u0631\u062d\u0644\u0629: <b id=\"roundIdx\">1<\/b>\/<span id=\"roundTotal\">10<\/span><\/div>\r\n        <div class=\"stat\">\u0627\u0644\u0646\u0642\u0627\u0637: <b id=\"score\">0<\/b><\/div>\r\n        <div class=\"stat\">\u0633\u0644\u0633\u0644\u0629 \u0635\u062d\u064a\u062d\u0629 \ud83d\udd25: <b id=\"streak\">0<\/b><\/div>\r\n        <div class=\"stat\">\u0642\u0644\u0648\u0628 \u2764: <b id=\"lives\">3<\/b><\/div>\r\n        <div class=\"stat\">\u0627\u0644\u0648\u0642\u062a \u23f3: <b id=\"timer\">20<\/b><span> s<\/span><\/div>\r\n      <\/div>\r\n      <div class=\"row\"><span class=\"chip\" id=\"diffChip\">\u0627\u0644\u0635\u0639\u0648\u0628\u0629: \u2014<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"body\">\r\n      <div class=\"meta\">\r\n        \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 <b>\u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a<\/b> \u0641\u0642\u0637 (\u0623\u062d\u0645\u0631). \u0627\u0644\u0646\u0642\u0631 \u0639\u0644\u0649 \u0639\u0646\u0627\u0635\u0631 \u0622\u0645\u0646\u0629 \u064a\u062e\u0635\u0645 \u0642\u0644\u0628\u064b\u0627.  \r\n        <span id=\"metaType\">\u0646\u0648\u0639 \u0627\u0644\u062c\u0648\u0644\u0629: \u0627\u0644\u0643\u0644<\/span> \u2014 <span id=\"metaTrain\">\u0648\u0636\u0639 \u062a\u062f\u0631\u064a\u0628 \u0645\u064f\u0641\u0639\u0644<\/span>\r\n      <\/div>\r\n      <div class=\"playfield\" id=\"field\"><\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section id=\"endCard\" class=\"card hidden\">\r\n    <div class=\"end\">\r\n      <div class=\"big\">\u0627\u0646\u062a\u0647\u062a \u0627\u0644\u0645\u0637\u0627\u0631\u062f\u0629 \u2705<\/div>\r\n      <div class=\"score\">\u0627\u0644\u0644\u0627\u0639\u0628: <b id=\"playerOut\">\u0644\u0627\u0639\u0628<\/b><\/div>\r\n      <div class=\"score\">\u0627\u0644\u0646\u062a\u064a\u062c\u0629: <b id=\"finalScore\">0<\/b><\/div>\r\n      <div class=\"row\">\r\n        <button class=\"btn primary\" id=\"btnDownload\">\u062a\u062d\u0645\u064a\u0644 \u0634\u0647\u0627\u062f\u0629 PNG<\/button>\r\n        <button class=\"btn\" id=\"btnAgain\">\u0627\u0644\u0644\u0639\u0628 \u0645\u062c\u062f\u062f\u064b\u0627<\/button>\r\n      <\/div>\r\n      <canvas id=\"cert\" width=\"1000\" height=\"600\"><\/canvas>\r\n    <\/div>\r\n  <\/section>\r\n<\/main>\r\n\r\n<footer>\u062a\u0630\u0643\u064a\u0631: \u0644\u0627 \u062a\u0636\u063a\u0637 \u0631\u0648\u0627\u0628\u0637 \u0623\u0648 \u0645\u0631\u0641\u0642\u0627\u062a \u0645\u0634\u0628\u0648\u0647\u0629\u060c \u0648\u0641\u0639\u0651\u0644 2FA\u060c \u0648\u0631\u0627\u062c\u0639 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a.<\/footer>\r\n<\/div>\r\n\r\n<script>\r\n\/* ========= Helpers ========= *\/\r\nfunction $(id){ return document.getElementById(id); }\r\nfunction el(tag,cls,html){ const n=document.createElement(tag); if(cls) n.className=cls; if(html!=null) n.innerHTML=html; return n; }\r\nfunction rnd(min,max){ return Math.random()*(max-min)+min; }\r\nfunction choice(a){ return a[Math.floor(Math.random()*a.length)]; }\r\nfunction clamp(v,a,b){ return Math.max(a, Math.min(b,v)); }\r\n\r\n\/* ========= Audio (beeps) ========= *\/\r\nlet actx=null;\r\nfunction beep(freq=880, dur=0.08, type='sine', gain=0.05){\r\n  try{\r\n    if(!actx) actx=new (window.AudioContext||window.webkitAudioContext)();\r\n    const o=actx.createOscillator(), g=actx.createGain();\r\n    o.type=type; o.frequency.value=freq; g.gain.value=gain;\r\n    o.connect(g); g.connect(actx.destination); o.start();\r\n    setTimeout(()=>{ o.stop(); }, dur*1000);\r\n  }catch(e){}\r\n}\r\n\r\n\/* ========= Pools ========= *\/\r\nconst THREATS = [\r\n  {ic:'\ud83e\udde8', tx:'\u0645\u0644\u0641 exe \u0645\u0631\u064a\u0628', tag:'THREAT', cat:'attachments'},\r\n  {ic:'\ud83d\udcce', tx:'\u0645\u0631\u0641\u0642 zip \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641', tag:'THREAT', cat:'attachments'},\r\n  {ic:'\ud83d\udea9', tx:'\u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644 \u063a\u064a\u0631 \u0645\u0639\u062a\u0627\u062f', tag:'THREAT', cat:'login'},\r\n  {ic:'\ud83d\udce7', tx:'\u0637\u0644\u0628 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631', tag:'THREAT', cat:'login'},\r\n  {ic:'\ud83d\udd11', tx:'\u0637\u0644\u0628 OTP', tag:'THREAT', cat:'login'},\r\n  {ic:'\ud83e\uddea', tx:'\u0631\u0627\u0628\u0637 \u0642\u0635\u064a\u0631 \u0645\u0634\u0628\u0648\u0647', tag:'THREAT', cat:'links'},\r\n  {ic:'\ud83d\udd77\ufe0f', tx:'\u0645\u0643\u0648\u0651\u0646 \u0625\u0636\u0627\u0641\u064a \u0645\u0632\u064a\u0641', tag:'THREAT', cat:'links'},\r\n  {ic:'\ud83d\udd73\ufe0f', tx:'\u0627\u0633\u062a\u063a\u0644\u0627\u0644 \u062b\u063a\u0631\u0629', tag:'THREAT', cat:'other'}\r\n];\r\n\r\nconst SAFES = [\r\n  {ic:'\u2705', tx:'\u062a\u062d\u062f\u064a\u062b \u0645\u0646 \u0627\u0644\u0645\u062a\u062c\u0631', tag:'SAFE'},\r\n  {ic:'\ud83d\udee1\ufe0f', tx:'2FA \u0645\u0641\u0639\u0651\u0644', tag:'SAFE'},\r\n  {ic:'\ud83d\udd10', tx:'\u0627\u062a\u0635\u0627\u0644 HTTPS', tag:'SAFE'},\r\n  {ic:'\u267b\ufe0f', tx:'\u0646\u0633\u062e\u0629 \u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629 \u0646\u0627\u062c\u062d\u0629', tag:'SAFE'},\r\n  {ic:'\ud83d\udcca', tx:'\u0644\u0648\u062d\u0629 \u0645\u0631\u0627\u0642\u0628\u0629', tag:'SAFE'},\r\n  {ic:'\ud83e\uddef', tx:'\u0633\u064a\u0627\u0633\u0629 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0642\u0648\u064a\u0629', tag:'SAFE'}\r\n];\r\n\r\n\/* ========= Difficulty profiles ========= *\/\r\nconst DIFF = {\r\n  '\u0633\u0647\u0644':    {spawnInterval:900, threatChance:0.7, lifeMs:[2500,3300], timer:25},\r\n  '\u0645\u062a\u0648\u0633\u0637':  {spawnInterval:700, threatChance:0.6, lifeMs:[1800,2600], timer:20},\r\n  '\u0635\u0639\u0628':    {spawnInterval:520, threatChance:0.6, lifeMs:[1100,1800], timer:15}\r\n};\r\n\r\n\/* ========= State ========= *\/\r\nlet ROUNDS=10, round=0, score=0, streak=0, lives=3, timer=20, baseTimer=20, lock=false, spawning=false;\r\nlet player='\u0644\u0627\u0639\u0628', level='\u0645\u062a\u0648\u0633\u0637', training=true, roundType='all';\r\nlet spawnT=null, tickT=null;\r\nlet totalClicks=0, goodClicks=0;\r\n\r\nconst field=$('field');\r\nconst roundIdx=$('roundIdx'), roundTotal=$('roundTotal'), scoreEl=$('score'), streakEl=$('streak'), livesEl=$('lives'), timerEl=$('timer'), diffChip=$('diffChip');\r\nconst btnStart=$('btnStart'), btnAgain=$('btnAgain'), btnDownload=$('btnDownload');\r\nconst gameCard=$('gameCard'), endCard=$('endCard'), finalScore=$('finalScore'), playerOut=$('playerOut');\r\nconst cert=$('cert');\r\nconst metaType=$('metaType'), metaTrain=$('metaTrain');\r\n\r\n\/* ========= Game Flow ========= *\/\r\nfunction startGame(){\r\n  \/\/ reset\r\n  player = $('playerName').value.trim() || '\u0644\u0627\u0639\u0628';\r\n  level = $('difficulty').value;\r\n  ROUNDS = parseInt($('rounds').value,10);\r\n  training = $('training').checked;\r\n  roundType = $('roundType').value; \/\/ all | attachments | login | links\r\n\r\n  round = 0; score=0; streak=0; lives=3; totalClicks=0; goodClicks=0;\r\n  baseTimer = DIFF[level].timer;\r\n  $('modeChip').textContent = `\u0648\u0636\u0639: ${training?'\u062a\u062f\u0631\u064a\u0628':'\u0627\u062e\u062a\u0628\u0627\u0631'} \u2014 ${player} | \u0627\u0644\u0635\u0639\u0648\u0628\u0629: ${level} (${baseTimer}s) | \u0627\u0644\u062c\u0648\u0644\u0627\u062a: ${ROUNDS}`;\r\n  roundTotal.textContent = ROUNDS; timerEl.textContent = baseTimer; diffChip.textContent = '\u0627\u0644\u0635\u0639\u0648\u0628\u0629: '+level;\r\n  metaType.textContent = '\u0646\u0648\u0639 \u0627\u0644\u062c\u0648\u0644\u0629: ' + (\r\n    roundType==='attachments'?'\u0645\u0631\u0641\u0642\u0627\u062a \u0641\u0642\u0637': roundType==='login'?'\u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644': roundType==='links'?'\u0631\u0648\u0627\u0628\u0637':'\u0627\u0644\u0643\u0644'\r\n  );\r\n  metaTrain.textContent = training ? '\u0648\u0636\u0639 \u062a\u062f\u0631\u064a\u0628 \u0645\u064f\u0641\u0639\u0644' : '\u0648\u0636\u0639 \u0627\u062e\u062a\u0628\u0627\u0631';\r\n\r\n  endCard.classList.add('hidden'); gameCard.classList.remove('hidden');\r\n  nextRound();\r\n}\r\nfunction nextRound(){\r\n  if(lives<=0 || round>=ROUNDS){ return endGame(); }\r\n  clearField();\r\n  round++; lock=false;\r\n  roundIdx.textContent = round;\r\n  timer = baseTimer; timerEl.textContent = timer;\r\n  clearInterval(tickT); clearTimeout(spawnT);\r\n  tickT = setInterval(()=>{ timer--; timerEl.textContent=timer; if(timer<=0){ clearInterval(tickT); stopSpawning(); setTimeout(nextRound,600); }},1000);\r\n  startSpawning();\r\n}\r\nfunction endGame(){\r\n  clearInterval(tickT); stopSpawning(); clearField();\r\n  gameCard.classList.add('hidden'); endCard.classList.remove('hidden');\r\n  finalScore.textContent = score; playerOut.textContent = player;\r\n  drawCert(player, score, level, streak, accuracy(), training, roundType);\r\n}\r\n\r\n\/* ========= Threat filtering by round type ========= *\/\r\nfunction threatPool(){\r\n  if(roundType==='attachments') return THREATS.filter(t=>t.cat==='attachments');\r\n  if(roundType==='login')      return THREATS.filter(t=>t.cat==='login');\r\n  if(roundType==='links')      return THREATS.filter(t=>t.cat==='links');\r\n  return THREATS;\r\n}\r\n\r\n\/* ========= Spawning ========= *\/\r\nfunction startSpawning(){\r\n  spawning=true;\r\n  const prof=DIFF[level];\r\n  function spawnOnce(){\r\n    if(!spawning) return;\r\n    const poolThreats = threatPool();\r\n    const isThreat = Math.random() < prof.threatChance && poolThreats.length>0;\r\n    const data = isThreat ? choice(poolThreats) : choice(SAFES);\r\n\r\n    if(training && isThreat){\r\n      \/\/ \u0639\u0631\u0636 \u0627\u0633\u0645 \u0627\u0644\u062a\u0647\u062f\u064a\u062f \u0642\u0628\u0644 \u0627\u0644\u0638\u0647\u0648\u0631 0.5s\r\n      previewThreat(data.tx);\r\n      setTimeout(()=>{ spawnTile(data, 'threat', rnd(prof.lifeMs[0], prof.lifeMs[1])); }, 500);\r\n    }else{\r\n      spawnTile(data, isThreat ? 'threat':'safe', rnd(prof.lifeMs[0], prof.lifeMs[1]));\r\n    }\r\n\r\n    spawnT = setTimeout(spawnOnce, prof.spawnInterval);\r\n  }\r\n  spawnOnce();\r\n}\r\nfunction stopSpawning(){ spawning=false; clearTimeout(spawnT); }\r\n\r\n\/* ========= Tiles ========= *\/\r\nfunction spawnTile(data, kind, lifeMs){\r\n  const t = el('div', 'tile '+(kind==='threat'?'threat':'safe'));\r\n  const ic = el('div','ic', data.ic);\r\n  const tx = el('div','tx', data.tx);\r\n  const bd = el('div','badge', kind==='threat'?'\u062a\u0647\u062f\u064a\u062f':'\u0622\u0645\u0646');\r\n  t.append(ic, tx, bd);\r\n\r\n  \/\/ position\r\n  const fw = field.clientWidth, fh = field.clientHeight;\r\n  const w = clamp(rnd(140, 220), 120, 240), h = 58;\r\n  const x = clamp(rnd(8, fw - w - 8), 8, fw - w - 8);\r\n  const y = clamp(rnd(8, fh - h - 8), 8, fh - h - 8);\r\n  t.style.width = Math.round(w) + 'px';\r\n  t.style.left = Math.round(x) + 'px';\r\n  t.style.top = Math.round(y) + 'px';\r\n\r\n  let clicked=false;\r\n  t.addEventListener('click', ()=>{\r\n    if(clicked) return; clicked=true;\r\n    totalClicks++;\r\n    if(t.classList.contains('threat')){\r\n      goodClicks++;\r\n      streak++;\r\n      const bonus = Math.max(0, timer*2) + (streak>1 ? (streak-1)*6 : 0);\r\n      score += 100 + bonus;\r\n      flashToast('\u2714\ufe0f \u062a\u0645 \u062a\u062d\u064a\u064a\u062f \u062a\u0647\u062f\u064a\u062f', '#0b2037');\r\n      t.classList.add('flash');\r\n      beep(960, .06, 'square', 0.06);\r\n    }else{\r\n      streak=0;\r\n      lives--; livesEl.textContent=lives;\r\n      flashToast('\u26a0\ufe0f \u0639\u0646\u0635\u0631 \u0622\u0645\u0646! -1 \u0642\u0644\u0628', '#2b1120');\r\n      beep(220, .08, 'sawtooth', 0.07);\r\n      if(lives<=0){ endGame(); }\r\n    }\r\n    scoreEl.textContent = score; streakEl.textContent = streak;\r\n    t.style.opacity=.25; setTimeout(()=> t.remove(), 120);\r\n  }, {once:true});\r\n\r\n  field.appendChild(t);\r\n  \/\/ auto remove after lifetime\r\n  setTimeout(()=>{ t.remove(); }, lifeMs);\r\n}\r\nfunction clearField(){ field.innerHTML=''; }\r\n\r\n\/* ========= UI Helpers ========= *\/\r\nfunction flashToast(msg,bg){\r\n  const n=el('div','toast',msg); n.style.background=bg||'#0b2037';\r\n  field.appendChild(n); setTimeout(()=>{ n.style.opacity='0'; n.style.transform='translateX(-50%) translateY(-4px)'; }, 700);\r\n  setTimeout(()=> n.remove(), 1100);\r\n}\r\nfunction previewThreat(name){\r\n  const p=el('div','preview','\u062a\u0647\u062f\u064a\u062f: '+name);\r\n  field.appendChild(p);\r\n  setTimeout(()=>{ p.style.opacity='0'; p.style.transform='translateX(-50%) translateY(-4px)'; }, 400);\r\n  setTimeout(()=> p.remove(), 600);\r\n}\r\nfunction accuracy(){\r\n  if(totalClicks===0) return 0;\r\n  return Math.round((goodClicks\/totalClicks)*100);\r\n}\r\n\r\n\/* ========= Certificate ========= *\/\r\nfunction drawCert(name, score, level, bestStreak, acc, training, rtype){\r\n  const c=cert, ctx=c.getContext('2d'), w=c.width, h=c.height;\r\n  ctx.clearRect(0,0,w,h);\r\n  const g=ctx.createLinearGradient(0,0,w,h); g.addColorStop(0,'#07172b'); g.addColorStop(1,'#0a1e38');\r\n  ctx.fillStyle=g; ctx.fillRect(0,0,w,h);\r\n  \/\/ grid\r\n  ctx.strokeStyle='rgba(56,189,248,.25)'; ctx.lineWidth=1;\r\n  for(let x=60;x<w;x+=40){ ctx.beginPath(); ctx.moveTo(x,40); ctx.lineTo(x,h-40); ctx.stroke(); }\r\n  for(let y=60;y<h;y+=40){ ctx.beginPath(); ctx.moveTo(40,y); ctx.lineTo(w-40,y); ctx.stroke(); }\r\n  \/\/ frame\r\n  ctx.strokeStyle='#38bdf8'; ctx.lineWidth=8; ctx.strokeRect(20,20,w-40,h-40);\r\n\r\n  \/\/ heading\r\n  ctx.fillStyle='#e6f6ff'; ctx.textAlign='center';\r\n  ctx.font='bold 40px Segoe UI, Arial'; ctx.fillText('\u0634\u0647\u0627\u062f\u0629 \u0625\u0646\u062c\u0627\u0632 \u2013 Catch the Hacker', w\/2, 110);\r\n  ctx.font='22px Segoe UI, Arial'; ctx.fillStyle='#9ac7ff'; ctx.fillText('\u0645\u064f\u0646\u062d\u062a \u0625\u0644\u0649', w\/2, 155);\r\n  ctx.font='bold 54px Segoe UI, Arial'; ctx.fillStyle='#e6f6ff'; ctx.fillText(name, w\/2, 205);\r\n\r\n  \/\/ metrics\r\n  ctx.font='24px Segoe UI, Arial'; ctx.fillStyle='#9ac7ff';\r\n  ctx.fillText('\u0627\u0644\u0645\u062d\u0635\u0644\u0629', w\/2, 255);\r\n  ctx.font='bold 70px Segoe UI, Arial'; ctx.fillStyle='#e6f6ff'; ctx.fillText(`${score} \u0646\u0642\u0637\u0629`, w\/2, 315);\r\n\r\n  \/\/ chips\r\n  ctx.textAlign='left'; ctx.font='20px Segoe UI, Arial'; ctx.fillStyle='#cde7ff';\r\n  const rt = rtype==='attachments'?'\u0645\u0631\u0641\u0642\u0627\u062a \u0641\u0642\u0637': rtype==='login'?'\u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644': rtype==='links'?'\u0631\u0648\u0627\u0628\u0637':'\u0627\u0644\u0643\u0644';\r\n  const chips = [\r\n    `\u0627\u0644\u0648\u0636\u0639: ${training?'\u062a\u062f\u0631\u064a\u0628':'\u0627\u062e\u062a\u0628\u0627\u0631'}`,\r\n    `\u0646\u0648\u0639 \u0627\u0644\u062c\u0648\u0644\u0629: ${rt}`,\r\n    `\u0627\u0644\u0635\u0639\u0648\u0628\u0629: ${level}`,\r\n    `\u0623\u0641\u0636\u0644 \u0633\u0644\u0633\u0644\u0629: ${bestStreak}`,\r\n    `\u0627\u0644\u062f\u0642\u0629: ${acc}%`\r\n  ];\r\n  const cx=120, cy=360;\r\n  chips.forEach((t,i)=>{ roundedChip(ctx, cx, cy+i*46, t); });\r\n\r\n  \/\/ tips\r\n  ctx.font='18px Segoe UI, Arial'; ctx.fillStyle='#9ac7ff'; ctx.textAlign='center';\r\n  ctx.fillText(new Date().toLocaleDateString('ar-IQ')+' \u2013 \u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0647\u062f\u064a\u062f\u0627\u062a \u0648\u0644\u0627 \u062a\u0636\u063a\u0637 \u0627\u0644\u0631\u0648\u0627\u0628\u0637 \u0627\u0644\u0645\u0634\u0628\u0648\u0647\u0629', w\/2, h-50);\r\n\r\n  function roundedChip(ctx, x, y, text){\r\n    const padX=16, padY=8; ctx.font='20px Segoe UI, Arial';\r\n    const mw=ctx.measureText(text).width;\r\n    const w= mw + padX*2, h= 36, r=16;\r\n    ctx.fillStyle='rgba(11,32,55,.9)';\r\n    ctx.strokeStyle='#1c3a5d'; ctx.lineWidth=2;\r\n    roundRect(ctx, x, y, w, h, r, true, true);\r\n    ctx.fillStyle='#cde7ff'; ctx.fillText(text, x+padX, y+24);\r\n  }\r\n  function roundRect(ctx, x, y, w, h, r, fill, stroke){\r\n    ctx.beginPath();\r\n    ctx.moveTo(x+r,y); ctx.arcTo(x+w,y,x+w,y+h,r);\r\n    ctx.arcTo(x+w,y+h,x,y+h,r); ctx.arcTo(x,y+h,x,y,r);\r\n    ctx.arcTo(x,y,x+w,y,r); ctx.closePath();\r\n    if(fill) ctx.fill(); if(stroke) ctx.stroke();\r\n  }\r\n}\r\n\r\n\/* ========= Events ========= *\/\r\n$('btnStart').onclick=startGame;\r\n$('btnAgain').onclick=startGame;\r\n$('btnDownload').onclick=()=>{\r\n  const url=cert.toDataURL('image\/png');\r\n  const a=document.createElement('a'); a.href=url; a.download='catch_the_hacker_certificate.png'; a.click();\r\n};\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-986be28 elementor-widget elementor-widget-html\" data-id=\"986be28\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- \u0636\u0639 \u0627\u0644\u0623\u0632\u0631\u0627\u0631 \u062f\u0627\u062e\u0644 \u0634\u0627\u0634\u0629 \u0627\u0644\u0646\u0647\u0627\u064a\u0629 \u0628\u062c\u0627\u0646\u0628 \u0632\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0634\u0647\u0627\u062f\u0629 -->\r\n<div id=\"shareRow\" style=\"margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;justify-content:center\">\r\n  <label style=\"display:flex;gap:6px;align-items:center\">\r\n    <input type=\"checkbox\" id=\"hideName\"> \u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u0627\u0633\u0645\r\n  <\/label>\r\n  <label style=\"display:flex;gap:6px;align-items:center\">\r\n    <input type=\"checkbox\" id=\"hideScore\" checked> \u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u062f\u0631\u062c\u0629 (\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0634\u0627\u0631\u0629 \u0641\u0642\u0637)\r\n  <\/label>\r\n  <button class=\"btn\" id=\"btnShare\">\ud83d\udce4 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0634\u0647\u0627\u062f\u0629<\/button>\r\n  <a class=\"btn\" id=\"altWA\" target=\"_blank\">WhatsApp<\/a>\r\n  <a class=\"btn\" id=\"altTG\" target=\"_blank\">Telegram<\/a>\r\n  <a class=\"btn\" id=\"altTW\" target=\"_blank\">X (Twitter)<\/a>\r\n  <a class=\"btn\" id=\"altFB\" target=\"_blank\">Facebook<\/a>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u0627\u0633\u062a\u062f\u0639\u0650 \u0647\u0630\u0647 \u0627\u0644\u062f\u0627\u0644\u0629 \u0628\u0639\u062f \u0627\u062d\u062a\u0633\u0627\u0628 \u0627\u0644\u0646\u062a\u064a\u062c\u0629 \u0648\u0631\u0633\u0645 \u0627\u0644\u0634\u0647\u0627\u062f\u0629\r\nasync function setupSharing({playerName, gameName, medal, score, accuracy, verifyUrl}) {\r\n  \/\/ 1) \u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0646\u0635 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\r\n  const hideName = document.getElementById('hideName').checked;\r\n  const hideScore = document.getElementById('hideScore').checked;\r\n\r\n  const displayName = hideName ? '\u0628\u0637\u0644\/\u0628\u0637\u0644\u0629 \u0627\u0644\u0623\u0645\u0646 \u0627\u0644\u0633\u064a\u0628\u0631\u0627\u0646\u064a' : (playerName || '\u0644\u0627\u0639\u0628');\r\n  const scorePart = hideScore ? `\u062d\u0635\u0644\/\u062a \u0639\u0644\u0649 \u0634\u0627\u0631\u0629 ${medalLabel(medal)} \ud83c\udfc5` : `\u0627\u0644\u0646\u062a\u064a\u062c\u0629 ${score} (${accuracy}%) \u2014 \u0634\u0627\u0631\u0629 ${medalLabel(medal)} \ud83c\udfc5`;\r\n\r\n  const caption = `\ud83c\udf89 ${displayName} \u0623\u0646\u062c\u0632\/\u062a ${gameName}!\\n${scorePart}\\n\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0634\u0647\u0627\u062f\u0629 \u0647\u0646\u0627: ${verifyUrl}\\n#\u0623\u0645\u0646_\u0633\u064a\u0628\u0631\u0627\u0646\u064a #\u062a\u0639\u0644\u0645_\u0623\u0648\u0646\u0644\u0627\u064a\u0646 #CyberSafety`;\r\n\r\n  \/\/ 2) \u062a\u062c\u0647\u064a\u0632 \u0645\u0644\u0641 \u0627\u0644\u0635\u0648\u0631\u0629 (\u0645\u0646 canvas)\r\n  const file = await canvasToFile(document.getElementById('cert'), 'certificate.png');\r\n\r\n  \/\/ 3) Web Share API \u0625\u0646 \u0623\u0645\u0643\u0646 (\u0645\u0648\u0628\u0627\u064a\u0644\/\u0645\u062a\u0635\u0641\u062d\u0627\u062a \u062d\u062f\u064a\u062b\u0629)\r\n  const shareBtn = document.getElementById('btnShare');\r\n  shareBtn.onclick = async () => {\r\n    try {\r\n      if (navigator.canShare && navigator.canShare({ files: [file] })) {\r\n        await navigator.share({ text: caption, files: [file] });\r\n      } else if (navigator.share) {\r\n        await navigator.share({ text: caption, url: verifyUrl });\r\n      } else {\r\n        \/\/ \u0625\u0646 \u0644\u0645 \u062a\u062a\u0648\u0641\u0631\u060c \u0646\u0641\u0639\u0644 \u0627\u0644\u0628\u062f\u0627\u0626\u0644:\r\n        openFallbacks(caption, verifyUrl);\r\n      }\r\n    } catch (e) {\r\n      openFallbacks(caption, verifyUrl);\r\n    }\r\n  };\r\n\r\n  \/\/ 4) \u0625\u0639\u062f\u0627\u062f \u0631\u0648\u0627\u0628\u0637 \u0628\u062f\u064a\u0644\u0629 (\u062a\u0638\u0647\u0631 \u062f\u0627\u0626\u0645\u064b\u0627 \u0643\u062e\u064a\u0627\u0631 \u062b\u0627\u0646\u064a)\r\n  const encText = encodeURIComponent(caption);\r\n  const encUrl  = encodeURIComponent(verifyUrl);\r\n  document.getElementById('altWA').href = `https:\/\/wa.me\/?text=${encText}`;\r\n  document.getElementById('altTG').href = `https:\/\/t.me\/share\/url?url=${encUrl}&text=${encText}`;\r\n  document.getElementById('altTW').href = `https:\/\/twitter.com\/intent\/tweet?text=${encText}`;\r\n  document.getElementById('altFB').href = `https:\/\/www.facebook.com\/sharer\/sharer.php?u=${encUrl}`;\r\n}\r\n\r\nfunction medalLabel(m){\r\n  return m==='gold'?'\u0630\u0647\u0628\u064a\u0629':m==='silver'?'\u0641\u0636\u064a\u0629':'\u0628\u0631\u0648\u0646\u0632\u064a\u0629';\r\n}\r\n\r\nfunction openFallbacks(text, url){\r\n  \/\/ \u0627\u0641\u062a\u062d \u0648\u0627\u062a\u0633\u0627\u0628 \u0643\u062e\u064a\u0627\u0631 \u0633\u0631\u064a\u0639\u060c \u0648\u0627\u0644\u0628\u0642\u064a\u0629 \u0645\u062a\u0648\u0641\u0631\u0629 \u0643\u0623\u0632\u0631\u0627\u0631\r\n  window.open(`https:\/\/wa.me\/?text=${encodeURIComponent(text)}`,'_blank');\r\n}\r\n\r\n\/\/ \u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0640canvas \u0625\u0644\u0649 \u0645\u0644\u0641\r\nasync function canvasToFile(canvas, filename){\r\n  return new Promise((resolve)=> {\r\n    canvas.toBlob(b => resolve(new File([b], filename, {type:'image\/png'})), 'image\/png', 0.92);\r\n  });\r\n}\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 \u0623\u0644\u0639\u0627\u0628 \u062a\u0639\u0644\u064a\u0645\u064a\u0629 \u0627\u0633\u0626\u0644\u0629 \u0634\u0627\u0626\u0639\u0629 \u0627\u0644\u0642\u0635\u0635 \u0627\u0644\u062a\u0648\u0639\u0648\u064a\u0629 X \u0634\u0627\u0647\u062f \u0627\u0644\u0642\u0635\u0635 \ud83d\udd75\ufe0f\u200d\u2642\ufe0f Catch the Hacker \u2013 \u0645\u0637\u0627\u0631\u062f\u0629 \u0627\u0644\u0647\u0627\u0643\u0631 (\u0648\u0636\u0639 \u062a\u062f\u0631\u064a\u0628 + \u0623\u0646\u0648\u0627\u0639 \u062c\u0648\u0644\u0627\u062a) \ud83d\udd75\ufe0f\u200d\u2642\ufe0f Catch the Hacker \u0648\u0636\u0639: \u062a\u062f\u0631\u064a\u0628 \u0633\u0647\u0644\u0645\u062a\u0648\u0633\u0637\u0635\u0639\u0628 \u0627\u0644\u0643\u0644\u0645\u0631\u0641\u0642\u0627\u062a \u0641\u0642\u0637\u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644\u0631\u0648\u0627\u0628\u0637 51015 \u0648\u0636\u0639 \u062a\u062f\u0631\u064a\u0628 \u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u0637\u0627\u0631\u062f\u0629 SOC Online \u0627\u0644\u0645\u0631\u062d\u0644\u0629: 1\/10 \u0627\u0644\u0646\u0642\u0627\u0637: 0 \u0633\u0644\u0633\u0644\u0629 \u0635\u062d\u064a\u062d\u0629 \ud83d\udd25: 0 \u0642\u0644\u0648\u0628 \u2764: 3 \u0627\u0644\u0648\u0642\u062a \u23f3: 20 s \u0627\u0644\u0635\u0639\u0648\u0628\u0629: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-1335","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages\/1335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/comments?post=1335"}],"version-history":[{"count":13,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages\/1335\/revisions"}],"predecessor-version":[{"id":1695,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages\/1335\/revisions\/1695"}],"wp:attachment":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/media?parent=1335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}