\n\n";
}
function init(){
mount();
applyI18N();
renderCats(); renderList(); renderOrders(); renderBalance(); initHero(); renderHot();
try{ loadPositionsFor(null); }catch(e){}
try{ loadRoundFor('BTC/USDT'); }catch(e){}
}
function start(){
stop(); // 单 timer:先清再起
state.view = state.view || 'trade';
state._timer = setInterval(pollCurrent, 3000);
try{ pollCurrent(); }catch(e){}
}
function stop(){
if(state._timer){ clearInterval(state._timer); state._timer = null; }
}
// 独立语言切换:只改板块语言,不碰主站 CURRENT_LANG
function setContractLang(l){
CONTRACT_LANG = blockFor(l);
try{ localStorage.setItem('contract_lang', CONTRACT_LANG); }catch(e){}
applyI18N();
}
function getLang(){ return CONTRACT_LANG; }
window.ContractSection = {
init: init, start: start, stop: stop,
setContractLang: setContractLang, getLang: getLang,
t: t, ct: t, state: state,
placeBet: placeBet, renderBalance: renderBalance, pollCurrent: pollCurrent,
// 测试/诊断暴露
_funcs: ['blockFor','mainLang','normLang','t','applyI18N','ruleFor','apiToken','apiHeaders','apiSymbol','ensureAuth','authRequired','fetchCurrentRound','fetchPositions','apiOpenPosition','pollCurrent','allCoins','categories','renderCats','setCat','visibleCoins','renderList','toggleFav','backToMarket','openTrade','loadRoundFor','loadPositionsFor','renderDurChips','selectDuration','renderAmtChips','setAmt','tickPrice','updatePrice','initHero','applyHeroText','syncHeroFromRound','heroBet','updateHero','updateEst','genKL','drawKL','showResultModal','row','hideResultModal','placeBet','blockBets','startCountdown','durKeyOf','renderDurTick','settle','renderOrders','renderHot','fmtNum','renderBalance']
};
})();