var UM_QS=['你的出生城市是?','你的小学名称是?','你最喜欢的一本书是?','你的母亲姓名是?','你的父亲姓名是?'];
function umLoad(k){try{return JSON.parse(localStorage.getItem(k)||'[]')}catch(e){return[]}}
function umSave(k,v){localStorage.setItem(k,JSON.stringify(v))}
function umGetUser(){return JSON.parse(localStorage.getItem('um_cur_user')||'null')}
function umSetUser(u){localStorage.setItem('um_cur_user',JSON.stringify(u))}
(function(){
if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initUM)}else{initUM()}
function initUM(){
var users=umLoad('um_users'),found=false;
for(var i=0;i\uD83E\uDDD4 '+u.phone+''+''+'';
else a.innerHTML='';
}
function umLogout(){umSetUser(null);renderNavUser();umToast('已退出')}
function showUmPage(p){
document.getElementById('umOverlay').classList.add('active');
document.querySelectorAll('.um-page').forEach(function(e){e.style.display='none'});
var el=document.getElementById('umPage'+p.charAt(0).toUpperCase()+p.slice(1));
if(el)el.style.display='block';
if(p==='register')renderRegSecQ();
if(p==='forgot'){document.getElementById('forgotPhone').value='';document.getElementById('forgotArea').style.display='none';document.getElementById('umBtnVerify').style.display='';document.getElementById('umBtnReset').style.display='none'}
if(p==='dashboard'){renderDashStats();renderDashCodes()}
}
function hideUm(){document.getElementById('umOverlay').classList.remove('active')}
function umDoLogin(){
var ph=document.getElementById('umLoginPhone').value.trim(),pw=document.getElementById('umLoginPwd').value;
if(!/^1[3-9]\d{9}$/.test(ph))return umToast('请输入正确的手机号');if(!pw)return umToast('请输入密码');
var us=umLoad('um_users'),ur=null;for(var i=0;i'}c.innerHTML=h}
function umDoRegister(){
var ph=document.getElementById('umRegPhone').value.trim(),pw=document.getElementById('umRegPwd').value,pw2=document.getElementById('umRegPwd2').value;
if(!/^1[3-9]\d{9}$/.test(ph))return umToast('请输入正确的手机号');
var us=umLoad('um_users');for(var i=0;i
');}el.innerHTML=h;}
function showDevModal(cid){var cd=umLoad('m_codes'),co=null;for(var i=0;i
📱
'+d.deviceId+'
IP:'+d.ip+' · '+d.boundAt+'
');}list.innerHTML=h;}document.getElementById('devOverlay').classList.add('active');}
function hideDevModal(){document.getElementById('devOverlay').classList.remove('active')}
function unBindDev(did){if(!confirm('确定解绑该设备?'))return;var ds=umLoad('m_devices'),nd=[];for(var i=0;i