{"id":200,"date":"2026-06-09T05:48:42","date_gmt":"2026-06-09T05:48:42","guid":{"rendered":"https:\/\/news.orghub.in\/?page_id=200"},"modified":"2026-06-09T05:59:18","modified_gmt":"2026-06-09T05:59:18","slug":"reminder","status":"publish","type":"page","link":"https:\/\/news.orghub.in\/index.php\/reminder\/","title":{"rendered":"Reminder"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Reminder \u2014 Personal Notes<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@400;700&#038;family=DM+Sans:wght@300;400;500&#038;display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --bg: #0f0e0c;\n    --surface: #1a1916;\n    --surface2: #242220;\n    --border: #2e2c29;\n    --gold: #c9a84c;\n    --gold2: #e8c97a;\n    --text: #f0ece3;\n    --muted: #7a7368;\n    --danger: #c0392b;\n    --success: #27ae60;\n    --radius: 12px;\n  }\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n  body {\n    background: var(--bg);\n    color: var(--text);\n    font-family: 'DM Sans', sans-serif;\n    min-height: 100vh;\n    font-size: 15px;\n  }\n\n  \/* \u2500\u2500 SCREEN SYSTEM \u2500\u2500 *\/\n  .screen { display: none; min-height: 100vh; }\n  .screen.active { display: flex; flex-direction: column; }\n\n  \/* \u2500\u2500 LOGIN SCREEN \u2500\u2500 *\/\n  #loginScreen {\n    align-items: center;\n    justify-content: center;\n    background: radial-gradient(ellipse at 50% 0%, #1e1a0e 0%, #0f0e0c 70%);\n    padding: 24px;\n  }\n  .login-box {\n    width: 100%;\n    max-width: 380px;\n    background: var(--surface);\n    border: 1px solid var(--border);\n    border-radius: 20px;\n    padding: 40px 32px;\n    text-align: center;\n  }\n  .app-logo {\n    font-family: 'Playfair Display', serif;\n    font-size: 36px;\n    color: var(--gold);\n    letter-spacing: 2px;\n    margin-bottom: 6px;\n  }\n  .app-tagline { color: var(--muted); font-size: 13px; margin-bottom: 32px; }\n  .field-label { text-align: left; font-size: 12px; color: var(--muted); margin-bottom: 6px; letter-spacing: 1px; text-transform: uppercase; }\n  .field-input {\n    width: 100%;\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    border-radius: var(--radius);\n    color: var(--text);\n    padding: 12px 14px;\n    font-size: 15px;\n    font-family: 'DM Sans', sans-serif;\n    outline: none;\n    transition: border-color 0.2s;\n    margin-bottom: 16px;\n  }\n  .field-input:focus { border-color: var(--gold); }\n  .btn-primary {\n    width: 100%;\n    background: var(--gold);\n    color: #0f0e0c;\n    border: none;\n    border-radius: var(--radius);\n    padding: 13px;\n    font-size: 15px;\n    font-weight: 600;\n    cursor: pointer;\n    font-family: 'DM Sans', sans-serif;\n    transition: background 0.2s, transform 0.1s;\n  }\n  .btn-primary:hover { background: var(--gold2); }\n  .btn-primary:active { transform: scale(0.98); }\n  .error-msg { color: #e74c3c; font-size: 13px; margin-top: 10px; min-height: 18px; }\n  .setup-note { font-size: 12px; color: var(--muted); margin-top: 20px; line-height: 1.6; }\n  .setup-note a { color: var(--gold); text-decoration: none; }\n\n  \/* \u2500\u2500 MAIN APP \u2500\u2500 *\/\n  #appScreen { background: var(--bg); }\n\n  \/* Header *\/\n  .app-header {\n    background: var(--surface);\n    border-bottom: 1px solid var(--border);\n    padding: 14px 16px;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    position: sticky;\n    top: 0;\n    z-index: 100;\n  }\n  .header-title {\n    font-family: 'Playfair Display', serif;\n    font-size: 22px;\n    color: var(--gold);\n    flex: 1;\n  }\n  .header-btn {\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    color: var(--text);\n    border-radius: 8px;\n    padding: 7px 12px;\n    font-size: 13px;\n    cursor: pointer;\n    font-family: 'DM Sans', sans-serif;\n    transition: border-color 0.2s;\n  }\n  .header-btn:hover { border-color: var(--gold); color: var(--gold); }\n\n  \/* Tabs *\/\n  .tabs {\n    display: flex;\n    background: var(--surface);\n    border-bottom: 1px solid var(--border);\n  }\n  .tab {\n    flex: 1;\n    padding: 12px;\n    text-align: center;\n    font-size: 13px;\n    cursor: pointer;\n    color: var(--muted);\n    border-bottom: 2px solid transparent;\n    transition: all 0.2s;\n  }\n  .tab.active { color: var(--gold); border-bottom-color: var(--gold); }\n\n  \/* Tab content *\/\n  .tab-content { display: none; flex: 1; overflow-y: auto; padding: 16px; }\n  .tab-content.active { display: block; }\n\n  \/* \u2500\u2500 ADD NOTE TAB \u2500\u2500 *\/\n  .note-card {\n    background: var(--surface);\n    border: 1px solid var(--border);\n    border-radius: var(--radius);\n    padding: 16px;\n    margin-bottom: 16px;\n  }\n  .note-card h3 { font-size: 13px; color: var(--muted); letter-spacing: 1px; text-transform: uppercase; margin-bottom: 12px; }\n  textarea.field-input {\n    resize: vertical;\n    min-height: 120px;\n    margin-bottom: 0;\n  }\n  .voice-btn {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    color: var(--text);\n    border-radius: var(--radius);\n    padding: 10px 16px;\n    font-size: 14px;\n    cursor: pointer;\n    font-family: 'DM Sans', sans-serif;\n    transition: all 0.2s;\n    margin-top: 10px;\n    width: 100%;\n    justify-content: center;\n  }\n  .voice-btn:hover { border-color: var(--gold); }\n  .voice-btn.recording { border-color: #e74c3c; color: #e74c3c; animation: pulse 1s infinite; }\n  @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.6} }\n  .mic-icon { font-size: 18px; }\n\n  .tags-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }\n  .tag-chip {\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    border-radius: 20px;\n    padding: 5px 12px;\n    font-size: 12px;\n    cursor: pointer;\n    transition: all 0.2s;\n  }\n  .tag-chip.selected { background: var(--gold); color: #0f0e0c; border-color: var(--gold); font-weight: 600; }\n  .custom-tag-row { display: flex; gap: 8px; margin-top: 8px; }\n  .custom-tag-row .field-input { margin-bottom: 0; flex: 1; }\n  .btn-small {\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    color: var(--text);\n    border-radius: 8px;\n    padding: 8px 14px;\n    font-size: 13px;\n    cursor: pointer;\n    font-family: 'DM Sans', sans-serif;\n    white-space: nowrap;\n  }\n  .btn-small:hover { border-color: var(--gold); color: var(--gold); }\n\n  .save-btn {\n    width: 100%;\n    background: var(--gold);\n    color: #0f0e0c;\n    border: none;\n    border-radius: var(--radius);\n    padding: 14px;\n    font-size: 16px;\n    font-weight: 700;\n    cursor: pointer;\n    font-family: 'DM Sans', sans-serif;\n    transition: background 0.2s;\n    margin-top: 4px;\n  }\n  .save-btn:hover { background: var(--gold2); }\n  .save-status { text-align: center; font-size: 13px; color: var(--success); margin-top: 8px; min-height: 18px; }\n\n  \/* \u2500\u2500 SEARCH TAB \u2500\u2500 *\/\n  .search-box-wrap { position: relative; margin-bottom: 12px; }\n  .search-box-wrap .field-input { padding-right: 44px; margin-bottom: 0; }\n  .search-icon { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font-size: 18px; color: var(--muted); pointer-events: none; }\n  .ai-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    background: linear-gradient(135deg, #1a1505, #2a2008);\n    border: 1px solid var(--gold);\n    border-radius: 20px;\n    padding: 4px 12px;\n    font-size: 11px;\n    color: var(--gold);\n    margin-bottom: 12px;\n  }\n  .filter-row { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }\n  .filter-chip {\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    border-radius: 20px;\n    padding: 5px 12px;\n    font-size: 12px;\n    cursor: pointer;\n    transition: all 0.2s;\n    color: var(--muted);\n  }\n  .filter-chip.active { background: var(--surface); border-color: var(--gold); color: var(--gold); }\n\n  \/* Note list *\/\n  .note-item {\n    background: var(--surface);\n    border: 1px solid var(--border);\n    border-radius: var(--radius);\n    padding: 14px;\n    margin-bottom: 10px;\n    cursor: pointer;\n    transition: border-color 0.2s;\n    position: relative;\n  }\n  .note-item:hover { border-color: var(--gold); }\n  .note-meta { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }\n  .note-page { font-size: 11px; color: var(--gold); font-weight: 600; letter-spacing: 1px; }\n  .note-date { font-size: 11px; color: var(--muted); }\n  .note-tag-badge {\n    font-size: 10px;\n    background: var(--surface2);\n    border: 1px solid var(--border);\n    border-radius: 10px;\n    padding: 2px 8px;\n    color: var(--muted);\n  }\n  .note-text { font-size: 14px; line-height: 1.5; color: var(--text); }\n  .note-text-preview { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n  .note-delete {\n    position: absolute;\n    top: 10px; right: 10px;\n    background: none;\n    border: none;\n    color: var(--muted);\n    cursor: pointer;\n    font-size: 16px;\n    padding: 4px;\n    transition: color 0.2s;\n  }\n  .note-delete:hover { color: var(--danger); }\n  .no-notes { text-align: center; color: var(--muted); padding: 40px 20px; font-size: 14px; }\n  .ai-result-label { font-size: 12px; color: var(--gold); margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }\n\n  \/* \u2500\u2500 NOTE DETAIL MODAL \u2500\u2500 *\/\n  .modal-overlay {\n    display: none;\n    position: fixed;\n    inset: 0;\n    background: rgba(0,0,0,0.8);\n    z-index: 200;\n    align-items: flex-end;\n    justify-content: center;\n  }\n  .modal-overlay.open { display: flex; }\n  .modal-box {\n    background: var(--surface);\n    border: 1px solid var(--border);\n    border-radius: 20px 20px 0 0;\n    width: 100%;\n    max-width: 600px;\n    max-height: 80vh;\n    overflow-y: auto;\n    padding: 24px;\n    animation: slideUp 0.3s ease;\n  }\n  @keyframes slideUp { from{transform:translateY(100%)} to{transform:translateY(0)} }\n  .modal-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 16px; }\n  .modal-close { background: none; border: none; color: var(--muted); font-size: 22px; cursor: pointer; }\n  .modal-body { font-size: 15px; line-height: 1.7; color: var(--text); white-space: pre-wrap; }\n\n  \/* \u2500\u2500 RECENT TAB \u2500\u2500 *\/\n  .section-title { font-size: 12px; color: var(--muted); letter-spacing: 1px; text-transform: uppercase; margin-bottom: 12px; }\n\n  \/* \u2500\u2500 SETTINGS \u2500\u2500 *\/\n  .settings-item {\n    background: var(--surface);\n    border: 1px solid var(--border);\n    border-radius: var(--radius);\n    padding: 16px;\n    margin-bottom: 10px;\n  }\n  .settings-item label { font-size: 12px; color: var(--muted); letter-spacing: 1px; text-transform: uppercase; display: block; margin-bottom: 8px; }\n  .settings-save { color: var(--success); font-size: 13px; margin-top: 8px; min-height: 18px; }\n\n  \/* Loading spinner *\/\n  .spinner {\n    display: inline-block;\n    width: 16px; height: 16px;\n    border: 2px solid var(--border);\n    border-top-color: var(--gold);\n    border-radius: 50%;\n    animation: spin 0.7s linear infinite;\n    vertical-align: middle;\n    margin-right: 6px;\n  }\n  @keyframes spin { to { transform: rotate(360deg); } }\n\n  \/* Highlight *\/\n  mark { background: rgba(201,168,76,0.25); color: var(--gold2); border-radius: 3px; padding: 0 2px; }\n\n  \/* Responsive *\/\n  @media(min-width: 600px) {\n    .tab-content { max-width: 600px; margin: 0 auto; }\n    .app-header { max-width: 600px; margin: 0 auto; width: 100%; }\n    .tabs { max-width: 600px; margin: 0 auto; }\n  }\n\n  \/* Scrollbar *\/\n  ::-webkit-scrollbar { width: 4px; }\n  ::-webkit-scrollbar-track { background: var(--bg); }\n  ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n<\/style>\n<\/head>\n<body>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 LOGIN SCREEN \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"loginScreen\" class=\"screen active\">\n  <div class=\"login-box\">\n    <div class=\"app-logo\">Reminder<\/div>\n    <div class=\"app-tagline\">Your private personal notes<\/div>\n\n    <div id=\"setupSection\">\n      <div class=\"field-label\">Groq API Key<\/div>\n      <input type=\"password\" class=\"field-input\" id=\"setupApiKey\" placeholder=\"gsk_...your key here\">\n      <div class=\"field-label\">Set Your Password<\/div>\n      <input type=\"password\" class=\"field-input\" id=\"setupPassword\" placeholder=\"Choose a password\">\n      <div class=\"field-label\">Confirm Password<\/div>\n      <input type=\"password\" class=\"field-input\" id=\"setupPassword2\" placeholder=\"Repeat password\">\n      <button class=\"btn-primary\" onclick=\"setupApp()\">Save &#038; Continue<\/button>\n      <div class=\"setup-note\">First time setup. Get free API key at <a href=\"https:\/\/console.groq.com\" target=\"_blank\">console.groq.com<\/a><\/div>\n    <\/div>\n\n    <div id=\"loginSection\" style=\"display:none\">\n      <div class=\"field-label\">Password<\/div>\n      <input type=\"password\" class=\"field-input\" id=\"loginPassword\" placeholder=\"Enter your password\" onkeydown=\"if(event.key==='Enter')login()\">\n      <button class=\"btn-primary\" onclick=\"login()\">Unlock<\/button>\n    <\/div>\n\n    <div class=\"error-msg\" id=\"loginError\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 MAIN APP \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div id=\"appScreen\" class=\"screen\">\n\n  <div class=\"app-header\">\n    <div class=\"header-title\">Reminder<\/div>\n    <button class=\"header-btn\" onclick=\"showTab('settingsTab')\">\u2699\ufe0f Settings<\/button>\n    <button class=\"header-btn\" onclick=\"logout()\">Lock<\/button>\n  <\/div>\n\n  <div class=\"tabs\">\n    <div class=\"tab active\" onclick=\"showTab('addTab')\" id=\"tab-addTab\">\u270f\ufe0f Add<\/div>\n    <div class=\"tab\" onclick=\"showTab('searchTab')\" id=\"tab-searchTab\">\ud83d\udd0d Search<\/div>\n    <div class=\"tab\" onclick=\"showTab('recentTab')\" id=\"tab-recentTab\">\ud83d\udd50 Recent<\/div>\n    <div class=\"tab\" onclick=\"showTab('settingsTab')\" id=\"tab-settingsTab\">\u2699\ufe0f<\/div>\n  <\/div>\n\n  <!-- ADD TAB -->\n  <div class=\"tab-content active\" id=\"addTab\">\n    <div class=\"note-card\">\n      <h3>Write Your Note<\/h3>\n      <textarea class=\"field-input\" id=\"noteText\" placeholder=\"Type your note here...\"><\/textarea>\n      <button class=\"voice-btn\" id=\"voiceBtn\" onclick=\"toggleVoice()\">\n        <span class=\"mic-icon\">\ud83c\udfa4<\/span>\n        <span id=\"voiceBtnText\">Tap to Record Voice<\/span>\n      <\/button>\n    <\/div>\n\n    <div class=\"note-card\">\n      <h3>Tag \/ Category<\/h3>\n      <div class=\"tags-row\" id=\"tagsRow\">\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Health')\">Health<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Business')\">Business<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Family')\">Family<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Finance')\">Finance<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Personal')\">Personal<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Work')\">Work<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Idea')\">Idea<\/div>\n        <div class=\"tag-chip\" onclick=\"toggleTag(this,'Reminder')\">Reminder<\/div>\n      <\/div>\n      <div class=\"custom-tag-row\">\n        <input class=\"field-input\" id=\"customTagInput\" placeholder=\"Add custom tag...\" style=\"margin-bottom:0\">\n        <button class=\"btn-small\" onclick=\"addCustomTag()\">+ Add<\/button>\n      <\/div>\n    <\/div>\n\n    <button class=\"save-btn\" onclick=\"saveNote()\">\ud83d\udcbe Save Note<\/button>\n    <div class=\"save-status\" id=\"saveStatus\"><\/div>\n  <\/div>\n\n  <!-- SEARCH TAB -->\n  <div class=\"tab-content\" id=\"searchTab\">\n    <div class=\"ai-badge\">\u2728 Groq AI Search \u2014 type anything you remember<\/div>\n    <div class=\"search-box-wrap\">\n      <input class=\"field-input\" id=\"searchInput\" placeholder=\"e.g. doctor meeting last year...\" oninput=\"liveSearch()\" style=\"margin-bottom:0\">\n      <span class=\"search-icon\">\ud83d\udd0d<\/span>\n    <\/div>\n    <button class=\"btn-primary\" onclick=\"aiSearch()\" style=\"margin-bottom:14px\">\ud83e\udd16 AI Smart Search<\/button>\n\n    <div class=\"filter-row\" id=\"filterRow\">\n      <div class=\"filter-chip active\" onclick=\"setFilter(this,'all')\">All<\/div>\n      <div class=\"filter-chip\" onclick=\"setFilter(this,'today')\">Today<\/div>\n      <div class=\"filter-chip\" onclick=\"setFilter(this,'week')\">This Week<\/div>\n      <div class=\"filter-chip\" onclick=\"setFilter(this,'month')\">This Month<\/div>\n    <\/div>\n\n    <div id=\"searchResults\"><\/div>\n  <\/div>\n\n  <!-- RECENT TAB -->\n  <div class=\"tab-content\" id=\"recentTab\">\n    <div class=\"section-title\">Last 20 Notes<\/div>\n    <div id=\"recentList\"><\/div>\n  <\/div>\n\n  <!-- SETTINGS TAB -->\n  <div class=\"tab-content\" id=\"settingsTab\">\n    <div class=\"settings-item\">\n      <label>Groq API Key<\/label>\n      <input type=\"password\" class=\"field-input\" id=\"settingsApiKey\" placeholder=\"gsk_...\">\n      <button class=\"btn-small\" onclick=\"saveSettings('api')\">Update Key<\/button>\n      <div class=\"settings-save\" id=\"apiSaveMsg\"><\/div>\n    <\/div>\n    <div class=\"settings-item\">\n      <label>Change Password<\/label>\n      <input type=\"password\" class=\"field-input\" id=\"newPass1\" placeholder=\"New password\">\n      <input type=\"password\" class=\"field-input\" id=\"newPass2\" placeholder=\"Confirm new password\">\n      <button class=\"btn-small\" onclick=\"saveSettings('pass')\">Update Password<\/button>\n      <div class=\"settings-save\" id=\"passSaveMsg\"><\/div>\n    <\/div>\n    <div class=\"settings-item\">\n      <label>App Info<\/label>\n      <div style=\"color:var(--muted);font-size:13px;line-height:1.8\">\n        Total Notes: <span id=\"totalNotes\" style=\"color:var(--gold)\">0<\/span><br>\n        Data stored on your device only<br>\n        AI powered by Groq (free)\n      <\/div>\n    <\/div>\n    <div class=\"settings-item\" style=\"border-color:#c0392b22\">\n      <label style=\"color:#e74c3c\">Danger Zone<\/label>\n      <button class=\"btn-small\" style=\"border-color:#e74c3c;color:#e74c3c\" onclick=\"clearAllData()\">\ud83d\uddd1\ufe0f Delete All Notes<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- NOTE DETAIL MODAL -->\n<div class=\"modal-overlay\" id=\"noteModal\" onclick=\"closeModal(event)\">\n  <div class=\"modal-box\">\n    <div class=\"modal-header\">\n      <div>\n        <div class=\"note-meta\" id=\"modalMeta\"><\/div>\n      <\/div>\n      <button class=\"modal-close\" onclick=\"closeModal()\">\u2715<\/button>\n    <\/div>\n    <div class=\"modal-body\" id=\"modalBody\"><\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  STATE & STORAGE\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nlet notes = [];\nlet selectedTags = [];\nlet currentFilter = 'all';\nlet recognition = null;\nlet isRecording = false;\n\nfunction loadNotes() {\n  try { notes = JSON.parse(localStorage.getItem('rmndr_notes') || '[]'); } catch(e) { notes = []; }\n}\nfunction saveNotes() {\n  localStorage.setItem('rmndr_notes', JSON.stringify(notes));\n}\nfunction getHash(str) {\n  let hash = 0;\n  for (let i = 0; i < str.length; i++) {\n    hash = ((hash << 5) - hash) + str.charCodeAt(i);\n    hash |= 0;\n  }\n  return hash.toString(36);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  SETUP &#038; LOGIN\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nwindow.onload = function() {\n  const hasSetup = localStorage.getItem('rmndr_pw');\n  if (hasSetup) {\n    document.getElementById('setupSection').style.display = 'none';\n    document.getElementById('loginSection').style.display = 'block';\n    setTimeout(() => document.getElementById('loginPassword').focus(), 100);\n  }\n};\n\nfunction setupApp() {\n  const key = document.getElementById('setupApiKey').value.trim();\n  const pw = document.getElementById('setupPassword').value;\n  const pw2 = document.getElementById('setupPassword2').value;\n  const err = document.getElementById('loginError');\n  if (!key) return err.textContent = 'Please enter your Groq API key';\n  if (!pw) return err.textContent = 'Please set a password';\n  if (pw !== pw2) return err.textContent = 'Passwords do not match';\n  localStorage.setItem('rmndr_pw', getHash(pw));\n  localStorage.setItem('rmndr_key', btoa(key));\n  err.textContent = '';\n  enterApp();\n}\n\nfunction login() {\n  const pw = document.getElementById('loginPassword').value;\n  const stored = localStorage.getItem('rmndr_pw');\n  const err = document.getElementById('loginError');\n  if (getHash(pw) !== stored) {\n    err.textContent = 'Wrong password. Try again.';\n    document.getElementById('loginPassword').value = '';\n    return;\n  }\n  enterApp();\n}\n\nfunction enterApp() {\n  document.getElementById('loginScreen').classList.remove('active');\n  document.getElementById('appScreen').classList.add('active');\n  loadNotes();\n  renderRecent();\n  renderSearch('');\n  document.getElementById('totalNotes').textContent = notes.length;\n  const stored = localStorage.getItem('rmndr_key');\n  if (stored) document.getElementById('settingsApiKey').value = atob(stored);\n}\n\nfunction logout() {\n  document.getElementById('appScreen').classList.remove('active');\n  document.getElementById('loginScreen').classList.add('active');\n  document.getElementById('loginPassword').value = '';\n  document.getElementById('loginError').textContent = '';\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  TABS\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction showTab(id) {\n  document.querySelectorAll('.tab-content').forEach(t => t.classList.remove('active'));\n  document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));\n  document.getElementById(id).classList.add('active');\n  document.getElementById('tab-' + id).classList.add('active');\n  if (id === 'recentTab') renderRecent();\n  if (id === 'searchTab') renderSearch(document.getElementById('searchInput').value);\n  if (id === 'settingsTab') document.getElementById('totalNotes').textContent = notes.length;\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  ADD NOTE\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction toggleTag(el, tag) {\n  el.classList.toggle('selected');\n  if (selectedTags.includes(tag)) {\n    selectedTags = selectedTags.filter(t => t !== tag);\n  } else {\n    selectedTags.push(tag);\n  }\n}\n\nfunction addCustomTag() {\n  const input = document.getElementById('customTagInput');\n  const tag = input.value.trim();\n  if (!tag) return;\n  const row = document.getElementById('tagsRow');\n  const chip = document.createElement('div');\n  chip.className = 'tag-chip selected';\n  chip.textContent = tag;\n  chip.onclick = function() { toggleTag(chip, tag); };\n  row.appendChild(chip);\n  selectedTags.push(tag);\n  input.value = '';\n}\n\nfunction saveNote() {\n  const text = document.getElementById('noteText').value.trim();\n  if (!text) {\n    document.getElementById('saveStatus').textContent = '\u26a0\ufe0f Please write something first';\n    document.getElementById('saveStatus').style.color = '#e74c3c';\n    return;\n  }\n  const now = new Date();\n  const pageNum = notes.length + 1;\n  const lines = text.split('\\n');\n  const note = {\n    id: Date.now(),\n    page: pageNum,\n    date: now.toLocaleDateString('en-GB'),\n    time: now.toLocaleTimeString('en-GB', {hour:'2-digit',minute:'2-digit'}),\n    dateObj: now.toISOString(),\n    tags: [...selectedTags],\n    text: text,\n    lines: lines.length\n  };\n  notes.push(note);\n  saveNotes();\n  document.getElementById('saveStatus').style.color = '#27ae60';\n  document.getElementById('saveStatus').textContent = \u2713 Saved as Page ${pageNum} \u2014 ${note.date};\n  document.getElementById('noteText').value = '';\n  selectedTags = [];\n  document.querySelectorAll('.tag-chip').forEach(c => c.classList.remove('selected'));\n  document.getElementById('totalNotes').textContent = notes.length;\n  setTimeout(() => document.getElementById('saveStatus').textContent = '', 3000);\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  VOICE INPUT\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction toggleVoice() {\n  if (!('webkitSpeechRecognition' in window || 'SpeechRecognition' in window)) {\n    alert('Voice not supported in this browser. Try Chrome on Android.');\n    return;\n  }\n  if (isRecording) {\n    recognition.stop();\n    return;\n  }\n  const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;\n  recognition = new SpeechRecognition();\n  recognition.continuous = true;\n  recognition.interimResults = true;\n  recognition.lang = 'en-US';\n  recognition.onstart = () => {\n    isRecording = true;\n    document.getElementById('voiceBtn').classList.add('recording');\n    document.getElementById('voiceBtnText').textContent = '\ud83d\udd34 Recording... Tap to Stop';\n  };\n  recognition.onresult = (e) => {\n    let transcript = '';\n    for (let i = 0; i < e.results.length; i++) {\n      transcript += e.results[i][0].transcript;\n    }\n    document.getElementById('noteText').value = transcript;\n  };\n  recognition.onend = () => {\n    isRecording = false;\n    document.getElementById('voiceBtn').classList.remove('recording');\n    document.getElementById('voiceBtnText').textContent = 'Tap to Record Voice';\n  };\n  recognition.start();\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  SEARCH\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction liveSearch() {\n  const q = document.getElementById('searchInput').value.trim();\n  renderSearch(q);\n}\n\nfunction setFilter(el, val) {\n  currentFilter = val;\n  document.querySelectorAll('.filter-chip').forEach(c => c.classList.remove('active'));\n  el.classList.add('active');\n  renderSearch(document.getElementById('searchInput').value.trim());\n}\n\nfunction filterByDate(note) {\n  if (currentFilter === 'all') return true;\n  const d = new Date(note.dateObj);\n  const now = new Date();\n  if (currentFilter === 'today') {\n    return d.toDateString() === now.toDateString();\n  }\n  if (currentFilter === 'week') {\n    const week = new Date(now); week.setDate(now.getDate() - 7);\n    return d >= week;\n  }\n  if (currentFilter === 'month') {\n    return d.getMonth() === now.getMonth() && d.getFullYear() === now.getFullYear();\n  }\n  return true;\n}\n\nfunction renderSearch(q) {\n  const container = document.getElementById('searchResults');\n  let filtered = notes.filter(filterByDate);\n  if (q) {\n    const ql = q.toLowerCase();\n    filtered = filtered.filter(n =>\n      n.text.toLowerCase().includes(ql) ||\n      n.tags.some(t => t.toLowerCase().includes(ql)) ||\n      n.date.includes(ql) ||\n      String(n.page).includes(ql)\n    );\n  }\n  filtered = [...filtered].reverse();\n  if (!filtered.length) {\n    container.innerHTML = <div class=\"no-notes\">${q ? '\ud83d\udd0d No notes found. Try AI Search above.' : '\ud83d\udcdd No notes yet. Add your first note!'}<\/div>;\n    return;\n  }\n  container.innerHTML = filtered.map(n => noteHTML(n, q)).join('');\n}\n\nfunction noteHTML(n, highlight = '') {\n  let preview = n.text;\n  if (highlight) {\n    const re = new RegExp((${highlight.replace(\/[.*+?^${}()|[\\]\\\\]\/g,'\\\\$&')}), 'gi');\n    preview = preview.replace(re, '<mark>$1<\/mark>');\n  }\n  const tagsHTML = n.tags.map(t => <span class=\"note-tag-badge\">${t}<\/span>).join('');\n  return `\n    <div class=\"note-item\" onclick=\"openNote(${n.id})\">\n      <button class=\"note-delete\" onclick=\"event.stopPropagation();deleteNote(${n.id})\">\ud83d\uddd1\ufe0f<\/button>\n      <div class=\"note-meta\">\n        <span class=\"note-page\">Page ${n.page}<\/span>\n        <span class=\"note-date\">${n.date} ${n.time}<\/span>\n        ${tagsHTML}\n      <\/div>\n      <div class=\"note-text note-text-preview\">${preview}<\/div>\n    <\/div>`;\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  AI SEARCH (GROQ)\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nasync function aiSearch() {\n  const q = document.getElementById('searchInput').value.trim();\n  if (!q) return alert('Please type what you are looking for first.');\n  const keyEnc = localStorage.getItem('rmndr_key');\n  if (!keyEnc) return alert('Please add your Groq API key in Settings first.');\n  const apiKey = atob(keyEnc);\n  const container = document.getElementById('searchResults');\n  container.innerHTML = <div class=\"no-notes\"><span class=\"spinner\"><\/span> AI is searching your notes...<\/div>;\n  const notesContext = notes.slice(-200).map(n =>\n    [Page ${n.page}, ${n.date}] ${n.text.substring(0,200)}\n  ).join('\\n');\n  const prompt = `You are a personal notes assistant. The user is searching for: \"${q}\"\nHere are their notes:\n${notesContext}\n\nReturn ONLY a JSON array of page numbers that are most relevant, like: [5, 12, 3]\nIf nothing matches, return []. No explanation, just the JSON array.`;\n\n  try {\n    const res = await fetch('https:\/\/api.groq.com\/openai\/v1\/chat\/completions', {\n      method: 'POST',\n      headers: {\n        'Authorization': Bearer ${apiKey},\n        'Content-Type': 'application\/json'\n      },\n      body: JSON.stringify({\n        model: 'llama-3.1-8b-instant',\n        messages: [{ role: 'user', content: prompt }],\n        max_tokens: 200,\n        temperature: 0.1\n      })\n    });\n    const data = await res.json();\n    if (data.error) throw new Error(data.error.message);\n    const text = data.choices[0].message.content.trim();\n    const match = text.match(\/\\[[\\d,\\s]*\\]\/);\n    const pages = match ? JSON.parse(match[0]) : [];\n    if (!pages.length) {\n      container.innerHTML = <div class=\"no-notes\">\ud83e\udd16 AI couldn't find matching notes. Try different words.<\/div>;\n      return;\n    }\n    const results = pages.map(p => notes.find(n => n.page === p)).filter(Boolean);\n    container.innerHTML = <div class=\"ai-result-label\">\u2728 AI found ${results.length} relevant note${results.length>1?'s':''}<\/div> +\n      results.map(n => noteHTML(n, q)).join('');\n  } catch(e) {\n    container.innerHTML = <div class=\"no-notes\" style=\"color:#e74c3c\">\u26a0\ufe0f AI error: ${e.message}<br><br>Check your API key in Settings.<\/div>;\n  }\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  RECENT\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction renderRecent() {\n  const list = document.getElementById('recentList');\n  const recent = [...notes].reverse().slice(0, 20);\n  if (!recent.length) {\n    list.innerHTML = '<div class=\"no-notes\">No notes yet. Start adding!<\/div>';\n    return;\n  }\n  list.innerHTML = recent.map(n => noteHTML(n)).join('');\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  NOTE DETAIL\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction openNote(id) {\n  const n = notes.find(n => n.id === id);\n  if (!n) return;\n  const tagsHTML = n.tags.map(t => <span class=\"note-tag-badge\">${t}<\/span>).join('');\n  document.getElementById('modalMeta').innerHTML = `\n    <span class=\"note-page\">Page ${n.page}<\/span>\n    <span class=\"note-date\">${n.date} at ${n.time}<\/span>\n    ${tagsHTML}`;\n  document.getElementById('modalBody').textContent = n.text;\n  document.getElementById('noteModal').classList.add('open');\n}\n\nfunction closeModal(e) {\n  if (!e || e.target === document.getElementById('noteModal')) {\n    document.getElementById('noteModal').classList.remove('open');\n  }\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  DELETE\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction deleteNote(id) {\n  if (!confirm('Delete this note?')) return;\n  notes = notes.filter(n => n.id !== id);\n  saveNotes();\n  renderSearch(document.getElementById('searchInput').value);\n  renderRecent();\n  document.getElementById('totalNotes').textContent = notes.length;\n}\n\nfunction clearAllData() {\n  if (!confirm('Delete ALL notes? This cannot be undone.')) return;\n  notes = [];\n  saveNotes();\n  renderSearch('');\n  renderRecent();\n  document.getElementById('totalNotes').textContent = 0;\n  alert('All notes deleted.');\n}\n\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/  SETTINGS\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nfunction saveSettings(type) {\n  if (type === 'api') {\n    const key = document.getElementById('settingsApiKey').value.trim();\n    if (!key) return;\n    localStorage.setItem('rmndr_key', btoa(key));\n    document.getElementById('apiSaveMsg').textContent = '\u2713 API key updated';\n    setTimeout(() => document.getElementById('apiSaveMsg').textContent = '', 2000);\n  }\n  if (type === 'pass') {\n    const p1 = document.getElementById('newPass1').value;\n    const p2 = document.getElementById('newPass2').value;\n    if (!p1) return;\n    if (p1 !== p2) {\n      document.getElementById('passSaveMsg').textContent = '\u26a0\ufe0f Passwords do not match';\n      document.getElementById('passSaveMsg').style.color = '#e74c3c';\n      return;\n    }\n    localStorage.setItem('rmndr_pw', getHash(p1));\n    document.getElementById('passSaveMsg').style.color = '#27ae60';\n    document.getElementById('passSaveMsg').textContent = '\u2713 Password updated';\n    document.getElementById('newPass1').value = '';\n    document.getElementById('newPass2').value = '';\n    setTimeout(() => document.getElementById('passSaveMsg').textContent = '', 2000);\n  }\n}\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Reminder \u2014 Personal Notes Reminder Your private personal notes Groq API Key Set Your Password Confirm Password Save &#038; Continue First time setup. Get free API key at console.groq.com Password Unlock Reminder \u2699\ufe0f Settings Lock \u270f\ufe0f Add \ud83d\udd0d Search \ud83d\udd50 Recent \u2699\ufe0f Write Your Note \ud83c\udfa4 Tap to Record Voice Tag \/ Category Health Business<a class=\"more-link\" href=\"https:\/\/news.orghub.in\/index.php\/reminder\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Reminder&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-200","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/pages\/200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/comments?post=200"}],"version-history":[{"count":2,"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/pages\/200\/revisions"}],"predecessor-version":[{"id":202,"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/pages\/200\/revisions\/202"}],"wp:attachment":[{"href":"https:\/\/news.orghub.in\/index.php\/wp-json\/wp\/v2\/media?parent=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}