{"id":827,"date":"2026-07-23T15:53:43","date_gmt":"2026-07-23T15:53:43","guid":{"rendered":"https:\/\/victimsrightsprotectiontrust.com\/?page_id=827"},"modified":"2026-07-23T15:54:38","modified_gmt":"2026-07-23T15:54:38","slug":"id-cell","status":"publish","type":"page","link":"https:\/\/victimsrightsprotectiontrust.com\/?page_id=827","title":{"rendered":"ID CELL"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"827\" class=\"elementor elementor-827\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b021dcb e-flex e-con-boxed e-con e-parent\" data-id=\"b021dcb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-60a198b elementor-widget elementor-widget-shortcode\" data-id=\"60a198b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"bjp-md-app\" data-handler=\"https:\/\/victimsrightsprotectiontrust.com\/wp-content\/plugins\/BJPID\/handler.php\">\n        <div class=\"bjpmd-loading\">Loading... \/ \u0c32\u0c4b\u0c21\u0c4d \u0c05\u0c35\u0c41\u0c24\u0c4b\u0c02\u0c26\u0c3f...<\/div>\n    <\/div>\n\n    <style>\n        #bjp-md-app, #bjp-md-app * { box-sizing: border-box; }\n        #bjp-md-app {\n            font-family: 'Segoe UI', 'Nirmala UI', Arial, sans-serif;\n            max-width: 1100px;\n            margin: 0 auto;\n            background: #FFFDF8;\n            border: 1px solid #F0D9B5;\n            border-radius: 10px;\n            overflow: hidden;\n            box-shadow: 0 2px 14px rgba(180,35,26,0.08);\n        }\n        .bjpmd-topbar {\n            background: linear-gradient(90deg, #FF9933 0%, #FFB35C 55%, #FFFFFF 100%);\n            padding: 14px 20px;\n            display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px;\n            border-bottom: 3px solid #138808;\n        }\n        .bjpmd-topbar button {\n            background: #fff; color: #B4231A; border: 1.5px solid #B4231A; padding: 7px 14px;\n            border-radius: 6px; font-size: 12.5px; font-weight: 700; cursor: pointer;\n        }\n        .bjpmd-topbar button:hover { background: #B4231A; color: #fff; }\n        .bjpmd-topbar button.active { background: #138808; border-color: #138808; color: #fff; }\n        .bjpmd-brand { text-align: center; color: #7A1F0A; flex: 1; min-width: 260px; }\n        .bjpmd-brand .l1 { font-weight: 800; font-size: 17px; }\n        .bjpmd-brand .l2 { font-weight: 700; font-size: 13px; color: #138808; letter-spacing: .5px; }\n\n        .bjpmd-body { padding: 24px; min-height: 300px; }\n\n        .bjpmd-section-title { color: #B4231A; font-size: 20px; margin: 0 0 16px; border-bottom: 2px solid #FF9933; padding-bottom: 8px; text-align: center; }\n\n        .bjpmd-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 20px; }\n        @media (max-width: 700px) { .bjpmd-form-grid { grid-template-columns: 1fr; } }\n        .bjpmd-field { display: flex; flex-direction: column; gap: 5px; }\n        .bjpmd-field label { font-size: 13px; font-weight: 600; color: #7A1F0A; }\n        .bjpmd-field label .te { color: #138808; font-weight: 500; }\n        .bjpmd-field input, .bjpmd-field select { border: 1.5px solid #F0D9B5; border-radius: 6px; padding: 9px 10px; font-size: 14px; background: #fff; color: #333; }\n        .bjpmd-field input:focus, .bjpmd-field select:focus { outline: none; border-color: #FF9933; }\n        .bjpmd-field.full { grid-column: 1 \/ -1; }\n\n        .bjpmd-form-actions { margin-top: 20px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }\n        .bjpmd-btn { background: #138808; color: #fff; border: none; padding: 11px 26px; border-radius: 6px; font-weight: 700; cursor: pointer; font-size: 14px; }\n        .bjpmd-btn:hover { background: #0e6706; }\n        .bjpmd-btn.secondary { background: #fff; color: #B4231A; border: 1.5px solid #B4231A; }\n        .bjpmd-btn.secondary:hover { background: #FFF3E0; }\n        .bjpmd-btn.danger { background: #B4231A; }\n        .bjpmd-btn.small { padding: 6px 12px; font-size: 12px; border-radius: 5px; }\n\n        .bjpmd-msg { padding: 10px 14px; border-radius: 6px; margin-bottom: 16px; font-size: 13.5px; }\n        .bjpmd-msg.ok { background: #E6F4E1; color: #138808; border: 1px solid #b6e0ab; }\n        .bjpmd-msg.err { background: #FDECEA; color: #B4231A; border: 1px solid #f5c2bd; }\n\n        .bjpmd-acpc-wrap { position: relative; }\n        .bjpmd-acpc-input { width: 100%; border: 1.5px solid #F0D9B5; border-radius: 6px; padding: 9px 10px; font-size: 14px; background: #fff; color: #333; }\n        .bjpmd-acpc-input:focus { outline: none; border-color: #FF9933; }\n        .bjpmd-acpc-suggestions { display: none; position: absolute; z-index: 500; top: 100%; left: 0; right: 0; background: #fff; border: 1.5px solid #FF9933; border-radius: 6px; margin-top: 3px; max-height: 220px; overflow-y: auto; box-shadow: 0 4px 12px rgba(0,0,0,0.12); }\n        .bjpmd-acpc-suggestions.open { display: block; }\n        .bjpmd-acpc-row { display: flex; justify-content: space-between; align-items: center; padding: 7px 10px; border-bottom: 1px solid #FFF3E0; font-size: 13px; }\n        .bjpmd-acpc-row:last-child { border-bottom: none; }\n        .bjpmd-acpc-row span { color: #333; }\n        .bjpmd-acpc-empty { padding: 10px; font-size: 12.5px; color: #999; text-align: center; }\n\n        .bjpmd-photo-row { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }\n        .bjpmd-photo-preview { width: 90px; height: 110px; object-fit: cover; border: 1.5px solid #F0D9B5; border-radius: 6px; background: #fff; }\n        .bjpmd-photo-btns { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }\n        .bjpmd-photo-btns .bjpmd-btn { padding: 6px 12px; font-size: 12px; }\n        .bjpmd-photo-hint { font-size: 11px; color: #888; }\n\n        .bjpmd-login-box { max-width: 440px; margin: 10px auto; background: #fff; border: 1.5px solid #F0D9B5; border-radius: 10px; padding: 26px; }\n        .bjpmd-login-box h3 { color: #B4231A; margin-top: 0; text-align: center; }\n        .bjpmd-tabbar { display: flex; gap: 8px; margin-bottom: 18px; }\n        .bjpmd-tabbar button { flex: 1; padding: 8px; border-radius: 6px; border: 1.5px solid #F0D9B5; background: #FFF8ED; font-weight: 600; color: #7A1F0A; cursor: pointer; font-size: 12.5px; }\n        .bjpmd-tabbar button.active { background: #FF9933; color: #fff; border-color: #FF9933; }\n        .bjpmd-otp-row { display: flex; gap: 8px; justify-content: center; }\n        .bjpmd-otp-row input { text-align: center; letter-spacing: 2px; font-weight: 700; width: 90px; }\n\n        .bjpmd-options-grid { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-top: 20px; }\n        .bjpmd-option-card {\n            width: 160px; background: #fff; border: 1.5px solid #F0D9B5; border-radius: 10px; padding: 20px 10px; text-align: center;\n            cursor: pointer; transition: all .15s;\n        }\n        .bjpmd-option-card:hover { border-color: #FF9933; box-shadow: 0 3px 10px rgba(180,35,26,0.12); }\n        .bjpmd-option-card .ic { font-size: 30px; margin-bottom: 8px; }\n        .bjpmd-option-card .lbl { font-weight: 700; color: #B4231A; font-size: 14px; }\n\n        \/* Modal *\/\n        .bjpmd-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.55); display: flex; align-items: center; justify-content: center; z-index: 99999; padding: 16px; }\n        .bjpmd-modal { background: #fff; border-radius: 10px; max-width: 560px; width: 100%; max-height: 88vh; overflow-y: auto; padding: 24px; border-top: 5px solid #FF9933; }\n        .bjpmd-modal h3 { color: #B4231A; margin-top: 0; text-align: center; }\n        .bjpmd-preview-photo { display: block; margin: 0 auto 14px; width: 110px; height: 135px; object-fit: cover; border: 1.5px solid #F0D9B5; border-radius: 6px; }\n        .bjpmd-preview-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-bottom: 16px; }\n        .bjpmd-preview-table td { padding: 6px 8px; border-bottom: 1px solid #F5E6CC; }\n        .bjpmd-preview-table td:first-child { font-weight: 700; color: #7A1F0A; width: 45%; }\n\n        .bjpmd-stats { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }\n        .bjpmd-stat-box { flex: 1; min-width: 110px; background: #fff; border: 1.5px solid #F0D9B5; border-radius: 8px; padding: 14px; text-align: center; }\n        .bjpmd-stat-box .num { font-size: 24px; font-weight: 800; color: #B4231A; }\n        .bjpmd-stat-box .lbl { font-size: 12px; color: #666; margin-top: 2px; }\n\n        .bjpmd-tabs { display: flex; gap: 8px; margin-bottom: 18px; }\n        .bjpmd-tabs button { padding: 8px 16px; border-radius: 6px 6px 0 0; border: 1.5px solid #F0D9B5; background: #FFF8ED; font-weight: 700; color: #7A1F0A; cursor: pointer; font-size: 13px; }\n        .bjpmd-tabs button.active { background: #FF9933; color: #fff; border-color: #FF9933; }\n\n        .bjpmd-filterbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }\n        .bjpmd-filterbar button { padding: 6px 14px; border-radius: 20px; border: 1.5px solid #F0D9B5; background: #fff; font-size: 12.5px; cursor: pointer; color: #555; }\n        .bjpmd-filterbar button.active { background: #138808; color: #fff; border-color: #138808; }\n        .bjpmd-filterbar input[type=text], .bjpmd-filterbar select { padding: 7px 10px; border-radius: 20px; border: 1.5px solid #F0D9B5; }\n        .bjpmd-filterbar input[type=text] { flex: 1; min-width: 160px; }\n\n        .bjpmd-table-wrap { overflow-x: auto; border: 1px solid #F0D9B5; border-radius: 8px; }\n        table.bjpmd-table { width: 100%; border-collapse: collapse; font-size: 13px; }\n        table.bjpmd-table th { background: #FFF3E0; color: #7A1F0A; padding: 9px 8px; text-align: left; white-space: nowrap; }\n        table.bjpmd-table td { padding: 8px; border-top: 1px solid #F5E6CC; word-break: break-word; font-size: 13px; }\n        table.bjpmd-table tr:hover { background: #FFFBF2; }\n        .bjpmd-badge { padding: 3px 9px; border-radius: 12px; font-size: 11px; font-weight: 700; }\n        .bjpmd-badge.pending { background: #FFF3CD; color: #856404; }\n        .bjpmd-badge.approved { background: #D4EDDA; color: #138808; }\n        .bjpmd-badge.rejected { background: #F8D7DA; color: #B4231A; }\n        .bjpmd-row-actions { display: flex; gap: 5px; flex-wrap: wrap; }\n        .bjpmd-row-actions button { border: none; color: #fff; padding: 4px 9px; border-radius: 4px; font-size: 11px; cursor: pointer; }\n        .bjpmd-btn-approve { background: #138808; }\n        .bjpmd-btn-edit { background: #FF9933; }\n        .bjpmd-btn-delete { background: #B4231A; }\n        .bjpmd-inline-edit { background: #FFFBF2; }\n        .bjpmd-inline-edit td { padding: 12px; }\n        .bjpmd-admin-thumb { width: 34px; height: 42px; object-fit: cover; border-radius: 3px; border: 1px solid #F0D9B5; }\n        .bjpmd-logout-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; flex-wrap: wrap; gap: 10px; }\n\n        .bjpmd-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 16px; }\n        @media (max-width: 900px) { .bjpmd-card-grid { grid-template-columns: repeat(2, 1fr); } }\n        @media (max-width: 600px) { .bjpmd-card-grid { grid-template-columns: 1fr; } }\n        .bjpmd-card-tile { background: #fff; border: 1px solid #F0D9B5; border-radius: 8px; padding: 10px; text-align: center; }\n        .bjpmd-card-tile canvas { width: 100%; height: auto; border-radius: 4px; }\n        .bjpmd-card-tile .bjpmd-btn { margin-top: 8px; }\n\n        #bjp-md-app .bjpmd-empty { text-align: center; padding: 40px; color: #999; }\n        #bjp-md-app .bjpmd-hidden { display: none !important; }\n    <\/style>\n\n    <script>\n    (function() {\n        var root = document.getElementById('bjp-md-app');\n        var HANDLER = root.getAttribute('data-handler');\n\n        var TELANGANA_AC = ['Sirpur','Chennur','Bellampalli','Mancherial','Asifabad','Khanapur','Adilabad','Boath','Nirmal','Mudhole','Armur','Bodhan','Jukkal','Banswada','Yellareddy','Kamareddy','Nizamabad Urban','Nizamabad Rural','Balkonda','Koratla','Jagtial','Dharmapuri','Ramagundam','Manthani','Peddapalle','Karimnagar','Choppadandi','Vemulawada','Sircilla','Manakondur','Huzurabad','Husnabad','Siddipet','Medak','Narayankhed','Andole','Narsapur','Zahirabad','Sangareddy','Patancheru','Dubbak','Gajwel','Medchal','Malkajgiri','Quthbullapur','Kukatpally','Uppal','Ibrahimpatnam','Lal Bahadur Nagar','Maheshwaram','Rajendranagar','Serilingampally','Chevella','Pargi','Vikarabad','Tandur','Musheerabad','Malakpet','Amberpet','Khairatabad','Jubilee Hills','Sanathnagar','Nampally','Karwan','Goshamahal','Charminar','Chandrayangutta','Yakutpura','Bahadurpura','Secunderabad','Secunderabad Cantonment','Kodangal','Narayanpet','Mahbubnagar','Jadcherla','Devarkadra','Makthal','Wanaparthy','Gadwal','Alampur','Nagarkurnool','Achampet','Kalwakurthy','Shadnagar','Kollapur','Devarakonda','Nagarjuna Sagar','Miryalaguda','Huzurnagar','Kodad','Suryapet','Nalgonda','Munugode','Bhongir','Nakrekal','Thungathurthi','Alair','Jangaon','Ghanpur Station','Palakurthi','Dornakal','Mahabubabad','Narsampet','Parkal','Warangal West','Warangal East','Waradhanapet','Bhupalpalle','Mulug','Pinapaka','Yellandu','Khammam','Palair','Madhira','Wyra','Sathupalli','Kothagudem','Aswaraopeta','Bhadrachalam'];\n\n        var TELANGANA_PC = ['Adilabad','Peddapalli','Karimnagar','Nizamabad','Zahirabad','Medak','Malkajgiri','Secunderabad','Hyderabad','Chevella','Mahbubnagar','Nagarkurnool','Nalgonda','Bhongir','Warangal','Mahabubabad','Khammam'];\n\n        var FIELDS = [\n            {key:'name', en:'Name', te:'\u0c2a\u0c47\u0c30\u0c41', type:'text', required:true},\n            {key:'mobile', en:'Mobile No.', te:'\u0c2e\u0c4a\u0c2c\u0c48\u0c32\u0c4d \u0c28\u0c02\u0c2c\u0c30\u0c4d', type:'text', required:true},\n            {key:'aadhaar', en:'Aadhar No.', te:'\u0c06\u0c27\u0c3e\u0c30\u0c4d \u0c28\u0c02\u0c2c\u0c30\u0c4d', type:'text', required:true},\n            {key:'voter_id', en:'Voter Number', te:'\u0c13\u0c1f\u0c30\u0c41 \u0c28\u0c02\u0c2c\u0c30\u0c4d', type:'text'},\n            {key:'party_membership_no', en:'Party Membership Number', te:'\u0c2a\u0c3e\u0c30\u0c4d\u0c1f\u0c40 \u0c38\u0c2d\u0c4d\u0c2f\u0c24\u0c4d\u0c35 \u0c38\u0c02\u0c16\u0c4d\u0c2f', type:'text'},\n            {key:'assembly_constituency', en:'Assembly Constituency', te:'\u0c05\u0c38\u0c46\u0c02\u0c2c\u0c4d\u0c32\u0c40 \u0c28\u0c3f\u0c2f\u0c4b\u0c1c\u0c15\u0c35\u0c30\u0c4d\u0c17\u0c02', type:'acpicker', list: TELANGANA_AC},\n            {key:'parliament_constituency', en:'Parliament Constituency', te:'\u0c2a\u0c3e\u0c30\u0c4d\u0c32\u0c2e\u0c46\u0c02\u0c1f\u0c4d \u0c28\u0c3f\u0c2f\u0c4b\u0c1c\u0c15\u0c35\u0c30\u0c4d\u0c17\u0c02', type:'acpicker', list: TELANGANA_PC},\n            {key:'father_name', en:'Father Name', te:'\u0c24\u0c02\u0c21\u0c4d\u0c30\u0c3f \u0c2a\u0c47\u0c30\u0c41', type:'text'},\n            {key:'spouse_name', en:'Spouse Name', te:'\u0c1c\u0c40\u0c35\u0c3f\u0c24 \u0c2d\u0c3e\u0c17\u0c38\u0c4d\u0c35\u0c3e\u0c2e\u0c3f \u0c2a\u0c47\u0c30\u0c41', type:'text'},\n            {key:'qualification', en:'Qualifications', te:'\u0c35\u0c3f\u0c26\u0c4d\u0c2f\u0c3e\u0c30\u0c4d\u0c39\u0c24\u0c32\u0c41', type:'select', options:['Under Graduation','Graduate','Post Graduate','Others']}\n        ];\n\n        var state = { view: 'enroll', adminPin: null, member: null, verifyMethod: null, verifyValue: null, editingId: null, filter: 'all', search: '', rows: [], publicRows: null, publicSearch: '', publicAC: '', publicPC: '', showACChart: false };\n\n        function esc(s) { var d = document.createElement('div'); d.innerText = (s === null || s === undefined) ? '' : s; return d.innerHTML; }\n\n        function post(action, data) {\n            var fd = new FormData();\n            fd.append('action', action);\n            for (var k in data) { if (data[k] !== undefined && data[k] !== null) fd.append(k, data[k]); }\n            return fetch(HANDLER, { method: 'POST', body: fd }).then(function(r){ return r.json(); });\n        }\n\n        function fieldHtml(f, val, uid) {\n            val = val || '';\n            uid = uid || 'x';\n            var label = '<label>' + esc(f.en) + ' <span class=\"te\">\/ ' + esc(f.te) + '<\/span><\/label>';\n            var input;\n            if (f.type === 'select') {\n                input = '<select data-key=\"' + f.key + '\"><option value=\"\">--Select--<\/option>' +\n                    f.options.map(function(o) { return '<option value=\"' + esc(o) + '\" ' + (o === val ? 'selected' : '') + '>' + esc(o) + '<\/option>'; }).join('') +\n                    '<\/select>';\n            } else if (f.type === 'acpicker') {\n                var pid = 'acpc-' + uid + '-' + f.key;\n                input = '<div class=\"bjpmd-acpc-wrap\" data-pid=\"' + pid + '\">' +\n                    '<input type=\"text\" class=\"bjpmd-acpc-input\" id=\"' + pid + '-input\" autocomplete=\"off\" placeholder=\"Type 2-3 letters... \/ \u0c1f\u0c48\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f\" value=\"' + esc(val) + '\">' +\n                    '<input type=\"hidden\" data-key=\"' + f.key + '\" id=\"' + pid + '-hidden\" value=\"' + esc(val) + '\">' +\n                    '<div class=\"bjpmd-acpc-suggestions\" id=\"' + pid + '-sugg\"><\/div>' +\n                    '<\/div>';\n            } else {\n                input = '<input type=\"text\" data-key=\"' + f.key + '\" value=\"' + esc(val) + '\">';\n            }\n            return '<div class=\"bjpmd-field ' + (f.full ? 'full' : '') + '\">' + label + input + '<\/div>';\n        }\n\n        function setupACPickers(container) {\n            container.querySelectorAll('.bjpmd-acpc-wrap').forEach(function(wrap) {\n                var pid = wrap.getAttribute('data-pid');\n                var input = document.getElementById(pid + '-input');\n                var hidden = document.getElementById(pid + '-hidden');\n                var sugg = document.getElementById(pid + '-sugg');\n                if (!input || !hidden || !sugg) return;\n\n                var fieldKey = hidden.getAttribute('data-key');\n                var fieldDef = FIELDS.filter(function(f) { return f.key === fieldKey; })[0];\n                var list = fieldDef ? fieldDef.list : [];\n\n                function closeSugg() { sugg.innerHTML = ''; sugg.classList.remove('open'); }\n\n                input.addEventListener('input', function() {\n                    hidden.value = '';\n                    var q = input.value.trim().toLowerCase();\n                    if (q.length < 2) { closeSugg(); return; }\n                    var matches = list.filter(function(name) { return name.toLowerCase().indexOf(q) !== -1; }).slice(0, 8);\n                    if (!matches.length) { sugg.innerHTML = '<div class=\"bjpmd-acpc-empty\">No match found<\/div>'; sugg.classList.add('open'); return; }\n                    sugg.innerHTML = matches.map(function(name) {\n                        return '<div class=\"bjpmd-acpc-row\"><span>' + esc(name) + '<\/span><button type=\"button\" class=\"bjpmd-btn small\" data-pick=\"' + esc(name) + '\">Select<\/button><\/div>';\n                    }).join('');\n                    sugg.classList.add('open');\n                    sugg.querySelectorAll('[data-pick]').forEach(function(btn) {\n                        btn.addEventListener('click', function() {\n                            var name = btn.getAttribute('data-pick');\n                            input.value = name;\n                            hidden.value = name;\n                            closeSugg();\n                        });\n                    });\n                });\n                input.addEventListener('blur', function() {\n                    setTimeout(function() {\n                        if (list.indexOf(input.value.trim()) === -1) { input.value = hidden.value || ''; }\n                        closeSugg();\n                    }, 200);\n                });\n            });\n        }\n\n        function collectForm(container) {\n            var data = {};\n            container.querySelectorAll('[data-key]').forEach(function(el) { data[el.getAttribute('data-key')] = el.value; });\n            return data;\n        }\n\n        \/* ---------------- Photo widget ---------------- *\/\n        function photoFieldHtml(val, uid) {\n            val = val || '';\n            return '<div class=\"bjpmd-field full\">' +\n                '<label>Upload Photo <span class=\"te\">\/ \u0c2b\u0c4b\u0c1f\u0c4b \u0c05\u0c2a\u0c4d\u200c\u0c32\u0c4b\u0c21\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f (\u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f)<\/span><\/label>' +\n                '<div class=\"bjpmd-photo-row\" data-uid=\"' + uid + '\">' +\n                '  <img decoding=\"async\" class=\"bjpmd-photo-preview\" id=\"mdpreview-' + uid + '\" src=\"' + val + '\" style=\"' + (val ? '' : 'display:none;') + '\">' +\n                '  <div class=\"bjpmd-photo-btns\">' +\n                '    <input type=\"hidden\" data-key=\"photo\" id=\"mdphotoval-' + uid + '\" value=\\'' + val.replace(\/'\/g, '&#39;') + '\\'>' +\n                '    <input type=\"file\" accept=\"image\/jpeg\" id=\"mdfilegallery-' + uid + '\" style=\"display:none;\">' +\n                '    <input type=\"file\" accept=\"image\/jpeg\" capture=\"environment\" id=\"mdfilerear-' + uid + '\" style=\"display:none;\">' +\n                '    <input type=\"file\" accept=\"image\/jpeg\" capture=\"user\" id=\"mdfilefront-' + uid + '\" style=\"display:none;\">' +\n                '    <button type=\"button\" class=\"bjpmd-btn secondary\" data-trigger=\"mdfilegallery-' + uid + '\">Upload JPG\/JPEG<\/button>' +\n                '    <button type=\"button\" class=\"bjpmd-btn secondary\" data-trigger=\"mdfilerear-' + uid + '\">Camera (Rear)<\/button>' +\n                '    <button type=\"button\" class=\"bjpmd-btn secondary\" data-trigger=\"mdfilefront-' + uid + '\">Camera (Front)<\/button>' +\n                '    <div class=\"bjpmd-photo-hint\">JPG \/ JPEG only. Auto-resized &amp; compressed.<\/div>' +\n                '  <\/div>' +\n                '<\/div>' +\n                '<\/div>';\n        }\n\n        function setupPhotoWidgets(container, uid) {\n            ['mdfilegallery-' + uid, 'mdfilerear-' + uid, 'mdfilefront-' + uid].forEach(function(id) {\n                var input = container.querySelector('#' + id);\n                if (!input) return;\n                input.addEventListener('change', function(e) { handlePhotoFile(e.target.files[0], uid); });\n            });\n            container.querySelectorAll('[data-trigger]').forEach(function(btn) {\n                btn.addEventListener('click', function() {\n                    var el = container.querySelector('#' + btn.getAttribute('data-trigger'));\n                    if (el) el.click();\n                });\n            });\n        }\n\n        function handlePhotoFile(file, uid) {\n            if (!file) return;\n            if (['image\/jpeg','image\/jpg'].indexOf(file.type) === -1) {\n                alert('Please select a JPG \/ JPEG image only. \/ \u0c26\u0c2f\u0c1a\u0c47\u0c38\u0c3f JPG\/JPEG \u0c1a\u0c3f\u0c24\u0c4d\u0c30\u0c02 \u0c2e\u0c3e\u0c24\u0c4d\u0c30\u0c2e\u0c47 \u0c0e\u0c02\u0c1a\u0c41\u0c15\u0c4b\u0c02\u0c21\u0c3f');\n                return;\n            }\n            if (file.size > 8 * 1024 * 1024) { alert('Image too large. Please choose a photo under 8MB.'); return; }\n            var reader = new FileReader();\n            reader.onload = function(ev) {\n                var img = new Image();\n                img.onload = function() {\n                    var maxDim = 900;\n                    var w = img.width, h = img.height;\n                    if (w > h) { if (w > maxDim) { h = Math.round(h * maxDim \/ w); w = maxDim; } }\n                    else { if (h > maxDim) { w = Math.round(w * maxDim \/ h); h = maxDim; } }\n                    var canvas = document.createElement('canvas');\n                    canvas.width = w; canvas.height = h;\n                    var ctx = canvas.getContext('2d');\n                    ctx.drawImage(img, 0, 0, w, h);\n                    var dataUrl = canvas.toDataURL('image\/jpeg', 0.72);\n                    var preview = document.getElementById('mdpreview-' + uid);\n                    var hiddenInput = document.getElementById('mdphotoval-' + uid);\n                    if (preview) { preview.src = dataUrl; preview.style.display = 'block'; }\n                    if (hiddenInput) { hiddenInput.value = dataUrl; }\n                };\n                img.src = ev.target.result;\n            };\n            reader.readAsDataURL(file);\n        }\n\n        \/* ---------------- ID Card canvas ---------------- *\/\n        function buildCardCanvas(member) {\n            return new Promise(function(resolve) {\n                var canvas = document.createElement('canvas');\n                canvas.width = 640; canvas.height = 460;\n                var ctx = canvas.getContext('2d');\n\n                function drawBase() {\n                    ctx.fillStyle = '#FFFFFF'; ctx.fillRect(0, 0, 640, 460);\n                    ctx.fillStyle = '#FF9933'; ctx.fillRect(0, 0, 640, 64);\n                    ctx.fillStyle = '#138808'; ctx.fillRect(0, 434, 640, 26);\n                    ctx.strokeStyle = '#FF9933'; ctx.lineWidth = 4; ctx.strokeRect(2, 2, 636, 456);\n                    ctx.fillStyle = '#7A1F0A';\n                    ctx.font = 'bold 19px Arial';\n                    ctx.textAlign = 'center';\n                    ctx.fillText('TELANGANA BJP ENDOWMENT [DHARMIKA] CELL', 320, 26);\n                    ctx.font = 'bold 13px Arial';\n                    ctx.fillText('FREE MEMBERSHIP DRIVE', 320, 46);\n                    ctx.strokeStyle = '#F0D9B5'; ctx.lineWidth = 2;\n                    ctx.strokeRect(30, 84, 130, 160);\n                    ctx.strokeStyle = '#F0D9B5'; ctx.lineWidth = 1;\n                    ctx.beginPath(); ctx.moveTo(20, 396); ctx.lineTo(620, 396); ctx.stroke();\n                }\n\n                function drawText() {\n                    ctx.textAlign = 'left';\n                    ctx.fillStyle = '#222';\n                    ctx.font = 'bold 21px Arial';\n                    ctx.fillText(member.name || '', 180, 109);\n                    ctx.font = '13.5px Arial';\n                    var lines = [\n                        'Mobile: ' + (member.mobile || ''),\n                        'Aadhaar: ' + (member.aadhaar || ''),\n                        'Voter ID: ' + (member.voter_id || ''),\n                        'Assembly Constituency: ' + (member.assembly_constituency || ''),\n                        'Parliament Constituency: ' + (member.parliament_constituency || ''),\n                        'Party Membership No: ' + (member.party_membership_no || ''),\n                        'Father Name: ' + (member.father_name || ''),\n                        'Qualification: ' + (member.qualification || '')\n                    ];\n                    var y = 138;\n                    lines.forEach(function(line) { ctx.fillText(line, 180, y); y += 22; });\n\n                    \/\/ Officer footer row\n                    ctx.textAlign = 'left';\n                    ctx.fillStyle = '#222';\n                    ctx.font = 'bold 15px Arial';\n                    ctx.fillText('Annavajjala Surya Prakash', 26, 414);\n                    ctx.font = '12.5px Arial';\n                    ctx.fillStyle = '#555';\n                    ctx.fillText('Convenor', 26, 432);\n\n                    ctx.font = 'bold 15px Arial';\n                    ctx.fillStyle = '#222';\n                    ctx.fillText('DESAI', 400, 414);\n                    ctx.font = '12.5px Arial';\n                    ctx.fillStyle = '#555';\n                    ctx.fillText('Co-Convenor', 400, 432);\n\n                    ctx.textAlign = 'right';\n                    ctx.font = 'bold 12px Arial';\n                    ctx.fillStyle = '#555';\n                    ctx.fillText('ID: ' + String(member.id || '').padStart(6, '0'), 614, 432);\n\n                    if (member.status !== 'approved') {\n                        ctx.save();\n                        ctx.translate(320, 250);\n                        ctx.rotate(-Math.PI \/ 12);\n                        ctx.font = 'bold 36px Arial';\n                        ctx.fillStyle = 'rgba(180,35,26,0.28)';\n                        ctx.textAlign = 'center';\n                        ctx.fillText('PENDING APPROVAL', 0, 0);\n                        ctx.restore();\n                    }\n                    resolve(canvas);\n                }\n\n                drawBase();\n                if (member.photo) {\n                    var img = new Image();\n                    img.onload = function() { ctx.drawImage(img, 30, 84, 130, 160); drawText(); };\n                    img.onerror = drawText;\n                    img.src = member.photo;\n                } else {\n                    drawText();\n                }\n            });\n        }\n\n        function downloadCard(member) {\n            buildCardCanvas(member).then(function(canvas) {\n                var a = document.createElement('a');\n                a.href = canvas.toDataURL('image\/png');\n                a.download = 'ID_Card_' + (member.name || 'member').replace(\/\\s+\/g, '_') + '.png';\n                document.body.appendChild(a);\n                a.click();\n                document.body.removeChild(a);\n            });\n        }\n\n        \/* ---------------- Layout \/ router ---------------- *\/\n        function render() {\n            var html = '';\n            html += '<div class=\"bjpmd-topbar\">';\n            html += '  <button id=\"bjpmd-nav-admin\" class=\"' + (state.view === 'adminLogin' || state.view === 'adminPanel' ? 'active' : '') + '\">Admin Login<\/button>';\n            html += '  <div class=\"bjpmd-brand\"><div class=\"l1\">FREE MEMBERSHIP DRIVE<\/div><div class=\"l2\">TELANGANA STATEWIDE &ndash; ENDOWMENT DHARMIK CELL<\/div>' +\n                '<div style=\"margin-top:6px;\"><button id=\"bjpmd-nav-approved\" class=\"' + (state.view === 'approvedList' ? 'active' : '') + '\">Approved List<\/button><\/div><\/div>';\n            html += '  <button id=\"bjpmd-nav-member\" class=\"' + (['memberLogin','memberOptions','memberShow','memberEdit'].indexOf(state.view) !== -1 ? 'active' : '') + '\">Member Login<\/button>';\n            html += '<\/div>';\n            html += '<div class=\"bjpmd-body\" id=\"bjpmd-body\"><\/div>';\n            root.innerHTML = html;\n\n            document.getElementById('bjpmd-nav-admin').addEventListener('click', function() {\n                goto(state.adminPin ? 'adminPanel' : 'adminLogin');\n            });\n            document.getElementById('bjpmd-nav-member').addEventListener('click', function() { goto('memberLogin'); });\n            document.getElementById('bjpmd-nav-approved').addEventListener('click', function() { goto('approvedList'); });\n\n            renderBody();\n        }\n\n        function goto(view) { state.view = view; render(); }\n\n        function renderBody() {\n            var body = document.getElementById('bjpmd-body');\n            if (state.view === 'enroll') return renderEnroll(body);\n            if (state.view === 'memberLogin') return renderMemberLogin(body);\n            if (state.view === 'memberOptions') return renderMemberOptions(body);\n            if (state.view === 'memberShow') return renderMemberShow(body);\n            if (state.view === 'memberEdit') return renderMemberEdit(body);\n            if (state.view === 'adminLogin') return renderAdminLogin(body);\n            if (state.view === 'adminPanel') return renderAdminPanel(body);\n            if (state.view === 'approvedList') return renderApprovedList(body);\n        }\n\n        function closeModal() {\n            var ov = document.getElementById('bjpmd-modal-overlay');\n            if (ov) ov.remove();\n        }\n\n        \/* ---------------- ENROLL ---------------- *\/\n        function renderEnroll(body) {\n            var grid = FIELDS.map(function(f) { return fieldHtml(f, '', 'enroll'); }).join('') + photoFieldHtml('', 'enroll');\n            body.innerHTML =\n                '<h3 class=\"bjpmd-section-title\">Online Enrollment Form \/ \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c2b\u0c3e\u0c30\u0c02<\/h3>' +\n                '<div id=\"bjpmd-enroll-msg\"><\/div>' +\n                '<div class=\"bjpmd-form-grid\" id=\"bjpmd-enroll-form\">' + grid + '<\/div>' +\n                '<div class=\"bjpmd-form-actions\"><button class=\"bjpmd-btn\" id=\"bjpmd-enroll-submit\">Submit \/ \u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f<\/button><\/div>';\n\n            setupPhotoWidgets(document.getElementById('bjpmd-enroll-form'), 'enroll');\n            setupACPickers(document.getElementById('bjpmd-enroll-form'));\n\n            document.getElementById('bjpmd-enroll-submit').addEventListener('click', function() {\n                var data = collectForm(document.getElementById('bjpmd-enroll-form'));\n                var msg = document.getElementById('bjpmd-enroll-msg');\n                msg.innerHTML = '';\n                if (!data.name || !data.mobile || !data.aadhaar) {\n                    msg.innerHTML = '<div class=\"bjpmd-msg err\">Name, Mobile and Aadhaar are required. \/ \u0c2a\u0c47\u0c30\u0c41, \u0c2e\u0c4a\u0c2c\u0c48\u0c32\u0c4d, \u0c06\u0c27\u0c3e\u0c30\u0c4d \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f<\/div>';\n                    return;\n                }\n                if (!data.photo) {\n                    msg.innerHTML = '<div class=\"bjpmd-msg err\">Photo is required. \/ \u0c2b\u0c4b\u0c1f\u0c4b \u0c24\u0c2a\u0c4d\u0c2a\u0c28\u0c3f\u0c38\u0c30\u0c3f<\/div>';\n                    return;\n                }\n                showPreviewModal(data);\n            });\n        }\n\n        function showPreviewModal(data) {\n            var overlay = document.createElement('div');\n            overlay.className = 'bjpmd-modal-overlay';\n            overlay.id = 'bjpmd-modal-overlay';\n            var rowsHtml = FIELDS.map(function(f) {\n                return '<tr><td>' + esc(f.en) + '<\/td><td>' + esc(data[f.key] || '-') + '<\/td><\/tr>';\n            }).join('');\n            overlay.innerHTML =\n                '<div class=\"bjpmd-modal\">' +\n                '  <h3>Confirm Your Details \/ \u0c2e\u0c40 \u0c35\u0c3f\u0c35\u0c30\u0c3e\u0c32\u0c28\u0c41 \u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c3e\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f<\/h3>' +\n                '  <img decoding=\"async\" class=\"bjpmd-preview-photo\" src=\"' + data.photo + '\">' +\n                '  <table class=\"bjpmd-preview-table\">' + rowsHtml + '<\/table>' +\n                '  <div id=\"bjpmd-modal-msg\"><\/div>' +\n                '  <div class=\"bjpmd-form-actions\">' +\n                '    <button class=\"bjpmd-btn\" id=\"bjpmd-modal-confirm\">Confirm &amp; Save<\/button>' +\n                '    <button class=\"bjpmd-btn secondary\" id=\"bjpmd-modal-back\">Back to Edit<\/button>' +\n                '  <\/div>' +\n                '<\/div>';\n            document.body.appendChild(overlay);\n\n            document.getElementById('bjpmd-modal-back').addEventListener('click', closeModal);\n            document.getElementById('bjpmd-modal-confirm').addEventListener('click', function() {\n                var btn = document.getElementById('bjpmd-modal-confirm');\n                btn.disabled = true;\n                btn.innerText = 'Saving...';\n                post('enroll_submit', data).then(function(res) {\n                    if (res.success) {\n                        showSavedModal(res.member);\n                    } else {\n                        document.getElementById('bjpmd-modal-msg').innerHTML = '<div class=\"bjpmd-msg err\">' + esc(res.message) + '<\/div>';\n                        btn.disabled = false;\n                        btn.innerText = 'Confirm & Save';\n                    }\n                });\n            });\n        }\n\n        function showSavedModal(member) {\n            var overlay = document.getElementById('bjpmd-modal-overlay');\n            var modal = overlay.querySelector('.bjpmd-modal');\n            modal.innerHTML =\n                '<h3>Enrollment Saved! \/ \u0c28\u0c2e\u0c4b\u0c26\u0c41 \u0c2d\u0c26\u0c4d\u0c30\u0c2a\u0c30\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f!<\/h3>' +\n                '<img decoding=\"async\" class=\"bjpmd-preview-photo\" src=\"' + member.photo + '\">' +\n                '<div class=\"bjpmd-msg ok\" style=\"text-align:center;\">Your application is submitted and pending approval. \/ \u0c2e\u0c40 \u0c26\u0c30\u0c16\u0c3e\u0c38\u0c4d\u0c24\u0c41 \u0c38\u0c2e\u0c30\u0c4d\u0c2a\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f, \u0c06\u0c2e\u0c4b\u0c26\u0c02 \u0c15\u0c4b\u0c38\u0c02 \u0c35\u0c47\u0c1a\u0c3f \u0c09\u0c02\u0c26\u0c3f<\/div>' +\n                '<div class=\"bjpmd-form-actions\">' +\n                '  <button class=\"bjpmd-btn secondary\" id=\"bjpmd-modal-edit\">Edit<\/button>' +\n                '  <button class=\"bjpmd-btn\" id=\"bjpmd-modal-close\">Close<\/button>' +\n                '<\/div>';\n            document.getElementById('bjpmd-modal-close').addEventListener('click', function() { closeModal(); goto('enroll'); });\n            document.getElementById('bjpmd-modal-edit').addEventListener('click', function() {\n                closeModal();\n                state.member = member;\n                state.verifyMethod = 'aadhaar';\n                state.verifyValue = member.aadhaar;\n                goto('memberEdit');\n            });\n        }\n\n        \/* ---------------- MEMBER LOGIN ---------------- *\/\n        function renderMemberLogin(body) {\n            body.innerHTML =\n                '<div class=\"bjpmd-login-box\">' +\n                '  <h3>Member Login \/ \u0c38\u0c2d\u0c4d\u0c2f\u0c41\u0c28\u0c3f \u0c32\u0c3e\u0c17\u0c3f\u0c28\u0c4d<\/h3>' +\n                '  <div class=\"bjpmd-tabbar\">' +\n                '    <button id=\"bjpmd-tab-aadhaar\" class=\"active\">Aadhar No.<\/button>' +\n                '    <button id=\"bjpmd-tab-mobile\">Mobile No.<\/button>' +\n                '    <button id=\"bjpmd-tab-voter\">Voter ID No.<\/button>' +\n                '  <\/div>' +\n                '  <div id=\"bjpmd-login-msg\"><\/div>' +\n                '  <div id=\"bjpmd-login-aadhaar-fields\">' +\n                '    <div class=\"bjpmd-field\"><label>Aadhar Number<\/label>' +\n                '      <div class=\"bjpmd-otp-row\"><input maxlength=\"4\" id=\"bjpmd-a1\" placeholder=\"xxxx\"><input maxlength=\"4\" id=\"bjpmd-a2\" placeholder=\"xxxx\"><input maxlength=\"4\" id=\"bjpmd-a3\" placeholder=\"xxxx\"><\/div><\/div>' +\n                '  <\/div>' +\n                '  <div id=\"bjpmd-login-mobile-fields\" class=\"bjpmd-hidden\">' +\n                '    <div class=\"bjpmd-field\"><label>Mobile Number<\/label>' +\n                '      <div class=\"bjpmd-otp-row\"><input maxlength=\"5\" id=\"bjpmd-m1\" placeholder=\"xxxxx\"><input maxlength=\"5\" id=\"bjpmd-m2\" placeholder=\"xxxxx\"><\/div><\/div>' +\n                '  <\/div>' +\n                '  <div id=\"bjpmd-login-voter-fields\" class=\"bjpmd-hidden\">' +\n                '    <div class=\"bjpmd-field\"><label>Voter ID Number<\/label><input type=\"text\" id=\"bjpmd-v1\"><\/div>' +\n                '  <\/div>' +\n                '  <div class=\"bjpmd-form-actions\"><button class=\"bjpmd-btn\" id=\"bjpmd-login-go\">Login \/ \u0c32\u0c3e\u0c17\u0c3f\u0c28\u0c4d<\/button><\/div>' +\n                '<\/div>';\n\n            var mode = 'aadhaar';\n            function setupJump(ids, len) {\n                ids.forEach(function(id, idx) {\n                    var el = document.getElementById(id);\n                    el.addEventListener('input', function() {\n                        el.value = el.value.replace(\/\\D\/g, '');\n                        if (el.value.length >= len && ids[idx + 1]) document.getElementById(ids[idx + 1]).focus();\n                    });\n                });\n            }\n            setupJump(['bjpmd-a1', 'bjpmd-a2', 'bjpmd-a3'], 4);\n            setupJump(['bjpmd-m1', 'bjpmd-m2'], 5);\n\n            function switchTab(m) {\n                mode = m;\n                ['aadhaar', 'mobile', 'voter'].forEach(function(t) {\n                    document.getElementById('bjpmd-tab-' + t).classList.toggle('active', t === m);\n                    document.getElementById('bjpmd-login-' + t + '-fields').classList.toggle('bjpmd-hidden', t !== m);\n                });\n            }\n            document.getElementById('bjpmd-tab-aadhaar').addEventListener('click', function() { switchTab('aadhaar'); });\n            document.getElementById('bjpmd-tab-mobile').addEventListener('click', function() { switchTab('mobile'); });\n            document.getElementById('bjpmd-tab-voter').addEventListener('click', function() { switchTab('voter'); });\n\n            document.getElementById('bjpmd-login-go').addEventListener('click', function() {\n                var msg = document.getElementById('bjpmd-login-msg');\n                var value = '';\n                if (mode === 'aadhaar') value = ['bjpmd-a1','bjpmd-a2','bjpmd-a3'].map(function(id){ return document.getElementById(id).value; }).join('');\n                else if (mode === 'mobile') value = ['bjpmd-m1','bjpmd-m2'].map(function(id){ return document.getElementById(id).value; }).join('');\n                else value = document.getElementById('bjpmd-v1').value.trim();\n\n                if (!value) { msg.innerHTML = '<div class=\"bjpmd-msg err\">Please enter a value.<\/div>'; return; }\n\n                post('member_login', { method: mode, value: value }).then(function(res) {\n                    if (res.success) {\n                        state.member = res.member;\n                        state.verifyMethod = mode;\n                        state.verifyValue = value;\n                        goto('memberOptions');\n                    } else {\n                        msg.innerHTML = '<div class=\"bjpmd-msg err\">' + esc(res.message) + '<\/div>';\n                    }\n                });\n            });\n        }\n\n        \/* ---------------- MEMBER OPTIONS ---------------- *\/\n        function renderMemberOptions(body) {\n            if (!state.member) { goto('memberLogin'); return; }\n            body.innerHTML =\n                '<h3 class=\"bjpmd-section-title\">Welcome, ' + esc(state.member.name) + '<\/h3>' +\n                '<div id=\"bjpmd-options-msg\"><\/div>' +\n                '<div class=\"bjpmd-options-grid\">' +\n                '  <div class=\"bjpmd-option-card\" id=\"bjpmd-opt-show\"><div class=\"ic\">&#128065;<\/div><div class=\"lbl\">Show<\/div><\/div>' +\n                '  <div class=\"bjpmd-option-card\" id=\"bjpmd-opt-edit\"><div class=\"ic\">&#9998;<\/div><div class=\"lbl\">Edit<\/div><\/div>' +\n                '  <div class=\"bjpmd-option-card\" id=\"bjpmd-opt-download\"><div class=\"ic\">&#11015;<\/div><div class=\"lbl\">Download Card<\/div><\/div>' +\n                '<\/div>' +\n                '<div class=\"bjpmd-form-actions\"><button class=\"bjpmd-btn secondary\" id=\"bjpmd-opt-logout\">Logout<\/button><\/div>';\n\n            document.getElementById('bjpmd-opt-show').addEventListener('click', function() { goto('memberShow'); });\n            document.getElementById('bjpmd-opt-edit').addEventListener('click', function() { goto('memberEdit'); });\n            document.getElementById('bjpmd-opt-download').addEventListener('click', function() {\n                downloadCard(state.member);\n                document.getElementById('bjpmd-options-msg').innerHTML = '<div class=\"bjpmd-msg ok\">Your ID card image is downloading...<\/div>';\n            });\n            document.getElementById('bjpmd-opt-logout').addEventListener('click', function() { state.member = null; goto('enroll'); });\n        }\n\n        \/* ---------------- MEMBER SHOW ---------------- *\/\n        function renderMemberShow(body) {\n            if (!state.member) { goto('memberLogin'); return; }\n            body.innerHTML = '<h3 class=\"bjpmd-section-title\">My ID Card \/ \u0c28\u0c3e \u0c10\u0c21\u0c3f \u0c15\u0c3e\u0c30\u0c4d\u0c21\u0c41<\/h3>' +\n                '<div style=\"max-width:480px;margin:0 auto;\"><canvas id=\"bjpmd-show-canvas\" style=\"width:100%;height:auto;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,0.12);\"><\/canvas><\/div>' +\n                '<div class=\"bjpmd-form-actions\"><button class=\"bjpmd-btn secondary\" id=\"bjpmd-show-back\">Back<\/button><\/div>';\n            buildCardCanvas(state.member).then(function(builtCanvas) {\n                var target = document.getElementById('bjpmd-show-canvas');\n                if (!target) return;\n                target.width = builtCanvas.width; target.height = builtCanvas.height;\n                target.getContext('2d').drawImage(builtCanvas, 0, 0);\n            });\n            document.getElementById('bjpmd-show-back').addEventListener('click', function() { goto('memberOptions'); });\n        }\n\n        \/* ---------------- MEMBER EDIT ---------------- *\/\n        function renderMemberEdit(body) {\n            if (!state.member) { goto('memberLogin'); return; }\n            var m = state.member;\n            var grid = FIELDS.map(function(f) { return fieldHtml(f, m[f.key], 'medit'); }).join('') + photoFieldHtml(m.photo || '', 'medit');\n            body.innerHTML =\n                '<h3 class=\"bjpmd-section-title\">Edit My Details \/ \u0c28\u0c3e \u0c35\u0c3f\u0c35\u0c30\u0c3e\u0c32\u0c41 \u0c28\u0c35\u0c40\u0c15\u0c30\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f<\/h3>' +\n                '<div id=\"bjpmd-medit-msg\"><\/div>' +\n                '<div class=\"bjpmd-form-grid\" id=\"bjpmd-medit-form\">' + grid + '<\/div>' +\n                '<div class=\"bjpmd-form-actions\">' +\n                '  <button class=\"bjpmd-btn\" id=\"bjpmd-medit-save\">Save Changes<\/button>' +\n                '  <button class=\"bjpmd-btn secondary\" id=\"bjpmd-medit-back\">Back<\/button>' +\n                '<\/div>';\n\n            setupPhotoWidgets(document.getElementById('bjpmd-medit-form'), 'medit');\n            setupACPickers(document.getElementById('bjpmd-medit-form'));\n            document.getElementById('bjpmd-medit-back').addEventListener('click', function() { goto('memberOptions'); });\n            document.getElementById('bjpmd-medit-save').addEventListener('click', function() {\n                var data = collectForm(document.getElementById('bjpmd-medit-form'));\n                var msgEl = document.getElementById('bjpmd-medit-msg');\n                if (!data.photo) { msgEl.innerHTML = '<div class=\"bjpmd-msg err\">Photo is required.<\/div>'; return; }\n                data.id = m.id;\n                data.verify_method = state.verifyMethod;\n                data.verify_value = state.verifyValue;\n                post('member_update', data).then(function(res) {\n                    msgEl.innerHTML = '<div class=\"bjpmd-msg ' + (res.success ? 'ok' : 'err') + '\">' + esc(res.message) + '<\/div>';\n                    if (res.success) state.member = res.member;\n                });\n            });\n        }\n\n        \/* ---------------- ADMIN LOGIN ---------------- *\/\n        function renderAdminLogin(body) {\n            body.innerHTML =\n                '<div class=\"bjpmd-login-box\">' +\n                '  <h3>Admin Login<\/h3>' +\n                '  <div id=\"bjpmd-admin-login-msg\"><\/div>' +\n                '  <div class=\"bjpmd-field\"><label>PIN<\/label><input type=\"password\" id=\"bjpmd-admin-pin\"><\/div>' +\n                '  <div class=\"bjpmd-form-actions\"><button class=\"bjpmd-btn\" id=\"bjpmd-admin-login-go\">Login<\/button><\/div>' +\n                '<\/div>';\n            document.getElementById('bjpmd-admin-login-go').addEventListener('click', function() {\n                var pin = document.getElementById('bjpmd-admin-pin').value;\n                post('admin_login', { pin: pin }).then(function(res) {\n                    if (res.success) { state.adminPin = pin; goto('adminPanel'); }\n                    else document.getElementById('bjpmd-admin-login-msg').innerHTML = '<div class=\"bjpmd-msg err\">Invalid PIN.<\/div>';\n                });\n            });\n        }\n\n        \/* ---------------- ADMIN PANEL ---------------- *\/\n        function renderAdminPanel(body) {\n            if (!state.adminPin) { goto('adminLogin'); return; }\n            body.innerHTML =\n                '<div class=\"bjpmd-logout-bar\">' +\n                '  <h3 class=\"bjpmd-section-title\" style=\"margin:0;border:none;text-align:left;\">Admin Panel<\/h3>' +\n                '  <button class=\"bjpmd-btn secondary small\" id=\"bjpmd-admin-logout\">Logout<\/button>' +\n                '<\/div>' +\n                '<div id=\"bjpmd-admin-content\"><\/div>';\n\n            document.getElementById('bjpmd-admin-logout').addEventListener('click', function() { state.adminPin = null; goto('enroll'); });\n\n            renderAdminManage();\n        }\n\n        function renderAdminManage() {\n            var content = document.getElementById('bjpmd-admin-content');\n            content.innerHTML =\n                '<div class=\"bjpmd-stats\" id=\"bjpmd-admin-stats\"><\/div>' +\n                '<div class=\"bjpmd-filterbar\">' +\n                '  <button data-f=\"all\" class=\"active\">All<\/button>' +\n                '  <button data-f=\"approved\">Approved<\/button>' +\n                '  <button data-f=\"pending\">Pending<\/button>' +\n                '  <button data-f=\"rejected\">Rejected<\/button>' +\n                '  <input type=\"text\" id=\"bjpmd-admin-search\" placeholder=\"Search name \/ mobile \/ aadhaar...\">' +\n                '  <button class=\"bjpmd-btn small\" id=\"bjpmd-download-word\">Download Full List (Word)<\/button>' +\n                '<\/div>' +\n                '<div style=\"margin-bottom:10px;\">' +\n                '  <label style=\"font-size:12px;\"><input type=\"checkbox\" id=\"bjpmd-select-all\"> Select All<\/label> ' +\n                '  <button class=\"bjpmd-btn small\" id=\"bjpmd-bulk-approve\">Bulk Approve<\/button>' +\n                '  <button class=\"bjpmd-btn secondary small\" id=\"bjpmd-bulk-reject\">Bulk Reject<\/button>' +\n                '  <button class=\"bjpmd-btn danger small\" id=\"bjpmd-bulk-delete\">Bulk Delete<\/button>' +\n                '  <span id=\"bjpmd-selected-count\" style=\"font-size:12px;color:#666;\"><\/span>' +\n                '<\/div>' +\n                '<div class=\"bjpmd-table-wrap\"><table class=\"bjpmd-table\"><thead><tr>' +\n                '<th><\/th><th>Photo<\/th><th>Name<\/th><th>Mobile<\/th><th>Aadhaar<\/th><th>AC<\/th><th>PC<\/th><th>Status<\/th><th>Actions<\/th>' +\n                '<\/tr><\/thead><tbody id=\"bjpmd-admin-tbody\"><\/tbody><\/table><\/div>';\n\n            content.querySelectorAll('.bjpmd-filterbar button[data-f]').forEach(function(b) {\n                b.addEventListener('click', function() {\n                    state.filter = b.getAttribute('data-f');\n                    content.querySelectorAll('.bjpmd-filterbar button[data-f]').forEach(function(x){ x.classList.remove('active'); });\n                    b.classList.add('active');\n                    renderAdminTable();\n                });\n            });\n            document.getElementById('bjpmd-admin-search').addEventListener('input', function(e) { state.search = e.target.value.toLowerCase(); renderAdminTable(); });\n            document.getElementById('bjpmd-select-all').addEventListener('change', function(e) {\n                document.querySelectorAll('.bjpmd-row-check').forEach(function(c){ c.checked = e.target.checked; });\n                updateSelectedCount();\n            });\n            document.getElementById('bjpmd-bulk-approve').addEventListener('click', function() { bulkUpdate('approved'); });\n            document.getElementById('bjpmd-bulk-reject').addEventListener('click', function() { bulkUpdate('rejected'); });\n            document.getElementById('bjpmd-bulk-delete').addEventListener('click', function() {\n                var ids = getSelectedIds();\n                if (!ids.length) return;\n                if (!confirm('Delete ' + ids.length + ' record(s)? This cannot be undone.')) return;\n                post('admin_delete', { pin: state.adminPin, ids: ids }).then(loadAdminData);\n            });\n            document.getElementById('bjpmd-download-word').addEventListener('click', function() {\n                var url = HANDLER + '?action=download_word_list&pin=' + encodeURIComponent(state.adminPin) +\n                    (state.filter !== 'all' ? '&status=' + state.filter : '');\n                window.open(url, '_blank');\n            });\n\n            loadAdminData();\n        }\n\n        function loadAdminData() {\n            post('admin_stats', { pin: state.adminPin }).then(function(res) {\n                if (!res.success) return;\n                var el = document.getElementById('bjpmd-admin-stats');\n                if (!el) return;\n                el.innerHTML = statBox(res.total, 'Total') + statBox(res.pending, 'Pending') + statBox(res.approved, 'Approved') + statBox(res.rejected, 'Rejected');\n            });\n            post('admin_list', { pin: state.adminPin }).then(function(res) {\n                if (!res.success) return;\n                state.rows = res.rows;\n                renderAdminTable();\n            });\n        }\n\n        function statBox(num, lbl) { return '<div class=\"bjpmd-stat-box\"><div class=\"num\">' + num + '<\/div><div class=\"lbl\">' + lbl + '<\/div><\/div>'; }\n\n        function getSelectedIds() { return Array.prototype.slice.call(document.querySelectorAll('.bjpmd-row-check:checked')).map(function(c){ return c.value; }); }\n        function updateSelectedCount() {\n            var n = getSelectedIds().length;\n            var el = document.getElementById('bjpmd-selected-count');\n            if (el) el.innerText = n ? (n + ' selected') : '';\n        }\n        function bulkUpdate(status) {\n            var ids = getSelectedIds();\n            if (!ids.length) return;\n            post('admin_update_status', { pin: state.adminPin, status: status, ids: ids }).then(loadAdminData);\n        }\n\n        function renderAdminTable() {\n            var tbody = document.getElementById('bjpmd-admin-tbody');\n            if (!tbody) return;\n            var rows = state.rows.filter(function(r) {\n                if (state.filter !== 'all' && r.status !== state.filter) return false;\n                if (state.search) {\n                    var hay = (r.name + ' ' + r.mobile + ' ' + r.aadhaar).toLowerCase();\n                    if (hay.indexOf(state.search) === -1) return false;\n                }\n                return true;\n            });\n            if (!rows.length) { tbody.innerHTML = '<tr><td colspan=\"9\" class=\"bjpmd-empty\">No records found.<\/td><\/tr>'; return; }\n\n            tbody.innerHTML = rows.map(function(r) {\n                var editRow = state.editingId == r.id ? renderEditRow(r) : '';\n                return '<tr data-id=\"' + r.id + '\">' +\n                    '<td><input type=\"checkbox\" class=\"bjpmd-row-check\" value=\"' + r.id + '\"><\/td>' +\n                    '<td>' + (r.photo ? '<img decoding=\"async\" class=\"bjpmd-admin-thumb\" src=\"' + r.photo + '\">' : '&mdash;') + '<\/td>' +\n                    '<td>' + esc(r.name) + '<\/td>' +\n                    '<td>' + esc(r.mobile) + '<\/td>' +\n                    '<td>' + esc(r.aadhaar) + '<\/td>' +\n                    '<td>' + esc(r.assembly_constituency) + '<\/td>' +\n                    '<td>' + esc(r.parliament_constituency) + '<\/td>' +\n                    '<td><span class=\"bjpmd-badge ' + r.status + '\">' + r.status + '<\/span><\/td>' +\n                    '<td><div class=\"bjpmd-row-actions\">' +\n                    '<button class=\"bjpmd-btn-approve\" data-act=\"approve\" data-id=\"' + r.id + '\">Approve<\/button>' +\n                    '<button class=\"bjpmd-btn-edit\" data-act=\"edit\" data-id=\"' + r.id + '\">Edit<\/button>' +\n                    '<button class=\"bjpmd-btn-delete\" data-act=\"delete\" data-id=\"' + r.id + '\">Delete<\/button>' +\n                    '<\/div><\/td><\/tr>' + editRow;\n            }).join('');\n\n            tbody.querySelectorAll('.bjpmd-row-check').forEach(function(c){ c.addEventListener('change', updateSelectedCount); });\n\n            if (state.editingId) {\n                var inlineForm = document.getElementById('bjpmd-inline-form-' + state.editingId);\n                if (inlineForm) { setupPhotoWidgets(inlineForm, 'inline-' + state.editingId); setupACPickers(inlineForm); }\n            }\n\n            tbody.querySelectorAll('button[data-act]').forEach(function(btn) {\n                btn.addEventListener('click', function() {\n                    var id = btn.getAttribute('data-id');\n                    var act = btn.getAttribute('data-act');\n                    if (act === 'approve') post('admin_update_status', { pin: state.adminPin, status: 'approved', ids: [id] }).then(loadAdminData);\n                    else if (act === 'delete') { if (confirm('Delete this record?')) post('admin_delete', { pin: state.adminPin, ids: [id] }).then(loadAdminData); }\n                    else if (act === 'edit') { state.editingId = (state.editingId == id) ? null : id; renderAdminTable(); }\n                });\n            });\n        }\n\n        function renderEditRow(r) {\n            var grid = FIELDS.map(function(f) { return fieldHtml(f, r[f.key], 'inline-' + r.id); }).join('') + photoFieldHtml(r.photo || '', 'inline-' + r.id);\n            return '<tr class=\"bjpmd-inline-edit\"><td colspan=\"9\">' +\n                '<div class=\"bjpmd-form-grid\" id=\"bjpmd-inline-form-' + r.id + '\">' + grid + '<\/div>' +\n                '<div class=\"bjpmd-form-actions\">' +\n                '<button class=\"bjpmd-btn small\" data-save=\"' + r.id + '\">Save<\/button>' +\n                '<button class=\"bjpmd-btn secondary small\" data-cancel=\"' + r.id + '\">Cancel<\/button>' +\n                '<\/div><\/td><\/tr>';\n        }\n\n        document.addEventListener('click', function(e) {\n            if (e.target.matches && e.target.matches('[data-save]')) {\n                var id = e.target.getAttribute('data-save');\n                var container = document.getElementById('bjpmd-inline-form-' + id);\n                if (!container) return;\n                var data = collectForm(container);\n                data.id = id;\n                data.pin = state.adminPin;\n                post('admin_edit_row', data).then(function() { state.editingId = null; loadAdminData(); });\n            }\n            if (e.target.matches && e.target.matches('[data-cancel]')) { state.editingId = null; renderAdminTable(); }\n        });\n\n        \/* ---------------- PUBLIC APPROVED LIST ---------------- *\/\n        function renderApprovedList(body) {\n            body.innerHTML =\n                '<h3 class=\"bjpmd-section-title\">Approved List \/ \u0c06\u0c2e\u0c4b\u0c26\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c28 \u0c1c\u0c3e\u0c2c\u0c3f\u0c24\u0c3e<\/h3>' +\n                '<div class=\"bjpmd-filterbar\">' +\n                '  <input type=\"text\" id=\"bjpmd-pub-search\" placeholder=\"Type name \/ mobile \/ aadhaar to find instantly...\">' +\n                '<\/div>' +\n                '<div class=\"bjpmd-form-grid\" style=\"margin-bottom:10px;\">' +\n                '  <div class=\"bjpmd-field\"><label>Assembly Constituency <span class=\"te\">\/ \u0c05\u0c38\u0c46\u0c02\u0c2c\u0c4d\u0c32\u0c40 \u0c28\u0c3f\u0c2f\u0c4b\u0c1c\u0c15\u0c35\u0c30\u0c4d\u0c17\u0c02<\/span><\/label>' +\n                '    <div class=\"bjpmd-acpc-wrap\" data-pid=\"pubac\">' +\n                '      <input type=\"text\" class=\"bjpmd-acpc-input\" id=\"pubac-input\" autocomplete=\"off\" placeholder=\"Type 2-3 letters... \/ \u0c1f\u0c48\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f\">' +\n                '      <input type=\"hidden\" id=\"pubac-hidden\" value=\"\">' +\n                '      <div class=\"bjpmd-acpc-suggestions\" id=\"pubac-sugg\"><\/div>' +\n                '    <\/div><\/div>' +\n                '  <div class=\"bjpmd-field\"><label>Parliament Constituency <span class=\"te\">\/ \u0c2a\u0c3e\u0c30\u0c4d\u0c32\u0c2e\u0c46\u0c02\u0c1f\u0c4d \u0c28\u0c3f\u0c2f\u0c4b\u0c1c\u0c15\u0c35\u0c30\u0c4d\u0c17\u0c02<\/span><\/label>' +\n                '    <div class=\"bjpmd-acpc-wrap\" data-pid=\"pubpc\">' +\n                '      <input type=\"text\" class=\"bjpmd-acpc-input\" id=\"pubpc-input\" autocomplete=\"off\" placeholder=\"Type 2-3 letters... \/ \u0c1f\u0c48\u0c2a\u0c4d \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f\">' +\n                '      <input type=\"hidden\" id=\"pubpc-hidden\" value=\"\">' +\n                '      <div class=\"bjpmd-acpc-suggestions\" id=\"pubpc-sugg\"><\/div>' +\n                '    <\/div><\/div>' +\n                '<\/div>' +\n                '<div class=\"bjpmd-form-actions\" style=\"justify-content:flex-start;\">' +\n                '  <button class=\"bjpmd-btn secondary small\" id=\"bjpmd-toggle-ac-chart\">Browse All Assembly Constituencies<\/button>' +\n                '  <button class=\"bjpmd-btn secondary small\" id=\"bjpmd-pub-clear\">Clear Filters<\/button>' +\n                '<\/div>' +\n                '<div id=\"bjpmd-ac-chart\" class=\"bjpmd-hidden\" style=\"margin:14px 0;display:flex;flex-wrap:wrap;gap:6px;max-height:200px;overflow-y:auto;border:1px solid #F0D9B5;border-radius:8px;padding:10px;background:#fff;\"><\/div>' +\n                '<div class=\"bjpmd-card-grid\" id=\"bjpmd-pub-grid\"><div class=\"bjpmd-empty\">Loading...<\/div><\/div>';\n\n            setupPublicPicker('pubac', TELANGANA_AC, function(val) { state.publicAC = val; paintPublicGrid(); });\n            setupPublicPicker('pubpc', TELANGANA_PC, function(val) { state.publicPC = val; paintPublicGrid(); });\n\n            document.getElementById('pubac-input').value = state.publicAC;\n            document.getElementById('pubpc-input').value = state.publicPC;\n\n            document.getElementById('bjpmd-pub-search').addEventListener('input', function(e) { state.publicSearch = e.target.value.toLowerCase(); paintPublicGrid(); });\n            document.getElementById('bjpmd-pub-clear').addEventListener('click', function() {\n                state.publicSearch = ''; state.publicAC = ''; state.publicPC = '';\n                renderApprovedList(body);\n            });\n\n            var chartBox = document.getElementById('bjpmd-ac-chart');\n            chartBox.innerHTML = TELANGANA_AC.map(function(name) {\n                return '<button type=\"button\" class=\"bjpmd-btn secondary small\" data-acchip=\"' + esc(name) + '\" style=\"margin:0;\">' + esc(name) + '<\/button>';\n            }).join('');\n            chartBox.querySelectorAll('[data-acchip]').forEach(function(btn) {\n                btn.addEventListener('click', function() {\n                    state.publicAC = btn.getAttribute('data-acchip');\n                    document.getElementById('pubac-input').value = state.publicAC;\n                    paintPublicGrid();\n                });\n            });\n            document.getElementById('bjpmd-toggle-ac-chart').addEventListener('click', function() {\n                state.showACChart = !state.showACChart;\n                chartBox.classList.toggle('bjpmd-hidden', !state.showACChart);\n            });\n\n            if (state.publicRows) { paintPublicGrid(); }\n            else {\n                post('public_grid', {}).then(function(res) {\n                    if (!res.success) return;\n                    state.publicRows = res.rows;\n                    paintPublicGrid();\n                });\n            }\n        }\n\n        function setupPublicPicker(pid, list, onSelect) {\n            var input = document.getElementById(pid + '-input');\n            var hidden = document.getElementById(pid + '-hidden');\n            var sugg = document.getElementById(pid + '-sugg');\n            function closeSugg() { sugg.innerHTML = ''; sugg.classList.remove('open'); }\n            input.addEventListener('input', function() {\n                hidden.value = '';\n                var q = input.value.trim().toLowerCase();\n                if (q.length < 2) { closeSugg(); onSelect(''); return; }\n                var matches = list.filter(function(name) { return name.toLowerCase().indexOf(q) !== -1; }).slice(0, 8);\n                if (!matches.length) { sugg.innerHTML = '<div class=\"bjpmd-acpc-empty\">No match found<\/div>'; sugg.classList.add('open'); return; }\n                sugg.innerHTML = matches.map(function(name) {\n                    return '<div class=\"bjpmd-acpc-row\"><span>' + esc(name) + '<\/span><button type=\"button\" class=\"bjpmd-btn small\" data-pick=\"' + esc(name) + '\">Select<\/button><\/div>';\n                }).join('');\n                sugg.classList.add('open');\n                sugg.querySelectorAll('[data-pick]').forEach(function(btn) {\n                    btn.addEventListener('click', function() {\n                        var name = btn.getAttribute('data-pick');\n                        input.value = name; hidden.value = name;\n                        closeSugg();\n                        onSelect(name);\n                    });\n                });\n            });\n            input.addEventListener('blur', function() {\n                setTimeout(function() {\n                    if (list.indexOf(input.value.trim()) === -1) { input.value = hidden.value || ''; }\n                    closeSugg();\n                }, 200);\n            });\n        }\n\n        function paintPublicGrid() {\n            var container = document.getElementById('bjpmd-pub-grid');\n            if (!container || !state.publicRows) return;\n            var rows = state.publicRows.filter(function(r) {\n                if (state.publicAC && r.assembly_constituency !== state.publicAC) return false;\n                if (state.publicPC && r.parliament_constituency !== state.publicPC) return false;\n                if (state.publicSearch) {\n                    var hay = (r.name + ' ' + r.mobile + ' ' + r.aadhaar).toLowerCase();\n                    if (hay.indexOf(state.publicSearch) === -1) return false;\n                }\n                return true;\n            });\n            if (!rows.length) { container.innerHTML = '<div class=\"bjpmd-empty\">No approved members found.<\/div>'; return; }\n\n            container.innerHTML = rows.map(function(r) {\n                return '<div class=\"bjpmd-card-tile\" data-tid=\"' + r.id + '\"><canvas><\/canvas><\/div>';\n            }).join('');\n\n            rows.forEach(function(r) {\n                var tile = container.querySelector('[data-tid=\"' + r.id + '\"] canvas');\n                if (tile) buildCardCanvas(r).then(function(built) {\n                    tile.width = built.width; tile.height = built.height;\n                    tile.getContext('2d').drawImage(built, 0, 0);\n                });\n            });\n        }\n\n        render();\n    })();\n    <\/script>\n    <\/div>\n\t\t\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":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-827","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages\/827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=827"}],"version-history":[{"count":4,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages\/827\/revisions"}],"predecessor-version":[{"id":832,"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=\/wp\/v2\/pages\/827\/revisions\/832"}],"wp:attachment":[{"href":"https:\/\/victimsrightsprotectiontrust.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}